/* Grafica del portale (dal prototipo approvato) */
/* Layout: app iOS a colonna unica (max 640px), titolo grande, gruppi a schede, tab bar in basso, pannelli dal basso */
:root{
--bg:#f1f5f7;--card:#ffffff;--ink:#0c1d26;--mut:#687a84;--line:#e2e8ec;--fill:#eef2f5;--acc:#078a96;--acc-ink:#ffffff;--acc-soft:#dcf2f3;--knob:#ffffff;--shadow:0 1px 2px rgba(12,29,38,.06),0 8px 24px rgba(12,29,38,.06);
--ok:#1e9e62;--warn:#c27400;--bad:#d4463a;--hold:#b0590b;--hold-soft:#fbeadb;--scrim:rgba(8,20,26,.38);
--t-none:#ffffff;--t-edge:#cdd6dc;--t-cem:#bfe6e8;--t-imp:#c9dcfb;--t-int:#f5e3b8;--t-sbz:#f7d2ca;--t-fac:#e4d5f6;--t-item:#e7ebee;--t-tor:#ccecdc;--t-fis:#b4c2c9;
--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--display:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;
--bg:#000000;--card:#15191c;--ink:#edf3f5;--mut:#8a99a1;--line:#262e33;--fill:#1f262a;--acc:#3cc4cf;--acc-ink:#04262a;--acc-soft:#0f3135;--knob:#f4f7f8;--shadow:none;
--ok:#3fcf8a;--warn:#f0b13e;--bad:#ff6f61;--hold:#f5a35a;--hold-soft:#3a2614;--scrim:rgba(0,0,0,.6);
--t-none:#1d2428;--t-edge:#36424a;--t-cem:#17565b;--t-imp:#22456f;--t-int:#5b4a1f;--t-sbz:#6a3229;--t-fac:#4a3567;--t-item:#2b3337;--t-tor:#1d5a40;--t-fis:#46545c}}
:root[data-theme="dark"]{color-scheme:dark;
--bg:#000000;--card:#15191c;--ink:#edf3f5;--mut:#8a99a1;--line:#262e33;--fill:#1f262a;--acc:#3cc4cf;--acc-ink:#04262a;--acc-soft:#0f3135;--knob:#f4f7f8;--shadow:none;
--ok:#3fcf8a;--warn:#f0b13e;--bad:#ff6f61;--hold:#f5a35a;--hold-soft:#3a2614;--scrim:rgba(0,0,0,.6);
--t-none:#1d2428;--t-edge:#36424a;--t-cem:#17565b;--t-imp:#22456f;--t-int:#5b4a1f;--t-sbz:#6a3229;--t-fac:#4a3567;--t-item:#2b3337;--t-tor:#1d5a40;--t-fis:#46545c}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{background:var(--bg);color:var(--ink);font:16px/1.4 var(--font);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
.wrap{max-width:640px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:30;background:var(--bg)}
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-block:10px}
.brand{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;letter-spacing:-.01em;min-width:0;flex:1}
.brand svg{flex:none}.brand span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbtn{flex:none;border:0;background:var(--fill);color:var(--ink);font:500 13px var(--font);padding:7px 11px;border-radius:999px;display:flex;align-items:center;gap:6px;cursor:pointer;max-width:46vw}
.hbtn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbtn.lock{color:var(--mut)}.hbtn.open{background:var(--hold-soft);color:var(--hold)}
main{padding-block:4px 120px}
h1{font:700 34px/1.1 var(--display);letter-spacing:-.025em;margin:6px 0 4px;text-wrap:balance}
.lead{color:var(--mut);margin:0 0 18px;font-size:15px}
h2.sec{font:600 13px var(--font);text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin:22px 4px 8px}
h3{font:700 18px var(--display);letter-spacing:-.01em;margin:0 0 10px}
.card{background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:16px;min-width:0}
.card+.card{margin-top:12px}
.list{background:var(--card);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}
.list.flat{box-shadow:none;background:var(--fill)}
.row{display:flex;align-items:center;gap:12px;padding:12px 16px;min-height:48px;position:relative;width:100%;text-align:left;border:0;background:none}
.row+.row::before{content:"";position:absolute;top:0;left:16px;right:0;border-top:1px solid var(--line)}
.row .grow{flex:1;min-width:0}
.t1{font-size:16px}.t2{font-size:13px;color:var(--mut);margin-top:1px}
.val{color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.list.flat .val{white-space:normal;text-align:right;max-width:62%;overflow-wrap:anywhere}
button.row{cursor:pointer}button.row:active{background:var(--line)}
.chev{color:var(--t-edge);flex:none}
.mut{color:var(--mut);font-size:13px}
.foot{color:var(--mut);font-size:12px;text-align:center;margin:28px 8px 0}
input,select,textarea{font:inherit;color:var(--ink);background:var(--fill);border:0;border-radius:12px;padding:12px 14px;width:100%;outline:none}
input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:0 0 0 3px var(--acc-soft)}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
label.lb{display:block;font-size:13px;color:var(--mut);margin:14px 2px 6px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:13px 18px;font-weight:600;cursor:pointer;transition:transform .15s ease}
.btn:active{transform:scale(.97)}
.btn.pri{background:var(--acc);color:var(--acc-ink)}.btn.wide{width:100%;font-size:17px}
.btn.sec{background:var(--acc-soft);color:var(--acc)}
.btn.warn{background:var(--hold-soft);color:var(--hold)}
.btn.ghost{background:var(--fill);color:var(--ink);padding:9px 14px;font-weight:500;font-size:14px;border-radius:999px}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:0;background:var(--fill);color:var(--ink);border-radius:999px;padding:8px 13px;font-size:14px;font-weight:500;cursor:pointer}
.chip.on{background:var(--acc);color:var(--acc-ink)}
.sw{appearance:none;-webkit-appearance:none;flex:none;width:51px;height:31px;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background .25s;padding:0;margin:0}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:var(--knob);box-shadow:0 2px 6px rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.3,.7,.4,1)}
.sw:checked{background:var(--ok)}.sw:checked::after{transform:translateX(20px)}
.segc{display:flex;background:var(--fill);border-radius:10px;padding:2px;margin:14px 0 12px}
.segc button{flex:1;border:0;background:none;padding:7px 4px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;min-width:0}
.segc button.on{background:var(--card);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.g2>*{min-width:0}
.price{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.code{font-family:var(--mono);font-size:.92em;letter-spacing:.02em}
/* schema dentale */
.chartbox{margin:4px -6px 0}
.chartbox svg{width:100%;height:auto;display:block;max-width:560px;margin:0 auto;touch-action:manipulation}
.tooth{cursor:pointer}
.tooth .tb{transform-box:fill-box;transform-origin:center;transition:transform .25s cubic-bezier(.3,.7,.4,1.4)}
.tooth .sh{fill:var(--t-none);stroke:var(--t-edge);stroke-width:1.2;transition:fill .25s,stroke .2s}
.tooth .fs{fill:none;stroke:var(--t-fis);stroke-width:.8;stroke-linecap:round;opacity:.5}
.tooth text{fill:var(--ink);font:600 9.5px var(--font);text-anchor:middle;pointer-events:none}
.tooth text.sub{font-size:6.5px;font-weight:600;fill:var(--mut);letter-spacing:.04em}
.k-cem .sh{fill:var(--t-cem)}.k-imp .sh{fill:var(--t-imp)}.k-int .sh{fill:var(--t-int)}.k-sbz .sh{fill:var(--t-sbz)}.k-fac .sh{fill:var(--t-fac)}.k-tor .sh{fill:var(--t-tor);stroke:transparent}
.k-item .sh{fill:var(--t-item);stroke-dasharray:3 2}
.tooth.sel .tb{transform:scale(1.12)}.tooth.sel .sh{stroke:var(--acc);stroke-width:2.6}
.tooth:hover .sh{stroke:var(--acc)}
.tooth:focus-visible{outline:none}.tooth:focus-visible .sh{stroke:var(--ink);stroke-width:2.6}
.tooth.pop .tb{animation:pop .45s cubic-bezier(.3,.7,.4,1.4)}
@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.15)}100%{transform:scale(1)}}
.band{stroke:var(--acc);stroke-width:9;stroke-linecap:round;opacity:.28}
.join{cursor:pointer}
.join .dot{fill:var(--card);stroke:var(--mut);stroke-width:1.3;stroke-dasharray:2 1.6}
.join.on .dot{fill:var(--acc);stroke:var(--card);stroke-width:1.6;stroke-dasharray:none}
svg text.lbl{fill:var(--mut);font:600 8.5px var(--font);text-anchor:middle;letter-spacing:.14em}
svg text.big{fill:var(--ok);font:700 13px var(--display);letter-spacing:.02em}
.legend{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 12px;margin-top:6px;font-size:12px;color:var(--mut)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.tools{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.tools input{flex:1 1 150px;padding:9px 14px;border-radius:999px;font-size:15px;width:auto}
/* pannello denti */
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:center;pointer-events:none}
.sheet .in{pointer-events:auto;width:100%;max-width:640px;max-height:56vh;overflow:auto;overscroll-behavior:contain;background:color-mix(in srgb,var(--card) 92%,transparent);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-radius:24px 24px 0 0;box-shadow:0 -10px 40px rgba(12,29,38,.18);padding:8px max(16px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));transform:translateY(105%);transition:transform .38s cubic-bezier(.2,.8,.2,1)}
.sheet.open .in{transform:none}
.grab{width:38px;height:5px;border-radius:3px;background:var(--line);margin:2px auto 10px}
.sh-h{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.sh-h h3{flex:1;margin:0;font:700 20px var(--display);letter-spacing:-.015em;min-width:0}
.icb{flex:none;width:32px;height:32px;border-radius:50%;border:0;background:var(--fill);color:var(--mut);display:grid;place-items:center;cursor:pointer;padding:0}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.tile{border:0;background:var(--fill);border-radius:16px;padding:10px 4px 9px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;font-size:12.5px;font-weight:500;text-align:center;line-height:1.15;transition:transform .15s;min-height:76px;justify-content:center}
.tile:active{transform:scale(.95)}
.tile .ic{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:var(--ink)}
.tile.danger{color:var(--bad)}.tile.danger .ic{color:var(--bad)}
.repeat{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:14px;background:var(--acc-soft);color:var(--acc);padding:11px 14px;margin-bottom:12px;cursor:pointer;font-weight:600;font-size:14px;text-align:left}
.repeat span{flex:1;min-width:0}
.opt{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--fill);border-radius:14px;padding:10px 14px;margin-bottom:12px}
/* modale */
.modal{position:fixed;inset:0;z-index:55;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center;animation:fade .2s}
.modal .box{width:100%;max-width:560px;max-height:88vh;overflow:auto;background:var(--card);border-radius:24px 24px 0 0;padding:8px max(16px,env(safe-area-inset-right,0px)) calc(20px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));animation:up .32s cubic-bezier(.2,.8,.2,1)}
@media(min-width:700px){.modal{align-items:center}.modal .box{border-radius:24px;padding-bottom:20px}}
@keyframes fade{from{opacity:0}}@keyframes up{from{transform:translateY(40px);opacity:.4}}
/* riepilogo */
.wk{display:flex;gap:12px;align-items:flex-start;padding:12px 0}
.wk+.wk{border-top:1px solid var(--line)}
.wk .sw-c{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex:none;font:700 10.5px var(--font);color:var(--ink)}
.wk .grow{flex:1;min-width:0}
.wk .x{flex:none;border:0;background:none;color:var(--mut);cursor:pointer;padding:4px;border-radius:8px}
.tot{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--line);padding-top:12px;margin-top:4px;gap:10px}
.tot b{font:700 22px var(--display);font-variant-numeric:tabular-nums}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:14px 8px;color:var(--mut);font-size:14px}
.shades{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px}
.shade{border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--ink);padding:2px}
.shade i{display:block;width:40px;height:48px;border-radius:12px 12px 16px 16px;box-shadow:inset 0 -6px 10px rgba(120,90,40,.18),0 0 0 1px var(--line);transition:transform .2s}
.shade.on i{box-shadow:inset 0 -6px 10px rgba(120,90,40,.18),0 0 0 3px var(--acc);transform:translateY(-2px)}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;margin-top:4px}
.photos img,.addph{width:100%;aspect-ratio:1;object-fit:cover;border-radius:14px;display:block;max-width:100%}
.addph{border:1.5px dashed var(--t-edge);display:grid;place-items:center;color:var(--acc);cursor:pointer;background:var(--fill);position:relative}
.addph input{position:absolute;width:1px;height:1px;opacity:0}
.ph-wrap{position:relative}
.ph-wrap .rm{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}
.ph-wrap .tag{position:absolute;left:4px;bottom:4px;background:rgba(0,0,0,.6);color:#fff;font-size:10px;font-weight:600;padding:2px 6px;border-radius:6px}
.ph-wrap .eyeb{position:absolute;left:4px;bottom:4px;border:0;background:rgba(0,0,0,.62);color:#fff;font-size:10px;font-weight:600;line-height:1;font-family:inherit;padding:4px 6px;border-radius:7px;display:flex;gap:3px;align-items:center;cursor:pointer}
.ph-wrap .eyeb.on{background:#000}
.masked{color:var(--mut);letter-spacing:.08em}
#waoff{position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom,0px));transform:translate(-50%,40px);opacity:0;z-index:65;width:min(460px,calc(100vw - 24px));background:var(--card);color:var(--ink);border-radius:18px;box-shadow:0 12px 32px rgba(0,0,0,.2),0 0 0 1px var(--line);padding:10px 8px 10px 14px;display:flex;gap:10px;align-items:center;transition:transform .35s cubic-bezier(.2,.8,.2,1),opacity .25s;pointer-events:none}
#waoff.on{transform:translate(-50%,0);opacity:1;pointer-events:auto}
#waoff>span{color:var(--ok);display:flex;flex:none}#waoff .grow{min-width:0;flex:1}#waoff b{display:block;font-size:14px;font-weight:600}#waoff small{display:block;color:var(--mut);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#waoff .btn{padding:8px 12px;font-size:14px;white-space:nowrap;flex:none}
.lblw{container-type:inline-size;max-width:420px;margin:0 auto}
.lbl{aspect-ratio:62/29;background:#fff;color:#000;border-radius:8px;box-shadow:0 0 0 1px var(--line),0 6px 18px rgba(0,0,0,.08);display:flex;gap:3cqw;padding:3.2cqw 3.6cqw;font-family:Helvetica,Arial,sans-serif;overflow:hidden}
.lbl .l{flex:1;min-width:0;display:flex;flex-direction:column}
.lbl .n{font-weight:700;font-size:6.2cqw;line-height:1;display:flex;justify-content:space-between;align-items:baseline;gap:2cqw;border-bottom:.35cqw solid #000;padding-bottom:1.3cqw;margin-bottom:1.6cqw}
.lbl .n span{font-size:2.9cqw;letter-spacing:.02em}
.lbl .f{display:grid;grid-template-columns:15cqw 1fr;font-size:3.3cqw;line-height:1.62}
.lbl .f i{font-style:normal;color:#5a5a5a;font-size:2.8cqw}.lbl .f b{font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lbl .f b.p{font-weight:700}
.lbl .r{width:31.5cqw;flex:none;display:flex;flex-direction:column;align-items:center;text-align:center}
.lbl .r img,.lbl .r .noqr{width:31.5cqw;height:31.5cqw;display:block}.lbl .r .noqr{border:1px dashed #999;display:grid;place-items:center;font-size:2.6cqw}
.lbl .r b{font-size:3.4cqw;margin-top:.8cqw;font-family:ui-monospace,Menlo,monospace}.lbl .r small{font-size:2.5cqw;color:#5a5a5a}
.scan{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.scan button{border:0;background:var(--fill);border-radius:16px;padding:14px 10px;cursor:pointer;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:4px;box-shadow:0 0 0 0 var(--acc);transition:box-shadow .2s}
.scan button.on{box-shadow:0 0 0 3px var(--acc);background:var(--acc-soft)}
.scan small{font-weight:500;color:var(--mut);font-size:12px}
/* tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:25;background:color-mix(in srgb,var(--card) 85%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--line);padding:6px max(10px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px));transition:transform .3s}
.tabbar.hide{transform:translateY(110%)}
.tabbar .in{max-width:640px;margin:0 auto;display:flex;justify-content:space-around}
.tab{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;font-weight:500;color:var(--mut);padding:4px 4px;cursor:pointer;min-width:56px;position:relative}
.tab.on{color:var(--acc)}
.tab .bdg{position:absolute;top:0;right:10px;min-width:17px;height:17px;border-radius:9px;background:var(--bad);color:#fff;font-size:10.5px;font-weight:700;display:grid;place-items:center;padding:0 4px}
/* casi */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:560px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--card);border-radius:18px;box-shadow:var(--shadow);padding:12px 14px;min-width:0}
.stat b{display:block;font:700 26px var(--display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat span{font-size:12.5px;color:var(--mut)}
.stat.bad b{color:var(--bad)}.stat.warn b{color:var(--warn)}.stat.hold b{color:var(--hold)}
.case{background:var(--card);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}
.case+.case{margin-top:10px}
.case.held{box-shadow:var(--shadow),inset 4px 0 0 var(--hold)}
.case .hd{display:flex;gap:12px;align-items:center;padding:14px 16px;width:100%;border:0;background:none;text-align:left;cursor:pointer}
.av{width:42px;height:42px;border-radius:50%;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}
.av.code{font-family:var(--mono);font-size:11px}
.case .grow{flex:1;min-width:0}
.case .t1{font-weight:600}
.case .t2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pill{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.pill.ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
.pill.warn{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)}
.pill.bad{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}
.pill.hold{background:var(--hold-soft);color:var(--hold)}
.pill.n{background:var(--fill);color:var(--mut)}
.pill.acc{background:var(--acc);color:var(--acc-ink)}.pill.soft{background:var(--acc-soft);color:var(--acc)}
.checks .row{cursor:pointer}.checks .row .t1{font-size:15px}
.sig{border:1.5px dashed var(--t-edge);border-radius:14px;background:var(--knob);touch-action:none;display:block;width:100%;height:150px;cursor:crosshair}
.docrow{display:flex;gap:12px;align-items:center;background:var(--acc-soft);border-radius:14px;padding:12px 14px;margin-top:12px}
.docrow .grow{flex:1;min-width:0}
.locked{text-align:center;padding:28px 16px}
.case .bd{padding:0 16px 16px}
.mini svg{max-width:340px}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:14px 0 4px}
.steps button{border:0;background:none;cursor:pointer;padding:0;text-align:center;font-size:10.5px;line-height:1.15;color:var(--mut);font-weight:600}
.steps button i{display:block;height:6px;border-radius:3px;background:var(--line);margin-bottom:6px;transition:background .3s}
.steps button.on i{background:var(--acc)}.steps button.cur{color:var(--acc)}
.steps button:disabled{cursor:default}
.holdbox{background:var(--hold-soft);color:var(--hold);border-radius:14px;padding:12px 14px;margin:12px 0;font-size:14px}
.holdbox b{display:block;margin-bottom:2px}
/* chat */
.chat{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;padding:4px 0}
.msg{max-width:82%;padding:8px 12px;border-radius:18px;font-size:15px;line-height:1.35;word-wrap:break-word}
.msg.me{align-self:flex-end;background:var(--acc);color:var(--acc-ink);border-bottom-right-radius:6px}
.msg.them{align-self:flex-start;background:var(--fill);border-bottom-left-radius:6px}
.msg small{display:block;font-size:11px;opacity:.75;margin-top:2px}
.msg.sys{align-self:center;background:none;color:var(--mut);font-size:12px;text-align:center;max-width:95%;padding:2px 8px}
.composer{display:flex;gap:8px;margin-top:8px}
.composer input{border-radius:999px;padding:10px 16px}
.composer button{flex:none;width:42px;height:42px;border-radius:50%;border:0;background:var(--acc);color:var(--acc-ink);display:grid;place-items:center;cursor:pointer}
.act{font-size:13px;color:var(--mut);display:flex;gap:10px;padding:6px 0}
.act+.act{border-top:1px solid var(--line)}
.act b{color:var(--ink);font-weight:600}
.act time{flex:none;width:92px;font-variant-numeric:tabular-nums}
/* agenda */
.day{background:var(--card);border-radius:18px;box-shadow:var(--shadow);padding:12px 14px}
.day+.day{margin-top:10px}
.day.today{box-shadow:var(--shadow),0 0 0 2px var(--acc)}
.day h4{margin:0;font:700 16px var(--display);display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.loadbar{height:8px;border-radius:4px;background:var(--fill);overflow:hidden;margin:8px 0 4px}
.loadbar i{display:block;height:100%;border-radius:4px;background:var(--acc)}
.loadbar i.over{background:var(--bad)}
.ev{display:flex;gap:8px;align-items:center;font-size:14px;padding:6px 0;border-top:1px solid var(--line);width:100%;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;cursor:pointer}
.ev .k{flex:none;font-size:11px;font-weight:700;border-radius:6px;padding:2px 6px}
.ev .k.c{background:var(--acc-soft);color:var(--acc)}.ev .k.p{background:var(--t-int);color:var(--ink)}
.ev .grow{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.machine{border-radius:14px;background:var(--fill);padding:12px 14px}
.machine+.machine{margin-top:8px}
.machine b{display:block;margin-bottom:4px}
/* grafici */
.bars{width:100%;height:auto;display:block}
.bars text{fill:var(--mut);font:500 10px var(--font)}
.hbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center;font-size:14px;margin-top:8px}
.hbar .tr{grid-column:1/-1;height:8px;border-radius:4px;background:var(--fill);overflow:hidden}
.hbar .tr i{display:block;height:100%;background:var(--acc);border-radius:4px}
.hbar .tr i.b{background:var(--bad)}
/* pin */
.pin{display:flex;justify-content:center;gap:14px;margin:18px 0}
.pin i{width:14px;height:14px;border-radius:50%;border:2px solid var(--mut)}
.pin i.f{background:var(--ink);border-color:var(--ink)}
.pad{display:grid;grid-template-columns:repeat(3,72px);gap:14px;justify-content:center}
.pad button{width:72px;height:72px;border-radius:50%;border:0;background:var(--fill);font:400 28px var(--display);cursor:pointer}
.pad button:active{background:var(--line)}
.shake{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
/* censura */
.cen{position:relative;border-radius:14px;overflow:hidden;background:#000;touch-action:none;cursor:crosshair}
.cen canvas{display:block;width:100%;height:auto}
input[type=range]{padding:0;background:none;accent-color:var(--acc)}
/* accesso */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding-block:32px}
.login .card{width:100%;max-width:400px}
.login .logo{width:56px;height:56px;border-radius:16px;background:var(--acc-soft);display:grid;place-items:center;margin-bottom:14px}
.demo-acc{margin-top:18px}
.demo-acc button.row{padding-block:10px}
/* conferma */
.done{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 70%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:24px}
.done .box{background:var(--card);border-radius:28px;padding:28px 24px;max-width:340px;width:100%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.2);animation:up .45s cubic-bezier(.2,.8,.2,1)}
.done h3{font:700 22px var(--display);margin:14px 0 6px}
.ck circle{fill:var(--ok)}.ck path{fill:none;stroke:var(--knob);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:draw .5s .25s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
#toast{position:fixed;left:50%;top:calc(12px + env(safe-area-inset-top,0px));transform:translate(-50%,-160%);z-index:70;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:18px;font-size:14px;font-weight:500;max-width:90vw;transition:transform .35s cubic-bezier(.2,.8,.2,1);display:flex;gap:8px;align-items:center}
#toast.on{transform:translate(-50%,0)}
.pv{max-width:160px;max-height:64px;border-radius:8px;display:block;margin-top:10px;background:#fff;padding:4px}
.doc{font-size:14px;line-height:1.5}
.doc h4{margin:14px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.doc p{margin:0 0 6px}
.miss{background:var(--hold-soft);color:var(--hold);border-radius:6px;padding:0 4px}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl td,.tbl th{padding:8px 4px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tbl th{font-size:12px;color:var(--mut);font-weight:600}
.tbl td.r,.tbl th.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.scrollx{overflow-x:auto}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.ck path{stroke-dashoffset:0}}
