: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;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}
