:root{
--blue:#0759aa;
--blue-dark:#073c78;
--blue-deep:#052d5b;
--sky:#26a9e0;
--green:#55a83b;
--yellow:#f7c928;
--red:#e51d2a;
--ink:#10243b;
--muted:#63758a;
--line:#dce5ed;
--page:#f3f6f9;
--white:#fff;
--shadow:0 10px 30px rgba(12,43,75,.12);
}
.mc-external-blocked [data-external-src]{background:#e8eef3}
.mc-external-blocked .mc-video [data-external-src],.mc-external-blocked .global-cloud-map [data-external-src]{min-height:180px}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--page)}
.menu-load-error{padding:14px;text-align:center;background:#fff3cd;color:#664d03;font-weight:700}
.wx-animated{position:relative;display:inline-grid!important;place-items:center;width:1.45em;height:1.35em;overflow:visible;color:transparent!important;font-size:inherit;line-height:1;vertical-align:middle;isolation:isolate}
.wx-animated::before,.wx-animated::after{position:absolute;display:block;color:initial;font-family:Arial,sans-serif;line-height:1;pointer-events:none}
.wx-sun::before{z-index:2;width:.54em;height:.54em;border-radius:50%;background:#ffc928;box-shadow:inset -.07em -.07em 0 rgba(225,145,0,.18);content:""}.wx-sun::after{z-index:1;width:1.12em;height:1.12em;background:repeating-conic-gradient(from 0deg,#f5aa16 0 5deg,transparent 5deg 40deg);content:"";animation:wxRays 8s linear infinite;mask:radial-gradient(circle,transparent 0 39%,#000 41% 62%,transparent 64%)}
.wx-partly::before{z-index:1;top:.05em;left:.08em;width:.55em;height:.55em;border-radius:50%;background:#ffc928;box-shadow:0 0 .12em rgba(247,176,18,.5);content:""}.wx-partly::after{z-index:2;right:.03em;bottom:.05em;content:"☁";color:#79aeca;font-size:.92em;text-shadow:0 .04em .04em rgba(44,74,94,.2)}
.wx-overcast::before{z-index:1;left:.02em;top:.17em;content:"☁";color:#a8bdca;font-size:.86em}.wx-overcast::after{z-index:2;right:.01em;bottom:.06em;content:"☁";color:#668ba1;font-size:1em;text-shadow:0 .04em .04em rgba(44,74,94,.25)}
.wx-rain::before,.wx-storm::before,.wx-snow::before{z-index:2;top:.02em;content:"☁";color:#4f829f;font-size:1.02em;text-shadow:0 .04em .04em rgba(33,58,75,.22)}
.wx-rain::after{z-index:3;top:.68em;width:.88em;height:.6em;content:"";background:linear-gradient(110deg,transparent 38%,#168fdb 40% 58%,transparent 60%) 0 0/.28em .42em;animation:wxDrops 1.05s linear infinite}
.wx-snow::after{z-index:1;top:.67em;width:1em;content:"❄  ❄  ❄";color:#62b8e8;font-size:.27em;letter-spacing:.1em;white-space:nowrap;animation:wxFlakes 1.8s linear infinite}
.wx-storm::after{z-index:3;top:.63em;content:"ϟ";color:#ffc400;font-size:.72em;font-weight:900;text-shadow:0 0 .1em #fff;animation:wxLightning 2.2s steps(1) infinite}
.wx-fog::before{content:"☁";top:-.02em;color:#b6c5ce;font-size:.9em}.wx-fog::after{top:.72em;width:1.05em;height:.42em;content:"";background:repeating-linear-gradient(to bottom,#7895a7 0 .06em,transparent .06em .15em);animation:wxMist 2.8s ease-in-out infinite}
@keyframes wxRays{to{transform:rotate(360deg)}}@keyframes wxDrops{0%{transform:translateY(-.12em);opacity:0}30%{opacity:1}100%{transform:translateY(.28em);opacity:0}}@keyframes wxFlakes{0%{transform:translateY(-.12em);opacity:0}25%{opacity:1}100%{transform:translate(.08em,.42em);opacity:0}}@keyframes wxLightning{0%,78%,86%,100%{opacity:0}80%,84%{opacity:1}}@keyframes wxMist{0%,100%{transform:translateX(-.12em);opacity:.65}50%{transform:translateX(.12em);opacity:1}}
@media(prefers-reduced-motion:reduce){.wx-animated::after{animation:none!important}}
.wx-svg-icon{display:inline-grid!important;place-items:center;vertical-align:middle;line-height:1}.wx-svg-icon::before,.wx-svg-icon::after{display:none!important}.wx-svg-icon>img{display:block;width:1.75em;height:1.75em;max-width:none;object-fit:contain}.town-current-main .wx-svg-icon>img{width:1.55em;height:1.55em}.hour-icon.wx-svg-icon>img{width:1.9em;height:1.9em}
.weather-icon-credit{margin-top:8px;color:#8291a0;font-size:9.4px;text-align:right}.weather-icon-credit a{color:var(--blue);font-weight:700}
.news-toolbar{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:14px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 4px 14px rgba(12,43,75,.06)}
.news-toolbar>div{display:flex;flex-direction:column}.news-toolbar .small-title{margin-bottom:4px}.news-toolbar strong{color:var(--blue-dark);font-size:16.5px}
.news-toolbar label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:11.8px;font-weight:800;text-transform:uppercase}.news-toolbar select{min-width:240px;padding:9px 11px;border:1px solid #cbd9e3;border-radius:6px;background:#fff;color:var(--blue-dark)}
.news-disclaimer{margin-bottom:14px}.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.news-card{display:flex;flex-direction:column;min-height:210px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 4px 14px rgba(12,43,75,.07)}
.news-meta{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10.6px}.news-meta span{color:var(--blue);font-weight:800;text-transform:uppercase}.news-card h2{margin:14px 0 20px;color:var(--blue-dark);font-size:21.2px;line-height:1.35}.news-card-foot{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-top:auto}.news-card-foot>a{color:var(--blue);font-size:13px;font-weight:800;white-space:nowrap}.news-tags{display:flex;flex-wrap:wrap;gap:4px}.news-tags span{padding:4px 6px;border-radius:999px;background:#eaf4fb;color:#31698f;font-size:9.4px;font-weight:700}.news-empty{grid-column:1/-1;padding:35px;text-align:center;background:#fff;border:1px solid var(--line);border-radius:10px;color:var(--muted)}
@media(max-width:1000px){.news-grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){.news-toolbar{align-items:stretch;flex-direction:column}.news-toolbar select{width:100%;min-width:0}.news-grid{grid-template-columns:1fr}}
a{text-decoration:none;color:inherit}
button,input,select{font:inherit}
.shell{width:min(1480px,calc(100% - 32px));margin:auto}
.site-header{background:#fff;position:sticky;top:0;z-index:1000;box-shadow:0 2px 12px rgba(0,45,90,.08)}
.topbar{height:92px;display:flex;align-items:center;gap:24px}
.brand{display:flex;align-items:center;min-width:410px}
.brand img{width:190px;height:72px;object-fit:contain;object-position:left center}
.brand-copy{display:flex;flex-direction:column;margin-left:8px}
.brand-copy strong{font-size:28px;letter-spacing:-1.1px;color:var(--blue-dark)}
.brand-copy strong span{color:var(--green)}
.brand-copy small{color:var(--blue-dark);font-weight:500;margin-top:2px}
.nav{margin-left:auto;display:flex;align-items:center;gap:5px}
.nav a{display:flex;align-items:center;gap:6px;padding:13px 14px;border-radius:6px;font-size:14px;font-weight:700;color:#123f76;text-transform:uppercase}.nav a svg{display:block;flex:0 0 auto;transition:transform .18s ease}.nav a:hover svg,.nav a.current svg{transform:scale(1.12)}
.nav a:hover,.nav a.active{color:#fff;background:linear-gradient(135deg,var(--blue),#2b80d4)}
.menu-button{display:none;margin-left:auto;border:0;background:var(--blue);color:#fff;border-radius:8px;padding:10px 13px;font-size:22px;cursor:pointer}
.update-strip{border-top:1px solid #edf1f5;border-bottom:3px solid var(--blue)}
.update-strip .shell{min-height:31px;display:flex;align-items:center;justify-content:flex-end;gap:5px;font-size:11px;font-weight:700;color:var(--blue-dark)}
.update-strip button{border:0;background:none;color:var(--blue);cursor:pointer;font-size:20.1px}
.hero{position:relative;background-image:linear-gradient(135deg,#0759aa,#043864);background-size:cover;background-position:center;min-height:390px;isolation:isolate}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,45,91,.25),rgba(5,45,91,.10) 42%,rgba(5,45,91,.12));z-index:-1}
.hero-grid{padding:18px 0;display:grid;grid-template-columns:1.18fr 1fr;gap:16px;align-items:stretch}
.hero-weather{padding:14px 20px 16px;color:#fff;align-self:center}
.eyebrow{margin:0;font-size:16.5px;font-weight:800;letter-spacing:.1em}
.hero-weather h1{font-size:44.8px;margin:3px 0 14px;text-shadow:0 2px 10px rgba(0,0,0,.28)}
.current-board{display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,255,255,.86);backdrop-filter:blur(10px);border-radius:15px;overflow:hidden;box-shadow:var(--shadow)}
.metric{display:flex;align-items:center;justify-content:center;gap:10px;min-height:94px;padding:12px;color:var(--ink);border-right:1px solid rgba(7,60,120,.10)}
.metric:last-child{border-right:0}
.metric>span{font-size:33px}
.metric div{display:flex;flex-direction:column}
.metric b{font-size:23.6px}
.metric small{font-size:11.8px;color:#31577f;margin-top:3px}
.condition-line{width:100%;margin-top:0;background:rgba(255,255,255,.86);color:var(--blue-dark);display:flex;justify-content:center;gap:8px;align-items:center;border-top:1px solid rgba(7,60,120,.10);padding:12px;border-radius:0 0 15px 15px}
.live-card,.map-panel,.webcam-panel,.town-detail-card,.forecast-card,.tools-card{background:#fff;border:1px solid #dbe4ec;border-radius:6px;overflow:hidden;box-shadow:0 3px 10px rgba(12,43,75,.08)}
.panel-title{height:42px;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid var(--line);color:var(--blue-dark);font-size:16.5px}
.live-card .panel-title{background:var(--blue-dark);color:#fff;border:0}
.panel-title strong span{font-weight:600;color:#58728d}
.live-badge{font-size:14.2px;font-weight:800;text-transform:uppercase}
.live-badge i{display:inline-block;width:10px;height:10px;border-radius:50%;background:#ff2538;margin-right:5px;box-shadow:0 0 0 4px rgba(255,37,56,.15)}
.video-shell{position:relative;aspect-ratio:16/9;background:#061629;overflow:hidden}
.video-shell iframe{width:100%;height:100%;border:0;display:block}
.video-fallback{position:absolute;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px;color:#fff;background:linear-gradient(135deg,#08294d,#0b5a9f)}
.video-fallback strong{font-size:20.1px}
.video-fallback span{max-width:460px;font-size:14.2px;opacity:.85;margin:7px 0 14px}
.video-fallback a{background:#fff;color:var(--blue-dark);padding:8px 12px;border-radius:6px;font-weight:700;font-size:14.2px}
.fallback-icon{font-size:42.5px;margin-bottom:8px}
.video-caption{position:absolute;left:0;right:0;bottom:0;padding:8px 12px;color:#fff;font-size:13px;font-weight:700;background:linear-gradient(transparent,rgba(0,0,0,.72));pointer-events:none}
.panel-footer{min-height:36px;padding:0 12px;background:#146fc4;color:#fff;display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700}
.section{padding:12px 0}
.dashboard{background:#f5f7f9}
.dashboard-grid{display:grid;grid-template-columns:1.12fr 1fr;gap:14px}
#weatherMap{height:330px;background:#d9e5ef}
.map-panel{position:relative}
.map-hint{position:absolute;left:12px;bottom:12px;z-index:500;background:#fff;border:1px solid #bcd0e2;padding:6px 10px;border-radius:5px;font-size:11.8px;color:var(--blue-dark);box-shadow:0 2px 8px rgba(0,0,0,.12)}
.temp-marker{background:transparent;border:0}
.temp-chip{display:flex;align-items:center;gap:2px;width:max-content;background:#1482d5;color:#fff;font-weight:800;font-size:14.2px;border-radius:4px;padding:4px 6px;box-shadow:0 1px 4px rgba(0,0,0,.25);border:1px solid #fff}
.temp-chip span{font-size:15.3px}
.map-town-marker{display:flex;flex-direction:column;align-items:center;width:120px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.2));white-space:nowrap}.map-town-name{margin-top:2px;padding:3px 6px;border:1px solid #b9cee0;border-radius:4px;background:rgba(255,255,255,.96);color:#073c78;font-size:10.6px;font-weight:800;line-height:1.15;text-align:center}
.temp-marker{overflow:visible!important;display:flex!important;align-items:center;justify-content:center}
.temp-chip{transform-origin:center;transition:font-size .15s ease,padding .15s ease,box-shadow .15s ease}
.leaflet-marker-icon.temp-marker:hover{z-index:1000!important}
.leaflet-marker-icon.temp-marker:hover .temp-chip,.leaflet-marker-icon.temp-marker.is-hovered .temp-chip{font-size:21.2px;padding:7px 10px;box-shadow:0 5px 15px rgba(0,0,0,.35)}
.leaflet-marker-icon.temp-marker:hover .temp-chip span,.leaflet-marker-icon.temp-marker.is-hovered .temp-chip span{font-size:23.6px}
.leaflet-marker-icon.temp-marker:hover .map-town-name,.leaflet-marker-icon.temp-marker.is-hovered .map-town-name{background:#073c78;color:#fff}
.webcam-panel{display:flex;flex-direction:column}
.cam-live{color:#2ba353;font-size:13px;font-weight:800}
.forca-frame{position:relative;background:#0a2037;aspect-ratio:16/9;overflow:hidden}
.forca-frame img{width:100%;height:100%;object-fit:cover;display:block}
.cam-time{position:absolute;right:10px;top:10px;background:rgba(6,22,41,.84);color:#fff;padding:6px 9px;border-radius:5px;font-size:13px;font-family:monospace}
.cam-refresh{position:absolute;left:10px;bottom:10px;background:rgba(0,0,0,.72);color:#fff;padding:6px 9px;border-radius:5px;font-size:11.8px;font-weight:700}
.lower-section{padding-top:0}
.lower-grid{display:grid;grid-template-columns:300px 1fr 350px;gap:14px}
.town-detail-card,.forecast-card,.tools-card{padding:14px}
.small-title{display:block;color:var(--blue);font-size:14.2px;font-weight:800;text-transform:uppercase;margin-bottom:9px}
.town-detail-card select{width:100%;border:1px solid #cfdbe5;background:#fff;border-radius:5px;padding:8px 10px;color:var(--blue-dark)}
.town-current-main{display:flex;align-items:center;gap:13px;padding:12px 0 8px}
.town-detail-heading{display:flex;align-items:center;flex-direction:column;gap:12px;margin-bottom:15px;padding:22px 20px;text-align:center;background:linear-gradient(135deg,#f3f9fd,#fff);border:1px solid #dce8f1;border-radius:10px}.town-detail-heading .small-title{margin-bottom:3px}.town-detail-heading h2{margin:0;color:var(--blue-dark);font-size:clamp(34px,5vw,52px);line-height:1.05;letter-spacing:-1.2px}.town-crest{display:grid;place-items:center;width:112px;height:128px;padding:8px;background:#fff;border:1px solid #d7e2ea;border-radius:9px;box-shadow:0 4px 13px rgba(12,43,75,.08)}.town-crest img{display:block;max-width:100%;max-height:100%;object-fit:contain}.town-crest>span{display:none;place-items:center;width:100%;height:100%;font-size:56.6px}.town-facts{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.town-facts>div{min-width:180px;padding:10px 16px;background:#fff;border:1px solid #dbe6ee;border-radius:8px}.town-facts span{display:block;color:var(--muted);font-size:10.6px;font-weight:800;text-transform:uppercase}.town-facts strong{display:block;margin-top:4px;color:var(--blue-dark);font-size:18.9px}.town-data-source{color:var(--blue);font-size:10.6px;font-weight:700}.town-data-source:hover{text-decoration:underline}
.town-current-main .icon{font-size:44.8px}
.town-current-main b{font-size:33px}
.town-current-main div{display:flex;flex-direction:column}
.town-current-main small{color:var(--muted);font-size:13px}
.mini-metrics{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;font-size:11.8px;margin-top:5px}
.mini-metrics span{color:#57708a}
.mini-metrics b{font-weight:700;color:var(--ink)}
.forecast-head h2{font-size:21.2px;margin:0;color:var(--blue-dark)}
.forecast-days{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid #dfe7ef;border-radius:5px;overflow:hidden}
.day-card{text-align:center;padding:9px 6px;border-right:1px solid #e4eaf0;min-width:0}
.forecast-days .day-card{border-top:0;border-bottom:0;border-left:0;background:#fff;color:inherit;font:inherit;cursor:pointer}
.forecast-days .day-card:hover,.forecast-days .day-card.selected{background:#eaf5fd;box-shadow:inset 0 -3px 0 var(--blue)}
.forecast-days .day-card:focus-visible{outline:3px solid #78bdea;outline-offset:-3px}
.day-card:last-child{border-right:0}
.day-card .day{font-size:11.8px;font-weight:800;text-transform:uppercase}
.day-card .wx{font-size:33px;margin:7px 0}
.day-card .high{font-weight:800;font-size:18.9px}
.day-card .low{color:#006dcc;font-size:14.2px;font-weight:700}
.day-card .rain{font-size:10.6px;color:#5f7488;margin-top:7px}
.hourly-heading{display:flex;align-items:end;justify-content:space-between;gap:15px;margin:22px 0 10px}.hourly-heading .small-title{margin-bottom:3px}.hourly-heading h3{margin:0;color:var(--blue-dark);font-size:22.4px}.hourly-heading>span{color:var(--muted);font-size:11.8px}.hourly-forecast{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#fff}.hourly-table-head,.hour-card{display:grid;grid-template-columns:70px minmax(180px,1.4fr) minmax(115px,1fr) minmax(105px,.8fr) minmax(120px,.9fr) minmax(85px,.7fr);align-items:center;gap:12px}.hourly-table-head{padding:9px 14px;background:var(--blue-dark);color:#fff;font-size:10.6px;font-weight:800;text-transform:uppercase}.hour-card{min-width:0;padding:10px 14px;border-bottom:1px solid var(--line)}.hour-card:last-child{border-bottom:0}.hour-card:nth-child(odd){background:#f7fafc}.hour-card time{color:var(--blue-dark);font-size:15.3px;font-weight:800}.hour-condition{display:flex;align-items:center;gap:9px;color:#4f687e;font-size:13px}.hour-icon{font-size:29.5px}.hour-temperature{display:flex;flex-direction:column}.hour-temperature strong{font-size:20.1px}.hour-temperature small,.hour-rain small{color:var(--muted);font-size:9.4px}.hour-rain{display:flex;flex-direction:column;color:#3973a0;font-size:13px}.hour-wind,.hour-humidity{color:#58728a;font-size:13px;font-weight:600}.hourly-empty{padding:28px;text-align:center;color:var(--muted);font-size:14.2px}
@media(max-width:700px){.hourly-table-head{display:none}.hour-card{grid-template-columns:58px minmax(120px,1fr) 88px;gap:8px;padding:10px}.hour-rain,.hour-wind,.hour-humidity{font-size:10.6px}.hour-rain{grid-column:1}.hour-wind{grid-column:2}.hour-humidity{grid-column:3}.hour-condition{font-size:11.8px}.hourly-heading{align-items:start;flex-direction:column;gap:4px}}
@media(max-width:520px){.town-detail-heading{gap:10px;padding:14px}.town-crest{width:78px;height:92px}.town-detail-heading h2{font-size:35.4px;letter-spacing:-.6px}.town-facts{width:100%}.town-facts>div{min-width:0;flex:1 1 130px;padding:9px}.town-facts strong{font-size:16.5px}}
.tool-links{display:flex;flex-direction:column;gap:8px}
.tool-links a{display:flex;align-items:center;gap:12px;border:1px solid #dce6ef;border-radius:7px;padding:10px;background:linear-gradient(135deg,#fbfdff,#f2f7fb)}
.tool-links a:hover{border-color:#9cc4e8;transform:translateY(-1px)}
.tool-links a>span{font-size:33px}
.tool-links div{display:flex;flex-direction:column}
.tool-links strong{font-size:14.2px;color:var(--blue-dark)}
.tool-links small{font-size:11.8px;color:var(--muted);margin-top:2px}
.towns-section{padding:18px 0 28px}
.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:12px}
.section-heading h2{margin:0;color:var(--blue-dark);font-size:28.3px}
.section-heading input{width:250px;border:1px solid #cad8e4;background:#fff;border-radius:6px;padding:9px 11px}
.town-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}
.town-card{background:#fff;border:1px solid #dce5ec;border-radius:6px;padding:11px;cursor:pointer;transition:.18s}
.town-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#8fc0e7}
.town-card-top{display:flex;justify-content:space-between;gap:8px}
.town-name{font-weight:800;font-size:14.2px;color:var(--blue-dark)}
.town-icon{font-size:24.8px}
.town-temp{font-size:29.5px;font-weight:800;margin-top:3px}
.town-condition{font-size:11.8px;color:var(--muted);min-height:25px}
.town-mini{display:flex;justify-content:space-between;gap:5px;font-size:10.6px;color:#496580;margin-top:6px}
.loading{grid-column:1/-1;padding:25px;text-align:center;color:var(--muted)}
footer{background:linear-gradient(90deg,#052f63,#03488d);color:#fff;padding:20px 0}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:30px}
.footer-grid>div{display:flex;flex-direction:column;gap:6px;font-size:13px}
.footer-grid strong{font-size:14.2px}
.footer-grid a{opacity:.88}
.footer-grid a:hover{opacity:1;text-decoration:underline}
.footer-brand img{width:150px;height:50px;object-fit:contain;object-position:left;background:#fff;border-radius:5px;padding:3px}
.footer-brand span{opacity:.8}
.leaflet-control-attribution{font-size:9.4px!important}

@media(max-width:1400px){
.menu-button{display:block}
.nav{display:none;position:absolute;left:0;right:0;top:92px;z-index:100;background:#fff;box-shadow:0 8px 20px rgba(0,0,0,.12);padding:8px;flex-direction:column;align-items:stretch;max-height:calc(100vh - 92px);overflow-y:auto;overscroll-behavior:contain}
.nav.open{display:flex}
.nav a{padding:11px}
}

@media(max-width:1150px){
.brand{min-width:auto}
.brand-copy{display:none}
.nav a{padding:11px 9px;font-size:12px}
.current-board{grid-template-columns:repeat(3,1fr)}
.metric:nth-child(3){border-right:0}
.metric:nth-child(4),.metric:nth-child(5){border-top:1px solid rgba(7,60,120,.10)}
.lower-grid{grid-template-columns:270px 1fr}
.tools-card{grid-column:1/-1}
.tool-links{display:grid;grid-template-columns:repeat(3,1fr)}
.town-grid{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:820px){
.topbar{height:78px}
.brand img{width:170px;height:62px}
.menu-button{display:block}
.nav{top:78px;max-height:calc(100vh - 78px)}
.nav.open{display:flex}
.nav a{padding:11px}
.hero-grid,.dashboard-grid,.lower-grid{grid-template-columns:1fr}
.hero-weather{padding:10px 0}
.hero-weather h1{font-size:36.6px}
.current-board{grid-template-columns:repeat(2,1fr)}
.metric{border-bottom:1px solid rgba(7,60,120,.10)}
.metric:nth-child(even){border-right:0}
.metric:nth-child(5){grid-column:1/-1}
.forecast-days{overflow-x:auto;grid-template-columns:repeat(7,100px)}
.tools-card{grid-column:auto}
.tool-links{grid-template-columns:1fr}
.town-grid{grid-template-columns:repeat(2,1fr)}
.section-heading{align-items:stretch;flex-direction:column;gap:8px}
.section-heading input{width:100%}
.footer-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:520px){
.shell{width:min(100% - 18px,1480px)}
.brand img{width:150px}
.hero{min-height:auto}
.hero-grid{padding:10px 0}
.current-board{grid-template-columns:1fr 1fr}
.metric{min-height:80px;padding:9px}
.metric>span{font-size:26px}
.metric b{font-size:20.1px}
.live-card .panel-title{font-size:14.2px}
#weatherMap{height:300px}
.town-grid{grid-template-columns:1fr 1fr}
.footer-grid{grid-template-columns:1fr}
}

.page-hero{background:linear-gradient(135deg,#073c78,#178bd5);color:#fff;padding:42px 0}
.page-hero h1{font-size:44.8px;margin:0 0 8px}
.page-hero p{max-width:780px;margin:0;opacity:.9;line-height:1.6}
.content-page{padding:26px 0 40px}
.content-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.info-card{background:#fff;border:1px solid #dce5ed;border-radius:8px;padding:18px;box-shadow:0 4px 14px rgba(12,43,75,.07)}
.info-card h2,.info-card h3{color:#073c78;margin-top:0}
.info-card p{color:#5c7187;line-height:1.55;font-size:16.5px}
.info-card a.button,.button{display:inline-flex;align-items:center;justify-content:center;background:#0759aa;color:#fff;border-radius:6px;padding:10px 14px;font-weight:700;font-size:15.3px}
.info-card a.button:hover,.button:hover{background:#073c78}
.alert-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}
.alert-card{background:#fff;border-left:6px solid #f7c928;border-radius:8px;padding:18px;border-top:1px solid #dfe7ef;border-right:1px solid #dfe7ef;border-bottom:1px solid #dfe7ef}
.alert-card.red{border-left-color:#e51d2a}
.alert-card.orange{border-left-color:#f08b21}
.alert-card.green{border-left-color:#55a83b}
.alert-card h3{margin:0 0 8px;color:#073c78}
.alert-card p{margin:0 0 12px;color:#5b7085;line-height:1.5;font-size:15.3px}
.official-alerts{margin:0 0 20px;padding:20px;border:1px solid #ccd9e4;border-left:7px solid #73869a;border-radius:9px;background:#fff}.official-alerts.level-green{border-left-color:#3c9b57}.official-alerts.level-yellow{border-left-color:#e4b600;background:#fffdf2}.official-alerts.level-orange{border-left-color:#ed851b;background:#fff8f0}.official-alerts.level-red{border-left-color:#d92534;background:#fff3f4}.official-alerts.is-unavailable{border-left-color:#73869a;background:#f5f7f9}.official-alerts-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.official-alerts-head span{font-size:13px;font-weight:800;letter-spacing:.1em;color:#426581}.official-alerts h2{margin:4px 0 6px;color:#073c78}.official-alerts-head p,.official-alerts.is-unavailable p{margin:0;color:#5b7085;font-size:15.3px}.official-level{white-space:nowrap;padding:8px 11px;border-radius:6px;background:#edf2f6;color:#173b55}.level-green .official-level{background:#e4f5e9;color:#24763c}.level-yellow .official-level{background:#fff0ad;color:#705800}.level-orange .official-level{background:#ffe0bd;color:#8c4300}.level-red .official-level{background:#ffd5d9;color:#9b1722}.official-risk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-top:17px}.official-risk{padding:13px;border:1px solid #dce5ed;border-radius:7px}.official-risk h3{margin:0 0 6px;color:#315c7b;font-size:15.3px}.official-risk strong{font-size:16.5px}.official-risk p{margin:5px 0 0;color:#5b7085;font-size:13px;line-height:1.45}.official-risk.level-green{border-top:4px solid #3c9b57}.official-risk.level-yellow{border-top:4px solid #e4b600}.official-risk.level-orange{border-top:4px solid #ed851b}.official-risk.level-red{border-top:4px solid #d92534}.official-source{margin:14px 0 0!important;padding-top:12px;border-top:1px solid #e0e7ed;color:#526b7e;font-size:13px!important}.official-source a{font-weight:700;color:#0759aa}
.notice{background:#fff8dc;border:1px solid #f1d66b;border-radius:7px;padding:13px 15px;color:#684f00;font-size:15.3px;line-height:1.55;margin-bottom:18px}
.large-map{height:620px!important}
.media-frame{background:#fff;border:1px solid #dce5ed;border-radius:8px;padding:12px}
.media-frame iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:5px}
.page-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.page-list a{background:#fff;border:1px solid #dbe5ee;padding:15px;border-radius:7px;font-weight:700;color:#073c78}
.page-list a:hover{border-color:#6caee1;box-shadow:0 4px 15px rgba(7,60,120,.08)}
.nav a.current{color:#fff;background:linear-gradient(135deg,var(--blue),#2b80d4)}
@media(max-width:820px){
.content-grid,.alert-grid,.page-list{grid-template-columns:1fr}
.official-alerts-head{display:block}.official-level{display:inline-block;margin-top:12px}.official-risk-grid{grid-template-columns:1fr}
.page-hero h1{font-size:35.4px}
.large-map{height:430px!important}
}

.radar-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px;background:#fff;border-top:1px solid #dce5ed}
.radar-toolbar button{border:1px solid #bfd1e1;background:#fff;color:#073c78;border-radius:6px;padding:8px 12px;font-weight:700;cursor:pointer}
.radar-toolbar button:hover,.radar-toolbar button.active{background:#0759aa;color:#fff;border-color:#0759aa}
.radar-time{font-weight:800;color:#073c78;font-size:15.3px;min-width:150px}
.radar-progress{flex:1;min-width:220px}
.radar-progress input{width:100%}
.radar-legend{display:flex;align-items:center;gap:8px;font-size:13px;color:#58728d;padding:8px 12px;background:#f8fbfd;border-top:1px solid #e4ebf1}
.radar-legend .bar{width:190px;height:10px;border-radius:999px;background:linear-gradient(90deg,#5ad8ff,#2e9cff,#2ddb66,#ffe04a,#ff962e,#ff3a31,#be2fff)}
#forecastNotice{margin-left:auto;font-weight:700;color:#7a5b00}
.global-cloud-panel{margin-top:22px;background:#fff;border:1px solid #dbe4ec;border-radius:6px;overflow:hidden;box-shadow:0 3px 10px rgba(12,43,75,.08)}
.mobile-external-map-link{display:none}.is-cooperative-map:after{content:attr(data-mobile-map-hint);position:absolute;left:50%;top:12px;z-index:1000;display:none;max-width:calc(100% - 90px);padding:7px 10px;border-radius:6px;background:rgba(5,56,103,.88);color:#fff;font-size:11px;font-weight:800;line-height:1.3;text-align:center;transform:translateX(-50%);pointer-events:none}@media(pointer:coarse){.is-cooperative-map:after{display:block}.global-cloud-map{position:relative}.global-cloud-map iframe{pointer-events:none}.mobile-external-map-link{position:absolute;left:50%;bottom:14px;z-index:3;display:block;width:max-content;max-width:calc(100% - 28px);padding:10px 13px;border-radius:7px;background:#0759aa;color:#fff;font-size:12px;font-weight:800;text-align:center;transform:translateX(-50%);box-shadow:0 4px 14px rgba(5,56,103,.28)}}
.global-cloud-map{height:min(78vh,820px);min-height:680px;background:#d9e5ef}
.global-cloud-map iframe{display:block;width:100%;height:100%;border:0}
.global-cloud-note{padding:10px 14px;background:#f8fbfd;border-top:1px solid #e4ebf1;color:#58728d;font-size:13px}
@media(max-width:820px){.global-cloud-map{height:620px;min-height:620px}}
@media(max-width:520px){.global-cloud-map{height:500px;min-height:500px}}
.radio-receiver-card{display:grid;grid-template-columns:180px 1fr;align-items:center;gap:30px;max-width:980px;margin:0 auto 18px;padding:32px;background:linear-gradient(135deg,#fff,#edf7fd);border:1px solid #cddfeb;border-radius:12px;box-shadow:0 8px 28px rgba(7,60,120,.11)}
.radio-symbol{display:grid;place-items:center;width:160px;height:160px;border-radius:50%;background:linear-gradient(145deg,#073c78,#168fd5);box-shadow:inset 0 0 0 8px rgba(255,255,255,.12),0 9px 25px rgba(7,60,120,.22);font-size:85px}
.radio-receiver-copy h2{margin:0 0 10px;color:var(--blue-dark);font-size:35.4px}
.radio-receiver-copy p{max-width:680px;color:var(--muted);font-size:16.5px;line-height:1.65}
.radio-status{display:flex;align-items:center;gap:7px;margin:14px 0;color:#347040;font-size:14.2px;font-weight:800;text-transform:uppercase}
.radio-status span{width:9px;height:9px;border-radius:50%;background:#40ae55;box-shadow:0 0 0 4px rgba(64,174,85,.15)}
.radio-open{padding:12px 17px!important;font-size:16.5px!important}
.radio-notice{max-width:980px;margin:0 auto}
.radio-station-grid{display:grid;grid-template-columns:minmax(280px,390px) 1fr;gap:34px;max-width:980px;margin:0 auto 18px;padding:22px;background:#fff;border:1px solid #dbe4ec;border-radius:12px;box-shadow:0 8px 28px rgba(7,60,120,.08)}
.radio-station-photo{margin:0;overflow:hidden;border-radius:9px;background:#e7eef4}
.radio-station-photo img{display:block;width:100%;height:520px;object-fit:cover}
.radio-station-photo figcaption{padding:10px 12px;color:#60758a;background:#f5f8fa;font-size:13px;line-height:1.5}
.radio-station-details{align-self:center}
.radio-station-details h2,.radio-tech h2{margin:5px 0 10px;color:var(--blue-dark);font-size:31.9px}
.radio-station-details>p,.radio-tech>div>p{color:var(--muted);font-size:16.5px;line-height:1.7}
.radio-feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:19px}
.radio-feature-grid article{display:flex;gap:10px;padding:13px;background:#f3f8fc;border:1px solid #deebf3;border-radius:8px}
.radio-feature-grid article>span{font-size:27.1px}
.radio-feature-grid strong{display:block;color:var(--blue-dark);font-size:15.3px}
.radio-feature-grid p{margin:4px 0 0;color:#61778c;font-size:13px;line-height:1.45}
.radio-tech{max-width:980px;margin:0 auto 18px;padding:28px;background:linear-gradient(135deg,#073c78,#0b6dbd);border-radius:12px;color:#fff;box-shadow:0 8px 28px rgba(7,60,120,.13)}
.radio-tech .small-title,.radio-tech h2,.radio-tech>div>p{color:#fff}
.radio-tech>div>p{max-width:780px;opacity:.88}
.radio-specs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0 14px}
.radio-specs div{padding:13px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:8px}
.radio-specs dt{font-size:11.8px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;opacity:.72}
.radio-specs dd{margin:5px 0 0;font-size:14.2px;font-weight:700;line-height:1.45}
.radio-source{margin:0;font-size:11.8px;color:#d9ebf8}
.radio-source a{color:#fff;text-decoration:underline}
@media(max-width:800px){.radio-station-grid{grid-template-columns:1fr}.radio-station-photo img{height:auto;max-height:620px}.radio-specs{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.radio-receiver-card{grid-template-columns:1fr;padding:23px}.radio-symbol{width:120px;height:120px;font-size:63.7px}.radio-receiver-copy h2{font-size:29.5px}.radio-feature-grid{grid-template-columns:1fr}}
@media(max-width:480px){.radio-station-grid,.radio-tech{padding:18px}.radio-specs{grid-template-columns:1fr}}
.live-highlight{border:2px solid #e51d2a}
.live-highlight .panel-title{background:#073c78;color:#fff}
.live-now-pill{display:inline-flex;align-items:center;gap:6px;background:#e51d2a;color:#fff;border-radius:999px;padding:4px 8px;font-size:13px;font-weight:800}
.live-now-pill::before{content:"";width:8px;height:8px;background:#fff;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.2)}
@media(max-width:820px){.radar-toolbar{align-items:stretch}.radar-progress{width:100%;order:5}}

.history-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.history-card{background:#fff;border:1px solid #dce5ed;border-radius:8px;padding:20px;box-shadow:0 4px 14px rgba(12,43,75,.07)}
.history-card h2{margin:0 0 10px;color:#073c78}
.history-card p{color:#526b82;line-height:1.65;font-size:16.5px}
.history-source{border-top:1px solid #e5ebf0;margin-top:15px;padding-top:10px;color:#60758a;font-size:13px}
.history-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.secondary-source{background:#397f3b!important}
@media(max-width:820px){.history-grid{grid-template-columns:1fr}}
\n.live-now-pill.offline{background:#63758a}\n
.meteo-section-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:8px 0 14px}
.meteo-section-head h2{font-size:35.4px;margin:0;color:var(--blue-dark)}
.meteo-section-head p{margin:5px 0 0;color:var(--muted);font-size:15.3px}
.meteo-more{background:var(--blue);color:#fff;padding:10px 14px;border-radius:7px;font-size:14.2px;font-weight:800}
.weather-kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}
.weather-kpi{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:13px 14px;box-shadow:0 4px 13px rgba(10,51,89,.06)}
.weather-kpi-icon{font-size:31.9px}
.weather-kpi div:last-child{display:flex;flex-direction:column}
.weather-kpi small{font-size:10.6px;text-transform:uppercase;font-weight:800;color:#72869a;letter-spacing:.04em}
.weather-kpi strong{font-size:22.4px;margin-top:4px;color:var(--blue-dark)}
.condition-kpi strong{font-size:15.3px}
.dashboard-grid-v7{margin-bottom:14px}
.home-cams-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.home-cam-card{background:#fff;border:1px solid #dbe4ec;border-radius:7px;overflow:hidden;box-shadow:0 3px 10px rgba(12,43,75,.08)}
.picinisco-canvas-wrap{position:relative;background:#08182a;aspect-ratio:16/9;overflow:hidden}
.picinisco-canvas-wrap canvas{display:block;width:100%!important;height:100%!important;object-fit:cover}
.webcam-credit{position:absolute;left:10px;bottom:10px;background:rgba(0,0,0,.72);color:#fff;padding:6px 8px;border-radius:5px;font-size:11.8px;font-weight:700}
.home-cam-card .panel-footer>div{display:flex;gap:11px}
.home-cam-card .panel-footer a{white-space:nowrap}
.webcam-page-hero{background:linear-gradient(135deg,#073c78,#0b6dbd)}
.webcam-page-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.webcam-big-card{background:#fff;border:1px solid #dce5ed;border-radius:8px;overflow:hidden;box-shadow:0 5px 18px rgba(12,43,75,.08)}
.webcam-big-card:first-child{grid-column:1/-1}
.webcam-info{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px}
.webcam-info>div:first-child{display:flex;flex-direction:column;gap:4px}
.webcam-info strong{color:var(--blue-dark)}
.webcam-info span{font-size:13px;color:var(--muted)}
.webcam-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.webcam-page-forca{aspect-ratio:16/9}
.webcam-page-forca img{width:100%;height:100%;object-fit:cover}
.panel-title strong span{font-size:13px;color:#647f98}
.live-highlight .panel-title strong span{color:#d4e7f8}
@media(max-width:1200px){
.weather-kpi-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:820px){
.meteo-section-head{align-items:stretch;flex-direction:column}
.weather-kpi-grid{grid-template-columns:repeat(2,1fr)}
.home-cams-grid,.webcam-page-grid{grid-template-columns:1fr}
.webcam-big-card:first-child{grid-column:auto}
.webcam-info{align-items:stretch;flex-direction:column}
.webcam-actions{justify-content:flex-start}
}
@media(max-width:520px){
.weather-kpi-grid{grid-template-columns:1fr 1fr}
.weather-kpi{padding:10px}
.weather-kpi strong{font-size:18.9px}
.home-cam-card .panel-footer{align-items:flex-start;flex-direction:column;padding:8px 10px}
.home-cam-card .panel-footer>div{flex-direction:column;gap:4px}
}
.page-loading-bar{position:fixed;z-index:99999;top:0;left:0;width:10%;height:4px;pointer-events:none;background:linear-gradient(90deg,#19a7e0,#ffd34e);box-shadow:0 0 10px rgba(25,167,224,.65);transition:width .2s ease,opacity .35s ease}
.page-loading-bar.is-complete{opacity:0;transition:width .18s ease,opacity .35s ease .1s}
@media(prefers-reduced-motion:reduce){.page-loading-bar{transition:none}.page-loading-bar.is-complete{transition:opacity .1s linear}}
