/* P3 CyberAcademy, direzione "Perimetro" (brandbook P3 v1.0): console scura a sinistra, foglio chiaro a destra.
   Grafite e osso come neutri, un solo verde segnale usato come LED. Raggio zero, bordi 1px, griglie a filo.
   Mono (Spline Sans Mono) per numeri, codici ed etichette; Hanken Grotesk per il discorso. */
@font-face{font-family:"Hanken Grotesk"; font-style:normal; font-weight:400 800; font-display:swap; src:url("/static/fonts/HankenGrotesk-variable.woff2") format("woff2")}
@font-face{font-family:"Spline Sans Mono"; font-style:normal; font-weight:400 700; font-display:swap; src:url("/static/fonts/SplineSansMono-variable.woff2") format("woff2")}

:root{
  --bone:#EFEDE6; --paper:#FBFAF7; --white:#FFFFFF;
  --ink:#15171C; --ink2:#3D424C; --mut:#565C68; --dim:#7E8189;
  --line:rgba(15,17,21,.13); --line2:rgba(15,17,21,.3);
  --g950:#0F1115; --g900:#15171C; --g800:#1F2229; --g700:#2C3038; --g600:#3D424C;
  --signal:#4DE6A1; --sig:#137A52; --sig-deep:#125E43; --ok-bg:#F1F8F4;
  --ko:#B3261E; --ko-bg:#FCE8E6; --warn:#7A5000; --warn-bg:#FFF4D6;
  --mono:"Spline Sans Mono",ui-monospace,monospace; --sans:"Hanken Grotesk",system-ui,sans-serif;
  --fast:160ms; --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:72px}
[id]{scroll-margin-top:72px}
body{margin:0; font:16px/1.55 var(--sans); background:var(--bone); color:var(--ink)}
h1,h2,h3,h4{font-family:var(--sans); color:var(--ink); line-height:1.1; margin:.3em 0; letter-spacing:-.025em}
h1{font-size:clamp(1.7rem,2.6vw,2.3rem); font-weight:800; letter-spacing:-.035em}
h2{font-size:1.35rem; font-weight:800; margin-top:1.2em}
h3{font-size:1.05rem; font-weight:700; letter-spacing:-.01em}
h4{font-size:1rem; font-weight:600; letter-spacing:0}
p{margin:.5em 0}
a{color:var(--sig); text-decoration:none}
a:hover{text-decoration:underline}
code{font-family:var(--mono); font-size:.92em; background:var(--white); border:1px solid var(--line); padding:2px 8px}
:focus-visible{outline:3px solid var(--sig); outline-offset:2px}
.sr-only{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0}
.tag{color:var(--mut); font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.14em; margin:.2em 0}
.hint{color:var(--mut); font-size:.92rem}
.mono{font-family:var(--mono)}
.err{color:var(--ko); background:var(--ko-bg); border-left:2px solid var(--ko); padding:10px 14px; font-weight:600}
.msg{color:var(--sig-deep); background:var(--ok-bg); border-left:2px solid var(--sig); padding:10px 14px; font-weight:600}
small{color:var(--mut)}

/* --- marchio [P3] testuale: parentesi segnale 400, monogramma 600 --- */
.mark{font-family:var(--mono); font-weight:600; font-size:1.1rem; letter-spacing:-.04em; color:var(--ink); display:inline-flex; align-items:center; gap:10px; text-decoration:none; white-space:nowrap}
.mark .brk{color:var(--sig); font-weight:400}
.mark .nm{font-family:var(--sans); font-weight:700; letter-spacing:-.02em; font-size:1.05rem}
.mark:hover{text-decoration:none}

/* --- bottoni: spigolo vivo, tre varianti --- */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:0 20px; border:1px solid var(--ink); background:var(--ink); color:var(--bone); font:600 .95rem/1.2 var(--sans); cursor:pointer; text-decoration:none; transition:background var(--fast) var(--ease), border-color var(--fast) var(--ease), color var(--fast) var(--ease)}
.btn:hover{text-decoration:none; background:var(--g950); color:var(--white)}
.btn.secondary{background:var(--white); color:var(--ink); border-color:var(--line2)}
.btn.secondary:hover{background:var(--white); border-color:var(--sig); color:var(--sig)}
.btn.primary{background:var(--sig-deep); border-color:var(--sig-deep); color:#fff}
.btn.primary:hover{background:var(--sig)}
.btn.danger{background:var(--white); color:var(--ko); border-color:var(--ko)}
.btn.danger:hover{background:var(--ko-bg)}
.btn.big{min-height:50px; padding:0 26px; font-size:1.02rem}
.btn.small{min-height:36px; padding:0 14px; font-size:.88rem}
.btn.wide{width:100%; margin-top:16px}
.actions{display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:14px}

/* --- stati: glifi, non emoji --- */
.badge{display:inline-flex; align-items:center; gap:6px; font-family:var(--mono); font-size:.74rem; letter-spacing:.04em; padding:3px 9px; border:1px solid var(--line2); color:var(--mut); background:var(--white); white-space:nowrap}
.badge.ok{color:var(--sig-deep); border-color:var(--sig)}
.badge.run{color:var(--ink); border-color:var(--ink)}
.badge.lock{color:var(--dim); border-color:var(--line)}
.partial{color:var(--warn); font-size:.9rem}

/* --- barre: segmenti, non riempimenti continui --- */
.bar{height:8px; background:#E6E3DA; overflow:hidden; margin:8px 0}
.bar span{display:block; height:100%; background:var(--sig)}
.bar-label{display:flex; justify-content:space-between; font-size:.92rem; color:var(--mut)}
.bar-label strong{color:var(--ink); font-family:var(--mono)}
.seg{display:grid; gap:4px}
.seg i{display:block; height:10px; background:var(--g700)}
.seg i.ok{background:var(--signal)}
.seg i.now{background:var(--signal); opacity:.45}
.seg.light i{background:#E6E3DA}
.seg.light i.ok{background:var(--sig)}

/* --- layout pubblico (home, accesso, verifica) --- */
.public-header{display:flex; justify-content:space-between; align-items:center; padding:0 24px; height:60px; background:var(--bone); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:10}
.public-main{max-width:1000px; margin:0 auto; padding:0 16px}
.landing{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0; margin:48px 0; border:1px solid var(--ink); background:var(--white)}
.landing-dark{background:var(--g950); color:var(--bone); padding:40px 36px; position:relative; background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px); background-size:48px 48px}
.landing-dark h1{color:var(--bone); font-size:clamp(1.8rem,3vw,2.6rem); margin:.4em 0 .3em}
.landing-dark p{color:#B9B7AE; max-width:36ch}
.landing-light{padding:40px 36px; display:flex; flex-direction:column; justify-content:center; gap:14px}
.landing-light h2{margin:0}
.kick{font-family:var(--mono); font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--signal); display:inline-flex; align-items:center; gap:9px; font-weight:500}
.kick::before{content:''; width:7px; height:7px; border-radius:50%; background:var(--signal); box-shadow:0 0 12px var(--signal); animation:led 2.4s ease-in-out infinite}
.kick.light{color:var(--sig)}
.kick.light::before{background:var(--sig); box-shadow:none}
@keyframes led{0%,100%{opacity:1}50%{opacity:.35}}
.login-wrap{display:flex; justify-content:center; padding:40px 0}
.login-card{width:100%; max-width:460px; background:var(--white); border:1px solid var(--ink); padding:32px 32px 28px; position:relative}
.login-card::before{content:''; position:absolute; left:0; right:0; top:0; height:3px; background:var(--sig)}
.login-card h1{margin:.2em 0 .3em; font-size:1.6rem}

/* --- shell applicazione: console scura + foglio --- */
.app{display:grid; grid-template-columns:248px minmax(0,1fr); min-height:100vh}
.nav-toggle{position:absolute; width:1px; height:1px; margin:0; opacity:0}
.sidebar{position:sticky; top:0; height:100vh; display:flex; flex-direction:column; gap:32px; padding:26px 18px 22px; background:var(--g900); color:var(--bone); overflow-y:auto}
.sidebar .mark{color:var(--bone); padding:0 10px}
.sidebar .mark .brk{color:var(--signal)}
.side-nav{display:flex; flex-direction:column; gap:2px}
.side-nav a{display:flex; align-items:center; gap:12px; padding:11px 12px; color:#B9B7AE; font-weight:500; font-size:.96rem; border-left:2px solid transparent; min-height:44px}
.side-nav a:hover{color:var(--bone); text-decoration:none}
.side-nav a.active,.side-nav a[aria-current="page"]{color:var(--bone); border-left-color:var(--signal); background:rgba(255,255,255,.04)}
.side-nav .n{font-family:var(--mono); font-size:.7rem; color:var(--dim); width:18px}
.side-nav a.active .n,.side-nav a[aria-current="page"] .n{color:var(--signal)}
.side-foot{margin-top:auto; border-top:1px solid var(--g700); padding:16px 10px 0; display:flex; flex-direction:column; gap:4px}
.side-foot .k{font-family:var(--mono); font-size:.64rem; letter-spacing:.16em; text-transform:uppercase; color:var(--dim)}
.side-foot .v{font-size:.9rem; color:var(--bone)}
.side-foot .v+.k{margin-top:10px}
.main-col{min-width:0; display:flex; flex-direction:column}
.topbar{position:sticky; top:0; z-index:10; height:60px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:0 40px; background:var(--bone); border-bottom:1px solid var(--line)}
.topbar .who{font-size:.95rem; color:var(--mut)}
.topbar .who b{color:var(--ink); font-weight:600}
.topbar form{margin:0}
.linkbtn{background:none; border:0; padding:0 4px; min-height:44px; color:var(--mut); font:500 .92rem var(--sans); cursor:pointer}
.linkbtn:hover{color:var(--ink); text-decoration:underline}
.brand-top{display:none}
.menu-btn{display:none; cursor:pointer; padding:0 12px; min-height:40px; align-items:center; border:1px solid var(--line2); color:var(--ink); font-weight:600; font-size:.9rem; background:var(--white)}
.nav-toggle:focus-visible ~ .main-col .menu-btn{outline:3px solid var(--sig); outline-offset:2px}
.app-main{width:100%; max-width:1220px; padding:32px 40px 96px; flex:1}
footer{color:var(--mut); font-size:.85rem; padding:20px 40px; border-top:1px solid var(--line); margin-top:40px; display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap}
.public-body footer{padding:20px 24px}

/* --- superfici --- */
.card{background:var(--white); border:1px solid var(--line); padding:22px 24px; margin:14px 0}
.empty{color:var(--mut)}
.breadcrumb{color:var(--mut); font-size:.9rem; margin-bottom:6px; display:flex; gap:10px; align-items:center}
.breadcrumb a{color:var(--mut)}
.page-head{display:flex; justify-content:space-between; align-items:flex-end; gap:12px; flex-wrap:wrap; margin:4px 0 18px}
.page-head h1{margin:0}
.meta{font-family:var(--mono); font-size:.76rem; color:var(--mut); display:flex; gap:22px; flex-wrap:wrap}
.sub{font-size:.92rem; color:var(--mut); margin:-6px 0 12px}

/* --- console: il prossimo passo --- */
.console{position:relative; background:var(--g950); color:var(--bone); padding:40px 44px; display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:44px; align-items:end; margin:18px 0 32px; box-shadow:0 40px 80px -40px rgba(0,0,0,.6); background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px); background-size:48px 48px; background-position:-1px -1px}
.console::before,.console::after{content:''; position:absolute; width:22px; height:22px; border:1px solid var(--signal)}
.console::before{left:10px; top:10px; border-right:0; border-bottom:0}
.console::after{right:10px; bottom:10px; border-left:0; border-top:0}
.console h2{margin:12px 0 10px; color:var(--bone); font-size:clamp(1.6rem,3vw,2.6rem); line-height:1.02; letter-spacing:-.035em; text-wrap:balance}
.console .meta{color:#B9B7AE}
.console .hint{color:#B9B7AE}
.console .actions{margin-top:22px}
.console .btn{background:var(--bone); border-color:var(--bone); color:var(--g950)}
.console .btn:hover{background:#fff}
.console .btn.secondary{background:transparent; color:var(--bone); border-color:var(--g600)}
.console .btn.secondary:hover{border-color:var(--signal); color:var(--signal)}
.prog{display:flex; flex-direction:column; gap:12px}
.prog .big{font-family:var(--mono); font-size:3.8rem; line-height:1; font-weight:600; letter-spacing:-.04em; color:var(--bone)}
.prog .big small{font-size:1.3rem; color:var(--dim); font-weight:400; letter-spacing:0}
.prog .lbl{font-size:.92rem; color:#B9B7AE}

/* --- numeri in evidenza --- */
.stats{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); margin:0 0 36px}
.stat{background:var(--white); padding:20px 22px; display:flex; flex-direction:column; gap:6px}
.stat .v{font-family:var(--mono); font-size:2rem; line-height:1; font-weight:600; letter-spacing:-.03em}
.stat .v em{font-style:normal; color:var(--sig)}
.stat .v small{font-size:1rem; color:var(--mut); font-weight:400}
.stat .l{font-size:.9rem; color:var(--mut)}

/* --- due colonne della dashboard --- */
.cols{display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:40px; align-items:start}
.cols>div{min-width:0; display:flex; flex-direction:column; gap:36px}
.sec h2{margin:0 0 6px}

.one-col{max-width:860px}

/* --- percorso sequenziale: righe a filo --- */
.roadmap{list-style:none; margin:10px 0 0; padding:0; border-top:1px solid var(--line)}
.step{display:grid; grid-template-columns:40px minmax(0,1fr) auto; gap:18px; align-items:center; padding:16px 0; border-bottom:1px solid var(--line)}
.step .n{font-family:var(--mono); font-size:.8rem; color:var(--dim)}
.step h3{margin:0; font-size:1.02rem}
.step .d{font-size:.86rem; color:var(--mut); margin-top:2px}
.step .s{font-family:var(--mono); font-size:.76rem; white-space:nowrap; color:var(--mut)}
.step.done .n,.step.done .s{color:var(--sig)}
.step.current{background:var(--white); margin:0 -16px; padding:16px; border-left:2px solid var(--sig)}
.step.current .s{color:var(--ink); font-weight:500}
.step.locked h3{color:var(--mut); font-weight:500}
.step.locked .s{color:var(--dim)}
.step-actions{grid-column:2 / -1; display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:-6px}
.step-desc{grid-column:2 / -1; color:var(--mut); font-size:.92rem; margin:-6px 0 0}

/* --- notizie: lista a filo --- */
.news-list{list-style:none; padding:0; margin:0; border-top:1px solid var(--line)}
.news-item{padding:16px 0; border-bottom:1px solid var(--line); display:flex; flex-direction:column; gap:8px}
.news-meta{display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; font-family:var(--mono); font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--sig)}
.news-meta small{color:var(--dim); letter-spacing:0; text-transform:none; font-size:.76rem}
.news-title{font-weight:600; color:var(--ink); line-height:1.35; font-size:.98rem}
.news-title:hover{color:var(--sig)}
.news-cosa{margin:0; color:var(--mut); font-size:.92rem; line-height:1.5}
.news-cosa strong{color:var(--ink)}
.news-item .btn{align-self:flex-start}
.temi{display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 8px}
.temi .badge{cursor:pointer}
.temi .badge.on{background:var(--ink); color:var(--bone); border-color:var(--ink)}
.pager{display:flex; justify-content:space-between; gap:10px; margin:16px 0}

/* --- squadra e badge --- */
.rank{display:flex; flex-direction:column; border-top:1px solid var(--line)}
.rank li{list-style:none; display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:12px; padding:11px 0; border-bottom:1px solid var(--line); font-size:.96rem; align-items:center}
.rank{padding:0; margin:0}
.rank .pos{font-family:var(--mono); font-size:.76rem; color:var(--dim)}
.rank .rp{font-family:var(--mono); font-size:.82rem; color:var(--sig)}
.rank li.me{font-weight:700}
.rank li.me .pos{color:var(--ink)}
.rank em{font-style:normal; color:var(--mut); font-weight:500}
.badges{list-style:none; padding:0; margin:0; border-top:1px solid var(--line)}
.badges li{display:grid; grid-template-columns:28px minmax(0,1fr); gap:12px; align-items:center; padding:11px 0; border-bottom:1px solid var(--line)}
.badges .bicon{font-family:var(--mono); color:var(--dim)}
.badges li small{display:block; color:var(--mut)}
.badges li.on .bicon{color:var(--sig)}
.badges li.off strong{color:var(--mut); font-weight:500}

/* --- catalogo: gruppi chiudibili, schede a filo --- */
.catalog-group{padding:0; border:1px solid var(--line); background:var(--white); margin:12px 0}
.catalog-group>summary{list-style:none; cursor:pointer; padding:16px 20px}
.catalog-group>summary::-webkit-details-marker{display:none}
.group-head{display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; position:relative; padding-right:26px}
.group-head h3{margin:0}
.group-head .hint{font-family:var(--mono); font-size:.76rem}
.group-head::after{content:"+"; position:absolute; right:0; top:-2px; color:var(--mut); font-family:var(--mono); font-size:1.1rem}
.catalog-group[open] .group-head::after{content:"−"}
.catalog-group .bar{margin:0 20px}
.grid-cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:1px; background:var(--line); border-top:1px solid var(--line); margin-top:14px}
.mcard{background:var(--white); padding:16px 18px; display:flex; flex-direction:column; gap:8px; transition:background var(--fast) var(--ease)}
.mcard:hover{background:var(--paper)}
.mcard-band{display:flex; justify-content:space-between; gap:8px; font-family:var(--mono); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--mut)}
.mcard-band .lvl{color:var(--sig)}
.mcard.is-off .mcard-band .lvl{color:var(--dim)}
.mcard-title{margin:0; font-size:.98rem; font-weight:600; line-height:1.3}
.mcard-desc{color:var(--mut); font-size:.88rem; line-height:1.45; margin:0; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden}
.mcard-foot{margin-top:auto; padding-top:8px; display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap}
.mcard.is-off .mcard-title{color:var(--mut); font-weight:500}

/* --- attestati in dashboard --- */
.cert{display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:12px 18px; align-items:center; padding:12px 0; border-bottom:1px solid var(--line)}
.cert:last-child{border-bottom:0}
.cert .code{font-family:var(--mono); font-size:.8rem; color:var(--mut)}
.certs{border-top:1px solid var(--line)}

/* --- corso: indice e foglio --- */
.course-layout{display:grid; grid-template-columns:272px minmax(0,1fr); gap:40px; align-items:start; margin-top:18px}
.slide-index{position:sticky; top:72px}
.slide-index ol{list-style:none; margin:0; padding:0; border-top:1px solid var(--line)}
.slide-index a{display:grid; grid-template-columns:28px minmax(0,1fr); gap:12px; align-items:baseline; padding:12px 12px 12px 10px; border-bottom:1px solid var(--line); color:var(--mut); font-size:.92rem; line-height:1.35; border-left:2px solid transparent; min-height:44px}
.slide-index a:hover{color:var(--ink); text-decoration:none}
.slide-index a .sn{font-family:var(--mono); font-size:.76rem; color:var(--dim)}
.slide-index a.done{color:var(--ink)}
.slide-index a.done .sn{color:var(--sig)}
.slide-index a[aria-current="step"]{color:var(--ink); font-weight:600; background:var(--white); border-left-color:var(--sig)}
.slide-index a[aria-current="step"] .sn{color:var(--sig)}
.idxcap{font-size:.86rem; color:var(--mut); margin:12px 0 0; line-height:1.5}
.slide-index-mobile{display:none; background:var(--white); border:1px solid var(--line); padding:12px 14px; margin:0 0 12px}
.slide-index-mobile summary{cursor:pointer; font-weight:600}
.slide-index-mobile ol{list-style:none; margin:8px 0 0; padding:0}
.slide-index-mobile a{display:flex; gap:10px; padding:10px 0; color:var(--ink); border-bottom:1px solid var(--line)}
.slide-index-mobile .sn{font-family:var(--mono); font-size:.76rem; color:var(--dim)}
.sheet{background:var(--white); border:1px solid var(--line); padding:36px 44px 28px; position:relative; display:flex; flex-direction:column; gap:20px}
.sheet::before{content:''; position:absolute; left:0; right:0; top:0; height:3px; background:var(--sig)}
.slidebar{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap}
.slidenum{font-family:var(--mono); font-size:.74rem; letter-spacing:.14em; text-transform:uppercase; color:var(--mut)}
.slidebar .seg{width:200px}
.slidebar .seg i{height:6px}
.slide-title{margin:0; font-size:1.75rem; line-height:1.08; letter-spacing:-.03em; max-width:26ch}
.slide-body{font-size:1.06rem; line-height:1.65; max-width:66ch}
.slide-body p{margin:0 0 14px}
.slide-body ul,.slide-body ol{margin:0 0 14px; padding-left:1.2em}
.slide-body li{margin:6px 0}
.slide-nav{display:flex; justify-content:space-between; align-items:center; gap:12px; padding-top:22px; border-top:1px solid var(--line); flex-wrap:wrap}

/* --- slide: regola, esempio, attenzione, glossario, verifica --- */
.callout{position:relative; border:1px solid var(--line); padding:18px 22px; max-width:66ch; display:grid; grid-template-columns:auto minmax(0,1fr); gap:4px 20px; align-items:baseline; background:var(--paper)}
.callout::before,.callout::after{content:''; position:absolute; width:14px; height:14px; border:1px solid var(--sig)}
.callout::before{left:-1px; top:-1px; border-right:0; border-bottom:0}
.callout::after{right:-1px; bottom:-1px; border-left:0; border-top:0}
.callout .k{font-family:var(--mono); font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--sig); grid-row:span 2; padding-top:4px}
.callout strong{font-size:1rem; font-weight:700}
.callout p{margin:0; font-size:.95rem; line-height:1.55; color:var(--ink2)}
.callout.esempio::before,.callout.esempio::after{border-color:var(--ink)}
.callout.esempio .k{color:var(--ink)}
.callout.attenzione::before,.callout.attenzione::after{border-color:var(--ko)}
.callout.attenzione .k{color:var(--ko)}
.glossario{display:grid; grid-template-columns:150px minmax(0,1fr); gap:8px 24px; max-width:66ch; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:14px 0; margin:0}
.glossario dt{font-family:var(--mono); font-size:.86rem; font-weight:600; margin:0}
.glossario dd{margin:0; font-size:.95rem; line-height:1.5; color:var(--ink2)}
.check{max-width:66ch; border:0; padding:0; margin:0}
.check legend{font-weight:700; font-size:1rem; padding:0; margin-bottom:8px}
.check-opt{display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--line); margin:8px 0 0; cursor:pointer; font-size:.95rem; line-height:1.45; min-height:44px}
.check-opt:hover{border-color:var(--sig)}
.check-opt input{margin:3px 0 0; accent-color:var(--sig); width:16px; height:16px; flex:none}
.check-opt:has(input:checked){border-color:var(--sig); background:var(--ok-bg)}
.check-fb{display:none; margin:6px 0 0; font-weight:600; padding:6px 14px; font-size:.92rem}
.check-opt:has(input:checked)+.check-fb{display:block}
.check-fb.ok{color:var(--sig-deep)}
.check-fb.ko{color:var(--ko)}
.fig{margin:0; max-width:66ch; border:1px solid var(--line); padding:14px; background:var(--white)}
.fig svg{display:block; width:100%; height:auto; max-width:640px; margin:0 auto}
.fig figcaption{color:var(--mut); font-size:.88rem; margin-top:10px; text-align:center}

/* --- Cybì, l'assistente del corso: widget di chat, bottone tondo in basso a destra --- */
.bot{position:fixed; right:22px; bottom:22px; z-index:60}
.bot-btn{list-style:none; cursor:pointer; width:56px; height:56px; border-radius:50%; background:var(--white); color:var(--ink); display:flex; align-items:center; justify-content:center; box-shadow:0 10px 28px rgba(21,23,28,.3), 0 0 0 3px var(--white), 0 0 0 5px var(--sig); overflow:hidden; transition:transform var(--fast) var(--ease), background var(--fast) var(--ease)}
.bot-ico-chat{width:100%; height:100%; object-fit:cover; object-position:50% 12%; transform:scale(1.35); transform-origin:50% 25%}
.bot-btn::-webkit-details-marker{display:none}
.bot-btn:hover{transform:scale(1.06); background:var(--sig)}
.bot-ico-close{display:none}
.bot[open] .bot-btn{background:var(--ink); color:var(--bone)}
.bot[open] .bot-ico-chat{display:none}
.bot[open] .bot-ico-close{display:block}
.bot-panel{position:absolute; right:0; bottom:70px; width:min(390px, calc(100vw - 32px)); height:min(620px, 74vh); display:flex; flex-direction:column; background:var(--white); color:var(--ink); border-radius:18px; box-shadow:0 24px 70px rgba(21,23,28,.3); overflow:hidden; border:1px solid var(--line); transform-origin:bottom right; animation:bot-in .22s var(--ease)}
@keyframes bot-in{from{opacity:0; transform:translateY(12px) scale(.96)} to{opacity:1; transform:none}}
.bot-head{display:flex; align-items:center; gap:12px; padding:14px 16px; background:var(--g900); color:var(--bone); flex:none}
.bot-head strong{display:block; font-size:1rem; letter-spacing:-.01em}
.bot-head small{display:flex; align-items:center; gap:6px; color:#B9B7AE; font-size:.8rem}
.bot-dot{width:8px; height:8px; border-radius:50%; background:var(--signal); box-shadow:0 0 10px var(--signal)}
.bot-avatar{flex:none; width:40px; height:40px; border-radius:50%; object-fit:cover; object-position:50% 15%; background:var(--white); box-shadow:0 0 0 2px var(--g900), 0 0 0 3.5px var(--signal)}
.bot-msgs{flex:1; min-height:0; overflow:auto; padding:16px; display:flex; flex-direction:column; gap:10px; background:var(--bone)}
.bubble{max-width:86%; padding:10px 14px; font-size:.95rem; line-height:1.5; animation:bot-in .18s var(--ease)}
.bubble p{margin:0}
.bubble .fonte{display:inline-flex; align-items:center; gap:6px; margin-top:8px; font-family:var(--mono); font-size:.72rem; color:var(--sig); border:1px solid var(--sig); border-radius:999px; padding:2px 10px; text-decoration:none}
.bubble .fonte::before{content:'→'}
.bubble .fonte:hover{background:var(--ok-bg)}
.bubble.from-bot{align-self:flex-start; background:var(--white); border-radius:16px 16px 16px 4px; box-shadow:0 1px 2px rgba(21,23,28,.08)}
.bubble.from-me{align-self:flex-end; background:var(--sig-deep); color:#fff; border-radius:16px 16px 4px 16px}
.bubble.typing{display:flex; gap:5px; padding:14px 16px}
.bubble.typing i{width:7px; height:7px; border-radius:50%; background:var(--dim); animation:dots 1.1s infinite ease-in-out}
.bubble.typing i:nth-child(2){animation-delay:.15s} .bubble.typing i:nth-child(3){animation-delay:.3s}
@keyframes dots{0%,80%,100%{opacity:.3; transform:translateY(0)} 40%{opacity:1; transform:translateY(-3px)}}
.bot-chips{display:flex; gap:8px; flex-wrap:wrap; padding:10px 12px 0; background:var(--white); flex:none}
.chip{border:1px solid var(--line2); background:var(--white); color:var(--ink); border-radius:999px; padding:7px 12px; font:500 .84rem var(--sans); cursor:pointer; min-height:36px}
.chip:hover{border-color:var(--sig); color:var(--sig)}
.chat-form{display:flex; gap:8px; align-items:center; margin:0; padding:10px 12px; background:var(--white); flex:none}
.chat-form label{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
.chat-form input{flex:1; min-width:0; border:1px solid var(--line2); border-radius:999px; padding:10px 16px; min-height:44px; font:400 .95rem var(--sans); background:var(--white)}
.chat-form input:focus{border-color:var(--sig); outline:none; box-shadow:0 0 0 3px rgba(19,122,82,.15)}
.chat-form input:disabled{opacity:.6}
.chat-form button{flex:none; width:44px; height:44px; border-radius:50%; border:0; background:var(--sig-deep); color:#fff; display:flex; align-items:center; justify-content:center; cursor:pointer}
.chat-form button:hover{background:var(--sig)}
.bot-foot{margin:0; padding:0 16px 12px; font-size:.72rem; color:var(--dim); background:var(--white); flex:none}
@media (max-width:719px){ .bot{right:14px; bottom:14px} .bot-panel{bottom:72px; height:min(560px, 70vh)} }
@media (prefers-reduced-motion:reduce){ .bot-panel,.bubble{animation:none} }

/* --- quiz --- */
.qnav{list-style:none; display:flex; flex-wrap:wrap; gap:6px; padding:0; margin:12px 0}
.qnav a{display:inline-flex; width:40px; height:40px; align-items:center; justify-content:center; border:1px solid var(--line2); color:var(--ink); font-family:var(--mono); font-size:.86rem; background:var(--white)}
.qnav a:hover{border-color:var(--sig); color:var(--sig); text-decoration:none}
fieldset{border:0; border-top:1px solid var(--line); margin:0; padding:20px 0}
legend{font-weight:700; padding:0 12px 0 0; font-size:1.02rem; float:left; width:100%; margin-bottom:10px}
.qnum{display:block; color:var(--mut); font-family:var(--mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.14em; font-weight:500; margin-bottom:4px}
.opt{display:flex; align-items:flex-start; gap:12px; padding:12px 14px; border:1px solid var(--line); cursor:pointer; margin:8px 0 0; font-weight:400; color:var(--ink); min-height:44px; clear:both}
.opt:hover{border-color:var(--sig)}
.opt:has(input:checked){border-color:var(--ink); background:var(--paper)}
.opt input[type=radio],.opt input[type=checkbox]{margin:4px 0 0; accent-color:var(--sig); width:16px; height:16px; flex:none}
.form-foot{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin-top:16px; padding-top:16px; border-top:1px solid var(--line)}

/* --- risultato --- */
.result{position:relative}
.result::before{content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--sig)}
.result.ko::before{background:var(--ko)}
.result h1{margin-top:.2em}
.result .pct{font-family:var(--mono); font-weight:600; color:var(--sig)}
.result.ko .pct{color:var(--ko)}
.review{border-left:2px solid var(--line2); padding:10px 16px; margin:12px 0; background:var(--paper)}
.review.ok{border-color:var(--sig)}
.review.ko{border-color:var(--ko)}
.review .q{font-weight:600; margin-top:0}
.review .exp{color:var(--mut); font-size:.92rem}
.review .g{font-family:var(--mono); font-size:.8rem; margin-right:6px}
.review.ok .g{color:var(--sig)}
.review.ko .g{color:var(--ko)}

/* --- form --- */
form label{display:block; color:var(--mut); font-size:.86rem; margin:14px 0 6px; font-weight:600}
input[type=text],input[type=email],input[type=password],input[type=search],input:not([type]),select{width:100%; padding:10px 12px; border:1px solid var(--line2); background:var(--white); color:var(--ink); font:inherit; min-height:44px}
input:focus,select:focus{outline:3px solid var(--sig); outline-offset:0; border-color:var(--sig)}
input[type=radio],input[type=checkbox]{accent-color:var(--sig)}
details.edit summary{cursor:pointer; color:var(--sig); font-weight:600; min-height:36px; display:inline-flex; align-items:center}

/* --- registro admin --- */
.reg-card{padding:16px}
.toolbar{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin:0 0 12px}
.toolbar input[type=search]{flex:1 1 220px; max-width:360px}
.toolbar select{width:auto; min-height:40px; padding:6px 10px; font-size:.9rem}
.toolbar .hint{font-family:var(--mono); font-size:.78rem}
.reg-wrap{overflow-x:auto; border:1px solid var(--line); background:var(--white); -webkit-overflow-scrolling:touch}
table.reg{border-collapse:separate; border-spacing:0; width:max-content; min-width:100%; font-size:.9rem}
table.reg th,table.reg td{border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:8px 10px; text-align:left; vertical-align:top; background:var(--white)}
table.reg thead th{background:var(--paper); color:var(--mut); font-family:var(--mono); font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; font-weight:500; vertical-align:bottom}
table.reg th.mod{min-width:110px; max-width:140px; line-height:1.3; overflow-wrap:anywhere; text-transform:none; letter-spacing:0; font-family:var(--sans); font-size:.78rem; font-weight:600; color:var(--ink)}
table.reg td.c{min-width:92px; font-family:var(--mono); font-size:.82rem}
table.reg td:first-child,table.reg th:first-child{position:sticky; left:0; z-index:1; min-width:230px; overflow-wrap:anywhere}
table.reg thead th:first-child{z-index:2}
table.reg td small,table.reg th small{display:block; font-weight:400; font-family:var(--sans); text-transform:none; letter-spacing:0}
td.ok{color:var(--sig-deep); font-weight:600}
td.part{color:var(--warn)}
form.assign{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
form.assign select{width:auto; min-height:36px; padding:4px 8px; font-size:.88rem; max-width:100%}
.user-actions{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.user-actions form{margin:0}
.secret{background:var(--g950); color:var(--bone); border:1px solid var(--g700); padding:18px 22px; margin:14px 0}
.secret h2{color:var(--bone); margin:0 0 6px; font-size:1.1rem}
.secret p{color:#B9B7AE; margin:4px 0}
.secret code{background:var(--g900); border-color:var(--g700); color:var(--signal); font-size:1.05rem; padding:6px 12px}
.print-hint{text-align:center}

/* --- responsive --- */
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed; top:0; bottom:0; left:0; width:264px; height:auto; z-index:40; transform:translateX(-100%); transition:transform .2s var(--ease); box-shadow:0 8px 24px rgba(0,0,0,.3)}
  .nav-toggle:checked ~ .sidebar{transform:none}
  .menu-btn{display:inline-flex}
  .brand-top{display:inline-flex}
  .topbar{padding:0 16px; gap:10px}
  .topbar .who{display:none}
  .app-main{padding:20px 16px 72px}
  .console{grid-template-columns:1fr; padding:28px 22px; gap:28px}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cols{grid-template-columns:1fr}
  .course-layout{grid-template-columns:1fr}
  .slide-index{display:none}
  .slide-index-mobile{display:block}
  .sheet{padding:24px 18px}
  .landing{grid-template-columns:1fr; margin:24px 0}
  footer{padding:20px 16px}
  .public-header{padding:0 16px}
}
@media (max-width:480px){
  .card{padding:16px}
  .step{grid-template-columns:32px minmax(0,1fr)}
  .step .s{grid-column:2}
  .step-actions,.step-desc{grid-column:1 / -1}
  .step.current{margin:0 -8px; padding:14px 8px}
  .grid-cards{grid-template-columns:1fr}
  .cert{grid-template-columns:1fr}
  .cert .btn{width:100%}
  .login-card{padding:22px 18px}
  .prog .big{font-size:2.8rem}
  .stats{grid-template-columns:1fr}
  .glossario,.callout{grid-template-columns:1fr}
  .callout .k{grid-row:auto}
  table.reg td:first-child,table.reg th:first-child{min-width:160px}
  .toolbar select,.toolbar input[type=search]{width:100%; max-width:none; flex:1 1 100%}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important; animation:none!important; scroll-behavior:auto!important}}

/* --- sito pubblico: home, pagine tematiche, catalogo pubblico, schede corso --- */
.public-main{max-width:none; padding:0}
.pub{max-width:1180px; margin:0 auto; padding-block:24px 40px; padding-left:max(16px, env(safe-area-inset-left, 0px)); padding-right:max(16px, env(safe-area-inset-right, 0px)); display:flex; flex-direction:column; gap:72px}
.pub-nav{display:flex; align-items:center; gap:22px}
.pub-link{color:var(--ink); font-weight:500; font-size:.95rem}
.pub-link:hover{color:var(--sig); text-decoration:none}
.pub-lede{font-size:1.15rem; line-height:1.6; color:var(--ink2); max-width:62ch}
.pub-hero{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:56px; align-items:center; background:var(--g950); color:var(--bone); padding:56px; margin-top:16px; position:relative; background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px); background-size:48px 48px}
.pub-hero::before,.pub-hero::after{content:''; position:absolute; width:24px; height:24px; border:1px solid var(--signal)}
.pub-hero::before{left:12px; top:12px; border-right:0; border-bottom:0}
.pub-hero::after{right:12px; bottom:12px; border-left:0; border-top:0}
.pub-hero h1{color:var(--bone); font-size:clamp(2rem,4.2vw,3.4rem); line-height:1.02; letter-spacing:-.04em; margin:16px 0 18px; text-wrap:balance}
.pub-hero .pub-lede{color:#B9B7AE}
.pub-hero .btn{background:var(--bone); color:var(--g950); border-color:var(--bone)}
.pub-hero .btn.secondary{background:transparent; color:var(--bone); border-color:var(--g600)}
.pub-hero .btn.secondary:hover{border-color:var(--signal); color:var(--signal)}
.pub-mail{margin:0}
.mail-card{background:var(--paper); color:var(--ink); border:1px solid var(--line2); box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.mail-bar{display:flex; gap:6px; padding:10px 14px; background:#E6E3DA; border-bottom:1px solid var(--line)}
.mail-bar i{width:10px; height:10px; border-radius:50%; background:var(--line2)}
.mail-head{padding:14px 18px; font:400 .86rem/1.8 var(--mono); color:var(--mut); border-bottom:1px solid var(--line)}
.mail-head b{color:var(--ink); font-weight:500}
.mail-body{padding:16px 18px}
.mail-body p{margin:0 0 14px}
.fake{display:inline-block; background:var(--sig-deep); color:#fff; padding:9px 16px; font-weight:700}
.flag{outline:2px dashed var(--ko); outline-offset:3px}
.pub-mail figcaption{margin-top:14px; font-size:.9rem; color:#B9B7AE}
.pub-stats{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:-40px}
.pub-stats div{background:var(--white); padding:22px 24px; display:flex; flex-direction:column; gap:6px}
.pub-stats b{font-family:var(--mono); font-size:2rem; font-weight:600; letter-spacing:-.03em; color:var(--sig)}
.pub-stats span{color:var(--mut); font-size:.92rem}
.pub-sec h2,.pub-article h2,.pub-group h2{font-size:clamp(1.5rem,2.6vw,2.1rem); letter-spacing:-.03em; margin:0 0 12px; text-wrap:balance}
.pub-cards{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:28px}
.pub-card{background:var(--white); padding:28px; color:var(--ink); display:flex; flex-direction:column; gap:10px; transition:background var(--fast) var(--ease)}
.pub-card:hover{background:var(--paper); text-decoration:none}
.pub-card h3{margin:0; font-size:1.2rem}
.pub-card p{margin:0; color:var(--mut); line-height:1.55}
.pub-more{margin-top:auto; color:var(--sig); font-weight:600; font-size:.92rem}
.pub-more::after{content:' →'}
.pub-steps{list-style:none; counter-reset:st; padding:0; margin:28px 0 0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px}
.pub-steps li{counter-increment:st; border-top:2px solid var(--ink); padding-top:16px}
.pub-steps li::before{content:counter(st, decimal-leading-zero); font-family:var(--mono); color:var(--sig); font-size:.85rem}
.pub-steps h3{margin:6px 0 8px; font-size:1.08rem}
.pub-steps p{margin:0; color:var(--mut); font-size:.95rem; line-height:1.55}
.pub-shots{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px; margin-top:40px; align-items:start}
.pub-shots img,.pub-split img{display:block; width:100%; height:auto; border:1px solid var(--line); box-shadow:0 30px 60px -36px rgba(21,23,28,.45)}
.pub-shots figure{margin:0}
.pub-shots figcaption{margin-top:10px; font-size:.9rem; color:var(--mut)}
.pub-split{display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:48px; align-items:center}
.pub-who{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 48px; margin-top:24px}
.pub-who h3{margin:0 0 6px}
.pub-who p{margin:0; color:var(--mut); line-height:1.55}
.pub-faq{border-top:1px solid var(--line); margin-top:16px; max-width:820px}
.pub-faq details{border-bottom:1px solid var(--line); padding:4px 0}
.pub-faq summary{list-style:none; cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:16px; padding:14px 0; min-height:44px}
.pub-faq summary::-webkit-details-marker{display:none}
.pub-faq summary::after{content:'+'; font-family:var(--mono); color:var(--mut); font-size:1.2rem}
.pub-faq details[open] summary::after{content:'−'}
.pub-faq summary h3{margin:0; font-size:1.05rem; letter-spacing:-.01em}
.pub-faq p{margin:0 0 16px; color:var(--ink2); line-height:1.65; max-width:70ch}
.pub-cta{background:var(--g950); color:var(--bone); padding:48px 56px; display:flex; flex-direction:column; gap:12px}
.pub-cta h2{color:var(--bone); margin:0; font-size:clamp(1.5rem,2.6vw,2.1rem); letter-spacing:-.03em}
.pub-cta p{color:#B9B7AE; margin:0}
.pub-cta .btn{background:var(--bone); color:var(--g950); border-color:var(--bone)}
.pub-cta .btn.secondary{background:transparent; color:var(--bone); border-color:var(--g600)}
.pub-article{max-width:820px; display:flex; flex-direction:column; gap:20px}
.pub-article h1{font-size:clamp(1.9rem,3.6vw,2.9rem); line-height:1.05; letter-spacing:-.035em; margin:0; text-wrap:balance}
.pub-article section{display:flex; flex-direction:column; gap:8px}
.pub-points{padding-left:1.2em; margin:0; line-height:1.65; color:var(--ink2)}
.pub-points li{margin:6px 0}
.pub-points li::marker{color:var(--sig)}
.pub-list{list-style:none; padding:0; margin:0; border-top:1px solid var(--line)}
.pub-list li{display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:12px 0; border-bottom:1px solid var(--line)}
.pub-list a{font-weight:600}
.pub-list .mono{color:var(--mut); font-size:.82rem}
.pub-related{display:flex; flex-wrap:wrap; gap:10px}
.pub-related a{border:1px solid var(--line2); padding:8px 14px; color:var(--ink); font-weight:500}
.pub-related a:hover{border-color:var(--sig); color:var(--sig); text-decoration:none}
.pub-group .grid-cards{border:1px solid var(--line)}
a.pub-mcard{color:var(--ink)}
a.pub-mcard:hover{text-decoration:none; background:var(--paper)}
.pub-foot{display:flex; flex-direction:column; gap:24px; text-align:left; padding:40px max(16px, env(safe-area-inset-left, 0px)); background:var(--g900); color:#B9B7AE; border-top:0}
.pub-foot-cols{max-width:1180px; width:100%; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr; gap:32px}
.pub-foot .k{font-family:var(--mono); font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--dim); margin:0 0 10px}
.pub-foot p{margin:0 0 8px; line-height:1.55}
.pub-foot nav{display:flex; flex-direction:column; gap:8px}
.pub-foot a{color:var(--bone)}
.pub-foot .hint{max-width:1180px; width:100%; margin:0 auto; color:var(--dim)}
@media (max-width:900px){
  .pub{gap:56px}
  .pub-hero{grid-template-columns:1fr; padding:32px 22px; gap:32px}
  .pub-stats{grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:-24px}
  .pub-cards,.pub-who,.pub-shots,.pub-split,.pub-foot-cols{grid-template-columns:1fr}
  .pub-steps{grid-template-columns:1fr 1fr}
  .pub-cta{padding:32px 22px}
  .pub-link{display:none}
}
@media (max-width:480px){ .pub-steps{grid-template-columns:1fr} .pub-stats{grid-template-columns:1fr 1fr} }

/* --- panoramica del referente --- */
.stat .v.v-ko{color:var(--ko)}
.stat .v.v-warn{color:var(--warn)}
.mini-bar{height:6px; background:#E6E3DA; width:140px; max-width:100%; margin:6px 0 2px}
.mini-bar span{display:block; height:100%; background:var(--sig)}
td.td-ko{color:var(--ko); font-weight:600}
.dash-perc input[type=date]{width:auto; min-height:36px; padding:4px 8px; font-size:.88rem}
.soll{list-style:none; margin:8px 0 0; padding:0; border-top:1px solid var(--line)}
.soll li{display:grid; grid-template-columns:minmax(0,1fr) auto auto auto; gap:14px; align-items:center; padding:12px 0; border-bottom:1px solid var(--line)}
.soll li.soll-2{grid-template-columns:minmax(0,1fr) auto}
.soll-who small,.soll-num small,.soll-st small{display:block; color:var(--mut); font-size:.8rem}
.soll-num{text-align:right; font-size:.95rem}
.soll-st{display:flex; flex-direction:column; align-items:flex-end; gap:4px; text-align:right}
.badge.st-scaduto{color:var(--ko); border-color:var(--ko); background:var(--ko-bg)}
.badge.st-ritardo{color:var(--warn); border-color:#B7791F; background:var(--warn-bg)}
.badge.st-mai{color:var(--mut); border-color:var(--line2)}
.badge.st-regola,.badge.st-completato{color:var(--sig-deep); border-color:var(--sig)}
.badge.st-corso{color:var(--ink); border-color:var(--line2)}
table.reg th .badge{margin-top:6px}
.console .scad{margin-top:14px; font-family:var(--mono); font-size:.8rem; color:#B9B7AE}
.console .scad b{color:var(--bone); font-weight:600}
.console .scad.late b{color:#F2B8B5}
@media (max-width:719px){ .soll li{grid-template-columns:1fr auto} .soll li .btn{grid-column:1 / -1} .soll-st{align-items:flex-start; text-align:left} }

.soll-act{display:flex; flex-direction:column; align-items:flex-end; gap:4px}
.soll-act small{color:var(--mut); font-size:.76rem}
.soll-act form,.actions form{margin:0}
.link-list{list-style:none; padding:0; margin:8px 0 0; display:flex; flex-direction:column; gap:8px}
.link-list li{display:flex; flex-direction:column; gap:2px}
.link-list code{word-break:break-all; font-size:.8rem}
.import-form{max-width:640px}
.import-form input[type=file]{padding:8px; border:1px dashed var(--line2); width:100%; background:var(--paper)}
details.err summary{cursor:pointer}
details.err ul{margin:8px 0 0; padding-left:1.2em; font-weight:400}
