/* Piattaforma esami · palette dal sigillo UniMe: blu #006DAE, grigio #949493; font Lato (OFL) */
@font-face{font-family:Lato;font-weight:400;font-style:normal;font-display:swap;src:url(/static/fonts/Lato-Regular.woff2) format("woff2")}
@font-face{font-family:Lato;font-weight:400;font-style:italic;font-display:swap;src:url(/static/fonts/Lato-Italic.woff2) format("woff2")}
@font-face{font-family:Lato;font-weight:600;font-style:normal;font-display:swap;src:url(/static/fonts/Lato-Semibold.woff2) format("woff2")}
@font-face{font-family:Lato;font-weight:700;font-style:normal;font-display:swap;src:url(/static/fonts/Lato-Bold.woff2) format("woff2")}
:root{
  color-scheme:light;
  --blue:#006DAE;--blue-dark:#004f7e;--blue-deep:#00385a;--blue-soft:#e6f1f8;--blue-line:#b9d7ea;
  --grey:#949493;--bg:#f2f5f8;--fg:#1c2733;--muted:#5f6b78;--card:#fff;--line:#dbe2ea;
  --accent:var(--blue);--accent-fg:#fff;--ok:#16794a;--ok-soft:#e5f5ec;--bad:#b3261e;--bad-soft:#fdeceb;--warn:#fff6d8;--bit:#eef3f8;
  --shadow:0 1px 2px rgba(0,56,90,.06),0 4px 14px rgba(0,56,90,.07);--radius:12px;
  --font:Lato,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.55 var(--font);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--blue-dark)}a:hover{color:var(--blue)}
:focus-visible{outline:3px solid #7cb9e0;outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--font);color:var(--blue-deep);line-height:1.25;letter-spacing:-.01em}
h1{font-size:1.75rem;margin:1.4rem 0 .6rem;font-weight:700}
h1::after{content:"";display:block;width:56px;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--blue),var(--grey));margin-top:.55rem}
h2{font-size:1.25rem;margin:.2rem 0 .7rem;font-weight:700}h3{font-size:1.05rem;font-weight:700}
.muted{color:var(--muted)}.small{font-size:.88rem}.big{font-size:1.5rem}

/* ---------- intestazione e piè di pagina ---------- */
.top{background:linear-gradient(135deg,var(--blue-dark),var(--blue));color:#fff;display:flex;align-items:center;gap:1rem;padding:.65rem clamp(1rem,3vw,2rem);flex-wrap:wrap;box-shadow:0 2px 10px rgba(0,56,90,.25);position:relative;z-index:5}
.top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#fff3 0,#fff0 60%)}
.brand{display:flex;align-items:center;gap:.9rem;text-decoration:none;color:#fff;min-width:0}
.brand img{height:50px;width:auto;display:block}
.brand .bt{display:flex;flex-direction:column;line-height:1.15}
.brand .bt b{font-size:1.12rem;font-weight:700;letter-spacing:.005em}
.brand .bt small{font-size:.76rem;opacity:.85;font-weight:400;letter-spacing:.02em}
.top nav{margin-left:auto;display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.top nav a,.top nav span{color:#fff;text-decoration:none;padding:.35rem .75rem;border-radius:999px;font-size:.95rem;font-weight:600}
.top nav a:hover{background:#ffffff26;color:#fff}.top nav span{font-weight:400;opacity:.9}
.top nav a.on{background:#fff;color:var(--blue-dark)}
.tag{background:#ffffff2e;border:1px solid #ffffff55;color:#fff;border-radius:999px;font-size:.72rem;padding:.1rem .55rem;margin-left:.4rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;align-self:center}
main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:.4rem 16px 2.5rem}
.foot{background:#fff;border-top:1px solid var(--line);color:var(--muted);font-size:.84rem;padding:.9rem 1rem;display:flex;gap:.8rem;align-items:center;justify-content:center;text-align:center;flex-wrap:wrap}
.foot img{height:30px;width:auto}

/* ---------- componenti ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.35rem;margin:1rem 0;box-shadow:var(--shadow)}
.card>h2:first-child,.card>h1:first-child{margin-top:.1rem}
label{display:block;margin:.8rem 0;font-weight:600;font-size:.95rem;color:var(--blue-deep)}
input[type=text],input:not([type]),input[type=password],input[type=number],select,textarea{width:100%;padding:.62rem .8rem;border:1.5px solid #c7d2de;border-radius:8px;background:#fff;color:var(--fg);font:inherit;margin-top:.3rem;transition:border-color .12s,box-shadow .12s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #006dae26}
input[type=checkbox],input[type=radio]{accent-color:var(--blue);width:1.05rem;height:1.05rem}
input[type=file]{font:inherit}
form.inline{display:flex;gap:.9rem;align-items:end;flex-wrap:wrap}form.inline label{margin:0}form.inline input,form.inline select{width:auto}
button,.btn{font:inherit;font-weight:600;padding:.55rem 1.05rem;border:1.5px solid var(--blue-line);border-radius:9px;background:#fff;color:var(--blue-dark);cursor:pointer;text-decoration:none;display:inline-block;transition:background .12s,border-color .12s,transform .05s,box-shadow .12s}
button:hover,.btn:hover{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-dark)}
button:active,.btn:active{transform:translateY(1px)}
button.primary,.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 2px 6px #006dae45}
button.primary:hover,.btn.primary:hover{background:var(--blue-dark);border-color:var(--blue-dark);color:#fff}
button.danger{color:var(--bad);border-color:#efc2bf}button.danger:hover{background:var(--bad-soft);border-color:var(--bad)}
button.link{border:none;background:none;color:var(--blue-dark);padding:0 .35rem;box-shadow:none;text-decoration:underline}
button:disabled{opacity:.5;cursor:default}
.btn.small{padding:.25rem .7rem;font-size:.88rem}
.alert{background:var(--bad-soft);color:#7a1710;padding:.7rem .95rem;border-radius:9px;border:1px solid #f1c3c0}
.alert.info{background:var(--blue-soft);color:var(--blue-deep);border-color:var(--blue-line)}
table{border-collapse:separate;border-spacing:0;width:100%;background:var(--card);margin:.7rem 0;border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:var(--shadow);font-size:.95rem}
th,td{padding:.5rem .75rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
tr:last-child td{border-bottom:none}
th{background:var(--blue-soft);color:var(--blue-deep);font-weight:700;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}
tbody tr:nth-child(even) td,table tr:nth-child(even) td{background:#fafcfe}
tr.warn td{background:var(--warn)!important}td.bad{color:var(--bad);font-weight:700}
.row{display:flex;gap:.6rem;margin:.7rem 0;flex-wrap:wrap}
.badge{display:inline-block;padding:.12rem .65rem;border-radius:999px;font-size:.78rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;vertical-align:middle}
.badge.open{background:var(--ok-soft);color:var(--ok);border:1px solid #b7e1c8}.badge.closed{background:#eceff2;color:#58636f;border:1px solid #d3d9df}
.chip{display:inline-block;background:var(--blue-soft);color:var(--blue-dark);border-radius:999px;padding:.1rem .65rem;font-size:.84rem;font-weight:600;margin-right:.35rem}
.stat{display:flex;gap:1rem;flex-wrap:wrap;margin:.5rem 0}.stat>div{flex:1;min-width:140px;background:var(--blue-soft);border-radius:10px;padding:.7rem 1rem;color:var(--blue-deep)}.stat b{display:block;font-size:1.6rem;line-height:1.1}

/* ---------- accesso ---------- */
body.login{background:linear-gradient(160deg,var(--blue-deep) 0,var(--blue-dark) 45%,var(--blue) 100%);min-height:100vh}
.loginwrap{flex:1;display:grid;grid-template-columns:1.05fr 1fr;max-width:1060px;width:100%;margin:auto;padding:2rem 1rem;gap:0;align-items:stretch}
.hero{color:#fff;padding:2.5rem 2rem;display:flex;flex-direction:column;justify-content:center;gap:1.2rem}
.hero img{width:min(210px,50vw);height:auto;filter:drop-shadow(0 6px 18px rgba(0,0,0,.28))}
.hero h1{color:#fff;font-size:2.15rem;margin:.2rem 0 0}.hero h1::after{background:linear-gradient(90deg,#fff,#ffffff66)}
.hero p{margin:0;opacity:.92;font-size:1.05rem;max-width:30rem}
.hero .uni{letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;opacity:.85;font-weight:700}
.logincard{background:#fff;border-radius:18px;padding:2rem 2.1rem;box-shadow:0 18px 50px rgba(0,25,45,.35);align-self:center}
.logincard h2{font-size:1.4rem;margin-top:0}
.logincard button.primary{width:100%;padding:.75rem;font-size:1.05rem;margin-top:.4rem}
.logincard .sep{display:flex;align-items:center;gap:.8rem;color:var(--muted);font-size:.85rem;margin:1.1rem 0}.sep::before,.sep::after{content:"";flex:1;height:1px;background:var(--line)}
.logincard .demo button{width:100%}
.logincard .legal{text-align:center;margin:1rem 0 0}
body.login .foot{background:transparent;border:none;color:#ffffffcc}body.login .foot a{color:#fff}

/* ---------- elenco prove ---------- */
.provecard{border-left:6px solid var(--blue);display:grid;grid-template-columns:1fr auto;gap:.4rem 1.2rem;align-items:center}
.provecard.closed{border-left-color:var(--grey)}.provecard h2{margin:0}
.provecard .meta{margin:.35rem 0 0}.provecard .act{grid-row:1/3;grid-column:2;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.provecard form{margin:0}
@media(max-width:640px){.provecard{grid-template-columns:1fr}.provecard .act{grid-row:auto;grid-column:1;justify-content:flex-start}}

/* ---------- prova ---------- */
body.exam{background:#eaeff4}
.examtop{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:1rem;padding:.45rem clamp(.8rem,2vw,1.4rem);background:linear-gradient(135deg,var(--blue-dark),var(--blue));color:#fff;box-shadow:0 3px 12px rgba(0,40,70,.3)}
.examtop img{height:38px;width:auto}
.et-title{font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:1.02rem}
.timer{font:700 1.45rem var(--mono);background:#00000030;border:1px solid #ffffff40;padding:.12rem .85rem;border-radius:10px;letter-spacing:.04em;min-width:5.6rem;text-align:center}
.timer.low{background:#b3261e;border-color:#ffb4ae;animation:pulse 1.2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px #b3261e55}}
.conn{font-size:.82rem;padding:.15rem .7rem;border-radius:99px;background:#ffffff26;white-space:nowrap}.conn.ok{color:#d6f5e4}.conn.busy{color:#fff}.conn.bad{background:#b3261e;color:#fff}
.examtop button.primary{background:#fff;color:var(--blue-dark);border-color:#fff;box-shadow:none}.examtop button.primary:hover{background:var(--blue-soft)}
.examwrap{display:flex;gap:1.1rem;max-width:1220px;margin:0 auto;padding:1.1rem;width:100%}
.qnav{position:sticky;top:4.3rem;align-self:flex-start;display:grid;grid-template-columns:repeat(3,2.4rem);gap:.4rem;max-height:calc(100vh - 5.5rem);overflow:auto;padding:.7rem;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.qnav button{padding:.2rem 0;text-align:center;border-radius:8px;font-size:.92rem}
.qnav button.done{background:var(--blue);color:#fff;border-color:var(--blue)}
.qlist{flex:1;min-width:0;padding:0;margin:0;max-width:none}
.qcard{background:#fff;border:1px solid var(--line);border-top:4px solid var(--blue);border-radius:var(--radius);padding:1.1rem 1.4rem 1.2rem;margin:0 0 1.1rem;scroll-margin-top:4.8rem;box-shadow:var(--shadow)}
.qcard h2{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-size:1.1rem;margin:0 0 .7rem}
.qcard h2::before{content:attr(data-n);display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;border-radius:50%;background:var(--blue);color:#fff;font-size:.95rem}
.qmeta{font-size:.78rem;font-weight:700;color:var(--blue-dark);background:var(--blue-soft);padding:.12rem .65rem;border-radius:999px;letter-spacing:.02em;text-transform:uppercase}
.qtext{white-space:pre-wrap;margin:.2rem 0 .9rem;font-size:1.05rem}
.opts{display:grid;gap:.45rem}.opts.inline{display:flex;gap:.8rem;flex-wrap:wrap}
.opt{display:flex;align-items:flex-start;gap:.65rem;font-weight:400;padding:.6rem .85rem;border:1.5px solid var(--line);border-radius:10px;cursor:pointer;margin:0;color:var(--fg);font-size:1rem;background:#fff;transition:border-color .1s,background .1s}
.opt:hover{border-color:var(--blue-line);background:#f7fbfe}
.opt:has(input:checked){border-color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px var(--blue)}
.opt input{margin-top:.28rem;flex:none}
input.ans{max-width:26rem;font-family:var(--mono)}
.codebox{font:14.5px/1.5 var(--mono);tab-size:2;white-space:pre;overflow:auto;min-height:14rem;background:#0f2433;color:#e4eef6;border:1.5px solid #0f2433;border-radius:10px;padding:.8rem 1rem}
.codebox:focus{border-color:var(--blue);box-shadow:0 0 0 3px #006dae40}
pre.sig,pre.code,pre.err{background:#f1f6fa;border:1px solid var(--blue-line);border-left:4px solid var(--blue);border-radius:8px;padding:.55rem .85rem;overflow:auto;font:14px/1.5 var(--mono);margin:.5rem 0}
pre.err{border-left-color:var(--bad);background:var(--bad-soft);color:#7a1710}
.runout .ok{color:var(--ok);margin:.25rem 0;font:.9rem var(--mono)}.runout .ko{color:var(--bad);margin:.25rem 0;font:.9rem var(--mono)}
button.run{background:var(--blue-soft)}
table.res{width:auto;font-size:.9rem}
.bits{display:flex;gap:.4rem;flex-wrap:wrap}.bitcol{display:flex;flex-direction:column;align-items:center;gap:.25rem}.bitcol .w{font-size:.72rem;color:var(--muted);font-weight:700}
button.bit{width:2.8rem;height:3rem;font:700 1.4rem var(--mono);background:var(--bit);border-color:#c9d6e2;padding:0}button.bit.on{background:var(--blue);color:#fff;border-color:var(--blue-dark)}
.bitsread{margin-top:.7rem;font:.92rem var(--mono);color:var(--blue-deep);background:var(--blue-soft);padding:.45rem .75rem;border-radius:8px;word-break:break-all}
table.truth{width:auto}table.truth td,table.truth th{text-align:center;min-width:3.2rem}button.tv{width:3.2rem;font-weight:700;padding:.3rem 0}button.tv.on{background:var(--blue);color:#fff}
.fcbar{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.6rem}.fcbar button{padding:.35rem .8rem;font-size:.93rem}
.fcsvg{background:#fff;background-image:radial-gradient(#d6e0ea 1px,transparent 1px);background-size:22px 22px;border:1.5px solid var(--blue-line);border-radius:10px;touch-action:none;user-select:none;color:var(--blue-deep)}
.fcnode path,.fcnode rect,.fcnode polygon{fill:#fff;stroke:var(--blue-dark);stroke-width:1.8}.fcnode text{fill:var(--fg);font:600 13px var(--font);pointer-events:none}
.fcnode.start rect,.fcnode.end rect{fill:var(--blue-soft)}.fcnode.decision polygon{fill:#fff8e1;stroke:#9a6b00}
.fcnode.sel rect,.fcnode.sel polygon{stroke:var(--blue);stroke-width:3.5}.fcnode.link rect,.fcnode.link polygon{stroke:var(--ok);stroke-width:3.5}.fcnode{cursor:grab}.fcnode:active{cursor:grabbing}
.fcedge{stroke:var(--blue-deep);stroke-width:1.8}.fcedge.sel{stroke:var(--blue);stroke-width:3.5}.fchit{stroke:transparent;stroke-width:14;cursor:pointer}.fclabel{fill:var(--blue-dark);font:700 13px var(--font)}
.fcpanel{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap;margin-top:.6rem;min-height:2.7rem;padding:.55rem .8rem;background:var(--blue-soft);border-radius:10px}.fcpanel input.fctext{width:19rem;margin:0}
.ertables{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin:.7rem 0}
.ertable{border:1.5px solid var(--blue-line);border-radius:10px;padding:.65rem;background:#f7fbfe}.erhead{display:flex;gap:.4rem}.ername{font-weight:700}
table.ercols{box-shadow:none}table.ercols td,table.ercols th{padding:.2rem .35rem}table.ercols input[type=text],table.ercols select{margin:0}
.modal{position:fixed;inset:0;background:rgba(0,30,50,.6);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50}.modal[hidden]{display:none}
.modal-box{background:#fff;padding:1.6rem;border-radius:14px;max-width:30rem;border-top:5px solid var(--blue);box-shadow:0 20px 60px rgba(0,0,0,.35)}
.review .opts li{list-style:none}.review .opts li.mine{font-weight:700;color:var(--blue-dark);text-decoration:underline}.review .note{color:var(--muted)}
.review .sol{background:var(--ok-soft);border-radius:8px;padding:.5rem .8rem}
.voto{display:inline-flex;align-items:baseline;gap:.6rem;background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:14px;padding:.6rem 1.3rem;margin:.4rem 0}.voto b{font-size:2.4rem;color:var(--blue-dark);line-height:1}
.demoribbon{background:#fff6d8;border-bottom:1px solid #ecd68a;color:#6b5200;text-align:center;font-size:.9rem;padding:.3rem}
@media(max-width:900px){.loginwrap{grid-template-columns:1fr;padding:1rem}.hero{padding:1.2rem .6rem;text-align:center;align-items:center}.hero h1::after{margin-inline:auto}}
@media(max-width:800px){.examwrap{flex-direction:column}.qnav{position:static;grid-template-columns:repeat(8,2.3rem);max-height:none}.et-title{display:none}}
@media print{.top,.foot,.examtop,.qnav,button{display:none}body{background:#fff}.card,.qcard{box-shadow:none}}
label:has(>input[type=checkbox]){display:flex;align-items:center;gap:.5rem;font-weight:600}
form.inline label:has(>input[type=checkbox]){padding-bottom:.55rem}
@media(max-width:900px){.hero img{width:104px}.hero p{display:none}.hero h1{font-size:1.6rem}.hero{gap:.7rem}}

/* aiuto */
.helpbar{display:flex;gap:.7rem;align-items:center;flex-wrap:wrap;margin:-.2rem 0 .8rem}
button.help{font-size:.88rem;padding:.22rem .8rem;border-style:dashed;color:#7a5200;border-color:#d9b24a;background:#fffbea}
button.help:hover{background:#fff3c4;border-color:#c99700;color:#5c3d00}
.helpnote{font-size:.82rem;color:var(--muted)}
.badge.help{background:#fff3c4;color:#7a5200;border:1px solid #e3c35c;text-transform:none;letter-spacing:0}
.hintbox{flex-basis:100%;background:#fff8e1;border:1px solid #ecd68a;border-left:4px solid #d9a400;border-radius:8px;padding:.55rem .85rem;white-space:pre-wrap;color:#4f3b00}
.opt.eliminated{opacity:.45;text-decoration:line-through;pointer-events:none;background:#f1f3f5}
.helpused{color:#8a5a00;font-size:.9rem;margin:.2rem 0}
pre.snippet{margin:.2rem 0 .9rem;font-size:14.5px}
/* flowchart: nuova barra e prova */
.fcbar{align-items:center}.fcbar .sp{flex:1}
.fcbar button.blk{border-left:4px solid var(--blue)}.fcbar button.blk.decision{border-left-color:#d9a400}.fcbar button.blk.end{border-left-color:var(--grey)}
.fcauto{display:inline-flex!important;align-items:center;gap:.35rem;margin:0!important;font-weight:400!important;font-size:.88rem;color:var(--muted)!important}
.fcwrap{outline:none;border-radius:10px}.fcwrap:focus-within .fcsvg{border-color:var(--blue)}
.fcsvg{display:block;width:100%;height:auto}
.fcchecks{font-size:.86rem;margin:.5rem 0;padding:.35rem .7rem;border-radius:8px}.fcchecks.ok{background:var(--ok-soft);color:var(--ok)}.fcchecks.warn{background:var(--warn);color:#6b5200}
.fcrun{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-top:.4rem;padding:.55rem .8rem;border:1.5px dashed var(--blue-line);border-radius:10px}
.fcrun .fcl{display:inline-flex;align-items:center;gap:.4rem;margin:0;font-weight:600}.fcrun input.fcin{width:14rem;margin:0}
.fcout{display:flex;gap:.6rem;flex-wrap:wrap;font:.92rem var(--mono)}.fcout .ok{color:var(--ok)}.fcout .ko{color:var(--bad)}
.fcnode.run polygon,.fcnode.run rect{fill:#e3f5ea!important;stroke:var(--ok)!important;stroke-width:3!important}
.fcedge.run{stroke:var(--ok);stroke-width:3.2}

/* editor codice con numeri di riga */
.ed{display:flex;background:#0f2433;border-radius:10px;border:1.5px solid #0f2433;overflow:hidden}
.ed:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #006dae40}
.ed .gutter{margin:0;padding:.8rem .6rem .8rem .8rem;color:#6f8aa0;text-align:right;font:14.5px/1.5 var(--mono);user-select:none;overflow:hidden;background:#0b1c2a;min-width:2.6rem;max-height:30rem}
.ed .codebox{border:none;border-radius:0;box-shadow:none;flex:1;margin:0;max-height:30rem;resize:vertical;line-height:1.5}
.ed .codebox:focus{box-shadow:none}
.sqltabs{display:flex;gap:.7rem;flex-wrap:wrap;margin:.3rem 0 .8rem;align-items:flex-start}
details.sqltab{border:1px solid var(--blue-line);border-radius:8px;padding:.25rem .6rem;background:#f7fbfe;max-width:100%;overflow:auto}
details.sqltab summary{cursor:pointer;font-weight:700;color:var(--blue-dark)}details.sqltab table{margin:.4rem 0;font-size:.85rem}
/* bit e tabelle di verità */
.bittools{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.6rem}.bittools button{padding:.25rem .7rem;font-size:.88rem}
/* anteprima ER */
.erprev{margin-top:.8rem;padding:.6rem .85rem;background:var(--blue-soft);border-radius:10px;font:14.5px var(--mono)}
.erprev .erline{margin:.2rem 0}.erprev .pk{font-weight:700;text-decoration:underline}.erprev .fkr{color:var(--blue-dark);font-style:italic}
.ertable{position:relative}.ertable:has(input[type=checkbox]:checked) .ername{border-color:var(--blue)}
table.res th{text-transform:none;letter-spacing:0;font-size:.92rem}
.badge.ko{background:var(--bad-soft);color:var(--bad);border:1px solid #efc2bf}

/* aiuto a due livelli */
button.help.lv2{color:#8a2e00;border-color:#e0a070;background:#fff3e8}
button.help.lv2:hover{background:#ffe3cc;border-color:#c96a2a}
.hintbox.half{background:#fff1e3;border-color:#e8b88a;border-left-color:#d9702a;color:#5a2d00}
pre.snippet.half{flex-basis:100%;border-left-color:#d9702a;background:#fff8f0}
button.bit.locked,button.tv.locked{background:#ffe9d6!important;color:#5a2d00!important;border-color:#e0a070!important;opacity:1}

/* figure nelle domande (da slide) */
figure.qfig{margin:.2rem 0 1rem;padding:.5rem;background:#fff;border:1px solid var(--blue-line);border-radius:10px;text-align:center;width:fit-content;max-width:100%}
figure.qfig img{max-width:min(100%,560px);max-height:420px;width:auto;height:auto;display:block;margin:0 auto;border-radius:6px;cursor:zoom-in}
figure.qfig::after{content:"🔍 clicca sull'immagine per ingrandirla";display:block;font-size:.76rem;color:var(--muted);margin-top:.3rem}
figure.qfig figcaption{font-size:.84rem;color:var(--muted);margin-top:.35rem}

/* calcolatrice */
button.calcbtn{margin-left:auto;font-size:.85rem;padding:.2rem .8rem;border-color:var(--blue-line);background:var(--blue-soft)}
.calc{position:fixed;right:1rem;bottom:1rem;width:272px;background:#fff;border:1.5px solid var(--blue);border-radius:14px;box-shadow:0 12px 40px rgba(0,40,70,.35);z-index:60;padding:.5rem .6rem .6rem;font-family:var(--font)}
.calc[hidden]{display:none}
.calc-head{display:flex;justify-content:space-between;align-items:center;cursor:move;padding:.1rem .1rem .4rem;color:var(--blue-deep);user-select:none;touch-action:none}
.calc-x{border:none;background:none;padding:0 .3rem;font-size:1rem;color:var(--muted);cursor:pointer}
.calc-in{width:100%;font:1.05rem var(--mono);padding:.4rem .55rem;margin:0}
.calc-out{font:700 1.5rem var(--mono);text-align:right;padding:.3rem .4rem;min-height:2.2rem;color:var(--blue-deep);background:var(--blue-soft);border-radius:8px;margin:.4rem 0;overflow-x:auto;white-space:nowrap}
.calc-out.err{font:600 .85rem var(--font);color:var(--bad);white-space:normal;text-align:left}
.calc-keys{display:grid;grid-template-columns:repeat(5,1fr);gap:.3rem}
.ck{padding:.45rem 0;font:600 1rem var(--font);border-radius:8px;text-align:center}
.ck.op{background:var(--blue-soft);color:var(--blue-dark)}.ck.fn{background:#f3f5f8;color:var(--muted);font-size:.88rem}
.ck.eq{background:var(--blue);color:#fff;border-color:var(--blue)}.ck.eq:hover{background:var(--blue-dark);color:#fff}
.calc-hist{margin-top:.4rem;font:.8rem var(--mono);color:var(--muted);max-height:5.5rem;overflow:auto}.calc-hist div{cursor:pointer;padding:.05rem .2rem;border-radius:4px}.calc-hist div:hover{background:var(--blue-soft)}
.calc-note{font-size:.72rem;color:var(--muted);margin-top:.35rem}
@media(max-width:600px){.calc{left:.5rem;right:.5rem;width:auto}}

/* ingrandimento figure */
.zoomov{position:fixed;inset:0;background:rgba(0,20,35,.82);z-index:80;display:flex;align-items:center;justify-content:center;padding:1rem;cursor:zoom-out}
.zoomov img{max-width:96vw;max-height:94vh;background:#fff;border-radius:8px;box-shadow:0 10px 50px rgba(0,0,0,.5)}
