:root{--navy: #0f2a44;--navy-2: #163a5c;--teal: #1f9d8b;--teal-soft: #e3f4f1;--bg: #f3f5f8;--card: #ffffff;--text: #1c2733;--muted: #64748b;--line: #e2e8f0;--line-2: #cbd5e1;--pos: #15803d;--pos-soft: #e8f5ec;--neg: #b91c1c;--neg-soft: #fdecec;--warn: #b45309;--warn-soft: #fef3e2;--info: #1d4ed8;--info-soft: #e8efff;--radius: 10px;--shadow: 0 1px 2px rgba(15, 42, 68, .06), 0 1px 1px rgba(15, 42, 68, .04);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px}a{color:var(--info);text-decoration:none}button{font:inherit}h1{font-size:22px;margin:0 0 4px;font-weight:650;letter-spacing:-.01em}h2{font-size:16px;margin:0 0 12px;font-weight:650}h3{font-size:14px;margin:0 0 8px;font-weight:650}.muted{color:var(--muted)}.small{font-size:12px}.nowrap{white-space:nowrap}.right{text-align:right}.pos{color:var(--pos)}.neg{color:var(--neg)}.warn{color:var(--warn)}.app{display:flex;min-height:100vh}.sidebar{width:232px;flex-shrink:0;background:var(--navy);color:#cfe0f0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{padding:18px 18px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.brand b{color:#fff;font-size:15px;display:block}.brand span{font-size:12px;color:#8fb3d4}.nav{padding:10px 8px;overflow-y:auto;flex:1}.nav .gruppo{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#6f93b5;padding:12px 10px 4px}.nav a{display:flex;align-items:center;gap:10px;color:#cfe0f0;padding:8px 10px;border-radius:7px;margin:1px 0}.nav a:hover{background:var(--navy-2);color:#fff}.nav a.active{background:var(--teal);color:#fff}.nav a .badge{margin-left:auto;background:#f59e0b;color:#1c2733;border-radius:9px;font-size:11px;padding:0 6px;font-weight:700}.sidebar .piede{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#8fb3d4}.sidebar .piede button{background:none;border:0;color:#cfe0f0;cursor:pointer;padding:0;text-decoration:underline}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;padding:12px 24px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;flex-wrap:wrap}.topbar .spazio{flex:1}.topbar .aggiornamento{font-size:12px;color:var(--muted)}.contenuto{padding:20px 24px 40px;max-width:1480px;width:100%}.titolo-pagina{display:flex;align-items:flex-end;gap:16px;margin-bottom:16px;flex-wrap:wrap}.titolo-pagina .spazio{flex:1}.topbar .burger{display:none}.griglia>.card+.card{margin-top:0}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:16px}.griglia{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}.sp{margin-top:16px}.kpi{padding:14px 16px}.kpi .etichetta{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.kpi .valore{font-size:24px;font-weight:700;margin:4px 0 2px;letter-spacing:-.02em}.kpi .confronto{font-size:12px;color:var(--muted)}.kpi .confronto b{font-weight:650}select,input[type=text],input[type=number],input[type=password],textarea{font:inherit;border:1px solid var(--line-2);border-radius:7px;padding:6px 9px;background:#fff;color:var(--text)}textarea{width:100%;min-height:60px}select:focus,input:focus,textarea:focus{outline:2px solid #9fd8cf;border-color:var(--teal)}label.campo{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}label.campo input,label.campo select{font-size:14px;color:var(--text)}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);background:#fff;color:var(--text);padding:7px 12px;border-radius:7px;cursor:pointer;font-weight:550;white-space:nowrap}.btn:hover{border-color:var(--navy)}.btn.primario{background:var(--navy);border-color:var(--navy);color:#fff}.btn.primario:hover{background:var(--navy-2)}.btn.teal{background:var(--teal);border-color:var(--teal);color:#fff}.btn.pericolo{color:var(--neg);border-color:#f1b5b5}.btn.piccolo{padding:3px 8px;font-size:12px}.btn:disabled{opacity:.55;cursor:default}.link-btn{background:none;border:0;color:var(--info);cursor:pointer;padding:0;font:inherit}.segmenti{display:inline-flex;border:1px solid var(--line-2);border-radius:8px;overflow:hidden;background:#fff}.segmenti button{border:0;background:none;padding:6px 12px;cursor:pointer;color:var(--muted);font-weight:550}.segmenti button+button{border-left:1px solid var(--line-2)}.segmenti button.attivo{background:var(--navy);color:#fff}.schede{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}.schede button{border:0;background:none;padding:9px 14px;cursor:pointer;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}.schede button.attiva{color:var(--navy);border-bottom-color:var(--teal)}.etichetta-stato{display:inline-block;font-size:11px;font-weight:650;padding:2px 8px;border-radius:10px}.etichetta-stato.verde{background:var(--pos-soft);color:var(--pos)}.etichetta-stato.rosso{background:var(--neg-soft);color:var(--neg)}.etichetta-stato.giallo{background:var(--warn-soft);color:var(--warn)}.etichetta-stato.blu{background:var(--info-soft);color:var(--info)}.etichetta-stato.grigio{background:#eef2f6;color:var(--muted)}.avviso{display:flex;gap:10px;padding:10px 12px;border-radius:8px;border:1px solid;margin-bottom:8px}.avviso .icona{font-weight:800;width:18px;text-align:center;flex-shrink:0}.avviso .titolo{font-weight:650}.avviso .testo{color:var(--text);font-size:13px;margin-top:2px}.avviso.alto{background:var(--neg-soft);border-color:#f5c2c2}.avviso.alto .icona{color:var(--neg)}.avviso.medio{background:var(--warn-soft);border-color:#f6d6a8}.avviso.medio .icona{color:var(--warn)}.avviso.info{background:var(--info-soft);border-color:#c7d6fb}.avviso.info .icona{color:var(--info)}.avviso.positivo{background:var(--pos-soft);border-color:#bfe3cb}.avviso.positivo .icona{color:var(--pos)}.avviso .area{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-left:6px;font-weight:600}.banner{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:13px}.banner.giallo{background:var(--warn-soft);border:1px solid #f6d6a8}.banner.blu{background:var(--info-soft);border:1px solid #c7d6fb}.banner.rosso{background:var(--neg-soft);border:1px solid #f5c2c2}.tabella-wrap{overflow-x:auto}table.t{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}table.t th,table.t td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}table.t th:first-child,table.t td:first-child{text-align:left;white-space:normal}table.t td.sx,table.t th.sx{text-align:left}table.t thead th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;background:#f8fafc;position:sticky;top:0}table.t tbody tr:hover{background:#f8fbff}table.t tr.totale td{font-weight:700;background:#f4f7fb;border-top:1px solid var(--line-2)}table.t tr.totale.forte td{background:#eaf1f8}table.t tr.dettaglio td{font-size:12.5px;color:#334155;background:#fcfdff}table.t tr.dettaglio td:first-child{padding-left:30px}table.t tr.cliccabile{cursor:pointer}table.t td.futuro{color:#b6c2d0}table.t td .freccia{display:inline-block;width:14px;color:var(--muted)}table.t.compatta th,table.t.compatta td{padding:5px 8px}table.t input[type=text],table.t input[type=number]{width:110px;text-align:right;padding:4px 6px}table.t input.largo{width:100%;text-align:left}.barra{height:6px;background:#eef2f6;border-radius:3px;overflow:hidden;min-width:60px}.barra>div{height:100%;background:var(--teal)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f2a44,#163a5c 60%,#1f6f6a);padding:16px}.login{background:#fff;border-radius:14px;padding:32px;width:100%;max-width:380px;box-shadow:0 20px 50px #00000040}.login h1{margin-bottom:4px}.login form{display:flex;flex-direction:column;gap:12px;margin-top:20px}.login .errore{color:var(--neg);font-size:13px}.velo{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f2a4473;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.finestra{background:#fff;border-radius:12px;width:100%;max-width:640px;max-height:90vh;overflow:auto;box-shadow:0 20px 60px #0000004d}.finestra .testa{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.finestra .testa h2{margin:0;flex:1}.finestra .corpo{padding:18px;display:flex;flex-direction:column;gap:12px}.finestra .piede{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.riga-campi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.caricamento{padding:40px;text-align:center;color:var(--muted)}.errore-box{padding:16px;background:var(--neg-soft);color:var(--neg);border-radius:8px}.vuoto{padding:24px;text-align:center;color:var(--muted)}.toast{position:fixed;bottom:20px;right:20px;background:var(--navy);color:#fff;padding:10px 16px;border-radius:8px;z-index:60;box-shadow:0 8px 24px #0003}.toast.errore{background:var(--neg)}.legenda{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legenda span:before{content:"";display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px;background:var(--c)}@media (max-width: 1100px){.g4,.g5,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 760px){.sidebar{position:fixed;left:-240px;z-index:40;transition:left .2s}.sidebar.aperta{left:0}.topbar .burger{display:inline-flex}.g2,.g3,.g4,.g5{grid-template-columns:minmax(0,1fr)}.contenuto{padding:16px}.topbar{padding:10px 16px}}table.t input.nome-mezzo[type=text]{width:200px;text-align:left}.filtri{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card.filtri{padding:10px 14px}.kpi.neg .valore{color:var(--neg)}.semaforo{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px;background:#cbd5e1}.semaforo.verde{background:#16a34a}.semaforo.giallo{background:#f59e0b}.semaforo.rosso{background:#dc2626}table.t.scheda-dati td:first-child{color:var(--muted);width:140px}table.t.scheda-dati td{white-space:normal}.analista .testo-ai{font-size:14px;line-height:1.5}.testo-ai h3{margin:12px 0 4px;font-size:14px;color:var(--navy)}.testo-ai p{margin:4px 0}.testo-ai ul{margin:4px 0 8px;padding-left:20px}.testo-ai li{margin:2px 0}.analista .msg{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.analista .msg.user{color:var(--navy)}.analista .domanda{display:flex;gap:8px;margin-top:12px}.analista .domanda input{flex:1;min-width:0}.pagina-rapportini{max-width:760px}.modulo-rapportino{display:flex;flex-direction:column;gap:12px}.modulo-rapportino textarea,.modulo-rapportino select,.modulo-rapportino input[type=text]{font-size:16px}.pulsanti-r{display:flex;gap:8px;flex-wrap:wrap}.btn.grande{padding:12px 16px;font-size:15px}.btn.largo{width:100%;justify-content:center}.in-coda{background:#f8fafc;border:1px dashed var(--line-2);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:4px}.rapportini{display:flex;flex-direction:column;gap:12px}.rapportino{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow)}.rapportino .dati-r{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0}.rapportino .testo-r{white-space:pre-wrap;margin:6px 0}.allegati{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}.allegato{display:flex;flex-direction:column;gap:2px}.allegato img{width:120px;height:90px;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:block}.allegato audio{width:260px;max-width:100%}.allegato .doc{display:inline-block;padding:4px 0}.link-btn.neg{color:var(--neg)}@media (max-width: 760px){.allegato img{width:96px;height:72px}.card.filtri>*{flex:1 1 auto}}table.t.elenco-cantieri td:first-child{min-width:260px}.procedura{border-left:4px solid var(--teal);margin-bottom:12px}.procedura .passi{display:flex;gap:6px;align-items:center}.procedura .passi button:not(.link-btn){width:28px;height:28px;border-radius:50%;border:1px solid var(--line-2);background:#fff;cursor:pointer;font-weight:650;color:var(--muted)}.procedura .passi button.attivo{background:var(--teal);border-color:var(--teal);color:#fff}.procedura .passi button.fatto{background:var(--teal-soft);color:var(--teal);border-color:#a7dcd3}table.t.tabella-voci td:first-child{min-width:320px}
