:root{
  --navy:#0e2a47; --navy2:#16324f; --blu:#1d4f86; --azz:#3f7fc4;
  --rosso:#e2263a; --rosso-sc:#b91c2e; --sole:#f6b043; --verde:#2e9e5b;
  --bg:#f2f5f9; --carta:#fff; --testo:#1b2733; --muted:#66768a; --linea:#dde4ec;
  --r:10px; --ombra:0 1px 2px rgba(14,42,71,.06),0 6px 20px rgba(14,42,71,.07);
}
*{box-sizing:border-box}
html,body{margin:0}
body{font:14px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;color:var(--testo);background:var(--bg)}
a{color:var(--blu)}
h1,h2,h3{margin:0 0 .4em;font-weight:650;letter-spacing:-.01em}
h2{font-size:17px}
h3{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}

/* header */
.topbar{background:#fff;border-bottom:1px solid var(--linea);position:sticky;top:0;z-index:20}
.topbar .in{max-width:1500px;margin:0 auto;display:flex;align-items:center;gap:22px;padding:6px 20px}
.topbar img{height:52px;display:block}
.topbar nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.topbar nav a{padding:8px 12px;border-radius:8px;text-decoration:none;color:var(--testo);font-weight:550}
.topbar nav a:hover{background:var(--bg)}
.topbar nav a.on{background:var(--navy);color:#fff}
.topbar .user{color:var(--muted);font-size:13px;white-space:nowrap}
.topbar .user a{margin-left:10px}

.banner{background:url(bg.svg) center 64%/cover no-repeat,var(--navy);color:#fff;position:relative}
.banner::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,42,71,.92) 0%,rgba(14,42,71,.55) 55%,rgba(14,42,71,.1))}
.banner .in{position:relative;z-index:1;max-width:1500px;margin:0 auto;padding:26px 20px 24px}
.banner h1{font-size:24px;margin:0}
.banner p{margin:4px 0 0;opacity:.85}

main{max-width:1500px;margin:0 auto;padding:20px}

/* flash */
.flash{padding:10px 14px;border-radius:8px;margin:0 0 12px;border:1px solid}
.flash.ok{background:#e9f7ef;border-color:#bfe5cf;color:#1d6b40}
.flash.err{background:#fdecee;border-color:#f6c3c9;color:#9b1626}
.flash.warn{background:#fff6e5;border-color:#f6dcaa;color:#8a5a00}

/* cards */
.card{background:var(--carta);border:1px solid var(--linea);border-radius:var(--r);box-shadow:var(--ombra);padding:18px;margin-bottom:16px}
.card.sez{border-top:4px solid var(--blu)}
.card.sez.cli{border-top-color:var(--rosso)}
.card.sez.inst{border-top-color:var(--sole)}
.card .hd{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
.grid{display:grid;gap:12px 16px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.grid .w2{grid-column:span 2}
.cols{display:grid;grid-template-columns:1fr 360px;gap:16px;align-items:start}
@media(max-width:1050px){.cols{grid-template-columns:1fr}.grid .w2{grid-column:auto}}

label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.03em}
label .req{color:var(--rosso)}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],input[type=search],select,textarea{
  width:100%;padding:9px 10px;border:1px solid #c9d3de;border-radius:8px;font:inherit;background:#fff;color:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(63,127,196,.35);border-color:var(--azz)}
textarea{min-height:70px;resize:vertical}
.hint{font-size:12px;color:var(--muted);margin-top:3px}
.radio{display:flex;gap:14px;padding-top:6px}
.radio label{display:flex;align-items:center;gap:6px;text-transform:none;font-size:14px;color:var(--testo);font-weight:500;letter-spacing:0;margin:0}

.oppure{display:flex;align-items:center;gap:10px;color:var(--muted);font-weight:700;font-size:12px;margin:14px 0}
.oppure::before,.oppure::after{content:"";flex:1;height:1px;background:var(--linea)}

.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:8px;border:1px solid transparent;
  font:inherit;font-weight:600;cursor:pointer;text-decoration:none;background:var(--navy);color:#fff;white-space:nowrap}
.btn:hover{filter:brightness(1.12)}
.btn.rosso{background:var(--rosso)}
.btn.sec{background:#fff;color:var(--navy);border-color:#c9d3de}
.btn.ghost{background:transparent;color:var(--rosso-sc);border-color:transparent}
.btn.sm{padding:5px 10px;font-size:13px}
.azioni{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.barra-azioni{position:sticky;bottom:10px;z-index:15;background:rgba(255,255,255,.97);border:1px solid var(--linea);border-radius:var(--r);box-shadow:var(--ombra);padding:12px 16px;margin:0;display:flex;gap:10px;justify-content:flex-end;backdrop-filter:blur(4px)}

/* upload */
.up{border:1.5px dashed #b9c7d6;border-radius:9px;padding:12px;background:#fafcfe}
.up.ok{border-style:solid;border-color:#9fd6b5;background:#f3fbf6}
.up .t{font-weight:600;margin-bottom:6px;display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.up .t .chip{flex:none}
.up input[type=file]{width:100%;font-size:13px}
.up ul{list-style:none;margin:8px 0 0;padding:0}
.up li{display:flex;align-items:center;gap:6px;font-size:13px;padding:3px 0;border-top:1px solid #edf1f5}
.up li a.n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up li form{margin:0}
.x{border:0;background:none;color:var(--rosso-sc);cursor:pointer;font-size:16px;line-height:1;padding:0 4px}

/* badge / chip */
.chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;background:#e8eef5;color:var(--navy2);white-space:nowrap}
.chip.r{background:#fdecee;color:var(--rosso-sc)}
.chip.g{background:#e3f5ea;color:#1d6b40}
.chip.y{background:#fff3dc;color:#8a5a00}
.chip.b{background:#e4eefa;color:var(--blu)}

/* KPI */
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.kpi a{background:#fff;border:1px solid var(--linea);border-radius:var(--r);padding:12px 14px;text-decoration:none;color:var(--testo);box-shadow:var(--ombra);position:relative;overflow:hidden}
.kpi a::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c,#c9d3de)}
.kpi a.on{outline:2px solid var(--azz)}
.kpi .n{font-size:26px;font-weight:700;line-height:1.1}
.kpi .l{font-size:12px;color:var(--muted);font-weight:600}

/* filtri */
.filtri{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:12px}
.filtri>div{min-width:140px}
.filtri .q{flex:1;min-width:220px}
.seg{display:inline-flex;border:1px solid #c9d3de;border-radius:8px;overflow:hidden;background:#fff}
.seg a{padding:8px 12px;text-decoration:none;color:var(--testo);font-weight:600;font-size:13px;border-right:1px solid #c9d3de}
.seg a:last-child{border-right:0}
.seg a.on{background:var(--navy);color:#fff}

/* tabella cruscotto */
.tabwrap{overflow:auto;max-height:calc(100vh - 250px);border:1px solid var(--linea);border-radius:var(--r);background:#fff;box-shadow:var(--ombra)}
table.crus{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:13px}
.crus th{position:sticky;top:0;background:var(--navy2);color:#fff;font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:650;padding:8px 6px;text-align:left;z-index:3;white-space:nowrap}
.crus td{padding:0;border-bottom:1px solid #edf1f5;border-right:1px solid #f1f4f8;white-space:nowrap;height:34px}
.crus td.c{padding:5px 8px}
.crus tr:hover td{background:#f6f9fd}
.crus .stk{position:sticky;left:0;z-index:2;background:#fff;min-width:230px;max-width:260px;border-right:2px solid var(--linea)}
.crus th.stk{z-index:4;background:var(--navy)}
.crus .stk a{font-weight:650;text-decoration:none;color:var(--navy);display:block;overflow:hidden;text-overflow:ellipsis}
.crus .stk small{color:var(--muted);font-size:11px}
.crus td.ed{min-width:84px;cursor:text;padding:5px 7px;color:#22303d}
.crus td.ed:hover{background:#fff9e8 !important;box-shadow:inset 0 0 0 1px #f3d79a}
.crus td.ed.vuoto{color:#c4cdd6}
.crus td.ed.vuoto::after{content:"·"}
.crus td.ed input{width:100%;border:0;outline:2px solid var(--azz);border-radius:4px;padding:3px 4px;font:inherit}
.crus td.ed.salvato{animation:salv 1.2s}
@keyframes salv{0%{background:#c9f0d6}100%{background:transparent}}
.crus tr.arch td{opacity:.7}
.crus td.note{min-width:180px;max-width:280px;overflow:hidden;text-overflow:ellipsis}
.crus th.gr-a{background:#1d4f86}
.crus th.gr-b{background:#7a5a12}

/* stepper fase */
.steps{display:flex;align-items:center;gap:0}
.steps i{width:14px;height:14px;border-radius:50%;background:#dfe6ee;display:block;position:relative;flex:none}
.steps i+i{margin-left:12px}
.steps i+i::before{content:"";position:absolute;right:14px;top:6px;width:12px;height:2px;background:#dfe6ee}
.steps i.f{background:var(--verde)}
.steps i.f+i.f::before{background:var(--verde)}
.steps i.cur{box-shadow:0 0 0 3px rgba(46,158,91,.22)}
.fase-td{padding:5px 10px !important;min-width:210px}
.fase-td span{display:block;font-size:11px;color:var(--muted);margin-top:2px}

.stepper-big{display:flex;gap:0;margin:6px 0 4px}
.stepper-big div{flex:1;text-align:center;position:relative;font-size:12px;color:var(--muted);font-weight:600}
.stepper-big div b{display:block;width:30px;height:30px;line-height:30px;border-radius:50%;margin:0 auto 6px;background:#e3e9f0;color:#7b8a9b;position:relative;z-index:1}
.stepper-big div::before{content:"";position:absolute;top:15px;left:-50%;width:100%;height:3px;background:#e3e9f0}
.stepper-big div:first-child::before{display:none}
.stepper-big div.f b{background:var(--verde);color:#fff}
.stepper-big div.f::before{background:var(--verde)}
.stepper-big div.f{color:var(--testo)}

/* liste */
table.lista{width:100%;border-collapse:collapse}
.lista th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:left;padding:8px;border-bottom:2px solid var(--linea)}
.lista td{padding:9px 8px;border-bottom:1px solid #edf1f5;vertical-align:middle}
.lista tr:hover td{background:#f8fafc}

.check li{margin:3px 0}
.check{margin:0;padding-left:18px}
.okbox{color:#1d6b40;font-weight:600}
.muted{color:var(--muted)}
.mil{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.mil input{padding:7px 8px}

/* nuove pratiche */
.avviso{display:flex;gap:12px;align-items:flex-start;background:linear-gradient(90deg,#fff4e0,#fff);border:1px solid #f6d79e;border-left:5px solid var(--sole);border-radius:var(--r);padding:12px 16px;margin-bottom:16px}
.avviso ul{margin:4px 0 0;padding-left:18px}

/* login */
body.login{min-height:100vh;background:url(bg.svg) center bottom/cover no-repeat,var(--navy);display:flex;align-items:center;justify-content:center;padding:20px}
.login-box{width:100%;max-width:390px;background:#fff;border-radius:16px;padding:28px 30px 24px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.login-box img{display:block;margin:0 auto 6px;height:120px}
.login-box h1{text-align:center;font-size:16px;color:var(--muted);font-weight:600;margin:0 0 20px}
.login-box .f{margin-bottom:12px}
.login-box .btn{width:100%;justify-content:center;padding:11px}
.login-foot{text-align:center;font-size:12px;color:var(--muted);margin-top:16px}

.vuota{text-align:center;padding:40px;color:var(--muted)}
.pill-count{background:var(--rosso);color:#fff;border-radius:999px;padding:0 7px;font-size:11px;margin-left:4px}

/* iter semplificato / ordinario */
.tipi{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.tipi a{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:var(--r);background:#fff;border:1px solid var(--linea);text-decoration:none;color:var(--testo);box-shadow:var(--ombra)}
.tipi a span{background:#e8eef5;border-radius:999px;padding:1px 9px;font-weight:700;font-size:12px}
.tipi a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.tipi a.on span{background:rgba(255,255,255,.2);color:#fff}
.tipi a.s b::before,.tipi a.o b::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;background:var(--verde)}
.tipi a.o b::before{background:var(--azz)}
button.iter{border:0;border-radius:999px;padding:2px 9px;font:inherit;font-size:11.5px;font-weight:650;cursor:pointer;background:#e3f5ea;color:#1d6b40}
button.iter.o{background:#e4eefa;color:var(--blu)}
button.iter:hover{filter:brightness(.95)}
.crus td.na{background:repeating-linear-gradient(135deg,#f4f6f9 0 6px,#eef1f5 6px 12px);color:#9aa8b7;padding:5px 7px;min-width:70px}
.crus tr:hover td.na{background:repeating-linear-gradient(135deg,#eef2f7 0 6px,#e7ecf2 6px 12px)}
.mil .fuori{opacity:.55}
.iter-scelta{display:flex;gap:8px;margin-bottom:12px}
.iter-scelta label{flex:1;display:block;border:1.5px solid #c9d3de;border-radius:9px;padding:9px 10px;cursor:pointer;text-transform:none;letter-spacing:0;color:var(--testo);font-size:13.5px;margin:0}
.iter-scelta input{margin-right:6px}
.iter-scelta label:has(input:checked){border-color:var(--navy);background:#eef3f9}
.iter-scelta small{display:block;color:var(--muted);font-weight:400;font-size:11.5px;margin-top:2px}
.tipi a.v b::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;background:var(--sole)}
.iter.v{display:inline-block;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:650;background:#fff3dc;color:#8a5a00}
.crus th.gr-v{background:#8a5a00}
.card.sez.volt{border-top-color:var(--navy)}
.parti{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1300px){.parti{grid-template-columns:1fr}}
.grid.g2{grid-template-columns:1fr 1fr}
.grid.g2 .w2{grid-column:span 2}
.pw{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pw input{flex:1;min-width:150px}
.pw code{background:#fff3dc;padding:4px 8px;border-radius:6px;font-size:13px}
.privacy-ok{display:flex;gap:10px;align-items:flex-start;flex:1;text-transform:none;letter-spacing:0;font-weight:500;font-size:12.5px;color:var(--testo);margin:0;max-width:640px;line-height:1.4}
.privacy-ok input{margin-top:3px;width:18px;height:18px;flex:none}
.barra-azioni{flex-wrap:wrap;align-items:center}
.informativa{white-space:pre-wrap;font-size:13.5px;line-height:1.55;margin-top:14px}
.scelta{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;max-width:900px}
.scelta a.card{text-decoration:none;color:var(--testo);display:flex;flex-direction:column;gap:6px;padding:24px;transition:transform .15s}
.scelta a.card:hover{transform:translateY(-2px);border-color:var(--azz)}
.scelta .ico{font-size:34px}
.scelta .btn{align-self:flex-start;margin-top:8px}
.portale-tab td.date{font-size:12px;line-height:1.5;min-width:180px}
.portale-tab td.date span{display:block;white-space:nowrap}
.portale-tab td.date em{font-style:normal;color:var(--muted);display:inline-block;min-width:118px}
.card.firma{border-top:4px solid #7b4fc9}
.card.firma.ditta{background:linear-gradient(180deg,#f7f3ff,#fff 60%)}
.docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.doc-firma{border:1.5px solid #d9cdf3;border-radius:9px;padding:10px 12px;margin-bottom:8px;background:#fff}
.docs-grid .doc-firma{margin:0}
.doc-firma.ok{border-color:#9fd6b5;background:#f3fbf6}
.doc-firma .r1{display:flex;justify-content:space-between;align-items:center;gap:8px}
.doc-firma .attesa{color:#6b3fb8;font-weight:600;font-size:12.5px;margin-top:4px}
.doc-firma .firm{color:#1d6b40;font-size:12.5px;margin-top:4px}
.doc-firma input[type=file]{width:100%;font-size:13px}

/* ===================== GESTIONALE ===================== */
.nav-grp{display:flex;gap:2px;padding:3px;border-radius:10px;align-items:center}
.nav-grp.g{background:#fff6e6;border:1px solid #f6dcaa}
.nav-grp.g a.on{background:#8a5a00}
.nav-grp a.rap{background:var(--rosso);color:#fff}
.nav-grp a.rap:hover{background:var(--rosso-sc)}
@media(max-width:900px){
  .topbar .in{flex-wrap:wrap;gap:6px;padding:6px 10px}
  .topbar img{height:38px}
  .topbar nav{order:3;flex-basis:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
  .topbar nav a{padding:7px 9px;font-size:13.5px;white-space:nowrap}
  .nav-grp:not(.on){display:none}
  .banner .in{padding:14px 12px}
  .banner h1{font-size:19px}
  main{padding:12px}
  .card{padding:14px}
}
.bar-g{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:12px}
.tab-g{width:100%;border-collapse:collapse;font-size:13.5px}
.tab-g th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:left;padding:8px;border-bottom:2px solid var(--linea);white-space:nowrap}
.tab-g td{padding:9px 8px;border-bottom:1px solid #edf1f5;vertical-align:top}
.tab-g tr:hover td{background:#fafbfd}
.tab-g td.n,.tab-g th.n{text-align:right;white-space:nowrap}
.tabscroll{overflow-x:auto}
.costi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.costi div{background:#f6f8fb;border-radius:9px;padding:10px 12px}
.costi b{display:block;font-size:18px}
.costi small{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.costi .tot{background:var(--navy);color:#fff}
.costi .tot small{color:#c9d6e6}
.costi .pos{background:#e3f5ea}.costi .neg{background:#fdecee}
.stato-l{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:650;background:#e8eef5}
.stato-l.in_corso{background:#e4eefa;color:var(--blu)}.stato-l.aperto{background:#fff3dc;color:#8a5a00}
.stato-l.sospeso{background:#fdecee;color:var(--rosso-sc)}.stato-l.chiuso{background:#e3f5ea;color:#1d6b40}
.stato-l.fatturato{background:#efe6fb;color:#5b2fa8}
.stato-l.accettato{background:#e3f5ea;color:#1d6b40}.stato-l.inviato{background:#e4eefa;color:var(--blu)}
.stato-l.rifiutato,.stato-l.scaduto{background:#fdecee;color:var(--rosso-sc)}.stato-l.bozza{background:#eef1f5;color:#4b5a6b}
.stato-l.da_ordinare{background:#fdecee;color:var(--rosso-sc)}.stato-l.ordinato{background:#fff3dc;color:#8a5a00}
.stato-l.arrivato{background:#e3f5ea;color:#1d6b40}

/* rapportino (mobile first) */
.rap-form{max-width:760px;margin:0 auto}
.rap-form .card{margin-bottom:12px}
.rap-form h2{font-size:16px;display:flex;align-items:center;gap:8px}
.rap-form input,.rap-form select,.rap-form textarea{font-size:16px}
.righe .riga{display:grid;grid-template-columns:1fr 70px 78px 34px;gap:6px;margin-bottom:6px;align-items:center}
.righe.prezzi .riga{grid-template-columns:1fr 64px 70px 80px 34px}
.righe .riga input,.righe .riga select{padding:9px 7px}
.righe .x{font-size:22px}
.btn-add{background:none;border:1.5px dashed #b9c7d6;border-radius:8px;color:var(--blu);font:inherit;font-weight:600;padding:9px;width:100%;cursor:pointer}
.ore .riga{display:grid;grid-template-columns:1fr 90px 34px;gap:6px;margin-bottom:6px}
.gps{border:2px solid #cfe0f3;background:#f3f8fe;border-radius:12px;padding:14px}
.gps .esito{font-size:15px;margin-top:8px}
.gps .esito b{font-size:20px}
.gps.ok{border-color:#9fd6b5;background:#f3fbf6}
.btn.gps-btn{width:100%;justify-content:center;padding:13px;font-size:16px;background:var(--blu)}
.salva-rap{position:sticky;bottom:0;z-index:15;background:rgba(242,245,249,.96);padding:10px 0;display:flex;gap:8px;backdrop-filter:blur(4px)}
.salva-rap .btn{flex:1;justify-content:center;padding:14px;font-size:16px}
.foto-grid{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.foto-grid a img{width:84px;height:84px;object-fit:cover;border-radius:8px;border:1px solid var(--linea)}
.nuovo-box{background:#fff9ee;border:1px dashed #f0c46d;border-radius:9px;padding:10px;margin-top:10px}
.mini-kpi{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.mini-kpi a,.mini-kpi div{flex:1;min-width:130px;background:#fff;border:1px solid var(--linea);border-radius:var(--r);padding:10px 14px;text-decoration:none;color:var(--testo);box-shadow:var(--ombra)}
.mini-kpi b{display:block;font-size:22px}
.mini-kpi small{color:var(--muted);font-weight:600;font-size:12px}
.cat-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.cat-tabs a{padding:8px 14px;border-radius:999px;background:#fff;border:1px solid var(--linea);text-decoration:none;color:var(--testo);font-weight:600;font-size:13px}
.cat-tabs a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.stat-cat{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}
.stat-cat div{background:#fff;border:1px solid var(--linea);border-radius:var(--r);padding:12px 14px;box-shadow:var(--ombra);border-top:4px solid var(--c)}
.stat-cat b{font-size:20px;display:block}
.stat-cat small{color:var(--muted)}
.check-sel td:first-child{width:30px}
.diff{font-size:12px;color:var(--muted)}
.diff ins{background:#e3f5ea;text-decoration:none;padding:0 3px;border-radius:3px;color:#1d6b40}

.rap-form .grid>div{min-width:0}.rap-form input[type=date],.rap-form input[type=time]{min-width:0;width:100%}
/* preventivi a sezioni */
.pv-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;border-bottom:2px solid var(--linea);padding-bottom:8px}
.pv-tabs a{padding:9px 14px;border-radius:9px 9px 0 0;text-decoration:none;color:var(--testo);font-weight:650;font-size:14px}
.pv-tabs a:hover{background:#fff}
.pv-tabs a.on{background:var(--navy);color:#fff}
.c-clima{--cc:#2eb0c9}.c-elettrico{--cc:#3f7fc4}.c-fv{--cc:#f6b043}.c-pergola{--cc:#7b4fc9}
.pv-tabs a.on.c-clima,.pv-tabs a.on.c-elettrico,.pv-tabs a.on.c-fv,.pv-tabs a.on.c-pergola{background:var(--cc)}
.card.sez.c-clima,.card.sez.c-elettrico,.card.sez.c-fv,.card.sez.c-pergola{border-top-color:var(--cc)}
.pv-sezioni{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.pv-sez{border-top:5px solid var(--cc)}
.pv-sez h2 a{text-decoration:none;color:var(--testo)}
.pv-num{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pv-num div{background:#f6f8fb;border-radius:8px;padding:8px 10px}
.pv-num b{display:block;font-size:20px}.pv-num small{color:var(--muted);font-size:11px}
.pv-riga{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid #edf1f5;font-size:13px}
.pv-riga a{text-decoration:none;color:var(--testo);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-riga span{white-space:nowrap}
.cl-riga{display:grid;grid-template-columns:1.6fr 1.3fr 1fr 1fr 60px 30px;gap:6px;margin-bottom:6px;align-items:center}
@media(max-width:800px){.cl-riga{grid-template-columns:1fr 1fr;}.cl-riga .x{justify-self:end}}
.cl-info{margin-top:8px;padding:8px 12px;background:#f3f8fe;border-radius:8px;font-size:13.5px}
.cl-info:empty{display:none}
.cl-info .avv{color:#9b1626;margin-top:4px}
.chips-check{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.chips-check label{display:flex;align-items:center;gap:6px;border:1.5px solid #c9d3de;border-radius:999px;padding:6px 12px;text-transform:none;letter-spacing:0;font-size:13px;color:var(--testo);font-weight:500;cursor:pointer;margin:0}
.chips-check label:has(input:checked){border-color:var(--navy);background:#eef3f9}
.pg-ch select{min-width:140px;padding:6px}.pg-ch input{padding:6px}
.righe-prev textarea{min-height:36px;padding:7px 8px;resize:vertical}
.righe-prev input,.righe-prev select{padding:7px 6px}
.righe-prev td{vertical-align:top}
.righe-prev .imp{padding-top:16px;font-weight:600}
.lettura{margin:8px 0;padding:8px 12px;border-radius:8px;background:#f3f8fe;font-size:13.5px}
.lettura.ok{background:#e9f7ef;color:#1d6b40}.lettura.warn{background:#fff6e5;color:#8a5a00}
input.auto{background:#fffbe6;border-color:#f0c46d}
.c-sicurezza{--cc:#d9473b}
.pv-tabs a.on.c-sicurezza{background:var(--cc)}
.card.sez.c-sicurezza{border-top-color:var(--cc)}
.sic-box{border:1px solid var(--linea);border-radius:10px;padding:12px 14px;margin-top:12px;background:#fcfdfe}
.sic-box h3{margin-top:0}
.sic-riga{display:grid;grid-template-columns:2fr 1fr 64px 30px;gap:6px;margin-bottom:6px;align-items:center}
@media(max-width:800px){.sic-riga{grid-template-columns:1fr 64px 30px}.sic-riga input[type=text]{grid-column:1/-1;order:3}}
.art-riga{display:grid;grid-template-columns:1.3fr 1.2fr 70px 76px;gap:6px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed var(--linea);align-items:center}
.art-riga .w-mat{grid-column:1/3}
.art-riga input[name=art_costo_mat]{grid-column:3/5}
.art-riga .x{grid-column:4;grid-row:1;justify-self:end;display:none}
.art-riga{position:relative}.art-riga>.x{display:block;position:absolute;right:-8px;top:-10px}
.manc-schede{display:flex;flex-wrap:wrap;gap:6px}
.manc-schede span{font-size:12px;background:#f2f5f9;border-radius:999px;padding:3px 10px}
.modulo-box{display:flex;gap:14px;align-items:center;flex-wrap:wrap;border-left:5px solid var(--azz);background:linear-gradient(90deg,#eef5fd,#fff 70%)}
.modulo-box .mb-ico{font-size:28px}

/* ===================== WEB-APP TELEFONO ===================== */
body.app{background:var(--bg);padding-bottom:calc(70px + env(safe-area-inset-bottom))}
.m-top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:8px;background:var(--navy);color:#fff;
  padding:calc(8px + env(safe-area-inset-top)) 10px 8px;min-height:52px}
.m-top .m-back{color:#fff;text-decoration:none;font-size:30px;line-height:1;width:32px;text-align:center}
.m-top .m-tit{flex:1;font-weight:700;font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-top .m-logo img{height:34px;width:34px;border-radius:8px;display:block;background:#fff}
.m-main{max-width:760px;margin:0 auto;padding:12px}
.m-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;background:#fff;border-top:1px solid var(--linea);
  padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -4px 16px rgba(14,42,71,.08)}
.m-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 8px;font-size:11.5px;font-weight:600;color:var(--muted);text-decoration:none}
.m-nav a span{font-size:20px;line-height:1.1}
.m-nav a.on{color:var(--navy)}
.m-nav a.big span{background:var(--rosso);color:#fff;border-radius:50%;width:42px;height:42px;display:flex;align-items:center;justify-content:center;font-size:26px;margin-top:-18px;box-shadow:0 4px 12px rgba(226,38,58,.35)}
body.app .salva-rap{bottom:calc(64px + env(safe-area-inset-bottom))}
body.app .rap-form .card{border-radius:14px}
body.app input,body.app select,body.app textarea{font-size:16px}
.m-big{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,var(--rosso),#b91c2e);color:#fff;border-radius:16px;padding:18px;text-decoration:none;box-shadow:0 8px 20px rgba(226,38,58,.25);margin-bottom:14px}
.m-big span{font-size:34px;line-height:1;background:rgba(255,255,255,.2);border-radius:12px;width:52px;height:52px;display:flex;align-items:center;justify-content:center}
.m-big b{display:block;font-size:19px}.m-big small{opacity:.85}
.m-kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.m-kpi div{background:#fff;border:1px solid var(--linea);border-radius:12px;padding:10px;text-align:center}
.m-kpi b{display:block;font-size:22px}.m-kpi small{font-size:11px;color:var(--muted);font-weight:600}
.m-sez{display:flex;justify-content:space-between;align-items:baseline;margin:6px 2px 8px}
.m-sez h2{margin:0;font-size:16px}
.m-cerca{margin-bottom:10px;padding:11px 12px !important;border-radius:12px !important}
.m-lista{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.m-lav{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--linea);border-radius:12px;padding:12px 14px;text-decoration:none;color:var(--testo)}
.m-lav:active{background:#f3f8fe}
.m-lav b{display:block;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-lav small{display:block;color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-go{font-size:22px;color:var(--rosso);font-weight:700;width:36px;height:36px;border-radius:50%;background:#fdecee;display:flex;align-items:center;justify-content:center;flex:none}
.m-install{width:100%;justify-content:center;margin-bottom:12px}
.m-foot{text-align:center;margin:20px 0}
body.app .rap-form .card.sez label{margin-top:2px}
