/* ==========================================================================
   Solar CMA: font self-hosted, fallback metrici e token tipografici.
   Proprietario: tipografia. Caricato dopo theme.css, prima di header/hero.

   Famiglie (entrambe licenza SIL OFL 1.1, testo della licenza in /assets/fonts/):
   - Bricolage Grotesque (variabile wght 200-800 + opsz 12-96): titoli e display.
     L'asse opsz e' automatico (font-optical-sizing:auto): a 120px il disegno e'
     stretto e deciso, a 24px diventa piu' aperto e robusto.
   - Geist (variabile wght 100-900): testo, interfaccia, etichette.
   Solo subset latin (basta per l'italiano), nessun CDN a runtime.
   Peso totale dei file font: 76,9 KB + 29,4 KB = 106 KB.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Font reali
   -------------------------------------------------------------------------- */
@font-face{
  font-family:"Bricolage Grotesque";
  src:url("fonts/bricolage-grotesque-latin-opsz.woff2") format("woff2");
  font-style:normal;font-weight:200 800;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Geist";
  src:url("fonts/geist-latin-wght.woff2") format("woff2");
  font-style:normal;font-weight:100 900;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* --------------------------------------------------------------------------
   2. Fallback metrici (CLS ~0 allo swap)
   Arial locale ritoccato con size-adjust + override verticali, calibrati sul
   rapporto reale di larghezza misurato su testo italiano (canvas, 3 corpi) e
   sulle metriche hhea dei font: Bricolage asc 930 / desc 270, Geist asc 1005 /
   desc 295 (upm 1000). Due facce per famiglia: regular e bold.
   -------------------------------------------------------------------------- */
@font-face{
  font-family:"Bricolage Grotesque Fallback";
  src:local("Arial"),local("ArialMT"),local("Liberation Sans"),local("Arimo"),local("Helvetica");
  font-weight:100 599;
  size-adjust:100%;ascent-override:93%;descent-override:27%;line-gap-override:0%;
}
@font-face{
  font-family:"Bricolage Grotesque Fallback";
  src:local("Arial Bold"),local("Arial-BoldMT"),local("Liberation Sans Bold"),local("Arimo Bold"),local("Helvetica Bold");
  font-weight:600 900;
  size-adjust:90.1%;ascent-override:103.2%;descent-override:30%;line-gap-override:0%;
}
@font-face{
  font-family:"Geist Fallback";
  src:local("Arial"),local("ArialMT"),local("Liberation Sans"),local("Arimo"),local("Helvetica");
  font-weight:100 599;
  size-adjust:102.4%;ascent-override:98.1%;descent-override:28.8%;line-gap-override:0%;
}
@font-face{
  font-family:"Geist Fallback";
  src:local("Arial Bold"),local("Arial-BoldMT"),local("Liberation Sans Bold"),local("Arimo Bold"),local("Helvetica Bold");
  font-weight:600 900;
  size-adjust:99.6%;ascent-override:100.9%;descent-override:29.6%;line-gap-override:0%;
}

/* --------------------------------------------------------------------------
   3. Token tipografici
   -------------------------------------------------------------------------- */
:root{
  --font-display:"Bricolage Grotesque","Bricolage Grotesque Fallback",sans-serif;
  --font-text:"Geist","Geist Fallback",sans-serif;

  /* scala fluida (rem + vw, tetto esplicito) */
  --fs-hero:clamp(3.4rem,2.8rem + 5.63vw,9.5rem);      /* h1 hero: 375px ~ 66px, 1440px ~ 126px, 1920px ~ 152px */
  --fs-display:clamp(2.6rem,1.6rem + 4.2vw,6.6rem);    /* h1 di pagina (talent, 404) */
  --fs-title:clamp(2.1rem,1.2rem + 3.4vw,3.9rem);      /* h2 */
  --fs-sub:clamp(1.45rem,1.15rem + 1.1vw,1.9rem);      /* h3 grandi */
  --fs-lead:clamp(1.0625rem,.98rem + .36vw,1.3125rem); /* paragrafo lead hero */
  --fs-body:clamp(1rem,.97rem + .12vw,1.0625rem);
  --fs-label:.6875rem;                                  /* 11px, etichette maiuscole */

  /* tracking e interlinea */
  --tr-hero:-.048em;
  --tr-display:-.044em;
  --tr-title:-.034em;
  --tr-sub:-.022em;
  --tr-text:-.006em;
  --tr-label:.14em;
  --lh-hero:.94;
  --lh-display:1;
  --lh-title:1.05;
  --lh-sub:1.16;
  --lh-text:1.62;
}

/* --------------------------------------------------------------------------
   4. Applicazione a tutto il sito (body, titoli, etichette)
   -------------------------------------------------------------------------- */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:var(--font-text);
  font-optical-sizing:auto;font-kerning:normal;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
button,input,textarea,select{font:inherit;letter-spacing:inherit}
h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-optical-sizing:auto;font-kerning:normal}
p,li,dd,blockquote,figcaption{text-wrap:pretty}
h1,h2,h3,h4,h5,h6{text-wrap:balance}
p{letter-spacing:var(--tr-text)}

/* titoli di sezione */
h2{font-weight:560;letter-spacing:var(--tr-title);line-height:var(--lh-title)}
.contact-grid h2{letter-spacing:var(--tr-display);line-height:1.02}
.roster-note h2{letter-spacing:var(--tr-title)}
h3,.service-list h3,.talent-info h3,.steps h3,.topic-grid h3,.roster-grid .talent-info h3{
  font-weight:540;letter-spacing:var(--tr-sub);line-height:var(--lh-sub);
}
.service-list h3{font-weight:500}

/* titoli di pagina (talent, profili, 404) */
.page-intro h1,.profile-title h1,.profile-title h1.artist-name,.error-page h1{
  font-weight:620;letter-spacing:var(--tr-display);line-height:var(--lh-display);
}
.page-intro h1{line-height:1.02}
.profile-title h1{line-height:.98}

/* testo di lettura */
.lead{letter-spacing:-.014em;line-height:1.46}
.profile-summary{letter-spacing:-.012em}
.nickname,.artist-role{letter-spacing:var(--tr-text)}
.intro-bottom p,.featured-intro p,.collab-note p{letter-spacing:var(--tr-text)}

/* link grandi del blocco canali: display, non testo */
.social-list a{font-family:var(--font-display);font-weight:520;letter-spacing:-.02em}
.social-list .external-label{font-family:var(--font-text);letter-spacing:.02em}

/* etichette maiuscole e numeri d'indice: Geist, tracciatura larga, cifre tabulari */
.eyebrow,.edition,.hero-bottom,.art-caption,.steps article>span,.topic-grid article>span,
.count,.portrait-label,.contact-note,.talent-category,.service-number{
  font-family:var(--font-text);font-variant-numeric:tabular-nums;
}
.eyebrow,.steps article>span,.topic-grid article>span,.talent-category,.portrait-label{
  letter-spacing:.12em;
}
.service-number,.count{letter-spacing:.06em}
.contact-note{letter-spacing:.06em}
.external-label{letter-spacing:.04em}
.tags span{letter-spacing:.01em}

/* pulsanti, navigazione, link testuali */
.button{font-weight:600;letter-spacing:.002em}
.header nav{letter-spacing:.002em}
.text-link,.card-action{letter-spacing:.002em}

/* wordmark (header e footer): display, peso pieno, contrasto con la sigla Geist */
.wordmark .wordmark-text strong{font-family:var(--font-display);font-weight:700;letter-spacing:-.04em}
.wordmark .wordmark-text b{font-weight:800;letter-spacing:-.035em}
.wordmark .wordmark-text small{font-family:var(--font-text);font-weight:600}

/* indice dei lavori numerati nelle card dei servizi */
.service-number{font-weight:600}

@media(max-width:640px){
  .service-list h3,.talent-info h3{letter-spacing:-.02em}
}
