@font-face{font-family:"Atkinson Hyperlegible Next";src:url(teoria/fonts/AtkinsonHyperlegibleNext-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible Next";src:url(teoria/fonts/AtkinsonHyperlegibleNext-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"OpenDyslexic";src:url(teoria/fonts/OpenDyslexic-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"OpenDyslexic";src:url(teoria/fonts/OpenDyslexic-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}
:root[data-a11y-font=atkinson] body,:root[data-a11y-font=atkinson] button,:root[data-a11y-font=atkinson] input,:root[data-a11y-font=atkinson] select,:root[data-a11y-font=atkinson] textarea{font-family:"Atkinson Hyperlegible Next",system-ui,sans-serif}
:root[data-a11y-font=dyslexic] body,:root[data-a11y-font=dyslexic] button,:root[data-a11y-font=dyslexic] input,:root[data-a11y-font=dyslexic] select,:root[data-a11y-font=dyslexic] textarea{font-family:"OpenDyslexic","Comic Sans MS",system-ui,sans-serif}
:root{--sp-1:2px;--sp-2:4px;--sp-3:6px;--sp-4:8px;--pnl-pad-y:5px;--pnl-pad-x:8px;--pnl-gap:6px;--pnl-hd-gap:2px;--ctl-py:2px;--row-py:2px;--tab-py:4px;--row-h:24px}   /* vertical spacing of the workspace (--pnl-gap is read by pannelli.js) */
:root{--lv1:#0072B2;--lv2a:#009E73;--lv2b:#56B4E9;--lv3:#E69F00;--lv3a:#E69F00;--lv3b:#D55E00;--lv4:#CC79A7;--lv5:#999999;--lv0:#BBBBBB}
.lvb{display:inline-block;border:2px solid var(--lvc,var(--line));border-radius:4px;padding:0 6px;font-weight:700;font-size:12px;color:var(--ink);background:color-mix(in srgb,var(--lvc,var(--line)) 18%,var(--panel));white-space:nowrap}.lv-1{--lvc:var(--lv1)}.lv-2a{--lvc:var(--lv2a)}.lv-2b{--lvc:var(--lv2b)}.lv-3{--lvc:var(--lv3)}.lv-3a{--lvc:var(--lv3a)}.lv-3b{--lvc:var(--lv3b)}.lv-4{--lvc:var(--lv4)}.lv-5{--lvc:var(--lv5)}.lv-0{--lvc:var(--lv0)}
html{background:var(--bg)}
:root{color-scheme:light;--on-accent:#fff;--grad:#D55E00;--bg:#f7f8fa;--panel:#ffffff;--line:#e2e5ea;--ink:#25282c;--muted:#5e6676;--accent:#2b5c8a;--ok:#047857;--bad:#b42318;--warn:#92400e;--sel:#edf2f8;--soft:#f0f3f6}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--on-accent:#0d1520;--grad:#fb923c;--bg:#14171b;--panel:#1d2127;--line:#323944;--ink:#e4e7eb;--muted:#98a2b0;--accent:#7db4e6;--ok:#34d399;--bad:#f87171;--warn:#fbbf24;--sel:#27303b;--soft:#252b33}}
:root[data-theme=dark]{color-scheme:dark;--on-accent:#0d1520;--grad:#fb923c;--bg:#14171b;--panel:#1d2127;--line:#323944;--ink:#e4e7eb;--muted:#98a2b0;--accent:#7db4e6;--ok:#34d399;--bad:#f87171;--warn:#fbbf24;--sel:#27303b;--soft:#252b33}
:root[data-a11y-bg=hc][data-theme=light],:root[data-a11y-bg=hc]:not([data-theme=dark]){--bg:#fff;--panel:#fff;--ink:#000;--muted:#1a1a1a;--line:#000;--sel:#e6e6e6;--code:#ededed;--accent:#0030a0;--accent2:#7a2800;--ok:#00522f;--bad:#8c0000;--warn:#5c2a00}
:root[data-a11y-bg=hc][data-theme=dark]{--bg:#000;--panel:#000;--ink:#fff;--muted:#ececec;--line:#fff;--sel:#262626;--code:#1a1a1a;--accent:#8fd0ff;--accent2:#ffb36b;--ok:#6ee7a8;--bad:#ff9a9a;--warn:#ffd36b}
section[id^="v-"]:not([hidden]){animation:tabFade 160ms ease-out}
@keyframes tabFade{from{opacity:0}to{opacity:1}}
.pnl{animation:pnlOpen 160ms ease-out}
@keyframes pnlOpen{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
canvas{animation:none!important;transition:none!important}
@media (prefers-reduced-motion:reduce){section[id^="v-"],.pnl:not(.flash){animation:none!important}}
:root[data-a11y-reduce] section[id^="v-"],:root[data-a11y-reduce] .pnl:not(.flash){animation:none!important}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;font-family:inherit;font-weight:inherit}
sub{bottom:-0.22em}
sup{top:-0.45em}
html{scroll-padding-top:calc(var(--hh,40px) + 6px)}:root{--fs-top:0px}:root:fullscreen,:fullscreen{--fs-top:14px}      /* full screen: a safety margin above the controls, so the pointer need not touch the top edge (macOS shows the menu bar there; a page cannot stop it) */
header{position:sticky;top:0;z-index:6000;display:flex;gap:10px;align-items:center;padding:calc(4px + var(--fs-top)) 12px 4px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap;transition:box-shadow .15s}header.scrolled{box-shadow:0 2px 8px rgba(60,45,10,.18)}
header b{font-size:14px}header .ib{display:inline-flex;align-items:center;gap:5px}header .ib .ic{display:inline-flex;color:var(--accent)}header .sb{display:none}@media (max-width:1400px){header{gap:5px}header .lb{display:none}header .sb{display:inline}header button{padding-left:6px;padding-right:6px}}header .logo{height:22px;width:auto;display:block}.sp{flex:1}
button,select,input{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:3px 9px}select:not([multiple]):not([size]){appearance:none;-webkit-appearance:none;padding-right:28px!important;text-overflow:ellipsis!important;min-width:4.5em;background-image:conic-gradient(from -36deg at 50% 100%,var(--ink) 71deg,transparent 72deg);background-size:10px 6px;background-position:right 9px center;background-repeat:no-repeat}button:has(>svg:only-child){display:inline-flex;align-items:center;justify-content:center;line-height:0}button>svg:only-child{display:block;flex:none}button{cursor:pointer}#ex-jpg:disabled{opacity:.4;cursor:not-allowed;text-decoration:line-through}button:hover{border-color:var(--accent)}
main{display:grid;grid-template-columns:minmax(380px,34%) 1fr;gap:10px;padding:10px 14px}
@media (max-width:900px){main{grid-template-columns:1fr}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:var(--sp-4) 10px;margin-bottom:var(--sp-4)}
.card h3{margin:0 0 6px;font-size:13px}.cardhd{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.cardhd h3{margin:0}.cartpick{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;padding:4px;margin:-4px -2px -4px 0}.cartpick[hidden]{display:none}@media (pointer:coarse){.cartpick{min-width:40px;min-height:40px}}.muted{color:var(--muted)}
input[aria-invalid="true"]{outline:2px solid var(--bad)}input.guess{background:rgba(255,214,0,.30)}.guess{background:rgba(255,214,0,.30)}tr.grp td{background:var(--bg);font-weight:600;border-bottom:1px solid var(--line);padding:6px 6px 3px;font-size:.9em}table{border-collapse:collapse;width:100%}th{position:sticky;top:0;background:var(--panel);text-align:left;font-weight:600;border-bottom:1px solid var(--line);padding:3px 6px}
td{padding:var(--row-py) 6px;border-bottom:1px solid var(--line);vertical-align:middle}tr.row{cursor:pointer}tr.row:hover{background:var(--sel)}tr.sel{background:var(--sel)}
.num{text-align:right;font-variant-numeric:tabular-nums}
canvas{display:block;width:100%}
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.chips span{display:inline-flex;align-items:center;gap:4px;color:var(--muted)}.chips i:empty{width:10px;height:10px;border-radius:2px;display:inline-block}
.bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.bar label{display:flex;gap:4px;align-items:center;color:var(--muted)}
#err{color:var(--bad);padding:6px 14px}#avvio-errore{position:sticky;top:0;z-index:9000;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 14px;background:var(--panel,#fff);color:var(--bad);border-bottom:2px solid var(--bad);font-size:14px}#avvio-errore-msg{flex:1 1 280px}#avvio-fase{padding:6px 14px;color:var(--muted);font-size:13px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line)}#drop-skeleton{display:flex;align-items:center;justify-content:center;min-height:120px;border:2px dashed var(--line);border-radius:8px;padding:20px;text-align:center;color:var(--muted);background:var(--soft);font-size:inherit}#tbl{max-height:62vh;overflow:auto}
.alt{color:var(--muted);font-size:12px}

.hq{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;margin:0 4px;border-radius:50%;border:1px solid var(--accent);color:var(--accent);background:var(--panel);font-size:11px;font-weight:700;line-height:1;cursor:help;vertical-align:middle;flex:none}.hq:hover{background:var(--accent);color:var(--on-accent)}
.corrw{display:block;position:relative}.corrb>span{max-width:12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}.corrb{display:inline-flex;align-items:center;gap:6px}.corrb.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--panel));color:var(--accent);font-weight:600}.corrm{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:8px;padding:4px;margin-top:4px;background:var(--panel);position:absolute;z-index:30;left:0;top:100%;min-width:280px;box-shadow:0 4px 14px rgba(0,0,0,.18)}.corrm[hidden]{display:none}
/* an open menu or popover may go beyond the panel (it would otherwise be cut where the panel ends) */
.pnl:has(.sp-pop:not([hidden])),.pnl:has(.corrm:not([hidden])){overflow:visible}.corrm[hidden]{display:none}.corri{display:flex;gap:8px;align-items:flex-start;text-align:left;border:0;background:transparent;padding:5px 8px;border-radius:6px}.corri:hover:not(:disabled){background:var(--sel)}.corri.on{background:var(--sel)}.corri svg{flex:none;margin-top:2px}.corrrow{display:flex;align-items:center;gap:4px;border-radius:6px}.corrrow.on{background:var(--sel)}.corrrow .corri{flex:none;background:transparent}.corrsel{flex:1;min-width:0;min-height:28px;margin:0}.corrck{margin-left:auto;padding:0 8px;color:var(--accent);visibility:hidden;min-width:1em}.corri.on .corrck,.corrrow.on>.corrck{visibility:visible}.corri{min-height:28px;align-items:center}.corri>span:not(.corrck){flex:1}.corri:focus-visible,.corrsel:focus-visible,.rngb:focus-visible,.rngx:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.rngb{display:inline-flex;align-items:center;gap:4px}.rngx{padding:0 6px;font-size:14px;line-height:1}.bt.tgl{font-weight:600;letter-spacing:.2px}.corri>span{display:flex;flex-direction:column}#demobtn.sec{background:transparent;border:1px solid var(--line);font-weight:500}#calcdlg{position:fixed;z-index:9000;width:min(560px,calc(100vw - 16px));max-height:calc(100vh - 90px);overflow:auto;box-shadow:0 8px 24px rgba(0,0,0,.22);padding:10px 14px}#calcdlg input{width:100%;box-sizing:border-box;margin:8px 0 4px}#calcdlg[hidden]{display:none}#calcres{font-size:calc(30px*var(--z,1));font-weight:700;text-align:right;min-height:1.3em;word-break:break-all}.calc-nl-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-size:12px;font-weight:600;border:1px solid var(--accent);border-radius:6px;background:var(--sel,#e8ecf2);color:var(--accent);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.calc-nl-btn:hover{background:var(--accent);color:var(--on-accent)}.calc-nl-btn[hidden]{display:none!important}.cpad{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0}.cpad[hidden]{display:none}.cpad button{font-size:calc(20px*var(--z,1));min-height:44px;border-radius:8px;background:var(--panel);color:var(--ink);border:1px solid var(--line)}.cpad button:hover{background:var(--sel);border-color:var(--accent)}.cpad .op{background:var(--soft,#eef2f7);color:var(--accent);font-weight:600}.cpad .eq{background:var(--accent,#2b5c8a);color:#fff;font-weight:700}#calctape{margin:4px 0;border-top:1px solid var(--line);padding-top:4px}#calctape div{padding:2px 4px;cursor:pointer;border-radius:4px;font-variant-numeric:tabular-nums}#calctape div:hover{background:var(--soft,#eef2f7)}#helppop.guide{max-height:80vh;overflow:auto;width:min(760px,94vw)}#helppop .hp-s{margin:6px 0 10px;padding-left:8px;border-left:3px solid var(--line)}#helppop details{margin:8px 0}#helppop summary{cursor:pointer}#helppop{position:fixed;z-index:10001;max-width:min(420px,92vw);background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:8px;box-shadow:0 8px 26px rgba(20,30,50,.22);padding:8px 12px;font-size:12.5px;line-height:1.5;color:var(--ink)}#helppop .hp-t{display:flex;align-items:center;margin-bottom:4px}#helppop .hp-t b{flex:1;font-size:13px}
[hidden]{display:none!important}
.cplist{list-style:none;margin:4px 0 10px;padding:0}.cprow{display:flex;justify-content:space-between;gap:12px;width:100%;min-height:32px;padding:4px 10px;margin:2px 0;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font:inherit;text-align:left;cursor:pointer}.cprow:hover,.cprow:focus-visible{border-color:var(--accent);color:var(--ink)}.cprow.done{color:var(--ink)}.cprow .cpn{overflow-wrap:anywhere}.cprow .cpm{white-space:nowrap}#cartbody h4{margin:10px 0 2px}
#start{max-width:1240px;margin:16px auto;padding:0 14px;font-size:calc(13px + 2pt)}#flist{overflow-x:auto}#mlist{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:3px 8px;border:1px solid var(--line);border-radius:14px;background:var(--soft);color:var(--ink)}.chip button{border:0;background:none;color:var(--ink);cursor:pointer;font-size:1.1em;line-height:1;padding:0 2px}#start .card{min-width:0}#start .card h3{font-size:inherit}#start #drop b,#start #dropdam b{font-size:inherit}
#start table input,#start table select{font-size:inherit}#start th select{font-weight:400}#start .note{margin-top:6px;color:var(--accent)}

abbr.ftag{text-decoration:none;cursor:help;letter-spacing:.02em}#tools{gap:var(--sp-2) var(--sp-4);margin-bottom:var(--sp-2)}#tools button,#tools select{padding-top:var(--ctl-py);padding-bottom:var(--ctl-py)}#tools .tbx{display:inline-flex;gap:var(--sp-2);align-items:center;flex-wrap:nowrap}#tools .tbx+.tbx{border-left:1px solid var(--line);padding-left:8px}#tools button{white-space:nowrap}.seg{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.seg button{border:0;border-radius:0;color:var(--muted);padding:var(--ctl-py) 9px}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--accent);color:var(--on-accent)}.seg button:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}#navfile{display:inline-flex;align-items:center;gap:var(--sp-2);vertical-align:middle}#navfile button,#navfile select{box-sizing:border-box;height:32px;margin:0;padding-top:0;padding-bottom:0;line-height:1.2}#navfile button{display:inline-flex;align-items:center;justify-content:center;min-width:32px;padding-left:6px;padding-right:6px}#fsel{min-width:9ch;max-width:40vw;text-overflow:ellipsis;white-space:nowrap}@media (pointer:coarse){#navfile button,#navfile select{height:40px}#navfile button{min-width:40px}}@media(max-width:900px){#dfiles{min-width:0}#dfiles .fgh,#dfiles .fl{min-width:0}#dfiles .fgh{flex-wrap:wrap}#tools .tbx{flex-wrap:wrap}#tools .tbx+.tbx{border-left:0;padding-left:0}#fsel{min-width:0;max-width:60vw}}.pnum{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:15px;height:15px;padding:0;line-height:1;text-align:center;font-variant-numeric:tabular-nums;border-radius:8px;background:var(--sel);color:var(--muted);font-size:10px;font-weight:600;margin-right:6px}.lbbox{position:absolute;pointer-events:none;border:1px solid var(--accent);border-radius:3px;background:rgba(43,92,138,.08);z-index:3}#colpop{position:fixed;z-index:10003;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 14px rgba(60,45,10,.18);padding:8px}#colpop .sw{display:grid;grid-template-columns:repeat(5,22px);gap:5px;margin-bottom:6px}#colpop .sw button{width:22px;height:22px;border-radius:50%;border:2px solid var(--panel);box-shadow:0 0 0 1px var(--line);padding:0}[inert]{opacity:.5}#qtip{position:fixed;z-index:20000;max-width:380px;word-break:break-word;padding:4px 9px;border-radius:6px;background:var(--ink);color:var(--panel);font-size:11.5px;line-height:1.35;pointer-events:none;opacity:.95;box-shadow:0 3px 12px rgba(0,0,0,.25)}:root[data-pal=hc]{--muted:#000;--ink:#000;--line:#555}:root[data-theme=dark]{color-scheme:dark;--bg:#14171b;--panel:#1d2127;--line:#323944;--ink:#e4e7eb;--muted:#98a2b0;--accent:#7db4e6;--ok:#34d399;--bad:#f87171;--warn:#fbbf24;--sel:#27303b;--soft:#252b33}.toast-container{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:100000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast-msg{background:var(--ink);color:var(--bg);padding:8px 16px;border-radius:6px;font-size:13px;opacity:0;transform:translateY(10px);box-shadow:0 4px 12px rgba(0,0,0,0.15)}
.toast-msg.show{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion: reduce) { .toast-msg { transition:none; transform:none; } }
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#14171b;--panel:#1d2127;--line:#323944;--ink:#e4e7eb;--muted:#98a2b0;--accent:#7db4e6;--ok:#34d399;--bad:#f87171;--warn:#fbbf24;--sel:#27303b;--soft:#252b33}}:root[data-theme=dark][data-pal=hc]{--muted:#fff;--ink:#fff;--line:#c8c8c8}header,#dfiles,#tools{zoom:var(--z,1)}button.gear{padding:4px 7px;margin-left:6px;display:inline-flex;align-items:center}#uipset{position:fixed;top:0;right:0;bottom:0;z-index:10004;width:min(380px,100vw);background:var(--panel);color:var(--ink);border-left:1px solid var(--line);box-shadow:-4px 0 18px rgba(0,0,0,.25);overflow:auto;padding:14px 16px 24px}#uipset .a-hd{display:flex;align-items:center;justify-content:space-between;margin:0 0 4px}#uipset h2{font-size:18px;margin:0}#uipset .x{min-width:36px;min-height:36px;padding:0}#uipset>.row{display:flex;justify-content:center;margin-top:14px}#uipset #uip-reset{background:transparent;border-color:transparent;color:var(--muted);text-decoration:underline;font-size:13.5px}#uipset #uip-reset:hover,#uipset #uip-reset:focus-visible{color:var(--ink)}
/* section titles: more air above (and a thin rule after a previous block) than below, so a title reads as the head of what follows */
#uipset fieldset{padding-top:0;margin-top:18px}
#uipset legend{margin-bottom:8px}
#uipset>fieldset:first-of-type,#uipset .imp-b>fieldset:first-child{margin-top:6px}
#uipset .imp-b>:has(+fieldset){border-bottom:1px solid var(--line);padding-bottom:12px}.ibk{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;background:var(--sel);border-radius:10px;padding:1px 8px;font-size:11px}.ibk button{padding:0 6px;font-size:11px}.tw{display:inline-flex;align-items:flex-end}.tw>.hq{margin:0 6px 9px -8px}#helppop.wide{max-width:min(640px,94vw)}.fl .qi{display:inline-flex;color:var(--muted);flex:none;margin-top:1px}.fgh .qi{display:inline-flex;color:var(--accent)}



button.imp{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--accent);color:var(--accent);background:var(--sel);font-weight:600;padding:var(--ctl-py) 12px;box-shadow:0 1px 0 rgba(43,92,138,.25)}button.imp:hover{background:var(--accent);color:var(--on-accent)}
#cartgo{display:block;width:100%;margin:6px 0;padding:10px 16px}.cpli{display:flex;gap:6px;align-items:center}.cpli .cprow{flex:1;width:auto}.cpone{min-width:60px;min-height:32px;flex:none}.dupflash td{background:var(--sel);outline:2px solid var(--accent);outline-offset:-2px}#opbtn,#cancadd{display:block;width:100%;font-size:inherit;padding:12px 18px}#cancadd{margin-top:8px}
.card.req{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.tag{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;margin-left:6px;vertical-align:middle;text-transform:uppercase;letter-spacing:.03em}
.tag.opt{background:var(--sel);color:var(--muted)}
.card.req #drop{border-color:var(--accent);background:var(--sel);color:var(--ink);padding:38px 14px}
#drop,#dropdam{border:2px dashed var(--line);border-radius:10px;padding:26px 14px;text-align:center;color:var(--muted);cursor:pointer;background:var(--panel)}
.card.method-row{border:0;background:none;box-shadow:none;padding:0 0 0 2px}#dropdam{border-color:transparent;background:none;padding:4px 8px;text-align:left}#dropdam:hover,#dropdam:focus-visible{border-color:var(--line)}#dropdam b::before{content:"+";margin-right:6px;font-weight:700;color:var(--accent)}#dropdam .fmts{display:inline;margin:0 0 0 8px}#advconv .hq{width:24px;height:24px;font-size:13px}@media (pointer:coarse){#advconv .hq{width:40px;height:40px}}#advconv summary{cursor:pointer;min-height:24px}#drop *,#dropdam *{pointer-events:none}.fmts{display:block;margin-top:6px;font-size:11px;color:var(--muted)}
#drop.over,#dropdam.over,.card.req #drop.over{border-style:solid;border-color:var(--accent);background:var(--sel);color:var(--ink);box-shadow:inset 0 0 0 3px var(--accent)}#drop b,#dropdam b{color:var(--ink);font-size:15px}

.cont{margin-top:5px;padding-top:4px;border-top:1px solid var(--line);max-width:300px}.cont-h{color:var(--accent)}.cont-row{margin-top:3px}#convhelp{margin-top:8px}#convhelp summary{cursor:pointer;color:var(--accent)}#convhelp ol{margin:6px 0 0 18px;padding:0;line-height:1.6}#convhelp a{color:var(--accent)}#unopen{margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--soft);color:var(--ink)}#unopen p{margin:4px 0}#unopen ul{margin:4px 0 0 18px;padding:0}#unopen .row{margin-top:6px;display:flex;gap:8px;flex-wrap:wrap}#unopen .diag{margin:4px 0}#unopen .diag button{min-height:24px;font-size:.85em}#unopen .diagbox{margin-top:4px;padding:6px 8px;border:1px solid var(--line);border-radius:6px}#unopen .diagbox dl{display:grid;grid-template-columns:max-content 1fr;gap:2px 8px;margin:4px 0}#unopen .diagbox dd{margin:0;overflow-wrap:anywhere}#unopen .diagbox pre{max-height:9em;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8em;margin:4px 0}.cvsum{margin-top:8px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--soft);color:var(--ink)}.cvsum p{margin:2px 0}.cvsum ul{margin:4px 0 0 18px;padding:0}#flist .diag{display:inline-block;margin:2px 0 2px 6px}#flist .diag button{min-height:24px}#flist .diagbox{margin-top:4px;padding:6px 8px;border:1px solid var(--line);border-radius:6px}#flist .diagbox dl{display:grid;grid-template-columns:max-content 1fr;gap:2px 8px;margin:4px 0}#flist .diagbox dd{margin:0;overflow-wrap:anywhere}#flist .diagbox pre{max-height:12em;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8em;margin:4px 0}
.go{background:var(--accent);color:var(--on-accent);border-color:var(--accent);padding:6px 18px;font-weight:600}.go:disabled{opacity:.5;cursor:default}
.cp-num{font-variant-numeric:tabular-nums}.cp-head{display:flex;gap:8px;align-items:center;justify-content:space-between}.cp-phase{margin-top:4px}.cp-spin{display:inline-block;width:.8em;height:.8em;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;vertical-align:-.1em;animation:cpspin 1s linear infinite}@keyframes cpspin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.cp-spin{animation:none;border-top-color:var(--accent);border-right-color:var(--accent)}}.convprog .cp-head>b::before{content:"";display:inline-block;width:.8em;height:.8em;margin-right:6px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;vertical-align:-.1em;animation:cpspin 1s linear infinite}.avanza .cp-done>b::before{content:"\2713";width:auto;height:auto;margin-right:6px;border:0;border-radius:0;color:var(--accent);font-weight:700;animation:none}@media (prefers-reduced-motion:reduce){.convprog .cp-head>b::before{animation:none}}:root[data-a11y-reduce] .convprog .cp-head>b::before{animation:none}.cp-total{margin-top:8px}.loadbar{margin:6px 0}.prog{height:4px;background:var(--line);border-radius:2px;margin-top:4px}.prog i{display:block;height:4px;background:var(--accent);border-radius:2px;width:0}@media(prefers-reduced-motion:no-preference){.prog i{transition:width .35s linear}}#flist th{white-space:nowrap}#flist table{min-width:100%}#flist td:nth-child(2){overflow-wrap:anywhere}#flist td.num input{box-sizing:border-box;text-align:right}

#nav{display:flex;gap:2px}#nav button{border:0;border-bottom:3px solid transparent;border-radius:0;background:none;padding:6px 12px;font-weight:600;color:var(--muted)}
#nav button.on{color:var(--ink);border-bottom-color:var(--accent)}#nav button:hover{color:var(--ink)}
:root{--sb-w:260px}
/* Dati view: the side panel is hidden or docked at full height to the left or right edge; the workspace takes the rest (never under it) */
#v-data{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3);padding:var(--sp-2) 6px var(--sp-3) 6px;align-items:start}
#v-data.sb-open{grid-template-columns:var(--sb-w) minmax(0,1fr)}
#v-data.sb-open.sb-right{grid-template-columns:minmax(0,1fr) var(--sb-w)}
#v-data.sb-right #dfiles{order:2}
#v-data.sb-right #v-workspace{order:1}
#v-data.sb-right #sidebar-resize-handle{left:-3px;right:auto}
#dfiles{display:none;flex-direction:column;align-items:stretch;box-sizing:border-box;min-width:0}
#v-data.sb-open #dfiles{display:flex;position:sticky;top:calc(var(--hh,40px) + 4px);height:calc(100vh - var(--hh,40px) - 16px);max-height:calc(100vh - var(--hh,40px) - 16px);z-index:40}
/* narrow screens: the panel is a sheet that replaces the workspace */
#v-data.sb-sheet.sb-open{grid-template-columns:minmax(0,1fr)}
#v-data.sb-sheet.sb-open #v-workspace{display:none}
#v-data.sb-sheet #sidebar-resize-handle{display:none}
#v-data.sb-sheet #sb-x{width:auto;min-width:44px;min-height:36px;padding:2px 14px;border:1px solid var(--accent);color:var(--accent);font-weight:600}
#sb-toggle{display:inline-flex;align-items:center;gap:5px;flex:none;padding:4px 10px 4px 8px;min-height:30px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ink);font-size:13px;cursor:pointer}
#sb-toggle[hidden]{display:none}#sb-toggle:hover{background:var(--soft)}#sb-toggle .ti{display:inline-flex;color:var(--accent)}
#sb-toggle[aria-pressed=true]{background:var(--sel);border-color:var(--accent);color:var(--accent)}
#sb-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
#sidebar-resize-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;background:var(--accent);opacity:.6}
#bar-hint{position:fixed;z-index:6000;display:flex;gap:8px;align-items:flex-start;max-width:min(340px,calc(100vw - 16px));box-sizing:border-box;padding:9px 10px 9px 12px;background:var(--panel);color:var(--ink);border:1px solid var(--accent);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.2);font-size:13px;line-height:1.4}#bar-hint::before{content:"";position:absolute;top:-6px;left:var(--ha,18px);width:10px;height:10px;background:var(--panel);border-left:1px solid var(--accent);border-top:1px solid var(--accent);transform:rotate(45deg)}#bar-hint button{flex:none;border:0;background:none;color:var(--muted);font-size:16px;line-height:1;padding:0 4px;cursor:pointer}#bar-hint button:hover{color:var(--ink)}#bar-hint button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (prefers-reduced-motion:no-preference){#bar-hint{animation:hint-in .25s ease}@keyframes hint-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}}
#sb-pane{flex:1 1 0;min-width:0;display:flex;flex-direction:column;position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel);box-sizing:border-box;padding:0}
#sb-pane:focus{outline:none}#sb-pane:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
#sb-grip{display:inline-flex;color:var(--muted);cursor:grab;padding:2px 2px 2px 0}
#sb-header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#sb-header button,#sb-header input{cursor:pointer;touch-action:manipulation}
body.sb-dragging,body.sb-dragging *{cursor:grabbing!important;user-select:none!important}
.sb-dz{position:fixed;top:var(--hh,40px);bottom:0;width:50vw;z-index:5200;display:flex;align-items:center;justify-content:center;border:2px dashed var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent);font-weight:700;pointer-events:none;box-sizing:border-box}
.sb-dz.l{left:0}.sb-dz.r{right:0}
.sb-dz.hot{background:color-mix(in srgb,var(--accent) 26%,transparent);border-style:solid}
.sb-dz-prev{position:fixed;top:var(--hh,40px);bottom:0;z-index:5201;pointer-events:none;border:2px solid var(--accent);background:color-mix(in srgb,var(--panel) 70%,transparent);box-sizing:border-box;border-radius:8px}
@media (prefers-reduced-motion:no-preference){.sb-dz{transition:background .12s}}
/* the button of the session is always in the header (hidden = invisible, space kept): when it comes nothing moves */
header #newrun[hidden]{display:inline-flex!important;visibility:hidden}
/* header texts are translated before the first paint (index.html): its space is kept, invisible, until then */
html.i18n-wait body>:not(header){visibility:hidden}html.i18n-wait header{visibility:hidden}html.i18n-wait header :is(.logo,#np-set,#sb-toggle,#fs-btn,.hq){visibility:visible}header .ib .ic{min-width:16px;min-height:16px}
/* toolbar of the header */
#stbar{flex:1 1 0;min-width:0;height:30px;min-height:30px;display:flex;align-items:center;justify-content:flex-end;gap:3px;overflow:hidden;white-space:nowrap}
@media (max-width:760px){header{flex-wrap:wrap}#nav{flex-wrap:wrap;min-width:0}#stbar{flex:1 1 100%;order:20;justify-content:flex-start}}
#stbar .tb{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;min-height:30px;flex:none;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink);cursor:pointer;font-size:13px}
#stbar .tb:hover{background:var(--soft)}
#stbar .tb .ti{display:inline-flex;color:var(--accent)}
#stbar .tb .tl{display:none}
/* label levels, chosen by barra.js from the measured space: lab-all (words on every button), lab-main (only on the main tools), none */
#stbar.lab-all .tb .tl,#stbar.lab-main .tb[data-main] .tl{display:inline}
#stbar.lab-all .tb,#stbar.lab-main .tb[data-main]{border-color:var(--line);border-radius:999px;padding:4px 8px 4px 6px}
#stbar.lab-all .tb-split .tb-main,#stbar.lab-main .tb-split .tb-main[data-main]{border-radius:999px 0 0 999px}
#stbar.lab-all .tb-split .tb-car,#stbar.lab-main .tb-split .tb-main[data-main]+.tb-car{border-color:var(--line);border-radius:0 999px 999px 0;padding:4px 7px 4px 5px}
#stbar.lab-all .tb.on,#stbar.lab-all .tb[aria-pressed=true],#stbar.lab-main .tb.on[data-main],#stbar.lab-main .tb[data-main][aria-pressed=true]{border-color:var(--accent)}
#stbar .tb.on,#stbar .tb[aria-pressed=true]{background:var(--sel);border-color:var(--accent);color:var(--accent)}
/* an active split button is one control: the caret takes the state of the main part */
#stbar .tb-split.on .tb-car,#stbar.lab-all .tb-split.on .tb-car,#stbar.lab-main .tb-split.on .tb-main[data-main]+.tb-car{background:var(--sel);border-color:var(--accent);color:var(--accent)}
/* header buttons: one focus ring, only from the keyboard, drawn INSIDE the button (#stbar clips what falls outside) and never the browser's double ring */
header button:focus:not(:focus-visible),header a:focus:not(:focus-visible){outline:none}
header button:focus-visible,header a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
header .hq:focus-visible{outline-offset:1px}
#stbar .tb-split{display:inline-flex;flex:none}
#stbar .tb-split .tb-main{border-top-right-radius:0;border-bottom-right-radius:0}
#stbar .tb-split .tb-car{border-top-left-radius:0;border-bottom-left-radius:0;padding:4px 3px;margin-left:-1px}
#stbar .tb-sep{width:1px;align-self:stretch;margin:4px 3px;background:var(--line);flex:none}
#stbar [hidden]{display:none!important}html.in-theory #newrun,html.in-theory #sb-toggle,html.in-theory #np-set{display:none!important}
#paletta{position:fixed;inset:0;z-index:7200;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;background:rgba(0,0,0,.35)}
#paletta[hidden]{display:none}
#paletta .pal-b{width:min(560px,calc(100vw - 24px));background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.35);overflow:hidden}
#paletta input{width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:12px 14px;font-size:15px;background:var(--panel);color:var(--ink);outline:none;box-sizing:border-box}
#paletta input:focus-visible{box-shadow:inset 0 -2px 0 var(--accent)}
#pal-l{list-style:none;margin:0;padding:4px;max-height:min(50vh,360px);overflow-y:auto}
#pal-l li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:7px 10px;border-radius:6px;cursor:pointer;min-height:34px}
#pal-l li[aria-selected=true]{background:var(--sel);outline:1px solid var(--accent)}
#pal-l .pal-i{display:inline-flex;color:var(--accent);flex:none}#pal-l .pal-t{flex:1 1 11em;min-width:0}#pal-l .pal-g{font-size:11px;color:var(--muted);flex:none}#pal-l .pal-k{font:inherit;font-size:11px;border:1px solid var(--line);border-radius:4px;padding:0 5px;color:var(--muted);flex:none}
#pal-l li.pal-h{display:block;min-height:0;padding:6px 12px 2px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);cursor:default}
#pal-l .pal-c{font-size:11px;flex:none;border:1px solid var(--line);border-radius:999px;padding:0 8px;color:var(--ink)}
#pal-l .pal-d{color:var(--muted);font-size:12px}#pal-l .pal-t b{font-weight:600}
#pal-e{color:var(--muted);padding:8px 12px;font-size:.9em}#pal-e:empty{display:none}
#paletta .pal-f{display:flex;justify-content:space-between;gap:8px;padding:6px 12px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.pal-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (pointer:coarse){#pal-l li{min-height:44px}}
#stmenu{position:fixed;z-index:7100;min-width:190px;max-width:min(340px,calc(100vw - 16px));background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.25);padding:4px;display:flex;flex-direction:column;gap:1px}
#stmenu button{display:flex;align-items:center;gap:8px;text-align:left;border:0;background:transparent;padding:6px 10px;border-radius:5px;color:var(--ink);cursor:pointer;font-size:13px;white-space:normal;min-height:30px}
#stmenu button:hover,#stmenu button:focus-visible{background:var(--sel);outline:none}
#stmenu button .mi{display:inline-flex;color:var(--accent);flex:none;width:16px}
#stmenu button[aria-checked=true]{font-weight:700}
#stmenu button[aria-checked=true]::after{content:"";margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--accent)}
#stmenu .mh{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:6px 10px 2px}
#stmenu hr{border:0;border-top:1px solid var(--line);margin:3px 0}
@media (pointer:coarse){#stbar .tb{min-height:40px;min-width:40px;justify-content:center}#stmenu button{min-height:40px}#sb-header button{min-width:40px;min-height:40px}}
#sb-header{display:flex;align-items:center;gap:6px;padding:var(--sp-2) 8px;border-bottom:1px solid var(--line);flex:none;margin:0}
#sb-title{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-dock-btn{background:transparent;border:0;padding:2px 4px;min-width:24px;min-height:24px;cursor:pointer;color:var(--muted);border-radius:4px;display:inline-flex;align-items:center;justify-content:center}
.sb-dock-btn:hover{color:var(--ink);background:var(--soft)}
#sb-panels{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;padding:4px 6px}
#sb-panels [role="tabpanel"][hidden]{display:none!important}
#sidebar-resize-handle{position:absolute;right:-3px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:60;touch-action:none}
#sidebar-resize-handle:hover,body.sb-resizing #sidebar-resize-handle{background:var(--accent);opacity:0.6}
body.sb-resizing{user-select:none!important;cursor:col-resize!important}
#calcdlg.sb-docked{position:static!important;width:100%!important;max-height:none!important;box-shadow:none!important;padding:0!important;border:none!important;background:transparent!important}
#calcdlg.sb-docked .top{display:none!important}

#sb-panel-losses .nlbar{flex-wrap:wrap;gap:4px}
#sb-panel-losses .nlbar input{width:100%;max-width:100%;box-sizing:border-box}

#sb-panel-losses table{width:100%;font-size:11px}
#sb-panel-lists{padding:2px}
#sb-panel-qaqc{padding:2px;font-size:12px}
#sb-panel-qaqc summary{cursor:pointer;font-weight:600;margin:6px 0}
#sb-panel-qaqc .qq-tab{width:100%;font-size:11px;border-collapse:collapse}
#sb-panel-qaqc .qq-tab th,#sb-panel-qaqc .qq-tab td{padding:2px 4px;border-bottom:1px solid var(--line);text-align:left}
#sb-panel-qaqc .qq-tab td.num{text-align:right;font-variant-numeric:tabular-nums}
#sb-panel-qaqc .qq-scroll{overflow-x:auto}
#sb-panel-qaqc .qq-form{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:flex-end;margin:4px 0}
#sb-panel-qaqc .qq-form label{display:flex;flex-direction:column;font-size:11px;color:var(--muted)}
#sb-panel-qaqc .qq-form input{max-width:100%;box-sizing:border-box}
#sb-panel-qaqc .qq-ion{border:1px solid var(--line);border-radius:6px;padding:6px;margin:6px 0}
#sb-panel-qaqc .qq-h{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}
#sb-panel-qaqc .qq-h button{margin-left:auto}
#sb-panel-qaqc .qq-chart{width:100%;height:auto;display:block}
#sb-panel-qaqc .qq-sum{margin:4px 0;padding-left:16px}
#sb-panel-qaqc .qq-n{display:inline-block;min-width:1.4em;color:var(--muted)}
#sb-panel-qaqc .bad{color:var(--bad)}
#sb-panel-stat{padding:2px;font-size:12px}
#sb-panel-stat summary{cursor:pointer;font-weight:600;margin:6px 0}
#sb-panel-stat .qq-tab{width:100%;font-size:11px;border-collapse:collapse}
#sb-panel-stat .qq-tab th,#sb-panel-stat .qq-tab td{padding:2px 4px;border-bottom:1px solid var(--line);text-align:left}
#sb-panel-stat .qq-tab td.num{text-align:right;font-variant-numeric:tabular-nums}
#sb-panel-stat .qq-scroll{overflow-x:auto}
#sb-panel-stat .qq-form{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:flex-end;margin:4px 0}
#sb-panel-stat .qq-form label{display:flex;flex-direction:column;font-size:11px;color:var(--muted)}
#sb-panel-stat .qq-n{display:inline-block;min-width:1.4em;color:var(--muted)}
#sb-panel-stat .bad{color:var(--bad)}
#sb-panel-stat input,#sb-panel-stat select{max-width:100%;box-sizing:border-box;font-size:11px}
#sb-panel-stat .ref-sort{background:none;border:0;padding:0;font:inherit;font-weight:600;color:inherit;cursor:pointer;text-align:left}
#sb-panel-stat .ref-sort:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
#sb-panel-stat #ref-tab tbody tr{cursor:pointer}
#sb-panel-stat #ref-tab tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
#sb-panel-stat .ref-fs{margin:4px 0;padding:4px 6px;border:1px solid var(--line)}
#sb-panel-stat .ref-chk{display:inline-flex;gap:3px;align-items:center;margin-right:8px}
#sb-panel-stat .prof-chart{width:100%;height:auto;display:block}
#sb-panel-stat .pca-plot{width:100%;height:auto;display:block}
#sb-panel-stat .pca-q{min-width:22px;height:22px;padding:0 4px;border-radius:50%;font-size:12px;line-height:1}
#sb-panel-stat tr.sel td{background:var(--sel)}
#sb-panel-stat tbody tr[tabindex]{cursor:pointer}
.cmp-grad{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);margin:6px 0}
.cmp-grad i{display:block;flex:1;min-width:60px;height:8px;border-radius:4px;border:1px solid var(--line)}
.liste-bar{display:flex;flex-direction:column;gap:5px}.lb-row{display:flex;flex-wrap:wrap;gap:5px 8px;align-items:center}.lb-row label{display:inline-flex;align-items:center;gap:4px;flex:1 1 110px;min-width:0}.lb-row label.lb-grow{flex:1 1 100%}.lb-row input{flex:1 1 40px;min-width:0;width:100%;padding:2px 6px}#lst-tol-wrap{flex:0 1 112px}
.liste-panel .seg button{padding:1px 7px;font-size:11px;min-height:0;line-height:1.5;white-space:nowrap}
#sb-panel-lists .lct td,#sb-panel-lists .lct th{height:22px;padding:1px 6px;font-size:11px;line-height:1.25}#sb-panel-lists .lct th.num{white-space:nowrap}#sb-panel-lists .liste-panel{font-size:12px}#sb-panel-lists .lct td,#sb-panel-lists .lct th{white-space:nowrap}#sb-panel-lists .lct td:nth-child(3){white-space:normal;min-width:150px}
#sb-panel-file #flst{max-height:none;overflow:visible}
.grp-files{padding-left:8px}
.fl{display:flex;gap:6px;align-items:flex-start;padding:3px 0;border-bottom:1px solid var(--line);transition:background .1s}
.fl[draggable="true"]{cursor:grab}
.fl.fl-dragging{opacity:0.35;background:var(--soft)}
.fl.drop-before{border-top:2px solid var(--accent)!important}
.fl.drop-after{border-bottom:2px solid var(--accent)!important}
.chv,.pr-tog{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;color:var(--ink);cursor:pointer;user-select:none}.chv::before,.pr-tog::before{content:"";width:9px;height:9px;border-right:2.5px solid currentColor;border-bottom:2.5px solid currentColor;transform:rotate(-45deg);transition:transform var(--t-fast)}.chv.on::before,.pr-tog.on::before{transform:rotate(45deg) translate(-2px,-2px)}.pr-tog:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:4px}@media (prefers-reduced-motion:reduce){.chv::before,.pr-tog::before{transition:none}}.fgh{display:flex;align-items:center;gap:6px;margin:6px 0 2px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.sp-pop{position:absolute;z-index:30;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.18);padding:8px 10px;display:flex;flex-direction:column;gap:6px;font-size:12px;min-width:230px}.sp-pop label{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.sp-pop input[type=number]{width:54px}sup,sub{font-size:.72em;line-height:0;position:relative;vertical-align:baseline}sup{top:-.45em}sub{top:.25em}.pol{display:inline-block;flex:none;font-size:10.5px;line-height:1.5;padding:0 6px;border-radius:9px;background:var(--sel,#e8ecf2);color:var(--muted);margin-left:4px;cursor:help;white-space:nowrap}.pol.pos{background:#e8f0fe;color:#1a56db;border:1px solid rgba(26,86,219,.25);font-weight:600}.pol.neg{background:#fde8e8;color:#c81e1e;border:1px solid rgba(200,30,30,.25);font-weight:600}.pol.both{background:#f3e8ff;color:#6b21a8;border:1px solid rgba(107,33,168,.25);font-weight:600}:root[data-theme=dark] .pol.pos{background:rgba(59,130,246,.2);color:#93c5fd;border-color:rgba(147,197,253,.3)}:root[data-theme=dark] .pol.neg{background:rgba(239,68,68,.2);color:#fca5a5;border-color:rgba(252,165,165,.3)}:root[data-theme=dark] .pol.both{background:rgba(168,85,247,.2);color:#d8b4fe;border-color:rgba(216,180,254,.3)}.fl .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fgh.sub{margin:4px 0 0 14px;font-weight:600;font-size:10.5px}.fgh em{font-style:normal;font-weight:400;margin-left:auto}#flst .fl:not(.pr){padding-left:9px}.fl.cur{background:var(--sel);border-radius:4px;box-shadow:inset 5px 0 0 var(--accent),inset 0 0 0 1px var(--accent);padding-left:9px}.fl.cur .nm{font-weight:800}.fl.cur.pr{box-shadow:none;padding-left:0}.tag{background:var(--sel);border:1px solid var(--line);border-radius:8px;padding:0 6px;color:var(--ink)}.fl i:empty{width:12px;height:12px;border-radius:3px;margin-top:3px;flex:none}.fl small{display:block;color:var(--muted)}.fl .fi{flex:1;min-width:0;display:flex;gap:6px;align-items:baseline;justify-content:space-between}.fl .pn{cursor:pointer}.fl .pn:hover{text-decoration:underline}.fl .fi small{display:inline;white-space:nowrap;flex:none}.fl.pr{border-bottom-style:dotted}.pnl .ctl label.dis{opacity:.45}.pnl .ctl :disabled{opacity:.5;cursor:not-allowed}.parr{position:absolute;left:34px;width:14px;z-index:4999;pointer-events:none;color:var(--accent)}
.cmp-grid{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}.cmp-grid label{display:inline-flex;gap:5px;align-items:center}
.mwarn{margin:6px 14px;padding:8px 12px;border:1px solid var(--bad);border-left:5px solid var(--bad);border-radius:6px;background:color-mix(in srgb,var(--bad) 9%,var(--panel));font-size:13.5px}.mwarn button{float:right;border:0;background:none;font-size:18px;cursor:pointer;color:var(--ink)}
#dpanels{position:relative;min-height:520px}
#work-empty{position:absolute;inset:0;display:grid;place-items:center;padding:0 16px;text-align:center;color:var(--muted);font-size:15px;pointer-events:none}/* the side bar of the active or paired panel is its own left border: it follows the corner radius; the padding gives back the 1px so nothing moves (a 2px bar in place of the 1px card border) */.pnl[data-pair],.pnl.act{border-left:2px solid var(--pc,var(--accent));padding-left:calc(var(--pnl-pad-x) - 1px)}.pnl[data-pair="1"]{--pc:var(--accent)}.pnl[data-pair="2"]{--pc:var(--grad)}.pnl[data-pair="3"]{--pc:var(--ok)}.pnl[data-pair="4"]{--pc:var(--bad)}.pnl.pair-hi{outline:2px dashed var(--pc,var(--accent));outline-offset:-2px}.ppair{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;white-space:nowrap;margin-right:6px;padding:0 5px;height:15px;line-height:1;text-align:center;gap:2px;border-radius:8px;border:1px solid var(--pc,var(--accent));font-size:10px;font-weight:700;color:var(--ink)}.pscan{margin-left:6px;font-size:11px;color:var(--muted);font-weight:600}.pnl{position:absolute;display:flex;flex-direction:column;resize:both;overflow:hidden;min-width:300px;min-height:190px;margin:0;padding:var(--pnl-pad-y) var(--pnl-pad-x);box-shadow:0 1px 4px rgba(60,50,20,.08)}.pnl .hd{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:var(--pnl-hd-gap);cursor:move;flex:none}.pnl .hd .corrb{display:inline-flex;align-items:center;gap:3px}.pnl .hd .corrb.on{border-color:var(--accent);color:var(--accent)}.pnl .hd .xlab{font-size:12.5px;white-space:nowrap}.pnl .hd{flex-wrap:nowrap;min-width:0}.pnl:not(.map) .hd .ttl{flex:0 1 auto;min-width:5ch;max-width:32ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pnl .hd .hmb{font-weight:700;letter-spacing:1px}.pnl .hmore{position:absolute;right:8px;z-index:40;display:flex;flex-wrap:wrap;gap:6px;align-items:center;max-width:min(94%,560px);overflow:auto;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.18);cursor:default}.pnl .hmore[hidden]{display:none}.pnl .hd-ov{display:none!important}.pnl .hmore .tbg{display:inline-flex;gap:4px}@media (pointer:fine){.pnl .hd select,.pnl .hd input:not([type=checkbox]),.pnl .hd .bt,.pnl .hd .corrb,.pnl .hd .fcount{height:26px;min-height:0;box-sizing:border-box;font-size:11.5px;padding:0 6px}.pnl .hd select{padding-right:28px}.pnl .hd .bt svg{width:14px;height:14px}.pnl .hd .x{min-height:26px}.pnl .hd .mzfs{display:inline-flex;align-items:center;gap:2px;flex-wrap:nowrap;min-width:0}.pnl .hd .mzstep{width:26px;padding:0;flex:none}}.bt{font-size:11px;padding:1px 6px;color:var(--muted)}.xrow{margin:10px 0}.mzf{width:78px;text-align:center}header .hq:last-child{margin-left:auto}input.mzf::-webkit-inner-spin-button{display:none}.bt.on,.tbg button.on{background:var(--accent);background-clip:border-box;color:var(--on-accent);border-color:var(--accent)}   /* each button has its own rounded border, the fill reaches the edge */.bt svg{vertical-align:-2px}.pnl.max{position:fixed!important;left:12px!important;top:calc(var(--hh,46px) + 10px)!important;right:12px!important;bottom:12px!important;width:auto!important;height:auto!important;z-index:9000!important;resize:none;box-shadow:0 8px 30px rgba(0,0,0,.25);transition:none}.pnl .hd b{cursor:text}.tbs{display:inline-flex;gap:4px;align-items:center;flex:none;margin-left:auto}.pnl.map .ctl{display:flex;flex-wrap:nowrap;gap:4px 6px;align-items:center;flex:1 1 auto;min-width:0}.pnl .cpar .bt.cparl{width:auto;padding:0 8px;font-size:12px;white-space:nowrap}.pnl.chrom .ctl,.pnl.xic .ctl,.pnl.mrm .ctl{display:flex;flex-wrap:nowrap;gap:4px 6px;align-items:center;flex:1 1 auto;min-width:0}.pnl .ctl select.ttlsel{font-weight:700;font-size:calc(1em + 1px);border-color:transparent;background-color:transparent;padding-left:2px}.pnl .ctl select.ttlsel:hover{border-color:var(--line)}.cpar{display:inline-flex;align-items:center;gap:4px;position:static}.cpar .chip{font-size:10.5px;padding:0 7px;border-radius:9px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;white-space:nowrap}.cpar .chip:hover{border-color:var(--accent)}.cpop{max-width:360px}.cpop[hidden]{display:none}.cpop label,.cpop select{align-self:flex-start}.tbg{display:inline-flex;gap:4px;align-items:center;flex:none}.tbg+.tbg{border-left:1px solid var(--line);padding-left:6px;margin-left:2px}.tbg.mv{border-left:0;padding-left:0}.tbg.mv+.tbg{border-left:1px solid var(--line);padding-left:6px}.bt:disabled{opacity:.4;cursor:default}
.pnl .rd{position:absolute;right:12px;bottom:4px;z-index:1;color:var(--muted);font-variant-numeric:tabular-nums;pointer-events:none}.pnl .leg{padding-right:190px}#fpop{position:fixed;z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 18px rgba(30,40,60,.22);padding:6px 8px;max-height:60vh;overflow:auto;min-width:210px}#fpop label{display:flex;gap:6px;align-items:center;padding:2px 0;cursor:default}#fpop i:empty{width:10px;height:10px;border-radius:2px;display:inline-block}#fpop .fn{cursor:pointer}#fpop .fn:hover{color:var(--accent)}#fpop .fpb{display:flex;gap:6px;margin-bottom:2px}.x{border:0;background:none;font-size:16px;color:var(--muted);padding:0 4px}.x:hover{color:var(--bad)}
/* ONE close «X» for every panel, dialog, popup and the hint: the × character is hidden (it stays for the tests and the title names it) and an SVG X drawn by a mask is centred in the button box by the flexbox (the hidden text is a zero-width item); #np-closeall (inline SVG) is centred the same way */
button.x,.pnl button.x{font-size:0;line-height:0;display:inline-flex;align-items:center;justify-content:center}
button.x::before{content:"";display:block;width:12px;height:12px;background:currentColor;-webkit-mask:var(--x-mask) center/contain no-repeat;mask:var(--x-mask) center/contain no-repeat}
:root{--x-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1.5 1.5l9 9M10.5 1.5l-9 9' stroke='black' stroke-width='1.6' stroke-linecap='round' fill='none'/%3E%3C/svg%3E")}
#np-closeall{display:inline-grid;place-items:center}#np-closeall svg{display:block}
.pnl .x{font-size:18px;min-width:28px;min-height:24px;padding:0 8px;margin-left:6px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);transition:background .15s,color .15s}.pnl .x:hover{background:var(--soft);color:var(--bad)}
.pnl .ctl{display:contents}.pnl .ctl label{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.pnl .ctl input[type=checkbox]{padding:0;margin:0}.pnl .ctl select{max-width:170px}
.pnl{transition:top .38s cubic-bezier(.4,0,.2,1)}.pnl .bt:disabled{opacity:.3;cursor:default}.pnl .lk{font-size:11px;font-weight:600;color:var(--accent);margin-left:6px;cursor:help;white-space:nowrap}.pnl .rtl{font-weight:700;color:var(--accent);font-size:calc(1em + 1px);white-space:nowrap;margin:0 6px 0 -2px;display:inline-block;font-variant-numeric:tabular-nums;text-align:left;min-width:6.7em}   /* min-width = the width of «RT 88.88 min» (measured: 6.5em), so the buttons do not move with the cursor */.pnl.drag{transition:none;opacity:.94;box-shadow:0 6px 18px rgba(30,40,60,.25)}/* the active panel: a bar on the left (the pair colour wins when the panel is paired) */
.pnl .zr{position:absolute;background:rgba(43,92,138,.16);border:1px solid #2b5c8a;pointer-events:none;z-index:2}.zl{position:absolute;pointer-events:none;z-index:2;--zc:var(--accent);background-repeat:no-repeat}
.zl.v{width:16px;background:linear-gradient(var(--zc),var(--zc)) right/1px 100%,linear-gradient(var(--zc),var(--zc)) top/9px 1px,linear-gradient(var(--zc),var(--zc)) bottom/9px 1px,color-mix(in srgb,var(--zc) 15%,transparent);background-repeat:no-repeat}
.zl.h{height:16px;background:linear-gradient(var(--zc),var(--zc)) top/100% 1px,linear-gradient(var(--zc),var(--zc)) left/1px 9px,linear-gradient(var(--zc),var(--zc)) right/1px 9px,color-mix(in srgb,var(--zc) 15%,transparent);background-repeat:no-repeat}
.zl::after{content:attr(data-v);position:absolute;white-space:nowrap;font-size:10.5px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:0 5px}.zl[data-v=""]::after{display:none}
.zl.v::after{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}.zl.h::after{left:calc(100% + 8px);top:-3px}
.zl.hint{background:color-mix(in srgb,var(--zc) 8%,transparent);border:0;width:auto}.zl.hint.v{width:auto}.pnl .vl,.pnl .cl{position:absolute;width:0;border-left:1px dashed var(--muted);pointer-events:none;z-index:2}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
dialog.tdati{max-width:min(92vw,820px);width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink)}
dialog.tdati::backdrop{background:rgba(0,0,0,.35)}
.td-hd{display:flex;align-items:center;justify-content:space-between;gap:8px}.td-hd h3{margin:0;font-size:15px}
.td-sc{max-height:60vh;overflow:auto;margin:8px 0;border:1px solid var(--line);border-radius:6px}.td-sc:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.td-sc table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}.td-sc th,.td-sc td{padding:3px 8px;text-align:right;border-bottom:1px solid var(--line)}
.td-sc th[scope=col]{position:sticky;top:0;background:var(--soft);z-index:1}.td-sc th[scope=row]{text-align:left;font-weight:500}.td-sc td:first-child{text-align:left}
.td-ft{display:flex;align-items:center;gap:8px;justify-content:flex-end}.td-ft .sm{margin-right:auto}
.pnl .bt,.pnl .lk,.pnl .cpar>.bt,.pnl .chip,.pnl .x{min-width:24px;min-height:24px}
.pnl label{min-height:24px;display:inline-flex;align-items:center}
/* spectrum header: controls keep their width (the overflow ones go into «⋯» through fitHd) instead of shrinking over their neighbours */
.pnl.spec .hd>*,.pnl.spec .hd .ctl>*{flex-shrink:0;white-space:nowrap}
.pnl.spec .hd .ctl select{flex-shrink:1;min-width:16ch}
html{scroll-padding-top:60px;scroll-padding-bottom:16px}
:focus-visible{scroll-margin-top:60px}
.pnl canvas:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.clh{display:none;position:absolute;z-index:3;width:14px;height:14px;margin:-7px 0 0 -7px;padding:0;border-radius:50%;border:2px solid var(--panel);background:var(--accent);cursor:ew-resize;touch-action:none;box-shadow:0 0 0 1px var(--accent)}
.clh::before{content:"";position:absolute;inset:-5px}
.clh:hover,.clh.on{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 35%,transparent)}
.clh:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media (pointer:coarse){.clh{display:block;width:18px;height:18px;margin:-9px 0 0 -9px}.clh::before{inset:-11px}}
html.ptr-touch .clh{display:block}
html.ptr-mouse .clh{display:none}
html .clh[hidden]{display:none!important}
.pnl canvas{-webkit-user-select:none;user-select:none}
:root{--diff-pos:#D55E00;--diff-neg:#0072B2}.subchip{display:inline-flex;gap:2px;align-items:center;background:var(--sel);border:1px solid var(--line);border-radius:10px;padding:0 4px;font-size:11px}.subchip button{padding:0 6px;font-size:11px;min-height:18px;background:transparent;border:0;color:var(--ink);cursor:pointer}.subchip button:focus-visible,.subpop :focus-visible{outline:2px solid var(--accent);outline-offset:1px}.subpop{position:fixed;z-index:10003;width:300px;max-width:94vw;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.22);padding:10px 12px}.subpop .spr{display:flex;gap:8px;align-items:center;margin:6px 0;flex-wrap:wrap}.subpop .spr>label:first-child{min-width:7em;color:var(--muted)}.subpop input[type=range]{flex:1;min-width:90px}.subpop input[type=number]{width:64px}.subpop .mzf{width:80px}@media (pointer:coarse){.subchip button{min-height:40px;min-width:40px}.subpop select,.subpop input,.subpop button{min-height:40px}.subpop input[type=range]{min-height:40px}.subpop input[type=checkbox]{width:24px;height:24px}}@media (prefers-reduced-motion:no-preference){.subpop{transition:opacity .12s}}
@media (prefers-reduced-motion:no-preference){.clh{transition:box-shadow .12s}}
.pnl.flash{animation:pflash 1s ease-out}@keyframes pflash{0%{box-shadow:0 0 0 4px var(--accent)}100%{box-shadow:0 0 0 4px transparent}}.pnl .rd{min-width:17em;text-align:right;white-space:nowrap}.pnl .bt.on svg{color:#fff}
.pnl .tip{position:absolute;z-index:3;pointer-events:none;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 3px 10px rgba(40,30,10,.18);padding:4px 8px;font-size:12px;white-space:nowrap;color:var(--ink)}.tip div{display:flex;gap:5px;align-items:center}.tip i:empty{width:10px;height:3px;display:inline-block}
.leg .tg{cursor:pointer}.leg .tg.off,.leg .tr.off{opacity:.38;text-decoration:line-through}.cbar{width:90px;height:9px;border-radius:2px;border:1px solid var(--line)}
.pnl canvas{flex:1 1 0;min-height:110px;width:100%;cursor:crosshair;border-top:1px solid var(--line)}
.leg{flex:none;max-height:58px;overflow:auto;display:flex;gap:10px;flex-wrap:wrap;margin-top:var(--sp-1);color:var(--muted)}.leg span{display:inline-flex;gap:4px;align-items:center}.leg i:empty{width:14px;height:3px;display:inline-block}
.leg .lvl{display:flex;flex-wrap:wrap;gap:10px;flex-basis:100%}.leg .tr b{color:var(--ink);cursor:text}.leg .tr button{border:0;background:none;color:var(--muted);padding:0 2px}
#ctx{position:fixed;z-index:10000;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 14px rgba(60,45,10,.18);padding:3px;min-width:220px}
#ctx div{padding:4px 10px;border-radius:4px;cursor:pointer;white-space:nowrap}#ctx div:hover{background:var(--sel)}#ctx hr{border:0;border-top:1px solid var(--line);margin:3px 0}#ctx .ic{display:inline-flex;align-items:center;vertical-align:middle;margin-right:8px;width:16px;height:16px}#ctx .ic svg{display:block}#ctx .ck{float:right;margin-left:14px}#ctx .dim{color:var(--muted);cursor:default}#ctx .dim:hover{background:none}#ctx .mrow{display:flex;gap:2px;padding:0;cursor:default}#ctx .mrow:hover{background:none}#ctx .mrow>div{flex:1 1 0;display:flex;justify-content:center;align-items:center;min-height:28px}#ctx .mrow .ic{margin-right:0}
dialog{border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);padding:14px 16px;max-width:520px}dialog::backdrop{background:rgba(60,45,10,.35)}
dialog input{width:100%;margin:6px 0 10px}dialog .row{display:flex;gap:8px;justify-content:flex-end}
.hint{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:4px;padding:6px 10px;margin-bottom:10px;color:var(--muted)}
#v-draw{display:grid;grid-template-columns:1fr 330px;gap:0;padding:0}/* the cards column is as tall as the editor and scrolls on its own; stacked layouts below let it flow */
#v-draw aside{padding:10px 14px;box-sizing:border-box;position:sticky;top:var(--hh,48px);height:calc(100vh - var(--hh,48px));overflow:auto;border-left:1px solid var(--line)}@media (max-width:1000px){#v-draw{grid-template-columns:1fr}#v-draw aside{position:static;height:auto;border-left:0}}@media (pointer:coarse) and (max-width:1500px){#v-draw{grid-template-columns:1fr}#v-draw aside{position:static;height:auto;border-left:0}}   /* tablet: the editor takes the whole width (its top toolbar can be larger), the cards go below */
/* a direct #/draw address (index.html marks <html> in the head) never draws the Dati start screen first */
html.in-draw #start{display:none}
/* two-finger swipe to the right on the trackpad must not go back in the browser history while drawing */
html.in-draw,html.in-draw body{overscroll-behavior-x:none}#v-draw{overscroll-behavior:contain}
#v-draw.noside{grid-template-columns:1fr}#v-draw.noside aside{display:none}#side-toggle{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:4px 10px 4px 8px;border:1px solid var(--muted);border-radius:999px;background:var(--panel);color:var(--ink);font-size:13px;cursor:pointer}#side-toggle:hover{background:var(--soft);border-color:var(--accent)}#side-toggle .ti{display:inline-flex;color:var(--accent)}#side-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}#side-row{text-align:right;margin-bottom:6px}#side-corner{position:absolute;top:6px;right:8px;z-index:2}#side-toggle.ico .tl{display:none}#side-toggle.ico{padding:4px 8px}
#keys-body table{border-collapse:collapse;width:100%}#keys-body td{padding:2px 4px;border-bottom:1px solid var(--line);font-size:12px}#keys-body td:first-child{white-space:nowrap;font-weight:600}
.avv{background:var(--soft);color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:6px;padding:8px 12px;margin:0 0 8px}.avv.warn{background:color-mix(in srgb,var(--warn) 12%,var(--panel));border-color:color-mix(in srgb,var(--warn) 35%,var(--line));border-left-color:var(--warn)}.avv.bad{background:color-mix(in srgb,var(--bad) 12%,var(--panel));border-color:color-mix(in srgb,var(--bad) 35%,var(--line));border-left-color:var(--bad)}.avv.ok{background:color-mix(in srgb,var(--ok) 12%,var(--panel));border-color:color-mix(in srgb,var(--ok) 35%,var(--line));border-left-color:var(--ok)}
#v-theory{padding:0}#tframe{display:block;width:100%;height:calc(100vh - 52px);border:0;background:var(--bg)}
#busybar{position:fixed;left:0;right:0;top:0;height:3px;z-index:60;overflow:hidden;background:transparent}#busybar[hidden]{display:none}#busybar i{display:block;height:100%;width:30%;background:var(--accent);animation:busyslide 1.2s ease-in-out infinite}@keyframes busyslide{from{transform:translateX(-100%)}to{transform:translateX(340%)}}@media (prefers-reduced-motion:reduce){#busybar i{animation:none;width:100%}}:root[data-a11y-reduce] #busybar i{animation:none;width:100%}
#kload{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;font-size:15px;z-index:1;pointer-events:none}#kld-dots span{display:inline-block;width:5px;visibility:hidden}
/* the editor fills the page under the header: edge to edge, down to the window bottom */
#kframe.kwait{visibility:hidden}#kframe{display:block;width:100%;height:calc(100vh - var(--hh,48px));min-height:420px;border:0;border-radius:0;background:#fff}
.sm{font-size:12px}
#refdlg{max-width:min(1100px,96vw);width:96vw;max-height:92vh}#refbody{max-height:80vh;overflow:auto;margin:-3px;padding:3px}#refdlg h4{margin:12px 0 4px}
#reftitle{margin:0;font-size:16px}
#refdlg table th,#refdlg table td{padding:2px 6px}
#bigdlg{max-width:min(960px,95vw);width:95vw;max-height:90vh}#bigdlg h4{margin:14px 0 6px;padding-bottom:3px;border-bottom:1px solid var(--line)}.mgrid{columns:2 380px;column-gap:26px}.msec{break-inside:avoid}.msub{margin:2px 0 4px}.hw{margin-bottom:6px}.lct td,.lct th{height:var(--row-h);padding:0 10px;box-sizing:border-box}.mchips{display:flex;gap:26px;margin-top:10px;flex-wrap:wrap}#bigbody{max-height:72vh;overflow:auto}#bigdlg .top{display:flex;align-items:center}
#loading{position:fixed;inset:0;z-index:10010;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:20px;transition:opacity 0.4s ease}
#loading.fade-out{opacity:0;pointer-events:none}
@media (prefers-reduced-motion: reduce) { #loading { transition:none; } #ldmsg .ldic{animation:none} }:root[data-a11y-reduce] #ldmsg .ldic{animation:none}
#ldion{width:min(80vw,380px);height:auto;display:block}
#ldmsg .ldic{animation:cpspin 1s linear infinite;width:20px;height:20px;margin-right:8px;vertical-align:-4px;fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#ldmsg{font-size:15px;max-width:520px;min-height:44px}
#ldact{margin-top:14px;display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap}#ldact .btn{margin:0 4px;padding:6px 14px;min-height:34px;font-size:13.5px;font-weight:600;border-radius:6px;cursor:pointer}#ldact .btn.imp{background:var(--panel);border:1.5px solid var(--accent);color:var(--accent)}#ldact .btn.imp:hover{background:var(--accent);color:var(--on-accent)}
#refbody tr.exp td{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.pnl.chrom .leg,.pnl.xic .leg,.pnl.mrm .leg,.pnl.spec .leg2{position:absolute;z-index:2;max-width:55%;margin:0;padding:2px 8px;font-size:11px;max-height:40%;background:color-mix(in srgb,var(--panel) 86%,transparent);border:1px solid var(--line);border-radius:6px}.pnl.spec .leg2{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted)}.pnl.spec .leg2 span{display:inline-flex;gap:4px;align-items:center}.pnl .leg:empty,.pnl .leg2:empty{display:none}.pnl .corrbar{position:absolute;z-index:31;display:flex;flex-direction:column;align-items:flex-start;gap:6px;box-sizing:border-box;max-width:min(440px,calc(100% - 16px));max-height:65%;overflow:auto;padding:8px 10px;font-size:12px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.18)}.corrbar[hidden]{display:none}.corrbar .subchip{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.corrbar .ibk{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}.ci{position:relative;display:inline-flex;align-items:center}.ci.act{color:var(--accent)}.cidot{position:absolute;top:1px;right:1px;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.5px var(--panel)}.cidot[hidden]{display:none}.pnl.chrom .rd:not(.show),.pnl.xic .rd:not(.show),.pnl.mrm .rd:not(.show),.pnl.spec .rd{display:none}.pnl.spec .leg{position:absolute;z-index:2;display:block;margin:0;padding:0;max-width:calc(50% - 56px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10.5px;text-align:right;color:var(--muted);pointer-events:none}.pnl.spec .leg span{display:inline}
#qtip:has(.qs){max-width:540px;padding:8px 10px}#qtip .qs{white-space:normal}#qtip .qr{display:flex;align-items:stretch;gap:6px;margin:6px 0}#qtip .qb{flex:1 1 0;border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:4px 7px;font-size:12px}#qtip .qb b{display:block;font-size:13px}#qtip .qa{align-self:center;font-size:16px}#qtip .qw{font-size:12px}
.fl.pend{color:var(--muted);cursor:default}.fl.pend i{background:var(--line)}.fl.pend.err,.fl.pend.err small{color:var(--bad)}.fl.pend button{margin-left:auto;padding:0 6px}.pendbar{height:4px;border-radius:2px;background:var(--line);margin:4px 0;overflow:hidden}.pendbar i{display:block;height:100%;background:var(--accent);transition:width .2s}@media (prefers-reduced-motion:reduce){.pendbar i{transition:none}}
.fl:not(.pr):not(.pend){cursor:pointer}.fl:not(.pr):not(.cur):hover{background:color-mix(in srgb,var(--sel) 45%,transparent);border-radius:4px}
.pnl.chrom .leg,.pnl.xic .leg,.pnl.mrm .leg,.pnl.spec .leg2{pointer-events:none}.pnl.chrom .leg>*,.pnl.xic .leg>*,.pnl.mrm .leg>*,.pnl.spec .leg2>*{pointer-events:auto}.pnl.chrom .leg,.pnl.xic .leg,.pnl.mrm .leg{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:2px}
.leg .lgl{display:none;flex-wrap:wrap;gap:4px 10px;position:absolute;top:100%;right:0;width:max-content;max-width:min(480px,80vw);max-height:260px;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 8px;pointer-events:auto;box-shadow:0 4px 14px rgba(0,0,0,.15)}.leg .lgc{cursor:default;pointer-events:auto;color:var(--ink)}.leg .lgc:hover+.lgl,.leg .lgl:hover{display:flex}
#xic-rows{display:grid;grid-template-columns:max-content minmax(0,1fr) max-content max-content;column-gap:8px}
.xrw{display:grid;grid-column:1/-1;grid-template-columns:subgrid;gap:2px 8px;align-items:center;margin:var(--sp-3) 0}.xrw>label{font-weight:600;grid-column:1}.xrw .xin{display:contents}.xrw .xin input{grid-column:2;min-width:0}.xrw .xin select{grid-column:3}.xrw .xr-x{grid-column:4;padding:0 7px}.xrw .xr-sum{grid-column:2/-1;font-size:11px;color:var(--muted);min-height:1.2em}
@media (max-width:480px){#xic-rows{grid-template-columns:max-content minmax(0,1fr) max-content}.xrw .xin select{grid-column:2;grid-row:2}.xrw .xr-x{grid-column:3;grid-row:1}.xrw .xr-sum{grid-row:3;grid-column:1/-1}}
.sb-search-box{display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:2px 8px;flex:1;min-width:0}.sb-search-box:focus-within{border-color:var(--accent)}.sb-search-box svg{color:var(--muted);flex:none}.sb-search-box input{border:0;background:transparent;padding:2px 0;width:100%;outline:none;font:inherit;color:var(--ink)}
.nlbar{display:flex;gap:8px;align-items:center;margin:var(--sp-1) 0 var(--sp-3)}.nlr{border-bottom:1px solid var(--line)}.nlr.hit{background:color-mix(in srgb,var(--warn) 15%,var(--panel))}.nlrow{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:var(--sp-2) 6px;margin:0;border:0;border-radius:4px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.nlrow:hover{background:var(--sel)}.nlrow:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nlm{flex:none;min-width:2.4ch;font-size:17px;font-weight:700;color:var(--accent);line-height:1;font-variant-numeric:tabular-nums}.nlm small{font-size:10.5px;font-weight:400;margin-left:4px}.nlf{flex:none;font-size:15px;white-space:nowrap}.nlsep{color:var(--muted)}.nls{flex:1 1 0;min-width:0;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nlrd{flex:none;width:8px;height:8px;border-radius:50%;background:var(--warn)}.nlch{flex:none;color:var(--muted);transition:transform .15s}.nlrow[aria-expanded=true] .nlch{transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.nlch{transition:none}}@media (pointer:coarse){.nlrow{min-height:40px}}.nlhint{font-size:11px;margin:0 0 var(--sp-2)}.nlrad-t{color:var(--warn);margin-top:2px}.nldet{background:var(--bg);border-radius:6px;padding:var(--sp-2) 8px;margin:0 0 var(--sp-2);font-size:12px;line-height:1.4}.nldet[hidden]{display:none}.nld-it+.nld-it{margin-top:8px;padding-top:6px;border-top:1px solid var(--line)}.nld-name{margin-bottom:3px;color:var(--ink)}.nlc{background:var(--sel);border:1px solid var(--line);border-radius:6px;padding:6px 10px;margin-bottom:8px}.nlc ul{margin:4px 0 0 18px;padding:0}.nlpp{white-space:nowrap}.nlp{font-style:normal;display:inline-block;min-width:16px;text-align:center;border:1px solid var(--line);border-radius:8px;font-size:11px;margin-right:2px}

/* touch and pen (touch.js): the graphs take the finger, the controls are larger, the keys of the keyboard are on a bar */
.pnl canvas{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* map (mappa.js): grid with the map, the overlay of the sight and the two plots at the margins */
.pnl.map .hd .mzg{min-width:0;flex:0 1 auto}
.pnl.map .leg{max-height:none;padding-right:0;gap:2px 12px}.pnl.map .leg span.mzhelp{display:block;flex-basis:100%;padding-right:260px;font-size:11px}
.mznav button:not(.bt){width:26px;height:26px;min-width:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ink);border-radius:4px;cursor:pointer}.mznav button:not(.bt):hover{background:var(--sel)}.mzex-d{margin:0 0 6px;color:var(--muted)}details.mzcol{margin-top:6px}details.mzcol summary{cursor:pointer;color:var(--muted)}details.mzcol label{display:flex;margin:4px 0}.mznav button.on,.mznav button[aria-pressed=true]{background:var(--sel);color:var(--accent)}.mznav button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}table.mzhelp{border-collapse:collapse;width:100%;font-size:13px}.mzhelp th,.mzhelp td{padding:4px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.mzhelp thead th{position:sticky;top:0;background:var(--panel)}.mzhelp tbody th{white-space:nowrap}@media (pointer:coarse){.mznav button:not(.bt){width:44px;height:44px}}@media (max-width:700px){.mzhelp{font-size:12px}}
.pnl .mzex{flex:none;border-top:1px solid var(--line);font-size:12px;padding:6px 4px}.mzex-n{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:2px 16px;margin:0}.mzex-r{display:flex;gap:6px;align-items:baseline}.mzex-r dt{color:var(--muted)}.mzex-r dd{margin:0;font-variant-numeric:tabular-nums}.mzex-f{margin:6px 0 2px;color:var(--muted)}.mzex-b{margin:4px 0 0}
.mzex-found{margin-top:8px;border-top:1px dashed var(--line);padding-top:6px}.mzex-found h4{margin:0 0 4px;font-size:13px}.mzex-found p{margin:3px 0}.mzex-prof{width:100%;height:96px;display:block}.mzex-flt{border-collapse:collapse;font-size:12px;margin:4px 0}.mzex-flt caption{text-align:left;color:var(--muted);padding-bottom:2px}.mzex-flt th,.mzex-flt td{padding:2px 8px;text-align:left;border-bottom:1px solid var(--line)}
#resetdlg{width:min(420px,92vw);padding:18px 20px;border-radius:10px}#resetdlg h3{margin:0 0 4px;font-size:17px}#resetdlg p{margin:0 0 14px;color:var(--muted)}#resetdlg .rs-big{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;min-height:56px;margin:0 0 10px;padding:8px 12px;border-radius:8px;border:1px solid transparent;color:var(--on-accent);cursor:pointer}#resetdlg .rs-big b{font-size:15px}#resetdlg .rs-big span{font-size:12px;opacity:.92}#resetdlg .rs-red{background:var(--bad)}#resetdlg .rs-blue{background:var(--accent)}#resetdlg button:focus-visible{outline:3px solid var(--ink);outline-offset:2px}#resetdlg .rs-end{text-align:center}#resetdlg .rs-cancel{min-height:44px;min-width:44px;border:0;background:none;color:var(--muted);text-decoration:underline}#resetnote{position:fixed;right:14px;bottom:14px;z-index:60;display:flex;gap:8px;align-items:center;max-width:min(460px,90vw);padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.15);font-size:13px}
.pnl .mzg{display:inline-flex;flex-wrap:nowrap;gap:6px;align-items:center;padding:0 8px;border-left:1px solid var(--line)}.pnl .mzg:first-child{border-left:0;padding-left:0}.pnl .mzlv{white-space:nowrap}
.pnl .mzgrid{flex:1 1 0;min-height:60px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.pnl .mzgrid>canvas{grid-area:1/1;width:100%;height:100%;min-height:0}.pnl .mzgrid>canvas.mzov{pointer-events:none;border-top-color:transparent}.pnl .mzgrid.mir{grid-template-columns:minmax(0,1fr) 180px;grid-template-rows:minmax(0,1fr) 140px}.pnl .mzgrid>canvas.mzside{grid-area:1/2;cursor:default}.pnl .mzgrid>canvas.mzbot{grid-area:2/1;cursor:default}.pnl .mzgrid>canvas[hidden]{display:none}.pnl .mzgrid>canvas:focus{outline:none}.pnl .mzgrid>canvas:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.pnl.map.max>.hd{order:-2}.pnl.map.max>.leg{order:-1}.mzbt button{font-size:12px}.pnl .mztab{flex:none;max-height:210px;display:flex;flex-direction:column;border-top:1px solid var(--line);font-size:12px;margin-top:4px}.mzt-bar{display:flex;gap:8px;align-items:center;padding:4px 2px;flex-wrap:wrap}.mzt-bar .sp{flex:1}.mzt-sc{overflow:auto;min-height:0}.mztab table{border-collapse:collapse;width:100%}.mztab th,.mztab td{padding:2px 6px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.mztab th{position:sticky;top:0;background:var(--panel);cursor:pointer;font-weight:600}.mztab tbody tr{cursor:pointer}.mztab tr.on td{background:var(--sel)}.mztab td input{width:12em}.mztab tr.mzgr td{text-align:left;background:var(--panel);cursor:default}.mztab tr.mzgr button{min-width:24px;min-height:24px}
.rzg{display:none}html.touch .rzg{display:block;position:absolute;left:0;right:0;bottom:0;height:18px;z-index:3;touch-action:none;cursor:ns-resize}.rzg i{display:block;width:46px;height:5px;border-radius:3px;background:var(--line);margin:7px auto}
@media (pointer:coarse){
 button,select,input{font-size:15px}
 .pnl .bt,.pnl .lk,.pnl .x{min-width:40px;min-height:40px;font-size:13px}.pnl .bt svg{width:20px;height:20px}
 .pnl .hd select,.pnl .hd input,#tools button,#tools select,header button,.seg button,.tbg button{min-height:40px}
 .fl{padding:11px 4px}
}
@media (pointer:coarse),(max-width:1100px){body.hrw #flst .fl{padding:3px 4px}body.hrw #flst .fgh{margin:4px 0 1px}body.hrw #flst .fgh[data-gg]:focus-visible{outline:2px solid var(--accent)}}

/* smartphone (telefono.js): only the header with logo, Teoria and info, and the card that sends to the Teoria; nothing else is built or downloaded */
#phone{max-width:560px;margin:0 auto}#phone h1{font-size:1.5rem;margin:0}#phone h2{font-size:1.125rem;margin:0 0 6px}#phone p{line-height:1.55;margin:0}
#phone{display:flex;flex-direction:column;align-items:stretch;gap:14px;min-height:calc(100dvh - 70px);justify-content:center;padding:24px max(16px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
#phone[hidden]{display:none}
#phone .phw{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-left:5px solid var(--warn);border-radius:10px;padding:14px 16px;font-size:1.0625rem;line-height:1.5}
#phone .phb,#phone .pho{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:10px;padding:10px 14px;font-size:1.125rem;font-weight:650;text-decoration:none;text-align:center}
#phone .phb{background:var(--accent);color:var(--bg)}
#phone .pho{background:none;border:1px solid var(--line);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}
#phone .phb:focus-visible,#phone .pho:focus-visible,#phinfo:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
#phinfo{display:none}
html.phone header{flex-wrap:nowrap;transition:transform .2s}html.phone header.away{transform:translateY(-110%)}
html.phone header>:not(.logo):not(#nav):not(#phinfo){display:none!important}
html.phone #nav button:not([data-v=theory]){display:none}
html.phone #phinfo{display:inline-flex;margin-left:auto;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--panel);font:700 16px Georgia,serif;color:var(--accent)}
html.phone #loading{display:none}
html.phone body>:not(header):not(#phone):not(script):not(style){display:none!important}
/* narrow screens (not the phone card): the header is two rows (tabs and info above, tools below) and every control is at least 28 px */
@media (max-width:600px){
html:not(.phone) header{gap:4px;column-gap:4px;row-gap:2px}
html:not(.phone) header .logo{height:28px;width:28px}
html:not(.phone) header .hq{order:1;margin-left:auto;min-width:28px;min-height:28px;display:inline-flex;align-items:center;justify-content:center}
html:not(.phone) header #fs-btn{order:5;min-width:30px;min-height:28px}
html:not(.phone) #stbar{order:6;flex:1 1 150px;min-width:0}
html:not(.phone) #session-btn-wrap{order:7}
html:not(.phone) header #newrun[hidden]{display:none!important}
html:not(.phone) header #np-set,html:not(.phone) header #newrun{min-height:28px}
html:not(.phone) #avvio-copia,html:not(.phone) #avvio-reset,html:not(.phone) #demobtn,html:not(.phone) #errcopy,html:not(.phone) #errx{min-height:28px;min-width:28px}
}

.hrmix{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;padding:8px 12px;border:1px solid var(--accent);border-left-width:4px;border-radius:6px;background:var(--soft);font-size:14px}.hrmix-ic{flex:none;color:var(--accent)}.hrmix button{min-height:24px}@media (pointer:coarse){.hrmix button{min-height:40px}}
#fl-dz{margin:6px;padding:14px 10px;border:2px dashed var(--accent);border-radius:6px;text-align:center;font-weight:600;color:var(--accent)}#fl-note{margin:6px 8px;transition:opacity .5s}@media (prefers-reduced-motion:reduce){#fl-note{transition:none}}#sb-pane.dz-over{outline:2px dashed var(--accent);outline-offset:-3px}
.lst-onelist .lst-src-col{display:none}
#tour-later{position:fixed;z-index:7000;max-width:240px;padding:8px 12px;border-radius:8px;background:var(--panel);color:var(--ink);border:1px solid var(--line);box-shadow:0 4px 16px rgba(0,0,0,.18);font-size:13px;line-height:1.4;opacity:0;transition:opacity .3s ease}
#tour-later.on{opacity:1}
#tour-later::before{content:"";position:absolute;top:-6px;right:var(--tip,16px);width:10px;height:10px;background:var(--panel);border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
@media (prefers-reduced-motion:reduce){#tour-later{transition:none}}
.xbb{min-width:24px;min-height:24px}.xbl{min-height:24px;font-variant-numeric:tabular-nums;white-space:nowrap}.xbl[hidden]{display:none}.xbb.on,.xbp.on{background:var(--accent);color:var(--on-accent)}.xbp{min-width:24px;min-height:24px}.xbp svg{display:block}
.xb-pop{display:flex;flex-direction:column;gap:6px;padding:8px 10px}.xb-pop label{display:flex;gap:6px;align-items:center;justify-content:space-between}.xb-pop input{width:9em;min-height:24px}.xb-pop input[aria-invalid="true"]{border-color:var(--bad);outline:1px solid var(--bad)}.xb-pop .xb-err{min-height:1em;color:var(--bad)}.xb-pop .xb-row{display:flex;gap:6px;justify-content:flex-end}
.pnl .xb-info{position:absolute;left:78px;bottom:38px;z-index:2;max-width:55%;padding:2px 8px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted);background:color-mix(in srgb,var(--panel) 86%,transparent);border:1px solid var(--line);border-radius:6px;pointer-events:none}.pnl .xb-info:empty{display:none}
.pnl .xl{position:absolute;z-index:4;box-sizing:border-box;width:176px;height:96px;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 3px 10px rgba(0,0,0,.18);cursor:pointer}.pnl .xl[hidden]{display:none}.pnl .xl:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.pnl .xl canvas{display:block;flex:none;min-height:0;border-top:0;cursor:pointer}
@media (pointer:coarse){.pnl .xl{width:176px;min-height:40px}}
@media (pointer:coarse){.xbb,.xbp,.xbl,.xb-pop .bt,.xb-pop input{min-height:40px;min-width:40px}}

/* Peak detection dialog (picchi.js) */
.pk-sec{border:1px solid var(--line);border-radius:6px;margin:0 0 8px;padding:4px 10px 6px}
.pk-sec legend{font-weight:600;padding:0 4px}
.pk-row{display:grid;grid-template-columns:minmax(150px,230px) 84px 1fr;gap:4px 10px;align-items:center;margin:4px 0}
.pk-row input,.pk-row select{min-height:28px;box-sizing:border-box}
#pk-adv>summary{cursor:pointer;min-height:28px;display:flex;align-items:center;font-weight:600}
@media(max-width:560px){.pk-row{grid-template-columns:1fr 84px}
.pk-row>span:last-child{grid-column:1/-1}}
td[data-cvrow] .sm{min-height:1.4em;font-variant-numeric:tabular-nums}td[data-cvrow] .prog{height:4px}
/* loading table: fixed columns and fixed blocks from the first row, so no phase of the loading moves anything */
.cvtool{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 12px;min-height:36px;margin-top:8px}
.cvtool .cvl,.cvtool .cvr2{display:flex;align-items:center;gap:8px;min-height:32px}
.cvtool [data-off]{visibility:hidden}
.cvtool .cvr2 details{margin:0}
.ldwrap{margin-top:8px;overflow-x:auto}
.ldtab{table-layout:fixed;width:100%;min-width:1060px}
.ldtab col.c-use{width:34px}.ldtab col.c-exp{width:19%}.ldtab col.c-typ{width:15%}.ldtab col.c-tim{width:110px}.ldtab col.c-con{width:130px}.ldtab col.c-siz{width:80px}.ldtab col.c-act{width:176px}
.ldtab td,.ldtab th{overflow-wrap:anywhere}
.ldtab tbody td{height:48px}
.ldtab td select,.ldtab td input[type=text]{max-width:100%;box-sizing:border-box}
.ldtab .cvst{display:grid;grid-template-columns:minmax(0,1fr) 8ch 6ch;gap:0 8px;align-items:baseline}
.ldtab .cvst>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ldtab .cvst>span+span{text-align:right}
.ldtab tr.cvr[data-st=fail] [data-cvtxt]{color:var(--bad)}
.ldtab tr.cvr .prog i,.convprog .prog i{width:100%;transform-origin:left center;transform:scaleX(0)}
.convprog[data-idle]{visibility:hidden}
.convprog .cp-head{min-height:34px}.convprog .cp-phase{min-height:1.6em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.convprog [data-r=detail]{min-height:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(prefers-reduced-motion:no-preference){.ldtab tr.cvr .prog i,.convprog .prog i{transition:transform .35s linear}}

/* m/z calculator: adduct table */
.cadd{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end;margin:6px 0}.cadd[hidden]{display:none}
.cadd-f{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted);flex:1 1 120px}
#calcdlg .cadd-f input{margin:0;min-height:32px;font-variant-numeric:tabular-nums}
.cadd .seg button{min-width:44px;min-height:32px;font-size:12px}
.cadd-wrap{overflow-x:auto;margin:4px 0}.cadd-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cadt{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.cadt th,.cadt td{padding:0 3px;height:32px;text-align:left;font-weight:400;border-bottom:1px solid var(--line);white-space:nowrap}
.cadt thead th{font-size:11px;color:var(--muted);height:28px;white-space:normal;line-height:1.1;vertical-align:bottom}
.cadt .num{text-align:right}
.cadt tbody th[scope=row]:not(.num){font-weight:600}
.cadt tr.hit{background:color-mix(in srgb,var(--accent) 14%,transparent)}.cadt tr.hit td,.cadt tr.hit th{font-weight:700}
.cadt .cxic{min-width:28px;min-height:26px;padding:0 4px;font-size:11px}
.cadd-more{background:none;border:0;padding:0 4px;min-height:28px;color:var(--accent);font:inherit;font-size:12px;cursor:pointer;text-decoration:underline}
.cadd-more:focus-visible,.cadd-diffs summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cadd-match{margin:4px 0;font-weight:600}.cadd-match.muted{font-weight:400}
.cadd-diffs{margin-top:12px}.cadd-diffs summary{cursor:pointer;min-height:28px;font-weight:600}
/* «What can this number be?»: small, muted and scrollable under the calculator; the same groups in the Adducts and Neutral losses panels */
.cq{margin-top:var(--sp-3);font-size:12px;color:var(--muted)}
.cq-t{margin:0 0 2px;font-size:12px;font-weight:600;color:var(--muted)}
#calcout{max-height:40vh;overflow-y:auto}
.cq-g{border-top:1px solid var(--line);padding:2px 0}
.cq-g>summary{cursor:pointer;min-height:28px;display:flex;align-items:center;gap:6px;font-weight:600;color:var(--ink)}
.cq-g>summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cq-n{min-width:18px;padding:0 5px;border:1px solid var(--line);border-radius:9px;text-align:center;font-size:11px;font-weight:400;color:var(--muted)}
.cq-l{margin:2px 0 4px 16px;padding:0}.cq-l li{margin:3px 0;color:var(--ink)}
.cq-lb{background:none;border:0;padding:2px 4px;min-height:24px;font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}
.cq-lb:focus-visible,.cq-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cq-ld{margin:2px 0 4px 0}
.cq-links{margin:4px 0}.cq-link{background:none;border:0;padding:0 4px;min-height:28px;color:var(--accent);font:inherit;font-size:12px;cursor:pointer;text-decoration:underline}.cq-link[hidden]{display:none}
.cq-none{margin:6px 0}
.cq-mode{flex:1 0 100%;font-size:11px;line-height:1.3;min-height:1.3em}
@media (max-width:520px){.cq-mode{min-height:2.6em}}
#calcres-wrap{min-height:42px}#calcsum{min-height:1.5em}
.cq-ctl .seg button{min-width:44px;min-height:32px;font-size:12px}
@media (pointer:coarse){.cq-lb,.cq-link,.cq-g>summary{min-height:40px}}
#sb-panel-adducts .nlbar{flex-wrap:wrap;gap:4px}#sb-panel-adducts .nlbar input{width:100%;max-width:100%;box-sizing:border-box}

.cadd-diffs .cadd-f{margin:8px 0 4px}.cadd-diffs ul{margin:4px 0;padding-left:18px}
@media (pointer:coarse){.cadd .seg button,.cadt .cxic,.cadd-more{min-height:40px}.cadt th,.cadt td{height:40px}}
/* precursor tree of an MSn infusion (infusione-albero.js): three groups of labelled controls on one row that wraps cleanly, rows with a visible selection */
.inf-ctl{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 28px;margin-bottom:8px}
.inf-g{display:flex;flex-wrap:wrap;gap:8px 8px}
.inf-f{display:flex;flex-direction:column;gap:2px;font-size:11px;font-weight:600;color:var(--muted)}
.inf-f select{min-height:28px;box-sizing:border-box;font-size:13px;font-weight:400;color:var(--ink)}
#inf-busy{align-self:center;font-size:12px}
#inf-wrap{overflow-x:auto}
#inf-tree tbody tr{cursor:pointer}
#inf-tree tbody tr[aria-selected=true]{background:var(--sel);box-shadow:inset 4px 0 0 var(--accent)}
#inf-tree tbody tr[aria-selected=true] td{font-weight:700}
#inf-tree tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
#inf-tree[aria-busy=true]{cursor:progress}
.msn sup{font-size:.72em}
.pnl .ovb{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;border:1px solid transparent;border-radius:4px;color:var(--muted);cursor:pointer}
.pnl .ovb.on{color:var(--accent);border-color:var(--accent);background:var(--sel)}
.pnl .ovb.dis{opacity:.3;cursor:default}.pnl .ovb:focus-within{outline:2px solid var(--accent);outline-offset:1px}
.pnl .ttl sup{font-size:.7em}.pnl .rtl{font-variant-numeric:tabular-nums}
.pnl .leg .tg.act{font-weight:700}
.pnl .ctl .fol{margin-left:2px}
@media (pointer:coarse){.pnl .ovb{min-width:40px;min-height:40px}}
#inf-tree .inf-sort{border:0;background:none;padding:2px 4px;min-height:24px;min-width:24px;font:inherit;font-weight:600;color:inherit;cursor:pointer}
#inf-tree th[aria-sort=descending] .inf-sort::after{content:" \25BC"}
#inf-tree th[aria-sort=ascending] .inf-sort::after{content:" \25B2"}
#v-data.opn #v-workspace{position:relative}#v-data.opn #opening{position:absolute;left:0;right:0;margin:0 14px}#v-data.opn :is(#tools,#dpanels){visibility:hidden}#v-data.opn #dpanels[hidden]{display:block!important}#opening{margin:14px;padding:18px;border:1px solid var(--line);border-radius:8px;background:var(--soft);outline:none}#opn-title{font-size:16px}#opn-msg{margin:6px 0;min-height:1.2em}#opn-bar{height:6px}#opn-list{list-style:none;margin:10px 0 0;padding:0}#opn-list li{padding:3px 0;color:var(--muted)}#opn-list li.read,#opn-list li.boot{color:var(--ink)}#opn-list li.err{color:var(--bad)}#opn-list li.read .nm::before,#opn-list li.boot .nm::before{content:"";display:inline-block;width:10px;height:10px;margin-right:6px;border:2px solid var(--accent);border-right-color:transparent;border-radius:50%;animation:opn-spin 1s linear infinite}#opn-act{margin-top:10px}@keyframes opn-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){#opn-list li.read .nm::before,#opn-list li.boot .nm::before{animation:none}}
