/*
 Theme Name:   Mondo Istruzione
 Theme URI:    https://mondoistruzione.it/
 Description:  Sistema grafico del nuovo Mondo Istruzione. Tema figlio di merimag: gli articoli restano resi dal tema padre, le pagine hub usano il modello dedicato.
 Author:       Redazione Mondo Istruzione
 Template:     merimag
 Version:      1.0.0
 Text Domain:  mondoistruzione
*/

/* Sistema grafico Mondo Istruzione — generato dal prototipo il 28/07/2026.
   Non si modifica qui: si modifica in mondoistruzione-prototipo/parts/
   e si rigenera, altrimenti prototipo e sito divergono. */

/* =========================================================
   Sistema colore ancorato al marchio, contrasti WCAG verificati.
   Il fondo pagina NON è mai bianco: il bianco è la superficie
   delle card, così ogni card stacca dal fondo.
   ========================================================= */
:root{
  /* --- scala tipografica, depositata il 12 agosto 2026 --------------
     Nove gradini, tutti in pixel interi sulla radice da 16px. Prima
     c'erano 168 dichiarazioni font-size su decine di valori scelti a
     due decimali, che in pagina diventavano una trentina di misure.
     Il testo corrente resta a 17px: la lettura lunga e' la cosa meglio
     riuscita del sito e non si tocca.
     I gradini stanno QUI, nel foglio, e non solo nello snippet 65:
     se il foglio usasse variabili definite altrove, spegnere uno
     snippet farebbe crollare tutte le misure di testo del sito. */
  --t-200:.75rem;     /* 12px - il minimo, sotto non si scende  */
  --t-300:.8125rem;   /* 13px - date, fonti, note               */
  --t-400:.9375rem;   /* 15px - sommari, didascalie, voci       */
  --t-500:1.0625rem;  /* 17px - testo corrente                  */
  --t-600:1.25rem;    /* 20px - h3, contatori                   */
  --t-700:1.5rem;     /* 24px - h2 sul telefono, cifre grandi   */
  --t-800:2rem;       /* 32px - h2                              */
  --t-900:2.5rem;     /* 40px - titoli di pagina interna        */
  --t-1000:3.75rem;   /* 60px - solo il titolo d'apertura       */

  --bg:#F5F8FD; --alt1:#EAF0FA; --alt2:#DDE7F5;
  --surface:#FFFFFF;
  --line:#CBD9EC; --line-strong:#6B83A6;
  --ink:#0D1B3D; --ink-2:#34456B; --ink-3:#4F5F86;
  --accent:#0063AE; --accent-fill:#0063AE; --accent-on:#FFFFFF;
  --warm:#985100; --warm-fill:#FF8A00; --warm-on:#0D1B3D;
  --warm-bg:#FFECDE; --warm-line:#FFC8A0;
  --pos:#00746B; --pos-fill:#00958A;
  --band-dark:#0D1B3D; --band-tint:#E4ECFE; --band-teal:#D4F6F1;
  --band-grad:linear-gradient(135deg,#0D1B3D 0%,#123A72 38%,#0B5F93 70%,#00776D 100%);
  --rule:linear-gradient(120deg,#0D1B3D,#1E88E5 45%,#00B3A6);
  --on-dark:#FFFFFF; --on-dark-2:#B4C4E0; --on-dark-link:#56A8FC;
  --r:6px;
  --display:"Segoe UI Black","Segoe UI Variable Display","Segoe UI","Helvetica Neue","Arial Black",Arial,sans-serif;
  --ui:"Segoe UI",system-ui,-apple-system,Roboto,Tahoma,Arial,sans-serif;
  --serif:Georgia,"Times New Roman",serif;
  --mono:ui-monospace,Consolas,"Cascadia Mono","Courier New",monospace;
  --maxw:1280px;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#071229; --alt1:#0D1B3D; --alt2:#122448;
    --surface:#16294F;
    --line:#26385F; --line-strong:#6684C4;
    --ink:#EAF1FC; --ink-2:#B4C4E0; --ink-3:#93A5C6;
    --accent:#56A8FC; --accent-fill:#1E88E5; --accent-on:#0D1B3D;
    --warm:#FFAB6B; --warm-fill:#FF8A00; --warm-on:#0D1B3D;
    --warm-bg:#2C1B0A; --warm-line:#70502C;
    --pos:#56CABE; --pos-fill:#00958A;
    --band-dark:#0D1B3D; --band-tint:#122448; --band-teal:#0E2E33;
  }
}
:root[data-theme="dark"]{
  --bg:#071229; --alt1:#0D1B3D; --alt2:#122448; --surface:#16294F;
  --line:#26385F; --line-strong:#6684C4;
  --ink:#EAF1FC; --ink-2:#B4C4E0; --ink-3:#93A5C6;
  --accent:#56A8FC; --accent-fill:#1E88E5; --accent-on:#0D1B3D;
  --warm:#FFAB6B; --warm-fill:#FF8A00; --warm-on:#0D1B3D;
  --warm-bg:#2C1B0A; --warm-line:#70502C;
  --pos:#56CABE; --pos-fill:#00958A;
  --band-dark:#0D1B3D; --band-tint:#122448; --band-teal:#0E2E33;
}
:root[data-theme="light"]{
  --bg:#F5F8FD; --alt1:#EAF0FA; --alt2:#DDE7F5; --surface:#FFFFFF;
  --line:#CBD9EC; --line-strong:#6B83A6;
  --ink:#0D1B3D; --ink-2:#34456B; --ink-3:#4F5F86;
  --accent:#0063AE; --accent-fill:#0063AE; --accent-on:#FFFFFF;
  --warm:#985100; --warm-fill:#FF8A00; --warm-on:#0D1B3D;
  --warm-bg:#FFECDE; --warm-line:#FFC8A0;
  --pos:#00746B; --pos-fill:#00958A;
  --band-dark:#0D1B3D; --band-tint:#E4ECFE; --band-teal:#D4F6F1;
}

*{box-sizing:border-box}
/* accessibilità: il link di salto compare solo quando riceve il focus */
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--warm-fill);
  color:#0D1B3D;font-weight:800;padding:12px 20px;text-decoration:none;border-radius:0 0 var(--r) 0}
.skip:focus{left:0}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ui);
  font-size:var(--t-500);line-height:1.62;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--warm-fill);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
  /* le sezioni devono restare visibili anche senza l'animazione d'ingresso */
  .sale{opacity:1!important;transform:none!important}
}
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:24px}

h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:900;color:inherit;text-wrap:balance}
/* un solo titolo enorme in tutta la pagina */
.h-lead{font-size:clamp(var(--t-800),5vw,var(--t-1000));line-height:.96;letter-spacing:-.035em}
h2{font-size:clamp(var(--t-700),2.3vw,var(--t-800));line-height:1.06;letter-spacing:-.028em}
h3{font-size:var(--t-600);line-height:1.14;letter-spacing:-.02em;font-weight:900}
h4{font-size:var(--t-500);line-height:1.26;letter-spacing:-.012em;font-weight:700;font-family:var(--ui)}
.kicker{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.16em;color:var(--accent);margin:0}
.stand{font-family:var(--serif);font-style:italic;font-size:clamp(var(--t-500),1.5vw,var(--t-600));
  line-height:1.5;color:var(--ink-2);margin:0;max-width:56ch}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ---- la stanghetta: barra + punto arancione del logo ---- */
.mark{position:relative;padding-left:20px}
.mark::before{content:"";position:absolute;left:0;top:.30em;bottom:.06em;width:5px;
  background:linear-gradient(180deg,#1E88E5,#00B3A6);border-radius:1px}
.mark::after{content:"";position:absolute;left:-2px;top:-3px;width:9px;height:9px;
  border-radius:50%;background:var(--warm-fill)}

/* ---- fasce ---- */
.band{padding:clamp(40px,4.6vw,62px) 0 clamp(30px,3.4vw,44px);position:relative}
.band--base{background:var(--bg)}
.band--tint{background:var(--band-tint)}
.band--teal{background:var(--band-teal)}
.band--dark{background:var(--band-dark);color:var(--on-dark)}
.band--grad{background:var(--band-grad);color:var(--on-dark)}
.band--dark h2,.band--grad h2,.band--dark h3,.band--grad h3,
.band--dark h4,.band--grad h4{color:var(--on-dark)}
.band--dark .kicker,.band--grad .kicker{color:#8FC4FF}
.band--dark .stand,.band--grad .stand{color:var(--on-dark-2)}
.band--dark a,.band--grad a{color:var(--on-dark-link)}
.band--rule::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--rule)}

/* testata di sezione: filetto + etichetta piena */
.shead{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;
  border-top:3px solid var(--line-strong);padding-top:14px;margin-bottom:22px}
.band--dark .shead,.band--grad .shead{border-top-color:rgba(255,255,255,.34)}
.slabel{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.12em;padding:5px 11px;background:var(--accent-fill);color:var(--accent-on);
  border-radius:2px}
.slabel--warm{background:var(--warm-fill);color:var(--warm-on)}
.slabel--pos{background:var(--pos-fill);color:#fff}
.shead .more{margin-left:auto;font-size:var(--t-300);font-weight:700;text-decoration:none}
.shead .more:hover{text-decoration:underline}

/* ---- barra di servizio ---- */
.util{background:#0D1B3D;color:#B4C4E0;font-size:var(--t-300)}
.util-in{display:flex;align-items:center;gap:18px;height:38px}
.util a{color:#B4C4E0;text-decoration:none}
.util a:hover{color:#fff}
.util .sp{margin-left:auto;display:flex;align-items:center;gap:15px}
.util .search{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.18);border-radius:2px;padding:4px 10px}
.util .search input{border:0;background:transparent;color:#fff;font:inherit;width:158px;outline:none}
.util .search input::placeholder{color:#8FA3C4}
/* Sotto gli 820px sparisce la data (decorativa), NON la ricerca: chi arriva da
   telefono cerca "punteggio ATA" e prima non aveva dove scriverlo. La barra
   passa a due righe e la casella prende tutta la larghezza. */
@media(max-width:820px){
  .util .date{display:none}
  .util-in{flex-wrap:wrap;height:auto;min-height:38px;padding:6px 0;gap:8px 15px}
  .util .sp{margin-left:0;width:100%;flex-wrap:wrap;gap:8px 15px}
  .util .search{flex:1 1 100%;min-width:0;padding:6px 10px}
  .util .search input{width:100%;flex:1 1 auto;min-width:0;font-size:var(--t-500)}
}

/* ---- testata: logo grande ---- */
.masthead{background:var(--surface);border-bottom:1px solid var(--line)}
.masthead-in{display:flex;align-items:center;gap:28px;padding:22px 0;flex-wrap:wrap}
.masthead .logo-full{height:clamp(62px,7.4vw,96px);width:auto;display:block}
.masthead .logo-dark{display:none}
@media (prefers-color-scheme:dark){
  .masthead .logo-light{display:none}
  .masthead .logo-dark{display:block}
}
:root[data-theme="dark"] .masthead .logo-light{display:none}
:root[data-theme="dark"] .masthead .logo-dark{display:block}
:root[data-theme="light"] .masthead .logo-light{display:block}
:root[data-theme="light"] .masthead .logo-dark{display:none}
/* ---- riquadro dell'editore in testata ----
   Rifatto il 28/07/2026. Le due versioni precedenti sbagliavano:
   la prima metteva il logo su una piastrina bianca, e sembrava un adesivo
   incollato sopra; la seconda ne mostrava due, perche' la regola
   sull'immagine era piu' specifica di quella che nascondeva la variante,
   e in piu' erano troppo piccoli per leggersi.
   Qui: UN SOLO logo, alto 46px cioe' ~150px di larghezza, appoggiato
   direttamente sul riquadro. Il riquadro resta CHIARO in tutti e due i temi,
   ed e' una scelta: la scritta del logo e' blu scuro, su fondo scuro
   sparirebbe, e uno spazio commerciale che si stacca dal resto e' piu'
   onesto, non meno. Per questo i colori qui sono fissi e non token.
   Filetto teal a sinistra: distingue il commerciale dal redazionale senza
   spendere l'arancione, che resta un segnale unico per schermata. */
.masthead .promo{margin-left:auto;display:flex;align-items:center;gap:20px;
  background:#EAF0FA;border:1px solid #CBD9EC;border-left:3px solid #00958A;
  padding:14px 20px;border-radius:var(--r);max-width:470px;
  text-decoration:none;transition:background .16s ease,border-color .16s ease}
.masthead .promo:hover{background:#DDE7F5;border-color:#6B83A6;border-left-color:#00958A}
.masthead .promo .marchio{flex:0 0 auto;display:block;line-height:0}
.masthead .promo .marchio img{display:block;width:186px;height:auto;max-width:none}
.masthead .promo .promo-txt{display:flex;flex-direction:column;gap:5px;min-width:0}
/* Etichetta obbligatoria: il riquadro promuove l'offerta dell'editore e
   senza etichetta si legge come una notizia. Non e' solo buona educazione:
   e' la riconoscibilita' della comunicazione commerciale (D.Lgs. 206/2005). */
.masthead .promo .adv{font-family:var(--mono);font-size:var(--t-200);text-transform:uppercase;
  letter-spacing:.15em;color:#4F5F86}
.masthead .promo .claim{font-size:var(--t-300);font-weight:600;line-height:1.35;color:#34456B}
.masthead .promo .promo-cta{font-size:var(--t-300);font-weight:800;color:#00746B;margin-top:2px}
.masthead .promo:hover .promo-cta{text-decoration:underline}
@media(max-width:900px){
  .masthead .promo{margin-left:0;width:100%;max-width:none}
}
@media(max-width:430px){
  .masthead .promo{flex-direction:column;align-items:flex-start;gap:12px}
  .masthead .promo .marchio img{width:168px}
}

/* ---- barra menu ---- */
.navbar{background:#0D1B3D;position:sticky;top:0;z-index:60;border-bottom:3px solid var(--warm-fill)}
.nav{display:flex;gap:0;margin:0;padding:0;list-style:none;flex-wrap:wrap}
.nav>li{position:relative}
.nav>li>a{display:block;padding:14px 15px;color:#fff;text-decoration:none;
  font-size:var(--t-400);font-weight:700;letter-spacing:-.005em}
.nav>li>a:hover{background:rgba(255,255,255,.12)}
.nav>li.has>a::after{content:"▾";margin-left:6px;color:#8FA3C4;font-size:.82em}
.submenu{position:absolute;top:100%;left:0;min-width:228px;background:var(--surface);
  border:1px solid var(--line);border-top:3px solid var(--warm-fill);padding:6px;margin:0;
  list-style:none;display:none;z-index:70;box-shadow:0 12px 28px rgba(13,27,61,.28)}
.nav>li:hover .submenu,.nav>li:focus-within .submenu{display:block}
.submenu a{display:block;padding:9px 12px;font-size:var(--t-300);font-weight:600;
  color:var(--ink);text-decoration:none}
.submenu a:hover{background:var(--alt1);color:var(--accent)}
@media(max-width:1120px){.nav>li>a{padding:12px 11px;font-size:var(--t-300)}}

/* ---- PLANCIA: blocco dominante ---- */
.plancia{background:var(--band-dark);color:#fff;padding:clamp(34px,4vw,54px) 0 clamp(34px,4vw,50px);
  position:relative}
.plancia::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--rule)}
.plancia-in{display:grid;grid-template-columns:1.42fr 1fr;gap:clamp(28px,3.4vw,52px);align-items:start}
@media(max-width:1000px){.plancia-in{grid-template-columns:1fr}}
.plancia .kicker{color:#8FC4FF}
.plancia .h-lead{color:#fff;margin:.5rem 0 .9rem}
.plancia .stand{color:#B4C4E0}
.plancia .byline{font-family:var(--mono);font-size:var(--t-200);color:#93A5C6;margin-top:16px;display:block}
.cta-row{display:flex;gap:11px;flex-wrap:wrap;margin-top:22px}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:.78rem 1.2rem;
  border-radius:var(--r);font-weight:800;font-size:var(--t-400);text-decoration:none;border:0;cursor:pointer;
  font-family:var(--ui)}
.btn-warm{background:var(--warm-fill);color:var(--warm-on)}
.btn-line{border:2px solid rgba(255,255,255,.55);color:#fff;padding:calc(.78rem - 2px) calc(1.2rem - 2px);
  background:transparent}
.btn-line:hover{background:rgba(255,255,255,.14)}
.btn-solid{background:var(--accent-fill);color:var(--accent-on)}

.scad{display:grid;gap:9px}
.scad-t{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:#8FC4FF;margin:0 0 3px}
.sc{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);
  border-left:4px solid rgba(255,255,255,.28);padding:12px 14px;border-radius:2px}
.sc.live{border-left-color:var(--warm-fill);background:rgba(255,138,0,.10)}
.sc h4{color:#fff;font-size:var(--t-400);margin:0}
.sc .when{font-family:var(--mono);font-size:var(--t-200);color:#B4C4E0;display:block;margin-top:2px}
.sc .cd{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;
  font-size:var(--t-600);color:#FFAB6B;text-align:right;line-height:1.05;white-space:nowrap}
.sc .cd small{display:block;font-weight:400;font-size:var(--t-200);letter-spacing:.1em;
  text-transform:uppercase;color:#93A5C6;margin-top:2px}
.sc.ok .cd{color:#56CABE}

/* ---- griglie contenuti ---- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:20px}
.acard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:var(--ink)}
.acard:hover{border-color:var(--line-strong)}
/* =========================================================
   MOVIMENTO — quattro tocchi, nessuno decorativo.
   Tutto si spegne con prefers-reduced-motion (regola già in
   fondo a questo file): il movimento non deve mai essere
   l'unico modo per capire qualcosa.
   ========================================================= */

/* 1. avanzamento della lettura: filetto sotto la barra del menu */
.progresso{position:fixed;top:0;left:0;height:3px;width:100%;z-index:80;
  background:transparent;pointer-events:none}
.progresso i{display:block;height:100%;width:0;
  background:linear-gradient(90deg,#1E88E5,#00B3A6);
  transition:width .12s linear}

/* 2. ticker delle scadenze: scorre da solo, si ferma al passaggio del mouse */
.ticker{background:var(--band-dark);border-bottom:1px solid rgba(255,255,255,.14);
  overflow:hidden;position:relative}
.ticker-in{display:flex;align-items:center;gap:0;height:34px;max-width:var(--maxw);
  margin-inline:auto;padding-inline:24px}
/* etichetta in teal, non arancione: in questa schermata l'arancione è già
   speso dalla CTA della plancia e dai contatori. Una regola, un elemento. */
.ticker .et{flex:0 0 auto;font-family:var(--ui);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.14em;color:#fff;
  background:var(--pos-fill);padding:4px 10px;border-radius:2px;margin-right:16px}
.ticker .pista{flex:1 1 auto;overflow:hidden;position:relative;height:34px}
.ticker .nastro{display:flex;gap:44px;align-items:center;height:34px;width:max-content;
  animation:scorri 38s linear infinite;will-change:transform}
.ticker:hover .nastro,.ticker:focus-within .nastro{animation-play-state:paused}
.ticker .voce{white-space:nowrap;font-size:var(--t-300);color:#B4C4E0}
.ticker .voce b{color:#fff;font-weight:700}
.ticker .voce .n{font-family:var(--mono);font-variant-numeric:tabular-nums;color:#FFAB6B}
@keyframes scorri{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:640px){.ticker .et{display:none}}

/* 3. comparsa delle sezioni allo scorrimento: 12px, una volta sola */
.sale{opacity:0;transform:translateY(12px);
  transition:opacity .45s ease-out,transform .45s ease-out}
.sale.dentro{opacity:1;transform:none}

/* 4. cursore del calcolatore */
.cform input[type=range]{width:150px;accent-color:var(--accent-fill);cursor:pointer}
.crow .valore{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;
  font-size:var(--t-500);color:var(--ink);min-width:1.6em;text-align:right;
  transition:color .2s ease}

/* fascia in testa alla sezione: porta il dato che identifica la pagina */
.banner{display:block;width:100%;height:auto;border-radius:var(--r);margin:0 0 26px}

/* la miniatura e' un <img> vero, non un background: serve a chi usa uno
   screen reader e serve a Google Immagini. Il fondo resta come ripiego. */
.thumb{aspect-ratio:16/9;background:var(--alt2);display:grid;place-items:center;
  width:100%;object-fit:cover;
  font-family:var(--mono);font-size:var(--t-200);color:var(--ink-3);letter-spacing:.1em}
.acard .body{padding:15px 16px;display:flex;flex-direction:column;gap:7px;flex:1}
.meta{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--t-200);color:var(--ink-3)}

.mag{display:grid;grid-template-columns:1fr 320px;gap:36px;align-items:start}
@media(max-width:1020px){.mag{grid-template-columns:1fr}}

/* Ultime: denso */
.ultime{border-top:1px solid var(--line)}
.ultime a{display:grid;grid-template-columns:96px 1fr;gap:14px;align-items:baseline;
  padding:9px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.ultime a:hover{background:var(--alt1)}
.ultime time{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--t-200);color:var(--ink-3)}
.ultime span{font-size:var(--t-400);font-weight:600;line-height:1.32}
@media(max-width:560px){.ultime a{grid-template-columns:1fr;gap:2px}}

/* Esplora: tessere senza data */
.topics{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:10px}
.topic{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 15px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;
  justify-content:space-between;min-height:92px}
.topic:hover{border-color:var(--line-strong)}
.topic b{font-family:var(--display);font-weight:900;font-size:var(--t-500);letter-spacing:-.02em;line-height:1.15}
.topic i{font-family:var(--mono);font-style:normal;font-size:var(--t-700);font-weight:700;
  color:var(--accent);letter-spacing:-.03em}
.topic i span{font-size:var(--t-200);color:var(--ink-3);font-weight:400;letter-spacing:.08em;
  text-transform:uppercase;margin-left:5px}

/* sidebar densa */
.sw{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:16px;margin-bottom:16px}
.sw h4{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.13em;color:var(--ink-2);margin-bottom:12px;
  border-bottom:2px solid var(--line-strong);padding-bottom:8px}
.sw ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.sw li{display:flex;justify-content:space-between;gap:10px;font-size:var(--t-400);line-height:1.35}
.sw li a{text-decoration:none;color:var(--ink);font-weight:600}
.sw li a:hover{color:var(--accent)}
.sw .cnt{font-family:var(--mono);font-size:var(--t-200);color:var(--ink-3)}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tags a{font-size:var(--t-200);font-weight:700;text-decoration:none;color:var(--ink-2);
  background:var(--alt1);border:1px solid var(--line);border-radius:2px;padding:4px 9px}
.tags a:hover{color:var(--accent);border-color:var(--accent)}
.srow{display:flex;gap:8px}
.srow a{flex:1;text-align:center;padding:9px;border:1px solid var(--line);border-radius:var(--r);
  text-decoration:none;font-weight:700;font-size:var(--t-300);color:var(--ink)}
.srow a:hover{border-color:var(--line-strong)}

/* tabella */
.tbl{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table{border-collapse:collapse;width:100%;min-width:540px}
th,td{text-align:left;padding:12px 18px;border-bottom:1px solid var(--line);font-size:var(--t-400)}
thead th{font-family:var(--mono);font-size:var(--t-200);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-2);background:var(--alt1)}
tbody tr:nth-child(even){background:var(--alt1)}
tbody tr:last-child td{border-bottom:0}
td.pts{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;text-align:right}
tr.tot td{background:var(--band-dark);color:#fff;font-weight:800}
.note{font-size:var(--t-400);color:var(--ink-2);margin:14px 0 0;max-width:76ch}
.note code{font-family:var(--mono);font-size:.85em;background:var(--alt2);padding:1px 6px;border-radius:2px}
.badge-warm{display:inline-block;background:var(--warm-bg);color:var(--warm);
  border:1px solid var(--warm-line);border-radius:2px;padding:2px 8px;font-weight:700;font-size:var(--t-300)}

.ad{border:1px dashed var(--line-strong);background:var(--alt1);min-height:100px;
  display:grid;place-items:center;font-family:var(--mono);font-size:var(--t-200);color:var(--ink-3);
  letter-spacing:.12em;text-transform:uppercase;border-radius:var(--r)}

.events{display:grid;gap:8px}
.ev{display:grid;grid-template-columns:62px 1fr;gap:14px;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--warm-fill);
  border-radius:var(--r);padding:12px 15px}
.ev .d{text-align:center;font-family:var(--mono);line-height:1.05}
.ev .d b{display:block;font-size:var(--t-700);font-weight:700;letter-spacing:-.03em}
.ev .d span{font-size:var(--t-200);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3)}
.ev p{margin:2px 0 0;font-size:var(--t-300);color:var(--ink-2)}

/* certificazioni su gradiente */
.certgrid{display:grid;grid-template-columns:1.3fr .9fr;gap:34px;align-items:center}
@media(max-width:900px){.certgrid{grid-template-columns:1fr}}
.facts{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.24);
  border-radius:var(--r);padding:20px}
.facts dl{margin:0;display:grid;gap:13px}
.facts dt{font-family:var(--mono);font-size:var(--t-200);letter-spacing:.1em;text-transform:uppercase;
  color:#B4C4E0}
.facts dd{margin:3px 0 0;font-weight:700;font-size:var(--t-400);color:#fff}
.disclaim{font-size:var(--t-300);color:#B4C4E0;border-left:3px solid #56CABE;padding-left:13px;margin-top:20px}

.sub{display:grid;grid-template-columns:1.1fr 1fr;gap:32px;align-items:center}
@media(max-width:860px){.sub{grid-template-columns:1fr}}
.sub form{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.sub input{flex:1 1 230px;padding:.8rem 1rem;border:1px solid var(--line-strong);border-radius:var(--r);
  font:inherit;font-size:var(--t-400);background:var(--surface);color:var(--ink)}

.ftr{background:#071229;color:#B4C4E0;padding:46px 0 26px;font-size:var(--t-400)}
.ftr-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:30px}
@media(max-width:860px){.ftr-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.ftr-grid{grid-template-columns:1fr}}
.ftr h3{font-family:var(--ui);font-size:var(--t-200);letter-spacing:.13em;text-transform:uppercase;
  color:#8FA3C4;margin:0 0 12px;font-weight:700;border-bottom:1px solid #26385F;padding-bottom:8px}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ftr a{color:#EAF1FC;text-decoration:none}
.ftr a:hover{color:#56A8FC;text-decoration:underline}
.ftr .logo-symbol{height:52px;width:auto;display:block;margin-bottom:12px}
.ftr .trust{border-top:1px solid #26385F;margin-top:28px;padding-top:16px;display:flex;
  gap:18px;flex-wrap:wrap;justify-content:space-between;font-size:var(--t-300);color:#93A5C6}
.ftr .srow a{border-color:#26385F;color:#EAF1FC}

.ribbon{background:var(--warm-bg);color:var(--warm);border-bottom:1px solid var(--warm-line);
  font-size:var(--t-300);padding:8px 0;font-weight:600}
.ribbon-in{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center}
.ribbon .sim{display:flex;align-items:center;gap:7px;font-weight:700}
.ribbon .sim select{font:inherit;font-size:var(--t-300);font-weight:600;padding:3px 7px;
  border:1px solid var(--warm-line);border-radius:2px;background:var(--surface);color:var(--ink)}
.scad-note{font-size:var(--t-300);color:#B4C4E0;margin:10px 2px 0;line-height:1.45}
.scad-note a{color:#56A8FC;font-weight:700}
#scadList{display:grid;gap:9px}

/* Le fasce e le miniature sono SVG incorporati, non <img>: un elemento
   <svg> non risponde a object-fit, gli serve una regola sua. */
svg.banner,svg.thumb{display:block;width:100%;height:auto}
svg.thumb{aspect-ratio:16/9}

/* ---- rotazione degli spazi pubblicitari ----
   Dissolvenza, mai scorrimento laterale: uno slide che entra da destra
   contraddice la griglia, ed e il motivo per cui era stato scartato anche
   il carosello delle card. Ritmo lento e pausa al passaggio del mouse:
   il banner non deve competere con il contatore delle scadenze. */
.ad{position:relative;overflow:hidden}
.ad .slot{position:absolute;inset:0;display:grid;place-items:center;gap:5px;
  padding:10px;text-align:center;opacity:0;transition:opacity .8s ease}
.ad .slot.on{opacity:1}
.ad .conta{font-size:var(--t-200);letter-spacing:.1em;color:var(--ink-3);opacity:.75}
@media (prefers-reduced-motion:reduce){ .ad .slot{transition:none} }

/* ---- creativita' reali negli spazi pubblicitari ----
   Lo slot non e' piu' un segnaposto tratteggiato ma una scheda vera: superficie
   bianca come le altre card, etichetta di trasparenza sempre in cima, invito
   all'azione in teal perche' l'arancione resta un segnale unico per schermata. */
.ad{min-height:138px;border:1px solid var(--line);background:var(--surface);
  color:var(--ink);font-family:var(--ui);font-size:var(--t-500);letter-spacing:normal;
  text-transform:none;place-items:stretch}
/* La creativita' e' immagine + testo, e porta sempre il marchio del negozio:
   i percorsi arrivano da li' e chi guarda deve saperlo senza cliccare.
   Su spazio largo l'immagine sta a sinistra, su spazio stretto va sopra:
   una sola struttura, il flex-wrap fa il resto. */
.ad .slot.promo{display:flex;flex-wrap:nowrap;align-items:stretch;gap:0;padding:0;text-align:left}
.ad .slot.promo .figura{flex:0 0 38%;min-width:0;overflow:hidden;background:var(--band-dark)}
.ad .slot.promo .figura img{display:block;width:100%;height:100%;object-fit:cover}
.ad .slot.promo .corpo{flex:1 1 0;min-width:0;display:flex;flex-direction:column;
  align-items:flex-start;justify-content:center;gap:5px;padding:15px 18px}
/* Riquadro stretto (la colonna di lato): figura sopra, testo sotto.
   La classe la mette lo script guardando la larghezza VERA del riquadro:
   una media query guarda la finestra, e nella colonna da 320px la finestra
   e' larga — era questo a schiacciare l'immagine e a tagliare il testo. */
.ad--stretto .slot.promo{flex-direction:column}
.ad--stretto .slot.promo .figura{flex:0 0 auto;width:100%;height:152px}
.ad--stretto .slot.promo .corpo{flex:1 1 auto;width:100%;padding:14px 16px}
.ad .slot.promo .conta{font-family:var(--ui);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.14em;color:var(--ink-2);opacity:1;
  background:var(--alt2);border:1px solid var(--line);border-radius:2px;padding:2px 7px}
.ad .slot.promo .occhiello{font-family:var(--mono);font-size:var(--t-200);letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin-top:3px}
.ad .slot.promo .tit{font-family:var(--display);font-weight:900;font-size:var(--t-500);
  letter-spacing:-.02em;line-height:1.14}
.ad .slot.promo .txt{font-size:var(--t-300);color:var(--ink-2);line-height:1.4;max-width:64ch}
.ad .slot.promo .riga{display:flex;align-items:baseline;gap:14px;margin-top:4px;flex-wrap:wrap}
.ad .slot.promo .prezzo{font-family:var(--mono);font-variant-numeric:tabular-nums;
  font-weight:700;font-size:var(--t-500);color:var(--ink)}
.ad .slot.promo .cta{font-weight:800;font-size:var(--t-300);text-decoration:none;color:var(--pos)}
.ad .slot.promo .cta:hover{text-decoration:underline}
/* firma del negozio: piccola, in fondo, staccata da un filetto */
.ad .slot.promo .firma{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);
  width:100%;line-height:0}
.ad .slot.promo .firma img{display:block;height:38px;width:auto;max-width:100%}


/* =========================================================
   TELEFONO — la scelta e' responsive, non un sito separato
   (decisione del committente, 22/07/2026).
   Qui si correggono le tre cose che sul piccolo non reggevano:
   1. i titoloni con l'a capo forzato uscivano dallo schermo;
   2. le griglie con colonna minima fissa sfondavano sotto i 360px;
   3. il menu: i sottomenu si aprivano solo al passaggio del mouse,
      che su un telefono non esiste.
   ========================================================= */

/* 1. titoli: minimo piu' basso, parole che possono spezzarsi, e
      niente a capo forzati quando lo schermo decide da solo */
.h-lead{font-size:clamp(var(--t-800),5.4vw,var(--t-1000))}
h1,h2,h3,h4{overflow-wrap:break-word}
@media(max-width:620px){
  .h-lead br{display:none}
}

/* 2. griglie: la colonna non puo' mai essere piu' larga del contenitore */
.cards{grid-template-columns:repeat(auto-fit,minmax(min(232px,100%),1fr))}
.topics{grid-template-columns:repeat(auto-fill,minmax(min(172px,100%),1fr))}

/* 3. menu su schermo piccolo: si apre con un pulsante, i sottomenu
      restano aperti sotto la voce. Aprire e chiudere a due tocchi e' il
      modo piu' rapido per perdere la voce che si cercava. */
.navtoggle{display:none}
@media(max-width:900px){
  .navbar>.wrap{display:flex;flex-direction:column;align-items:stretch}
  .navtoggle{display:flex;align-items:center;gap:11px;width:100%;background:transparent;
    border:0;color:#fff;font-family:var(--ui);font-weight:800;font-size:var(--t-400);
    letter-spacing:.02em;padding:13px 0;cursor:pointer;text-align:left}
  .navtoggle .barre{position:relative;width:20px;height:2px;background:#fff;display:block;flex:none}
  .navtoggle .barre::before,.navtoggle .barre::after{content:"";position:absolute;left:0;
    width:20px;height:2px;background:#fff;transition:transform .18s ease}
  .navtoggle .barre::before{top:-6px}
  .navtoggle .barre::after{top:6px}
  .navtoggle[aria-expanded="true"] .barre{background:transparent}
  .navtoggle[aria-expanded="true"] .barre::before{transform:translateY(6px) rotate(45deg)}
  .navtoggle[aria-expanded="true"] .barre::after{transform:translateY(-6px) rotate(-45deg)}

  /* flex-wrap:nowrap non e' pleonastico. .nav nasce con flex-wrap:wrap per la
     barra orizzontale; rimessa in colonna con un max-height, "wrap" vuol dire
     wrap DI COLONNA: superata l'altezza le voci ripartivano in una seconda
     colonna fuori dallo schermo, e meta' menu era irraggiungibile sul telefono. */
  .nav{display:none;flex-direction:column;flex-wrap:nowrap;max-height:72vh;overflow-y:auto;padding-bottom:10px}
  .navbar[data-aperto] .nav{display:flex}
  .nav>li{border-top:1px solid rgba(255,255,255,.15)}
  .nav>li>a{padding:13px 2px}
  .nav>li.has>a::after{display:none}
  .submenu{position:static;display:block;min-width:0;background:transparent;border:0;
    box-shadow:none;padding:0 0 9px 0;margin:0}
  .submenu a{color:#B4C4E0;padding:8px 2px 8px 17px;font-size:var(--t-300)}
  .submenu a:hover{background:transparent;color:#fff}
}
@media (prefers-reduced-motion:reduce){
  .navtoggle .barre::before,.navtoggle .barre::after{transition:none}
}

/* 4. scadenziario e cursori: sotto i 420px una colonna sola */
@media(max-width:420px){
  .sc{grid-template-columns:1fr;gap:7px}
  .sc .cd{text-align:left}
}

/* 5. lo spazio pubblicitario deve contenere la creativita', non tagliarla */
.ad{min-height:190px}
/* l'altezza vera la impone lo script, dopo aver misurato la creativita' */

/* ---- solo per i lettori di schermo ----
   Usata sulle <caption> delle tabelle: il titolo della tabella serve a chi
   naviga con lo screen reader, ma a schermo lo ripete gia' l'intestazione
   della sezione. Ritaglio invece di left:-9999px, che sposta il fuoco. */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* =========================================================
   Componenti delle pagine interne + commutazione delle sezioni.
   Nessun token nuovo: solo composizioni di quelli della home v3.
   ========================================================= */

/* ---- una sezione per volta ---- */
.page[hidden]{display:none}
.page:focus{outline:none}
/* un elemento con display esplicito ignorerebbe l'attributo hidden */
.ribbon .sim[hidden]{display:none}
/* la barra del menu resta fissa: le ancore devono fermarsi sotto, non dietro */
[id]{scroll-margin-top:78px}

/* ---- briciole di pane ---- */
.crumbs{background:var(--alt1);border-bottom:1px solid var(--line);font-size:var(--t-300)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:11px 0;
  font-family:var(--mono);color:var(--ink-3)}
.crumbs a{color:var(--ink-2);text-decoration:none}
.crumbs a:hover{color:var(--accent);text-decoration:underline}
.crumbs li+li::before{content:"›";margin-right:8px;color:var(--line-strong)}
.crumbs [aria-current]{color:var(--ink);font-weight:700}

/* ---- voce di menu corrente ---- */
.nav>li>a[aria-current]{background:rgba(255,255,255,.16)}

/* ---- riassunto in tre righe, dentro la plancia ---- */
.tldr{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);
  border-left:4px solid var(--pos-fill);border-radius:2px;padding:15px 18px;margin:20px 0 0}
.tldr p{margin:0 0 7px;font-family:var(--ui);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.14em;color:#8FC4FF}
.tldr ul{margin:0;padding-left:19px;display:grid;gap:7px}
.tldr li{color:#EAF1FC;font-size:var(--t-400);line-height:1.45}
.tldr b{font-family:var(--mono);font-variant-numeric:tabular-nums;color:#fff}

/* ---- domanda e risposta: blocchi espliciti, leggibili anche dai motori generativi ---- */
.qa{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(288px,100%),1fr));gap:18px}
.qa>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:17px 19px;border-top:3px solid var(--line-strong)}
.qa h3{font-size:var(--t-500);line-height:1.24;margin-bottom:8px}
.qa p{margin:0;font-size:var(--t-400);color:var(--ink-2);line-height:1.55}
.qa p strong{color:var(--ink)}

/* ---- situazioni di calcolo ---- */
.calc{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(268px,100%),1fr));gap:20px}
.case{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.case h3{font-size:var(--t-500);line-height:1.2}
.case ul{list-style:none;margin:0;padding:0;display:grid;gap:6px;
  border-top:1px solid var(--line);padding-top:10px}
.case li{display:flex;justify-content:space-between;gap:12px;font-size:var(--t-400);color:var(--ink-2)}
.case li b{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);font-weight:700}
.case .tot{margin-top:auto;border-top:2px solid var(--line-strong);padding-top:11px;
  display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.case .tot span{font-size:var(--t-200);text-transform:uppercase;letter-spacing:.12em;
  font-weight:700;color:var(--ink-2)}
.case .tot b{font-family:var(--mono);font-variant-numeric:tabular-nums;
  font-size:var(--t-800);font-weight:700;letter-spacing:-.03em;color:var(--accent);line-height:1}
.case.cap .tot b{color:var(--pos)}

/* ---- passi numerati (sequenze vere) ---- */
.steps{list-style:none;counter-reset:s;margin:0;padding:0;display:grid;gap:12px}
.steps li{counter-increment:s;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);padding:15px 18px 15px 60px;position:relative}
.steps li::before{content:counter(s);position:absolute;left:16px;top:14px;width:30px;height:30px;
  display:grid;place-items:center;background:var(--band-dark);color:#fff;border-radius:2px;
  font-family:var(--mono);font-weight:700;font-size:var(--t-400)}
.steps h3{font-size:var(--t-500);margin-bottom:5px}
.steps p{margin:0;font-size:var(--t-400);color:var(--ink-2);line-height:1.5}

/* ---- glossario ---- */
.gloss{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px}
.gloss dl{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(258px,100%),1fr));gap:16px 30px}
.gloss dt{font-family:var(--display);font-weight:900;font-size:var(--t-400);letter-spacing:-.02em}
.gloss dd{margin:3px 0 0;font-size:var(--t-400);color:var(--ink-2);line-height:1.5}

/* ---- etichetta di trasparenza sui blocchi dell'editore ---- */
.adv-label{display:inline-block;font-family:var(--ui);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.14em;border:1px solid rgba(255,255,255,.55);
  color:#fff;padding:4px 10px;border-radius:2px;margin-bottom:14px}

/* ---- variante teal del badge: l'arancione resta un segnale unico per schermata ---- */
.badge-pos{display:inline-block;background:var(--band-teal);color:var(--pos);
  border:1px solid var(--pos-fill);border-radius:2px;padding:2px 8px;font-weight:700;font-size:var(--t-300)}

/* ---- fonti in chiaro ---- */
.sources{border-top:2px solid var(--line-strong);margin-top:26px;padding-top:14px;
  font-size:var(--t-300);color:var(--ink-2)}
.sources h3{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.13em;color:var(--ink-2);margin-bottom:9px}
.sources ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.sources code{font-family:var(--mono);font-size:.85em;background:var(--alt2);
  padding:1px 6px;border-radius:2px}
.updated{font-family:var(--mono);font-size:var(--t-200);color:#93A5C6;margin-top:16px;display:block}

/* ---- catalogo certificazioni ---- */
.certs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(292px,100%),1fr));gap:20px}
.cert{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--accent-fill);
  border-radius:var(--r);padding:20px 22px;display:flex;flex-direction:column;gap:11px}
.cert .issuer{font-family:var(--mono);font-size:var(--t-200);letter-spacing:.08em;color:var(--ink-3);
  text-transform:uppercase}
.cert h3{font-size:var(--t-600);line-height:1.16}
.cert p{margin:0;font-size:var(--t-400);color:var(--ink-2);line-height:1.5}
.cert dl{margin:0;display:grid;gap:9px;border-top:1px solid var(--line);padding-top:12px}
.cert .row{display:flex;justify-content:space-between;align-items:baseline;gap:14px}
.cert dt{font-size:var(--t-300);text-transform:uppercase;letter-spacing:.09em;font-weight:700;
  color:var(--ink-3)}
.cert dd{margin:0;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;
  font-size:var(--t-500);color:var(--ink);text-align:right}
.cert dd.score{font-size:var(--t-700);letter-spacing:-.03em;color:var(--accent);line-height:1}
.cert dd.none{font-size:var(--t-300);font-weight:600;color:var(--ink-2);font-family:var(--ui)}
.cert .go{margin-top:auto;padding-top:6px;font-weight:800;font-size:var(--t-400);text-decoration:none}
.cert .go:hover{text-decoration:underline}
.cert--proposta{border:1px dashed var(--line-strong);border-top:4px dashed var(--pos-fill);
  background:var(--alt1)}
.cert--proposta .issuer{color:var(--pos)}

/* ---- linea del tempo del biennio ---- */
.tl{list-style:none;margin:0;padding:0;display:grid;gap:0}
.tl li{display:grid;grid-template-columns:132px 1fr;gap:20px;padding:16px 0;
  border-bottom:1px solid var(--line);position:relative}
.tl li:first-child{border-top:1px solid var(--line)}
.tl .when{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--t-300);
  color:var(--ink-2);font-weight:700;line-height:1.35}
.tl .when small{display:block;font-weight:400;font-size:var(--t-200);color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.1em;margin-top:3px}
.tl h3{font-size:var(--t-500);line-height:1.2;margin-bottom:5px}
.tl p{margin:0;font-size:var(--t-400);color:var(--ink-2);line-height:1.5}
.tl .state{display:inline-block;font-family:var(--ui);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.12em;padding:3px 9px;border-radius:2px;
  margin-bottom:7px;border:1px solid var(--line-strong);color:var(--ink-2);background:var(--alt1)}
.tl .state--now{background:var(--pos-fill);border-color:var(--pos-fill);color:#fff}
.tl .state--done{opacity:.72}
.tl li.done h3{color:var(--ink-2)}
@media(max-width:640px){.tl li{grid-template-columns:1fr;gap:6px}}

/* ---- scadenziario fuori dalla plancia ---- */
.scadbox{background:var(--band-dark);color:#fff;border-radius:var(--r);padding:22px 24px}
.scadbox .scad-t{margin-bottom:12px}
[data-scad-list]{display:grid;gap:9px}

/* ---- segnaposto: dato che deve fornire l'editore, non inventabile.
       Volutamente NON arancione: sono molti, l'arancio resta un segnale unico. ---- */
.todo{display:inline-block;font-family:var(--mono);font-size:var(--t-200);font-weight:700;
  letter-spacing:.06em;color:var(--ink-3);background:var(--alt2);
  border:1px dashed var(--line-strong);border-radius:2px;padding:2px 9px}
.band--grad .todo,.plancia .todo,.ftr .todo{color:#B4C4E0;background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.38)}
.todo-note{border:1px dashed var(--line-strong);background:var(--alt1);border-radius:var(--r);
  padding:16px 19px;margin-top:22px}
.todo-note h3{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.13em;color:var(--ink-2);margin-bottom:9px}
.todo-note ul{margin:0;padding-left:19px;display:grid;gap:6px;font-size:var(--t-400);color:var(--ink-2)}

/* ---- schede della redazione ---- */
.people{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(268px,100%),1fr));gap:20px}
.person{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:18px 20px;display:flex;flex-direction:column;gap:9px}
.person .ph{width:56px;height:56px;border-radius:2px;background:var(--alt2);display:grid;
  place-items:center;font-family:var(--mono);font-size:var(--t-200);color:var(--ink-3);letter-spacing:.08em}
.person h3{font-size:var(--t-500);line-height:1.18}
.person .role{font-family:var(--mono);font-size:var(--t-200);letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3)}
.person p{margin:0;font-size:var(--t-400);color:var(--ink-2);line-height:1.5}
.person .go{margin-top:auto;padding-top:4px;font-weight:800;font-size:var(--t-400);text-decoration:none}
.person .go:hover{text-decoration:underline}

/* ---- stato vuoto dichiarato ---- */
.empty{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:26px 24px;text-align:center}
.empty b{display:block;font-family:var(--display);font-weight:900;font-size:var(--t-500);
  letter-spacing:-.02em;margin-bottom:7px}
.empty p{margin:0 auto;max-width:62ch;font-size:var(--t-400);color:var(--ink-2);line-height:1.55}

/* ---- pagine collegate ---- */
.legal{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(212px,100%),1fr));gap:12px}
.legal a{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 16px;text-decoration:none;color:var(--ink);font-weight:700;font-size:var(--t-400);
  display:flex;justify-content:space-between;align-items:center;gap:10px}
.legal a:hover{border-color:var(--line-strong)}
.legal a span{font-family:var(--mono);font-size:var(--t-200);font-weight:400;color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.08em}
/* ---- salta al contenuto ---- */
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--warm-fill);
  color:var(--warm-on);font-weight:800;padding:10px 16px;border-radius:0 0 var(--r) 0}
.skip:focus{left:0}

/* La scheda "in preparazione" e il suo CSS sono stati rimossi il 27/07/2026:
   ogni voce di menu porta ormai a una sezione scritta. Il modello resta
   descritto in 16-architettura-menu-e-pagine.md §12. */

/* =========================================================
   Calcolatore delle certificazioni.
   Il modulo sta su superficie chiara, l'esito su fondo scuro:
   il risultato deve staccare dal resto della pagina.
   ========================================================= */
.calcbox{display:grid;grid-template-columns:1.05fr .95fr;gap:26px;align-items:start}
@media(max-width:900px){.calcbox{grid-template-columns:1fr}}

.cform{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px}
.cform fieldset{border:0;padding:0;margin:0 0 22px}
.cform fieldset:last-of-type{margin-bottom:0}
.cform legend{padding:0;font-family:var(--ui);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.13em;color:var(--ink-2);
  border-bottom:2px solid var(--line-strong);width:100%;padding-bottom:8px;margin-bottom:6px}
.cform .hint{font-size:var(--t-300);color:var(--ink-3);margin:8px 0 2px;line-height:1.45}

.crow{display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding:11px 0;border-bottom:1px solid var(--line)}
.crow:last-of-type{border-bottom:0}
.crow .txt{display:flex;align-items:center;gap:11px;font-size:var(--t-400);color:var(--ink)}
.crow .pt{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;
  font-size:var(--t-400);color:var(--ink-3);white-space:nowrap}
.cform input[type=checkbox]{width:21px;height:21px;accent-color:var(--accent-fill);flex:0 0 auto}
.cform select,.cform input[type=text],.cform input[type=number]{font:inherit;font-size:var(--t-400);padding:.44rem .6rem;
  border:1px solid var(--line-strong);border-radius:2px;background:var(--surface);color:var(--ink)}

.lingue{display:grid;gap:9px;margin-top:10px}
.lrow{display:grid;grid-template-columns:1fr 128px;gap:9px}
.lrow input{width:100%}
.addl{margin-top:11px;background:none;border:1px dashed var(--line-strong);border-radius:2px;
  color:var(--ink-2);font:inherit;font-size:var(--t-300);font-weight:700;padding:.5rem .8rem;cursor:pointer}
.addl:hover{border-color:var(--accent);color:var(--accent)}

.esito{background:var(--band-dark);color:#fff;border-radius:var(--r);padding:24px 26px}
.esito .lab{font-family:var(--ui);font-size:var(--t-200);font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:#8FC4FF;margin:0 0 6px}
.esito .big{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;
  font-size:clamp(var(--t-900),6vw,var(--t-1000));letter-spacing:-.045em;line-height:1;color:#fff}
.esito .big small{font-size:.28em;letter-spacing:.1em;color:#93A5C6;margin-left:10px;
  font-weight:400;text-transform:uppercase}
.esito ul{list-style:none;margin:16px 0 0;padding:13px 0 0;display:grid;gap:8px;
  border-top:1px solid rgba(255,255,255,.24)}
.esito li{display:flex;justify-content:space-between;gap:14px;font-size:var(--t-400);color:#B4C4E0}
.esito li b{font-family:var(--mono);font-variant-numeric:tabular-nums;color:#fff;white-space:nowrap}
.esito li.nulla{color:#93A5C6}
.esito li.nulla b{color:#93A5C6}
.avvisi{display:grid;gap:9px;margin-top:16px}
.avviso{font-size:var(--t-300);line-height:1.5;color:#EAF1FC;background:rgba(255,255,255,.08);
  border-left:3px solid var(--pos-fill);padding:10px 13px;border-radius:2px}
.avviso b{color:#fff}
.avviso--tetto{border-left-color:var(--warm-fill)}
/* =========================================================
   Aggiunte delle sezioni "Concorsi docenti" e "Documenti legali".
   Stesse regole presenti nel <style> di concorsi-src.html e
   legali-src.html: quei blocchi non entrano nel prototipo unificato
   (il build estrae solo <main>), quindi vanno tenuti allineati a mano.
   ========================================================= */

/* ---- semaforo dello stato delle procedure ---- */
.stato{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(232px,100%),1fr));gap:14px;margin-top:4px}
.stato article{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:15px 17px;border-left:4px solid var(--line-strong)}
.stato article.chiuso{border-left-color:var(--line-strong)}
.stato article.corso{border-left-color:var(--pos-fill)}
.stato article.atteso{border-left-color:var(--accent-fill)}
.stato .st{font-family:var(--mono);font-size:var(--t-200);text-transform:uppercase;letter-spacing:.13em;
  color:var(--ink-3);display:block;margin-bottom:6px}
.stato h3{font-size:var(--t-500);line-height:1.22;margin-bottom:6px}
.stato p{margin:0;font-size:var(--t-400);color:var(--ink-2);line-height:1.5}
.stato .quando{display:block;margin-top:9px;font-family:var(--mono);font-size:var(--t-300);
  font-variant-numeric:tabular-nums;color:var(--ink)}

/* ---- celle "vale zero": si leggono come un dato, non come un vuoto ---- */
td.zero{font-family:var(--mono);text-align:right;color:var(--ink-3);font-weight:700}
caption{caption-side:top;text-align:left;padding:14px 18px 0;font-size:var(--t-300);color:var(--ink-2)}

/* ---- articolato dei documenti legali: numerato e citabile ---- */
.doc{counter-reset:art;display:grid;gap:16px}
.doc>section{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:18px 22px;counter-increment:art}
.doc>section>h3{font-size:var(--t-500);line-height:1.24;margin-bottom:9px;
  display:flex;gap:11px;align-items:baseline}
.doc>section>h3::before{content:counter(art);font-family:var(--mono);font-size:var(--t-300);
  font-weight:700;color:var(--accent);border:1px solid var(--line);border-radius:2px;
  padding:1px 7px;flex:none}
.doc p{margin:0 0 9px;font-size:var(--t-400);color:var(--ink-2);line-height:1.6}
.doc p:last-child{margin-bottom:0}
.doc strong{color:var(--ink)}
.doc ul{margin:0 0 9px;padding-left:20px;display:grid;gap:6px;font-size:var(--t-400);
  color:var(--ink-2);line-height:1.55}

/* ---- riga di stato del documento ---- */
.stato-doc{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 20px;
  font-family:var(--mono);font-size:var(--t-200);color:var(--ink-2)}
.stato-doc b{background:var(--warm-bg);color:var(--warm);border:1px solid var(--warm-line);
  border-radius:2px;padding:3px 10px;font-size:var(--t-200);letter-spacing:.1em;text-transform:uppercase}
/* Etichetta "Comunicazione dell'editore" anche sulle fasce chiare:
   la versione originale è bianca su fondo scuro e lì sparirebbe. */
.band--base .adv-label,.band--tint .adv-label,.band--teal .adv-label{
  color:var(--ink-2);border-color:var(--line-strong);background:var(--alt2)}
/* =========================================================
   Aggiunte della sezione "Didattica".
   Stesse regole nel <style> di didattica-src.html: il build
   estrae solo <main>, quel blocco non entra qui.
   ========================================================= */

/* ---- scheda "non e' piu' in vigore": il superato va segnalato, non nascosto ---- */
.superato{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--warm-fill);
  border-radius:var(--r);padding:18px 22px;margin:0 0 20px}
.superato .et{display:inline-block;font-family:var(--mono);font-size:var(--t-200);font-weight:700;
  text-transform:uppercase;letter-spacing:.14em;background:var(--warm-bg);color:var(--warm);
  border:1px solid var(--warm-line);border-radius:2px;padding:3px 9px;margin-bottom:10px}
.superato h3{font-size:var(--t-500);line-height:1.2;margin-bottom:8px}
.superato p{margin:0 0 9px;font-size:var(--t-400);color:var(--ink-2);line-height:1.6}
.superato p:last-child{margin-bottom:0}
.superato del{color:var(--ink-3);text-decoration-thickness:1px}

/* ---- calendario degli adempimenti che tornano ogni anno ---- */
.cal{list-style:none;margin:0;padding:0;display:grid;gap:0}
.cal li{display:grid;grid-template-columns:150px 1fr;gap:20px;padding:14px 0;
  border-bottom:1px solid var(--line)}
.cal li:first-child{border-top:1px solid var(--line)}
.cal .q{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--t-300);
  font-weight:700;color:var(--accent);line-height:1.3}
.cal b{display:block;font-family:var(--display);font-weight:900;font-size:var(--t-500);
  letter-spacing:-.02em;margin-bottom:3px}
.cal span{font-size:var(--t-400);color:var(--ink-2);line-height:1.5}
@media(max-width:640px){.cal li{grid-template-columns:1fr;gap:4px}}

/* ---- telefono: componenti delle pagine interne ----
   Questa regola sta qui e non in css.part: pagecss viene incorporato dopo, e
   la sua [id]{scroll-margin-top:78px} vincerebbe comunque. Sul piccolo la
   barra del menu e' piu' bassa, quindi le ancore si fermano piu' in alto. */
@media(max-width:900px){
  [id]{scroll-margin-top:62px}
}
@media(max-width:420px){
  .lrow{grid-template-columns:1fr}
  .crow{flex-wrap:wrap}
  .case .tot b{font-size:var(--t-700)}
}

/* =========================================================
   ARTICOLI, ARCHIVI, RICERCA — impaginato di lettura.
   Colonna stretta di proposito: su una materia dove si legge
   per capire una procedura, la riga lunga si perde.
   ========================================================= */
.art-main{padding:28px 0 54px;background:var(--bg)}
.art-griglia{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:38px;align-items:start}
.art{min-width:0;max-width:74ch}

.art-testa,.arch-testa{margin:0 0 22px}
.art-occhiello{margin:0 0 10px;font-size:var(--t-200);font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent)}
.art-titolo{margin:0 0 14px;font-family:var(--display);font-weight:900;
  font-size:clamp(var(--t-800),3.5vw,var(--t-900));line-height:1.04;letter-spacing:-.03em;color:var(--ink);
  text-wrap:balance}
.art-stand{margin:0 0 16px;font-family:var(--serif);font-size:var(--t-500);line-height:1.5;
  color:var(--ink-2)}
.art-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:12px 0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  font-family:var(--mono);font-size:var(--t-200);color:var(--ink-3)}
.art-meta .art-agg{color:var(--warm)}

.art-copertina{margin:22px 0;overflow:hidden;border-radius:var(--r);border:1px solid var(--line)}
.art-copertina img{display:block;width:100%;height:auto}

/* il corpo: qui dentro il testo lo scrive la redazione, quindi si vestono
   gli elementi veri e non delle classi che nessuno ricordera' di mettere */
.art-corpo{font-size:var(--t-500);line-height:1.72;color:var(--ink-2)}
.art-corpo > *:first-child{margin-top:0}
.art-corpo p{margin:0 0 1.05em}
.art-corpo h2{margin:2em 0 .6em;font-family:var(--display);font-weight:900;
  font-size:clamp(var(--t-600),2.1vw,var(--t-700));line-height:1.12;letter-spacing:-.02em;color:var(--ink)}
.art-corpo h3{margin:1.7em 0 .5em;font-weight:800;font-size:var(--t-600);color:var(--ink)}
.art-corpo h4{margin:1.5em 0 .4em;font-weight:800;font-size:var(--t-500);color:var(--ink)}
.art-corpo a{color:var(--accent);text-underline-offset:2px}
.art-corpo strong,.art-corpo b{color:var(--ink);font-weight:700}
.art-corpo ul,.art-corpo ol{margin:0 0 1.05em;padding-left:1.35em}
.art-corpo li{margin:0 0 .42em}
.art-corpo img{max-width:100%;height:auto;border-radius:var(--r)}
.art-corpo figure{margin:1.6em 0}
.art-corpo figcaption{margin-top:8px;font-size:var(--t-300);color:var(--ink-3)}
.art-corpo blockquote{margin:1.6em 0;padding:2px 0 2px 18px;border-left:3px solid var(--warm-fill);
  font-family:var(--serif);font-size:var(--t-500);color:var(--ink-2)}
.art-corpo blockquote p:last-child{margin-bottom:0}
.art-corpo hr{margin:2em 0;border:0;border-top:1px solid var(--line)}
.art-corpo code{font-family:var(--mono);font-size:.9em;background:var(--alt1);
  padding:.12em .38em;border-radius:3px}
/* le tabelle degli articoli vecchi possono essere larghe: non devono
   sfondare la pagina, scorrono dentro il loro contenitore */
.art-corpo table{display:block;overflow-x:auto;width:100%;border-collapse:collapse;
  margin:1.5em 0;font-size:var(--t-400)}
.art-corpo th,.art-corpo td{padding:9px 12px;border:1px solid var(--line);text-align:left}
.art-corpo th{background:var(--alt1);color:var(--ink);font-weight:800}
.art-corpo iframe,.art-corpo video{max-width:100%}

.art-etichette{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 0}
.art-etichette a{padding:5px 11px;border:1px solid var(--line);border-radius:99px;
  background:var(--surface);font-size:var(--t-200);font-weight:700;color:var(--ink-2);text-decoration:none}
.art-etichette a:hover{border-color:var(--accent);color:var(--accent)}

.art-fiducia{margin:26px 0 0;padding:14px 16px;border-left:3px solid var(--pos-fill);
  background:var(--alt1);border-radius:0 var(--r) var(--r) 0;font-size:var(--t-400);color:var(--ink-2)}

/* la spalla */
.art-lato{min-width:0;display:flex;flex-direction:column;gap:22px;position:sticky;top:14px}
.lato-blocco{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:16px}
.lato-tit{margin:0 0 12px;font-size:var(--t-200);font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-3)}
.lato-lista{margin:0;padding:0;list-style:none}
.lato-lista li{padding:9px 0;border-top:1px solid var(--line)}
.lato-lista li:first-child{border-top:0;padding-top:0}
.lato-lista a{font-weight:700;font-size:var(--t-400);line-height:1.35;color:var(--ink);text-decoration:none}
.lato-lista a:hover{color:var(--accent)}

/* elenchi di archivio */
.elenco{margin:0;padding:0;list-style:none}
.elenco-voce{display:flex;gap:18px;align-items:baseline;padding:15px 0;border-top:1px solid var(--line)}
.elenco-voce:first-child{border-top:0}
.elenco-data{flex:0 0 auto;font-size:var(--t-200);color:var(--ink-3);text-transform:uppercase}
.elenco-testo{display:block;min-width:0}
.elenco-tit{display:block;font-weight:800;font-size:var(--t-500);line-height:1.3;
  color:var(--ink);text-decoration:none}
.elenco-tit:hover{color:var(--accent)}
.elenco-somm{display:block;margin-top:5px;font-size:var(--t-400);line-height:1.5;color:var(--ink-3)}

.paginazione{display:flex;flex-wrap:wrap;gap:8px;margin:30px 0 0}
.paginazione .page-numbers{padding:7px 13px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--surface);font-weight:700;font-size:var(--t-400);color:var(--ink-2);text-decoration:none}
.paginazione .page-numbers.current{background:var(--accent-fill);border-color:var(--accent-fill);
  color:var(--accent-on)}
.paginazione .page-numbers:hover:not(.current){border-color:var(--accent);color:var(--accent)}

@media(max-width:980px){
  .art-griglia{grid-template-columns:minmax(0,1fr);gap:30px}
  .art{max-width:none}
  .art-lato{position:static}
}
@media(max-width:560px){
  .art-main{padding:18px 0 40px}
  .elenco-voce{flex-direction:column;gap:5px}
  .art-meta{font-size:var(--t-200)}
}

/* Il blocco di articoli collegati che il tema padre infila dentro il
   contenuto. Il suo foglio di stile non c'e' piu': senza queste regole
   resta una lista nuda con l'aria di un errore di impaginazione. */
.art-corpo .merimag-inline-related-posts{margin:2em 0;padding:16px 18px;
  border:1px solid var(--line);border-left:3px solid var(--accent-fill);
  border-radius:0 var(--r) var(--r) 0;background:var(--alt1)}
.art-corpo .merimag-inline-related-posts > *:first-child{margin-top:0}
.art-corpo .merimag-inline-related-posts h1,
.art-corpo .merimag-inline-related-posts h2,
.art-corpo .merimag-inline-related-posts h3,
.art-corpo .merimag-inline-related-posts h4,
.art-corpo .merimag-inline-related-posts > b,
.art-corpo .merimag-inline-related-posts > strong{display:block;margin:0 0 10px;
  font-family:var(--ui);font-size:var(--t-200);font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-3);background:none}
.art-corpo .merimag-inline-related-posts a{display:block;margin:0 0 4px;
  font-weight:700;font-size:var(--t-400);line-height:1.35;color:var(--ink);text-decoration:none}
.art-corpo .merimag-inline-related-posts a:hover{color:var(--accent);text-decoration:underline}
.art-corpo .merimag-inline-related-posts img{display:none}
.art-corpo .merimag-inline-related-posts .td-module-date,
.art-corpo .merimag-inline-related-posts time,
.art-corpo .merimag-inline-related-posts .entry-date{display:block;margin:0 0 12px;
  font-family:var(--mono);font-size:var(--t-200);color:var(--ink-3)}

/* =========================================================
   AGGIUNTA DEL 12 AGOSTO 2026
   ========================================================= */

/* Gli indirizzi lunghi dentro <code> — una PEC, un protocollo — non
   hanno spazi, e il 10 agosto uno di essi ha fatto scorrere di lato
   l'articolo 5478 sul telefono: 374px di contenuto in 371 di schermo,
   e il sito non aveva scorrimento orizzontale da nessuna parte. Quel
   giorno la correzione fu messa in linea sull'articolo, cioe' una
   pezza su un caso solo. Qui vale per tutti gli articoli. */
.art-corpo code{overflow-wrap:anywhere}

/* --- il minimo dei 12px vale anche per le misure in `em` (12/08/2026) ---
   Portati i contenitori sui gradini, il testo dentro <code> nelle note e
   nelle fonti — che e' in `em`, cioe' relativo al contenitore — e' sceso a
   11,1px, sotto il minimo della scala. Sono i riferimenti normativi:
   ordinanze, protocolli, FAQ, cioe' proprio cio' che rende verificabile
   quello che scriviamo. Stesso discorso per l'unita' accanto ai punteggi
   grandi, a 11,2px.
   Il rapporto con il contenitore resta, ma con un pavimento sotto.
   E' un difetto che la correzione di stamattina ha fatto EMERGERE, non
   creato: prima quei nodi stavano a 12,8px perche' il contenitore era
   piu' grande di quanto la scala ammetta. */
.note code,.sources code{font-size:max(var(--t-200),.85em)}
.esito .big small{font-size:max(var(--t-200),.28em)}
