/* The typefaces and vectors a person makes with the model: plain maker pages, ready for the final Design art direction. */
.tf{max-width:1180px;margin:auto;padding:clamp(22px,4vw,48px) clamp(16px,3vw,32px) 96px;color:var(--text-primary)}
.tf-hero{max-width:820px;margin:0 0 32px}.tf-eyebrow{margin:0 0 12px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.tf-hero h1{margin:0;font-size:clamp(32px,5vw,60px);line-height:1.08;letter-spacing:-.035em;overflow-wrap:anywhere}.tf-hero p:last-child{color:var(--text-secondary);font-size:clamp(16px,2vw,19px);line-height:1.5}

.tf-form{display:grid;gap:10px;max-width:720px;margin:0 0 40px;padding:20px;border:1px solid var(--border);border-radius:18px;background:var(--bg-secondary)}
.tf-form label{display:grid;gap:7px;color:var(--text-secondary);font-size:13px;font-weight:700}
.tf-form label small{font-weight:500;opacity:.8}
.tf-form textarea,.tf-form input,.tf-form select{width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg-primary);color:var(--text-primary);font:inherit;font-size:16px}
.tf-form textarea{min-height:110px;resize:vertical;line-height:1.5}
.tf-form button{justify-self:start;min-height:46px;padding:10px 22px;border:0;border-radius:10px;background:var(--accent);color:var(--bg-primary);font-weight:800;font-size:15px;cursor:pointer}
.tf-form button:hover{opacity:.92}
.tf-cap{margin:2px 0 0;color:var(--text-secondary);font-size:13px}
.tf-signin{padding:20px;border:1px solid var(--border);border-radius:18px;background:var(--bg-secondary);color:var(--text-secondary)}
.tf-signin a{color:var(--accent);font-weight:700}

.tf-owned{margin-top:8px}.tf-owned h2{font-size:20px}.tf-owned ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.tf-owned li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:12px 16px;border:1px solid var(--border);border-radius:12px;background:var(--bg-secondary)}
.tf-owned a{font-weight:700;color:inherit;text-decoration:none;overflow-wrap:anywhere}.tf-owned a:hover{text-decoration:underline}
.tf-owned span{color:var(--text-secondary);font-size:13px}
.tf-n{margin-left:6px;font-size:.65em;font-weight:600;color:var(--text-secondary)}
.tf-owned .tf-shelf,.tf-owned .tf-gallery{grid-template-columns:repeat(auto-fill,minmax(min(160px,100%),1fr));gap:10px}
.tf-shelf li,.tf-gallery li{display:block;padding:0}
.tf-shelf a,.tf-gallery a{display:grid;gap:4px;height:100%;padding:14px;border-radius:12px;box-sizing:border-box}
.tf-shelf a:hover,.tf-gallery a:hover{text-decoration:none;background:color-mix(in srgb,var(--accent) 8%,transparent)}
.tf-sample{display:block;height:64px;width:auto;max-width:100%;margin-bottom:6px;color:var(--text-primary)}
.tf-sample.is-empty{display:flex;align-items:center;height:64px;font-size:14px;color:var(--text-secondary)}
.tf-shelf b{font-size:15px;overflow-wrap:anywhere}
.tf-gallery img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;padding:10px;box-sizing:border-box;border-radius:10px;background:var(--bg-primary)}
.tf-gallery span{font-size:13.5px;color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tf-gallery small{font-size:12px;color:var(--text-secondary);text-transform:capitalize}

.tf-back{display:inline-block;margin-bottom:24px;color:var(--accent)}
.tf-name{font-size:clamp(34px,6vw,76px)!important}
.tf-sample{margin:0 0 14px;font-size:clamp(28px,5vw,64px);line-height:1.2;overflow-wrap:anywhere}
.tf-words{font-size:clamp(18px,2.6vw,30px);color:var(--text-secondary)}
.tf-letters{display:flex;flex-wrap:wrap;gap:6px;margin:26px 0 8px;padding:16px;border:1px solid var(--border);border-radius:14px;background:var(--bg-secondary)}
.tf-letter{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:52px;padding:4px;border:1px solid var(--border);border-radius:8px;font-family:"OpenVibe Made",sans-serif;font-size:26px;line-height:1}
.tf-missing{opacity:.28;font-family:inherit}
.tf-specimen section{margin-top:40px}.tf-specimen h2{font-size:clamp(20px,3vw,28px)}
.tf-download p{color:var(--text-secondary);line-height:1.6}.tf-download a{color:var(--accent);font-weight:700}
.tf-note{max-width:70ch}
.tf-redraw form{display:grid;gap:10px;max-width:640px;margin-top:16px}
.tf-redraw label{display:grid;gap:7px;color:var(--text-secondary);font-size:13px;font-weight:700}
.tf-redraw input,.tf-redraw select{width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg-primary);color:var(--text-primary);font:inherit;font-size:16px}
.tf-redraw button{justify-self:start;min-height:46px;padding:10px 22px;border:0;border-radius:10px;background:var(--accent);color:var(--bg-primary);font-weight:800;font-size:15px;cursor:pointer}
.tf-lastnote{margin-top:12px;color:var(--text-secondary);font-size:13px}

.tf-figure{margin:0 0 8px;padding:28px;border:1px solid var(--border);border-radius:18px;background:var(--bg-secondary);display:grid;place-items:center}
.tf-figure svg{display:block;width:min(100%,420px);height:auto;color:var(--text-primary);fill:currentColor}
.tf-vector .tf-hero h1{font-size:clamp(24px,3.6vw,40px)}

@media(max-width:600px){
  .tf-form{padding:14px}
  .tf-letters{gap:4px;padding:12px}
  .tf-letter{min-width:38px;min-height:44px;font-size:22px}
  .tf-figure{padding:16px}
}
/* The selects keep the browser's own look (data-ov-native): the house's drawn select paints an empty one
   with the accent, and a menu of open fonts should read as a field, not as a button. */
.tf .tf-form select,.tf .tf-redraw select{appearance:none;-webkit-appearance:none;background:var(--bg-primary) no-repeat right 12px center;color:var(--text-primary);border:1px solid var(--border);padding-right:32px;box-shadow:none}
