:root{
  --bg:#030a12; --panel:#071522cc; --panel2:#081b2c; --line:#15344d;
  --text:#eef7ff; --muted:#8ea8bd; --cyan:#00d4ff; --teal:#18f2c3;
  --green:#34d399; --yellow:#fbbf24; --red:#fb4b63; --purple:#a78bfa;
  --shadow: 0 25px 80px rgba(0,0,0,.45), inset 0 0 0 1px rgba(77,213,255,.12);
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:radial-gradient(circle at 30% 10%,#0a2440 0,#030a12 38%,#01050a 100%);color:var(--text);font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;min-height:100vh;}
.bg-grid{position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(0,212,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(0,212,255,.045) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(circle at center,#000 0,transparent 72%);}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:18px 28px;background:rgba(3,10,18,.82);backdrop-filter:blur(18px);border-bottom:1px solid rgba(99,179,237,.16)}
.brand{display:flex;align-items:center;gap:12px;font-size:22px;letter-spacing:.2px}.brand span{color:var(--cyan);margin-left:6px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(0,212,255,.45);border-radius:14px;background:radial-gradient(circle,rgba(24,242,195,.22),transparent 66%);color:var(--teal);box-shadow:0 0 24px rgba(0,212,255,.28)}
nav{display:flex;gap:10px;flex-wrap:wrap}nav a{color:#bcd2e4;text-decoration:none;padding:10px 13px;border-radius:14px;font-weight:650;font-size:14px}nav a.active,nav a:hover{color:var(--cyan);background:rgba(0,212,255,.08)}
.sys-pill{display:flex;align-items:center;gap:8px;border:1px solid rgba(74,222,128,.25);background:rgba(52,211,153,.07);border-radius:999px;padding:9px 13px;color:#c8f7df;font-size:13px;white-space:nowrap}.dot{display:inline-block;width:9px;height:9px;border-radius:50%}.ok,.green{color:var(--green)}.dot.ok{background:var(--green);box-shadow:0 0 14px var(--green)}
.page{width:min(1560px,calc(100vw - 32px));margin:18px auto 72px}.panel{background:linear-gradient(180deg,rgba(8,26,43,.88),rgba(4,14,24,.78));border:1px solid rgba(0,212,255,.16);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}.hero{display:grid;grid-template-columns:1.3fr .9fr;gap:30px;align-items:center;padding:36px 40px;min-height:300px;background:radial-gradient(circle at 75% 25%,rgba(0,212,255,.17),transparent 32%),linear-gradient(135deg,rgba(6,20,34,.95),rgba(4,12,22,.82))}.eyebrow{margin:0 0 8px;color:var(--teal);text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:800}.hero h1{font-size:clamp(42px,5vw,76px);line-height:.96;margin:0 0 16px}.hero h1 span{color:var(--cyan);text-shadow:0 0 28px rgba(0,212,255,.4)}.subtitle{font-size:24px;margin:0;color:#dcecff}.claim{font-size:18px;color:var(--muted);max-width:820px;line-height:1.65}.claim b{color:var(--teal)}.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}button{border:0;border-radius:14px;background:linear-gradient(135deg,#0575ff,#00d4ff);color:white;padding:13px 18px;font-weight:800;cursor:pointer;box-shadow:0 12px 28px rgba(0,132,255,.22)}button.ghost{background:rgba(0,212,255,.08);border:1px solid rgba(0,212,255,.25);box-shadow:none;color:#dff8ff}button.small{padding:9px 12px;font-size:12px}.health-card{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center;padding:24px;border-radius:24px;background:rgba(1,10,18,.62);border:1px solid rgba(0,212,255,.18)}.ring{--score:0;display:grid;place-items:center;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--cyan) calc(var(--score)*1%),rgba(255,255,255,.08) 0);position:relative;font-size:48px;font-weight:900}.ring:before{content:"";position:absolute;inset:18px;border-radius:50%;background:#061220;box-shadow:inset 0 0 28px rgba(0,212,255,.16)}.ring span,.ring small{position:relative}.ring small{font-size:18px;color:var(--muted);align-self:end;margin-bottom:46px;margin-left:84px}.health-card h2,.panel h2{margin:0;font-size:20px}.health-card p{margin:8px 0;color:var(--green);font-weight:800}.health-card ul{padding-left:18px;color:var(--muted);line-height:1.7;margin:8px 0 0}.kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin:16px 0}.kpi{min-height:124px;padding:20px;border-radius:20px;background:linear-gradient(135deg,rgba(10,31,50,.9),rgba(5,16,27,.9));border:1px solid rgba(0,212,255,.14);box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;right:-30px;bottom:-40px;width:150px;height:90px;border-radius:50%;background:rgba(0,212,255,.08);filter:blur(10px)}.kpi .icon{float:right;color:var(--cyan);font-size:30px}.kpi small{display:block;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:800}.kpi strong{display:block;font-size:42px;margin:8px 0 2px;color:#aef4ff}.kpi em{color:var(--muted);font-style:normal}.kpi.critical strong,.kpi.critical .icon{color:var(--red)}.main-grid{display:grid;grid-template-columns:1.7fr .9fr;gap:16px}.side-stack{display:grid;gap:16px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:22px 24px 10px}.legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:12px}.legend .node{display:inline-block;vertical-align:-1px;margin-right:5px}.map-panel{min-height:620px}#networkMap{width:100%;height:520px;display:block}.italy-shape,.island{fill:url(#italyGlow);stroke:rgba(0,212,255,.35);stroke-width:2}.link{stroke:rgba(0,212,255,.48);stroke-width:2;filter:url(#glow)}.link.degraded{stroke:rgba(251,191,36,.68);stroke-dasharray:7 6}.link.critical{stroke:rgba(251,75,99,.85);stroke-dasharray:3 5}.node{width:12px;height:12px;border-radius:50%;background:var(--cyan);box-shadow:0 0 16px var(--cyan)}.map-node{filter:url(#glow);cursor:pointer}.map-label{font-size:16px;fill:#dcecff;text-shadow:0 0 8px #000}.weak{background:var(--yellow);fill:var(--yellow)}.critical{background:var(--red);fill:var(--red)}.active{background:var(--cyan);fill:var(--cyan)}.rank-list,.region-list,.mission-list,#activityList{padding:4px 24px 24px}.rank-item,.region-item,.mission,.event{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:14px 0;border-top:1px solid rgba(150,210,255,.10)}.rank-num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:rgba(0,212,255,.1);color:var(--cyan);font-weight:900}.rank-item strong,.region-item strong,.mission strong{display:block}.rank-item small,.region-item small,.mission small,.event small,.muted{color:var(--muted)}.impact{color:var(--teal);font-weight:900}.bar{height:7px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:8px}.bar span{display:block;height:100%;width:var(--w);background:linear-gradient(90deg,var(--cyan),var(--teal));border-radius:inherit}.region-badge,.badge{display:inline-flex;align-items:center;padding:6px 9px;border-radius:10px;background:rgba(0,212,255,.10);border:1px solid rgba(0,212,255,.22);color:var(--cyan);font-weight:800;font-size:12px}.region-badge.critica,.badge.red{color:var(--red);border-color:rgba(251,75,99,.3);background:rgba(251,75,99,.1)}.region-badge.discreta{color:var(--yellow);border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.1)}.bottom-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr;gap:16px;margin-top:16px}.path-score strong{font-size:54px;color:var(--cyan)}.path-score{padding:0 24px 8px}.path-score span{display:block;color:var(--muted)}.route{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 24px 18px}.route .hop{padding:8px 10px;border:1px solid rgba(0,212,255,.22);border-radius:999px;background:rgba(0,212,255,.08);color:#dff8ff}.route .arrow{color:var(--teal)}.muted{padding:0 24px 24px;margin:0}.drill p{padding:0 24px}.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(150,210,255,.1);margin-top:18px}.mini-grid div{padding:18px;border-right:1px solid rgba(150,210,255,.1)}.mini-grid div:last-child{border-right:0}.mini-grid strong{font-size:32px;color:var(--teal);display:block}.mini-grid small{color:var(--muted)}.event{grid-template-columns:auto 1fr auto}.event-icon{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;background:rgba(0,212,255,.08);color:var(--cyan)}.event.warning .event-icon{color:var(--yellow);background:rgba(251,191,36,.09)}.event.critical .event-icon{color:var(--red);background:rgba(251,75,99,.09)}.event.success .event-icon{color:var(--green);background:rgba(52,211,153,.09)}footer{position:fixed;bottom:0;left:0;right:0;display:flex;gap:24px;justify-content:center;padding:12px 18px;background:rgba(1,8,14,.86);border-top:1px solid rgba(99,179,237,.16);backdrop-filter:blur(12px);color:var(--muted);font-size:13px}
@media (max-width:1200px){.hero,.main-grid{grid-template-columns:1fr}.bottom-grid,.kpi-grid{grid-template-columns:repeat(2,1fr)}.health-card{grid-template-columns:140px 1fr}.topbar{align-items:flex-start;flex-direction:column}.map-panel{min-height:auto}}@media (max-width:720px){.page{width:calc(100vw - 20px)}.hero{padding:26px}.bottom-grid,.kpi-grid{grid-template-columns:1fr}.health-card{grid-template-columns:1fr}.ring{width:160px}.sys-pill{display:none}footer{position:static;flex-direction:column;gap:4px}.hero h1{font-size:42px}.subtitle{font-size:20px}}

.sources-grid{display:grid;grid-template-columns:1.3fr .9fr;gap:16px;margin-top:16px}.source-list{padding:4px 24px 24px}.source-item{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:13px 0;border-top:1px solid rgba(150,210,255,.10)}.source-item.compact{padding:10px 0}.source-dot{width:12px;height:12px;border-radius:50%;background:var(--muted);box-shadow:0 0 14px rgba(255,255,255,.12)}.source-item.ok .source-dot{background:var(--green);box-shadow:0 0 15px rgba(52,211,153,.45)}.source-item.warn .source-dot{background:var(--yellow);box-shadow:0 0 15px rgba(251,191,36,.45)}.source-item.bad .source-dot{background:var(--red);box-shadow:0 0 15px rgba(251,75,99,.45)}.source-item strong{display:block}.source-item small{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.source-count{font-weight:900;color:var(--cyan);white-space:nowrap}.empty{color:var(--muted);padding:16px 0}.empty code{color:#dff8ff;background:rgba(255,255,255,.06);padding:2px 5px;border-radius:6px}@media (max-width:1200px){.sources-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,1fr)}}

/* v0.4 Lite: configurazione semplice delle sorgenti */
.sources-grid{grid-template-columns:1.1fr .9fr .9fr}.simple-form{padding:4px 24px 24px;display:grid;gap:12px}.simple-form label{display:grid;gap:7px}.simple-form label span{color:var(--muted);font-size:12px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.simple-form input{width:100%;border:1px solid rgba(0,212,255,.22);border-radius:13px;background:rgba(255,255,255,.055);color:var(--text);padding:12px 13px;outline:none}.simple-form input:focus{border-color:rgba(0,212,255,.58);box-shadow:0 0 0 3px rgba(0,212,255,.08)}.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.form-actions small{color:var(--muted);line-height:1.45}.simple-config-panel{min-height:100%}@media (max-width:1200px){.sources-grid{grid-template-columns:1fr}}
