:root{--bg:#06111c;--bg2:#0a1927;--panel:#0d1f2e;--panel2:#102638;--line:#203a4f;--text:#e9f4ff;--muted:#90abc0;--blue:#3ca3ff;--green:#45dd86;--red:#ff6577;--yellow:#ffc74d;--purple:#a675ff;--shadow:0 16px 40px #0005}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 75% -10%,#173855 0,#081522 38%,var(--bg) 72%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;min-height:100vh}
.sidebar{position:fixed;left:0;top:0;bottom:0;width:180px;border-right:1px solid #173044;background:#071522e8;backdrop-filter:blur(12px);padding:22px 14px;display:flex;flex-direction:column;z-index:20}
.brand{display:flex;gap:10px;align-items:center;margin:4px 4px 28px}.brand-icon{font-size:28px}.brand strong{display:block;font-size:14px}.brand small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{color:#b9ccdc;text-decoration:none;padding:11px 12px;border-radius:9px;font-size:13px;display:flex;gap:10px}.sidebar nav a.active,.sidebar nav a:hover{background:linear-gradient(90deg,#0d66b9,#164b78);color:white}.pi-note{margin-top:auto;color:#a6bfd2;font-size:11px;display:flex;gap:8px;align-items:center;padding:10px 5px}
main{margin-left:180px;padding:0 18px 18px}.hero{height:116px;margin:0 -18px 14px;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(90deg,#0b1d2eaa,#09203388),linear-gradient(180deg,#102a42,#071520);border-bottom:1px solid #1a3850}.hero h1{margin:0;font-size:32px;letter-spacing:-1px}.hero p{margin:4px 0 0;color:#a9c2d7;font-size:17px}.clock{text-align:right;display:grid}.clock b{font-size:24px}.clock span{font-size:12px;color:#bed2e3}.clock small{margin-top:5px;color:#6fdc98}
.metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:12px}.metric{min-height:132px;border:1px solid var(--line);background:linear-gradient(145deg,var(--panel2),#0a1a28);border-radius:12px;padding:19px;display:flex;gap:15px;align-items:flex-start;box-shadow:var(--shadow)}.metric .icon{font-size:38px;line-height:1}.metric label{display:block;color:#c8dae8;font-size:13px;margin-bottom:8px}.metric strong{display:block;font-size:29px;white-space:nowrap}.metric small{display:block;color:var(--muted);font-size:11px;margin-top:12px}.metric.temp strong{color:#fff}.temp .icon{filter:saturate(1.3)}.press .icon{color:var(--green);font-size:46px}.wind .icon{color:var(--blue);font-size:48px;font-weight:300}
.charts{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:12px}.panel{border:1px solid var(--line);background:linear-gradient(150deg,#0e2131,#091925);border-radius:12px;padding:14px 15px;box-shadow:var(--shadow);min-width:0}.panel.wide{grid-column:span 1}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.panel-head h2{font-size:13px;margin:0;color:#d9e9f5}.panel-head>span{font-size:10px;color:#8fa9bd}.panel canvas{width:100%!important;height:220px!important}
.bottom{display:grid;grid-template-columns:1.05fr 1fr 1.55fr;gap:12px;margin-top:12px}.condition-body{display:grid;grid-template-columns:auto 1fr 1.2fr;gap:15px;align-items:center;min-height:182px}.big-weather{font-size:62px}.condition-body strong{font-size:22px}.condition-body p{color:var(--muted);font-size:11px}.condition-body dl{display:grid;grid-template-columns:1fr auto;gap:7px;margin:0;font-size:11px}.condition-body dt{color:var(--muted)}.condition-body dd{margin:0;font-weight:700}.forecast-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;min-height:182px}.day-card{border:1px solid #24445b;border-radius:10px;padding:12px 8px;text-align:center;background:#0b1b29}.day-card b{display:block;font-size:12px}.day-card .weather-icon{font-size:34px;margin:8px}.day-card .temps{font-size:20px;font-weight:800}.day-card .temps .min{color:#90b9df}.day-card .temps .max{color:#ff7b7b}.day-card small{display:block;color:var(--muted);font-size:10px;margin-top:7px}.loading{grid-column:1/-1;display:grid;place-items:center;color:var(--muted);font-size:12px}
.map-panel{padding-bottom:12px}.map-tabs{display:flex;gap:5px}.map-tabs button{border:1px solid #31526b;background:#0c2030;color:#bcd1e1;border-radius:7px;padding:5px 9px;font-size:10px;cursor:pointer}.map-tabs button.active{background:#1267a8;color:white;border-color:#389fe9}.map-panel iframe{width:100%;height:220px;border:0;border-radius:9px;background:#07131d}
.compass-panel{display:flex;flex-direction:column}.compass{position:relative;width:190px;height:190px;border:1px solid #35556c;border-radius:50%;margin:10px auto 5px;background:repeating-radial-gradient(circle,#0c1b29 0 23px,#173044 24px 25px),linear-gradient(90deg,transparent 49.5%,#35556c 50%,transparent 50.5%),linear-gradient(0deg,transparent 49.5%,#35556c 50%,transparent 50.5%)}.compass>span{position:absolute;font-size:10px;color:#bcd2e3}.compass .n{top:-17px;left:50%;transform:translateX(-50%)}.compass .s{bottom:-17px;left:50%;transform:translateX(-50%)}.compass .e{right:-14px;top:50%;transform:translateY(-50%)}.compass .w{left:-16px;top:50%;transform:translateY(-50%)}.needle{position:absolute;left:50%;top:50%;width:70px;transform-origin:0 50%;transform:translateY(-50%) rotate(-90deg);color:#42a8ff;font-size:42px;text-shadow:0 0 16px #1484df}.compass-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;pointer-events:none}.compass-center b{font-size:20px}.compass-center small{color:#83acd0}
footer{display:flex;justify-content:space-between;color:#6f8da5;font-size:10px;padding:15px 6px 0}
@media(max-width:1250px){.metrics{grid-template-columns:repeat(3,1fr)}.charts{grid-template-columns:repeat(2,1fr)}.bottom{grid-template-columns:1fr 1fr}.map-panel{grid-column:1/-1}.metric strong{font-size:25px}}
@media(max-width:820px){.sidebar{position:static;width:auto;height:auto;display:block;padding:12px}.brand{margin:0 0 10px}.sidebar nav{display:flex;overflow:auto}.sidebar nav a{white-space:nowrap}.pi-note{display:none}main{margin-left:0;padding:0 10px 15px}.hero{margin:0 -10px 10px;height:auto;padding:18px 14px}.hero h1{font-size:25px}.hero p{font-size:13px}.clock b{font-size:19px}.metrics{grid-template-columns:repeat(2,1fr);gap:8px}.metric{min-height:112px;padding:13px}.metric .icon{font-size:30px}.metric strong{font-size:22px}.charts{grid-template-columns:1fr}.bottom{grid-template-columns:1fr}.map-panel{grid-column:auto}.panel canvas{height:210px!important}.condition-body{grid-template-columns:auto 1fr}.condition-body dl{grid-column:1/-1}.forecast-grid{min-height:160px}}
@media(max-width:520px){.hero{align-items:flex-start}.clock small{display:none}.metrics{grid-template-columns:1fr 1fr}.metric{gap:9px}.metric label{font-size:11px}.metric strong{font-size:19px}.metric small{font-size:9px}.metric .icon{font-size:26px}.panel{padding:12px 10px}.forecast-grid{grid-template-columns:repeat(3,1fr)}.day-card{padding:9px 4px}.day-card .temps{font-size:16px}footer{display:grid;gap:4px}}

/* v0.2: intestazione fotografica e area amministrazione */
.hero-photo{position:relative;height:150px;min-height:150px;overflow:hidden;background:linear-gradient(90deg,rgba(3,13,23,.90) 0%,rgba(4,17,29,.70) 48%,rgba(4,17,29,.45) 100%),url('sesto-header.jpg') center 54%/cover no-repeat;border-bottom:1px solid #31506a}
.hero-photo:after{content:"";position:absolute;inset:auto 0 0;height:45%;background:linear-gradient(transparent,rgba(4,14,23,.45));pointer-events:none}.hero-copy,.hero-photo .clock{position:relative;z-index:2;text-shadow:0 2px 14px #000}.photo-credit{position:absolute;right:12px;bottom:7px;z-index:3;color:#d4e4efaa;text-decoration:none;font-size:8px;background:#04101aa6;padding:3px 6px;border-radius:5px}.photo-credit:hover{color:white}
.window-label{font-weight:400;color:#9fb8cb}.admin-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.admin-card{border:1px solid var(--line);background:linear-gradient(145deg,var(--panel2),#0a1a28);border-radius:12px;padding:15px;box-shadow:var(--shadow);min-height:115px}.admin-card h3{margin:0 0 10px;font-size:12px;color:#cfe1ee}.admin-card strong{font-size:19px}.admin-card small{display:block;color:var(--muted);margin-top:7px;line-height:1.4}.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;box-shadow:0 0 9px currentColor}.status-ok{color:#45dd86}.status-warn{color:#ffc74d}.status-bad{color:#ff6577}.status-unknown{color:#90abc0}
.admin-sections{display:grid;grid-template-columns:1.2fr 1fr;gap:12px}.admin-list{display:grid;gap:8px}.admin-row{display:grid;grid-template-columns:1fr auto;gap:12px;border-bottom:1px solid #1b3448;padding:8px 0;font-size:12px}.admin-row:last-child{border:0}.admin-row span:first-child{color:var(--muted)}.settings-form{display:grid;grid-template-columns:1fr 1fr;gap:13px 18px}.field{display:grid;gap:6px}.field label{font-size:11px;color:#b9ccdc}.field select,.field input[type="password"]{width:100%;background:#071825;color:#e9f4ff;border:1px solid #31516a;border-radius:8px;padding:9px 10px}.check{display:flex;align-items:center;gap:9px;font-size:12px;color:#cfe0ec}.settings-actions{grid-column:1/-1;display:flex;align-items:center;gap:10px;margin-top:4px}.btn{border:1px solid #36719c;background:#1267a8;color:white;border-radius:8px;padding:9px 13px;cursor:pointer}.btn.secondary{background:#0b1b29;color:#c3d6e4;border-color:#31516a}.save-state{font-size:11px;color:var(--muted)}.warnings{margin:0;padding-left:18px;color:#c6d7e4;font-size:11px;line-height:1.55}.warnings li{margin-bottom:5px}.admin-note{font-size:10px;color:#7897ad;line-height:1.5;margin-top:10px}
.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(rgba(3,12,20,.75),rgba(3,12,20,.92)),url('sesto-header.jpg') center/cover fixed}.login-card{width:min(410px,calc(100% - 30px));border:1px solid #294861;background:#081824ee;backdrop-filter:blur(10px);border-radius:16px;padding:28px;box-shadow:0 25px 70px #0008}.login-card h1{margin:0 0 6px}.login-card p{color:var(--muted);font-size:12px;line-height:1.5}.login-card form{display:grid;gap:12px;margin-top:20px}.login-card .error{color:#ff8491;font-size:11px}.login-card a{color:#8cc9ff;font-size:11px}
@media(max-width:1100px){.admin-grid{grid-template-columns:repeat(2,1fr)}.admin-sections{grid-template-columns:1fr}}
@media(max-width:820px){.hero-photo{height:140px;min-height:140px}.admin-grid{grid-template-columns:1fr 1fr}.settings-form{grid-template-columns:1fr}.photo-credit{font-size:7px}}
@media(max-width:520px){.admin-grid{grid-template-columns:1fr}.admin-row{grid-template-columns:1fr}.photo-credit{display:none}}

.forecast-grid{grid-template-columns:repeat(auto-fit,minmax(82px,1fr))}

/* v0.3: vento, indici bioclimatici e avvisi */
.wind-metric{align-items:center}.wind-content{min-width:0;flex:1}.wind-dual{display:grid;grid-template-columns:1fr 1fr;gap:10px}.wind-dual>div{background:#071724aa;border:1px solid #24465f;border-radius:9px;padding:8px 9px}.wind-dual small{margin:0 0 2px;font-size:9px;letter-spacing:.7px}.wind-dual strong{font-size:27px;line-height:1.05;color:#f3f9ff}.wind-dual>div:last-child strong{color:#9dd8ff}.wind-dual em{font-style:normal;color:var(--muted);font-size:9px}.wind-direction{margin-top:7px!important}
.derived-grid{display:grid;grid-template-columns:1.35fr repeat(6,minmax(0,1fr));gap:10px;margin-bottom:12px}.derived-card,.comfort-card{border:1px solid var(--line);background:linear-gradient(145deg,#0d2030,#091824);border-radius:11px;padding:12px 13px;box-shadow:var(--shadow);min-height:94px}.derived-card label,.comfort-card label{display:block;color:#a9c1d3;font-size:10px;margin-bottom:7px}.derived-card strong{font-size:20px;white-space:nowrap}.derived-card small,.comfort-card small{display:block;color:var(--muted);font-size:9px;margin-top:7px}.comfort-card{display:flex;gap:12px;align-items:center;border-color:#31516a;transition:.25s}.comfort-face{font-size:42px;filter:drop-shadow(0 0 12px #fff1)}.comfort-card strong{display:block;font-size:16px}.comfort-card.good{border-color:#2e9c62;background:linear-gradient(145deg,#0d3025,#0a1b20)}.comfort-card.mild{border-color:#8ea83f;background:linear-gradient(145deg,#25301b,#111d1d)}.comfort-card.moderate{border-color:#d3a93a;background:linear-gradient(145deg,#382c18,#161d21)}.comfort-card.high{border-color:#e77f38;background:linear-gradient(145deg,#3b2117,#1a1820)}.comfort-card.danger,.comfort-card.extreme{border-color:#e4505d;background:linear-gradient(145deg,#401a20,#1d141d)}
.alert-stack{display:grid;gap:9px;margin:0 0 12px}.weather-alert{position:relative;border:2px solid #ff5868;background:linear-gradient(90deg,#5b111b,#2d1017);border-radius:12px;padding:15px 48px 15px 17px;box-shadow:0 0 24px #ff405033}.weather-alert strong{display:block;color:#fff;font-size:18px;letter-spacing:.3px}.weather-alert span{display:block;color:#ffd5d9;font-size:11px;margin-top:4px}.weather-alert.warning{border-color:#ffad42;background:linear-gradient(90deg,#55300e,#2b1d0d);box-shadow:0 0 20px #ff9a3030}.weather-alert button{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:0;background:#ffffff15;color:white;border-radius:50%;width:26px;height:26px;cursor:pointer}.alert-note{color:#ffb8c0;font-size:9px;padding-left:3px}.wind-panel{grid-column:span 2}.winddir-panel canvas{height:240px!important}
@media(max-width:1400px){.derived-grid{grid-template-columns:repeat(4,1fr)}.comfort-card{grid-column:span 2}.wind-panel{grid-column:span 1}}
@media(max-width:820px){.derived-grid{grid-template-columns:1fr 1fr}.comfort-card{grid-column:1/-1}.wind-dual strong{font-size:23px}.weather-alert strong{font-size:15px}}
@media(max-width:520px){.derived-grid{grid-template-columns:1fr 1fr}.wind-metric{grid-column:1/-1}.wind-dual strong{font-size:21px}.weather-alert{padding:12px 42px 12px 12px}.weather-alert strong{font-size:13px}}
.field input[type="number"]{width:100%;background:#071825;color:#e9f4ff;border:1px solid #31516a;border-radius:8px;padding:9px 10px}.power-actions{display:flex;gap:12px;flex-wrap:wrap}.power-actions .btn{min-width:180px;font-weight:700}.power-weewx{background:#16567a;border-color:#2f8ec0}.power-reboot{background:#745716;border-color:#a98931}.power-off{background:#7a2630;border-color:#b54a58}.power-actions .btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.2)}

/* v0.4: Via Verdi, piazza Vittorio Veneto, layout compatto */
.hero-photo{background:linear-gradient(90deg,rgba(3,13,23,.90) 0%,rgba(4,17,29,.68) 50%,rgba(4,17,29,.42) 100%),url('sesto-piazza.jpg') center 48%/cover no-repeat}
.login-body{background:linear-gradient(rgba(3,12,20,.75),rgba(3,12,20,.92)),url('sesto-piazza.jpg') center/cover fixed}
.temp-expanded .apparent-inline{margin-top:9px;color:#a9c2d7;font-size:12px}.temp-expanded .apparent-inline b{font-size:18px;color:#d9efff;margin-left:4px}.compact-derived{grid-template-columns:1.35fr repeat(5,minmax(0,1fr))}.primary-weather{margin-top:0;margin-bottom:12px}.charts{margin-top:0}.compact-wind{grid-column:span 1!important}.compact-wind canvas{height:185px!important}.winddir-panel canvas{height:185px!important}
@media(max-width:1400px){.compact-derived{grid-template-columns:repeat(3,1fr)}.compact-derived .comfort-card{grid-column:span 1}.compact-wind{grid-column:span 1!important}}
@media(max-width:820px){.compact-derived{grid-template-columns:1fr 1fr}.compact-derived .comfort-card{grid-column:1/-1}.compact-wind canvas,.winddir-panel canvas{height:200px!important}}

/* storico */
.history-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 12px}.period-tabs{display:flex;gap:7px;flex-wrap:wrap}.period-tabs button{border:1px solid #31526b;background:#0c2030;color:#bcd1e1;border-radius:8px;padding:8px 13px;cursor:pointer}.period-tabs button.active{background:#1267a8;color:#fff;border-color:#389fe9}.history-toolbar>span{font-size:11px;color:var(--muted)}
.history-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}.history-summary article{border:1px solid var(--line);background:linear-gradient(145deg,#0d2030,#091824);border-radius:10px;padding:12px}.history-summary label{display:block;color:var(--muted);font-size:10px;margin-bottom:6px}.history-summary strong{font-size:18px}.history-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.history-grid .panel canvas{height:260px!important}.history-wide{grid-column:1/-1}
@media(max-width:820px){.history-summary{grid-template-columns:1fr 1fr}.history-grid{grid-template-columns:1fr}.history-wide{grid-column:auto}.history-grid .panel canvas{height:220px!important}}

/* v0.5: letture secondarie, trend e vista compatta */
[hidden]{display:none!important}
.secondary-reading{margin-top:10px;color:#a9c2d7;font-size:14px;line-height:1.25}.secondary-reading b{font-size:16px;color:#dceeff;font-weight:700}.temp-expanded .secondary-reading{font-size:14px}.temp-expanded .secondary-reading b{font-size:16px}
.head-stats{display:flex;align-items:center;gap:8px}.head-stats>span:last-child{font-size:10px;color:#8fa9bd}.trend{display:inline-grid;place-items:center;width:20px;height:20px;font-size:0;position:relative;flex:0 0 20px}.trend::before{content:"";width:15px;height:15px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 7h8.2L7.6 4.4 9 3l5 5-5 5-1.4-1.4L10.2 9H2z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 7h8.2L7.6 4.4 9 3l5 5-5 5-1.4-1.4L10.2 9H2z'/%3E%3C/svg%3E") center/contain no-repeat;filter:drop-shadow(0 0 3px currentColor)}.trend.up{color:#54dd8d}.trend.up::before{transform:rotate(-90deg)}.trend.down{color:#ff7886}.trend.down::before{transform:rotate(90deg)}.trend.stable{color:#e8c45e}
.compact-shell main{max-width:1500px}.compact-hero{height:112px;min-height:112px}.compact-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:12px}.compact-stat{border:1px solid var(--line);background:linear-gradient(145deg,var(--panel2),#0a1a28);border-radius:11px;padding:14px;box-shadow:var(--shadow)}.compact-stat label{display:block;color:#a9c2d7;font-size:10px;margin-bottom:6px}.compact-stat strong{font-size:23px}.compact-stat small{display:block;color:var(--muted);font-size:10px;margin-top:6px}.compact-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.compact-charts .panel canvas{height:205px!important}.compact-wide{grid-column:1/-1}.compact-note{color:var(--muted);font-size:10px;margin:8px 0 12px}
@media(max-width:1200px){.compact-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.compact-metrics{grid-template-columns:repeat(2,1fr)}.compact-charts{grid-template-columns:1fr}.compact-wide{grid-column:auto}.compact-hero{height:120px;min-height:120px}.secondary-reading{font-size:12px}.secondary-reading b{font-size:14px}}

/* v0.6: visione compatta a singola schermata */
.compact-shell{height:100dvh;overflow:hidden}.compact-main{height:100dvh;max-width:none!important;margin-left:180px;padding:7px 10px;display:grid;grid-template-rows:48px 78px minmax(0,1fr);gap:7px}
.compact-topbar{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);background:linear-gradient(90deg,#0d2233,#091824);border-radius:10px;padding:6px 12px}.compact-topbar h1{font-size:18px;margin:0}.compact-topbar>div>span{font-size:9px;color:var(--muted)}.compact-clock{text-align:right;display:grid}.compact-clock b{font-size:17px}.compact-clock span,.compact-clock small{font-size:8px;color:var(--muted)}
.compact-metrics-tight{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin:0}.compact-metrics-tight .compact-stat{padding:7px 9px;min-height:0}.compact-metrics-tight .compact-stat label{font-size:8px;margin-bottom:2px}.compact-metrics-tight .compact-stat strong{font-size:17px;line-height:1.05}.compact-metrics-tight .compact-stat small{font-size:8px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.compact-charts-tight{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:6px;min-height:0}.compact-charts-tight .panel{padding:6px 8px;display:flex;flex-direction:column;min-height:0;overflow:hidden}.compact-charts-tight .panel-head{margin-bottom:2px;min-height:18px}.compact-charts-tight .panel-head h2{font-size:9px}.compact-charts-tight .panel-head>span{font-size:7px}.compact-charts-tight .panel canvas{height:auto!important;min-height:0!important;flex:1!important}
.compact-alerts{position:fixed;z-index:100;right:12px;top:8px;width:min(520px,calc(100vw - 210px));margin:0}.compact-alerts .weather-alert{padding:8px 36px 8px 10px}.compact-alerts .weather-alert strong{font-size:12px}.compact-alerts .weather-alert span{font-size:8px;margin-top:2px}.compact-alerts .alert-note{display:none}
.compact-sidebar .brand{margin-bottom:16px}
@media(max-width:820px){.compact-shell .compact-sidebar{position:fixed;z-index:90;left:0;right:0;top:0;bottom:auto;width:100%;height:38px;padding:3px 5px;display:block;border-right:0;border-bottom:1px solid #173044}.compact-sidebar .brand,.compact-sidebar .pi-note{display:none}.compact-sidebar nav{display:flex;gap:3px;overflow:hidden;height:31px}.compact-sidebar nav a{flex:1;justify-content:center;padding:7px 4px;font-size:10px;white-space:nowrap}.compact-main{margin-left:0;padding:43px 5px 5px;height:100dvh;grid-template-rows:40px 90px minmax(0,1fr);gap:5px}.compact-topbar{padding:4px 8px}.compact-topbar h1{font-size:14px}.compact-topbar>div>span{font-size:7px}.compact-clock b{font-size:13px}.compact-clock span,.compact-clock small{font-size:7px}.compact-metrics-tight{grid-template-columns:repeat(3,1fr);gap:4px}.compact-metrics-tight .compact-stat{padding:5px 6px}.compact-metrics-tight .compact-stat label{font-size:7px}.compact-metrics-tight .compact-stat strong{font-size:14px}.compact-metrics-tight .compact-stat small{font-size:7px}.compact-charts-tight{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,minmax(0,1fr));gap:4px}.compact-charts-tight .panel{padding:4px 5px;border-radius:7px}.compact-charts-tight .panel-head{min-height:14px}.compact-charts-tight .panel-head h2{font-size:7px}.compact-charts-tight .panel-head>span{font-size:6px}.compact-alerts{top:42px;right:5px;width:calc(100vw - 10px)}.compact-alerts .weather-alert{padding:6px 30px 6px 8px}.compact-alerts .weather-alert strong{font-size:10px}.compact-alerts .weather-alert span{font-size:7px}}
@media(max-width:520px){.compact-sidebar nav a{font-size:0}.compact-sidebar nav a span{font-size:9px}.compact-main{grid-template-rows:36px 88px minmax(0,1fr)}.compact-topbar h1{font-size:12px}.compact-metrics-tight .compact-stat strong{font-size:12px}.compact-charts-tight .panel-head h2{font-size:6.5px}.compact-charts-tight .panel-head>span{display:none}}

/* indicatori risorse Raspberry */
.system-indicators{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:-2px 0 12px}.system-indicators article{border:1px solid var(--line);background:linear-gradient(145deg,#0d2030,#091824);border-radius:11px;padding:12px 14px;box-shadow:var(--shadow)}.system-indicators label{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.system-indicators strong{display:block;font-size:22px}.system-indicators small{display:block;color:#7897ad;font-size:9px;margin-top:4px}
@media(max-width:820px){.system-indicators{grid-template-columns:1fr 1fr 1fr;gap:6px}.system-indicators article{padding:9px}.system-indicators strong{font-size:17px}.system-indicators label{font-size:8px}.system-indicators small{font-size:7px}}

/* v0.6: credito foto nell'angolo dell'intestazione */
.hero-photo>.photo-credit{position:absolute;right:8px;bottom:6px;z-index:5;max-width:45%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#d4e4efaa;text-decoration:none;font-size:8px;background:#04101abf;padding:3px 6px;border-radius:5px;text-shadow:none}
@media(max-width:820px){.hero-photo>.photo-credit{right:5px;bottom:4px;font-size:6px;max-width:55%}}

/* v0.8: icone comfort uniformi e legenda grafici */
.comfort-face .comfort-svg{width:44px;height:44px;display:block;filter:drop-shadow(0 0 10px #0004)}
#cFace{display:inline-flex;align-items:center;vertical-align:middle}#cFace .comfort-svg{width:21px;height:21px;display:inline-block;vertical-align:middle;margin-right:2px}

/* v0.9: diagnostica sensori e frecce trend */
.sensor-fault{color:#ff8491!important;font-weight:700}.sensor-age{font-variant-numeric:tabular-nums}

/* v0.9: log salute Raspberry Pi */
.raspberry-health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}.health-item{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #203a4f;background:#081925;border-radius:8px;padding:9px 10px;font-size:10px}.health-item span{color:var(--muted)}.health-item b{font-size:10px;white-space:nowrap}.raspberry-events{margin:0;padding:9px 10px 9px 28px;border:1px solid #203a4f;background:#06131e;border-radius:8px;color:#a9c2d7;font:10px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;max-height:145px;overflow:auto}.raspberry-events li{margin:2px 0}@media(max-width:820px){.raspberry-health-grid{grid-template-columns:1fr 1fr}.raspberry-events{font-size:8px}}

/* v0.9: barre utilizzo risorse */
.resource-meter{height:8px;margin:8px 0 2px;border:1px solid #28475d;background:#06131e;border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 3px #0007}.resource-meter>span{display:block;height:100%;width:0;border-radius:999px;transition:width .35s ease,background .25s ease;box-shadow:0 0 8px currentColor}.resource-meter>span.resource-ok{color:#45dd86;background:#45dd86}.resource-meter>span.resource-warn{color:#ffc74d;background:#ffc74d}.resource-meter>span.resource-bad{color:#ff6577;background:#ff6577}

/* v1.0: allarmi ad alta visibilita */
.weather-alert,.weather-alert.warning{border-color:#ff3f55;background:linear-gradient(90deg,#66111d,#351018);box-shadow:0 0 26px #ff304844}
.weather-alert strong{display:flex;align-items:center;gap:7px;color:#fff}.alert-prefix{font-weight:900;letter-spacing:.5px}.alert-beacon{display:inline-grid;place-items:center;width:22px;height:22px;flex:0 0 22px;border-radius:50%;background:#ff3048;color:#fff;font-style:normal;font-weight:950;font-size:15px;line-height:1;box-shadow:0 0 0 0 #ff304888;animation:alertBeaconPulse 2.2s ease-in-out infinite}
@keyframes alertBeaconPulse{0%,100%{opacity:1;transform:scale(1);box-shadow:0 0 0 0 #ff304888}50%{opacity:.38;transform:scale(.9);box-shadow:0 0 0 7px #ff304800}}
@media(prefers-reduced-motion:reduce){.alert-beacon{animation:none}}
.compact-alerts .alert-beacon{width:15px;height:15px;flex-basis:15px;font-size:10px}.compact-alerts .weather-alert strong{gap:4px}


/* v1.0: layout meteo a due colonne con Windy verticale */
@media(min-width:1051px){
  .primary-weather{display:grid;grid-template-columns:minmax(0,1.17fr) minmax(0,1fr);grid-template-areas:"conditions map" "forecast map";gap:12px;align-items:stretch}
  .primary-weather .conditions{grid-area:conditions}
  .primary-weather .forecast{grid-area:forecast}
  .primary-weather .map-panel{grid-area:map;grid-column:auto;display:flex;flex-direction:column;min-height:470px}
  .primary-weather .map-panel iframe{flex:1 1 auto;height:auto;min-height:430px}
  .primary-weather .condition-body{min-height:178px}
  .primary-weather .forecast-grid{min-height:178px}
}
@media(max-width:1050px){
  .primary-weather{display:grid;grid-template-columns:1fr;gap:12px}
  .primary-weather .map-panel{grid-column:auto}
  .primary-weather .map-panel iframe{height:360px}
}

/* v1.1: tendenza meteo locale da dati WMR200 */
.local-trend-panel{display:flex;flex-direction:column}.local-trend-body{display:flex;flex-direction:column;justify-content:space-between;gap:12px;min-height:180px}.local-trend-main{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center}.local-trend-icon{font-size:52px;line-height:1;filter:drop-shadow(0 0 12px #ffffff18)}.local-trend-main strong{display:block;font-size:20px;line-height:1.15}.local-trend-main p{margin:7px 0 0;color:#a9c2d7;font-size:11px;line-height:1.45}.local-trend-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.local-trend-meta span{border:1px solid #24445b;background:#081925;border-radius:8px;padding:8px 9px;color:#bcd1e1;font-size:9px;line-height:1.35}.local-trend-note{display:block;color:#7897ad;font-size:8px;line-height:1.4}@media(max-width:820px){.local-trend-body{min-height:160px}.local-trend-main strong{font-size:17px}.local-trend-icon{font-size:44px}}@media(max-width:520px){.local-trend-meta{grid-template-columns:1fr}.local-trend-main strong{font-size:15px}}

/* v1.2: enfasi tendenza locale a breve termine */
.local-trend-panel{border-color:#43a9eb;background:linear-gradient(145deg,rgba(35,137,207,.34),rgba(18,83,130,.25) 48%,rgba(6,28,47,.98));box-shadow:0 16px 40px #0005,0 0 0 1px #65c0ff24 inset,0 0 24px #168bd31a}
.local-trend-head{align-items:flex-start}.local-trend-head h2{font-size:15px;color:#f1f6fa}.local-data-label{font-size:11px!important;font-weight:800;letter-spacing:.5px;color:#eef8ff!important;background:#168bd329;border:1px solid #65c0ff55;border-radius:7px;padding:5px 8px;text-align:right;line-height:1.25}
.local-trend-main strong{font-size:22px}.local-trend-note{font-size:9px;color:#a9bac6}.local-trend-meta span{background:#dfe8ee0b;border-color:#8198a833}
@media(max-width:820px){.local-trend-head{display:grid}.local-data-label{text-align:left;font-size:9px!important}.local-trend-main strong{font-size:18px}}

/* Medie climatologiche */
.climate-intro{margin-bottom:12px;display:flex;justify-content:space-between;gap:18px;align-items:center;border-color:#315875;background:linear-gradient(145deg,#0a2132,#0a1825)}
.climate-intro h2{margin:0 0 7px;font-size:18px}.climate-intro p{margin:0;color:#9fb8ca;font-size:10px;line-height:1.55;max-width:900px}.climate-source{flex:0 0 auto;color:#8fd0ff;text-decoration:none;border:1px solid #2c6d99;background:#0e3550;padding:9px 11px;border-radius:8px;font-size:10px}.climate-source:hover{background:#124462}
.climate-indicators{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.climate-card{border:1px solid #24445b;background:#091a27;border-radius:12px;padding:16px;box-shadow:0 14px 34px #0004}.climate-card.temp{background:linear-gradient(145deg,#25151d,#0c1a27 62%)}.climate-card.rain{background:linear-gradient(145deg,#0a2740,#091a27 62%)}
.climate-card-head{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#bcd0df;font-size:12px}.climate-card-head b{font-size:10px;padding:4px 7px;border-radius:999px;background:#ffffff0b;border:1px solid #ffffff15}.climate-card>strong{display:block;font-size:34px;margin:10px 0 4px}.climate-card p{margin:0;color:#abc1d1;font-size:11px}.climate-card small{display:block;color:#7897ad;font-size:8px;margin-top:8px;line-height:1.45}
.climate-scale{position:relative;height:8px;margin-top:13px;border-radius:999px;background:linear-gradient(90deg,#2d83bd,#314452 50%,#dc6d6d);overflow:hidden}.climate-scale:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:#d9e9f4aa}.climate-scale i{position:absolute;top:-3px;left:var(--climate-pos,50%);width:4px;height:14px;border-radius:3px;background:white;box-shadow:0 0 8px #fff;transform:translateX(-50%)}
.climate-30-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.climate-30-summary article{border:1px solid #203a4f;background:#081925;border-radius:10px;padding:12px 14px}.climate-30-summary label{display:block;color:#8faabd;font-size:9px;text-transform:uppercase;letter-spacing:.35px}.climate-30-summary strong{display:block;font-size:22px;margin-top:5px}.climate-30-summary small{color:#9db5c6;font-size:9px}
.climate-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.climate-grid .panel canvas{height:310px!important}
@media(max-width:900px){.climate-intro{display:block}.climate-source{display:inline-block;margin-top:10px}.climate-indicators,.climate-grid{grid-template-columns:1fr}.climate-30-summary{grid-template-columns:1fr 1fr}.climate-grid .panel canvas{height:250px!important}}
@media(max-width:520px){.climate-30-summary{grid-template-columns:1fr}.climate-card>strong{font-size:28px}.climate-intro p{font-size:9px}.climate-card p{font-size:10px}.compact-sidebar nav{overflow-x:auto}.compact-sidebar nav a{flex:0 0 auto;min-width:96px}}
