/* Selettore ventilatori — stile isolato sotto .sv-app (non interferisce con il tema WordPress)
   Layout: banda superiore a due colonne (dati e filtri | modelli), banda inferiore a tutta larghezza (taglie).
   Palette: neutri "lamiera zincata" a lieve tinta blu, accento petrolio, marcatore punto di lavoro ambra. */
@font-face{font-family:"SV Plex Sans";src:url("../fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"SV Plex Sans";src:url("../fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"SV Plex Sans";src:url("../fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"SV Plex Cond";src:url("../fonts/ibm-plex-sans-condensed-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"SV Plex Cond";src:url("../fonts/ibm-plex-sans-condensed-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"SV Plex Mono";src:url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"SV Plex Mono";src:url("../fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}

.sv-app{
  --sv-bg:#eef2f4; --sv-surface:#ffffff; --sv-sunk:#f6f8f9; --sv-ink:#14212a; --sv-muted:#566874; --sv-faint:#8a9aa4;
  --sv-line:#d3dce1; --sv-line-strong:#b5c3cb;
  --sv-accent:#006f8e; --sv-accent-ink:#ffffff; --sv-accent-soft:#e0f0f5;
  --sv-signal:#d9822b; --sv-signal-soft:#fbeedd;
  --sv-ok:#1d7a47; --sv-ok-soft:#e1f2e8; --sv-warn:#9a6a12; --sv-warn-soft:#f8eed6; --sv-bad:#b23b17; --sv-bad-soft:#f8e3dc;
  --sv-c2:#7a4fb0; --sv-c3:#2f8f6b; --sv-c4:#b0566f;
  --sv-shadow:0 1px 2px rgba(20,33,42,.06),0 6px 20px rgba(20,33,42,.07);
  --sv-sans:"SV Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --sv-cond:"SV Plex Cond","Arial Narrow","Roboto Condensed",var(--sv-sans);
  --sv-mono:"SV Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --sv-r:6px;
  color-scheme:light;
  font-family:var(--sv-sans); font-size:15px; line-height:1.45; color:var(--sv-ink); background:var(--sv-bg);
  border-radius:10px; padding:clamp(12px,2vw,22px); text-align:left;
}
.sv-app[data-sv-theme="dark"]{
  --sv-bg:#0d1519; --sv-surface:#142128; --sv-sunk:#101b21; --sv-ink:#e3ecf0; --sv-muted:#9aabb5; --sv-faint:#6d808b;
  --sv-line:#24353f; --sv-line-strong:#36505d;
  --sv-accent:#3fb6d6; --sv-accent-ink:#06151b; --sv-accent-soft:#12313c;
  --sv-signal:#f0a54a; --sv-signal-soft:#3a2a14;
  --sv-ok:#58c48a; --sv-ok-soft:#123222; --sv-warn:#e0b04f; --sv-warn-soft:#352a12; --sv-bad:#f07a57; --sv-bad-soft:#3a1d14;
  --sv-c2:#b393e6; --sv-c3:#5fc59d; --sv-c4:#e18aa3;
  --sv-shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  .sv-app[data-sv-theme="auto"]{
    --sv-bg:#0d1519; --sv-surface:#142128; --sv-sunk:#101b21; --sv-ink:#e3ecf0; --sv-muted:#9aabb5; --sv-faint:#6d808b;
    --sv-line:#24353f; --sv-line-strong:#36505d;
    --sv-accent:#3fb6d6; --sv-accent-ink:#06151b; --sv-accent-soft:#12313c;
    --sv-signal:#f0a54a; --sv-signal-soft:#3a2a14;
    --sv-ok:#58c48a; --sv-ok-soft:#123222; --sv-warn:#e0b04f; --sv-warn-soft:#352a12; --sv-bad:#f07a57; --sv-bad-soft:#3a1d14;
    --sv-c2:#b393e6; --sv-c3:#5fc59d; --sv-c4:#e18aa3;
    --sv-shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
    color-scheme:dark;
  }
}
.sv-app *,.sv-app *::before,.sv-app *::after{box-sizing:border-box}
.sv-app h1,.sv-app h2,.sv-app h3,.sv-app h4,.sv-app h5,.sv-app h6,.sv-app p,.sv-app ul,.sv-app dl,.sv-app dd,.sv-app figure{margin:0;padding:0}
.sv-app ul{list-style:none}
.sv-app button,.sv-app input,.sv-app select{font:inherit;color:inherit;letter-spacing:normal;text-transform:none;margin:0}
.sv-app button{cursor:pointer}
.sv-app img{max-width:100%;height:auto;display:block}
.sv-app :focus-visible{outline:2px solid var(--sv-accent);outline-offset:2px}
.sv-app .num,.sv-app td,.sv-app .sv-kv dd{font-variant-numeric:tabular-nums}
.sv-app [hidden]{display:none!important}

/* header */
.sv-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 18px;margin-bottom:14px}
.sv-head h2{font-family:var(--sv-cond);font-weight:600;font-size:1.55rem;letter-spacing:.01em;line-height:1.15;text-wrap:balance}
.sv-head p{color:var(--sv-muted);font-size:.86rem;max-width:62ch}

/* top band */
.sv-top{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:16px;align-items:start}
.sv-panel{background:var(--sv-surface);border:1px solid var(--sv-line);border-radius:10px;box-shadow:var(--sv-shadow);min-width:0}
.sv-panel-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--sv-line)}
.sv-panel-h h3{font-family:var(--sv-cond);font-weight:600;font-size:1.02rem;letter-spacing:.02em}
.sv-eyebrow{font-family:var(--sv-cond);font-weight:500;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--sv-muted)}
.sv-panel-b{padding:14px 16px 16px;display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.sv-panel-b>*,.sv-fgrid>*{min-width:0}
.sv-fgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}

/* duty inputs */
.sv-duty{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.sv-field{min-width:0}
.sv-field label{display:block;font-size:.8rem;font-weight:500;color:var(--sv-muted);margin-bottom:4px}
.sv-input{display:flex;align-items:stretch;border:1px solid var(--sv-line-strong);border-radius:var(--sv-r);background:var(--sv-sunk);overflow:hidden}
.sv-input:focus-within{border-color:var(--sv-accent);box-shadow:0 0 0 3px var(--sv-accent-soft)}
.sv-input input{flex:1;min-width:0;width:100%;border:0;background:transparent;padding:9px 10px;font-family:var(--sv-mono);font-size:1.12rem;font-weight:500;outline:none}
.sv-input span{display:flex;align-items:center;padding:0 10px;font-size:.82rem;color:var(--sv-muted);border-left:1px solid var(--sv-line);background:var(--sv-surface)}
.sv-input.sv-err{border-color:var(--sv-bad)}
.sv-errmsg{color:var(--sv-bad);font-size:.78rem;margin-top:4px}
.sv-hint{font-size:.78rem;color:var(--sv-muted);line-height:1.4}

/* filters */
.sv-fgroup{border-top:1px solid var(--sv-line);padding-top:10px}
.sv-fgroup:first-child{border-top:0;padding-top:0}
.sv-fgroup>.sv-flabel{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.sv-flabel b{font-size:.8rem;font-weight:600}
.sv-chips{display:flex;flex-wrap:wrap;gap:5px}
.sv-chip{border:1px solid var(--sv-line-strong);background:var(--sv-surface);border-radius:999px;padding:3px 10px;font-size:.8rem;line-height:1.35;color:var(--sv-ink);transition:background .12s,border-color .12s}
.sv-chip:hover{border-color:var(--sv-accent)}
.sv-chip[aria-pressed="true"]{background:var(--sv-accent);border-color:var(--sv-accent);color:var(--sv-accent-ink)}
.sv-chip small{opacity:.7;margin-left:4px;font-variant-numeric:tabular-nums}
.sv-filters-more{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.sv-numrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sv-numrow .sv-input input{font-size:.95rem;padding:6px 8px}
.sv-linkbtn{background:none;border:0;padding:0;color:var(--sv-accent);font-size:.8rem;font-weight:500;text-decoration:underline;text-underline-offset:2px}
.sv-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;background:none;border:0;padding:2px 0;font-weight:600;font-size:.85rem}
.sv-toggle::after{content:"+";font-family:var(--sv-mono);color:var(--sv-muted)}
.sv-toggle[aria-expanded="true"]::after{content:"−"}

/* Serie U composer */
.sv-composer{background:var(--sv-accent-soft);border:1px solid var(--sv-line);border-radius:8px;padding:12px;display:grid;gap:10px}
.sv-composer h4{font-family:var(--sv-cond);font-weight:600;font-size:.95rem}
.sv-seg{display:inline-flex;border:1px solid var(--sv-line-strong);border-radius:var(--sv-r);overflow:hidden;background:var(--sv-surface)}
.sv-seg button{border:0;background:transparent;padding:5px 10px;font-size:.8rem;border-right:1px solid var(--sv-line)}
.sv-seg button:last-child{border-right:0}
.sv-seg button[aria-pressed="true"]{background:var(--sv-accent);color:var(--sv-accent-ink)}
.sv-mods{display:grid;gap:6px}
.sv-mod{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;background:var(--sv-surface);border:1px solid var(--sv-line);border-radius:6px;padding:6px 8px}
.sv-mod b{font-family:var(--sv-cond);font-weight:600;font-size:.88rem}
.sv-mod span{display:block;font-size:.74rem;color:var(--sv-muted);line-height:1.3}
.sv-step{display:flex;align-items:center;gap:4px}
.sv-step button{width:26px;height:26px;border-radius:5px;border:1px solid var(--sv-line-strong);background:var(--sv-sunk);font-family:var(--sv-mono);line-height:1}
.sv-step output{min-width:18px;text-align:center;font-family:var(--sv-mono);font-weight:500}
.sv-fanrow{display:flex;flex-wrap:wrap;gap:6px;align-items:stretch}
.sv-modcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:6px}
.sv-modcard{position:relative;display:grid;gap:4px;align-content:start;background:var(--sv-surface);border:1px solid var(--sv-line);border-radius:7px;padding:5px;text-align:center;transition:border-color .15s,box-shadow .15s}
.sv-modcard.on,.sv-fancard[aria-pressed="true"]{border-color:var(--sv-accent);box-shadow:0 0 0 2px var(--sv-accent) inset}
.sv-modpick,.sv-fancard{display:grid;justify-items:center;gap:1px;border:0;background:transparent;padding:2px;cursor:pointer;color:inherit;font:inherit}
.sv-fancard{width:104px;border:1px solid var(--sv-line);background:var(--sv-surface);border-radius:7px;padding:6px}
.sv-modpick img,.sv-fancard img{width:64px;height:64px;object-fit:contain;mix-blend-mode:multiply}
.sv-modpick b,.sv-fancard b{font-family:var(--sv-cond);font-weight:600;font-size:.86rem;line-height:1.1}
.sv-modpick span,.sv-fancard span{font-size:.68rem;color:var(--sv-muted);line-height:1.2}
.sv-modcard:not(.on) .sv-modpick img{opacity:.55;filter:grayscale(.6)}
.sv-modn{position:absolute;top:4px;right:5px;font-style:normal;font-family:var(--sv-mono);font-size:.72rem;background:var(--sv-accent);color:var(--sv-accent-ink);border-radius:9px;padding:0 6px}
.sv-modcard .sv-step{justify-content:center}
.sv-bothchip{align-self:center}
.sv-chain{display:flex;flex-wrap:wrap;align-items:center;gap:4px;background:var(--sv-surface);border:1px solid var(--sv-line);border-radius:7px;padding:6px 8px}
.sv-chainmod{display:grid;justify-items:center;font-size:.66rem;color:var(--sv-muted)}
.sv-chainmod img{width:40px;height:40px;object-fit:contain;mix-blend-mode:multiply}
.sv-chainmod.fan small{color:var(--sv-accent);font-weight:600}
.sv-arr{color:var(--sv-faint);font-size:1rem}
.sv-air{font-size:.68rem;color:var(--sv-faint);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}
.sv-dlg-act{display:flex;gap:8px;align-items:center}
.sv-toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:100001;background:var(--sv-bad);color:#fff;padding:10px 14px;border-radius:8px;font-size:.85rem;box-shadow:var(--sv-shadow)}
.sv-optrow{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:.8rem}

/* gallery */
.sv-gal-tools{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sv-gal{padding:12px 14px 16px;display:grid;gap:14px}
.sv-gcat h4{font-family:var(--sv-cond);font-weight:500;font-size:.74rem;text-transform:uppercase;letter-spacing:.12em;color:var(--sv-muted);margin-bottom:6px}
.sv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}
.sv-card{position:relative;display:grid;grid-template-rows:auto auto;gap:4px;text-align:left;background:var(--sv-surface);border:1px solid var(--sv-line);border-radius:8px;padding:8px 8px 9px;transition:border-color .12s,box-shadow .12s,opacity .12s}
.sv-card:hover{border-color:var(--sv-accent)}
.sv-card[aria-pressed="true"]{border-color:var(--sv-accent);box-shadow:0 0 0 2px var(--sv-accent)}
.sv-card.sv-dim{opacity:.45}
.sv-card .sv-thumb{background:#fff;border-radius:5px;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:100%}
.sv-card .sv-thumb img{max-height:100%;object-fit:contain;padding:4px}
.sv-card b{font-family:var(--sv-cond);font-weight:600;font-size:.98rem;line-height:1.1}
.sv-card span{font-size:.72rem;color:var(--sv-muted);line-height:1.25}
.sv-card .sv-badge{position:absolute;top:6px;right:6px;font-family:var(--sv-mono);font-size:.7rem;font-weight:500;padding:1px 6px;border-radius:999px;background:var(--sv-ok);color:#fff}
.sv-card .sv-badge.sv-zero{background:var(--sv-line-strong);color:var(--sv-ink)}

/* results */
.sv-results{margin-top:16px}
.sv-res-h{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--sv-line)}
.sv-res-h h3{font-family:var(--sv-cond);font-weight:600;font-size:1.05rem}
.sv-res-h .sv-sum{color:var(--sv-muted);font-size:.84rem}
.sv-res-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.sv-chk{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--sv-muted);cursor:pointer}
.sv-chk input{accent-color:var(--sv-accent);width:15px;height:15px;margin:0}
.sv-sort{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--sv-muted)}
.sv-sort select{border:1px solid var(--sv-line-strong);border-radius:5px;background:var(--sv-surface);padding:4px 6px;font-size:.8rem}
.sv-famhead{display:grid;grid-template-columns:84px minmax(0,1fr);gap:14px;padding:14px 16px;border-bottom:1px solid var(--sv-line);background:var(--sv-sunk)}
.sv-famhead img{background:#fff;border-radius:6px;padding:4px}
.sv-famhead h4{font-family:var(--sv-cond);font-weight:600;font-size:1.1rem}
.sv-famhead p{font-size:.84rem;color:var(--sv-muted);max-width:80ch}
.sv-famhead .sv-tags{margin-top:6px}
.sv-tags{display:flex;flex-wrap:wrap;gap:4px}
.sv-tag{font-size:.72rem;padding:1px 7px;border-radius:4px;background:var(--sv-surface);border:1px solid var(--sv-line);color:var(--sv-muted)}
.sv-list{display:grid}
.sv-row{display:grid;grid-template-columns:56px minmax(150px,1.3fr) minmax(0,2.4fr) minmax(170px,1.2fr) auto;gap:12px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--sv-line)}
.sv-row:last-child{border-bottom:0}
.sv-row.sv-ko{background:var(--sv-sunk)}
.sv-row.sv-ko .sv-rcode,.sv-row.sv-ko .sv-data{opacity:.6}
.sv-row .sv-rimg{width:56px;height:46px;background:#fff;border-radius:5px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.sv-row .sv-rimg img{max-height:44px;object-fit:contain}
.sv-rcode b{display:block;font-family:var(--sv-cond);font-weight:600;font-size:1rem;line-height:1.15}
.sv-rcode span{display:block;font-size:.74rem;color:var(--sv-muted);line-height:1.3}
.sv-data{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.82rem;min-width:0}
.sv-data div{display:grid;line-height:1.2}
.sv-data small{font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--sv-faint)}
.sv-data strong{font-weight:500;font-variant-numeric:tabular-nums}
.sv-op{display:grid;gap:3px;font-size:.8rem;min-width:0}
.sv-op .sv-opv{font-family:var(--sv-mono);font-size:.84rem}
.sv-pill{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;font-weight:500;padding:1px 7px;border-radius:999px;width:max-content;max-width:100%}
.sv-pill.ok{background:var(--sv-ok-soft);color:var(--sv-ok)}
.sv-pill.warn{background:var(--sv-warn-soft);color:var(--sv-warn)}
.sv-pill.bad{background:var(--sv-bad-soft);color:var(--sv-bad)}
.sv-pill.info{background:var(--sv-accent-soft);color:var(--sv-accent)}
.sv-reg{font-size:.76rem;color:var(--sv-muted)}
.sv-reg b{color:var(--sv-ink);font-weight:600}
.sv-acts{display:flex;gap:6px;justify-content:flex-end}
.sv-btn{border:1px solid var(--sv-line-strong);background:var(--sv-surface);border-radius:var(--sv-r);padding:6px 11px;font-size:.82rem;font-weight:500;white-space:nowrap}
.sv-btn:hover{border-color:var(--sv-accent)}
.sv-btn.pri{background:var(--sv-accent);border-color:var(--sv-accent);color:var(--sv-accent-ink)}
.sv-btn:disabled{opacity:.45;cursor:not-allowed}
.sv-detail{grid-column:1/-1;background:var(--sv-sunk);border:1px solid var(--sv-line);border-radius:8px;padding:12px 14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px 22px}
.sv-detail h5{font-family:var(--sv-cond);font-weight:600;font-size:.85rem;letter-spacing:.03em;margin:0 0 6px}
.sv-kv{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:3px 12px;font-size:.8rem}
.sv-kv dt{color:var(--sv-muted)}
.sv-kv dd{margin:0}
.sv-tbl{overflow-x:auto;grid-column:1/-1}
.sv-tbl table{border-collapse:collapse;width:100%;font-size:.78rem}
.sv-tbl th,.sv-tbl td{border-bottom:1px solid var(--sv-line);padding:4px 8px;text-align:left;white-space:nowrap}
.sv-tbl th{font-weight:600;color:var(--sv-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}
.sv-tbl tfoot td{font-weight:600;border-bottom:0}
.sv-more{padding:12px 16px;display:flex;justify-content:center}
.sv-empty{padding:26px 16px;text-align:center;color:var(--sv-muted);font-size:.9rem}
.sv-app .sv-note{font-size:.76rem;color:var(--sv-muted);padding:10px 16px;border-top:1px solid var(--sv-line)}

/* modal */
.sv-modal-root{position:fixed;inset:0;z-index:100000;background:rgba(10,18,22,.55);display:flex;align-items:center;justify-content:center;padding:max(12px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) max(12px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));border-radius:0;font-size:15px}
.sv-dialog{background:var(--sv-surface);color:var(--sv-ink);border-radius:12px;width:min(1080px,100%);max-height:100%;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.35);display:grid;grid-template-rows:auto 1fr}
.sv-dlg-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 18px;border-bottom:1px solid var(--sv-line);position:sticky;top:0;background:var(--sv-surface);z-index:2}
.sv-dlg-h h3{font-family:var(--sv-cond);font-weight:600;font-size:1.2rem}
.sv-dlg-h p{font-size:.8rem;color:var(--sv-muted)}
.sv-x{border:1px solid var(--sv-line-strong);background:var(--sv-surface);border-radius:6px;width:34px;height:34px;font-size:1.1rem;line-height:1;flex:none}
.sv-dlg-b{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:16px;padding:14px 18px 18px}
.sv-chartbox{min-width:0}
.sv-chart{width:100%;height:auto;display:block;touch-action:none;user-select:none;-webkit-user-select:none}
.sv-chart text{font-family:var(--sv-sans);font-size:11px;fill:var(--sv-muted)}
.sv-chart .ax{stroke:var(--sv-line-strong);stroke-width:1;fill:none}
.sv-chart .gr{stroke:var(--sv-line);stroke-width:1;fill:none}
.sv-chart .c-main{stroke:var(--sv-accent);stroke-width:2.6;fill:none}
.sv-chart .c-2{stroke:var(--sv-c2);stroke-width:1.8;fill:none}
.sv-chart .c-3{stroke:var(--sv-c3);stroke-width:1.8;fill:none}
.sv-chart .c-aux{stroke:var(--sv-faint);stroke-width:1.4;fill:none;stroke-dasharray:5 4}
.sv-chart .c-map{stroke:var(--sv-line-strong);stroke-width:1.2;fill:none}
.sv-chart .c-kw{stroke:var(--sv-c4);stroke-width:1;fill:none;stroke-dasharray:2 3;opacity:.8}
.sv-chart .c-red{stroke:var(--sv-accent);stroke-width:1.6;fill:none;stroke-dasharray:6 4;opacity:.85}
.sv-chart .c-red.c-redsel{stroke-dasharray:3 3;opacity:1;stroke-width:1.8}
.sv-chart .sys{stroke:var(--sv-signal);stroke-width:1.3;fill:none;stroke-dasharray:4 4}
.sv-chart .lbl{font-size:10.5px;font-weight:500}
.sv-chart .lbl-main{fill:var(--sv-accent)}
.sv-chart .lbl-2{fill:var(--sv-c2)}
.sv-chart .lbl-3{fill:var(--sv-c3)}
.sv-chart .lbl-kw{fill:var(--sv-c4);font-size:9.5px}
.sv-chart .lbl-map{font-size:9.5px;fill:var(--sv-faint)}
.sv-chart .m-req{fill:var(--sv-surface);stroke:var(--sv-signal);stroke-width:2}
.sv-chart .m-op{fill:var(--sv-signal);stroke:var(--sv-surface);stroke-width:2}
.sv-chart .m-op2{fill:var(--sv-surface);stroke:var(--sv-c2);stroke-width:2}
.sv-chart .m-sel{fill:var(--sv-accent);stroke:var(--sv-surface);stroke-width:2}
.sv-chart .m-sel-ring{fill:none;stroke:var(--sv-accent);stroke-width:1.5;opacity:.45}
.sv-chart .guide{stroke:var(--sv-signal);stroke-width:1;stroke-dasharray:2 3;opacity:.8}
.sv-chart .guide-sel{stroke:var(--sv-accent);stroke-width:1;stroke-dasharray:2 3}
.sv-chart .tag rect{fill:var(--sv-surface);stroke:var(--sv-line-strong)}
.sv-chart .tag text{fill:var(--sv-ink);font-size:10.5px;font-weight:500}
.sv-chart .hit{fill:transparent;cursor:crosshair}
.sv-chart .l-input.dim{opacity:.4}
.sv-side{display:grid;gap:12px;align-content:start;font-size:.82rem}
.sv-readout{border:1px solid var(--sv-line);border-radius:8px;padding:10px 12px;display:grid;gap:6px}
.sv-readout h5{font-family:var(--sv-cond);font-weight:600;font-size:.85rem;display:flex;align-items:center;gap:6px}
.sv-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
.sv-legend{display:grid;gap:4px;font-size:.76rem;color:var(--sv-muted)}
.sv-legend i{display:inline-block;width:22px;height:0;border-top:2.5px solid var(--sv-accent);vertical-align:middle;margin-right:6px}
.sv-legend i.l2{border-color:var(--sv-c2)} .sv-legend i.l3{border-color:var(--sv-c3)}
.sv-legend i.sys{border-top:1.5px dashed var(--sv-signal)} .sv-legend i.aux{border-top:1.5px dashed var(--sv-faint)}
.sv-legend i.red{border-top:1.5px dashed var(--sv-accent)} .sv-legend i.map{border-top:1.5px solid var(--sv-line-strong)} .sv-legend i.kw{border-top:1.5px dotted var(--sv-c4)}
.sv-chkline{display:flex;gap:6px;align-items:center;font-size:.8rem}

/* breakpoint sul contenitore: funziona anche quando il tema limita la larghezza del contenuto */
.sv-app[data-sv-root]{container-type:inline-size;container-name:svapp}
@container svapp (max-width:940px){
  .sv-top{grid-template-columns:1fr}
  .sv-row{grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"img code acts" "data data data" "op op op"}
  .sv-row .sv-rimg{grid-area:img;width:52px}
  .sv-row .sv-rcode{grid-area:code;min-width:0}
  .sv-row .sv-data{grid-area:data}
  .sv-row .sv-op{grid-area:op}
  .sv-row .sv-acts{grid-area:acts;flex-direction:column}
}
@container svapp (max-width:520px){
  .sv-duty{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .sv-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}
  .sv-famhead{grid-template-columns:60px minmax(0,1fr)}
}
@media (max-width:980px){
  .sv-dlg-b{grid-template-columns:1fr}
}
@media (max-width:520px){
  .sv-app{padding:12px;font-size:14px}
}

/* disclaimer, anteprima scheda, tabella acustica */
.sv-app .sv-disclaimer{font-size:.76rem;color:var(--sv-ink);padding:10px 16px 14px;border-top:1px solid var(--sv-line);background:var(--sv-sunk);border-radius:0 0 10px 10px}
.sv-dialog.sv-prev{width:min(900px,100%);height:100%;grid-template-rows:auto minmax(0,1fr);overflow:hidden}
.sv-prev-b{overflow:auto;background:var(--sv-bg);padding:16px 12px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;overscroll-behavior:contain}
.sv-prev-page{display:block;max-width:100%;height:auto;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.25);border-radius:2px}
.sv-dlg-act .sv-btn{white-space:nowrap}
.sv-oct th,.sv-oct td{text-align:right}
.sv-tbl .sv-oct th{text-transform:none;letter-spacing:0}
.sv-op .sv-pill{white-space:normal;width:auto}
.sv-oct th:first-child,.sv-oct td:first-child{text-align:left}
.sv-oct tr.sv-trb td{font-weight:600}
.sv-oct tfoot td{text-align:left;color:var(--sv-ink)}
.sv-pill:not(.ok):not(.warn):not(.bad):not(.info){background:var(--sv-sunk);color:var(--sv-muted);border:1px solid var(--sv-line)}
@media (max-width:520px){
  .sv-prev .sv-dlg-h{flex-wrap:wrap}
  .sv-prev .sv-dlg-act{width:100%;justify-content:flex-end}
}
@media (prefers-reduced-motion:reduce){.sv-app *{transition:none!important}}

/* >>> voci-capitolato (generato) */
/* pulsanti Capitolato / Computo nelle righe delle taglie */
.sv-acts{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.sv-acts-g{display:flex;gap:6px;justify-content:flex-end}
.sv-btn.sv-btn-doc{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;font-size:.78rem;color:var(--sv-accent);background:var(--sv-surface)}
.sv-btn.sv-btn-doc svg{width:15px;height:15px;flex:none}
.sv-btn.sv-btn-doc:hover:not(:disabled){background:var(--sv-accent-soft);border-color:var(--sv-accent)}
.sv-btn.sv-btn-doc:disabled{color:var(--sv-muted)}
@container svapp (max-width:940px){
  .sv-row{grid-template-columns:52px minmax(0,1fr);grid-template-areas:"img code" "data data" "op op" "acts acts"}
  .sv-row .sv-acts{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start}
  .sv-acts-g{justify-content:flex-start;flex-wrap:wrap}
}
/* ==========================================================================
   Voci di capitolato e di computo metrico estimativo — finestra, anteprima su carta intestata, stampa
   (tutte le regole sono prefissate con .sv-app.sv-voce-root per non interferire con il tema)
   ========================================================================== */
.sv-app.sv-voce-root{
  --vx-ink:var(--sv-ink);--vx-muted:var(--sv-muted);--vx-faint:var(--sv-faint);--vx-line:var(--sv-line);--vx-line2:var(--sv-line-strong);--vx-surface:var(--sv-surface);--vx-sunk:var(--sv-sunk);--vx-bg:var(--sv-bg);--vx-accent:var(--sv-accent);--vx-accent-ink:var(--sv-accent-ink);--vx-accent-soft:var(--sv-accent-soft);--vx-ok:var(--sv-ok);--vx-bad:var(--sv-bad);--vx-scrim:rgba(10,18,22,.55);--vx-font:var(--sv-sans);--vx-cond:var(--sv-cond);
  position:fixed;inset:0;z-index:100000;margin:0;max-width:none;width:auto;border-radius:0;
  display:flex;align-items:stretch;justify-content:center;
  padding:max(12px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) max(12px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));
  background:var(--vx-scrim);font-family:var(--vx-font);font-size:15px;line-height:1.45;color:var(--vx-ink);text-align:left;
  animation:sv-vx-fade .14s ease-out;
}
.sv-app.sv-voce-root.sv-vp{z-index:100002}
@keyframes sv-vx-fade{from{opacity:0}to{opacity:1}}
.sv-app.sv-voce-root *,.sv-app.sv-voce-root *::before,.sv-app.sv-voce-root *::after{box-sizing:border-box}
.sv-app.sv-voce-root :is(h3,h4,h5,p,ul,li,table,th,td,label,span,b,small,article,div){letter-spacing:normal;text-transform:none;text-shadow:none}
.sv-app.sv-voce-root :is(h3,h4,h5,p,ul){margin:0;padding:0}
.sv-app.sv-voce-root :is(button,input,select){font:inherit;margin:0;text-transform:none;letter-spacing:normal;box-shadow:none;text-shadow:none}
.sv-app.sv-voce-root img{max-width:100%;height:auto;border:0;box-shadow:none;border-radius:0;padding:0;background:transparent;display:block}
.sv-app.sv-voce-root :focus-visible{outline:2px solid var(--vx-accent);outline-offset:2px}

/* ---------- finestra della voce */
.sv-app.sv-voce-root .sv-vm-dlg{background:var(--vx-surface);color:var(--vx-ink);border-radius:12px;width:min(1000px,100%);max-height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden;box-shadow:0 22px 60px rgba(0,0,0,.35)}
.sv-app.sv-voce-root .sv-vm-h{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 18px 12px;border-bottom:1px solid var(--vx-line)}
.sv-app.sv-voce-root .sv-vm-ht{min-width:0}
.sv-app.sv-voce-root .sv-vm-eyebrow{font-family:var(--vx-cond);font-weight:600;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--vx-accent)}
.sv-app.sv-voce-root .sv-vm-h h3{font-family:var(--vx-cond);font-weight:600;font-size:20px;line-height:1.2;color:var(--vx-ink);margin-top:2px;text-wrap:balance}
.sv-app.sv-voce-root .sv-vm-sub{font-size:13px;color:var(--vx-muted);margin-top:3px}
.sv-app.sv-voce-root .sv-vx{flex:none;width:36px;height:36px;border:1px solid var(--vx-line2);border-radius:7px;background:var(--vx-surface);color:var(--vx-ink);font-size:20px;line-height:1;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.sv-app.sv-voce-root .sv-vx:hover{border-color:var(--vx-accent);color:var(--vx-accent)}

.sv-app.sv-voce-root .sv-vm-tools{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end;justify-content:space-between;padding:12px 18px;background:var(--vx-sunk);border-bottom:1px solid var(--vx-line)}
.sv-app.sv-voce-root .sv-vm-fields{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-end}
.sv-app.sv-voce-root .sv-vm-f{display:grid;gap:3px;font-size:12px;font-weight:600;color:var(--vx-muted);cursor:default}
.sv-app.sv-voce-root .sv-vm-f small{font-weight:400;color:var(--vx-faint)}
.sv-app.sv-voce-root .sv-vm-f :is(input,select){height:36px;border:1px solid var(--vx-line2);border-radius:6px;background:var(--vx-surface);color:var(--vx-ink);padding:0 9px;font-size:14px;font-weight:500;font-variant-numeric:tabular-nums;width:7.5rem;outline:none}
.sv-app.sv-voce-root .sv-vm-f input[data-vf="qty"]{width:5.5rem}
.sv-app.sv-voce-root .sv-vm-f select{width:7rem;padding-right:4px}
.sv-app.sv-voce-root .sv-vm-f :is(input,select):focus{border-color:var(--vx-accent);box-shadow:0 0 0 3px var(--vx-accent-soft)}
.sv-app.sv-voce-root .sv-vm-amount{font-size:13px;color:var(--vx-muted);align-self:center;padding-bottom:2px;min-width:12ch}
.sv-app.sv-voce-root .sv-vm-amount b{color:var(--vx-ink);font-variant-numeric:tabular-nums}
.sv-app.sv-voce-root .sv-vm-err{color:var(--vx-bad)}
.sv-app.sv-voce-root .sv-vm-acts{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}

.sv-app.sv-voce-root .sv-vbtn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;border:1px solid var(--vx-line2);border-radius:7px;background:var(--vx-surface);color:var(--vx-ink);padding:7px 13px;font-size:14px;font-weight:600;line-height:1.2;white-space:nowrap;cursor:pointer;transition:border-color .12s,background-color .12s,color .12s}
.sv-app.sv-voce-root .sv-vbtn svg{width:18px;height:18px;flex:none}
.sv-app.sv-voce-root .sv-vbtn:hover{border-color:var(--vx-accent);color:var(--vx-accent)}
.sv-app.sv-voce-root .sv-vbtn.sv-pri{background:var(--vx-accent);border-color:var(--vx-accent);color:var(--vx-accent-ink)}
.sv-app.sv-voce-root .sv-vbtn.sv-pri:hover{filter:brightness(1.08);color:var(--vx-accent-ink)}
.sv-app.sv-voce-root .sv-vbtn[disabled]{opacity:.6;cursor:progress}
.sv-app.sv-voce-root .sv-vbtn.sv-vbtn-done{border-color:var(--vx-ok);color:var(--vx-ok);background:var(--vx-surface)}
.sv-app.sv-voce-root .sv-vbtn.sv-pri.sv-vbtn-done{background:var(--vx-ok);border-color:var(--vx-ok);color:#fff}

.sv-app.sv-voce-root .sv-vm-b{overflow:auto;background:var(--vx-bg);padding:18px 14px 26px;overscroll-behavior:contain;min-height:0}
.sv-app.sv-voce-root .sv-vm-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- foglio su carta intestata (sempre chiaro, come la stampa) */
.sv-app.sv-voce-root .sv-vs-page{--ink:#14212a;--mut:#566874;--acc:#006f8e;--ln:#c9d4da;--soft:#eaf3f7;
  background:#fff;color:var(--ink);max-width:794px;margin:0 auto;padding:3.6% 9.75% 2.6%;border-radius:3px;box-shadow:0 2px 14px rgba(0,0,0,.2);
  font-family:"IBM Plex Sans","SV Plex Sans",var(--vx-font);font-size:13px;line-height:1.55;container-type:inline-size;hyphens:auto;-webkit-hyphens:auto}
.sv-app.sv-voce-root .sv-vs-head{width:95.8%;margin:0 0 0 2.1%}
.sv-app.sv-voce-root .sv-vs-body{margin-top:7%}
.sv-app.sv-voce-root .sv-vs-kicker{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.sv-app.sv-voce-root .sv-vs-title{font-family:"IBM Plex Sans","SV Plex Sans",var(--vx-font);font-weight:600;font-size:19px;line-height:1.25;color:var(--ink);margin:4px 0 4px;text-wrap:balance}
.sv-app.sv-voce-root .sv-vs-meta{font-size:12px;color:var(--mut)}
.sv-app.sv-voce-root .sv-vs-h{font-family:"IBM Plex Sans","SV Plex Sans",var(--vx-font);font-size:13.5px;font-weight:600;color:var(--acc);border-bottom:1px solid var(--ln);padding-bottom:3px;margin:18px 0 7px;line-height:1.3}
.sv-app.sv-voce-root .sv-vs-h span{font-variant-numeric:tabular-nums}
.sv-app.sv-voce-root .sv-vs-p{text-align:justify;margin:0 0 7px;color:var(--ink)}
.sv-app.sv-voce-root .sv-vs-p b,.sv-app.sv-voce-root .sv-vs-ul b{font-weight:600;color:var(--ink)}
.sv-app.sv-voce-root .sv-vs-ul{list-style:none;margin:0 0 6px;padding:0}
.sv-app.sv-voce-root .sv-vs-ul li{position:relative;padding-left:16px;margin:0 0 4px;text-align:justify;color:var(--ink);list-style:none;background:none}
.sv-app.sv-voce-root .sv-vs-ul li::before{content:"–";position:absolute;left:1px;top:0;color:var(--acc);font-weight:600}
.sv-app.sv-voce-root .sv-vs-note{font-size:11.5px;color:var(--mut);margin:2px 0 6px;line-height:1.45}
.sv-app.sv-voce-root :is(.sv-vs-kv,.sv-vs-cme){border-collapse:collapse;width:100%;margin:0 0 8px;font-size:12.5px;background:transparent}
.sv-app.sv-voce-root .sv-vs-kv :is(th,td){border:0;border-bottom:1px solid var(--soft);padding:4px 10px 4px 0;text-align:left;vertical-align:top;background:transparent}
.sv-app.sv-voce-root .sv-vs-kv th{width:40%;font-weight:400;color:var(--mut)}
.sv-app.sv-voce-root .sv-vs-kv td{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;padding-right:0}
.sv-app.sv-voce-root .sv-vs-tw{overflow-x:auto;margin:10px 0 4px}
.sv-app.sv-voce-root .sv-vs-cme{min-width:560px;font-size:12px;table-layout:fixed}
.sv-app.sv-voce-root .sv-vs-cme :is(th,td){border:1px solid var(--ln);padding:5px 6px;vertical-align:top;text-align:left;color:var(--ink);background:transparent}
.sv-app.sv-voce-root .sv-vs-cme thead th{background:var(--soft);font-weight:600;font-size:11px;vertical-align:bottom;line-height:1.25;white-space:normal;hyphens:manual}
.sv-app.sv-voce-root .sv-vs-cme .c{text-align:center}
.sv-app.sv-voce-root .sv-vs-cme .r{text-align:right;font-variant-numeric:tabular-nums}
.sv-app.sv-voce-root .sv-vs-cme td.r{white-space:nowrap}
.sv-app.sv-voce-root .sv-vs-cme .d{line-height:1.5;hyphens:auto}
.sv-app.sv-voce-root .sv-vs-cme .d b{font-weight:600}
.sv-app.sv-voce-root .sv-vs-cme tfoot td{font-weight:600}
.sv-app.sv-voce-root .sv-vs-foot{font-size:9.5px;color:var(--mut);margin:30px 0 6px;line-height:1.35}
.sv-app.sv-voce-root .sv-vs-footimg{width:95.8%;margin:0 0 0 2.1%}

/* ---------- anteprima di stampa */
.sv-app.sv-voce-root .sv-vp-dlg{background:var(--vx-surface);color:var(--vx-ink);border-radius:12px;width:min(900px,100%);height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;box-shadow:0 22px 60px rgba(0,0,0,.35)}
.sv-app.sv-voce-root .sv-vp-h{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--vx-line)}
.sv-app.sv-voce-root .sv-vp-h h3{font-family:var(--vx-cond);font-weight:600;font-size:19px;color:var(--vx-ink)}
.sv-app.sv-voce-root .sv-vp-h p{font-size:13px;color:var(--vx-muted)}
.sv-app.sv-voce-root .sv-vp-act{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.sv-app.sv-voce-root .sv-vp-b{overflow:auto;background:var(--vx-bg);padding:16px 12px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;overscroll-behavior:contain}
.sv-app.sv-voce-root .sv-vp-page{width:min(794px,100%);flex:none;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.25);border-radius:2px;line-height:0}
.sv-app.sv-voce-root .sv-vp-page svg{display:block;width:100%;height:auto}

@media (max-width:640px){
  .sv-app.sv-voce-root{padding:6px}
  .sv-app.sv-voce-root .sv-vm-h,.sv-app.sv-voce-root .sv-vm-tools{padding-left:12px;padding-right:12px}
  .sv-app.sv-voce-root .sv-vm-h h3{font-size:17px}
  .sv-app.sv-voce-root .sv-vm-acts{width:100%;margin-left:0}
  .sv-app.sv-voce-root .sv-vm-acts .sv-vbtn{flex:1 1 auto}
  .sv-app.sv-voce-root .sv-vm-fields{width:100%}
  .sv-app.sv-voce-root .sv-vm-f{flex:1 1 40%}
  .sv-app.sv-voce-root .sv-vm-f :is(input,select),.sv-app.sv-voce-root .sv-vm-f input[data-vf="qty"]{width:100%}
  .sv-app.sv-voce-root .sv-vm-b{padding:10px 6px 16px}
  .sv-app.sv-voce-root .sv-vs-page{padding:4% 5% 3%;font-size:12.5px}
  .sv-app.sv-voce-root .sv-vs-kv th{width:46%}
  .sv-app.sv-voce-root .sv-vp-h{flex-wrap:wrap}
  .sv-app.sv-voce-root .sv-vp-act{width:100%}
  .sv-app.sv-voce-root .sv-vp-act .sv-vbtn{flex:1 1 auto}
}
@media (prefers-reduced-motion:reduce){.sv-app.sv-voce-root{animation:none}.sv-app.sv-voce-root .sv-vbtn{transition:none}}
/* <<< voci-capitolato */

/* >>> v2: calcolo sul server */
.sv-app.sv-busy .sv-list{opacity:.55;transition:opacity .15s}
.sv-app.sv-busy .sv-res-h .sv-sum::before{content:"";display:inline-block;width:.8em;height:.8em;margin-right:.45em;vertical-align:-.08em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sv-spin .7s linear infinite}
.sv-app .sv-detail-slot{min-height:40px}
@keyframes sv-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.sv-app.sv-busy .sv-res-h .sv-sum::before{animation:none}}
/* <<< v2 */

/* 2.1.0 — dati arrivati da un progetto della suite HVAC */
.sv-app .sv-hvac{margin:0 0 12px;padding:10px 14px;border:1px solid var(--sv-accent);border-left-width:4px;border-radius:var(--sv-r);background:var(--sv-accent-soft);color:var(--sv-ink);font-size:14px;line-height:1.45}
.sv-app .sv-hvac b{color:var(--sv-accent);margin-right:4px}
.sv-app .sv-hvac small{color:var(--sv-muted)}
.sv-app .sv-hvac-err{border-color:var(--sv-bad);background:var(--sv-bad-soft)}
