@import url("font.css");

/* Minimal, moderno, leggibile.
   Un solo carattere. Nessun bordo dove basta lo spazio.
   Il colore compare soltanto dove porta informazione: il pallino di stato.
   Tutto il resto e' quasi-monocromatico. */

:root{
  color-scheme:light;
  --bg:#fdfdfc; --surface:#fff; --surface-2:#f6f6f3;
  --ink:#101113; --ink-2:#63666d; --ink-3:#74777f;  /* 4.40 sul fondo: leggibile davvero */
  --line:#eceae4; --line-2:#dedbd3;
  /* Palette categoriale, cercata e verificata da build/palette.py.
     Quattro tinte a chiarezza identica (scarto 0.002 in OKLab): nessuna pesa piu'
     delle altre, perche' l'osservatorio riporta e non giudica. Il testo non sta mai
     sopra questi colori - il colore vive nel pallino e nelle celle, il testo resta
     scuro - e questo ci permette di tenerli vivi invece che smorti.
     Quattro tinte distinguibili anche da un daltonico non esistono: dove la coppia
     si avvicina, la categoria porta anche una texture. Il colore non e' mai l'unica
     chiave. */
  --c1:#2f8fd8; --c2:#27a164; --c3:#c17501; --c4:#bc65a9; --nd:#b9bcc2;
  --ok:var(--c1); --cond:var(--c2); --no:var(--c3); --obb:var(--c4);
  --f:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --w:64rem; --prosa:34rem;
  /* una sola scala di spazi: prima ogni sezione aveva il suo numero */
  --s1:.5rem; --s2:1rem; --s3:1.7rem; --s4:2.6rem; --s5:3.6rem; --s6:5rem;
  /* icone: maschere CSS, niente file esterni, il colore lo decide chi le usa */
  --ico-pdf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12m0 0 4-4m-4 4-4-4'/%3E%3Cpath d='M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2'/%3E%3C/svg%3E");
  --ico-atenei: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Cpath d='M5 21V9l7-5 7 5v12'/%3E%3Cpath d='M10 21v-6h4v6'/%3E%3C/svg%3E");
  --ico-domande: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 1 1 3 2.45V14'/%3E%3Cpath d='M12 17.2h.01'/%3E%3C/svg%3E");
  --ico-docenti: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5 12 3l9 4.5-9 4.5z'/%3E%3Cpath d='M7 10.5V16c0 1.5 2.5 3 5 3s5-1.5 5-3v-5.5'/%3E%3C/svg%3E");
  --ico-analisi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20V10'/%3E%3Cpath d='M10 20V4'/%3E%3Cpath d='M16 20v-7'/%3E%3Cpath d='M22 20H2'/%3E%3C/svg%3E");
  --ico-metodo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 3h6l1 4 3.5 2-1 4 1 4-3.5 2-1 4H9l-1-4-3.5-2 1-4-1-4L8 7z'/%3E%3Ccircle cx='12' cy='12' r='2.6'/%3E%3C/svg%3E");
  --ico-studenti: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5.5A2.5 2.5 0 0 1 6.5 3H19v15H6.5A2.5 2.5 0 0 0 4 20.5z'/%3E%3Cpath d='M19 18v3H6.5A2.5 2.5 0 0 1 4 18.5'/%3E%3C/svg%3E");
  --ico-personale: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='7' width='18' height='13' rx='2'/%3E%3Cpath d='M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2'/%3E%3Cpath d='M3 12h18'/%3E%3C/svg%3E");
  --ico-esterno: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 5h5v5'/%3E%3Cpath d='M19 5 10 14'/%3E%3Cpath d='M18 14v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4'/%3E%3C/svg%3E");
  --ico-cerca: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M20 20l-4.2-4.2'/%3E%3C/svg%3E");
  --ico-su: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 19V5'/%3E%3Cpath d='m5 12 7-7 7 7'/%3E%3C/svg%3E");

  --testa:59px;  /* altezza della testata, vedi header.sito */
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:4.5rem}
body{margin:0;background:var(--bg);color:var(--ink);
     font-family:var(--f);font-size:17px;line-height:1.7;font-weight:400;
     font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
.w{max-width:var(--w);margin:0 auto;padding:0 1.5rem}
.prosa{max-width:var(--prosa)}
p+.prosa,.prosa+p{margin-top:0}

h1,h2,h3{margin:0;font-weight:560;line-height:1.15;font-variation-settings:"opsz" 32}
h1{font-size:clamp(2.3rem,5.4vw,3.55rem);letter-spacing:-.038em;font-weight:540}
h2{font-size:1.5rem;letter-spacing:-.026em;margin:var(--s5) 0 var(--s2);
   max-width:26ch;text-wrap:balance}
h3{font-size:1.1rem;letter-spacing:-.014em;margin:var(--s4) 0 var(--s1)}
p{margin:0 0 var(--s2)}
a{color:inherit;text-decoration:underline;text-decoration-color:var(--line-2);
  text-underline-offset:.22em;text-decoration-thickness:1px}
a:hover{text-decoration-color:var(--ink)}
small,.meta{font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.eyebrow{font-size:11.5px;font-weight:560;letter-spacing:.11em;text-transform:uppercase;
         color:var(--ink-3);margin:0 0 .9rem}

/* ---------- testata: una riga, niente cornici ---------- */
/* L'altezza della testata e' una variabile perche' qualcun altro deve
   sapere dove finisce: il grafico della storia si fissa sotto di lei, e
   senza questo numero la prima riga del muro le scorreva dietro. I tre
   valori sono i tre modi in cui la testata si dispone: una riga sola,
   logo e menu su due righe, menu che scorre. Misurati, non stimati; e
   storia.js li corregge al pixel dove puo'. */
header.sito{border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:20}
header.sito .w{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;
               min-height:58px;flex-wrap:wrap}
.logo{font-size:14.5px;font-weight:560;letter-spacing:-.015em;text-decoration:none}
nav.main{display:flex;font-size:14px}
nav.main ul{list-style:none;margin:0;padding:0}
nav.main>ul{display:flex;gap:1.4rem}
nav.main>ul>li{position:relative;display:flex;align-items:center;min-height:58px}
nav.main a{color:var(--ink-2);text-decoration:none}
nav.main a:hover{color:var(--ink)}
/* La tendina: si apre al passaggio e quando un suo link ha il fuoco (tastiera),
   senza script. Il titolo di ogni gruppo resta un link vero alla pagina-indice:
   su un telefono e' quello che si tocca, e l'indice elenca le stesse voci. */
nav.main>ul>li>ul{display:none;position:absolute;top:100%;left:-.75rem;min-width:16rem;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:.45rem;
  box-shadow:0 12px 32px rgba(16,17,19,.09);z-index:30}
nav.main>ul>li:hover>ul,nav.main>ul>li:focus-within>ul{display:block}
nav.main>ul>li>ul a{display:block;padding:.42rem .75rem;border-radius:6px;white-space:nowrap;font-size:13.5px}
nav.main>ul>li>ul a:hover,nav.main>ul>li>ul a:focus-visible{background:var(--surface-2);color:var(--ink)}
nav.main>ul>li>ul li.primo a{font-weight:600;color:var(--ink)}
nav.main>ul>li>ul li.primo{border-bottom:1px solid var(--line);margin-bottom:.25rem;padding-bottom:.25rem}

/* ---------- hero ---------- */
.hero{padding:var(--s6) 0 var(--s5);border-bottom:1px solid var(--line)}
.hero h1{max-width:17.5ch;text-wrap:balance}
.hero .occhiello{color:var(--ink-2);font-size:1.1rem;line-height:1.6;max-width:44ch;
  margin:var(--s3) 0 var(--s4)}
.cerca{display:flex;max-width:31rem;border:1px solid var(--line-2);border-radius:8px;
       background:var(--surface);overflow:hidden}
.cerca:focus-within{border-color:var(--ink)}
.cerca input{flex:1;border:0;padding:.8rem .95rem;font:15px var(--f);background:transparent;
             color:var(--ink);outline:none}
.cerca input::placeholder{color:var(--ink-3)}
.cerca button{border:0;background:var(--ink);color:var(--bg);padding:0 1.2rem;
              font:560 13.5px var(--f);cursor:pointer}

.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:var(--s4);
     margin-top:var(--s5);max-width:50rem}
.kpi b{display:block;font-size:2.45rem;font-weight:560;letter-spacing:-.04em;line-height:1;
       font-variation-settings:"opsz" 32}
.kpi span{display:block;font-size:12.5px;line-height:1.45;color:var(--ink-2);margin-top:.55rem}

/* ---------- card: separatori, non scatole ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));
       gap:1px;background:transparent;margin:var(--s3) 0}
.card{display:block;background:var(--bg);padding:1.25rem 1.3rem 1.4rem;text-decoration:none;
      box-shadow:0 0 0 1px var(--line);transition:background .12s}
.card:hover{background:var(--surface-2)}
.card b{display:block;margin-bottom:.35rem}
.card b{display:block;font-size:1rem;font-weight:560;letter-spacing:-.014em;
        line-height:1.35;margin-bottom:.4rem}
.card small{display:block;color:var(--ink-2)}

/* ---------- stato: il colore vive nel pallino, il testo resta scuro ---------- */
.badge{display:inline-flex;align-items:center;gap:.45rem;font-size:13px;font-weight:450;
       color:var(--ink);white-space:nowrap;line-height:1.3}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;flex:none;background:currentColor}
.b-ok::before{background:var(--ok)} .b-cond::before{background:var(--cond)}
.b-no::before{background:var(--no)} .b-obb::before{background:var(--obb)}
.b-nd{color:var(--ink-3)} .b-nd::before{background:transparent;box-shadow:inset 0 0 0 1px var(--nd)}
.prova{display:inline-flex;align-items:center;font-size:12.5px;color:var(--ink-2)}
.prove{display:flex;gap:1.1rem;flex-wrap:wrap;margin:0}

/* ---------- scheda ---------- */
.intestazione{padding:3rem 0 1.8rem;border-bottom:1px solid var(--line)}
.riepilogo{margin:2.2rem 0 .5rem;border-top:1px solid var(--line)}
.riepilogo>p{margin:0;padding:1rem 0 .6rem;font-size:11.5px;font-weight:560;letter-spacing:.11em;
             text-transform:uppercase;color:var(--ink-3)}
.riepilogo a{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;
             padding:.72rem 0;border-top:1px solid var(--line);text-decoration:none;font-size:14.5px}
.riepilogo a:hover{color:var(--ink-2)}
.riepilogo a>span:first-child{max-width:34ch}
.qa{border-top:1px solid var(--line);padding:2.2rem 0 .6rem}
.qa h3{margin:0 0 .75rem;max-width:26ch;text-wrap:balance}
.qa .risp{margin:0 0 .9rem}
.qa .risp .badge{font-size:14.5px;font-weight:500}
.fonte{margin:1.1rem 0 1.4rem;padding-left:1.1rem;border-left:2px solid var(--line-2);max-width:42rem}
.fonte p{margin:0 0 .45rem;font-size:15px;line-height:1.62;color:var(--ink-2)}
.fonte .meta{font-size:12.5px;color:var(--ink-3);margin:0}

/* ---------- tabelle: solo filetti ---------- */
/* ---------- tabelle ----------
   Tre cose le rendono leggibili quando le righe sono quaranta: l'intestazione
   che resta appesa in alto mentre si scorre, la prima colonna che resta ferma
   quando si scorre in orizzontale, e una riga evidenziata sotto il puntatore
   che attraversa tutta la larghezza. */
.scroll{overflow:auto;max-height:78vh;margin:var(--s3) 0;
  border:1px solid var(--line);border-radius:10px;background:var(--bg);
  /* ombra che compare solo quando c'e' ancora tabella fuori dallo schermo */
  background-image:linear-gradient(to right,var(--bg) 30%,rgba(253,253,252,0)),
    linear-gradient(to right,rgba(253,253,252,0),var(--bg) 70%),
    radial-gradient(farthest-side at 0 50%,rgba(16,17,19,.10),rgba(16,17,19,0)),
    radial-gradient(farthest-side at 100% 50%,rgba(16,17,19,.10),rgba(16,17,19,0));
  background-position:0 0,100% 0,0 0,100% 0;
  background-repeat:no-repeat;background-size:40px 100%,40px 100%,14px 100%,14px 100%;
  background-attachment:local,local,scroll,scroll}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:14.5px;line-height:1.45}
th,td{text-align:left;padding:.72rem 1.1rem;border-bottom:1px solid var(--line);
      vertical-align:middle;background:inherit}
thead th{position:sticky;top:0;z-index:3;background:var(--bg);
  font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-2);white-space:nowrap;padding-top:.8rem;padding-bottom:.8rem;
  border-bottom:1px solid var(--line-2);box-shadow:0 1px 0 var(--line-2)}
tbody tr:last-child td{border-bottom:0}
tbody tr{background:var(--bg)}
tbody tr:nth-child(even){background:#faf9f7}
tbody tr:hover{background:var(--surface-2)}
th:first-child,td:first-child{position:sticky;left:0;z-index:2;min-width:15rem;
  font-weight:500;box-shadow:1px 0 0 var(--line)}
thead th:first-child{z-index:4}
td a{text-decoration:none}
td a:hover{text-decoration:underline;text-decoration-color:var(--line-2)}
caption{caption-side:top;text-align:left;font-size:13.5px;color:var(--ink-2);
  padding:0 0 .7rem}
td a:hover{text-decoration:underline}
td .meta{font-size:12.5px;color:var(--ink-3)}

/* ---------- mappa ---------- */
/* ---------- copertura per regione ----------
   La quota conta piu' del numero: cinque atenei su quindici sono pochi, uno
   su uno e' tutto. Il colore porta la quota, il numero porta i conti. */
.mappa{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;
  max-width:27rem;margin:var(--s3) 0}
.mappa>span{aspect-ratio:1;border-radius:5px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:1px;background:var(--surface-2);
  color:var(--ink-3);transition:transform .12s}
.mappa>span:hover{transform:scale(1.08)}
.mappa .vuota{background:transparent}
.mappa i{font-style:normal;font-size:9.5px;font-weight:600;letter-spacing:.02em;
  text-transform:uppercase;opacity:.85}
.mappa em{font-style:normal;font-size:12px;font-weight:650;line-height:1;
  font-variant-numeric:tabular-nums}
.mappa em span{font-weight:450;opacity:.62;font-size:10px}
.mappa .q0{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line-2)}
.mappa .q1{background:color-mix(in srgb,var(--c1) 22%,#fff);color:#1d4470}
.mappa .q2{background:color-mix(in srgb,var(--c1) 45%,#fff);color:#13314f}
.mappa .q3{background:color-mix(in srgb,var(--c1) 72%,#fff);color:#fff}
.mappa .q4{background:var(--c1);color:#fff}
.legenda{display:flex;gap:.5rem 1.2rem;flex-wrap:wrap;align-items:center;
  font-size:12.5px;color:var(--ink-2)}
.legenda .et{color:var(--ink-3)}
.legenda>span{display:inline-flex;align-items:center;gap:.4rem}
.legenda i{display:inline-block;width:11px;height:11px;border-radius:3px;flex:none;
  background:var(--surface-2)}
.legenda .q0{box-shadow:inset 0 0 0 1px var(--line-2)}
.legenda .q1{background:color-mix(in srgb,var(--c1) 22%,#fff)}
.legenda .q2{background:color-mix(in srgb,var(--c1) 45%,#fff)}
.legenda .q3{background:color-mix(in srgb,var(--c1) 72%,#fff)}
.legenda .q4{background:var(--c1)}

/* ---------- feed ---------- */
.feed{border-top:1px solid var(--line);margin-top:1.3rem}
.feed div{display:grid;grid-template-columns:7.5rem 1fr;gap:1.5rem;padding:1.05rem 0;
          border-bottom:1px solid var(--line);align-items:baseline}
.feed time{font-size:12.5px;color:var(--ink-3)}
.feed b{font-size:14.5px;font-weight:500;letter-spacing:-.01em}
.feed p{margin:.2rem 0 0;font-size:13.5px;color:var(--ink-2);line-height:1.55}

.nota{border-top:1px solid var(--line);padding-top:1.6rem;margin:3rem 0 0}
.nota p:last-child{margin:0}
footer{margin-top:4.5rem;border-top:1px solid var(--line)}
footer .w{padding:2.4rem 1.5rem 3.2rem;display:grid;
          grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:2rem}
footer h4{font-size:11px;font-weight:560;letter-spacing:.11em;text-transform:uppercase;
          color:var(--ink-3);margin:0 0 .8rem}
footer ul{list-style:none;margin:0;padding:0;font-size:13.5px;line-height:1.95}
footer a{color:var(--ink-2);text-decoration:none}
footer a:hover{color:var(--ink)}

@media(max-width:680px){
  body{font-size:16px}
  .hero{padding:3rem 0 2.2rem} .kpi{gap:1.4rem} .kpi b{font-size:1.7rem}
  .feed div{grid-template-columns:1fr;gap:.15rem}
  .riepilogo a{flex-direction:column;gap:.35rem}
  td:first-child{min-width:11rem}
}


/* ---------- heatmap: righe = atenei, colonne = domande ----------
   Celle a altezza fissa e larghezza elastica: cresce verso il basso quando
   gli atenei aumentano, invece di allargarsi all'infinito.
   Codifica secondaria a texture sulle due tinte piu' vicine in visione tritanope. */
.quadro{padding:4.4rem 0 4rem;background:var(--surface-2);border-bottom:1px solid var(--line)}
.legenda-m{display:flex;align-items:center;gap:.45rem 1.5rem;flex-wrap:wrap;font-size:12.5px;
           color:var(--ink-2);margin:0 0 1.4rem}
.legenda-m span{display:inline-flex;align-items:center;gap:.45rem}
.mk{width:11px;height:11px;border-radius:2.5px;display:inline-block;flex:none}
/* barra di copertura: la lunghezza e' il dato, il numero le sta accanto.
   Una riga a zero resta visibile come binario vuoto, che e' il punto. */
.barra{position:relative;height:9px;min-width:6rem;border-radius:5px;
  background:var(--line-2);overflow:hidden}
.barra>span{display:block;height:100%;border-radius:5px;background:var(--c1)}

.scroll-m{overflow-x:auto;padding-bottom:.3rem}
.heat{display:grid;grid-template-columns:15.5rem repeat(var(--n),minmax(3.1rem,1fr));
      gap:2px;min-width:40rem}
.hh{font-size:10.5px;line-height:1.25;color:var(--ink-3);align-self:end;padding:0 .2rem .5rem 0;
    word-break:normal;overflow-wrap:anywhere}
.hr{font-size:13px;color:var(--ink);align-self:center;padding-right:.9rem;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis;text-decoration:none;max-width:11rem}
a.hr:hover{text-decoration:underline}
/* Con dieci colonne seguire una riga a occhio e' faticoso. Ogni riga ha un
   contenitore in display:contents - partecipa alla griglia come se non ci
   fosse, ma da' un appiglio per l'hover. */
.hrow{display:contents}
.heat:has(.hrow:hover) .hc{opacity:.38}
.heat .hrow:hover .hc{opacity:1}
.heat:has(.hrow:hover) .hr{color:var(--ink-3)}
.heat .hrow:hover .hr{color:var(--ink);font-weight:520}
.hc{height:26px;border-radius:3px;display:block;background:var(--nd);
    transition:outline-color .1s ease;outline:2px solid transparent;outline-offset:1px}
.hc:hover{outline-color:var(--ink);position:relative;z-index:2}
.hc.b-ok{background:var(--c1)}
.hc.b-cond{background:var(--c2)}
.hc.b-no{background:var(--c3);background-image:repeating-linear-gradient(45deg,
  rgba(255,255,255,.42) 0 2px,transparent 2px 5px)}
.hc.b-obb{background:var(--c4);background-image:repeating-linear-gradient(135deg,
  rgba(255,255,255,.42) 0 2px,transparent 2px 5px)}
.hc.b-nd{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}
.mk.b-ok{background:var(--c1)} .mk.b-cond{background:var(--c2)}
.mk.b-no{background:var(--c3);background-image:repeating-linear-gradient(45deg,
  rgba(255,255,255,.42) 0 2px,transparent 2px 5px)}
.mk.b-obb{background:var(--c4);background-image:repeating-linear-gradient(135deg,
  rgba(255,255,255,.42) 0 2px,transparent 2px 5px)}
.mk.b-nd{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}

/* ---------- barra di composizione ---------- */
.comp{display:flex;gap:2px;height:34px;margin:1.4rem 0 .7rem;border-radius:4px;overflow:hidden}
.comp span{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;
           color:#fff;min-width:2px;position:relative}
.comp .s-ok{background:var(--c1)} .comp .s-cond{background:var(--c2)}
.comp .s-no{background:var(--c3);background-image:repeating-linear-gradient(45deg,
  rgba(255,255,255,.42) 0 2px,transparent 2px 5px)}
.comp .s-obb{background:var(--c4);background-image:repeating-linear-gradient(135deg,
  rgba(255,255,255,.42) 0 2px,transparent 2px 5px)}
.comp .s-nd{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-2)}
.comp-leg{display:flex;gap:.4rem 1.4rem;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2);margin:0 0 1.8rem}
.comp-leg span{display:inline-flex;align-items:center;gap:.45rem}

/* ---------- grafico cumulativo ---------- */
.grafico{margin:1.6rem 0 .6rem}
.grafico figcaption{margin-top:.7rem;max-width:34rem}
.grafico svg{width:100%;height:auto;display:block;overflow:visible}
.grafico .asse{stroke:var(--line-2);stroke-width:1}
.grafico .griglia{stroke:var(--line);stroke-width:1}
.grafico .linea{fill:none;stroke:var(--c1);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.grafico .area{fill:var(--c1);opacity:.09}
.grafico .pto{fill:var(--c1);stroke:var(--surface);stroke-width:2}
.grafico text{font-size:11px;fill:var(--ink-3)}
.grafico .valore{font-size:12px;font-weight:560;fill:var(--ink)}

/* ---------- ingresso: discreto, disattivabile ---------- */
@media(prefers-reduced-motion:no-preference){
  .hero>.w>*{animation:su .62s cubic-bezier(.22,.68,.36,1) both}
  .hero>.w>*:nth-child(2){animation-delay:.06s}
  .hero>.w>*:nth-child(3){animation-delay:.12s}
  .hero>.w>*:nth-child(4){animation-delay:.18s}
  @keyframes su{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
}

/* ---------- chiusura: il nome del progetto, in grande ---------- */
.firma{border-top:1px solid var(--line);padding:3rem 0 1rem;overflow:hidden}
.firma p{font-size:clamp(1.8rem,6.5vw,3.6rem);font-weight:540;letter-spacing:-.045em;
         line-height:1.05;margin:0;color:#d2cfc7;text-wrap:balance;max-width:22ch}
@media(max-width:680px){
  .quadro{padding:3rem 0 2.6rem}
  .heat{grid-template-columns:9rem repeat(var(--n),minmax(2.6rem,1fr));min-width:34rem}
  .hr{font-size:12px;max-width:9rem}
}

/* Se insegni: una citazione per caso, l'ateneo in testa e la fonte in coda */
.casi{list-style:none;padding:0;margin:0 0 2.4rem}
.casi li{border-left:3px solid var(--line-2);padding:.1rem 0 .1rem 1.1rem;margin:0 0 1.5rem}
.casi li>a{font-size:.95rem;text-decoration:none}
.casi blockquote{margin:.45rem 0 .35rem;font-size:1.02rem;line-height:1.55;color:var(--ink)}
.casi small a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--line-2)}

/* titolo presente per chi naviga con lo screen reader e per la struttura del
   documento, ma senza raddoppiare l'occhiello gia' visibile */
.sr-h{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---- Il muro: un quadrato per ateneo ---- */
.muro{margin:0 0 2.6rem;max-width:44rem}
.muro svg{width:100%;height:auto;display:block}
.muro .q rect{transition:opacity .12s,transform .12s;transform-origin:center}
.muro .q:hover rect{opacity:.7}
.muro .pieno rect{fill:var(--c1)}
.muro .mezzo rect{fill:var(--c1);opacity:.4}
.muro .vuoto rect{fill:var(--surface-2);stroke:var(--line-2);stroke-width:1}
.muro-leg{display:flex;flex-wrap:wrap;gap:.35rem 1.4rem;margin:0 0 1rem;
  font-size:.85rem;color:var(--ink-2)}
.muro-leg span{display:inline-flex;align-items:center;gap:.45rem}
.muro-leg i{width:13px;height:13px;border-radius:3px;flex:none}
.muro-leg .q-pieno{background:var(--c1)}
.muro-leg .q-mezzo{background:var(--c1);opacity:.42}
.muro-leg .q-vuoto{border:1.2px solid var(--line-2)}
figcaption{font-size:.85rem;color:var(--ink-2);margin-top:.8rem;max-width:var(--prosa)}

/* ---- Il flusso: una domanda, piu' risposte ---- */
.flusso{margin:0 0 2.6rem;max-width:42rem}
.flusso svg{width:100%;height:auto;display:block}
.flusso .dom{font-size:15.5px;font-weight:650;fill:var(--ink)}
.flusso .arco{fill:none;stroke:var(--line-2);stroke-width:1.3}
.flusso .ramo rect{fill:var(--nd)}
.flusso .ramo .n{font-size:15px;font-weight:700;fill:var(--ink)}
.flusso .ramo .et{font-size:12.5px;fill:var(--ink-2)}
.flusso .r-cond rect{fill:var(--c2)}
.flusso .r-no rect{fill:var(--c3)}
.flusso .r-doc rect{fill:var(--c4)}
.flusso .r-si rect{fill:var(--c1)}
.flusso .r-nd rect{fill:var(--nd)}

/* ---- Le colonne per anno ---- */
.anni{margin:0 0 2.6rem;max-width:38rem}
.anni svg{width:100%;height:auto;display:block}
.anni .col rect{fill:var(--c1)}
.anni .col:last-child rect{fill:var(--c1);opacity:.55}
.anni .v{font-size:13px;font-weight:700;fill:var(--ink);text-anchor:middle}
.anni .a{font-size:11.5px;fill:var(--ink-2);text-anchor:middle}

/* Scarica il PDF: un solo bottone in tutto il sito, e sta dove serve */
.scarica{margin:1.6rem 0 2.2rem;display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
a.pdf{display:inline-flex;align-items:center;gap:.5rem;background:var(--ink);color:var(--bg);
  padding:.62rem 1.05rem;border-radius:7px;font-size:.93rem;font-weight:550;
  text-decoration:none;transition:opacity .12s}
a.pdf:hover{opacity:.82}
a.pdf::before{content:"";width:15px;height:15px;flex:none;background:currentColor;
  -webkit-mask:var(--ico-pdf) center/contain no-repeat;mask:var(--ico-pdf) center/contain no-repeat}

/* Icone nel menu: aiutano a ritrovare la voce a colpo d'occhio, non
   sostituiscono la parola. Sotto i 900px restano solo le parole, perche'
   icona + testo su due righe occuperebbe piu' spazio di quanto faccia
   risparmiare. */
nav.main a.i{display:inline-flex;align-items:center;gap:.42rem}
nav.main a.i::before{content:"";width:15px;height:15px;flex:none;
  background:currentColor;opacity:.62;
  -webkit-mask-size:contain;mask-size:contain;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center}
nav.main a.i:hover::before,nav.main a.i[aria-current]::before{opacity:1}
.i-atenei::before {-webkit-mask-image:var(--ico-atenei); mask-image:var(--ico-atenei)}
.i-domande::before{-webkit-mask-image:var(--ico-domande);mask-image:var(--ico-domande)}
.i-studenti::before{-webkit-mask-image:var(--ico-studenti);mask-image:var(--ico-studenti)}
.i-personale::before{-webkit-mask-image:var(--ico-personale);mask-image:var(--ico-personale)}
.i-docenti::before{-webkit-mask-image:var(--ico-docenti);mask-image:var(--ico-docenti)}
.i-analisi::before{-webkit-mask-image:var(--ico-analisi);mask-image:var(--ico-analisi)}
.i-metodo::before {-webkit-mask-image:var(--ico-metodo); mask-image:var(--ico-metodo)}
@media (max-width:900px){nav.main a.i::before{display:none}}

/* ---- La sintesi: nove domande, la forma della risposta italiana ---- */
.sintesi{margin:1.6rem 0 1rem;max-width:46rem}
.sr{display:grid;grid-template-columns:11.5rem 1fr 5.5rem;align-items:center;gap:1rem;
  padding:.5rem 0;text-decoration:none;color:inherit;border-top:1px solid var(--line)}
.sr:first-child{border-top:0}
.sr:hover .sl{color:var(--ink)}
.sl{font-size:13.5px;color:var(--ink-2);line-height:1.3}
.sb{display:flex;height:22px;border-radius:4px;overflow:hidden;background:var(--surface-2)}
.sg{flex:var(--f) 1 0;min-width:2px;display:flex;align-items:center;justify-content:center;
  transition:opacity .12s}
.sr:hover .sg{opacity:.85}
.sg i{font-style:normal;font-size:11px;font-weight:650;color:#fff;line-height:1}
.sg.b-ok{background:var(--c1)} .sg.b-cond{background:var(--c2)}
.sg.b-no{background:var(--c3)} .sg.b-obb{background:var(--c4)}
.sg.b-nd{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line)}
.sg.b-nd i{color:var(--ink-3)}
.sg.b-no{background-image:repeating-linear-gradient(45deg,
  rgba(255,255,255,.28) 0 3px,transparent 3px 6px)}
.sg.b-obb{background-image:repeating-linear-gradient(135deg,
  rgba(255,255,255,.28) 0 3px,transparent 3px 6px)}
.sv{font-size:12.5px;color:var(--ink-3);text-align:right;white-space:nowrap}
@media (max-width:620px){
  .sr{grid-template-columns:1fr;gap:.3rem;padding:.7rem 0}
  .sv{text-align:left}
}

/* "vai oltre": un link che si vede che porta da qualche parte */
a.oltre{display:inline-flex;align-items:center;gap:.4rem;font-weight:500;text-decoration:none;
  border-bottom:1px solid var(--line-2);padding-bottom:1px}
a.oltre::after{content:"";width:14px;height:14px;background:currentColor;
  -webkit-mask:var(--ico-esterno) center/contain no-repeat;
  mask:var(--ico-esterno) center/contain no-repeat;opacity:.55}
a.oltre:hover{border-color:var(--ink-3)}
a.oltre:hover::after{opacity:1}

/* ---------- elenchi ----------
   Il pallino di default cade fuori dalla colonna di testo e le righe si
   toccano: a tre voci non si nota, a otto diventa un blocco. Qui il segno sta
   dentro il flusso, e ogni voce ha aria sopra e sotto. */
ul.prosa,ol.prosa,.qa ul,.nota ul{margin:var(--s2) 0 var(--s3);padding:0;list-style:none}
ul.prosa>li,.qa ul>li,.nota ul>li{position:relative;padding-left:1.35rem;margin:0 0 .62rem}
ul.prosa>li::before,.qa ul>li::before,.nota ul>li::before{content:"";position:absolute;
  left:.28rem;top:.68em;width:5px;height:5px;border-radius:50%;background:var(--ink-3)}
ol.prosa{counter-reset:n}
ol.prosa>li{position:relative;padding-left:1.9rem;margin:0 0 .62rem;counter-increment:n}
ol.prosa>li::before{content:counter(n);position:absolute;left:0;top:.06em;
  font-size:12.5px;font-weight:650;color:var(--ink-3);font-variant-numeric:tabular-nums}
ul.prosa>li>strong:first-child{font-weight:600}

/* elenco "numeri": quando ogni voce comincia con una cifra che conta */
ul.cifre{list-style:none;padding:0;margin:var(--s2) 0 var(--s3)}
ul.cifre>li{display:grid;grid-template-columns:3.2rem 1fr;gap:.9rem;align-items:baseline;
  padding:.55rem 0;border-top:1px solid var(--line)}
ul.cifre>li:first-child{border-top:0}
ul.cifre>li>strong{font-size:1.35rem;font-weight:600;letter-spacing:-.02em;
  text-align:right;line-height:1.1}

/* legenda compatta sopra la sintesi */
.legenda-s{display:flex;flex-wrap:wrap;gap:.4rem 1.3rem;margin:0 0 var(--s2);
  font-size:12.5px;color:var(--ink-2)}
.legenda-s span{display:inline-flex;align-items:center;gap:.42rem}
.legenda-s i.mk{width:11px;height:11px;border-radius:3px;flex:none;display:inline-block}
.legenda-s .b-ok{background:var(--c1)} .legenda-s .b-cond{background:var(--c2)}
.legenda-s .b-no{background:var(--c3);background-image:repeating-linear-gradient(45deg,
  rgba(255,255,255,.3) 0 3px,transparent 3px 6px)}
.legenda-s .b-obb{background:var(--c4);background-image:repeating-linear-gradient(135deg,
  rgba(255,255,255,.3) 0 3px,transparent 3px 6px)}
.legenda-s .b-nd{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line-2)}

/* ---- Se stai studiando ---- */
ol.elementi{list-style:none;counter-reset:e;padding:0;margin:var(--s3) 0 var(--s4)}
ol.elementi>li{counter-increment:e;position:relative;padding:0 0 var(--s3) 2.6rem;
  border-top:1px solid var(--line);padding-top:var(--s3)}
ol.elementi>li:first-child{border-top:0;padding-top:0}
ol.elementi>li::before{content:counter(e);position:absolute;left:0;top:var(--s3);
  width:1.7rem;height:1.7rem;border-radius:50%;background:var(--surface-2);
  display:flex;align-items:center;justify-content:center;font-size:12.5px;
  font-weight:650;color:var(--ink-2)}
ol.elementi>li:first-child::before{top:0}
ol.elementi>li>strong{display:block;font-size:1.02rem;font-weight:600;margin:0 0 .3rem}
ol.elementi p{margin:0 0 .6rem}
blockquote{margin:0;padding-left:1rem;border-left:2px solid var(--line-2);
  font-size:14.5px;line-height:1.6;color:var(--ink-2)}
blockquote cite{display:block;font-style:normal;font-size:12.5px;margin-top:.4rem;
  color:var(--ink-3)}
blockquote cite a{text-decoration:none;border-bottom:1px solid var(--line-2)}
.esempio{background:var(--surface-2);border-left:3px solid var(--c1);border-radius:0 8px 8px 0;
  padding:1.1rem 1.2rem;color:var(--ink);font-size:15px;max-width:42rem}

/* Su telefono le sei voci non ci stanno: 391px di menu in 375 di schermo.
   Invece di accorciare le parole, il menu scorre - con una sfumatura sul
   bordo destro che dice che c'e' altro. */
@media (max-width:819px){:root{--testa:104px}}   /* logo e menu su due righe */
@media (max-width:640px){:root{--testa:84px}}    /* il menu scorre, piu' compatto */
@media (max-width:640px){
  header.sito .w{flex-wrap:wrap;padding-bottom:.2rem}
  nav.main{width:100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    padding:.1rem 1.5rem .55rem;margin:0 -1.5rem;
    -webkit-mask-image:linear-gradient(to right,#000 0 88%,transparent);
    mask-image:linear-gradient(to right,#000 0 88%,transparent)}
  nav.main::-webkit-scrollbar{display:none}
  nav.main>ul{gap:1.15rem}
  nav.main>ul>li{min-height:0}
  nav.main>ul>li>ul{display:none!important}
  nav.main a{white-space:nowrap}
}

/* La nota redazionale e' l'unico punto della scheda in cui parliamo noi.
   Deve distinguersi dalla citazione senza pesare piu' di lei: stessa misura
   di riga del testo, un'etichetta che dice di chi sono le parole. */
.redazionale{max-width:var(--prosa);margin:.9rem 0 0;font-size:13.5px;line-height:1.6;
  color:var(--ink-2)}
.redazionale span{display:inline-block;margin-right:.5rem;padding:.08rem .42rem;
  border:1px solid var(--line-2);border-radius:4px;font-size:10.5px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);vertical-align:1px}

/* ---- Il confronto a due: due atenei, la stessa domanda, risposte opposte ---- */
.contro{display:grid;grid-template-columns:1fr auto 1fr;gap:1.4rem;align-items:start;
  margin:var(--s3) 0 var(--s4)}
.contro .lato{min-width:0}
.contro .chi{margin:0 0 .5rem;font-size:14.5px;font-weight:550}
.contro .chi a{text-decoration:none;border-bottom:1px solid var(--line-2)}
.contro .badge{margin:0 0 .7rem}
.contro blockquote{margin:0;padding:.9rem 1rem;background:var(--surface-2);border-left:0;
  border-radius:8px;font-size:14px;line-height:1.58;color:var(--ink)}
.contro blockquote cite{margin-top:.6rem}
.vs{align-self:center;font-size:11px;font-weight:600;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ink-3);writing-mode:vertical-rl;
  padding:.5rem .1rem;border-left:1px solid var(--line);border-right:1px solid var(--line)}
@media (max-width:760px){
  .contro{grid-template-columns:1fr;gap:.9rem}
  .vs{writing-mode:horizontal-tb;border:0;border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);padding:.45rem 0;text-align:center}
}

/* la matrice in tabella: chiusa di default, e' la versione che si legge su telefono */
.tab-quadro{margin:var(--s3) 0}
.tab-quadro summary{cursor:pointer;color:var(--ink-2);font-size:14px}
details summary{cursor:pointer}

/* --- grafici: regole condivise da visual.py --- */
.lt{margin:0 0 2.6rem;max-width:42rem}
.lt svg{width:100%;height:auto;display:block;overflow:visible}
.lt .pt rect{fill:var(--c1)}
.lt .asse{stroke:var(--line-2);stroke-width:1}
.lt .a{font-size:12px;fill:var(--ink-2);text-anchor:middle}
.lt .v{font-size:14px;font-weight:700;fill:var(--ink);text-anchor:middle}
.lt .ev{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 3}
.lt .evt{font-size:11px;fill:var(--ink-3)}
.muro .gr{font-size:12px;font-weight:600;fill:var(--ink-2)}
.tess{margin:0 0 2.6rem;max-width:30rem}
.tess svg{width:100%;height:auto;display:block;overflow:visible}
.tess .tile{fill:var(--surface-2)}
.tess .nome{font-size:8.5px;fill:var(--ink-2)}
.tess .num{font-size:10.5px;font-weight:700;fill:var(--ink)}
.tess .pieno rect{fill:var(--c1)}
.tess .mezzo rect{fill:var(--c1);opacity:.4}
.tess .vuoto rect{fill:var(--surface);stroke:var(--line-2);stroke-width:.8}
.silenzio{margin:0 0 2.6rem;max-width:44rem}
.silenzio svg{width:100%;height:auto;display:block;overflow:visible}
.silenzio .et{font-size:12.5px;fill:var(--ink)}
.silenzio .et a{fill:var(--ink)}
.silenzio .parla{fill:var(--c1)}
.silenzio .tace{fill:var(--surface-2);stroke:var(--line-2);stroke-width:1}
.silenzio .n{font-size:12px;fill:var(--ink-2)}
.silenzio .n b{font-weight:700;fill:var(--ink)}
.silenzio .cap{font-size:11px;fill:var(--ink-3)}
.fiume{margin:0 0 2.6rem;max-width:52rem}
.fiume svg{width:100%;height:auto;display:block;overflow:visible}
.fiume .nastro{opacity:.38}
.fiume .nastro:hover{opacity:.75}
.fiume .nodo text{font-size:11.5px;fill:var(--ink)}
.fiume .nodo .k{font-weight:700}
.fiume .stadio{font-size:12px;font-weight:600;fill:var(--ink-2)}
.fiume .b-ok{fill:var(--c1)} .fiume .b-cond{fill:var(--c2)} .fiume .b-no{fill:var(--c3)}
.fiume .b-obb{fill:var(--c4)} .fiume .b-nd{fill:var(--nd)}
.fiume .alone{paint-order:stroke;stroke:var(--bg);stroke-width:3px;stroke-linejoin:round}
.matrice{margin:0 0 2.6rem;max-width:40rem}
.matrice svg{width:100%;height:auto;display:block;overflow:visible}
.matrice .riga text{font-size:10.5px;fill:var(--ink)}
.matrice .riga:hover text{font-weight:700}
.matrice .col{font-size:10.5px;fill:var(--ink-2)}
.matrice .b-ok{fill:var(--c1)} .matrice .b-cond{fill:var(--c2)} .matrice .b-no{fill:var(--c3)}
.matrice .b-obb{fill:var(--c4)} .matrice .b-nd{fill:var(--line-2)}
.matrice .griglia{stroke:var(--line);stroke-width:.6}
.matrice .leg text{font-size:11px;fill:var(--ink-2)}
.matrice .tot{font-size:10px;fill:var(--ink-3);text-anchor:middle}
.strum{margin:0 0 2.6rem;max-width:36rem}
.strum svg{width:100%;height:auto;display:block;overflow:visible}
.strum text{font-size:12px;fill:var(--ink)}
.strum .col{fill:var(--ink-2);font-weight:600}
.strum .si{fill:var(--c1)}
.strum .griglia{stroke:var(--line);stroke-width:.6}
.strum .tot{font-size:11px;fill:var(--ink-3);text-anchor:middle}
.silenzio a,.matrice a,.strum a,.tess a,.muro a,.rete a,.prov a,.less a{text-decoration:none}
.matrice .col.ordinabile{cursor:pointer} .matrice .col.attiva{fill:var(--ink);font-weight:700}
.rete{margin:0 0 2.6rem;max-width:46rem}
.rete svg{width:100%;height:auto;display:block;overflow:visible}
.rete .arco{stroke:var(--line-2);fill:none;stroke-linecap:round}
.rete .arco.impianto{stroke:var(--c1);opacity:.55}
.rete .arco.spento{opacity:.12}
.rete .arco.acceso{stroke:var(--ink);opacity:.9}
.rete .nodo circle{fill:var(--c1);stroke:var(--bg);stroke-width:2}
.rete .nodo.mezzo circle{fill:var(--c1);opacity:.5}
.rete .nodo text{font-size:11px;fill:var(--ink);paint-order:stroke;stroke:var(--bg);stroke-width:3px;stroke-linejoin:round}
.rete .nodo.spento{opacity:.25}
.rete .nodo.acceso text{font-weight:700}
.rete-pannello{border-left:3px solid var(--c1);padding:.6rem 1rem;margin:0 0 1.6rem;background:var(--surface-2);font-size:14px}
.rete-pannello p{margin:.2rem 0}
.rete-pannello .meta{font-size:12.5px}
.comandi{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;align-items:center;margin:0 0 1rem;font-size:14px}
.comandi label{display:inline-flex;gap:.4rem;align-items:center}
.comandi select,.comandi input[type=search]{font:inherit;padding:.3rem .5rem;border:1px solid var(--line-2);border-radius:6px;background:var(--surface);color:var(--ink)}
.comandi .conto{color:var(--ink-2)}
.muro .q.nascosto rect{opacity:.08}
.trovato{border:1px solid var(--line-2);border-radius:10px;padding:1rem 1.2rem;margin:0 0 1.6rem;background:var(--surface)}
.trovato h3{margin:0 0 .3rem}
.trovato .img{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.8rem}
.trovato .img a{font-size:13px}
.trovato img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:6px;display:block}
.avviso-js{font-size:13px;color:var(--ink-3);margin:0 0 1.4rem}
.scarica{margin:.5rem 0 0;font-size:12px;color:var(--ink-3)}

.less{margin:0 0 2.6rem;max-width:46rem}
.less svg{width:100%;height:auto;display:block;overflow:visible}
.less text{font-size:10.5px;fill:var(--ink)}
.less .anno{font-size:11px;font-weight:700;fill:var(--ink-2)}
.less .sep{stroke:var(--line-2);stroke-width:1}
.less .r-vieta{fill:var(--c3)} .less .r-obbliga{fill:var(--c4)} .less .r-consente{fill:var(--c2)} .less .r-raccomanda{fill:var(--c1)}
.less .dens{fill:var(--ink-3);font-size:10px}
.less .leg text{font-size:11px;fill:var(--ink-2)}
.prov{margin:0 0 2.6rem;max-width:46rem}
.prov svg{width:100%;height:auto;display:block;overflow:visible}
.prov text{font-size:10.5px;fill:var(--ink)}
.prov .cit{fill:var(--c1)}
.prov .doc{fill:var(--ink-3)}
.prov .alta{fill:var(--c1)} .prov .media{fill:var(--surface);stroke:var(--c1);stroke-width:1.5}
.prov .n{font-size:10px;fill:var(--ink-2)}
.prov .vecchio{fill:var(--c3)}
.prov .testa{font-size:10.5px;fill:var(--ink-3)}
.storia{display:block;margin-top:1.5rem}
.storia .grafico-fisso{position:sticky;top:var(--testa);z-index:2;background:var(--bg);padding:.5rem 0 .4rem;border-bottom:1px solid var(--line)}
.storia .grafico-fisso .muro svg{max-height:34vh;width:auto;max-width:100%;margin:0 auto}
@media(min-width:56rem){.storia{display:grid;grid-template-columns:minmax(0,11fr) minmax(0,9fr);gap:3rem}
  .storia .grafico-fisso{top:calc(var(--testa) + 1.2rem);align-self:start;border-bottom:0}
  .storia .grafico-fisso .muro svg{max-height:none;width:100%}}
.storia .muro{max-width:100%;margin:0 0 .6rem}
.storia .legenda-storia{font-size:13px;color:var(--ink-2);min-height:1.4em;margin:0}
.storia .legenda-storia i{display:inline-block;width:11px;height:11px;border-radius:2px;margin:0 .35rem 0 .9rem;vertical-align:-1px}
.storia .passo{min-height:62vh;padding:1rem 0;opacity:.4;transition:opacity .3s}
.storia .passo.attivo,.storia.senza-js .passo{opacity:1}
.storia .passo h2{margin-top:0}
.storia .q rect{fill:var(--surface-2);stroke:var(--line-2);stroke-width:1;transition:fill .5s,opacity .5s,stroke .3s}
.storia .q.on rect{fill:var(--c1);stroke:none}
.storia .q.mezzo rect{fill:var(--c1);opacity:.4;stroke:none}
.storia .q.cat-b-ok rect{fill:var(--c1);stroke:none} .storia .q.cat-b-cond rect{fill:var(--c2);stroke:none}
.storia .q.cat-b-no rect{fill:var(--c3);stroke:none} .storia .q.cat-b-obb rect{fill:var(--c4);stroke:none}
.storia .q.cat-b-nd rect{fill:var(--nd);stroke:none}
.storia .q.dim rect{opacity:.12}
.storia .q.evid rect{stroke:var(--ink);stroke-width:2.5;opacity:1}
.storia .q.bordo rect{stroke:var(--ink-2);stroke-width:1.6}
