/* sms-tester · tema scuro indaco, coerente con il gateway */
:root{--acc-fill:#facc15;--on-acc:#1c1606;--bg:#0b0d14;--bg1:#11141f;--bg2:#171b29;--bg3:#222840;--border:#262c42;--border-hi:#3a4262;--text:#e7e9f3;--text2:#a9aec6;--dim:#6f7593;
  --acc:#facc15;--acc-dim:rgba(250,204,21,.14);--green:#34d399;--green-dim:rgba(52,211,153,.14);--red:#f87171;--red-dim:rgba(248,113,113,.13);
  --amber:#fb923c;--amber-dim:rgba(251,146,60,.13);--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px}
a{color:var(--acc)} code{font-family:var(--mono);font-size:.85em;background:var(--bg3);padding:1px 5px;border-radius:5px}
.muted{color:var(--dim);font-size:.82rem} .hint{color:var(--text2);font-size:.84rem;line-height:1.45;margin:4px 0 12px}
button,input,select{font:inherit;color:inherit}
input,select{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:9px 11px;outline:none;min-width:0}
input:focus,select:focus{border-color:var(--acc)}
.btn{background:var(--bg3);border:1px solid var(--border-hi);border-radius:10px;padding:9px 14px;cursor:pointer;font-weight:600}
.btn:hover{border-color:var(--acc)} .btn.primary{background:var(--acc-fill);border-color:var(--acc-fill);color:var(--on-acc);font-weight:600} .btn.primary:disabled{opacity:.45;cursor:default}
.btn.ghost{background:transparent} .btn.sm{padding:5px 10px;font-size:.8rem} .btn.big{width:100%;padding:13px;font-size:1rem;margin-top:10px}

.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:18px;padding:12px 20px;background:rgba(11,13,20,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
.brand{font-weight:800;letter-spacing:.02em;display:flex;align-items:center;gap:8px;white-space:nowrap}.logo{color:var(--acc);font-size:1.2rem}
.tabs{display:flex;gap:4px;overflow-x:auto;flex:1;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tabs button{background:none;border:none;color:var(--text2);padding:8px 12px;border-radius:9px;cursor:pointer;white-space:nowrap;font-weight:600;font-size:.88rem}
.tabs button.on{background:var(--acc-dim);color:var(--acc)}
.who{display:flex;align-items:center;gap:10px;white-space:nowrap}
#whoCredits{font-family:var(--mono);font-size:.8rem;color:var(--green)}
main{max-width:1400px;margin:0 auto;padding:18px 20px 60px;display:flex;flex-direction:column;gap:16px}
.card{background:var(--bg1);border:1px solid var(--border);border-radius:16px;padding:16px 18px}
.card-h{display:flex;align-items:center;gap:12px;justify-content:space-between;margin-bottom:6px}
.card-h h2{font-size:1rem;margin:0}
.grid2{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}
.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap;margin-bottom:10px}
.form{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.form label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;color:var(--text2);flex:1}
label.check{flex-direction:row!important;align-items:center;gap:8px}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:10px}
.seg button{background:none;border:none;padding:7px 12px;cursor:pointer;color:var(--text2);font-weight:600;font-size:.84rem}
.seg button.on{background:var(--acc-dim);color:var(--acc)}
.pill{font-family:var(--mono);font-size:.7rem;padding:3px 8px;border-radius:20px;background:var(--bg3);color:var(--text2)}
.pill.ok{background:var(--green-dim);color:var(--green)}.pill.no{background:var(--red-dim);color:var(--red)}

/* destinazioni */
.coverage{display:flex;flex-direction:column;gap:8px;max-height:460px;overflow:auto}
.cty{border:1px solid var(--border);border-radius:12px;padding:8px 10px;background:var(--bg2)}
.cty-h{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.cty-h b{font-size:.95rem}.cty-h .flag{font-size:1.25rem}
.cty.sel{border-color:var(--acc)}
.ops{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.op{border:1px solid var(--border-hi);border-radius:20px;padding:4px 10px;font-size:.78rem;cursor:pointer;background:var(--bg1);display:flex;gap:6px;align-items:center}
.op small{color:var(--dim);font-family:var(--mono)}
.op.on{background:var(--acc-dim);border-color:var(--acc);color:#fff}
.rel{font-family:var(--mono);font-size:.68rem}.rel.g{color:var(--green)}.rel.a{color:var(--amber)}.rel.r{color:var(--red)}

/* rotte */
.routes{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow:auto;margin-bottom:6px}
.rt{display:flex;align-items:center;gap:9px;padding:7px 10px;border:1px solid var(--border);border-radius:10px;background:var(--bg2);cursor:pointer;font-size:.86rem}
.rt input{margin:0}.rt .dot{width:7px;height:7px;border-radius:50%;background:var(--dim)}.rt .dot.on{background:var(--green)}
.rt-group{font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:8px 2px 2px}

/* griglia risultati */
.gridwrap{overflow:auto}
table.grid{border-collapse:separate;border-spacing:4px;font-size:.8rem}
table.grid th{font-weight:600;color:var(--text2);text-align:left;padding:4px 6px;white-space:nowrap}
table.grid th.col{font-size:.74rem;text-align:center}
.cell{min-width:92px;border-radius:9px;padding:7px 8px;text-align:center;cursor:pointer;border:1px solid var(--border);background:var(--bg2)}
.cell b{display:block;font-size:.9rem}.cell small{font-family:var(--mono);font-size:.66rem;color:var(--text2)}
.cell.ok{background:var(--green-dim);border-color:rgba(52,211,153,.45)}.cell.ok b{color:var(--green)}
.cell.ko{background:var(--red-dim);border-color:rgba(248,113,113,.45)}.cell.ko b{color:var(--red)}
.cell.wait{background:var(--bg2)}.cell.wait b{color:var(--amber)}
.cell.warn{box-shadow:inset 0 0 0 1px var(--amber)}
.cell.none{opacity:.35;cursor:default}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:.76rem;color:var(--text2);margin-top:10px}

/* tabelle e liste */
.scroll{overflow:auto;max-height:70vh}
table.tbl{width:100%;border-collapse:collapse;font-size:.82rem}
table.tbl th{position:sticky;top:0;background:var(--bg1);text-align:left;font-weight:600;color:var(--dim);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;padding:8px;border-bottom:1px solid var(--border)}
table.tbl td{padding:8px;border-bottom:1px solid var(--border);vertical-align:top}
table.tbl tr.click{cursor:pointer}table.tbl tr.click:hover td{background:var(--bg2)}
.st{font-weight:700}.st.received{color:var(--green)}.st.not_received,.st.send_failed{color:var(--red)}.st.waiting{color:var(--amber)}
.tag{display:inline-block;font-size:.68rem;padding:2px 7px;border-radius:12px;background:var(--bg3);color:var(--text2);margin:1px 2px}
.tag.bad{background:var(--red-dim);color:var(--red)}.tag.warn{background:var(--amber-dim);color:var(--amber)}.tag.ok{background:var(--green-dim);color:var(--green)}
.list{display:flex;flex-direction:column;gap:6px}
.bt{display:flex;align-items:center;gap:12px;padding:9px 12px;border:1px solid var(--border);border-radius:11px;background:var(--bg2);cursor:pointer}
.bt:hover{border-color:var(--acc)}.bt .n{margin-left:auto;font-family:var(--mono);font-size:.8rem}
pre.code{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:12px;overflow:auto;font-family:var(--mono);font-size:.78rem;line-height:1.5;color:var(--text2)}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;font-size:.85rem}.kv div:nth-child(odd){color:var(--dim)}
.txt{font-family:var(--mono);font-size:.8rem;background:var(--bg2);border-radius:8px;padding:6px 8px;word-break:break-word}

.modal{position:fixed;inset:0;background:rgba(5,7,12,.72);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}
.modal[hidden]{display:none}.modal-box{position:relative;background:var(--bg1);border:1px solid var(--border-hi);border-radius:16px;padding:20px;width:min(640px,100%);max-height:88vh;overflow:auto}
.modal-box .x{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--dim);font-size:1.1rem;cursor:pointer}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--bg3);border:1px solid var(--border-hi);padding:10px 16px;border-radius:12px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:60}
.toast.on{opacity:1}
.alert{background:var(--red-dim);color:var(--red);padding:9px 12px;border-radius:10px;font-size:.85rem}

body.login{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}
.login-card{width:min(380px,100%);background:var(--bg1);border:1px solid var(--border);border-radius:18px;padding:26px;display:flex;flex-direction:column;gap:12px}
.login-card label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;color:var(--text2)}
.login-card .brand{font-size:1.2rem}

@media (max-width:900px){.grid2{grid-template-columns:1fr}.top{flex-wrap:wrap;gap:10px;padding:10px 14px}.tabs{order:3;flex-basis:100%}main{padding:14px 12px 60px}}

/* ═════ UI v2: hero con globo, reti, parametri avanzati ═════ */
body{background:radial-gradient(1200px 600px at 10% -10%,rgba(250,204,21,.12),transparent 60%),radial-gradient(900px 500px at 110% 0%,rgba(52,211,153,.07),transparent 60%),var(--bg);background-attachment:fixed}
.card{background:linear-gradient(180deg,rgba(23,27,41,.92),rgba(17,20,31,.92));box-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 30px rgba(0,0,0,.25)}
.hero{display:grid;grid-template-columns:minmax(280px,440px) 1fr;gap:26px;align-items:center;padding:20px 24px;overflow:hidden}
.globe-wrap{position:relative;aspect-ratio:1/1;width:100%;max-width:440px;margin:0 auto}
.globe-wrap canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none;opacity:0;transition:opacity .6s}
.globe-wrap.ready canvas{opacity:1}
.globe-load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:.8rem;
  background:radial-gradient(circle at 40% 35%,#1b2140,#0c0f1c 70%);border-radius:50%;transition:opacity .6s}
.globe-wrap.ready .globe-load{opacity:0;pointer-events:none}
.globe-wrap.noglobe .globe-load{content:'';font-size:0}
.eyebrow{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--acc)}
.hero h1{font-size:1.9rem;margin:6px 0 4px;letter-spacing:-.01em}
.lg{white-space:nowrap}.lg.own{color:var(--green)}.lg.partner{color:#fde047}
.stats{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
.stat{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:10px 14px;min-width:96px}
.stat b{display:block;font-size:1.25rem}.stat span{font-size:.72rem;color:var(--text2)}
.search{width:100%;padding:11px 14px;border-radius:12px;margin-bottom:10px;font-size:.92rem}
.search.sm{padding:7px 10px;font-size:.84rem;margin:4px 0 8px}
.netlist{display:flex;flex-direction:column;gap:8px;max-height:560px;overflow:auto;padding-right:2px}
.cty-h .all{margin-left:auto;font-size:.7rem;color:var(--dim);border:1px solid var(--border);border-radius:10px;padding:1px 7px}
.cty-h:hover .all{color:var(--acc);border-color:var(--acc)}
.op code{background:none;padding:0;font-size:.72rem;color:var(--text2);margin-right:2px}
.op.own{border-color:rgba(52,211,153,.4)}.op.own.on{background:rgba(52,211,153,.18);border-color:var(--green)}
.op.partner.on{background:var(--acc-dim);border-color:var(--acc)}
.op .cheap{font-size:.64rem;color:var(--green);font-weight:700}
.selchips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.sc{font-size:.74rem;background:var(--acc-dim);color:#fef9c3;border-radius:14px;padding:3px 9px;cursor:pointer}
.sc:hover{background:var(--red-dim);color:var(--red)}
.more{padding:6px 2px}
.rt-group .muted{text-transform:none;letter-spacing:0;font-size:.66rem}
.rt[hidden]{display:none}
details.adv{border:1px solid var(--border);border-radius:12px;padding:8px 12px;background:var(--bg2)}
details.adv summary{cursor:pointer;font-weight:600;font-size:.86rem}
.advgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}
.advgrid label{display:flex;flex-direction:column;gap:4px;font-size:.76rem;color:var(--text2)}
.tlvrows{display:flex;flex-direction:column;gap:6px;margin:6px 0}
.tlv{display:grid;grid-template-columns:160px 1fr auto;gap:6px}
.costline{font-family:var(--mono);font-size:.76rem;color:var(--text2);margin-top:8px;min-height:1em}
@media (max-width:900px){.hero{grid-template-columns:1fr;padding:16px}.globe-wrap{max-width:320px}.hero h1{font-size:1.5rem}.advgrid{grid-template-columns:1fr}.tlv{grid-template-columns:1fr 1fr auto}}

/* pacchetti di ricarica */
.packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.pack{position:relative;border:1px solid var(--border);border-radius:16px;padding:18px;background:var(--bg2);display:flex;flex-direction:column;gap:6px;overflow:hidden}
.pack.feat{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),0 12px 30px rgba(250,204,21,.2);transform:translateY(-2px)}
.ribbon{position:absolute;top:14px;right:14px;background:var(--acc-fill);color:var(--on-acc);font-size:.62rem;font-weight:700;padding:3px 9px;border-radius:12px;text-transform:uppercase;letter-spacing:.06em}
.pn{font-weight:700;color:var(--text2);text-transform:uppercase;font-size:.74rem;letter-spacing:.08em}
.pe{font-size:1.9rem;font-weight:800}
.pc{font-size:.84rem}.bonus{display:inline-block;margin-left:4px;font-size:.7rem;color:var(--green);background:var(--green-dim);border-radius:10px;padding:1px 7px;font-weight:700}
.pt{font-size:.84rem;line-height:1.5}.pp{font-family:var(--mono);font-size:.78rem;color:var(--green)}
.pack .btn{margin-top:auto}

/* ═════ UI v3: pannello serie, riepilogo, linea del tempo, differenze, mappa di calore, mobile ═════ */
html.lock{overflow:hidden}
.sheet-back{position:fixed;inset:0;background:rgba(5,7,12,.55);opacity:0;pointer-events:none;transition:opacity .2s;z-index:40}
.sheet-back.open{opacity:1;pointer-events:auto}
.sheet{position:fixed;top:0;right:0;height:100%;width:min(880px,100%);background:var(--bg1);border-left:1px solid var(--border-hi);z-index:45;
  transform:translateX(100%);transition:transform .25s ease;display:flex;flex-direction:column;box-shadow:-20px 0 40px rgba(0,0,0,.35)}
.sheet.open{transform:none}
.sheet-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--border)}
.sheet-h h2{margin:2px 0 0;font-size:1.15rem}.sheet-h .x{background:var(--bg3);border:1px solid var(--border-hi);color:var(--text);border-radius:10px;width:36px;height:36px;cursor:pointer}
.sheet-b{padding:16px 20px 40px;overflow:auto;flex:1}
.sheet-tools{margin-bottom:12px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:4px 0 12px}
.kpi{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:10px 12px}
.kpi b{display:block;font-size:1.2rem}.kpi span{font-size:.7rem;color:var(--text2)}
.kpi.g b{color:var(--green)}.kpi.a b{color:var(--amber)}.kpi.r b{color:var(--red)}
.prog{height:6px;border-radius:4px;background:var(--bg3);overflow:hidden;margin:0 0 10px}.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--green));transition:width .4s}
.save{background:var(--green-dim);color:var(--green);border-radius:10px;padding:8px 12px;font-size:.84rem;margin-bottom:10px}
table.grid thead th{position:sticky;top:0;background:var(--bg1);z-index:1}
table.grid .corner{font-size:.66rem;color:var(--dim);font-weight:500;text-align:left}
table.grid .rowh{position:sticky;left:0;background:var(--bg1);z-index:1;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.lgd{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;border:1px solid var(--border)}
.lgd.ok{background:var(--green-dim);border-color:var(--green)}.lgd.ko{background:var(--red-dim);border-color:var(--red)}.lgd.wait{background:var(--bg2)}.lgd.warn{box-shadow:inset 0 0 0 1px var(--amber)}
.spin{display:inline-block;width:12px;height:12px;border:2px solid var(--amber);border-right-color:transparent;border-radius:50%;animation:sp 0.8s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.tline{display:flex;gap:0;margin:14px 0 16px}
.ts{flex:1;position:relative;text-align:center;font-size:.76rem;color:var(--dim)}
.ts i{display:block;width:12px;height:12px;border-radius:50%;background:var(--bg3);border:2px solid var(--border-hi);margin:0 auto 6px;position:relative;z-index:1}
.ts:not(:last-child)::after{content:'';position:absolute;top:6px;left:50%;width:100%;height:2px;background:var(--border-hi)}
.ts.done i{background:var(--green);border-color:var(--green)}.ts.done:not(:last-child)::after{background:var(--green)}
.ts.fail i{background:var(--red);border-color:var(--red)}
.ts b{display:block;color:var(--text2)}.ts span{display:block;font-family:var(--mono)}.ts small{color:var(--acc);font-family:var(--mono)}
.diff ins{background:var(--green-dim);color:var(--green);text-decoration:none;border-radius:3px;padding:0 2px}
.diff del{background:var(--red-dim);color:var(--red);border-radius:3px;padding:0 2px}
.cell.hc{min-width:74px}
.codewrap{position:relative}.codewrap .copy{position:absolute;top:8px;right:8px}
.cp{padding:2px 7px!important;font-size:.7rem!important;margin-left:4px}
@media (max-width:700px){
  table.tbl.resp thead,table.tbl.resp tr:first-child:has(th){display:none}
  table.tbl.resp,table.tbl.resp tbody,table.tbl.resp tr,table.tbl.resp td{display:block;width:100%}
  table.tbl.resp tr{border:1px solid var(--border);border-radius:12px;margin-bottom:8px;padding:6px 10px;background:var(--bg2)}
  table.tbl.resp td{border:none;padding:4px 0;display:flex;gap:10px;justify-content:space-between;text-align:right}
  table.tbl.resp td::before{content:attr(data-l);color:var(--dim);font-size:.72rem;text-align:left;flex:0 0 auto}
  .sheet{width:100%;top:auto;bottom:0;height:92%;border-left:none;border-top:1px solid var(--border-hi);border-radius:18px 18px 0 0;transform:translateY(100%)}
  .sheet.open{transform:none}
  .kv{grid-template-columns:1fr}.kv div:nth-child(odd){margin-top:6px}
}

/* ═════ vendor dei clienti e "vedi come cliente" ═════ */
.asbar{position:sticky;top:0;z-index:20;background:linear-gradient(90deg,#eab308,#facc15);color:var(--on-acc);padding:8px 16px;font-size:.84rem;display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}
.asbar .btn{background:#fff;color:#713f12;border:none}
.vhero{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;align-items:center}
.vhero h1{font-size:1.45rem;margin:6px 0}
.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:10px;font-size:.88rem;color:var(--text2)}
.steps b{color:var(--text)}
.ipbox{display:inline-flex;align-items:center;gap:8px;margin:6px 0 2px;background:var(--bg2);border:1px solid var(--border-hi);border-radius:10px;padding:6px 8px}
.ipbox code{font-size:1rem;background:none;color:var(--green)}
.vlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
.vcard{border:1px solid var(--border);border-radius:14px;padding:14px;background:var(--bg2);display:flex;flex-direction:column;gap:8px}
.vcard.off{opacity:.6}.vc-h{display:flex;align-items:center;gap:8px}.vc-m{font-size:.8rem;color:var(--text2)}
.vc-s{font-size:.78rem;border-radius:8px;padding:5px 8px;background:var(--bg3)}.vc-s.ok{background:var(--green-dim);color:var(--green)}.vc-s.bad{background:var(--red-dim);color:var(--red)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--dim);display:inline-block;flex:0 0 auto}.dot.on{background:var(--green)}.dot.err{background:var(--red)}
.empty-cta{border:1px dashed var(--border-hi);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;color:var(--text2);font-size:.86rem}
.empty-cta b{color:var(--text)}
.vform{display:flex;flex-direction:column;gap:16px}
.vstep{display:flex;gap:12px}.vn{flex:0 0 28px;height:28px;border-radius:50%;background:var(--acc-dim);color:var(--acc);font-weight:800;display:flex;align-items:center;justify-content:center}
.vgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:8px}
.vgrid label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:var(--text2)}.vgrid .w2{grid-column:span 2}
.vgrid label.check{flex-direction:row;align-items:center;gap:8px;align-self:end;padding-bottom:10px}
.vresult{border-radius:10px;padding:0;font-size:.86rem}.vresult:empty{display:none}
.vresult.ok{background:var(--green-dim);color:var(--green);padding:10px 12px}.vresult.bad{background:var(--red-dim);color:var(--red);padding:10px 12px}.vresult.wait{background:var(--bg3);padding:10px 12px}
.sheet-actions{position:sticky;bottom:-40px;background:var(--bg1);padding:12px 0;justify-content:flex-end}
@media (max-width:900px){.vhero{grid-template-columns:1fr}.vgrid{grid-template-columns:1fr}.vgrid .w2{grid-column:auto}}

/* selettore lingua */
.langsw{display:inline-flex;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.langsw a{padding:4px 8px;font-size:.72rem;font-weight:700;color:var(--text2);text-decoration:none}
.langsw a.on{background:var(--acc-dim);color:var(--acc)}
.langsw.center{align-self:center;margin-top:4px}

/* ═════ Test rapido v4: cruscotto, messaggio a sinistra, reti a destra, risultati sotto ═════ */
.dash{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:24px;align-items:center;padding:18px 22px}
.dash .globe-wrap{max-width:300px}
.dash-side h1{font-size:1.5rem;margin:4px 0 10px}
.kpis.big{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.kpis.big .kpi b{font-size:1.5rem}
.qt{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:16px;align-items:start}
.qt-side{position:sticky;top:70px;max-height:calc(100vh - 86px);overflow:auto}
.qt-side textarea{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:9px 11px;resize:vertical;font:inherit;color:inherit}
.qt-side select + input{margin-top:6px}
.preview{background:var(--bg2);border:1px dashed var(--border-hi);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.preview .txt{background:none;padding:0;font-size:.82rem}
.big2{width:100%;margin-top:8px;padding:10px}
.card-h.wrap{flex-wrap:wrap}.card-h.wrap .row{flex-wrap:wrap}
.card-h.wrap .search{width:300px;max-width:100%;margin:0}
.nettbl-wrap{max-height:620px}
table.nettbl td,table.nettbl th{white-space:nowrap}
table.nettbl .ck{width:34px;text-align:center}
table.nettbl tr.nrow{cursor:pointer}
table.nettbl tr.nrow:hover td{background:var(--bg2)}
table.nettbl tr.nrow.on td{background:var(--acc-dim)}
table.nettbl code{background:none;padding:0;color:var(--text2)}
a.bl{font-family:var(--mono);font-size:.78rem}
@media (max-width:1100px){.qt{grid-template-columns:1fr}.qt-side{position:static;max-height:none}}
@media (max-width:700px){.dash{grid-template-columns:1fr}.dash .globe-wrap{max-width:240px}.card-h.wrap .search{width:100%}
  table.nettbl td:nth-child(5),table.nettbl th:nth-child(5){display:none}}
.top{gap:12px}.tabs{gap:2px}.tabs button{padding:7px 9px;font-size:.84rem}
@media (min-width:1300px){.who .muted{max-width:110px;overflow:hidden;text-overflow:ellipsis}}

/* ═════ QT-YOGA-v1: test rapido come sms.yoga: reti · rotte · messaggio, risultati sotto ═════ */
.qy{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,.9fr) minmax(300px,1fr);gap:16px;align-items:start}
.qy>.card{display:flex;flex-direction:column;min-width:0}
.qy-nets .nettbl-wrap{max-height:560px;border:1px solid var(--border);border-radius:12px}
.qy-routes .routes{max-height:560px}
.qy-msg textarea{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:9px 11px;resize:vertical;font:inherit;color:inherit}
.qy-msg label select + input,.qy-msg .row.tight + input{margin-top:6px}
.row.tight{gap:8px;margin-bottom:6px}.row.tight .seg{margin-bottom:0}.row.tight .search.sm{margin:0;flex:1}
.lblrow{display:flex;justify-content:space-between;gap:8px}
#txtCount{font-family:var(--mono)}#txtCount.over{color:var(--amber)}
.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-top:8px;min-height:30px}
.pager .pg{display:inline-flex;align-items:center;gap:4px}.pager .btn:disabled{opacity:.35;cursor:default}
table.nettbl th{background:var(--bg2)}
table.nettbl td{padding:6px 8px}
button.star{background:none;border:none;cursor:pointer;color:var(--dim);font-size:1rem;padding:0 2px;line-height:1}
button.star.on{color:var(--amber)}button.star:hover{color:var(--amber)}
.own-dot{font-size:.72rem}
.rt-group[hidden]{display:none}
table.qres td{vertical-align:middle}
table.qres code{background:none;padding:0;color:var(--text)}
.stp{display:inline-block;font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:6px;background:var(--bg3);color:var(--text2)}
.stp.received{background:var(--green-dim);color:var(--green)}
.stp.not_received,.stp.send_failed{background:var(--red-dim);color:var(--red)}
.stp.waiting{background:var(--amber-dim);color:var(--amber)}
.dash-side .btn.primary{margin-top:4px}
@media (max-width:1250px){.qy{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.qy-nets{grid-column:1 / -1}}
@media (max-width:800px){.qy{grid-template-columns:1fr}.row.tight{flex-wrap:wrap}.row.tight .search.sm{min-width:140px}}
@media (max-width:700px){table.nettbl td:nth-child(5),table.nettbl th:nth-child(5){display:none}}

/* ═════ QT-CFG-v1: messaggio essenziale + pannello "Modelli e opzioni" con compositore del codice ═════ */
.combo{display:flex;border:1px solid var(--border);border-radius:10px;background:var(--bg2);overflow:hidden}
.combo:focus-within{border-color:var(--acc)}
.combo input{flex:1;border:none;border-radius:0;background:none}
.combo select{width:38px;flex:0 0 38px;border:none;border-left:1px solid var(--border);border-radius:0;padding:9px 4px;cursor:pointer;color:var(--acc);background:var(--bg3)}
.w-s{flex:0 0 84px!important}
.qy-foot{justify-content:space-between;margin-top:8px}.qy-foot .muted{text-align:right}
.sheet.cfg{width:min(620px,100%)}
#cfgTabs{margin-bottom:14px;flex-wrap:wrap}
.phone{max-width:340px;background:var(--bg2);border:1px solid var(--border-hi);border-radius:22px;padding:16px 14px 14px;margin:6px 0 14px}
.ph-snd{text-align:center;font-weight:700;font-size:.86rem;color:var(--text2);margin-bottom:10px}
.ph-bub{background:var(--bg3);border-radius:16px 16px 16px 4px;padding:9px 12px;font-size:.9rem;line-height:1.4;word-break:break-word;white-space:pre-wrap;display:inline-block;max-width:100%}
.ph-meta{font-size:.7rem;color:var(--dim);margin-top:8px;font-family:var(--mono)}
.plist{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.pitem{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--bg2)}
.pitem>div:first-child{min-width:0}.pitem .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:360px}
.pitem .row{gap:4px;flex:0 0 auto}
.peditor{border:1px solid var(--acc);border-radius:12px;padding:12px;background:var(--bg2);margin:8px 0}
.peditor textarea{background:var(--bg1);border:1px solid var(--border);border-radius:10px;padding:9px 11px;font:inherit;color:inherit;resize:vertical}
.composer{display:flex;flex-direction:column;gap:12px;border:1px solid var(--border);border-radius:14px;padding:14px;background:var(--bg2)}
.composer label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;color:var(--text2)}
.cmp-code{display:flex;flex-wrap:wrap;gap:4px;min-height:46px;align-items:center;padding:8px;border:1px dashed var(--border-hi);border-radius:12px;background:var(--bg1)}
.ctok{font-family:var(--mono);font-size:.8rem;font-weight:700;padding:5px 8px;border-radius:7px;cursor:pointer;background:var(--acc-dim);color:#fef9c3}
.ctok:hover{background:var(--red-dim);color:var(--red);text-decoration:line-through}
.ctok.kN{background:var(--green-dim);color:var(--green)}.ctok.ka{background:rgba(96,165,250,.15);color:#93c5fd}.ctok.kA{background:var(--amber-dim);color:var(--amber)}
.ctok.sep{background:var(--bg3);color:var(--text2)}
.cmp-btns{display:flex;flex-wrap:wrap;gap:6px}.cmp-btns code{background:none;padding:0;color:var(--dim)}
.cmp-quick{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{background:var(--bg3);border:1px solid var(--border);border-radius:14px;padding:3px 10px;font-size:.76rem;cursor:pointer;color:var(--text2)}
.chip:hover{border-color:var(--acc);color:var(--acc)}
.cmp-out{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}.cmp-out .txt{margin-top:4px;font-size:.95rem;letter-spacing:.04em}
#cmpComb{margin-top:6px;font-size:.85rem}
.btn:disabled{opacity:.45;cursor:default}
@media (max-width:700px){.cmp-out{grid-template-columns:1fr}.pitem{flex-direction:column;align-items:flex-start}}

/* ═════ ZOOM-v1: globo più grande con zoom e reti del paese scelto ═════ */
.dash{grid-template-columns:minmax(280px,480px) 1fr}
.dash .globe-wrap{max-width:480px}
.gz{position:absolute;right:6px;bottom:6px;display:flex;flex-direction:column;gap:4px;opacity:0;transition:opacity .3s}
.globe-wrap.ready .gz{opacity:1}
.gz button{width:32px;height:32px;border-radius:9px;border:1px solid var(--border-hi);background:rgba(17,20,31,.85);color:var(--text);font-size:1.05rem;font-weight:700;cursor:pointer}
.gz button:hover{border-color:var(--acc);color:var(--acc)}
.globe-wrap canvas{touch-action:none}
#dashCountry h1{font-size:1.45rem;margin:4px 0 2px}
#dashCountry .card-h{align-items:flex-start}
.dnets{max-height:320px;border:1px solid var(--border);border-radius:12px}
.dnets th{background:var(--bg2)}
@media (max-width:700px){.dash .globe-wrap{max-width:340px}}

/* ═════ UI-KIT-v1 — componenti presi dal gateway (static/css/app.css UI-KIT-v1/v2, GLOBAL-BTN-v1), con alias dei token ═════ */
:root{--bg0:var(--bg);--text-pri:var(--text);--text-sec:var(--text2);--text-dim:var(--dim);--accent:var(--acc);--accent-dim:var(--acc-dim);
  --plex:'IBM Plex Sans',Inter,system-ui,sans-serif;--plexmono:'IBM Plex Mono',ui-monospace,Menlo,monospace;--ease-out:cubic-bezier(.22,1,.36,1)}
.ui-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:2px}
.ui-eyebrow{font-family:var(--plexmono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.ui-title{font-family:var(--plex);font-size:1.5rem;font-weight:600;margin:2px 0 0;letter-spacing:-.02em;color:var(--text-pri)}
.ui-sub{color:var(--text-sec);font-size:.84rem;margin-top:4px;max-width:760px;line-height:1.45}
.ui-chips{display:flex;flex-wrap:wrap;gap:6px}
.ui-chip{font-family:var(--plexmono);font-size:.68rem;padding:4px 11px;border-radius:999px;background:var(--bg1);border:1px solid var(--border);color:var(--text-sec);white-space:nowrap}
.ui-chip b{color:var(--text-pri);margin-left:5px}
.ui-chip.ok b{color:var(--green)}.ui-chip.warn b{color:var(--amber)}.ui-chip.bad b{color:var(--red)}
.ui-card{background:var(--bg1);border:1px solid var(--border);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 30px rgba(0,0,0,.22)}
.ui-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--border)}
.ui-card-title{font-family:var(--plex);font-weight:600;color:var(--text-pri);font-size:.95rem}
.ui-card-note{font-size:.74rem;color:var(--text-dim)}
a.ui-card-note{color:var(--accent);text-decoration:none}
.ui-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border)}
.ui-toolbar+.ui-toolbar{padding-top:0;border-top:none;margin-top:-1px}
.ui-in{height:34px;padding:6px 11px;border-radius:9px;border:1px solid var(--border-hi);background:var(--bg2);color:var(--text-pri);font-size:.84rem;outline:none;min-width:0;font-family:var(--plex)}
.ui-in:focus{border-color:var(--accent)} textarea.ui-in{height:auto;resize:vertical;line-height:1.4}
.ui-grow{flex:1 1 140px}
.ui-count{margin-left:auto;font-family:var(--plexmono);font-size:.66rem;color:var(--text-dim)}
.ui-scroll{overflow:auto}
.ui-tab{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.ui-tab thead th,.ui-tab tr:first-child>th{position:sticky;top:0;z-index:2;background:var(--bg2);font-family:var(--plexmono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);padding:9px 14px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border);font-weight:500}
.ui-tab td{padding:8px 14px;border-bottom:1px solid var(--border);font-size:.82rem;color:var(--text-sec);vertical-align:middle}
.ui-tab tbody tr:hover td,.ui-tab tr.click:hover td{background:var(--bg2)}
.ui-tab b{color:var(--text-pri)}
.ui-empty{padding:30px 16px;text-align:center;color:var(--text-dim);font-size:.84rem;line-height:1.5}
.ui-empty b{display:block;color:var(--text-pri);font-size:.95rem;margin-bottom:4px}
.ui-empty .ui-empty-ico{font-size:1.6rem;display:block;margin-bottom:8px}
.ui-seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--border);border-radius:10px;overflow:hidden;max-width:100%}
.ui-seg button{background:var(--bg2);border:none;color:var(--text-sec);font-size:.78rem;padding:7px 11px;cursor:pointer;white-space:nowrap;font-family:var(--plex);font-weight:500}
.ui-seg button+button{border-left:1px solid var(--border)}
.ui-seg button.on{background:var(--accent-dim);color:var(--text-pri);font-weight:600}
.ui-seg.sm button{padding:5px 10px;font-size:.74rem}
.ui-foot{padding:9px 16px;border-top:1px solid var(--border);font-size:.74rem;color:var(--text-dim)}
.ui-foot:empty{display:none}
.db-btn{padding:8px 13px;border-radius:10px;border:1px solid var(--border-hi);background:var(--bg1);color:var(--text-pri);font-family:var(--plexmono);font-size:.74rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.2}
.db-btn:hover{border-color:var(--accent);color:var(--accent)}
.db-btn.primary{background:linear-gradient(135deg,#fde047,var(--acc-fill));border:none;color:var(--on-acc);font-weight:700}.db-btn.primary:hover{filter:brightness(1.05);color:var(--on-acc)}
.db-btn.primary:disabled{background:var(--bg3);color:var(--text-dim);filter:none;cursor:default}
.db-btn.ghost{background:transparent}.db-btn.sm{padding:6px 11px;font-size:.72rem}.db-btn.push{margin-left:auto}
.db-btn:active{transform:translateY(1px)}
:where(button,a,[role="button"],summary):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ═════ UI-KIT-v1: test rapido ═════ */
.qt2{font-family:var(--plex);display:flex;flex-direction:column;gap:14px}
.qt2 .qy{gap:14px}
.qt2 .qy>.ui-card{min-width:0;max-height:760px}
.qt2 .nettbl-wrap{max-height:none;flex:1;min-height:220px;border:none;border-radius:0}
.qt2 .nettbl td{padding:6px 12px}.qt2 .nettbl th{padding:8px 12px}
.qt2 .nettbl code,.qt2 .qres code{font-family:var(--plexmono);font-size:.76rem;background:none;padding:0;color:var(--text-pri)}
.qt2 table.nettbl tr.nrow.on td{background:var(--accent-dim)}
.qt2 table.nettbl tr.nrow.on td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.qt2 .pager{display:flex}
.qt2 #routesWrap{display:flex;flex-direction:column;min-height:0;flex:1}
.qt2 .routes{padding:10px 12px;gap:5px;max-height:none;flex:1;margin:0}
.qt2 .rt{background:var(--bg2);border-color:var(--border);border-radius:10px;padding:8px 10px;font-size:.84rem;transition:border-color .12s,background .12s}
.qt2 .rt:hover{border-color:var(--border-hi)}
.qt2 .rt:has(input:checked){border-color:var(--accent);background:var(--accent-dim)}
.qt2 .rt input{accent-color:var(--accent)}
.qt2 .rt-group{font-family:var(--plexmono);margin:10px 2px 2px}.qt2 .rt-group:first-child{margin-top:0}
.qt2 .qm-body{padding:14px 16px;display:flex;flex-direction:column;gap:12px;overflow:auto}
.fld{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}
.fi-label{font-family:var(--plexmono);font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-sec);display:flex;justify-content:space-between;gap:8px}
.fi-label em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--text-dim)}
.fld-row{display:flex;gap:10px}.fld.w-s{flex:0 0 86px}
.qt2 .combo{border-color:var(--border-hi);border-radius:9px;height:34px}
.qt2 .combo input{padding:6px 11px;font-size:.84rem}
.qt2 .combo select{height:100%;padding:0 4px}
.qm-launch{margin-top:auto;padding:12px 16px 14px;border-top:1px solid var(--border);background:linear-gradient(180deg,transparent,rgba(250,204,21,.06))}
.formula{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.8rem;color:var(--text-sec);min-height:1.2em}
.formula b{color:var(--text-pri);font-family:var(--plexmono)}.formula i{font-style:normal;color:var(--text-dim)}
.formula .tot b{color:var(--accent);font-size:1rem}
.qt2 .costline{font-family:var(--plexmono);font-size:.7rem;margin-top:4px;color:var(--text-dim)}
.db-btn.big{width:100%;padding:12px;font-size:.86rem;margin-top:10px;letter-spacing:.02em}
.qt2 .qy-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
.qt2 #runMsg{margin-top:6px}
.qt2 .qres td{padding:9px 14px}
.qt2 .qres .stp{font-family:var(--plexmono);border-radius:999px;padding:3px 9px;font-size:.62rem}
.qt2 .ui-toolbar .ui-chips{margin-left:auto}
.qt2 #manualHint{flex:1;display:flex;flex-direction:column;justify-content:center}.qt2 #manualHint[hidden]{display:none}
@media (max-width:1250px){.qt2 .qy>.ui-card{max-height:none}.qt2 .nettbl-wrap{max-height:520px}.qt2 .routes{max-height:420px}}
@media (max-width:700px){.ui-head{align-items:flex-start}.qt2 .ui-toolbar .ui-chips{margin-left:0}.ui-tab td,.ui-tab th{padding:7px 10px}}
@media (max-width:700px){
  table.ui-tab.resp tr:first-child:has(th){display:none}
  table.ui-tab.resp,table.ui-tab.resp tbody,table.ui-tab.resp tr,table.ui-tab.resp td{display:block;width:100%}
  table.ui-tab.resp tr{border:1px solid var(--border);border-radius:12px;margin:8px 0;padding:6px 10px;background:var(--bg2)}
  table.ui-tab.resp td{border:none;padding:4px 0;display:flex;gap:10px;justify-content:space-between;text-align:right}
  table.ui-tab.resp td::before{content:attr(data-l);color:var(--text-dim);font-size:.72rem;text-align:left;flex:0 0 auto}
  table.ui-tab.resp td[colspan]::before{content:none}
  .qt2 .ui-scroll:has(.qres){padding:0 10px}
}

/* TAB-HIDDEN-FIX-v1: una scheda nascosta resta nascosta anche se la sua classe imposta display (es. .qt2{display:flex}) */
section.tab[hidden]{display:none!important}

/* ═════ SCROLL-v1 — barre di scorrimento sottili senza frecce, ombre ai bordi delle tabelle, niente trascinamento della pagina ═════ */
:root{color-scheme:dark;--sb-thumb:rgba(169,174,198,.26);--sb-thumb-hi:rgba(250,204,21,.75)}
html{scrollbar-gutter:stable}
/* Firefox: proprietà standard (su Chrome disattiverebbero lo stile qui sotto) */
@supports not selector(::-webkit-scrollbar){
  *{scrollbar-width:thin;scrollbar-color:var(--sb-thumb) transparent}
  html{scrollbar-width:auto}
  *:hover{scrollbar-color:rgba(169,174,198,.36) transparent}
}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}
::-webkit-scrollbar-button{display:none;width:0;height:0}          /* niente frecce su e giù */
::-webkit-scrollbar-thumb{background:var(--sb-thumb);border-radius:10px;border:3px solid transparent;background-clip:padding-box;min-height:36px}
::-webkit-scrollbar-thumb:hover{background:rgba(169,174,198,.42);border-width:2px;background-clip:padding-box}
::-webkit-scrollbar-thumb:active{background:var(--sb-thumb-hi);border-width:2px;background-clip:padding-box}
html::-webkit-scrollbar{width:15px}html::-webkit-scrollbar-thumb{border-width:3px;min-height:48px}
/* aree che scorrono dentro la pagina: arrivate in fondo non trascinano la pagina, ombra sfumata dove c'è altro contenuto */
.ui-scroll,.scroll,.routes,.sheet-b,.modal-box,.dnets,.nettbl-wrap,.qm-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.ui-scroll,.scroll,.routes,.dnets{
  background:
    linear-gradient(var(--bg1) 30%,rgba(17,20,31,0)) center top/100% 28px no-repeat local,
    linear-gradient(rgba(17,20,31,0),var(--bg1) 70%) center bottom/100% 28px no-repeat local,
    radial-gradient(farthest-side at 50% 0,rgba(0,0,0,.45),transparent) center top/100% 10px no-repeat scroll,
    radial-gradient(farthest-side at 50% 100%,rgba(0,0,0,.45),transparent) center bottom/100% 10px no-repeat scroll;
  background-color:var(--bg1)}
/* con l'intestazione della tabella fissa l'ombra in alto sta sotto l'intestazione */
.ui-scroll:has(> table thead),.ui-scroll:has(> table tr:first-child > th),.scroll:has(> table){background-position:center 34px,center bottom,center 34px,center bottom}
/* barre orizzontali delle tabelle larghe un po' più visibili */
.ui-scroll::-webkit-scrollbar:horizontal,.scroll::-webkit-scrollbar:horizontal{height:9px}
/* intestazione fissa con un filo d'ombra quando si scorre */
.ui-tab thead th,.ui-tab tr:first-child>th,table.tbl th{box-shadow:0 1px 0 var(--border)}
@media (hover:none){::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{border-width:0}}

/* DRAG-SCROLL-v1 (dal gateway) */
body.dragging{cursor:grabbing;user-select:none;-webkit-user-select:none}
body.dragging *{cursor:grabbing!important}

/* DASH-NOSCROLL-v1 — la Dashboard sta nello schermo: meno margine sotto e globo ridotto solo se lo schermo è basso */
body:has(section[data-tab="dash"]:not([hidden])) main{padding-bottom:16px}
@media (min-width:701px){section[data-tab="dash"] .dash .globe-wrap{max-width:min(480px,calc(100dvh - 150px))}}

/* ═════ QT-DOCK-v1 + QT-GROUP-v1 — pannelli a misura di schermo, risultati in una barra in fondo, reti per paese, gruppi di rotte ═════ */
.qt2 .qt-top{display:flex;flex-direction:column;gap:14px;min-height:0}
.qt2 .qy>.ui-card{max-height:none}
@media (min-width:1251px) and (min-height:640px){
  .qt2 .qt-top{height:calc(100dvh - var(--toph,58px) - 18px - 66px)}
  .qt2 .qy{flex:1;min-height:0;grid-template-rows:minmax(0,1fr)}
  .qt2 .qy>.ui-card{height:100%;min-height:0}
  .qt2 .nettbl-wrap{flex:1;min-height:0}
  .qt2 .qy-routes #routesWrap{flex:1;min-height:0}.qt2 .qy-routes .routes{flex:1;min-height:0;overflow:auto}
  .qt2 .qm-body{flex:1;min-height:0}
  .qt2 .ui-sub{display:none}
}
@media (min-width:1251px) and (min-height:820px){.qt2 .ui-sub{display:block}}
/* barra dei risultati */
.qdock-h{position:sticky;bottom:0;z-index:15;display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:52px;padding:9px 16px;cursor:pointer;user-select:none;
  background:linear-gradient(180deg,rgba(250,204,21,.10),rgba(250,204,21,.02)),var(--bg1);border:1px solid var(--border-hi);border-bottom:none;border-radius:16px 16px 0 0;
  box-shadow:0 -12px 28px rgba(0,0,0,.45)}
.qdock-h:hover{border-color:rgba(250,204,21,.5)}
.qdock-h .qd-arrow{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;background:var(--accent-dim);color:#fef08a;font-size:.72rem;transition:transform .25s var(--ease-out)}
.qdock-h.open .qd-arrow{transform:rotate(180deg)}
.qdock-h.open{box-shadow:none}
.qd-live{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.qd-live .spin{width:9px;height:9px;border-width:2px;margin-right:4px;vertical-align:-1px}
.qd-hint{margin-left:auto;font-family:var(--plexmono);font-size:.66rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em}
.qdock-h.pulse{animation:qd-pulse 1.4s var(--ease-out) 2}
@keyframes qd-pulse{0%{box-shadow:0 -12px 28px rgba(0,0,0,.45),0 0 0 0 rgba(250,204,21,.6)}60%{box-shadow:0 -12px 28px rgba(0,0,0,.45),0 0 0 8px rgba(250,204,21,0)}}
.qdock{margin-top:-14px;border-top:none;border-radius:0 0 16px 16px;min-height:calc(100dvh - var(--toph,58px) - 90px);box-shadow:none}
.qdock .ui-toolbar{border-top:1px solid var(--border)}
.qdock .ui-toolbar .ui-chips{margin-left:auto}
/* reti raggruppate per paese */
.qt2 .nettbl tr.grow{cursor:pointer}
.qt2 .nettbl tr.grow td{background:var(--bg2);border-bottom:1px solid var(--border);padding-top:7px;padding-bottom:7px}
.qt2 .nettbl tr.grow:hover td{background:var(--bg3)}
.qt2 .nettbl tr.grow.on td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.qt2 .nettbl tr.grow b{font-weight:600}
.gtog{display:inline-block;width:16px;color:var(--text-dim);font-size:.72rem}
.gcnt{font-family:var(--plexmono);font-size:.66rem;color:var(--text-dim);margin-left:4px}
.gown{font-family:var(--plexmono);font-size:.64rem;color:var(--green);margin-left:6px}
.gsel{font-family:var(--plexmono);font-size:.64rem;color:#fef08a;background:var(--accent-dim);border-radius:999px;padding:1px 8px;margin-left:8px}
.gsel:empty{display:none}
.qt2 .nettbl tr.sub td.nm{padding-left:36px}
.qt2 .nettbl input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}
/* scelte per paese */
.selsum{display:flex;flex-wrap:wrap;gap:5px;padding:8px 16px;border-bottom:1px solid var(--border);max-height:76px;overflow:auto}
.selsum .sc{border:1px solid rgba(250,204,21,.35);background:var(--accent-dim);color:#fef9c3;border-radius:999px;padding:3px 9px;font-size:.72rem;cursor:pointer;font-family:var(--plex)}
.selsum .sc b{font-family:var(--plexmono);margin:0 2px}
.selsum .sc:hover{background:var(--red-dim);border-color:rgba(248,113,113,.4);color:var(--red)}
.selsum .sc.more{background:var(--bg3);border-color:var(--border);color:var(--text-sec)}
/* gruppi di rotte */
.qt2 .routes .rt-group{display:flex;align-items:center;gap:6px;cursor:pointer;padding:6px 4px;margin:6px 0 2px;border-radius:8px;position:sticky;top:-10px;background:var(--bg1);z-index:1}
.qt2 .routes .rt-group:hover{color:var(--text-sec)}
.qt2 .routes .rt-group.has{color:#fef08a}
.rg-tog{width:12px;color:var(--text-dim)}
.rg-n{margin-left:auto;font-family:var(--plexmono);font-size:.62rem;color:var(--text-dim);background:var(--bg3);border-radius:999px;padding:1px 7px;text-transform:none;letter-spacing:0}
.rt-group.has .rg-n{background:var(--accent-dim);color:#fef08a}
.rg-all{background:none;border:1px solid var(--border-hi);border-radius:7px;color:var(--text-sec);font-size:.62rem;padding:2px 7px;cursor:pointer;text-transform:none;letter-spacing:0;font-family:var(--plexmono)}
.rg-all:hover{border-color:var(--accent);color:var(--accent)}
.formula.over,.formula.over .tot b{color:var(--red)}
@media (max-width:700px){.qdock-h{padding:8px 12px}.qd-hint{display:none}}

/* ═════ VENDOR-IMPORT-v1 ═════ */
.vtools{flex-wrap:wrap;gap:8px}.vdl{font-size:.78rem;color:var(--text2);white-space:nowrap}.vdl a{font-weight:600}
.imp{display:flex;flex-direction:column;gap:14px}
.drop{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:26px 16px;border:2px dashed var(--border-hi);border-radius:16px;cursor:pointer;background:var(--bg2);transition:border-color .15s,background .15s}
.drop:hover,.drop.over{border-color:var(--acc);background:var(--acc-dim)}
.drop.has{border-style:solid;border-color:rgba(250,204,21,.5);padding:14px}
.drop .drop-ico{font-size:1.5rem;color:var(--acc)}.drop span{font-size:.8rem;color:var(--text2)}
.drop.has .drop-ico,.drop.has span:last-child{display:none}
.imp-help{display:grid;gap:8px;font-size:.82rem;color:var(--text2);line-height:1.45}
.imp-help b{color:var(--text)}
.imp-sum{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.imp-map{border:1px solid var(--border);border-radius:12px;padding:8px 12px;background:var(--bg2);margin-bottom:10px}
.imp-map summary{cursor:pointer;font-weight:600;font-size:.86rem}
.imp-cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:10px}
.imp-col{display:flex;flex-direction:column;gap:3px;border:1px solid var(--border);border-radius:10px;padding:7px 8px;background:var(--bg1)}
.imp-col.ok{border-color:rgba(52,211,153,.35)}
.ic-h{font-weight:600;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ic-s{font-family:var(--mono);font-size:.68rem;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-col select{padding:5px 7px;font-size:.76rem;border-radius:8px}
.imp-opts{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}.imp-opts .ui-seg{margin:0}
.imp-rows{max-height:46vh;border:1px solid var(--border);border-radius:12px}
.imp-rows tr.error td{background:rgba(248,113,113,.05)}.imp-rows tr.skip td{opacity:.6}
.imp-rows .mono{font-family:var(--mono);font-size:.74rem}
.imp-note{font-size:.74rem;min-width:180px}.imp-note .e{color:var(--red)}.imp-note .w{color:var(--amber)}
.imp-go{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.ui-tag{font-family:var(--plexmono);font-size:.62rem;padding:2px 8px;border-radius:999px;background:var(--bg3);color:var(--text-sec);white-space:nowrap}
.ui-tag.ok{background:var(--green-dim);color:var(--green)}.ui-tag.warn{background:var(--amber-dim);color:var(--amber)}.ui-tag.bad{background:var(--red-dim);color:var(--red)}
/* QT-TOP-v1 */
.qt2 .nettbl tr.gmore td{padding:10px 12px;background:transparent}
.qt2 .nettbl tr.gmore .muted{margin-left:8px}
.rt-more{align-self:flex-start;background:none;border:1px dashed var(--border-hi);border-radius:8px;color:var(--text-sec);font-size:.72rem;padding:4px 10px;cursor:pointer;margin:2px 0 4px;font-family:var(--plexmono)}
.rt-more:hover{border-color:var(--accent);color:var(--accent)}
.rt-more[hidden]{display:none}

/* ═════ QT-FIXED-v1 — tre pannelli della stessa altezza fissa, tabella delle reti sempre dentro il pannello ═════ */
.qt2 .qy{align-items:stretch}
.qt2 .qy>.ui-card{height:var(--qph,560px);min-height:0;max-height:none}
@media (min-width:1251px) and (min-height:640px){.qt2 .qy>.ui-card{height:100%}}
@media (max-width:1250px){.qt2{--qph:560px}.qt2 .nettbl-wrap{max-height:none}.qt2 .routes{max-height:none}}
@media (max-width:800px){.qt2{--qph:500px}}
.qt2 .nettbl-wrap{overflow-x:hidden}
.qt2 table.nettbl{table-layout:fixed;width:100%}
.qt2 table.nettbl th:nth-child(1),.qt2 table.nettbl td.ck:first-child{width:38px}
.qt2 table.nettbl th:nth-child(3){width:84px}
.qt2 table.nettbl th:nth-child(4){width:104px}
.qt2 table.nettbl th:nth-child(5){width:38px}
.qt2 table.nettbl td,.qt2 table.nettbl th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qt2 table.nettbl td.gname{max-width:0}
.qt2 table.nettbl td.nm small{font-size:.7rem}
.qt2 table.nettbl td.ck,.qt2 table.nettbl th.ck{padding-left:8px;padding-right:8px;text-align:center}
.qt2 .routes .rt{min-width:0;overflow:hidden}
.qt2 .routes .rt>*{flex-shrink:0}
.qt2 .routes .rt{white-space:nowrap;text-overflow:ellipsis}
.qt2 .ui-toolbar{min-width:0}
.qt2 .ui-toolbar .ui-seg{flex-wrap:nowrap}
@media (max-width:700px){.qt2 table.nettbl th:nth-child(4){display:none}.qt2 table.nettbl tr.nrow td:nth-child(4){display:none}}

/* ═════ QT-ALIGN-v1 — Reti e Rotte/Vendor sulle stesse righe: titolo, filtri, ricerca, scelte, lista ═════ */
.qt2 .qy-nets>.ui-card-head,.qt2 .qy-routes>.ui-card-head,.qt2 .qy-msg>.ui-card-head{height:50px;flex:0 0 50px;flex-wrap:nowrap;overflow:hidden}
.qt2 .qy-nets>.tb1,.qt2 .qy-routes>.tb1{height:50px;flex:0 0 50px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.qt2 .qy-nets>.tb1::-webkit-scrollbar,.qt2 .qy-routes>.tb1::-webkit-scrollbar{display:none}
.qt2 .qy-nets>.tb2,.qt2 .qy-routes>.tb2{height:50px;flex:0 0 50px;flex-wrap:nowrap;padding-top:8px;padding-bottom:8px;margin-top:0;border-top:none}
.qt2 .tb2 .ui-in{min-width:0}
.qt2 .selsum{height:40px;flex:0 0 40px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;align-items:center;max-height:none;padding:0 16px;scrollbar-width:thin}
.qt2 .selsum .sc{flex:0 0 auto;white-space:nowrap}
.ss-empty{font-size:.74rem;color:var(--text-dim);white-space:nowrap}
.qt2 .qy-routes #routesWrap{flex:1;min-height:0;display:flex;flex-direction:column}
.qt2 .qy-routes.is-manual .tb1 #rtShow,.qt2 .qy-routes.is-manual .tb2{opacity:.4;pointer-events:none}
.qt2 .qy-routes .routes{padding-top:8px}
/* etichette della rete */
small.mvno{font-family:var(--plexmono);font-size:.64rem;color:var(--text-dim);margin-left:3px}
.pt{display:inline-block;font-family:var(--plexmono);font-size:.6rem;padding:1px 7px;border-radius:999px;margin-left:4px;vertical-align:1px;white-space:nowrap}
.pt.yes{background:var(--amber-dim);color:var(--amber)}
.pt.no{background:var(--bg3);color:var(--text-dim)}
.pt.al{background:var(--green-dim);color:var(--green)}
/* ═════ RESULTS-v2 — una riga per test ═════ */
.qres td{white-space:nowrap}
.qres .c-st .tm{font-family:var(--plexmono);font-size:.68rem;color:var(--text-dim);margin-left:4px}
.qres .c-net{max-width:240px;overflow:hidden;text-overflow:ellipsis}
.qres .c-via{max-width:160px;overflow:hidden;text-overflow:ellipsis}
.qres .c-smsc{max-width:150px;overflow:hidden;text-overflow:ellipsis}
.qres .c-dv{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.qres .c-dv .dv{font-size:.78rem;color:var(--text-sec)}.qres .c-dv .dv b{color:var(--text-pri);font-weight:600}
.qres .c-dv .dv.lat{font-family:var(--plexmono);color:var(--text-pri)}
.qres .c-dv .dv.bad{color:var(--red)}
.qres code.masked,#modal code.masked{color:var(--text-dim);letter-spacing:.03em}
.unlock{border:1px solid rgba(250,204,21,.4);background:var(--accent-dim);color:#fef9c3;border-radius:7px;font-size:.66rem;padding:2px 7px;cursor:pointer;font-family:var(--plexmono);margin-left:4px}
.unlock:hover{background:var(--acc-fill);color:var(--on-acc)}
.unlock:disabled{opacity:.5;cursor:default}
.res2 .ui-toolbar select.ui-in{width:auto}
@media (max-width:700px){.qres .c-dv{justify-content:flex-end;flex-wrap:wrap}.qres td{white-space:normal}}

/* RESULTS-v3: colonna mittente */
.qres .c-snd{max-width:200px;overflow:hidden;text-overflow:ellipsis}.qres .c-snd s{opacity:.7}
/* CONFIRM-FS-v1: conferma a tutto schermo */
.fs-confirm{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(5,7,12,.82);backdrop-filter:blur(6px);opacity:0;transition:opacity .18s ease}
.fs-confirm.on{opacity:1}.fs-confirm.out{opacity:0}
.fs-box{width:min(460px,100%);text-align:center;background:linear-gradient(180deg,rgba(250,204,21,.14),transparent 60%),var(--bg1);border:1px solid var(--border-hi);border-radius:22px;padding:30px 26px 24px;
  box-shadow:0 30px 80px rgba(0,0,0,.6);transform:translateY(14px) scale(.97);transition:transform .26s var(--ease-out)}
.fs-confirm.on .fs-box{transform:none}
.fs-ico{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:1.9rem;background:var(--accent-dim);box-shadow:0 0 0 6px rgba(250,204,21,.08)}
.fs-box h2{font-family:var(--plex);font-size:1.25rem;margin:0 0 8px;letter-spacing:-.01em}
.fs-box p{color:var(--text-sec);font-size:.9rem;line-height:1.5;margin:0 0 20px}.fs-box p b{color:var(--text-pri)}
.fs-btns{display:flex;gap:10px;justify-content:center}.fs-btns .db-btn{min-width:130px;padding:11px 16px;font-size:.8rem}

/* ═════ COLS-v1 — colonne dei risultati configurabili; FLAG-v1 — sigla al posto della bandiera dove il browser non le disegna ═════ */
.isoflag{display:inline-block;font-family:var(--plexmono);font-size:.62rem;font-weight:600;letter-spacing:.04em;padding:1px 5px;border-radius:5px;background:var(--bg3);color:var(--text-sec);vertical-align:1px}
.cc .cc-iso{font-family:var(--plexmono);font-size:.74rem;font-weight:600;color:var(--text-pri);letter-spacing:.04em}
.cc .cc-flag{display:none;font-size:1.05rem}
@media (max-width:700px){.cc .cc-flag{display:inline}.cc .cc-flag+*,.cc:has(.cc-flag) .cc-iso{display:none}}
table.qres th[data-k]{cursor:grab;user-select:none}
table.qres th[data-k]:hover{color:var(--text-sec)}
table.qres th.drag{opacity:.4}
table.qres th.over{box-shadow:inset 3px 0 0 var(--accent);color:var(--accent)}
.qres td.c-time .tm,.qres .c-delay .lat{font-family:var(--plexmono);font-size:.74rem;color:var(--text-pri)}
.qres td.c-txt{max-width:260px;overflow:hidden;text-overflow:ellipsis}
.qres td.c-id code{color:var(--text-sec)}
.colbtn{margin-left:4px}
.colpanel{position:fixed;z-index:120;background:var(--bg1);border:1px solid var(--border-hi);border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.55);padding:10px;font-family:var(--plex);animation:cp-in .16s var(--ease-out)}
@keyframes cp-in{from{opacity:0;transform:translateY(-4px)}}
.cp-h{display:flex;flex-direction:column;gap:2px;padding:4px 6px 8px;border-bottom:1px solid var(--border)}
.cp-h .muted{font-size:.7rem}
#cpList{list-style:none;margin:6px 0;padding:0;max-height:min(420px,60vh);overflow:auto}
#cpList li{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:9px;border:1px solid transparent}
#cpList li:hover{background:var(--bg2)}
#cpList li.drag{opacity:.4}#cpList li.over{border-color:var(--accent)}
#cpList li:not(.on) label{color:var(--text-dim)}
#cpList label{flex:1;display:flex;align-items:center;gap:8px;font-size:.84rem;cursor:pointer;min-width:0}
#cpList input{accent-color:var(--accent)}
.cp-grip{cursor:grab;color:var(--text-dim);font-size:1rem;padding:0 2px}
.cp-arr{display:flex;gap:2px}
.cp-arr button{width:24px;height:24px;border-radius:7px;border:1px solid var(--border);background:var(--bg2);color:var(--text-sec);cursor:pointer;font-size:.74rem}
.cp-arr button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.cp-arr button:disabled{opacity:.3;cursor:default}
.cp-f{display:flex;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid var(--border)}

/* ═════ STATUS-v2 — stati in sigle e colori con un solo criterio:
   verde = arrivato/consegnato · giallo = in attesa o modificato · blu-grigio = in coda/informazione · rosso = errore · grigio = scaduto/assente ═════ */
:root{--info:#9fb0d6;--info-dim:rgba(159,176,214,.14);--mute-dim:rgba(111,117,147,.16)}
.stc{display:inline-flex;align-items:center;gap:5px;font-family:var(--plexmono);font-size:.66rem;font-weight:700;letter-spacing:.08em;padding:3px 9px;border-radius:999px;border:1px solid transparent;min-width:52px;justify-content:center}
.stc.ok{background:var(--green-dim);color:var(--green);border-color:rgba(52,211,153,.3)}
.stc.wait{background:var(--amber-dim);color:var(--amber);border-color:rgba(251,146,60,.3)}
.stc.queued{background:var(--info-dim);color:var(--info);border-color:rgba(159,176,214,.3)}
.stc.fail{background:var(--red-dim);color:var(--red);border-color:rgba(248,113,113,.3)}
.stc.exp{background:var(--mute-dim);color:var(--text-dim);border-color:var(--border)}
.stc .spin{width:8px;height:8px;border-width:2px;margin:0}
.ui-tag.info{background:var(--info-dim);color:var(--info)}
.ui-tag.mute{background:var(--mute-dim);color:var(--text-dim)}
.pt.yes{background:var(--info-dim);color:var(--info)}
.pt.no{background:transparent;color:var(--text-dim);border:1px solid var(--border)}
.qres code.tcode{color:var(--text-pri);font-weight:600;letter-spacing:.04em}
.qres td.c-mod .ui-tag,.qres td.c-sender .ui-tag{text-transform:lowercase}
.stseg button[data-s="OK"].on{color:var(--green)}.stseg button[data-s="WAIT"].on{color:var(--amber)}
.stseg button[data-s="FAIL"].on{color:var(--red)}.stseg button[data-s="EXP"].on{color:var(--text-sec)}
.stseg button[data-s]:not([data-s=""]){font-family:var(--plexmono);font-size:.68rem;letter-spacing:.06em}

/* ═════ FINISH-v1 — tabella dei risultati più stretta: tutto visibile senza scorrere di lato (di default) ═════ */
table.qres{font-size:.78rem}
table.qres tr:first-child>th{padding:8px 8px;letter-spacing:.06em}
table.qres td{padding:7px 8px}
table.qres td:first-child,table.qres th:first-child{padding-left:14px}
.qres .stc{min-width:0;padding:2px 7px;font-size:.62rem;letter-spacing:.05em}
.qres .ui-tag{font-size:.58rem;padding:2px 6px}
.qres .c-net{max-width:170px}
.qres .c-via{max-width:120px}
.qres .c-snd{max-width:110px}
.qres .c-time .tm{font-size:.7rem}
.qres code{font-size:.72rem}
.qres .c-num code{font-size:.7rem}
.qres .pt{font-size:.56rem;padding:1px 6px;margin-left:2px}
.qres small.mvno{font-size:.6rem}
b.snd-chg{color:var(--amber);background:var(--amber-dim);border-radius:5px;padding:1px 5px;font-weight:600}
.qres .c-txt .txt-chg{color:var(--amber);background:var(--amber-dim);border-radius:5px;padding:1px 5px}

/* ═════ DETAIL-v2 — dettaglio del test in stile scheda professionale ═════ */
.modal-box.wide{width:min(900px,100%);padding:0;border-radius:20px;overflow:auto}
.modal-box.wide>.x{top:14px;right:16px;z-index:2}
.dt{font-family:var(--plex);display:flex;flex-direction:column}
.dt-head{padding:22px 24px 16px;background:linear-gradient(180deg,rgba(250,204,21,.12),transparent);border-bottom:1px solid var(--border)}
.dt-eyebrow{font-family:var(--plexmono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.dt-code{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 6px}
.dt-code code{font-family:var(--plexmono);font-size:1.6rem;font-weight:600;letter-spacing:.06em;color:var(--text-pri);background:none;padding:0}
.dt-copy{background:var(--bg3);border:1px solid var(--border-hi);color:var(--text-sec);border-radius:8px;width:28px;height:28px;cursor:pointer}
.dt-copy:hover{color:var(--accent);border-color:var(--accent)}
.dt-code .stc{font-size:.72rem;padding:4px 11px}
.dt-sub{color:var(--text-sec);font-size:.88rem;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dt-sub .cc-iso{font-family:var(--plexmono);font-size:.72rem;font-weight:600;background:var(--bg3);border-radius:5px;padding:1px 6px;color:var(--text-pri)}
.dt-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:16px 24px 4px}
.dt-tile{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;min-width:0}
.dt-tile span{font-family:var(--plexmono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}
.dt-tile b{font-family:var(--plexmono);font-size:1.05rem;color:var(--text-pri);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dt-tile small{font-size:.68rem;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dt-tile.ok{border-color:rgba(52,211,153,.3)}.dt-tile.ok b{color:var(--green)}
.dt-tile.bad{border-color:rgba(248,113,113,.3)}.dt-tile.bad b{color:var(--red)}
.dt-tile.warn{border-color:rgba(251,146,60,.3)}.dt-tile.warn b{color:var(--amber)}
.dt-line{display:flex;padding:16px 24px 6px}
.dt-step{flex:1;position:relative;display:flex;gap:9px;align-items:flex-start}
.dt-step:not(:last-child)::after{content:'';position:absolute;top:6px;left:16px;right:8px;height:2px;background:var(--border-hi)}
.dt-step.done:not(:last-child)::after{background:linear-gradient(90deg,var(--green),rgba(52,211,153,.35))}
.dt-step i{flex:0 0 14px;height:14px;border-radius:50%;background:var(--bg3);border:2px solid var(--border-hi);position:relative;z-index:1;margin-top:0}
.dt-step.done i{background:var(--green);border-color:var(--green)}
.dt-step.fail i{background:var(--red);border-color:var(--red)}
.dt-step.now i{background:var(--amber);border-color:var(--amber);animation:dt-pulse 1.4s ease-in-out infinite}
@keyframes dt-pulse{50%{box-shadow:0 0 0 5px rgba(251,146,60,.18)}}
.dt-step>div{position:relative;z-index:1;background:var(--bg1);padding:0 8px 0 2px;margin-top:16px;margin-left:-23px;display:flex;flex-direction:column}
.dt-step b{font-size:.8rem}.dt-step span{font-family:var(--plexmono);font-size:.72rem;color:var(--text-sec)}.dt-step small{font-family:var(--plexmono);font-size:.68rem;color:var(--accent)}
.dt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;padding:14px 24px 0}
.dt-card{background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:12px 14px}
.dt-card h4,.dt-msg h4{margin:0 0 8px;font-family:var(--plexmono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);font-weight:500;display:flex;align-items:center;gap:8px}
.dt-row{display:grid;grid-template-columns:104px 1fr;gap:8px;padding:5px 0;border-top:1px solid var(--border);font-size:.82rem;align-items:baseline}
.dt-card h4+.dt-row{border-top:none}
.dt-row>span{color:var(--text-dim);font-size:.76rem}
.dt-row>div{min-width:0;overflow-wrap:anywhere;color:var(--text-pri)}
.dt-row code{font-family:var(--plexmono);font-size:.74rem;background:var(--bg3);padding:1px 6px;border-radius:5px}
.dt-row.wrap code{display:inline-block;margin:0 4px 4px 0}
.dt-msg{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 24px 0}
.dt-bubble{background:var(--bg3);border-radius:14px 14px 14px 4px;padding:10px 13px;font-size:.88rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;min-height:44px}
.dt-bubble.in{background:rgba(52,211,153,.08);border:1px solid rgba(52,211,153,.2)}
.dt-bubble.in.chg{background:var(--amber-dim);border-color:rgba(251,146,60,.3)}
.dt-bubble ins{background:var(--amber-dim);color:var(--amber);text-decoration:none;border-radius:3px;padding:0 2px}
.dt-bubble del{background:var(--red-dim);color:var(--red);border-radius:3px;padding:0 2px}
.dt-msg small{display:block;margin-top:5px;font-family:var(--plexmono);font-size:.66rem;color:var(--text-dim)}
.dt-foot{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px 20px;margin-top:14px;border-top:1px solid var(--border)}
@media (max-width:700px){.dt-tiles{grid-template-columns:repeat(2,1fr);padding:14px 16px 2px}.dt-head{padding:18px 16px 14px}.dt-line{padding:14px 16px 4px}
  .dt-grid,.dt-msg{padding:12px 16px 0}.dt-msg{grid-template-columns:1fr}.dt-foot{padding:14px 16px 16px}.dt-code code{font-size:1.3rem}.dt-row{grid-template-columns:92px 1fr}}
/* DETAIL-v2: linea del tempo (versione semplice: pallino in alto, linea al successivo, testo sotto) */
.dt-step{display:block;padding-top:22px;padding-right:8px}
.dt-step i{position:absolute;top:0;left:0;width:14px;height:14px;margin:0}
.dt-step:not(:last-child)::after{top:6px;left:18px;right:4px}
.dt-step>div{margin:0;padding:0;background:none;display:flex;flex-direction:column}
/* DETAIL-v3: ritocchi dopo la prova a schermo */
.dt-when{font-family:var(--plexmono);font-size:.62rem;color:var(--text-dim);margin-left:6px;letter-spacing:.04em}
.dt-copy{display:inline-flex;align-items:center;justify-content:center}
.nowrap{white-space:nowrap}
.dt-msg h4{min-height:20px}
.dt-row .unlock{margin-left:6px}
/* SCROLL-v2: le tabelle dei risultati non trattengono la rotella: su e giù scorre la pagina */
.qdock .ui-scroll,.res2 .ui-scroll{overscroll-behavior:auto}
.dt-row code.masked{white-space:nowrap}
.dt-row .unlock{margin:3px 0 0 0}
.dt-msg h4{height:20px;min-height:0}.dt-msg h4 .ui-tag{padding:1px 6px;font-size:.56rem}

/* ═════ PAGES-v1 — tutte le pagine con lo stesso stile del test rapido (kit UI del gateway) ═════ */
html,body{font-family:var(--plex)}
section.pg{display:flex;flex-direction:column;gap:14px}
.pg-head{margin-bottom:0}
.pg .card{background:var(--bg1);border:1px solid var(--border);border-radius:16px;padding:14px 16px;box-shadow:0 10px 30px rgba(0,0,0,.22)}
.pg .card-h{margin-bottom:8px}
.pg .card-h h2{font-family:var(--plex);font-size:.95rem;font-weight:600}
.pg .hint{color:var(--text-sec);font-size:.82rem}
.pg .muted{color:var(--text-dim)}
/* pulsanti come db-btn */
.btn{font-family:var(--plexmono);font-size:.74rem;font-weight:600;padding:8px 13px;border-radius:10px;border:1px solid var(--border-hi);background:var(--bg1);color:var(--text-pri)}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:linear-gradient(135deg,#fde047,var(--acc-fill));border:none;color:var(--on-acc)}.btn.primary:hover{filter:brightness(1.05);color:var(--on-acc)}
.btn.ghost{background:transparent}.btn.sm{padding:6px 11px;font-size:.7rem}
/* campi come ui-in */
.pg input:not([type=checkbox]):not([type=radio]),.pg select,.sheet input:not([type=checkbox]):not([type=radio]),.sheet select,.modal-box input:not([type=checkbox]),.modal-box select{
  height:36px;padding:6px 11px;border-radius:9px;border:1px solid var(--border-hi);background:var(--bg2);color:var(--text-pri);font-family:var(--plex);font-size:.84rem}
.pg textarea,.sheet textarea{border-radius:9px;border:1px solid var(--border-hi);background:var(--bg2);font-family:var(--plex)}
.pg .form label,.sheet .form label,.vgrid label{font-family:var(--plexmono);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-sec)}
.pg .form label .muted{text-transform:none;letter-spacing:0;font-family:var(--plex);font-size:.72rem}
label.check{font-family:var(--plex)!important;text-transform:none!important;letter-spacing:0!important;font-size:.82rem!important}
/* tabelle come ui-tab */
table.tbl{font-variant-numeric:tabular-nums;font-size:.8rem}
table.tbl th{background:var(--bg2);font-family:var(--plexmono);font-size:.58rem;letter-spacing:.1em;color:var(--text-dim);padding:9px 12px;font-weight:500}
table.tbl td{padding:8px 12px;color:var(--text-sec);vertical-align:middle}
table.tbl td b{color:var(--text-pri)}
table.tbl tbody tr:hover td,table.tbl tr:hover td{background:var(--bg2)}
.pg .scroll{border:1px solid var(--border);border-radius:12px}
.tag{font-family:var(--plexmono);font-size:.6rem;padding:2px 8px;border-radius:999px}
.seg{border-radius:10px}.seg button{font-family:var(--plex);font-size:.76rem}
.pg .kv{gap:0;font-size:.82rem}.pg .kv>div{padding:6px 0;border-top:1px solid var(--border)}.pg .kv>div:nth-child(-n+2){border-top:none}
/* serie */
.btbl td{vertical-align:middle}.btbl .b-name{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btbl .tm{font-family:var(--plexmono);font-size:.72rem}
.b-res{display:flex;align-items:center;gap:8px;min-width:150px}
.bbar{flex:1;height:6px;border-radius:4px;background:var(--bg3);overflow:hidden;display:flex}
.bbar i{display:block;height:100%}.bbar .g{background:var(--green)}.bbar .r{background:var(--red)}.bbar .a{background:var(--amber)}
.bpct{font-family:var(--plexmono);font-size:.72rem;min-width:36px;text-align:right}.bpct.ok{color:var(--green)}.bpct.warn{color:var(--amber)}.bpct.bad{color:var(--red)}
.btbl .b-act{text-align:right}
/* vendor: passi in una striscia */
.vsteps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.vstep1{display:flex;gap:10px;align-items:flex-start;background:var(--bg1);border:1px solid var(--border);border-radius:14px;padding:12px 14px;font-size:.82rem;color:var(--text-sec);line-height:1.45}
.vstep1 b{color:var(--text-pri);display:block}
.vstep1 .vn{flex:0 0 26px;height:26px;border-radius:50%;background:var(--accent-dim);color:#fef08a;font-weight:700;display:flex;align-items:center;justify-content:center;font-family:var(--plexmono);font-size:.78rem}
.vstep1 .ipbox{margin-top:6px}
.vlist{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.vcard{background:var(--bg2);border-radius:14px;padding:14px;gap:9px;transition:border-color .15s}
.vcard:hover{border-color:var(--border-hi)}
.vc-h b{font-size:.92rem}.vc-m{font-size:.78rem}.vc-m code{font-family:var(--plexmono);font-size:.72rem}
.vc-s{font-size:.74rem;border-radius:9px}
/* ricariche */
.pack{background:var(--bg2);border-radius:16px}.pack .pe{font-family:var(--plex);letter-spacing:-.02em}
.pack .pn{font-family:var(--plexmono);font-size:.64rem}
#myTopups .tm,#tuTbl .tm{font-family:var(--plexmono);font-size:.72rem}
@media (max-width:900px){.vsteps{grid-template-columns:1fr}}
#cTbl .plansel{height:30px;padding:2px 8px;font-size:.78rem}
#cTbl td:last-child{white-space:nowrap}
.vc-m span{white-space:nowrap}

/* CONT-LIST-v1: paesi del continente accanto al globo */
.ctry-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;padding-right:2px}
.ctry{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--bg2);border:1px solid var(--border);border-radius:11px;padding:9px 12px;color:var(--text-pri);cursor:pointer;font-family:var(--plex);font-size:.86rem}
.ctry:hover{border-color:var(--accent);background:var(--accent-dim)}
.ctry .cc-iso{font-family:var(--plexmono);font-size:.68rem;font-weight:600;background:var(--bg3);border-radius:5px;padding:1px 6px}
.ctry b{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctry-n{font-family:var(--plexmono);font-size:.7rem;color:var(--text-dim)}
.ctry-own{font-family:var(--plexmono);font-size:.7rem;color:var(--green)}
.ctry-go{color:var(--text-dim)}.ctry:hover .ctry-go{color:var(--accent)}
.ctry-list{overscroll-behavior:auto}

/* FLAG-v2: bandiere come immagini */
.flg{width:1.25em;height:.94em;line-height:1;border-radius:3px;background-size:cover;box-shadow:0 0 0 1px rgba(255,255,255,.08);vertical-align:-.12em;flex:0 0 auto;display:inline-block}
.flg-none{box-shadow:none;width:auto}
.cc{display:inline-flex;align-items:center;gap:6px}
.cc .cc-flag{display:none!important}
.ctry .flg{width:22px;height:16px;border-radius:3px}
.dt-sub .flg{width:20px;height:15px}
#dashCountry h1 .flg{width:28px;height:21px;border-radius:4px;vertical-align:-2px}
@media (max-width:700px){.qres .cc .cc-iso{display:none}}

/* PERF-BG-v1: lo sfondo con i gradienti su uno strato fisso a parte: niente ridisegno della pagina a ogni scorrimento (era la causa degli scatti) */
body{background:var(--bg)!important;background-attachment:scroll!important}
body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;will-change:transform;
  background:radial-gradient(1200px 600px at 10% -10%,rgba(250,204,21,.12),transparent 60%),radial-gradient(900px 500px at 110% 0%,rgba(52,211,153,.07),transparent 60%)}

/* ═════ VENDOR-UI-v2 + SCHED-EDIT-v1 ═════ */
/* interruttore */
.sw{position:relative;display:inline-block;width:34px;height:20px;flex:0 0 auto}
.sw input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}
.sw i{position:absolute;inset:0;border-radius:999px;background:var(--bg3);border:1px solid var(--border-hi);transition:background .15s,border-color .15s}
.sw i::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--text-dim);transition:transform .18s var(--ease-out),background .15s}
.sw input:checked+i{background:rgba(52,211,153,.25);border-color:rgba(52,211,153,.6)}
.sw input:checked+i::after{transform:translateX(14px);background:var(--green)}
.sw input:focus-visible+i{outline:2px solid var(--accent);outline-offset:2px}
.sw-row{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:9px;font-family:var(--plex)!important;font-size:.84rem!important;text-transform:none!important;letter-spacing:0!important;color:var(--text-pri)!important;cursor:pointer}
.sw-row .muted{font-size:.74rem}
/* pannello vendor */
.vf{display:flex;flex-direction:column;gap:12px;font-family:var(--plex)}
.vf-top{display:flex;align-items:center;gap:12px}
.vf-ip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:10px 14px;font-size:.82rem;color:var(--text-sec)}
.vf-ip>div:first-of-type{flex:1;min-width:200px}.vf-ip b{color:var(--text-pri)}
.vf-ip .ipbox{margin:0}
.vn{flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:var(--accent-dim);color:#fef08a;font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-family:var(--plexmono);font-size:.74rem}
.vf-card{padding:14px 16px}
.vf-card h4{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-family:var(--plex);font-size:.9rem;font-weight:600;text-transform:none;letter-spacing:0;color:var(--text-pri)}
.vf-card h4 .muted{font-weight:400;font-size:.74rem}
.vf-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px;margin-bottom:10px}
.vf-grid .w2{grid-column:span 2}.vf-grid .w3{grid-column:span 3}
.vf-grid input,.vf-grid select{width:100%}
.vf-card .tlvrows:not(:empty)+.vf-empty{display:none}
.vf-empty{margin:0}
.vf-adv summary{cursor:pointer;font-weight:600;font-size:.88rem;display:flex;gap:8px;align-items:baseline}
.vf-adv summary .muted{font-weight:400;font-size:.72rem}
.vf-foot{position:sticky;bottom:-40px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 0;background:var(--bg1);border-top:1px solid var(--border);margin-top:4px}
.vf-foot .vresult{max-width:60%}
/* card dei vendor */
.vcard .vc-h{gap:8px}.vcard .vc-sw{margin-left:auto}
.vcard.off .vc-h b{color:var(--text-dim)}
/* modifica programmati */
.se{display:flex;flex-direction:column;gap:12px;font-family:var(--plex)}
.se-t{margin:2px 0 4px;font-size:1.15rem}
.se-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.se-grid .w2{grid-column:span 2}.se-grid input,.se-grid select,.se-grid textarea{width:100%}
.se-grid textarea{background:var(--bg2);border:1px solid var(--border-hi);border-radius:9px;color:var(--text-pri);padding:8px 11px;font:inherit;resize:vertical}
.se-sec{display:flex;flex-direction:column;gap:6px}
.se-chips{display:flex;flex-wrap:wrap;gap:6px}
.se-chips .sc{border:1px solid rgba(250,204,21,.35);background:var(--accent-dim);color:#fef9c3;border-radius:999px;padding:4px 10px;font-size:.76rem;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.se-chips .sc:hover{background:var(--red-dim);border-color:rgba(248,113,113,.4);color:var(--red)}
.se-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--border)}
.se-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--amber-dim);border:1px solid rgba(251,146,60,.35);color:var(--amber);border-radius:10px;padding:7px 10px;font-size:.78rem;margin-bottom:8px}
.se-bar b{color:var(--text-pri)}.se-bar .db-btn{margin-left:auto}
#modal .modal-box:has(.se){width:min(680px,100%)}
@media (max-width:700px){.vf-grid{grid-template-columns:1fr 1fr}.vf-grid .w3{grid-column:span 2}.se-grid{grid-template-columns:1fr}.se-grid .w2{grid-column:auto}}
.se-left{margin-right:auto}
.vcard .row{flex-wrap:wrap;gap:6px}.vcard .btn{white-space:nowrap}

/* ═════ RES-ACC-v1 — Risultati a fisarmonica: una sezione aperta a tutta altezza, scorre solo dentro ═════ */
.resacc .acc-h{cursor:pointer;user-select:none}
.resacc .acc-h:hover .ui-card-title{color:var(--accent)}
.acc-arr{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;background:var(--accent-dim);color:#fef08a;font-size:.7rem}
.resacc .acc:not(.open)>:not(.acc-h){display:none!important}
.resacc .acc:not(.open)>.acc-h{border-bottom:none}
.resacc .acc.open{min-height:0}
.resacc .acc.open .ui-scroll{min-height:0}
@media (min-width:901px) and (min-height:600px){
  section.resacc:not([hidden]){display:flex;flex-direction:column;height:calc(100dvh - var(--toph,58px) - 18px - 16px)}
  body:has(section.resacc:not([hidden])) main{padding-bottom:16px}
  .resacc .acc{flex:0 0 auto}
  .resacc .acc.open{flex:1 1 auto;display:flex;flex-direction:column}
  .resacc .acc.open .ui-scroll{flex:1 1 auto;overflow:auto}
  .resacc .pg-head .ui-sub{display:none}
}
@media (min-width:901px) and (min-height:600px){
  .resacc .acc.open .ui-scroll{flex:1 1 0}
  .resacc .acc.open>.ui-foot,.resacc .acc.open>.ui-toolbar,.resacc .acc.open>.acc-h{flex:0 0 auto}
}

/* ═════ BIG-v1 — tabella dei risultati a quasi tutto schermo ═════ */
.big-back{position:fixed;inset:0;z-index:48;background:rgba(5,7,12,.78);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:2.5vh 2vw;animation:mo-fade .18s ease-out both}
.big-back[hidden]{display:none}
.bigpanel{width:100%;height:100%;background:var(--bg1);border:1px solid var(--border-hi);border-radius:20px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.6);font-family:var(--plex)}
.big-h{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(250,204,21,.1),transparent)}
.big-h h2{margin:2px 0 0;font-size:1.2rem}
.big-h .ui-chips{margin-left:auto}
.big-x{width:36px;height:36px;border-radius:10px;border:1px solid var(--border-hi);background:var(--bg3);color:var(--text-pri);cursor:pointer;font-size:1rem}
.big-x:hover{border-color:var(--accent);color:var(--accent)}
.big-scroll{flex:1 1 0;min-height:0;overflow:auto;overscroll-behavior:contain}
table.bigtbl{font-size:.86rem}
table.bigtbl tr:first-child>th{padding:11px 12px;font-size:.62rem}
table.bigtbl td{padding:10px 12px}
table.bigtbl .stc{font-size:.68rem;padding:3px 9px}
table.bigtbl code{font-size:.78rem}
table.bigtbl .c-net,table.bigtbl .c-via,table.bigtbl .c-snd{max-width:none}
.bigbtn{white-space:nowrap}
.qdock-h .bigbtn{margin-left:auto}.qdock-h .bigbtn+.qd-hint{margin-left:8px}
@keyframes mo-fade{from{opacity:0}}
@media (max-width:700px){.big-back{padding:0}.bigpanel{border-radius:0}.big-h .ui-chips{display:none}}
.dt-bubble.in.none{background:var(--bg2);border:1px dashed var(--border-hi)}
/* BIG-v2: niente scorrimento di lato e niente sfocatura dietro (pesante mentre si scorre) */
.big-back{backdrop-filter:none;background:rgba(5,7,12,.85)}
table.bigtbl{font-size:.82rem}
table.bigtbl tr:first-child>th{padding:10px 9px}
table.bigtbl td{padding:9px 9px}
table.bigtbl td:first-child,table.bigtbl th:first-child{padding-left:18px}
table.bigtbl .c-net{max-width:190px}table.bigtbl .c-via{max-width:150px}table.bigtbl .c-snd{max-width:130px}
table.bigtbl .c-txt{max-width:220px}table.bigtbl .c-smsc{max-width:150px}
/* PERF-SCROLL-v2: via le sfumature d'ombra delle aree che scorrono (background-attachment local = ridisegno a ogni passo) */
.ui-scroll,.scroll,.routes,.dnets{background:transparent!important}
.ui-card .ui-scroll{background:var(--bg1)!important}
/* PERF-SCROLL-v3: aree che scorrono su un livello a parte: lo scorrimento non ridisegna la tabella */
.big-scroll{will-change:transform;contain:strict}
.ui-scroll,.routes,.dnets,.ctry-list{contain:paint}
/* TABLE-FIXED-v1 */
@media (min-width:701px){
  table.qres{table-layout:fixed;width:100%}
  table.qres td,table.qres th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  table.qres .c-net,table.qres .c-via,table.qres .c-snd,table.qres .c-txt,table.qres .c-smsc,table.bigtbl .c-net,table.bigtbl .c-via,table.bigtbl .c-snd,table.bigtbl .c-txt,table.bigtbl .c-smsc{max-width:none}
  table.qres td:first-child,table.qres th:first-child{padding-left:14px}
}

/* ═════ PSCROLL-v1 — barra della pagina su misura (sottile a riposo, larga quando la usi) e puntatore del trascinamento ═════ */
html.pscroll-on{scrollbar-width:none;scrollbar-gutter:auto}
html.pscroll-on::-webkit-scrollbar{display:none;width:0}
.pscroll{position:fixed;right:0;bottom:4px;width:22px;z-index:30;pointer-events:none}
.pscroll.none{display:none}
.ps-track{position:absolute;inset:0;pointer-events:auto;cursor:pointer}
.ps-thumb{position:absolute;top:0;right:4px;width:14px;pointer-events:auto;cursor:grab;will-change:transform;display:flex;justify-content:flex-end}
.ps-thumb i{display:block;height:100%;width:4px;border-radius:999px;background:rgba(169,174,198,.28);transition:width .18s var(--ease-out),background .18s,box-shadow .18s}
.pscroll.act .ps-thumb i{background:rgba(169,174,198,.55)}
.pscroll.near .ps-thumb i,.ps-thumb:hover i{width:9px;background:rgba(169,174,198,.7)}
.pscroll.drag .ps-thumb i{width:10px;background:linear-gradient(180deg,var(--accent),#fde047);box-shadow:0 0 0 3px rgba(250,204,21,.18),0 0 14px rgba(250,204,21,.5)}
.pscroll.near .ps-track{background:linear-gradient(90deg,transparent,rgba(250,204,21,.05))}
html.ps-dragging,html.ps-dragging *{cursor:grabbing!important;user-select:none}
/* puntatore del trascinamento per scorrere: freccia su/giù nello stile del tool invece della mano */
body.dragging,body.dragging *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='12' fill='%2311141f' fill-opacity='.85' stroke='%23facc15' stroke-width='1.5'/%3E%3Cpath d='M14 6l4 5h-8zM14 22l-4-5h8z' fill='%23fef08a'/%3E%3Ccircle cx='14' cy='14' r='1.6' fill='%23facc15'/%3E%3C/svg%3E") 14 14,grabbing!important}
@media (prefers-reduced-motion:reduce){.ps-thumb i{transition:none}}

/* ═════ TIPS-v1 — tooltip nello stile del tool ═════ */
.tip{position:fixed;left:0;top:0;z-index:300;max-width:320px;pointer-events:none;opacity:0;transition:opacity .12s ease;
  background:linear-gradient(180deg,rgba(250,204,21,.12),transparent 70%),#151927;border:1px solid rgba(250,204,21,.45);border-radius:10px;padding:7px 11px;
  box-shadow:0 12px 30px rgba(0,0,0,.55);font-family:var(--plex);font-size:.76rem;line-height:1.4;color:var(--text-pri);display:flex;flex-direction:column;gap:2px}
.tip.on{opacity:1}
.tip small{font-family:var(--plexmono);font-size:.66rem;color:var(--text-dim)}
.tip::after{content:'';position:absolute;left:var(--ax,50%);bottom:-5px;width:8px;height:8px;margin-left:-4px;background:#151927;border-right:1px solid rgba(250,204,21,.45);border-bottom:1px solid rgba(250,204,21,.45);transform:rotate(45deg)}
.tip.below::after{bottom:auto;top:-5px;transform:rotate(225deg)}
/* TABLE-PX-v1: le colonne a testo libero non scendono sotto una larghezza leggibile (la tabella allora scorre di lato invece di schiacciarle) */
@media (min-width:701px){table.qres{min-width:920px}}   /* ROW-v2: sotto i 1000 px la tabella scorre di lato invece di schiacciarsi */
table.qres .c-smpp .ui-tag,table.qres .c-dlr .ui-tag,table.qres .c-mod .ui-tag,table.qres .stc{max-width:none;overflow:visible}

.rv-clock{font-size:.72rem;cursor:help;opacity:.8}

/* ═════ BADGE-v2 — badge della stessa misura, pallini quando la tabella è stretta, numero mascherato leggibile ═════ */
.qres .stc{width:62px;justify-content:center;gap:5px;padding:2px 0;min-width:0}
.stc .st-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex:0 0 auto}
.stc.wait .st-dot{animation:st-pulse 1.2s ease-in-out infinite}
@keyframes st-pulse{50%{opacity:.35}}
.qres .c-smpp .ui-tag{display:inline-block;width:76px;text-align:center;padding:2px 0;overflow:hidden;text-overflow:clip}
.qres .c-dlr .ui-tag{display:inline-block;width:40px;text-align:center;padding:2px 0}
.qres .c-mod .ui-tag{display:inline-block;width:58px;text-align:center;padding:2px 0}
/* tabella stretta: solo il pallino (lo stato è nel tooltip) */
.ui-scroll:has(> table.qres){container-type:inline-size}
@container (max-width:1180px){
  .qres .stc{width:auto;background:none!important;border:none!important;padding:0}
  .qres .stc .st-t{display:none}
  .qres .stc .st-dot{width:10px;height:10px;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 18%,transparent)}
}
/* numero mascherato: puntini piccoli, uno per cifra */
code.masked .mdots{font-size:.62em;letter-spacing:.02em;vertical-align:.12em;margin:0 1px;opacity:.75}
.unlock{display:inline-flex;align-items:center;gap:3px;padding:2px 5px!important;line-height:1}
.unlock svg{display:block}
/* BADGE-v2: misure che stanno dentro le celle (niente "…") */
.qres .stc{width:56px}
.qres .c-smpp .ui-tag{width:70px}.qres .c-mod .ui-tag{width:56px}
.big-back{animation:none}
/* BIG-FAST-v1: pannello chiuso = contenuto saltato ma conservato (riapertura immediata) */
.big-back{content-visibility:hidden;pointer-events:none;background:transparent!important}
.big-back.open{content-visibility:visible;pointer-events:auto;background:rgba(5,7,12,.85)!important}
.big-back:not(.open)>.bigpanel{visibility:hidden}
/* celle uguali in tutte le tabelle dei risultati */
.qt2 table.qres td{padding:7px 8px}.qt2 table.qres tr:first-child>th{padding:8px 8px}
.qt2 table.qres td:first-child,.qt2 table.qres th:first-child{padding-left:14px}

/* ═════ ICON-v1 + VIRT-v1 ═════ */
.sti{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;font-size:.82rem;font-weight:700;line-height:1;cursor:help}
.sti.ok{background:var(--green-dim);color:var(--green)}.sti.fail{background:var(--red-dim);color:var(--red)}
.sti.exp{background:var(--mute-dim);color:var(--text-dim);font-size:.72rem}.sti.wait{background:var(--amber-dim);color:var(--amber);animation:st-pulse 1.2s ease-in-out infinite}
.sti.queued{background:var(--info-dim);color:var(--info)}
.qres td.c-status,.qres th[data-k="status"]{text-align:center}
/* destinatario: numero a sinistra, lucchetto o orologio sempre sulla stessa verticale a destra, centrati in altezza */
.rcv{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%}
.rcv>i{width:22px;flex:0 0 22px}
.rcv .unlock{margin:0;flex:0 0 auto}.rcv .rv-clock{width:22px;text-align:center;flex:0 0 22px}
/* tabella grande: righe ad altezza fissa (servono alla vista con le sole righe visibili) */
table.bigtbl tr.click{height:44px}
table.bigtbl tr.click td{padding-top:0;padding-bottom:0;height:44px}
/* BIG-SCROLL-v1: nella tabella grande si scorre con la barra laterale (ben visibile) o la rotella, non trascinando */
.big-scroll::-webkit-scrollbar{width:14px}
.big-scroll::-webkit-scrollbar-track{background:rgba(255,255,255,.02);border-left:1px solid var(--border)}
.big-scroll::-webkit-scrollbar-thumb{background:rgba(250,204,21,.45);border:3px solid transparent;background-clip:padding-box;border-radius:10px;min-height:48px}
.big-scroll::-webkit-scrollbar-thumb:hover{background:rgba(250,204,21,.7);background-clip:padding-box}
.big-scroll::-webkit-scrollbar-thumb:active{background:linear-gradient(180deg,var(--accent),#fde047);background-clip:padding-box;border-width:2px}
.rv-clock{display:inline-flex;align-items:center;justify-content:center;color:var(--amber)}.sti svg{display:block}

/* ═════ FILT-GRP-v1 ═════ */
.qres .fv{cursor:pointer;border-radius:5px;transition:background .12s,box-shadow .12s}
.qres .fv:hover{background:var(--accent-dim);box-shadow:0 0 0 3px var(--accent-dim)}
.fchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 16px;border-bottom:1px solid var(--border);background:rgba(250,204,21,.04)}
.fchips[hidden]{display:none}
.fchip{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(250,204,21,.4);background:var(--accent-dim);color:#fef9c3;border-radius:999px;padding:3px 10px;font-size:.74rem;cursor:pointer;font-family:var(--plex)}
.fchip span{color:var(--text-dim);font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;font-family:var(--plexmono)}
.fchip b{font-weight:600;color:var(--text-pri);display:inline-flex;align-items:center;gap:4px}
.fchip:hover{background:var(--red-dim);border-color:rgba(248,113,113,.4);color:var(--red)}
.fchip.clear{background:transparent;border-style:dashed;color:var(--text-sec)}
/* righe di riepilogo dei gruppi */
.qres tr.grp{cursor:pointer}
.qres tr.grp td{background:var(--bg2);border-bottom:1px solid var(--border);padding:8px 14px!important;white-space:nowrap}
.qres tr.grp:hover td{background:var(--bg3)}
.qres tr.grp.open td{box-shadow:inset 3px 0 0 var(--accent);background:rgba(250,204,21,.07)}
.grp-r{display:flex;align-items:center;gap:12px;min-width:0}
.grp-arr{width:18px;height:18px;border-radius:6px;background:var(--accent-dim);color:#fef08a;display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;flex:0 0 auto}
.grp-net{font-weight:600;color:var(--text-pri);min-width:90px}
.grp-mcc{font-family:var(--plexmono);font-size:.7rem;color:var(--text-dim);background:none}
.grp-n{font-family:var(--plexmono);font-size:.72rem;color:var(--text-sec);min-width:52px}
.grp-bar{display:flex;width:160px;height:7px;border-radius:4px;background:var(--bg3);overflow:hidden;flex:0 0 auto}
.grp-bar i{display:block;height:100%}.grp-bar .g{background:var(--green)}.grp-bar .r{background:var(--red)}.grp-bar .m{background:var(--text-dim)}.grp-bar .a{background:var(--amber)}
.grp-pct{font-family:var(--plexmono);font-size:.76rem;font-weight:600;min-width:40px}.grp-pct.ok{color:var(--green)}.grp-pct.warn{color:var(--amber)}.grp-pct.bad{color:var(--red)}
.grp-k{font-family:var(--plexmono);font-size:.72rem;color:var(--text-sec)}
.grp-last{margin-left:auto;font-family:var(--plexmono);font-size:.7rem;color:var(--text-dim)}
.qres tr.grp.open+tr.click td:first-child,.qres tr.grp.open~tr.click td:first-child{padding-left:24px}
.grpseg{flex:0 0 auto}


/* ═════ CURSOR-v1 — puntatori su misura in tutto il tester (freccia chiara, freccia indaco sul cliccabile, cerchio con frecce per ruotare) ═════ */
:root{--cur-default:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M4 2.6v16.6l4.2-3.8 2.7 6.1 3-1.3-2.7-6h5.8z' fill='none' stroke='%23facc15' stroke-opacity='.45' stroke-width='3.4' stroke-linejoin='round'/%3E%3Cpath d='M4 2.6v16.6l4.2-3.8 2.7 6.1 3-1.3-2.7-6h5.8z' fill='%23eef0fb' stroke='%230b0d14' stroke-width='1.3' stroke-linejoin='round'/%3E%3C/svg%3E") 4 3,default;--cur-pointer:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23facc15'/%3E%3Cstop offset='1' stop-color='%23fde047'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M4 2.6v16.6l4.2-3.8 2.7 6.1 3-1.3-2.7-6h5.8z' fill='none' stroke='%23facc15' stroke-opacity='.4' stroke-width='3.6' stroke-linejoin='round'/%3E%3Cpath d='M4 2.6v16.6l4.2-3.8 2.7 6.1 3-1.3-2.7-6h5.8z' fill='url%28%23g%29' stroke='%23ffffff' stroke-width='1.3' stroke-linejoin='round'/%3E%3C/svg%3E") 4 3,pointer;--cur-grab:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%2311141f' fill-opacity='.85' stroke='%23facc15' stroke-width='1.5'/%3E%3Cpath d='M12 5.2l2.2 2.6h-4.4zM12 18.8l-2.2-2.6h4.4zM5.2 12l2.6-2.2v4.4zM18.8 12l-2.6 2.2V9.8z' fill='%23fef08a'/%3E%3Ccircle cx='12' cy='12' r='1.5' fill='%23facc15'/%3E%3C/svg%3E") 12 12,grab;--cur-grabbing:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23facc15' fill-opacity='.9' stroke='%23facc15' stroke-width='1.5'/%3E%3Cpath d='M12 5.2l2.2 2.6h-4.4zM12 18.8l-2.2-2.6h4.4zM5.2 12l2.6-2.2v4.4zM18.8 12l-2.6 2.2V9.8z' fill='%23ffffff'/%3E%3Ccircle cx='12' cy='12' r='1.5' fill='%23ffffff'/%3E%3C/svg%3E") 12 12,grabbing}
html,body{cursor:var(--cur-default)}
a,button,select,summary,label,[role=button],[onclick],[data-tab],.click,tr.click,tr.grp,tr.nrow,.fv,.rt,.rt-group,.rt-more,.ctry,.chip,.sc,.fchip,.star,.unlock,.db-btn,.btn,.ui-seg button,.seg button,.tabs button,
.acc-h,.qdock-h,input[type=checkbox],input[type=radio],.sw input,.drop,.ps-track,.cp-arr button,.gtog,.bt,.bl,.ctok,.colbtn,.big-x,.x,.dt-copy,.pack,.vcard .btn,.cmp-btns button,
.langsw a,.sti,.stc,.pt,.dt-tile,.ui-chip[title],.grpseg button,.gz button,.cp-grip,#cpList li,.tip-target{cursor:var(--cur-pointer)!important}
input:not([type=checkbox]):not([type=radio]),textarea,[contenteditable]{cursor:text}
button:disabled,.btn:disabled,.db-btn:disabled{cursor:not-allowed!important}
.ps-thumb{cursor:var(--cur-grab)!important}
html.ps-dragging,html.ps-dragging *{cursor:var(--cur-grabbing)!important}
table.qres th[data-k]{cursor:var(--cur-grab)!important}
.globe-wrap canvas{cursor:var(--cur-grab)}

/* ═════ OVERVIEW-v1 — andamento e matrice rotte × paesi ═════ */
.ov-body{padding:14px 18px;display:flex;flex-direction:column;gap:18px}
.ov-sec{display:flex;flex-direction:column;gap:10px}
.ov-h{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.ov-h b{font-size:.9rem}.ov-h .muted{font-size:.74rem}
.ov-leg{margin-left:auto;display:flex;align-items:center;gap:6px;font-family:var(--plexmono);font-size:.66rem;color:var(--text-dim)}
.ov-leg i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-left:8px}
.ov-leg .g,.ov-stack .g{background:var(--green)}.ov-leg .r,.ov-stack .r{background:var(--red)}.ov-leg .m,.ov-stack .m{background:var(--text-dim)}.ov-leg .a,.ov-stack .a{background:var(--amber)}
.ov-bars{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:6px;align-items:end;height:150px;padding:4px 2px 0;border-bottom:1px solid var(--border)}
.ov-bar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%;background:none;border:none;padding:0;border-radius:8px}
.ov-bar:hover{background:var(--accent-dim)}
.ov-stack{display:flex;flex-direction:column;width:min(34px,70%);border-radius:5px 5px 2px 2px;overflow:hidden;transition:filter .12s}
.ov-stack i{display:block;width:100%}
.ov-bar:hover .ov-stack{filter:brightness(1.15)}
.ov-bar small{font-family:var(--plexmono);font-size:.6rem;color:var(--text-dim);white-space:nowrap}
.ov-mx-wrap{overflow:auto}
table.ov-mx{border-collapse:separate;border-spacing:4px;font-size:.78rem}
table.ov-mx th{font-family:var(--plexmono);font-size:.62rem;color:var(--text-dim);font-weight:500;padding:4px 6px;white-space:nowrap}
table.ov-mx th .flg{margin-right:4px}
table.ov-mx th.ov-rt{text-align:right;max-width:170px;overflow:hidden;text-overflow:ellipsis;color:var(--text-sec);font-family:var(--plex);font-size:.76rem}
td.ov-c{min-width:62px;height:44px;text-align:center;border-radius:9px;border:1px solid var(--border);cursor:var(--cur-pointer);transition:transform .1s,box-shadow .12s}
td.ov-c b{display:block;font-family:var(--plexmono);font-size:.82rem}td.ov-c small{font-family:var(--plexmono);font-size:.6rem;opacity:.75}
td.ov-c:hover{transform:translateY(-1px);box-shadow:0 0 0 2px var(--accent)}
td.ov-c.g{background:rgba(52,211,153,.16);color:var(--green);border-color:rgba(52,211,153,.35)}
td.ov-c.a{background:rgba(251,146,60,.14);color:var(--amber);border-color:rgba(251,146,60,.35)}
td.ov-c.o{background:rgba(251,146,60,.14);color:#fb923c;border-color:rgba(251,146,60,.35)}
td.ov-c.r{background:rgba(248,113,113,.15);color:var(--red);border-color:rgba(248,113,113,.4)}
td.ov-c.w{background:var(--bg2);color:var(--amber)}
td.ov-c.none{background:transparent;border-style:dashed;color:var(--text-dim);cursor:default}
td.ov-c.none:hover{transform:none;box-shadow:none}
.ov-bar.empty{cursor:default!important}.ov-bar.empty:hover{background:none}.ov-bar.empty small{opacity:.5}

/* ═════ FLASH-v1 — righe che si illuminano quando un test cambia stato ═════ */
@keyframes fl-ok{0%,35%{background:rgba(52,211,153,.24);box-shadow:inset 3px 0 0 var(--green)}100%{background:transparent;box-shadow:inset 3px 0 0 transparent}}
@keyframes fl-fail{0%,35%{background:rgba(248,113,113,.24);box-shadow:inset 3px 0 0 var(--red)}100%{background:transparent;box-shadow:inset 3px 0 0 transparent}}
@keyframes fl-exp{0%,35%{background:rgba(111,117,147,.28);box-shadow:inset 3px 0 0 var(--text-dim)}100%{background:transparent;box-shadow:inset 3px 0 0 transparent}}
@keyframes fl-new{0%,35%{background:rgba(250,204,21,.24);box-shadow:inset 3px 0 0 var(--accent)}100%{background:transparent;box-shadow:inset 3px 0 0 transparent}}
.qres tr.fl-ok td{animation:fl-ok 2.4s var(--ease-out) both}
.qres tr.fl-fail td{animation:fl-fail 2.4s var(--ease-out) both}
.qres tr.fl-exp td{animation:fl-exp 2.4s var(--ease-out) both}
.qres tr.fl-new td{animation:fl-new 2.4s var(--ease-out) both}
.qres tr.fl-ok td:not(:first-child),.qres tr.fl-fail td:not(:first-child),.qres tr.fl-exp td:not(:first-child),.qres tr.fl-new td:not(:first-child){box-shadow:none!important}
@media (prefers-reduced-motion:reduce){.qres tr[class*="fl-"] td{animation:none}}

/* ── PRO-v1: toast con esito, prompt, rete assente, pulsante pericoloso ── */
.toast.ok{border-color:rgba(52,211,153,.45);color:#a7f3d0}
.toast.err{border-color:rgba(248,113,113,.5);color:#fecaca}
.fs-in{width:100%;margin:0 0 18px;padding:11px 14px;border-radius:12px;border:1px solid var(--border-hi);background:var(--bg2,rgba(255,255,255,.04));color:var(--text-pri);font:inherit;font-size:.95rem;text-align:center;outline:none}
.fs-in:focus{border-color:#facc15;box-shadow:0 0 0 3px rgba(250,204,21,.22)}
.db-btn.primary.danger{background:linear-gradient(180deg,#ef4444,#b91c1c);border-color:#ef4444}
.netbar{position:fixed;top:0;left:0;right:0;z-index:300;padding:7px 14px;text-align:center;font-size:.82rem;background:#7f1d1d;color:#fee2e2;transform:translateY(-100%);transition:transform .2s}
.netbar.on{transform:none}
@media print{.netbar,.toast,.fs-confirm{display:none!important}}

/* ── AUDIT-v1: registro attività ── */
.aud td{vertical-align:middle}.aud .nw{white-space:nowrap}
.aud-ic{display:inline-flex;width:22px;justify-content:center;opacity:.9}
.aud tr.bad td:nth-child(2){color:#fca5a5}.aud tr.warn td:nth-child(2){color:#fcd34d}
.aud-via{display:inline-block;font:600 .68rem var(--plex-mono,'IBM Plex Mono',monospace);letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:6px;border:1px solid var(--border-hi);color:var(--text-sec)}
.aud-adm{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:999px;background:rgba(250,204,21,.16);color:#fde68a}
.aud-more{display:flex;justify-content:center;margin-top:10px}
#audUser{max-width:200px}

/* ── PRO2-v1: account ── */
.logo-img{display:block;border-radius:7px}
.acc-btn{display:inline-flex;align-items:center;gap:7px;padding-left:5px}
.acc-av{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#fde047,#eab308);color:var(--on-acc);font:700 .72rem var(--plex,system-ui)}
.acc-av.big{width:46px;height:46px;font-size:1.2rem;flex:none}
.acc-nm{max-width:120px;overflow:hidden;text-overflow:ellipsis}
.acc{min-width:min(460px,100%)}.acc-head{display:flex;align-items:center;gap:14px;margin:6px 0 14px}.acc-head h3{margin:0 0 2px}
.acc-grid{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;font-size:.86rem;padding:12px 14px;border:1px solid var(--border);border-radius:12px;margin-bottom:14px}
.acc-grid>div:nth-child(odd){color:var(--text-sec)}.acc-warn{color:#fca5a5;font-weight:600}
.acc h4{margin:0 0 4px;font-size:.9rem}
.acc-pw{display:grid;gap:8px;padding:14px;border:1px solid var(--border);border-radius:12px;margin-bottom:12px}.acc-pw button{justify-self:start}
.acc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;margin-bottom:10px}
.acc-row .hint{margin:0}

/* ── PRO2-v1: dashboard e pagine strette sui telefoni ── */
@media (max-width:760px){
  .dash{grid-template-columns:1fr!important;padding:14px}
  .dash .globe-wrap{max-width:min(340px,100%)!important;margin:0 auto;width:100%}
  .dash-side{min-width:0}
  .kpis.big{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tabs{overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .tabs::-webkit-scrollbar{display:none}
  .acc-nm{max-width:90px}
  .aud-card .card-h{flex-wrap:wrap;gap:8px}
}
section.tab .card,section.tab .scroll{min-width:0;max-width:100%}

/* ── PRO3-v1: focus visibile da tastiera, aiuto scorciatoie ── */
:where(button,a,select,input,textarea,[tabindex]):focus-visible{outline:2px solid #fde047;outline-offset:2px;border-radius:8px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:0}
.kb{min-width:min(420px,100%)}.kb h3{margin:2px 0 12px}
.kb-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:8px 0;border-bottom:1px solid var(--border);font-size:.88rem}.kb-row:last-child{border:0}
kbd{display:inline-block;min-width:22px;text-align:center;padding:2px 7px;border-radius:7px;border:1px solid var(--border-hi);border-bottom-width:2px;background:var(--bg2);font:600 .76rem var(--plexmono,monospace);color:var(--text)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* ── TEXT-HIDE-v1 ── */
.txt-show{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;border:1px dashed var(--border-hi);background:transparent;color:var(--text-sec);font:500 .74rem var(--plex);cursor:pointer;white-space:nowrap}
.txt-show:hover{border-style:solid;color:var(--text-pri);background:var(--acc-dim)}
.txt-shown{animation:txtIn .25s ease}
@keyframes txtIn{from{opacity:0}to{opacity:1}}

/* UMENU-v1 — menu dell'account */
.um{position:relative}
.um-btn{display:inline-flex;align-items:center;gap:7px}
.um-car{font-size:.6rem;opacity:.6}
.um-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:400;min-width:230px;background:var(--bg2,#151927);border:1px solid var(--border-hi,rgba(255,255,255,.14));border-radius:12px;box-shadow:0 18px 40px rgba(0,0,0,.45);padding:6px;display:flex;flex-direction:column;gap:2px}
.um-menu[hidden]{display:none}
.um-item{display:block;text-align:left;background:none;border:0;border-radius:8px;padding:8px 10px;color:var(--text,#e8ebf3);font:inherit;font-size:.84rem;text-decoration:none;cursor:pointer}
.um-item:hover{background:var(--acc-dim,rgba(250,204,21,.14))}
.um-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 10px;font-size:.78rem;color:var(--text2,#aeb6c8)}
.um-out{border-top:1px solid var(--border,rgba(255,255,255,.08));border-radius:0 0 8px 8px;margin-top:4px;color:#f87171}

/* QM-SPACE-v1 — riquadro Messaggio senza vuoti: i campi occupano il necessario, il testo prende lo spazio che resta */
.qt2 .qm-body > .fld{flex:0 0 auto}
.qt2 .qm-body > .fld:has(textarea){flex:1 1 auto;display:flex;flex-direction:column;min-height:120px}
.qt2 .qm-body > .fld:has(textarea) textarea{flex:1;min-height:90px}

/* SCHED-CARDS-v1 — schede dei test programmati più larghe, intestazione e pulsanti su una riga */
#schedList{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(470px,1fr));gap:12px}
#schedList .vcard{min-width:0;width:auto;max-width:none}
#schedList .vc-h{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0}
#schedList .vc-h b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#schedList .vc-h .tag{white-space:nowrap;flex:0 0 auto}
#schedList .vc-h .muted{margin-left:auto;white-space:nowrap;flex:0 0 auto}
#schedList .row{flex-wrap:nowrap;gap:6px}
#schedList .row .btn{white-space:nowrap}

/* SETTINGS-GRID-v1 — impostazioni su griglia: i numeri brevi affiancati, i testi lunghi a tutta larghezza */
section[data-tab="settings"] .form{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px 16px;align-items:end}
section[data-tab="settings"] .form .row{display:contents}
section[data-tab="settings"] .form label{margin:0}
section[data-tab="settings"] .form label:has(#sText),section[data-tab="settings"] .form label:has(#sAlways),
section[data-tab="settings"] .form label.check,section[data-tab="settings"] .form label:has(#sTextDays),
section[data-tab="settings"] .form label:has(#sYogaId),section[data-tab="settings"] .form label:has(#sYogaSecret){grid-column:1/-1}
section[data-tab="settings"] .form label:has(#sYogaId),section[data-tab="settings"] .form label:has(#sYogaSecret){grid-column:span 2}
section[data-tab="settings"] .card > .btn{margin-top:14px}

/* DASH-ROW2-v1 */
.dash2{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-top:14px}
.dash2 .ui-card{padding-bottom:6px}
.dtab{width:100%;border-collapse:collapse;font-size:.84rem}
.dtab td{padding:8px 16px;border-top:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.dtab tr[data-id]{cursor:pointer} .dtab tr[data-id]:hover td{background:var(--bg2)}
.dtab td.r{text-align:right} .dtab .dim{color:var(--dim)} .dtab .mono{font-family:var(--mono);font-size:.78rem}
.dchip{display:inline-block;font-family:var(--mono);font-size:.7rem;padding:2px 9px;border-radius:999px;background:var(--bg3);color:var(--text2)}
.dchip.ok{background:var(--green-dim);color:var(--green)} .dchip.wait{background:var(--amber-dim);color:var(--amber)} .dchip.ko{background:var(--red-dim);color:var(--red)}
@media (max-width:900px){ .dash2{grid-template-columns:1fr} }

/* SCHED-BTN-v2 + SCHED-DUP-v1 */
.run-row{display:flex;gap:8px;align-items:stretch}
.run-row #runBtn{flex:1;min-width:0}
.sched-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:0 16px;border-radius:12px;border:1px solid color-mix(in srgb,var(--acc) 55%,transparent);background:var(--acc-dim);color:var(--acc);font-weight:600;font-size:.84rem;cursor:pointer;white-space:nowrap}
.sched-btn:hover{background:color-mix(in srgb,var(--acc) 24%,transparent)}
.sched-btn:disabled{opacity:.5;cursor:default}
.sched-btn.pulse{animation:schedPulse 1.2s ease-in-out 2}
@keyframes schedPulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--acc) 35%,transparent)}}
.sch-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.sch-bar .hint{margin:0}

/* SCHED-INFO-v1 — pannello con le specifiche del programmato, in alto a destra */
.sch-card{cursor:pointer;transition:border-color .12s,box-shadow .12s}
.sch-card:hover{border-color:var(--border-hi)}
.sch-card.sel{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc) inset}
.sch-info{position:fixed;top:72px;right:16px;z-index:300;width:380px;max-width:calc(100vw - 32px);max-height:calc(100vh - 90px);overflow:auto;
  background:var(--bg1);border:1px solid var(--border-hi);border-radius:16px;box-shadow:0 22px 50px rgba(0,0,0,.5);padding:16px 18px;
  opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .15s ease,transform .15s ease}
.sch-info.on{opacity:1;transform:none;pointer-events:auto}
.sch-info .si-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.sch-info h3{margin:2px 0 0;font-size:1.05rem}
.sch-info .x{background:none;border:0;color:var(--dim);font-size:1rem;cursor:pointer}
.sch-info .si-st{display:flex;align-items:center;gap:7px;margin:8px 0 10px;font-size:.82rem;color:var(--text2)}
.sch-info .si-sec{margin:14px 0 6px;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);display:flex;gap:6px}
.sch-info .si-sec em{font-style:normal;color:var(--text2)}
.sch-info .si-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.84rem}
.sch-info .si-list li{display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--bg2);border-radius:8px}
.sch-info .dim{color:var(--dim)} .sch-info .mono{font-family:var(--mono);font-size:.76rem}
.sch-info .si-chips{display:flex;flex-wrap:wrap;gap:5px} .sch-info .si-chips span{font-size:.78rem;padding:3px 10px;border-radius:999px;background:var(--acc-dim);color:var(--acc)}
.sch-info .si-text{font-size:.86rem;line-height:1.45;padding:9px 11px;background:var(--bg2);border-radius:10px;white-space:pre-wrap;word-break:break-word}
.sch-info .si-text .code{color:var(--acc)}
.sch-info .si-kv{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:.8rem;margin-top:10px} .sch-info .si-kv span{color:var(--dim)} .sch-info .si-kv b{font-weight:500;text-align:right;word-break:break-word}
.sch-info .si-err{margin-top:10px;padding:8px 10px;border-radius:9px;background:var(--red-dim);color:var(--red);font-size:.8rem}
.sch-info .si-f{display:flex;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.sch-info .si-kv b span{color:inherit}

/* PACK-INFO-v1 */
.pack[data-pack]{cursor:pointer;transition:border-color .12s,box-shadow .12s}
.pack.sel{border-color:var(--acc)!important;box-shadow:0 0 0 1px var(--acc) inset}
.sch-info .si-kv b.ok{color:var(--green)}
.sch-info .si-chips span.more{background:var(--bg3);color:var(--text2)}
.sch-info .si-up{margin-top:12px;padding:9px 11px;border-radius:10px;background:var(--acc-dim);font-size:.8rem;line-height:1.45;color:var(--text)}
.sch-info .si-text.dim{color:var(--dim)}

/* PACK-INFO-v2 — "i" sul pacchetto e popup con cosa comprende */
.pack{position:relative}
.pk-i{position:absolute;top:12px;right:12px;width:24px;height:24px;border-radius:50%;border:1px solid var(--border-hi);background:var(--bg2);color:var(--text2);font:italic 700 .8rem/1 Georgia,serif;cursor:pointer;display:grid;place-items:center;z-index:2;transition:border-color .12s,color .12s}
.pack.feat .pk-i{top:40px}
.pk-i:hover{border-color:var(--acc);color:var(--acc)}
.pk-m h3{margin:2px 0 12px}
.pk-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.pk-tabs button{flex:1;min-width:90px;display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-weight:600;cursor:pointer}
.pk-tabs button small{font-family:var(--mono);font-size:.7rem;font-weight:500;color:var(--dim)}
.pk-tabs button.on{border-color:var(--acc);background:var(--acc-dim);color:var(--text)} .pk-tabs button.on small{color:var(--acc)}
.pk-sum{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}
.pk-sum > div{padding:9px 11px;border-radius:10px;background:var(--bg2);display:flex;flex-direction:column;gap:2px}
.pk-sum b{font-size:1.05rem} .pk-sum span{font-size:.74rem;color:var(--text2)} .pk-sum .ok{color:var(--green);font-style:normal}
.pk-list{display:flex;flex-direction:column;gap:6px}
.pk-f{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);transition:opacity .15s,filter .15s}
.pk-f .pk-ic{flex:0 0 22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;background:var(--green-dim);color:var(--green)}
.pk-f > div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px} .pk-f b{font-size:.84rem;font-weight:600} .pk-f small{font-size:.74rem;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pk-f em{font-style:normal;font-size:.68rem;font-family:var(--mono);color:var(--acc);white-space:nowrap;align-self:center}
.pk-f.lock{opacity:.42;filter:grayscale(1);background:transparent;border-style:dashed}
.pk-f.lock .pk-ic{background:var(--bg3);color:var(--dim)}
.pk-pl{font-size:.64rem;font-family:var(--mono);padding:1px 7px;border-radius:999px;background:var(--bg3);color:var(--text2);margin-left:4px;font-weight:500}
.pk-go{width:100%;margin-top:14px}

/* PACK-CMP-v1 — confronto pacchetti in un'unica tabella */
.pk-scroll{overflow-x:auto}
.pk-cmp{width:100%;border-collapse:separate;border-spacing:0;font-size:.82rem}
.pk-cmp th,.pk-cmp td{padding:8px 10px;text-align:center;border-bottom:1px solid var(--border);transition:opacity .15s,background-color .15s}
.pk-cmp tbody th{text-align:left;font-weight:500;color:var(--text);min-width:200px}
.pk-cmp tbody th small{display:block;font-size:.7rem;color:var(--dim);font-weight:400;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-cmp thead th[data-p]{cursor:pointer;vertical-align:bottom;padding-top:18px;position:relative;border-radius:12px 12px 0 0}
.pk-cmp thead th b{display:block;font-size:.95rem} .pk-cmp thead th span{font-family:var(--mono);font-size:.74rem;color:var(--dim)}
.pk-cmp .pk-feat{position:absolute;top:2px;left:50%;transform:translateX(-50%);font-style:normal;font-size:.58rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--acc);white-space:nowrap}
.pk-cmp td,.pk-cmp thead th[data-p]{opacity:.42}
.pk-cmp td.sel,.pk-cmp thead th.sel{opacity:1;background:var(--acc-dim)}
.pk-cmp thead th.sel{box-shadow:inset 0 2px 0 var(--acc)}
.pk-cmp thead th[data-p]:hover{opacity:.8}
.pk-cmp td small{display:block;font-size:.68rem} .pk-cmp .ok{color:var(--green)}
.pc-ok{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--green-dim);color:var(--green);font-size:.7rem;font-weight:700}
.pc-no{color:var(--dim)}
.pk-cmp tr.pk-sep th{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);padding-top:14px;background:none;opacity:1}
.pk-note{margin:10px 0 0}
.pk-m{padding:20px 22px 18px}
.pk-m .pk-go{margin-top:16px}
.pk-cmp thead th:first-child,.pk-cmp tbody th{background:none}
/* PACK-I-POS-v1 — la "i" sempre in alto a destra alla stessa altezza; il nastrino del più scelto le sta accanto */
.pk-i,.pack.feat .pk-i{top:14px;right:14px}
.pack .ribbon{top:15px;right:46px}

/* TESTER-FEATURES-v1: funzioni per cliente */
.no-feat-schedules #schedBtn,.no-feat-exports a[href*="tests.csv"],.no-feat-exports a[href*="/report/batch"],.no-feat-api .api-card{display:none!important}
.feat-off-card{display:none}.no-feat-api .feat-off-card{display:flex;flex-direction:column;gap:6px}
.feat-off-card span{color:var(--muted,#8a93a6);font-size:.88rem}
.feat-btn .feat-chg{color:var(--accent,#facc15)}
.feat-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.feat-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:10px 12px;border-radius:12px;border:1px solid var(--line,rgba(255,255,255,.1))}
.feat-row.on{border-color:color-mix(in srgb,#22c55e 45%,transparent)}
.feat-row b{display:block}.feat-row small{display:block;color:var(--muted,#8a93a6);font-size:.78rem;margin-top:2px}
.feat-seg{display:flex;flex:none;border:1px solid var(--line,rgba(255,255,255,.15));border-radius:10px;overflow:hidden}
.feat-seg button{font:inherit;font-size:.78rem;padding:6px 11px;border:0;background:transparent;color:inherit;cursor:pointer;opacity:.75}
.feat-seg button+button{border-left:1px solid var(--line,rgba(255,255,255,.12))}
.feat-seg button.on{background:var(--acc-fill,#facc15);color:var(--on-acc);opacity:1}

/* ACCOUNTS-v1: team, conferma email, menu */
.verify-bar{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;padding:10px 16px;margin:0 0 14px;border-radius:12px;background:var(--amber-dim);border:1px solid rgba(251,146,60,.35);color:var(--text);font-size:.88rem}
.verify-bar[hidden]{display:none}
.um-team{padding:8px 12px 6px;font-size:.78rem;color:var(--text2);border-bottom:1px solid var(--border);margin-bottom:4px}
.um-legal{display:flex;gap:14px;padding:6px 12px;font-size:.76rem}.um-legal a{color:var(--text2);text-decoration:none}.um-legal a:hover{color:var(--acc)}
.team-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:960px){.team-grid{grid-template-columns:1fr}}
.team-list{display:flex;flex-direction:column;gap:6px}
.tm-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:var(--bg2)}
.tm-row.own{border-color:rgba(250,204,21,.35)}.tm-row.off{opacity:.55}
.tm-av{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--acc-dim);color:var(--acc);border:1px solid rgba(250,204,21,.3)}
.tm-who{min-width:0;display:flex;flex-direction:column;gap:2px}.tm-who b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tm-who small{color:var(--dim);font-size:.76rem}
.tm-acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.tm-role{font:inherit;font-size:.8rem;padding:5px 8px;border-radius:8px;border:1px solid var(--border-hi);background:var(--bg1);color:var(--text)}
.team-roles{display:flex;flex-direction:column;gap:6px;margin:4px 0 8px}
.team-roles label{display:flex!important;flex-direction:row!important;gap:10px;align-items:flex-start;padding:9px 11px;border-radius:11px;border:1px solid var(--border);cursor:pointer}
.team-roles label:has(input:checked){border-color:var(--acc);background:var(--acc-dim)}
.team-roles input{margin-top:3px;accent-color:#facc15}.team-roles b{display:block;font-size:.86rem;color:var(--text)}.team-roles small{color:var(--text2);font-size:.76rem}
.tm-link{display:block;word-break:break-all;padding:8px 10px}
@media (max-width:640px){.tm-row{grid-template-columns:38px minmax(0,1fr)}.tm-row>select,.tm-row>.tag,.tm-acts{grid-column:2}}
/* sola lettura nel team: niente pulsanti che lanciano o cambiano */
body[data-team-role=viewer] #runBtn,body[data-team-role=viewer] #schedBtn,body[data-team-role=viewer] .sch-bar .btn,body[data-team-role=viewer] .vcard .row .btn:not(.ghost){display:none!important}
.team-roles label,.team-roles label *{text-transform:none!important;letter-spacing:normal!important;font-family:var(--plex)!important}
.team-roles small{display:block;margin-top:2px}
.tm-who .tag,.tm-who .muted{align-self:flex-start;font-size:.74rem}

/* PAYMENTS-v1: pagamento, bonifico, ricevute */
.pe small.pe-vat{display:block;font-size:.7rem;font-weight:500;color:var(--dim);margin-top:2px}
.pk-ro{display:block;font-size:.76rem;text-align:center;margin-top:6px}
.bill-sum{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:.88rem;color:var(--text2)}.bill-sum b{color:var(--text)}
.pay{display:flex;flex-direction:column;gap:14px}.pay-h h3{margin:2px 0}
.pay-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:18px}
@media (max-width:760px){.pay-grid{grid-template-columns:1fr}}
.pay h4{margin:0 0 10px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text2)}
.pay-bill{display:flex;flex-direction:column;gap:8px}
.pay-bill label{display:flex;flex-direction:column;gap:4px;font-size:.76rem;color:var(--text2)}
.pay-bill input,.pay-bill select{font:inherit;font-size:.9rem;padding:8px 10px;border-radius:10px;border:1px solid var(--border-hi);background:var(--bg2);color:var(--text)}
.pay-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pay-2[hidden]{display:none}
.pay-sum{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:14px;background:var(--bg2);border:1px solid var(--border)}
.ps-row{display:flex;justify-content:space-between;font-size:.9rem;color:var(--text2);padding:3px 0}.ps-row b{color:var(--text);font-variant-numeric:tabular-nums}
.ps-row.tot{border-top:1px solid var(--border-hi);margin-top:4px;padding-top:9px;font-size:1.05rem}.ps-row.tot b{font-size:1.25rem}
.ps-note{font-size:.76rem;color:var(--text2);margin:0}
.pay-meth{display:flex;flex-direction:column;gap:6px}
.pay-meth label{display:flex;gap:10px;align-items:flex-start;padding:9px 11px;border-radius:11px;border:1px solid var(--border);cursor:pointer;background:var(--bg1)}
.pay-meth label:has(input:checked){border-color:var(--acc);background:var(--acc-dim)}.pay-meth input{margin-top:3px;accent-color:#facc15}
.pay-meth b{display:block;font-size:.88rem}.pay-meth small{color:var(--text2);font-size:.74rem}
.pay-go{width:100%;justify-content:center;height:44px;font-size:.95rem}
.pay-safe{font-size:.72rem;color:var(--dim);margin:0;text-align:center}
.pay-done,.pay-bank{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.pd-ic{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-size:1.6rem;background:var(--green-dim);color:var(--green)}
.pay-bank .pd-ic{background:var(--acc-dim);color:var(--acc)}
.bk-row{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;text-align:left;padding:7px 10px;border-radius:10px;background:var(--bg2);border:1px solid var(--border)}
.bk-row span{font-size:.76rem;color:var(--text2)}.bk-row code{font-size:.9rem;word-break:break-all;background:none}
.pay{padding:22px 24px}
.pay-bill input,.pay-bill select,.pay-2>label{min-width:0;width:100%;box-sizing:border-box}
@media (max-width:640px){.pay{padding:18px 16px}.pay-2{grid-template-columns:1fr}.bk-row{grid-template-columns:1fr auto}.bk-row span{grid-column:1/-1}}

/* QUACK-YELLOW-v1: accento giallo; sui fondi gialli testo scuro (--on-acc), mai bianco */