:root{
  /* Brand/gioco — solo header, punteggio, progress bar, CTA principali */
  --sand:#fff3c4;--sky:#7dd3fc;--sea:#14b8a6;--sun:#ffb703;--coral:#ff5d73;--grape:#6d5dfc;
  /* Cornice esercizi — unico accento per tutti i blocchi (V/F, tabella, fill_blank, choice) */
  --accent:#4f46e5;--accent-strong:#3730a3;--accent-soft:#eef2ff;--accent-border:#c7d2fe;
  /* Feedback semantico — solo corretto/errore, mai decorativo */
  --ok:#22c55e;--ok-soft:#dcfce7;--ok-strong:#166534;
  --danger:#ef4444;--danger-soft:#fee2e2;--danger-strong:#991b1b;
  /* Neutri */
  --ink:#172033;--muted:#54627a;--card:#ffffffee;--line:#ffffff99;--shadow:0 22px 60px #0f172a22;
}
/* ── Icon system (Lucide, self-hosted sprite — no emoji) ── */
.icon{width:1.15em;height:1.15em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-0.2em;flex-shrink:0}
.icon-lg{width:1.6em;height:1.6em}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:radial-gradient(circle at 15% 5%,#fff7ad 0 10%,transparent 22%),radial-gradient(circle at 85% 8%,#ffd1dc 0 8%,transparent 20%),linear-gradient(135deg,#89f7fe 0%,#fff1b8 48%,#ffd6e0 100%);overflow-x:hidden}.hero{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;padding:1.5rem 1.75rem;max-width:1280px;width:calc(100% - 2rem);margin:1.25rem auto;background:#ffffffb3;backdrop-filter:blur(10px);border:2px solid var(--line);border-radius:32px;box-shadow:var(--shadow)}.hero-main{flex:1 1 320px;min-width:0}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:#b45309;font-weight:950;margin:0;font-size:.85rem}h1{font-size:clamp(2rem,4.5vw,3.4rem);line-height:1;margin:.3rem 0;background:linear-gradient(90deg,var(--accent-strong),var(--coral));-webkit-background-clip:text;background-clip:text;color:transparent}.icon-mascot{stroke:var(--coral);width:.78em;height:.78em;vertical-align:middle}.hero-tagline{margin:.4rem 0 0;font-size:1.05rem;color:var(--muted);max-width:46ch}.hero-progress{flex:0 1 320px;min-width:260px;display:flex;flex-direction:column;gap:.55rem}.hero-stats{display:flex;align-items:center;justify-content:center;gap:1.1rem}.hero-stat{display:flex;flex-direction:column;align-items:center;line-height:1;gap:.3rem}.hero-stat span{font-size:1.85rem;font-weight:1000;color:var(--coral);line-height:1}.hero-stat small{color:var(--muted);font-weight:800;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.hero-stat-divider{width:2px;align-self:stretch;background:#dbe2ee;border-radius:1px}.progress-wrap{height:14px;background:#e2e8f0;border-radius:999px;overflow:hidden;border:2px solid #fff}.progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--sea),var(--accent),var(--coral));border-radius:999px;transition:width .45s ease}.progress-text{text-align:center;color:var(--muted);font-weight:800;font-size:.8rem}.layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:1rem;max-width:1280px;margin:0 auto 2rem;padding:0 1rem;transition:grid-template-columns .25s ease}.layout.sidebar-collapsed{grid-template-columns:74px minmax(0,1fr)}.sidebar,.panel,.empty{background:var(--card);border:3px solid #fff;border-radius:30px;box-shadow:var(--shadow)}.sidebar{position:sticky;top:1rem;align-self:start;max-height:calc(100vh - 2rem);overflow:hidden}.collapse-btn{width:100%;display:flex;align-items:center;justify-content:flex-start;gap:.5rem;border:0;border-bottom:2px solid #ffffffb0;border-radius:28px 28px 0 0;background:linear-gradient(90deg,#172033,#35415f);color:#fff;padding:1rem;font-size:.98rem}.closed-label{display:none;font-size:1.35rem}.layout.sidebar-collapsed .sidebar-content{display:none}.layout.sidebar-collapsed .open-label{display:none}.layout.sidebar-collapsed .closed-label{display:inline}.layout.sidebar-collapsed .collapse-btn{justify-content:center;height:74px;border-radius:28px}.sidebar-content{padding:1rem;max-height:calc(100vh - 90px);overflow:auto}.mission-control{background:linear-gradient(135deg,#eef2ff,#ccfbf1);padding:1rem;border-radius:24px;margin-bottom:1rem}.mission-control h2{margin:.1rem 0;font-size:1.45rem}.mission-control p{margin:0;color:var(--muted)}.list-label{margin:.2rem 0 .6rem;font-size:1.05rem;color:var(--ink)}.filter-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem .75rem}.filter-row label{margin-bottom:0}label{display:block;font-weight:950;margin-bottom:.85rem}input,select,textarea{width:100%;margin-top:.35rem;padding:.9rem 1rem;border:3px solid #e2e8f0;border-radius:18px;font:inherit;background:#fff;outline:none;transition:.18s}input:focus,select:focus,textarea:focus{border-color:var(--grape);box-shadow:0 0 0 5px #6d5dfc22}button{border:0;border-radius:999px;padding:.85rem 1rem;font-weight:950;cursor:pointer;transition:transform .15s,box-shadow .15s,filter .15s}button:hover{transform:translateY(-2px);filter:saturate(1.08)}button:active{transform:translateY(1px) scale(.99)}.primary{background:linear-gradient(90deg,#ff8a00,#ff4d6d);color:#fff;width:100%;margin:.25rem 0 1rem;box-shadow:0 12px 24px #ff5d7333}.page-list{display:grid;gap:.55rem}.page-item{display:grid;grid-template-columns:1fr auto;grid-template-areas:"badge subject" "title title";align-items:center;column-gap:.6rem;row-gap:.3rem;text-align:left;background:#fff7ed;border:3px solid transparent;border-radius:20px;padding:.85rem;color:var(--ink)}.page-item strong{grid-area:title;font-size:.96rem;min-width:0}.page-item.active{border-color:#ff8a00;background:#fff;box-shadow:0 12px 24px #ff8a0026}.page-item.done{background:linear-gradient(135deg,#ecfdf5,#fff)}.page-item.done:after{content:url('icons/check-circle-2.svg') ' completata';color:var(--ok);font-weight:950}
.page-item.started:after{content:url('icons/pencil.svg') ' iniziata';color:var(--muted);font-weight:950;font-size:.82rem}.page-item-main{display:contents}.page-item-subject{grid-area:subject;justify-self:end;align-self:start}.tag,.mission-badge{font-family:inherit;font-size:.78rem;line-height:1;padding:.35rem .55rem;font-weight:950}.page-item .tag,.page-item .mission-badge{font-size:.68rem;padding:.3rem .5rem}.tag{display:inline-block;background:#dff8f4;color:#08756d;border-radius:999px}.mission-badge{grid-area:badge;display:inline-block;width:fit-content;justify-self:start;align-self:start;background:var(--accent-soft);color:var(--accent-strong);border-radius:999px;letter-spacing:.02em}.workspace{min-width:0}.empty{padding:4rem 2rem;text-align:center;color:var(--muted)}.empty-icon svg{width:5rem;height:5rem;stroke:var(--muted)}.empty h2{color:var(--ink);font-size:2.3rem;margin:.2rem}
.onboarding{text-align:left;max-width:480px;margin:1.5rem auto 1rem;padding:1.2rem 1.5rem;background:linear-gradient(135deg,#eef2ff,#ccfbf1);border:3px solid #fff;border-radius:24px}
.onboarding h3{margin:0 0 .75rem;color:var(--ink);font-size:1.15rem}
.onboarding ol{margin:0;padding-left:1.5rem}
.onboarding li{margin-bottom:.65rem;line-height:1.45;color:var(--ink)}
.onboarding li:last-child{margin-bottom:0}
.empty-hint{margin-top:.75rem;font-size:.95rem;color:var(--muted)}.panel{padding:1.15rem}.exercise-head{display:flex;flex-direction:column;gap:.75rem;background:linear-gradient(135deg,#fff7ed,#eef2ff);border-radius:24px;padding:1rem;margin-bottom:1rem}.exercise-head h2{margin:.35rem 0;font-size:clamp(1.45rem,3vw,2.25rem)}
/* Il focus qui è solo funzionale (annuncio screen reader dopo un cambio pagina): niente anello
   visibile — su un h2 con tabindex, Chromium mostra :focus-visible anche per click del mouse. */
#mission-title:focus,#mission-title:focus-visible{outline:none}
.motivational-phrase{color:var(--coral);font-weight:800}
/* Riga azioni sotto al titolo: gruppo principale a sinistra, reset isolato a destra. */
.actions{display:flex;justify-content:space-between;align-items:center;gap:.55rem;flex-wrap:wrap}.actions-left{display:flex;gap:.55rem;flex-wrap:wrap}.actions-right{display:flex;gap:.55rem}.actions button{background:#eaf8f7;color:#08756d}.actions .complete{background:linear-gradient(90deg,var(--ok),#84cc16);color:#fff;box-shadow:0 12px 24px #22c55e33}.actions .complete.completed{background:linear-gradient(90deg,#64748b,#94a3b8);cursor:default}.actions .reveal-solutions{background:#fff7ed;color:#9a3412;border:1px solid #fdba74}
/* Bloccato = non ancora disponibile, non "assente": grigio pieno e leggibile, non l'originale
   in opacity (colore chiaro su chiaro sotto la soglia di contrasto). Resta cliccabile
   (aria-disabled, non l'attributo disabled) per poter spiegare perché in una finestra modale. */
.actions .reset-mission{background:var(--danger-soft);color:var(--danger-strong);border:1px solid var(--danger)}
.actions button[aria-disabled="true"]{background:#e2e8f0;color:#475569;border-color:transparent;box-shadow:none;cursor:not-allowed}
.actions button[aria-disabled="true"]:hover{transform:none;filter:none}.content-grid{display:grid;grid-template-columns:minmax(260px,.95fr) minmax(300px,1.05fr);gap:1rem}.content-grid.single-col{grid-template-columns:1fr}

/* ── Image wrapper + placeholder + lazy loading (S-004b AC4) ── */
.page-img-wrap{position:relative;width:100%;aspect-ratio:4/5.5;background:var(--sand);border-radius:24px;overflow:hidden}
.page-img-placeholder{position:absolute;inset:0;background:linear-gradient(90deg,var(--sand) 0%,#fff8d6 50%,var(--sand) 100%);background-size:200% 100%;animation:shimmer 1.8s ease-in-out infinite;z-index:1;transition:opacity .3s ease;border-radius:24px}
.page-img-placeholder.is-loaded{opacity:0;pointer-events:none}
.page-img-placeholder.is-error{animation:none;background:var(--card);display:flex;align-items:center;justify-content:center}
.page-img-placeholder.is-error::after{content:url('icons/image-off.svg') " Immagine non disponibile";color:var(--muted);font-weight:700;font-size:.95rem}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.page-img{position:relative;z-index:2;width:100%;height:auto;display:block;border-radius:24px;border:4px solid #fff;box-shadow:0 14px 34px #0002;background:#fff;cursor:zoom-in;transition:opacity .3s ease}
.page-img:not([src]){opacity:0}

.text-box{overflow:auto;max-height:68vh;white-space:pre-wrap;line-height:1.5}.text-box h2,.text-box h3,.text-box h4{color:var(--accent-strong);margin:.6rem 0}.solutions-hidden strong,.solutions-hidden b{background:#172033;color:transparent;border-radius:6px;padding:0 .2em;box-shadow:inset 0 -2px 0 #000}.solutions-visible strong,.solutions-visible b{background:#fef08a;color:inherit;border-radius:6px;padding:0 .2em}.solution-box{background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border:3px solid var(--ok);border-radius:24px;padding:1.2rem;margin-top:.75rem}.solution-box h4{margin:0 0 .5rem;color:#065f46;font-size:1.1rem}.solution-box ul{margin:.3rem 0;padding-left:1.4rem}.solution-box li{margin:.2rem 0;line-height:1.5}.solutions-hidden.solution-box{display:none}.solutions-visible.solution-box{display:block}.vf-section{background:var(--accent-soft);border:3px solid var(--accent-border);border-radius:24px;padding:1.2rem;margin-bottom:1rem}.vf-title{margin:0 0 .25rem;font-size:1.25rem;color:var(--accent-strong)}.vf-intro{margin:0 0 .75rem;color:var(--accent-strong);font-size:.92rem}.vf-item{background:#fff;border:2px solid var(--accent-border);border-radius:16px;padding:.85rem;margin-bottom:.65rem}.vf-statement{margin:0 0 .5rem;font-weight:600;font-size:.95rem}.vf-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.4rem .75rem}.vf-buttons{display:flex;gap:.5rem}.vf-btn{border:0;border-radius:999px;padding:.55rem 1.2rem;min-height:44px;font-weight:800;cursor:pointer;font-size:.88rem;transition:transform .12s,background .2s}.vf-btn:not([disabled]):hover{transform:translateY(-1px)}.vf-btn[disabled]{cursor:default;opacity:.7}.vf-btn.vf-hidden{display:none}.vf-vero{background:var(--ok-soft);color:var(--ok-strong)}.vf-falso{background:var(--danger-soft);color:var(--danger-strong)}.vf-correct{background:var(--ok)!important;color:#fff!important;opacity:1!important;box-shadow:0 4px 12px #22c55e44}.vf-wrong{background:var(--danger)!important;color:#fff!important;opacity:1!important}.vf-feedback{margin:0;min-height:1.2rem;text-align:right}.vf-msg{font-size:.88rem;font-weight:700}.vf-msg-ok{color:var(--ok-strong)}.vf-msg-err{color:var(--danger-strong)}.vf-score{text-align:center;margin-top:.75rem}.vf-result{font-weight:800;font-size:1rem;padding:.5rem 1rem;border-radius:16px;display:inline-block}.vf-result-perfect{background:var(--ok-soft);color:var(--ok-strong)}.vf-result-good{background:#fef3c7;color:#92400e}.vf-result-pending{background:var(--accent-soft);color:var(--accent-strong)}.answer{margin-top:1rem}.answer textarea{min-height:160px;resize:vertical;background:linear-gradient(#fff,#fffaf0)}.toast{position:fixed;right:1rem;bottom:1rem;background:#172033;color:white;padding:1rem 1.2rem;border-radius:22px;box-shadow:0 18px 40px #0004;font-weight:950;z-index:5}.points-pop{position:fixed;left:50%;top:16%;transform:translateX(-50%);font-size:clamp(2.5rem,8vw,5rem);font-weight:1000;color:#ff8a00;text-shadow:0 5px 0 #fff,0 15px 35px #0003;animation:pop 1.1s ease forwards;z-index:10}@keyframes pop{0%{opacity:0;transform:translateX(-50%) scale(.3) rotate(-8deg)}20%{opacity:1;transform:translateX(-50%) scale(1.15) rotate(4deg)}100%{opacity:0;transform:translateX(-50%) translateY(-70px) scale(.9)}}

/* ── Collapsible sections (narrative text, V/F quiz, each exercise block) ──
 * Every section that composes the page (.text-section, .vf-section,
 * .ex-section) shares this header + toggle idiom, so they all get
 * consistent spacing and an icon-only collapse button on the right. */
.text-section{background:var(--accent-soft);border:3px solid var(--accent-border);border-radius:24px;padding:1.2rem;margin-bottom:1rem}
.collapsible .section-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.25rem}
.collapsible .section-head .vf-title,.collapsible .section-head .ex-title,.collapsible .section-head .text-box-title{margin:0}
.text-box-title{display:flex;align-items:center;gap:.4rem;font-size:1.25rem;color:var(--accent-strong)}
.collapse-toggle{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:2px solid var(--accent-border);background:#fff;color:var(--accent-strong);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s,background .2s,border-color .2s}
.collapse-toggle:hover{transform:translateY(-1px);background:var(--accent-soft)}
.collapse-toggle:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.collapsible.is-collapsed .section-head{margin-bottom:0}
.collapsible.is-collapsed .collapsible-body{display:none}

/* ── Lightbox / Zoom (S-004b AC5) ── */
.lightbox{position:fixed;inset:0;z-index:100;background:#000000cc;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:lightbox-fade-in .25s ease}
@keyframes lightbox-fade-in{from{opacity:0}to{opacity:1}}
.lightbox-close{position:absolute;top:1rem;right:1rem;width:48px;height:48px;border-radius:50%;border:3px solid #fff;background:#172033;color:#fff;font-size:1.5rem;cursor:pointer;z-index:101;display:flex;align-items:center;justify-content:center;transition:transform .15s,background .15s}
.lightbox-close:hover{background:var(--coral);transform:scale(1.1)}
.lightbox-close:focus-visible{outline:3px solid var(--sun);outline-offset:3px}
.lightbox-content{width:min(92vw,92vh);height:min(92vw,92vh);overflow:auto;display:flex;align-items:center;justify-content:center;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:manipulation}
.lightbox-img{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in;transition:transform .15s ease;will-change:transform;touch-action:none}
.lightbox-img:active{cursor:grabbing}
.lightbox-hint{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);color:#ffffffaa;font-size:.85rem;font-weight:600;text-align:center;pointer-events:none;animation:hint-fade 4s ease forwards}
@keyframes hint-fade{0%,60%{opacity:1}100%{opacity:0}}
.lightbox-zoom-controls{position:absolute;top:1rem;left:50%;transform:translateX(-50%);z-index:101;display:flex;gap:.5rem}
.lightbox-zoom-btn{width:44px;height:44px;border-radius:50%;border:3px solid #fff;background:#172033;color:#fff;font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s,background .15s}
.lightbox-zoom-btn:hover{background:var(--sea);transform:scale(1.1)}
.lightbox-zoom-btn:focus-visible{outline:3px solid var(--sun);outline-offset:3px}

/* ── Info modal: spiega perché un'azione bloccata non è ancora disponibile ── */
.info-modal{position:fixed;inset:0;z-index:100;background:#000000cc;display:flex;align-items:center;justify-content:center;padding:1rem;animation:lightbox-fade-in .2s ease}
.info-modal-card{background:#fff;border-radius:28px;padding:1.75rem 1.5rem;max-width:360px;width:100%;text-align:center;box-shadow:var(--shadow)}
.info-modal-icon{width:56px;height:56px;margin:0 auto .75rem;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);display:flex;align-items:center;justify-content:center}
.info-modal-icon .icon{width:1.6em;height:1.6em}
.info-modal-card h3{margin:0 0 .5rem;font-size:1.2rem;color:var(--ink)}
.info-modal-card p{margin:0 0 1.25rem;color:var(--muted);line-height:1.45}
.info-modal-ok{background:var(--accent);color:#fff;border-radius:999px;padding:.7rem 1.6rem;min-height:44px;font-weight:800}
.info-modal-ok:hover{background:var(--accent-strong)}
.info-modal-ok:focus-visible{outline:3px solid var(--sun);outline-offset:3px}
.info-modal-icon-danger{background:var(--danger-soft);color:var(--danger-strong)}
.info-modal-actions{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap}
.info-modal-cancel{background:#eaf8f7;color:#08756d;border-radius:999px;padding:.7rem 1.4rem;min-height:44px;font-weight:800}
.info-modal-cancel:hover{background:#dff8f4}
.info-modal-danger{background:var(--danger);color:#fff;border-radius:999px;padding:.7rem 1.4rem;min-height:44px;font-weight:800}
.info-modal-danger:hover{background:var(--danger-strong)}
.info-modal-cancel:focus-visible,.info-modal-danger:focus-visible{outline:3px solid var(--sun);outline-offset:3px}

/* ── Install banner (S-004b AC1 optional) ── */
.install-banner{display:none;background:var(--card);border:3px solid var(--sea);border-radius:20px;padding:.8rem 1.2rem;margin:0 auto 1rem;max-width:1280px;box-shadow:var(--shadow);align-items:center;gap:.75rem;flex-wrap:wrap}
.install-banner.is-visible{display:flex}

/* ── Sotto i 1100px: area esercizio (testo+immagine) a colonna singola così
   restano leggibili anche prima che la sidebar si impili. ── */
@media(max-width:1100px){.content-grid{grid-template-columns:1fr}}
@media(max-width:900px){.hero{flex-direction:column;align-items:stretch;padding:1.25rem;gap:1rem}.hero-main,.hero-progress{flex:0 0 auto;min-width:0}.lightbox-close{top:.5rem;right:.5rem;width:44px;height:44px}.lightbox-hint{font-size:.78rem;bottom:.75rem}}
/* ── Tablet e telefono (≤1024px): sidebar impilata sopra il workspace, a
   tutta larghezza invece di restare laterale e compressa. ── */
@media(max-width:1024px){.layout,.layout.sidebar-collapsed{display:block}.sidebar{position:static;margin-bottom:1rem;max-height:none}.layout.sidebar-collapsed .sidebar-content{display:none}.collapse-btn{border-radius:28px}.sidebar-content{max-height:none}}
/* ── Tablet (641–1024px): la sidebar è a tutta larghezza, c'è spazio per
   mettere missione, titolo e materia sulla stessa riga. ── */
@media(min-width:641px) and (max-width:1024px){.page-item{grid-template-columns:auto 1fr auto;grid-template-areas:"badge title subject"}.page-item strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:480px){.lightbox-hint{font-size:.72rem;bottom:.5rem}.onboarding{max-width:100%;padding:1rem;font-size:.92rem}.onboarding h3{font-size:1.05rem}}

/* ── Typed exercise engine (fill_blank, choice, ...) — mirrors V/F visual language ── */
.ex-wrap{margin-bottom:1rem}
.ex-section{background:var(--accent-soft);border:3px solid var(--accent-border);border-radius:24px;padding:1.2rem;margin-bottom:1rem}
.ex-title{margin:0 0 .25rem;font-size:1.25rem;color:var(--accent-strong)}
.ex-intro{margin:0 0 .75rem;color:var(--accent-strong);font-size:.92rem}
.ex-ref-img{display:block;width:100%;max-width:420px;height:auto;margin:0 auto .85rem;border-radius:18px;border:4px solid #fff;box-shadow:0 10px 26px #0002;background:#fff;cursor:zoom-in}
.ex-item{background:#fff;border:2px solid var(--accent-border);border-radius:16px;padding:.85rem;margin-bottom:.65rem}
.ex-prompt{margin:0 0 .5rem;font-weight:600;font-size:.95rem;display:flex;align-items:center;flex-wrap:wrap;gap:.4rem}
.ex-input{border:2px solid var(--accent-border);border-radius:12px;padding:.4rem .6rem;font-size:1rem;font-family:inherit;min-width:8ch;background:#fff}
.ex-input:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
/* Classi dedicate (non .ex-correct/.ex-wrong) per non collidere con lo stile pieno+!important
   dei pulsanti di scelta: qui il testo digitato resta leggibile (scuro su chiaro), non bianco su pieno. */
.ex-input.ex-input-correct{background:var(--ok-soft);border-color:var(--ok);color:var(--ok-strong);font-weight:700}
.ex-input.ex-input-wrong{background:var(--danger-soft);border-color:var(--danger);color:var(--danger-strong)}
/* Verifica: stesso linguaggio ovunque (contorno indaco), solo il livello "di blocco" (.ex-table-verify)
   è più grande per segnalare che agisce su più righe insieme. Niente opacity per lo stato disattivato:
   una volta corretta la risposta il pulsante si nasconde (v. applyFillBlankResult) invece di stingersi,
   perché testo colorato + opacity su sfondo bianco crolla sotto la soglia di contrasto leggibile. */
.ex-verify-btn{border:2px solid var(--accent-border);border-radius:999px;padding:.4rem 1rem;min-height:44px;font-weight:800;cursor:pointer;font-size:.82rem;background:#fff;color:var(--accent-strong);display:inline-flex;align-items:center;gap:.3rem;transition:transform .12s,background .2s,border-color .2s}
.ex-verify-btn:hover{transform:translateY(-1px);background:var(--accent-soft);border-color:var(--accent)}
.ex-verify-btn.ex-verify-hidden{display:none}
.ex-options{display:flex;gap:.5rem;flex-wrap:wrap}
.ex-btn{border:0;border-radius:999px;padding:.5rem 1.1rem;min-height:44px;font-weight:800;cursor:pointer;font-size:.88rem;background:var(--accent-border);color:var(--accent-strong);transition:transform .12s,background .2s}
.ex-btn:not([disabled]):hover{transform:translateY(-1px)}
.ex-btn[disabled]{cursor:default;opacity:.85}
.ex-correct{background:var(--ok)!important;color:#fff!important;opacity:1!important;box-shadow:0 4px 12px #22c55e44}
.ex-wrong{background:var(--danger)!important;color:#fff!important;opacity:1!important}
.ex-feedback{margin-top:.4rem;min-height:1.2rem}
.ex-prompt .ex-feedback{margin-top:0;min-height:0;align-items:center}
.ex-msg{font-size:.88rem;font-weight:700}
.ex-msg-ok{color:var(--ok-strong)}
.ex-msg-err{color:var(--danger-strong)}
.ex-score{text-align:center;margin-top:.75rem}
.ex-result{font-weight:800;font-size:1rem;padding:.5rem 1rem;border-radius:16px;display:inline-block}
.ex-result-perfect{background:var(--ok-soft);color:var(--ok-strong)}
.ex-result-good{background:#fef3c7;color:#92400e}
.ex-result-pending{background:var(--accent-soft);color:var(--accent-strong)}
/* ── Table exercise (Scomponi i numeri): guided place-value grid + explicit Verifica ── */
.ex-table-wrap{overflow-x:auto;background:#fff;border:2px solid var(--accent-border);border-radius:16px;padding:.5rem;margin-bottom:.75rem}
.ex-table{border-collapse:collapse;width:100%;min-width:520px;font-size:.92rem}
.ex-table th,.ex-table td{padding:.35rem .4rem;text-align:center;border:1px solid var(--accent-soft)}
.ex-table thead th{background:var(--accent-soft);color:var(--accent-strong);font-weight:800}
.ex-table .ex-table-group-row th{background:var(--accent-border);color:var(--accent-strong);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}
.ex-table tbody th[scope="row"]{text-align:left;font-weight:700;color:var(--ink);white-space:nowrap;background:#f8fafc}
.ex-table th:nth-child(8),.ex-table td:nth-child(8){border-left:3px solid var(--accent)}
.ex-table-example{background:#fffbeb}
.ex-table-example th[scope="row"]{background:#fef3c7;color:#92400e}
.ex-table-cell-static{font-weight:800;color:#b45309}
.ex-table-cell-na{background:repeating-linear-gradient(135deg,#f1f5f9,#f1f5f9 4px,#e2e8f0 4px,#e2e8f0 8px)}
.ex-table-input{width:2.6em;border:2px solid var(--accent-border);border-radius:8px;padding:.25rem;font:inherit;text-align:center;background:#fff}
.ex-table-input:focus-visible{outline:3px solid var(--sun);outline-offset:1px}
.ex-table-input:disabled{background:var(--ok-soft);border-color:var(--ok);color:var(--ok-strong);font-weight:700}
.ex-table-row-correct td,.ex-table-row-correct th[scope="row"]{background:#f0fdf4}
.ex-table-row-wrong td,.ex-table-row-wrong th[scope="row"]{background:#fef2f2}
.ex-table-row-wrong .ex-table-input{border-color:var(--danger);background:var(--danger-soft);color:var(--danger-strong)}
.ex-table-verify{border:2px solid var(--accent);background:#fff;color:var(--accent-strong);border-radius:999px;padding:.6rem 1.3rem;min-height:44px;font-weight:800;display:inline-flex;align-items:center;gap:.4rem}
.ex-table-verify:hover{background:var(--accent-soft)}
.order-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.85rem;margin-bottom:.75rem}
.order-group{background:#fff;border:2px solid var(--accent-border);border-radius:16px;padding:.7rem .75rem}
.order-group-label{margin:0 0 .5rem;font-weight:800;font-size:.88rem;color:var(--accent-strong)}
.order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}
.order-item{display:flex;align-items:center;gap:.35rem;background:var(--accent-soft);border:2px solid transparent;border-radius:12px;padding:.4rem .5rem;user-select:none;transition:background .2s,border-color .2s}
.order-item:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.order-item-handle{display:inline-flex;color:var(--accent-strong);opacity:.6;cursor:grab;touch-action:none;padding:.2rem;border-radius:8px}
.order-item-handle:active{cursor:grabbing}
.order-item-word{flex:1;font-weight:700;font-size:.94rem}
.order-item-btns{display:flex;flex-direction:column;gap:.15rem}
.order-move-btn{border:0;background:#fff;color:var(--accent-strong);border-radius:8px;width:1.7rem;height:1.7rem;min-height:0;padding:0;display:inline-flex;align-items:center;justify-content:center}
.order-move-btn .icon{width:1em;height:1em}
.order-move-btn:not([disabled]):hover{transform:translateY(-1px)}
.order-move-btn[disabled]{opacity:.3;cursor:default}
.order-item-dragging{opacity:.55;box-shadow:0 8px 18px #0002;background:#fff}
.order-list-correct .order-item{background:var(--ok-soft);border-color:var(--ok);color:var(--ok-strong)}
.order-list-correct .order-item-handle,.order-list-correct .order-item-word{color:var(--ok-strong)}
.order-item-locked .order-item-handle{cursor:default;opacity:.35}
.order-list-wrong .order-item{border-color:var(--danger);background:var(--danger-soft)}
/* ── Syllables exercise (Un mare di sillabe): tap dividers between letters instead of typing dashes ── */
.syll-items{display:flex;flex-direction:column;gap:.65rem;margin-bottom:.75rem}
.syll-item{background:#fff;border:2px solid var(--accent-border);border-radius:16px;padding:.75rem .85rem;transition:background .2s,border-color .2s}
.syll-hint{margin:0 0 .4rem;font-size:.82rem;color:var(--danger-strong);opacity:.85}
.syll-letters{display:flex;align-items:center;flex-wrap:wrap;gap:0}
.syll-letter{font-size:1.15rem;font-weight:800;color:var(--ink);padding:0 .05rem}
.syll-divider{border:0;background:transparent;color:var(--accent-border);width:1.5rem;height:1.9rem;min-height:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0}
.syll-divider .icon{width:.85em;height:.85em}
.syll-divider:not([disabled]):hover{background:var(--accent-soft);color:var(--accent-strong)}
.syll-divider.is-active{color:#fff;background:var(--accent)}
.syll-divider.is-active:not([disabled]):hover{background:var(--accent-strong)}
.syll-divider[disabled]{cursor:default}
.syll-preview{margin:.5rem 0 0;font-weight:700;font-size:.95rem;color:var(--accent-strong);letter-spacing:.02em;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;min-height:1.3rem}
.syll-item-correct{background:var(--ok-soft);border-color:var(--ok)}
.syll-item-correct .syll-letter{color:var(--ok-strong)}
.syll-item-wrong{border-color:var(--danger);background:var(--danger-soft)}
.xw-rows{display:flex;flex-direction:column;gap:.65rem;margin-bottom:.75rem}
.xw-row{background:#fff;border:2px solid var(--accent-border);border-radius:16px;padding:.75rem .85rem;transition:background .2s,border-color .2s}
.xw-clue{margin:0 0 .5rem;font-weight:700;font-size:.92rem;color:var(--ink)}
.xw-row-num{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--accent-border);color:var(--accent-strong);font-size:.78rem;font-weight:800;margin-right:.5rem}
.xw-cells{display:flex;gap:.3rem;flex-wrap:wrap}
.xw-cell{width:2.2rem;height:2.2rem;border:2px solid var(--accent-border);border-radius:8px;text-align:center;font-size:1.1rem;font-weight:800;text-transform:uppercase;padding:0;font:inherit;background:#fff;color:var(--ink)}
.xw-cell:focus-visible{outline:3px solid var(--sun);outline-offset:1px}
.xw-cell-highlight{background:#fff7d6;border-color:var(--sun)}
.xw-row-correct{background:#f0fdf4;border-color:var(--ok)}
.xw-row-correct .xw-cell{background:var(--ok-soft);border-color:var(--ok);color:var(--ok-strong)}
.xw-row-wrong{border-color:var(--danger);background:var(--danger-soft)}
.xw-row-wrong .xw-cell{border-color:var(--danger)}
.xw-reveal{margin:.85rem 0 0;padding:.65rem 1rem;border-radius:16px;background:#fff7d6;border:2px solid var(--sun);text-align:center;font-weight:800;letter-spacing:.1em}
.xw-reveal-label{font-weight:700;color:var(--accent-strong);letter-spacing:normal;margin-right:.4rem}
.xw-reveal-word{color:#92400e}
.xw-reveal-complete{color:var(--ok-strong)}
