/* UNICLUB — sistema grafico.
   Tema chiaro predefinito; scuro e «come il dispositivo» a scelta (attributo data-tema su <html>, vedi tema.js). */
:root {
  --sfondo: #f6f7fb;
  --superficie: #ffffff;
  --superficie-2: #f1f3f9;
  --superficie-3: #e8ebf4;
  --testo: #0f172a;
  --testo-2: #56607a;
  --testo-3: #8a93a8;
  --bordo: #e3e7ef;
  --bordo-forte: #cdd3e0;
  --primario: #4338ca;
  --primario-forte: #3730a3;
  --primario-tenue: #eef0ff;
  --primario-testo: #ffffff;
  --accento: #4338ca;
  --ok: #15803d;
  --ok-sfondo: #e7f6ec;
  --attenzione: #a15c07;
  --attenzione-sfondo: #fef5dc;
  --blocco: #b91c1c;
  --blocco-sfondo: #fdecec;
  --ipotesi: #6d28d9;
  --ipotesi-sfondo: #f3eeff;
  --fuoco: #f59e0b;
  --oro: #f59e0b;
  --ev-studio: #e0e7ff; --ev-studio-b: #a5b4fc;
  --ev-ripasso: #ede9fe; --ev-ripasso-b: #c4b5fd;
  --ev-tesi: #fef3c7; --ev-tesi-b: #fcd34d;
  --ev-tirocinio: #dcfce7; --ev-tirocinio-b: #86efac;
  --ev-impegno: #fee2e2; --ev-impegno-b: #fca5a5;
  --ev-flessibile: #f1f5f9; --ev-flessibile-b: #cbd5e1;
  --ev-indisp-2: #fff5f5;
  --raggio: 14px;
  --raggio-piccolo: 10px;
  --ombra: 0 1px 2px rgba(15, 23, 42, .04), 0 2px 10px rgba(15, 23, 42, .05);
  --ombra-alta: 0 10px 30px rgba(15, 23, 42, .12), 0 2px 6px rgba(15, 23, 42, .06);
  --gradiente: linear-gradient(135deg, #4338ca 0%, #0284c7 100%);
  --carattere: "Inter", "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
  --carattere-titoli: "Inter", "Segoe UI Variable Display", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "Cascadia Mono", "SF Mono", Consolas, monospace;
  --veloce: 120ms cubic-bezier(.2, .7, .3, 1);
  --medio: 200ms cubic-bezier(.2, .7, .3, 1);
  color-scheme: light;
}
:root[data-tema="scuro"] {
  --sfondo: #0b1020; --superficie: #121a2e; --superficie-2: #19223c; --superficie-3: #212c4b;
  --testo: #e7eaf3; --testo-2: #a0a9c0; --testo-3: #6f7a95; --bordo: #243052; --bordo-forte: #33416b;
  --primario: #818cf8; --primario-forte: #a5b4fc; --primario-tenue: #1d2150; --primario-testo: #0b1020; --accento: #a5b4fc;
  --ok: #4ade80; --ok-sfondo: #0f2a1c; --attenzione: #fbbf24; --attenzione-sfondo: #2c2310; --blocco: #f87171; --blocco-sfondo: #301418;
  --ipotesi: #c4b5fd; --ipotesi-sfondo: #241a44;
  --ev-studio: #1e2a5a; --ev-studio-b: #3e4d95; --ev-ripasso: #2b2356; --ev-ripasso-b: #4c3f8e; --ev-tesi: #3a2e12; --ev-tesi-b: #6d5520;
  --ev-tirocinio: #12321f; --ev-tirocinio-b: #245c3a; --ev-impegno: #3b1d22; --ev-impegno-b: #6e333c; --ev-flessibile: #1b2338; --ev-flessibile-b: #394566; --ev-indisp-2: #2a161a;
  --ombra: 0 1px 2px rgba(0, 0, 0, .3); --ombra-alta: 0 12px 32px rgba(0, 0, 0, .45);
  color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] {
    --sfondo: #0b1020; --superficie: #121a2e; --superficie-2: #19223c; --superficie-3: #212c4b;
    --testo: #e7eaf3; --testo-2: #a0a9c0; --testo-3: #6f7a95; --bordo: #243052; --bordo-forte: #33416b;
    --primario: #818cf8; --primario-forte: #a5b4fc; --primario-tenue: #1d2150; --primario-testo: #0b1020; --accento: #a5b4fc;
    --ok: #4ade80; --ok-sfondo: #0f2a1c; --attenzione: #fbbf24; --attenzione-sfondo: #2c2310; --blocco: #f87171; --blocco-sfondo: #301418;
    --ipotesi: #c4b5fd; --ipotesi-sfondo: #241a44;
    --ev-studio: #1e2a5a; --ev-studio-b: #3e4d95; --ev-ripasso: #2b2356; --ev-ripasso-b: #4c3f8e; --ev-tesi: #3a2e12; --ev-tesi-b: #6d5520;
    --ev-tirocinio: #12321f; --ev-tirocinio-b: #245c3a; --ev-impegno: #3b1d22; --ev-impegno-b: #6e333c; --ev-flessibile: #1b2338; --ev-flessibile-b: #394566; --ev-indisp-2: #2a161a;
    --ombra: 0 1px 2px rgba(0, 0, 0, .3); --ombra-alta: 0 12px 32px rgba(0, 0, 0, .45);
    color-scheme: dark;
  }
}

* { box-sizing: border-box; }
html { font-size: 16px; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; }
body { margin: 0; font-family: var(--carattere); background: var(--sfondo); color: var(--testo); line-height: 1.55; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-feature-settings: "cv11", "ss01"; }
a { color: var(--accento); text-underline-offset: 2px; }
h1, h2, h3 { font-family: var(--carattere-titoli); color: var(--testo); }
h1 { font-size: 1.75rem; margin: 0 0 .3rem; line-height: 1.2; font-weight: 750; letter-spacing: -.022em; }
h2 { font-size: 1.15rem; margin: 1.6rem 0 .6rem; font-weight: 700; letter-spacing: -.012em; }
h3 { font-size: 1rem; margin: 1rem 0 .4rem; font-weight: 650; }
p { margin: .4rem 0; }
::selection { background: var(--primario-tenue); color: var(--testo); }
:focus-visible { outline: 3px solid var(--fuoco); outline-offset: 2px; border-radius: 6px; }
.salta { position: absolute; left: -999px; top: 0; background: var(--superficie); padding: .5rem 1rem; z-index: 60; }
.salta:focus { left: .5rem; }
.ico { width: 1.25em; height: 1.25em; flex: 0 0 auto; vertical-align: -.25em; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }

/* marchio */
.marchio { display: inline-flex; align-items: center; gap: .6rem; text-decoration: none; color: var(--testo); }
.marchio img { display: block; border-radius: 9px; box-shadow: 0 2px 8px rgba(67, 56, 202, .25); }
.marchio-nome { font-family: var(--carattere-titoli); font-weight: 800; font-size: 1.15rem; letter-spacing: -.02em; }
.marchio-nome b { font-weight: 800; background: var(--gradiente); -webkit-background-clip: text; background-clip: text; color: transparent; }
:root[data-tema="scuro"] .marchio-nome b { background: linear-gradient(135deg, #a5b4fc, #38bdf8); -webkit-background-clip: text; background-clip: text; }

/* guscio */
.guscio { display: grid; grid-template-columns: 264px minmax(0, 1fr); min-height: 100vh; }
.navigazione { background: var(--superficie); border-right: 1px solid var(--bordo); padding: 1.1rem .75rem .9rem; position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column; gap: .4rem; scrollbar-width: thin; }
.marchio-grande { padding: .15rem .6rem 1rem; }
#menu { list-style: none; margin: 0; padding: 0; flex: 1; }
.menu-gruppo { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--testo-3); padding: 1rem .8rem .35rem; }
.menu-gruppo:first-child { padding-top: .2rem; }
#menu a, .voce-piede { display: flex; gap: .7rem; align-items: center; padding: .52rem .8rem; border-radius: 10px; text-decoration: none; color: var(--testo-2); font-size: .93rem; font-weight: 550; transition: background-color var(--veloce), color var(--veloce); }
#menu a .ico, .voce-piede .ico { width: 1.2rem; height: 1.2rem; color: var(--testo-3); transition: color var(--veloce); }
#menu a:hover, .voce-piede:hover { background: var(--superficie-2); color: var(--testo); }
#menu a:hover .ico, .voce-piede:hover .ico { color: var(--testo-2); }
#menu a[aria-current], .voce-piede[aria-current] { background: var(--primario-tenue); color: var(--primario); font-weight: 650; }
#menu a[aria-current] .ico, .voce-piede[aria-current] .ico { color: var(--primario); }
button.voce-piede { border: 0; background: none; font: inherit; font-size: .93rem; width: 100%; text-align: left; cursor: pointer; }
.navigazione-piede { border-top: 1px solid var(--bordo); padding-top: .6rem; display: flex; flex-direction: column; gap: .15rem; }
.scelta-tema { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin: .5rem .3rem 0; padding: 3px; background: var(--superficie-2); border-radius: 10px; }
.scelta-tema button { border: 0; background: transparent; color: var(--testo-3); border-radius: 8px; min-height: 32px; cursor: pointer; display: grid; place-items: center; transition: background-color var(--veloce), color var(--veloce); }
.scelta-tema button:hover { color: var(--testo); }
.scelta-tema button[aria-checked="true"] { background: var(--superficie); color: var(--primario); box-shadow: var(--ombra); }
main { padding: 2rem 2.4rem 6rem; max-width: 1200px; width: 100%; min-width: 0; outline: none; }
main.entra { animation: apparire var(--medio) both; }
@keyframes apparire { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
body.senza-menu .guscio { grid-template-columns: 1fr; }
body.senza-menu main { margin: 0 auto; }
body.pagina-piena main { padding: 0; max-width: none; }
body.senza-menu .navigazione, body.senza-menu .pulsante-rapido, body.senza-menu .barra-mobile, body.senza-menu .barra-basso { display: none; }
.banner-demo { background: var(--attenzione-sfondo); color: var(--attenzione); padding: .5rem 1rem; text-align: center; font-weight: 600; border-bottom: 1px solid var(--attenzione); font-size: .92rem; }
.barra-mobile, .barra-basso, .velo { display: none; }
.icona-pulsante { display: inline-grid; place-items: center; width: 42px; height: 42px; border: 0; border-radius: 12px; background: transparent; color: var(--testo); cursor: pointer; text-decoration: none; transition: background-color var(--veloce); }
.icona-pulsante:hover { background: var(--superficie-2); }
.icona-pulsante .ico { width: 1.4rem; height: 1.4rem; }

@media (max-width: 860px) {
  .guscio { grid-template-columns: 1fr; }
  .barra-mobile { display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 25; height: 56px; padding: 0 .4rem; padding-top: env(safe-area-inset-top); background: color-mix(in srgb, var(--superficie) 88%, transparent); backdrop-filter: saturate(1.6) blur(12px); -webkit-backdrop-filter: saturate(1.6) blur(12px); border-bottom: 1px solid var(--bordo); }
  .navigazione { position: fixed; inset: 0 auto 0 0; width: min(300px, 86vw); height: 100dvh; z-index: 40; transform: translateX(-102%); transition: transform var(--medio); box-shadow: var(--ombra-alta); border-right: 0; }
  body.menu-aperto .navigazione { transform: none; }
  .velo { display: block; position: fixed; inset: 0; background: rgba(8, 12, 24, .45); z-index: 35; opacity: 0; pointer-events: none; transition: opacity var(--medio); }
  body.menu-aperto .velo { opacity: 1; pointer-events: auto; }
  .velo[hidden] { display: block; }
  .barra-basso { display: grid; grid-template-columns: repeat(5, 1fr); align-items: center; position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; padding: .3rem .4rem calc(.3rem + env(safe-area-inset-bottom)); background: color-mix(in srgb, var(--superficie) 92%, transparent); backdrop-filter: saturate(1.6) blur(12px); -webkit-backdrop-filter: saturate(1.6) blur(12px); border-top: 1px solid var(--bordo); }
  .barra-basso a { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: .35rem 0; color: var(--testo-3); text-decoration: none; font-size: .74rem; font-weight: 600; border-radius: 10px; transition: color var(--veloce); }
  .barra-basso a .ico { width: 1.35rem; height: 1.35rem; }
  .barra-basso a[aria-current] { color: var(--primario); }
  .barra-basso-scrivi { justify-self: center; width: 50px; height: 50px; border-radius: 16px; border: 0; background: var(--gradiente); color: #fff; display: grid; place-items: center; box-shadow: 0 6px 16px rgba(67, 56, 202, .35); cursor: pointer; transition: transform var(--veloce); }
  .barra-basso-scrivi:active { transform: scale(.94); }
  .barra-basso-scrivi .ico { width: 1.5rem; height: 1.5rem; }
  .pulsante-rapido { display: none; }
  main { padding: 1.2rem 1rem calc(6.5rem + env(safe-area-inset-bottom)); }
  h1 { font-size: 1.45rem; }
  .avvisi { bottom: calc(5.5rem + env(safe-area-inset-bottom)); }
}

/* scheletro di caricamento */
.scheletro { display: grid; gap: 1rem; }
.scheletro div { height: 96px; border-radius: var(--raggio); background: linear-gradient(90deg, var(--superficie-2) 0%, var(--superficie-3) 50%, var(--superficie-2) 100%); background-size: 200% 100%; animation: luccica 1.2s linear infinite; }
.scheletro div:first-child { height: 44px; width: 45%; }
@keyframes luccica { from { background-position: 200% 0; } to { background-position: -200% 0; } }

/* elementi */
.intestazione { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: .75rem; margin-bottom: 1.2rem; }
.sottotitolo { color: var(--testo-2); margin: 0; }
.riquadro { background: var(--superficie); border: 1px solid var(--bordo); border-radius: var(--raggio); padding: 1.15rem 1.3rem; box-shadow: var(--ombra); margin-bottom: 1rem; }
.riquadro > h2:first-child, .riquadro > h3:first-child { margin-top: 0; }
.riquadro.evidenza { border-left: 4px solid var(--primario); }
.riquadro.attenzione { border-left: 4px solid var(--attenzione); background: var(--attenzione-sfondo); }
.riquadro.blocco { border-left: 4px solid var(--blocco); background: var(--blocco-sfondo); }
.riquadro.ipotesi { border-left: 4px solid var(--ipotesi); }
.griglia { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; }
.griglia > .riquadro:has(table) { grid-column: 1 / -1; }
.griglia-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.griglia-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
@media (max-width: 640px) { .griglia-2, .griglia-3 { grid-template-columns: 1fr; } }

.pulsante { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .45rem; border: 1px solid var(--bordo-forte); background: var(--superficie); color: var(--testo); padding: .5rem 1rem; border-radius: 10px; font: inherit; font-size: .93rem; font-weight: 600; cursor: pointer; text-decoration: none; min-height: 40px; line-height: 1.2;
  transition: background-color var(--veloce), border-color var(--veloce), box-shadow var(--veloce), transform 60ms ease-out, filter var(--veloce); touch-action: manipulation; user-select: none; }
.pulsante:hover { background: var(--superficie-2); border-color: var(--testo-3); }
.pulsante:active { transform: translateY(1px) scale(.985); }
.pulsante.primario { background: var(--primario); border-color: var(--primario); color: var(--primario-testo); box-shadow: 0 1px 2px rgba(67, 56, 202, .25), inset 0 1px 0 rgba(255, 255, 255, .12); }
.pulsante.primario:hover { background: var(--primario-forte); border-color: var(--primario-forte); }
.pulsante.pericolo { color: var(--blocco); border-color: color-mix(in srgb, var(--blocco) 50%, transparent); }
.pulsante.pericolo:hover { background: var(--blocco-sfondo); }
.pulsante.piccolo { padding: .28rem .7rem; min-height: 32px; font-size: .85rem; border-radius: 8px; }
.pulsante[disabled] { opacity: .6; cursor: default; }
.pulsante[aria-busy="true"] { color: transparent !important; pointer-events: none; }
.pulsante[aria-busy="true"]::after { content: ""; position: absolute; inset: 0; margin: auto; width: 1.05em; height: 1.05em; border-radius: 50%; border: 2px solid var(--testo-2); border-right-color: transparent; animation: gira .6s linear infinite; }
.pulsante.primario[aria-busy="true"]::after { border-color: var(--primario-testo); border-right-color: transparent; }
@keyframes gira { to { transform: rotate(360deg); } }
.link { background: none; border: 0; color: var(--accento); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; font: inherit; padding: 0; }
button.link { position: relative; }
button.link::after { content: ""; position: absolute; inset: -12px -6px; }
.azioni { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .85rem; }
.nota { color: var(--testo-2); font-size: .87rem; }
.pastiglia { display: inline-flex; align-items: center; gap: .3rem; padding: .1rem .6rem; border-radius: 999px; font-size: .78rem; font-weight: 650; background: var(--superficie-2); color: var(--testo-2); border: 1px solid var(--bordo); white-space: nowrap; }
.pastiglia.ok { background: var(--ok-sfondo); color: var(--ok); border-color: transparent; }
.pastiglia.attenzione { background: var(--attenzione-sfondo); color: var(--attenzione); border-color: transparent; }
.pastiglia.blocco { background: var(--blocco-sfondo); color: var(--blocco); border-color: transparent; }
.pastiglia.ipotesi { background: var(--ipotesi-sfondo); color: var(--ipotesi); border-color: transparent; }
.etichetta { display: inline-block; font-size: .78rem; font-weight: 600; padding: .02rem .45rem; border-radius: 5px; border: 1px dashed currentColor; white-space: nowrap; vertical-align: middle; }
.eti-ufficiale { color: var(--ok); }
.eti-dichiarato { color: var(--accento); }
.eti-ipotesi { color: var(--ipotesi); }
.eti-verificare { color: var(--attenzione); }
.passi { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; flex-wrap: wrap; gap: .3rem 1rem; font-size: .92rem; }
dl { margin: 0; } dt { font-size: .8rem; color: var(--testo-2); } dd { margin: 0 0 .5rem; font-weight: 650; }
code { font-family: var(--mono); font-size: .86em; word-break: break-all; background: var(--superficie-2); padding: .1rem .35rem; border-radius: 5px; }
.vuoto { text-align: center; color: var(--testo-2); padding: 1.8rem 1.2rem; border: 1px dashed var(--bordo-forte); border-radius: var(--raggio); background: var(--superficie); }
.caricamento { color: var(--testo-2); }

/* moduli */
.modulo label, label.campo { display: block; font-weight: 600; font-size: .88rem; margin: .7rem 0 .3rem; color: var(--testo); }
input, select, textarea { font: inherit; color: var(--testo); background: var(--superficie); border: 1px solid var(--bordo-forte); border-radius: 10px; padding: .5rem .7rem; width: 100%; min-height: 42px; transition: border-color var(--veloce), box-shadow var(--veloce); }
input::placeholder, textarea::placeholder { color: var(--testo-3); }
input:hover, select:hover, textarea:hover { border-color: var(--testo-3); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--primario); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primario) 22%, transparent); }
textarea { resize: vertical; }
input[type=checkbox], input[type=radio] { width: 1.05rem; height: 1.05rem; min-height: 0; accent-color: var(--primario); box-shadow: none; }
.scelte { display: flex; flex-wrap: wrap; gap: .45rem 1rem; }
.scelte label { font-weight: 450; display: inline-flex; gap: .45rem; align-items: center; margin: 0; }
fieldset { border: 1px solid var(--bordo); border-radius: var(--raggio); padding: .7rem 1rem; margin: .8rem 0; }
legend { font-weight: 700; padding: 0 .35rem; }
.riga-form { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; }
.riga-form > * { flex: 1 1 140px; }
.riga-form > .stretto { flex: 0 0 auto; }

/* tabelle */
.tabella-scorri { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: .92rem; font-variant-numeric: tabular-nums; }
th, td { text-align: left; padding: .6rem .6rem; border-bottom: 1px solid var(--bordo); vertical-align: top; }
th { font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; color: var(--testo-3); font-weight: 700; }
tbody tr { transition: background-color var(--veloce); }
tbody tr:hover { background: var(--superficie-2); }
caption { text-align: left; font-weight: 700; padding: .3rem 0; }

/* avvisi e finestre */
.avvisi { position: fixed; right: 1rem; bottom: 5rem; display: flex; flex-direction: column; gap: .5rem; z-index: 100; max-width: min(420px, calc(100vw - 2rem)); }
.avviso { background: var(--superficie); border: 1px solid var(--bordo); border-left: 4px solid var(--primario); padding: .75rem 1rem; border-radius: 12px; box-shadow: var(--ombra-alta); font-size: .93rem; animation: sale var(--medio) both; }
@keyframes sale { from { opacity: 0; transform: translateY(10px) scale(.98); } to { opacity: 1; transform: none; } }
.avviso-errore { border-left-color: var(--blocco); }
.avviso-attenzione { border-left-color: var(--attenzione); }
dialog { border: 1px solid var(--bordo); border-radius: 18px; padding: 0; width: min(560px, calc(100vw - 2rem)); background: var(--superficie); color: var(--testo); box-shadow: var(--ombra-alta); }
dialog[open] { animation: apri-finestra var(--medio) both; }
@keyframes apri-finestra { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }
dialog.larga { width: min(900px, calc(100vw - 2rem)); }
dialog::backdrop { background: rgba(8, 12, 24, .5); backdrop-filter: blur(2px); }
.finestra-testa { display: flex; justify-content: space-between; align-items: center; padding: .9rem 1.2rem; border-bottom: 1px solid var(--bordo); }
.finestra-testa h2 { margin: 0; font-size: 1.1rem; }
.finestra-contenuto { padding: .6rem 1.2rem 1.2rem; max-height: 75vh; overflow-y: auto; }
.chiudi { background: none; border: 0; font-size: 1.6rem; line-height: 1; cursor: pointer; color: var(--testo-2); min-width: 40px; min-height: 40px; border-radius: 10px; }
.chiudi:hover { background: var(--superficie-2); }
.pulsante-rapido { position: fixed; right: 1.4rem; bottom: 1.4rem; z-index: 30; display: inline-flex; align-items: center; gap: .5rem; background: var(--gradiente); color: #fff; border: 0; border-radius: 999px; padding: .8rem 1.3rem; font: inherit; font-weight: 700; box-shadow: 0 8px 22px rgba(67, 56, 202, .35); cursor: pointer; transition: transform var(--veloce), box-shadow var(--veloce); }
.pulsante-rapido:hover { transform: translateY(-1px); box-shadow: 0 12px 26px rgba(67, 56, 202, .42); }
.pulsante-rapido:active { transform: scale(.97); }
.ambiguita { color: var(--attenzione); }
.avviso-email { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; justify-content: space-between; background: var(--primario-tenue); border: 1px solid color-mix(in srgb, var(--primario) 30%, transparent); color: var(--testo); border-radius: var(--raggio); padding: .75rem 1rem; margin-bottom: 1.2rem; }
.avviso-email > span { display: inline-flex; align-items: flex-start; gap: .6rem; flex: 1 1 260px; }
.avviso-email .ico { color: var(--primario); margin-top: .15rem; }
@media (max-width: 860px) { .pulsante-rapido { display: none; } }

/* oggi */
.oggi-griglia { display: grid; grid-template-columns: 1.4fr 1fr; gap: 1rem; }
@media (max-width: 960px) { .oggi-griglia { grid-template-columns: 1fr; } }
.prossima { border-left: 4px solid var(--primario); background: linear-gradient(180deg, var(--primario-tenue), var(--superficie) 70%); }
.prossima .grande { font-size: 1.3rem; font-weight: 750; margin: .2rem 0; letter-spacing: -.01em; }
.risultati { counter-reset: r; list-style: none; padding: 0; margin: 0; }
.risultati li { counter-increment: r; padding: .6rem 0 .6rem 2.4rem; position: relative; border-bottom: 1px solid var(--bordo); }
.risultati li:last-child { border-bottom: 0; }
.risultati li::before { content: counter(r); position: absolute; left: 0; top: .55rem; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--primario-tenue); color: var(--primario); display: grid; place-items: center; font-weight: 750; font-size: .85rem; }
.elenco-semplice { list-style: none; padding: 0; margin: 0; }
.elenco-semplice li { padding: .5rem 0; border-bottom: 1px solid var(--bordo); display: flex; gap: .6rem; justify-content: space-between; align-items: baseline; flex-wrap: wrap; }
.elenco-semplice li:last-child { border-bottom: 0; }
.orario { font-family: var(--mono); font-size: .86rem; color: var(--testo-2); white-space: nowrap; }
.coach { border-left: 4px solid var(--ok); }
.coach h3 { margin-top: 0; }
.modalita { display: inline-flex; flex-wrap: wrap; max-width: 100%; padding: 3px; gap: 2px; background: var(--superficie-2); border-radius: 10px; }
.modalita button { border: 0; background: transparent; padding: .4rem .85rem; font: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; color: var(--testo-2); min-height: 36px; border-radius: 8px; transition: background-color var(--veloce), color var(--veloce); }
.modalita button[aria-pressed="true"] { background: var(--superficie); color: var(--primario); box-shadow: var(--ombra); }
details > summary { cursor: pointer; font-weight: 650; padding: .3rem 0; }
.sessione-riga { display: grid; grid-template-columns: 7.5rem 1fr auto; gap: .6rem; padding: .6rem 0; border-bottom: 1px solid var(--bordo); align-items: start; }
@media (max-width: 640px) { .sessione-riga { grid-template-columns: 1fr; } }
.sessione-riga.completata { opacity: .7; }
.sessione-riga.saltata { opacity: .6; text-decoration: line-through; }

/* percorso: grafo */
.grafo-contenitore { overflow-x: auto; border: 1px solid var(--bordo); border-radius: var(--raggio); background: var(--superficie); }
.grafo { color: var(--testo-2); display: block; }
.h3 { font-size: 1.05rem; margin: 0 0 .3rem; }
.grafo text { font-family: var(--carattere); fill: var(--testo); }
.grafo .nodo rect { fill: var(--superficie); stroke: var(--bordo-forte); stroke-width: 1.5; transition: stroke var(--veloce); }
.grafo .nodo.residuo rect { stroke: var(--primario); stroke-width: 2.2; }
.grafo .nodo.verbalizzato rect { fill: var(--ok-sfondo); stroke: var(--ok); }
.grafo .nodo.da_verificare rect { stroke-dasharray: 5 4; stroke: var(--attenzione); }
.grafo .nodo.critico rect { stroke: var(--blocco); stroke-width: 3; }
.grafo .nodo:focus rect, .grafo .nodo:hover rect { stroke: var(--fuoco); stroke-width: 3; }
.grafo .nodo { cursor: pointer; outline: none; }
.grafo .arco { stroke: var(--testo-3); stroke-width: 1.4; fill: none; opacity: .8; }
.grafo .piccolo { font-size: 11px; fill: var(--testo-2); }
.legenda { display: flex; flex-wrap: wrap; gap: .5rem 1rem; font-size: .85rem; color: var(--testo-2); margin: .5rem 0; }
.legenda span::before { content: ""; display: inline-block; width: 14px; height: 10px; margin-right: .35rem; border: 2px solid var(--bordo-forte); border-radius: 3px; vertical-align: middle; }
.legenda .l-residuo::before { border-color: var(--primario); }
.legenda .l-verb::before { border-color: var(--ok); background: var(--ok-sfondo); }
.legenda .l-verif::before { border-style: dashed; border-color: var(--attenzione); }
.legenda .l-crit::before { border-color: var(--blocco); border-width: 3px; }

/* piano */
.scenari { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
@media (max-width: 960px) { .scenari { grid-template-columns: 1fr; } }
.scenario { transition: border-color var(--veloce), box-shadow var(--veloce); }
.scenario.scelto { border: 2px solid var(--primario); box-shadow: 0 0 0 4px var(--primario-tenue); }
.scenario .laurea { font-size: 1.25rem; font-weight: 750; letter-spacing: -.01em; }
.misure { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: .5rem; margin: .6rem 0; }
.misura { background: var(--superficie-2); border-radius: 10px; padding: .5rem .7rem; font-variant-numeric: tabular-nums; }
.misura b { display: block; font-size: 1.12rem; letter-spacing: -.01em; }
.misura small { color: var(--testo-2); }
.diff-su { color: var(--blocco); }
.diff-giu { color: var(--ok); }
ul.compatto { margin: .3rem 0; padding-left: 1.2rem; }
ul.compatto li { margin: .15rem 0; }

/* calendario */
.settimana { display: grid; grid-template-columns: 3.2rem repeat(7, minmax(110px, 1fr)); border: 1px solid var(--bordo); border-radius: var(--raggio); background: var(--superficie); min-width: 860px; overflow: hidden; }
.settimana .testa { position: sticky; top: 0; background: var(--superficie-2); padding: .4rem; font-size: .83rem; font-weight: 700; text-align: center; border-bottom: 1px solid var(--bordo); }
.settimana .testa.oggi { background: var(--primario); color: var(--primario-testo); }
.colonna { position: relative; border-left: 1px solid var(--bordo); }
.ore-colonna { position: relative; }
.ore-colonna div { position: absolute; right: .3rem; font-size: .76rem; color: var(--testo-3); transform: translateY(-50%); font-variant-numeric: tabular-nums; }
.linea-ora { position: absolute; left: 0; right: 0; border-top: 1px dashed var(--bordo); }
.evento { position: absolute; left: 3px; right: 3px; border-radius: 7px; padding: 2px 6px; font-size: .74rem; line-height: 1.25; overflow: hidden; border: 1px solid transparent; color: var(--testo); transition: filter var(--veloce); }
.evento:hover { filter: brightness(.97); }
.evento.studio { background: var(--ev-studio); border-color: var(--ev-studio-b); }
.evento.ripasso { background: var(--ev-ripasso); border-color: var(--ev-ripasso-b); }
.evento.tesi { background: var(--ev-tesi); border-color: var(--ev-tesi-b); }
.evento.tirocinio { background: var(--ev-tirocinio); border-color: var(--ev-tirocinio-b); }
.evento.impegno { background: var(--ev-impegno); border-color: var(--ev-impegno-b); }
.evento.flessibile { background: var(--ev-flessibile); border-color: var(--ev-flessibile-b); border-style: dashed; }
.evento.indisponibile { background: repeating-linear-gradient(45deg, var(--ev-impegno), var(--ev-impegno) 6px, var(--ev-indisp-2) 6px, var(--ev-indisp-2) 12px); border-color: var(--ev-impegno-b); }
.evento.disponibile { background: transparent; border: 1px dotted var(--ok); z-index: 0; }
.evento.bloccata { box-shadow: inset 0 0 0 2px var(--primario); }
.evento button { all: unset; cursor: pointer; display: block; width: 100%; height: 100%; }
.evento .ico { width: .9em; height: .9em; vertical-align: -.1em; }
.esame-giorno { font-size: .74rem; background: var(--blocco-sfondo); color: var(--blocco); padding: 2px 5px; border-radius: 5px; margin: 2px; font-weight: 700; }

/* sessione */
.timer { font-family: var(--mono); font-size: 3.4rem; font-weight: 700; letter-spacing: .02em; margin: .3rem 0; font-variant-numeric: tabular-nums; }
.timer.pausa { color: var(--attenzione); }

/* tutor */
.passo { border-left: 3px solid var(--bordo); padding-left: 1rem; margin: 1.2rem 0; }
.passo.attuale { border-left-color: var(--primario); }
.passo h2 { margin-top: 0; }
.m { font-family: "Cambria Math", "STIX Two Math", "Latin Modern Math", Georgia, serif; font-size: 1.08em; white-space: nowrap; }
.fr { display: inline-flex; flex-direction: column; vertical-align: middle; text-align: center; margin: 0 .15em; font-size: .92em; }
.fr > span:first-child { border-bottom: 1px solid currentColor; padding: 0 .2em; }
.fr > span:last-child { padding: 0 .2em; }
.esercizio { background: var(--superficie-2); border-radius: 12px; padding: .9rem; margin: .7rem 0; }
.esercizio .testo-es { font-size: 1.1rem; margin-bottom: .5rem; }
.esito-ok { color: var(--ok); font-weight: 700; }
.esito-no { color: var(--blocco); font-weight: 700; }
.aiuti ol { margin: .3rem 0; }
.tab-valori { width: auto; min-width: 220px; margin: .5rem 0; }
.avvertenza { background: var(--ipotesi-sfondo); color: var(--testo); border-left: 4px solid var(--ipotesi); padding: .65rem .9rem; border-radius: 10px; font-size: .92rem; }

/* progressi */
meter, progress { width: 100%; height: 10px; accent-color: var(--primario); }
.indicatore { margin: .5rem 0; }
.indicatore .testa-ind { display: flex; justify-content: space-between; gap: .5rem; font-size: .9rem; }
.barra-area { display: grid; grid-template-columns: 11rem 1fr 4.5rem; gap: .5rem; align-items: center; margin: .35rem 0; font-size: .9rem; }
.barra { height: 10px; border-radius: 6px; background: var(--gradiente); min-width: 2px; }
@media (max-width: 640px) { .barra-area { grid-template-columns: 7rem 1fr 3.5rem; } }

/* community */
.barra-community { margin: 0 0 1rem; padding: .55rem .9rem; background: var(--superficie); border: 1px solid var(--bordo); border-radius: var(--raggio); }
.barra-community a, .barra-community strong { padding: .2rem .1rem; }
a.scheda-stanza { display: block; text-decoration: none; color: var(--testo); margin: 0; transition: border-color var(--veloce), transform var(--veloce), box-shadow var(--veloce); }
a.scheda-stanza:hover { border-color: var(--primario); transform: translateY(-1px); box-shadow: var(--ombra-alta); }
.indicazione { border-bottom: 1px solid var(--bordo); padding: .6rem 0; }
.indicazione:last-child { border-bottom: 0; }
.soluzione { margin: .4rem 0 .4rem 1rem; padding: .45rem .8rem; border-left: 3px solid var(--bordo-forte); background: var(--superficie-2); border-radius: 0 8px 8px 0; }
.testo-lungo { max-height: 60vh; overflow-y: auto; padding: .7rem; background: var(--superficie-2); border-radius: 10px; line-height: 1.6; }
blockquote { margin: .4rem 0; padding: .4rem .8rem; border-left: 3px solid var(--bordo-forte); color: var(--testo-2); }
mark { background: var(--attenzione-sfondo); color: var(--attenzione); padding: 0 .2rem; border-radius: 3px; }
.azioni-studio { display: inline-flex; flex-wrap: wrap; gap: .3rem; }
.informativa h2 { margin-top: 1.4rem; }

/* migliora l'app */
.flusso { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; margin: 1rem 0 1.4rem; }
.flusso li { display: inline-flex; align-items: center; gap: .45rem; padding: .4rem .75rem; border-radius: 999px; background: var(--superficie); border: 1px solid var(--bordo); font-size: .85rem; font-weight: 600; color: var(--testo-2); }
.flusso li .ico { color: var(--testo-3); }
.flusso li.fatto { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 35%, transparent); background: var(--ok-sfondo); }
.flusso li.fatto .ico { color: var(--ok); }
.flusso li.ora { color: var(--primario); border-color: var(--primario); background: var(--primario-tenue); }
.flusso li.ora .ico { color: var(--primario); }
.chat { display: flex; flex-direction: column; gap: .6rem; margin: 1rem 0; }
.msg { max-width: min(640px, 88%); padding: .7rem .95rem; border-radius: 16px; line-height: 1.5; white-space: pre-wrap; animation: sale var(--medio) both; }
.msg.utente { align-self: flex-end; background: var(--primario); color: var(--primario-testo); border-bottom-right-radius: 5px; }
.msg.assistente { align-self: flex-start; background: var(--superficie); border: 1px solid var(--bordo); border-bottom-left-radius: 5px; }
.msg.attesa { color: var(--testo-2); }
.puntini { display: inline-flex; gap: 4px; }
.puntini i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .4; animation: puntino 1s infinite; }
.puntini i:nth-child(2) { animation-delay: .15s; } .puntini i:nth-child(3) { animation-delay: .3s; }
@keyframes puntino { 50% { opacity: 1; transform: translateY(-2px); } }
.proposta-scheda { border: 1px solid color-mix(in srgb, var(--primario) 40%, var(--bordo)); background: linear-gradient(180deg, var(--primario-tenue), var(--superficie) 60%); }
.proposta-scheda .sopra { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--primario); }
.colonne-proposta { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 640px) { .colonne-proposta { grid-template-columns: 1fr; } }
.voce-richiesta { display: flex; align-items: center; gap: .9rem; padding: .75rem 0; border-bottom: 1px solid var(--bordo); text-decoration: none; color: var(--testo); }
.voce-richiesta:last-child { border-bottom: 0; }
.voce-richiesta .ico-tondo { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; background: var(--primario-tenue); color: var(--primario); flex: 0 0 auto; }
.voce-richiesta .cosa { flex: 1; min-width: 0; }
.voce-richiesta .cosa b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.voce-richiesta:hover b { color: var(--primario); }

/* accesso */
.accesso-pagina { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); }
.accesso-vetrina { background: var(--gradiente); color: #fff; padding: 3.5rem clamp(2rem, 5vw, 5rem); display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; }
.accesso-vetrina::after { content: ""; position: absolute; width: 520px; height: 520px; right: -180px; bottom: -200px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 255, 255, .18), transparent 65%); }
.accesso-vetrina .marchio { color: #fff; }
.accesso-vetrina .marchio-nome b { background: none; color: #fcd34d; -webkit-background-clip: initial; background-clip: initial; }
.accesso-vetrina .marchio img { box-shadow: 0 6px 20px rgba(0, 0, 0, .2); border-radius: 12px; }
.accesso-vetrina h2 { color: #fff; font-size: clamp(1.8rem, 3.2vw, 2.6rem); line-height: 1.12; letter-spacing: -.03em; margin: 2rem 0 1rem; font-weight: 800; max-width: 18ch; }
.accesso-vetrina ul { list-style: none; padding: 0; margin: 0; display: grid; gap: .8rem; max-width: 42ch; position: relative; z-index: 1; }
.accesso-vetrina li { display: flex; gap: .7rem; align-items: flex-start; font-size: 1rem; color: rgba(255, 255, 255, .92); }
.accesso-vetrina li .ico { margin-top: .15rem; color: #fcd34d; }
.accesso-vetrina .piede { font-size: .82rem; color: rgba(255, 255, 255, .7); position: relative; z-index: 1; }
.accesso-modulo { display: grid; place-items: center; padding: 2.5rem 1.5rem; background: var(--sfondo); }
.accesso { width: 100%; max-width: 420px; }
.accesso h1 { font-size: 1.7rem; }
.accesso .modulo .pulsante.primario { width: 100%; min-height: 46px; font-size: 1rem; }
.accesso .marchio { display: none; margin-bottom: 1.5rem; }
.accesso-riquadro { max-width: 460px; margin: 8vh auto; }
.accesso-riquadro .marchio { display: inline-flex; margin-bottom: 1rem; }
@media (max-width: 860px) {
  .accesso-pagina { grid-template-columns: 1fr; }
  .accesso-vetrina { display: none; }
  .accesso .marchio { display: inline-flex; }
  .accesso-modulo { place-items: start center; padding-top: 12vh; }
}

/* ---------- motivazione: cerchi, cruscotto, serie, livelli, festeggiamenti ---------- */
.anello { position: relative; display: inline-grid; justify-items: center; gap: .35rem; width: var(--dim); text-align: center; }
.anello svg { display: block; overflow: visible; }
.anello-fondo { stroke: var(--superficie-3); }
.anello-arco { stroke: var(--primario); transition: stroke-dashoffset 1.1s cubic-bezier(.2, .8, .2, 1); }
.anello-azzurro .anello-arco { stroke: #0284c7; }
.anello-oro .anello-arco { stroke: var(--oro); }
.anello-verde .anello-arco { stroke: #16a34a; }
.anello-viola .anello-arco { stroke: #9333ea; }
:root[data-tema="scuro"] .anello-azzurro .anello-arco { stroke: #38bdf8; }
.anello.pieno .anello-arco { filter: drop-shadow(0 0 6px color-mix(in srgb, currentColor 40%, transparent)); }
.anello-centro { position: absolute; top: 0; left: 0; width: var(--dim); height: var(--dim); display: grid; place-items: center; pointer-events: none; }
.anello-centro b { font-size: calc(var(--dim) * .2); font-weight: 800; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.anello-etichetta { font-size: .82rem; font-weight: 700; color: var(--testo); }
.anello-sotto { font-size: .76rem; color: var(--testo-2); margin-top: -.25rem; }
.anelli-riga { display: flex; flex-wrap: wrap; justify-content: space-around; gap: 1rem; margin: .5rem 0; }

.cruscotto { background: linear-gradient(135deg, var(--primario-tenue), var(--superficie) 55%); border: 1px solid color-mix(in srgb, var(--primario) 18%, var(--bordo)); border-radius: 20px; padding: 1.2rem 1.3rem; margin-bottom: 1rem; box-shadow: var(--ombra); }
.cruscotto-testa { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem 1rem; margin-bottom: .6rem; }
.cruscotto-testa h2 { margin: 0; font-size: 1.05rem; }
.cruscotto-corpo { display: grid; grid-template-columns: auto 1fr; gap: 1.4rem; align-items: center; }
.cruscotto-anelli { display: flex; gap: 1.1rem; flex-wrap: wrap; justify-content: center; }
.cruscotto-lato { display: grid; gap: .7rem; min-width: 0; }
@media (max-width: 760px) { .cruscotto-corpo { grid-template-columns: 1fr; } }
@media (max-width: 480px) {
  .cruscotto { padding: 1rem .9rem; }
  .cruscotto-anelli { gap: .5rem; flex-wrap: nowrap; justify-content: space-between; }
  .cruscotto-anelli .anello { --dim: 96px !important; }
  .cruscotto-anelli .anello svg { width: var(--dim); height: var(--dim); }
}
@media (max-width: 360px) {
  .cruscotto-anelli { gap: .3rem; }
  .cruscotto-anelli .anello { --dim: 80px !important; }
}
.chip-serie { display: inline-flex; align-items: center; gap: .4rem; padding: .35rem .8rem; border-radius: 999px; background: #fff7ed; color: #c2410c; font-weight: 800; font-size: .92rem; border: 1px solid #fed7aa; }
.chip-serie .ico { color: #ea580c; }
.chip-serie.spenta { background: var(--superficie-2); color: var(--testo-2); border-color: var(--bordo); }
.chip-serie.spenta .ico { color: var(--testo-3); }
:root[data-tema="scuro"] .chip-serie:not(.spenta) { background: #3b1d0a; color: #fdba74; border-color: #7c2d12; }
.livello { display: grid; gap: .3rem; }
.livello-testa { display: flex; justify-content: space-between; gap: .5rem; font-size: .88rem; }
.livello-testa b { font-weight: 750; }
.barra-xp { height: 10px; border-radius: 999px; background: var(--superficie-3); overflow: hidden; }
.barra-xp i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #f59e0b, #fcd34d); width: 0; transition: width 1.1s cubic-bezier(.2, .8, .2, 1); }
.frase-giorno { font-size: .95rem; color: var(--testo); font-style: italic; border-left: 3px solid var(--oro); padding: .15rem 0 .15rem .7rem; margin: 0; }
.uscita { font-size: .9rem; color: var(--testo-2); }
.uscita b { color: var(--testo); }
.settimana-barre { display: grid; grid-template-columns: repeat(7, 1fr); gap: .35rem; align-items: end; height: 70px; }
.settimana-barre div { display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: .2rem; font-size: .76rem; color: var(--testo-3); height: 100%; }
.settimana-barre i { display: block; width: 100%; max-width: 26px; border-radius: 6px 6px 3px 3px; background: var(--superficie-3); min-height: 4px; transition: height .8s cubic-bezier(.2, .8, .2, 1); }
.settimana-barre i.ok { background: var(--gradiente); }
.settimana-barre .oggi { color: var(--primario); font-weight: 800; }
.richiamo { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 1.2rem; justify-content: space-between; padding: 1rem 1.2rem; border-radius: 18px; margin-bottom: 1rem; background: var(--gradiente); color: #fff; box-shadow: 0 10px 26px rgba(67, 56, 202, .3); animation: sale var(--medio) both; }
.richiamo h2 { margin: 0; color: #fff; font-size: 1.15rem; }
.richiamo p { margin: .15rem 0 0; color: rgba(255, 255, 255, .88); }
.richiamo .pulsante { border-color: transparent; }
.richiamo .pulsante.primario { background: #fff; color: #3730a3; }
.richiamo .pulsante:not(.primario) { background: rgba(255, 255, 255, .16); color: #fff; }
.pulsa { animation: pulsa 2s ease-in-out infinite; }
@keyframes pulsa { 50% { box-shadow: 0 0 0 8px rgba(255, 255, 255, 0); } 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .5); } }
.coriandoli { position: fixed; inset: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 200; }
.festa { text-align: center; }
.festa-xp { font-size: 2.4rem; font-weight: 850; margin: .2rem 0; background: linear-gradient(90deg, #f59e0b, #d97706); -webkit-background-clip: text; background-clip: text; color: transparent; letter-spacing: -.03em; }
.festa-grande { font-size: 1.15rem; font-weight: 700; }
.festa .ico { color: var(--oro); }
.traguardi { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; }
.traguardo { display: grid; justify-items: center; text-align: center; gap: .3rem; padding: .8rem .6rem; border-radius: 14px; background: var(--superficie-2); font-size: .82rem; font-weight: 600; }
.traguardo .ico { width: 1.8rem; height: 1.8rem; color: var(--oro); }
.traguardo.bloccato { opacity: .45; filter: grayscale(1); }

/* metodo di studio */
.lezioni { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .9rem; }
.lezione-scheda { display: flex; flex-direction: column; gap: .4rem; text-decoration: none; color: var(--testo); background: var(--superficie); border: 1px solid var(--bordo); border-radius: 16px; padding: 1rem 1.1rem; box-shadow: var(--ombra); transition: transform var(--veloce), box-shadow var(--veloce), border-color var(--veloce); }
.lezione-scheda:hover { transform: translateY(-2px); box-shadow: var(--ombra-alta); border-color: var(--primario); }
.lezione-scheda .numero { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--primario-tenue); color: var(--primario); font-weight: 800; }
.lezione-scheda.fatta .numero { background: var(--ok-sfondo); color: var(--ok); }
.lezione-scheda h3 { margin: .2rem 0 0; }
.lezione-corpo { max-width: 760px; }
.lezione-corpo h2 { margin-top: 1.8rem; }
.lezione-corpo li { margin: .3rem 0; }
.evidenza-scienza { background: var(--superficie-2); border-radius: 12px; padding: .8rem 1rem; font-size: .92rem; }
.quiz-domanda { margin: 1rem 0; }
.quiz-opzioni { display: grid; gap: .4rem; margin-top: .4rem; }
.quiz-opzioni button { text-align: left; justify-content: flex-start; font-weight: 500; }
.quiz-opzioni button.giusta { background: var(--ok-sfondo); border-color: var(--ok); color: var(--ok); }
.quiz-opzioni button.sbagliata { background: var(--blocco-sfondo); border-color: var(--blocco); color: var(--blocco); }

/* panoramica iniziale */
.benvenuto { max-width: 920px; margin: 0 auto; min-height: calc(100dvh - 3rem); display: grid; grid-template-rows: auto 1fr auto; gap: 1.5rem; padding-block: .5rem 1rem; }
.benvenuto-barra { display: flex; justify-content: space-between; align-items: center; }
.benvenuto-scheda { display: grid; grid-template-columns: 1fr 1.1fr; gap: 2.5rem; align-items: center; animation: apparire var(--medio) both; touch-action: pan-y; }
.benvenuto-figura { display: grid; place-items: center; min-height: 260px; border-radius: 28px; background: radial-gradient(circle at 30% 20%, var(--primario-tenue), var(--superficie) 70%); border: 1px solid var(--bordo); padding: 1.5rem; }
.benvenuto-logo { border-radius: 30px; box-shadow: 0 18px 40px rgba(67, 56, 202, .3); }
.benvenuto-testo { display: grid; gap: .8rem; }
.benvenuto-testo h1 { font-size: clamp(1.7rem, 4vw, 2.5rem); line-height: 1.12; }
.benvenuto-testo p { font-size: 1.08rem; color: var(--testo-2); max-width: 52ch; margin: 0; }
.etichetta-sopra { font-size: .74rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--primario); }
.benvenuto-punti { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; }
.benvenuto-punti span { display: inline-flex; align-items: center; gap: .5rem; padding: .6rem .9rem; border-radius: 14px; background: var(--superficie); border: 1px solid var(--bordo); font-weight: 600; box-shadow: var(--ombra); }
.benvenuto-punti .ico { color: var(--primario); width: 1.35rem; height: 1.35rem; }
.benvenuto-passi { list-style: none; padding: 0; margin: 0; display: grid; gap: .7rem; counter-reset: bp; width: min(280px, 100%); }
.benvenuto-passi li { counter-increment: bp; display: flex; align-items: center; gap: .7rem; padding: .75rem 1rem; border-radius: 14px; background: var(--superficie); border: 1px solid var(--bordo); font-weight: 650; }
.benvenuto-passi li::before { content: counter(bp); width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--primario); color: var(--primario-testo); font-size: .85rem; font-weight: 800; }
.benvenuto-passi .ico { color: var(--primario); }
.benvenuto-piede { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.benvenuto-punti-nav { display: flex; gap: .9rem; }
.benvenuto-punti-nav button { position: relative; width: 10px; height: 10px; border-radius: 999px; border: 0; padding: 0; background: var(--superficie-3); cursor: pointer; transition: width var(--medio), background-color var(--medio); }
.benvenuto-punti-nav button::after { content: ""; position: absolute; inset: -17px -8px; }
.benvenuto-punti-nav button[aria-selected="true"] { width: 28px; background: var(--primario); }
@media (max-width: 760px) {
  .benvenuto-scheda { grid-template-columns: 1fr; gap: 1.4rem; }
  .benvenuto-figura { min-height: 190px; }
  .benvenuto-logo { width: 104px; height: 104px; }
}

/* competenze: ponte fra università e lavoro */
.ponte { display: grid; grid-template-columns: 1fr auto 1fr; gap: .8rem; align-items: stretch; margin: .4rem 0 .8rem; }
.ponte > div:not(.ponte-freccia) { background: var(--superficie-2); border-radius: 14px; padding: .8rem .95rem; }
.ponte > div:last-child { background: var(--primario-tenue); }
.ponte b { display: block; font-size: 1.02rem; margin: .1rem 0 .2rem; }
.ponte p { margin: .3rem 0 0; font-size: .92rem; }
.ponte-quando { font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--testo-3); }
.ponte > div:last-child .ponte-quando { color: var(--primario); }
.ponte-freccia { display: grid; place-items: center; color: var(--primario); }
.ponte-freccia .ico { width: 1.6rem; height: 1.6rem; }
@media (max-width: 640px) { .ponte { grid-template-columns: 1fr; } .ponte-freccia { transform: rotate(90deg); } }

/* concentrazione */
.esercizi-focus { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .9rem; }
.palestra { display: grid; justify-items: center; gap: 1rem; padding: 1.4rem 1rem; text-align: center; }
.respiro-cerchio { width: 190px; height: 190px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #a5b4fc, #4338ca 70%); display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 1.2rem; transform: scale(.55); box-shadow: 0 12px 40px rgba(67, 56, 202, .35); }
.schulte { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; width: min(360px, 90vw); }
.schulte button { aspect-ratio: 1; border: 1px solid var(--bordo-forte); border-radius: 10px; background: var(--superficie); font: inherit; font-size: 1.3rem; font-weight: 750; color: var(--testo); cursor: pointer; touch-action: manipulation; transition: background-color 80ms, transform 60ms; }
.schulte button:active { transform: scale(.95); }
.schulte button.presa { background: var(--primario-tenue); color: var(--primario); border-color: var(--primario); }
.schulte button.errore { background: var(--blocco-sfondo); }
.stroop-parola { font-size: 2.6rem; font-weight: 850; letter-spacing: .02em; min-height: 3.2rem; }
.stroop-scelte { display: grid; grid-template-columns: repeat(2, minmax(120px, 1fr)); gap: .5rem; width: min(360px, 90vw); }
.cifra-grande { font-size: 3.2rem; font-weight: 850; font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.lista-controllo { list-style: none; padding: 0; margin: 0; display: grid; gap: .5rem; text-align: left; width: min(420px, 92vw); }
.lista-controllo label { display: flex; gap: .6rem; align-items: center; padding: .6rem .8rem; border: 1px solid var(--bordo); border-radius: 12px; background: var(--superficie); cursor: pointer; font-weight: 550; }
.lista-controllo input:checked + span { text-decoration: line-through; color: var(--testo-2); }

/* guida interattiva */
.guida-velo { position: fixed; inset: 0; z-index: 150; pointer-events: auto; }
.guida-buco { position: fixed; border-radius: 14px; box-shadow: 0 0 0 9999px rgba(8, 12, 24, .62); transition: all var(--medio); pointer-events: none; }
.guida-fumetto { position: fixed; z-index: 151; width: min(340px, calc(100vw - 32px)); background: var(--superficie); color: var(--testo); border-radius: 16px; padding: 1rem 1.1rem; box-shadow: var(--ombra-alta); animation: sale var(--medio) both; }
.guida-fumetto h3 { margin: 0 0 .3rem; }
.guida-fumetto .guida-passi { font-size: .75rem; color: var(--testo-3); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.guida-fumetto .azioni { justify-content: space-between; }

/* sessione: timer ad anello */
.timer-anello { position: relative; display: grid; place-items: center; margin: .6rem auto; width: 240px; }
.timer-anello .timer { position: absolute; margin: 0; font-size: 2.6rem; }
.timer-anello .timer-obiettivo { position: absolute; top: 64%; font-size: .78rem; color: var(--testo-2); }

/* ---- Mentore (Rev.09): conversazione, scelte a bottone, riquadro in Oggi ---- */
.ico-tondo { display: inline-grid; place-items: center; width: 2.4rem; height: 2.4rem; flex: none; border-radius: 50%; background: var(--primario-tenue); color: var(--primario); }
.chat-mentore { max-width: 640px; margin: 0 auto; }
.avanzamento { height: 6px; border-radius: 99px; background: var(--bordo); overflow: hidden; margin: 0 0 1.2rem; }
.avanzamento i { display: block; height: 100%; background: var(--gradiente, var(--primario)); transition: width .3s ease; }
.bolla { display: flex; gap: .8rem; align-items: flex-start; }
.bolla-mentore > div { background: var(--superficie); border: 1px solid var(--bordo); border-radius: 4px var(--raggio) var(--raggio) var(--raggio); padding: .9rem 1.1rem; box-shadow: var(--ombra); line-height: 1.55; }
.risposta-chat { margin: 1rem 0 0 3.2rem; display: grid; gap: .6rem; }
.campo-chat { width: 100%; }
.scelte-chip { display: flex; flex-wrap: wrap; gap: .5rem; }
.chip { border: 1px solid var(--bordo-forte); background: var(--superficie); color: var(--testo); border-radius: 99px; padding: .5rem .95rem; font: inherit; cursor: pointer; transition: background var(--veloce, .15s), border-color var(--veloce, .15s); }
.chip:hover { border-color: var(--primario); }
.chip[aria-pressed="true"] { background: var(--primario); border-color: var(--primario); color: var(--primario-testo, #fff); }
.mentore-riquadro { display: grid; gap: .7rem; border-left: 4px solid var(--primario); background: linear-gradient(180deg, var(--primario-tenue), var(--superficie) 80%); }
.mentore-riquadro .testa { display: flex; gap: .8rem; align-items: center; }
.mentore-riquadro h2 { margin: 0; font-size: 1.1rem; }
.sponsorizzato { border-style: dashed; }
.sponsorizzato .etichetta-sponsor { font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; color: var(--medio); }
@media (max-width: 600px) { .risposta-chat { margin-left: 0; } }
