@charset "UTF-8";
:root{--sky-image:url('./assets/sky-day.webp');color-scheme:light;--ink:#172e45;--muted:#51687a;--paper:#edf3f7;--panel:rgba(255,255,255,.76);--solid:#f4f8fc;--border:rgba(255,255,255,.8);--line:rgba(38,74,108,.11);--blue:#235e94;--blue-soft:rgba(67,134,190,.1);--selected:#234e75;--on-selected:#fff;--shadow:0 16px 60px -32px rgba(27,61,88,.35),inset 0 1px 0 #fff;--c1:#167cac;--c2:#a06a23;--c3:#8869ac;--c4:#417b71;--c5:#ba6773;--sunny:#fff3d9;--rainy:#e7f1fb;--cloudy:#eaf0f5;--sky-y:0px;--mist-y:0px;--descent:0;--ease:cubic-bezier(.2,.75,.25,1)}
html[data-theme=dark]{color-scheme:dark;--ink:#ebf3fa;--muted:#a8bacb;--paper:#111f31;--panel:rgba(24,42,61,.88);--solid:#1a2c40;--border:rgba(191,218,242,.17);--line:rgba(186,211,235,.12);--blue:#b2d9fa;--blue-soft:rgba(121,180,225,.12);--selected:#c0dcf3;--on-selected:#172f45;--shadow:0 18px 60px -30px rgba(0,8,20,.65),inset 0 1px 0 rgba(225,240,255,.1);--c1:#6dbbdf;--c2:#e3ba78;--c3:#b8a0e1;--c4:#86bcae;--c5:#e8a3ad;--sunny:#3b3a33;--rainy:#233d55;--cloudy:#263749}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:22px}body{margin:0;background:var(--paper);color:var(--ink);font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button,a,summary,input,select{-webkit-tap-highlight-color:transparent}button,select,summary{cursor:pointer}button{border:0}button,a,summary{touch-action:manipulation}button{transition:background .22s,color .22s,box-shadow .3s,transform .3s var(--ease)}button:active{transform:scale(.97)}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--blue);outline-offset:4px}button:disabled{cursor:default}a{color:inherit;text-underline-offset:4px}h1,h2,h3,p{margin:0}h2{font-size:23px;letter-spacing:-.7px;line-height:1.3;font-weight:550}button svg{pointer-events:none}svg{display:block}.sr,caption{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}[hidden]{display:none!important}.skip{position:fixed;left:16px;top:-100px;z-index:100;padding:12px 18px;border-radius:30px;background:var(--solid)}.skip:focus{top:16px}.fine,.sub{color:var(--muted);font-size:12px}.eyebrow,.intro-kicker{font-size:10px;text-transform:uppercase;letter-spacing:2px;font-weight:650;color:var(--muted)}
.atmosphere{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:var(--paper)}.sky-photo{position:absolute;inset:-90px -40px;background:center 38%/cover no-repeat var(--sky-image);transform:translate3d(0,var(--sky-y),0);will-change:transform;opacity:.87}.sky-tint{position:absolute;inset:0;background:linear-gradient(180deg,rgba(238,247,255,.2),rgba(232,243,252,.1) 35%,var(--paper) 100%)}.mist{position:absolute;inset:-10% -10% -35%;background:center bottom/cover no-repeat var(--sky-image);transform:translate3d(0,var(--mist-y),0);opacity:calc(var(--descent)*.45);mask-image:linear-gradient(transparent 30%,#000 82%);-webkit-mask-image:linear-gradient(transparent 30%,#000 82%);will-change:transform,opacity}.atmosphere:after{content:"";position:absolute;inset:0;background:var(--paper);opacity:calc(var(--descent)*.58)}html[data-theme=dark] .sky-photo{filter:brightness(.3) saturate(.65);opacity:.8}html[data-theme=dark] .sky-tint{background:linear-gradient(180deg,rgba(12,28,48,.5),rgba(17,31,49,.2) 35%,var(--paper))}html[data-theme=dark] .mist{filter:brightness(.28) saturate(.5)}
.shell{width:min(1180px,calc(100% - 72px));margin:auto}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:30px 0 26px}.brand{display:flex;gap:10px;align-items:center}.brandicon{width:45px;height:53px;color:var(--ink)}.wordmark{font-size:26px;letter-spacing:-1.25px;font-weight:650;line-height:1.25}.wordmark span{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-weight:400}.wordmark sup{font-size:23px;font-weight:400;margin-left:1px;color:var(--blue)}.slogan{font-size:10px;letter-spacing:.65px;margin-top:3px;color:var(--muted)}.preferences{display:flex;align-items:flex-start;gap:18px}.pref-label{font-size:9px;letter-spacing:1.4px;text-transform:uppercase;margin-bottom:5px;color:var(--muted)}.seg{display:flex;gap:2px;padding:4px;border:1px solid var(--border);background:rgba(241,248,255,.25);border-radius:30px;box-shadow:0 4px 16px -12px #334f64}.seg button{background:transparent;font-size:11px;padding:8px 13px;border-radius:22px;min-height:35px;white-space:nowrap;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--panel);color:var(--ink);box-shadow:0 2px 5px #1e3c5520}.unitnote{font-size:9px;color:var(--muted);margin:4px 0 0 8px}.intro{text-align:center;margin:4px 0 18px}.intro-kicker{font-weight:450;letter-spacing:3px}.searcharea{position:relative;z-index:6;width:min(570px,100%);margin:0 auto}.searchbox{position:relative}.searchform{display:flex;align-items:center;gap:12px;border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow);border-radius:40px;padding:7px 8px 7px 21px;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}.searchform>svg{width:19px;flex-shrink:0;stroke:var(--muted);stroke-width:1.6;fill:none}.searchform input{min-width:0;flex:1;border:0;background:transparent;outline:none;padding:7px 0;font-size:15px}.searchform:focus-within{outline:2px solid var(--blue);outline-offset:3px}.primary{background:var(--selected);color:var(--on-selected);border:1px solid transparent;border-radius:30px;padding:10px 22px;min-height:43px}.primary:hover{box-shadow:0 5px 17px #1d537835;transform:translateY(-1px)}.source-setting{margin:10px auto 0;text-align:center;font-size:11px;color:var(--muted)}.source-setting summary{list-style:none;display:inline-flex;align-items:center;gap:6px;padding:4px}.source-setting summary::-webkit-details-marker{display:none}.source-setting summary:after{content:none}.source-setting[open]{background:var(--solid);padding:8px 12px 14px;border:1px solid var(--line);border-radius:17px}.source-setting p{margin:4px auto 10px;max-width:410px}.source-setting select{max-width:100%;border:1px solid var(--line);border-radius:20px;padding:8px 14px;background:var(--panel)}.search-results{position:absolute;top:calc(100% + 10px);inset-inline:0;background:var(--solid);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow);padding:8px;z-index:10}.search-results button{display:block;text-align:left;border-radius:15px;background:transparent;width:100%;padding:12px 16px}.search-results button:hover,.search-results button:focus-visible{background:var(--blue-soft)}.search-results small{display:block;color:var(--muted)}.search-results p{padding:12px}#searchStatus:empty{display:none}.demo{text-align:center;font-size:9px;letter-spacing:1.4px;color:var(--muted);margin:16px 0 0}.summary-card{display:grid;grid-template-columns:1fr 320px 1fr;align-items:center;gap:30px;min-height:335px;position:relative;padding:16px 40px 0}.summary-place{z-index:1}.summary-place h1{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:64px;line-height:1.08;letter-spacing:-3px;margin:12px 0}.summary-place .sub{max-width:230px;font-size:12px}.summary-weather{margin-top:22px;font-size:15px;line-height:1.55}.summary-weather em{display:block;font-family:Georgia,serif;font-size:20px;font-weight:400}.weather-orb{position:relative;isolation:isolate;display:grid;place-items:center;width:294px;height:294px;justify-self:center;border-radius:50%;background:#b4d2e6;box-shadow:0 12px 35px -16px #43749f80,0 0 70px 2px #fff7,0 0 0 1px #ffffffa0;transform:translate3d(0,calc(var(--sky-y)*-.08),0)}.orb-surface{position:absolute;inset:0;border-radius:50%;overflow:hidden;z-index:-2}.orb-texture{position:absolute;inset:-5% -30%;background:var(--sky-image) 47% 75% /cover;animation:cloud-drift 50s ease-in-out infinite alternate}.orb-surface:after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 31% 24%,#ffffff70,transparent 28%),radial-gradient(circle at 36% 33%,transparent 25%,#2e608c50 68%,#1d385f7a 100%);box-shadow:inset -17px -12px 28px #2a50713b,inset 9px 7px 19px #ffffffb0}.orb-orbit{position:absolute;inset:-12px;border:1px solid #f4fbff9c;border-radius:50%;transform:rotate(-24deg) scaleX(1.1);z-index:-1}.orb-orbit:after{content:"";position:absolute;top:47px;right:26px;width:7px;height:7px;border-radius:50%;background:#fff5d6;box-shadow:0 0 14px #fff}.orb-copy{text-align:center;color:#133650;text-shadow:0 1px 12px #fff5;padding-top:4px}.orb-copy .eyebrow{color:#264964;font-size:9px;letter-spacing:2px}.summary-degree{display:flex;align-items:center;justify-content:center;position:relative}.summary-degree strong{font-weight:400;letter-spacing:-7px;font-size:94px;line-height:1.2}.orb-copy .wx{width:39px;height:39px;margin:1px auto 0}.orb-copy .fine{color:#264964;font-size:10px;margin-top:4px}.orb-ground{position:absolute;width:210px;height:11px;bottom:-21px;left:42px;border-radius:50%;filter:blur(12px);background:#365d7350}html[data-theme=dark] .weather-orb{background:#1b3b56;box-shadow:0 15px 40px -18px #040e20,0 0 60px #a2d0ff0a,0 0 0 1px #cee8ff50}html[data-theme=dark] .orb-texture{filter:brightness(.5) saturate(.6)}html[data-theme=dark] .orb-surface:after{background:radial-gradient(circle at 31% 24%,#c6e3ff35,transparent 28%),radial-gradient(circle at 36% 33%,transparent 25%,#1c375c70 68%,#050e267a 100%);box-shadow:inset -17px -12px 28px #0b183770,inset 7px 6px 19px #b0d8fa50}html[data-theme=dark] .orb-copy{color:#f4faff;text-shadow:0 2px 15px #143a57}html[data-theme=dark] .orb-copy .eyebrow,html[data-theme=dark] .orb-copy .fine{color:#e2eff9}html[data-theme=dark] .orb-orbit{border-color:#b4d8f44d}
.summary-range{padding:22px 23px;background:var(--panel);border:1px solid var(--border);border-radius:23px;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);box-shadow:var(--shadow)}.range-values{display:flex;gap:13px;align-items:center;margin:17px 0 4px}.range-values b{font-size:24px;font-weight:500;letter-spacing:-1px}.range-track{position:relative;height:5px;border-radius:20px;flex:1;background:linear-gradient(90deg,#95c6e5,#dec9a3)}.range-track span{position:absolute;top:50%;width:11px;height:11px;border:2px solid var(--solid);border-radius:50%;background:var(--ink);transform:translate(-50%,-50%)}.summary-range>.fine{font-size:11px;margin-bottom:15px}.summary-facts{display:flex;gap:12px;border-top:1px solid var(--line);padding-top:14px;font-size:10px;color:var(--muted)}.summary-facts span{flex:1}.summary-facts b{display:block;color:var(--ink);font-size:16px;font-weight:550;margin-top:3px}.journey-row{display:flex;align-items:center;justify-content:center;position:relative;margin:24px 0 31px;min-height:40px}.scroll-cue{display:flex;align-items:center;gap:14px;font-size:10px;text-transform:uppercase;letter-spacing:2px;text-decoration:none}.scroll-cue span{display:grid;place-items:center;width:35px;height:35px;border:1px solid var(--border);border-radius:50%;background:var(--panel);font-size:18px;transition:transform .35s var(--ease)}.scroll-cue:hover span{transform:translateY(4px)}.motion-toggle{position:absolute;right:0;border:1px solid var(--border);background:var(--panel);border-radius:30px;padding:8px 12px;font-size:10px;color:var(--muted);min-height:36px}.motion-toggle[aria-pressed=true]{background:var(--solid)}
.outlook{padding:23px 25px 15px;border:1px solid var(--border);border-radius:26px;background:var(--panel);box-shadow:var(--shadow);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);scroll-margin-top:24px}.outlook-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.outlook-heading h2{font-family:Georgia,serif;font-size:26px;font-weight:400;letter-spacing:-.8px}.outlook-heading>span{font-size:10px;color:var(--muted)}.day-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:7px}.day-grid .day-card{min-width:0;background:transparent;border:1px solid var(--line);border-radius:17px;padding:11px 4px 10px;position:relative;box-shadow:0 3px 15px transparent;display:flex;flex-direction:column;align-items:center;justify-content:center}.day-grid .day-card[aria-pressed=true]{background:var(--selected);color:var(--on-selected);border-color:var(--selected);box-shadow:0 9px 20px -13px #193f6c}.day-name{font-weight:650;font-size:11px;text-transform:capitalize}.day-date{font-size:9px;color:var(--muted);margin-top:1px}.day-grid .wx{width:35px;height:35px;margin:9px 0 7px}.day-temps{display:flex;gap:7px;font-size:13px;white-space:nowrap}.day-temps b{font-weight:650}.day-temps>span{color:var(--muted)}.day-grid small{font-size:8px;color:var(--muted);margin-top:5px}.day-grid .day-card[aria-pressed=true] :is(.day-date,small,.day-temps>span){color:inherit;opacity:.78}.outlook-note{font-size:9px;color:var(--muted);margin-top:12px;text-align:right}.forecast{margin-top:18px;padding:24px 25px 0;border:1px solid var(--border);border-radius:26px;background:var(--panel);box-shadow:var(--shadow);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px);overflow:clip}.forecast-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.forecast-head h2{font-family:Georgia,serif;font-size:29px;font-weight:400}.section-kicker{font-size:9px;color:var(--muted);letter-spacing:2px;text-transform:uppercase;margin-bottom:5px}.metrics{display:flex;gap:3px;background:var(--blue-soft);padding:4px;border:1px solid var(--line);border-radius:30px}.metrics button{padding:8px 12px;font-size:11px;min-height:38px;border-radius:30px;background:transparent;color:var(--muted);white-space:nowrap;display:flex;align-items:center;gap:5px}.metrics button[aria-pressed=true]{background:var(--solid);color:var(--ink);box-shadow:0 3px 9px #193c5410}.mico{font-size:15px}.datebar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:19px 0 8px;min-height:28px;font-size:11px}.selected-day{text-transform:capitalize;font-weight:550}.legend{display:flex;gap:13px;font-size:9px;color:var(--muted)}.legend span:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#d6a63d;margin-right:5px}.legend span:nth-child(2):before{background:#62a5d8}.legend span:nth-child(3):before{background:#9baebc}.tablewrap{overflow:auto;scrollbar-width:thin;border-radius:14px}table{width:100%;border-collapse:separate;border-spacing:4px 4px;table-layout:fixed;text-align:center;font-variant-numeric:tabular-nums}thead th{position:relative;height:42px;font-size:11px;font-weight:600;border-bottom:1px solid var(--line);padding:0 2px 9px}thead th:first-child{width:72px;font-weight:450;color:var(--muted);text-align:left;padding-left:9px}thead th:nth-child(2){color:var(--blue)}thead small{display:block;font-size:8px;font-weight:400}thead .source-dot{display:block;height:3px;width:22px;border-radius:5px;margin:5px auto 0;background:var(--source)}tbody th{font-size:11px;font-weight:450}tbody th small{display:none}.hour-button{display:flex;align-items:center;justify-content:space-between;padding:7px 9px;width:100%;min-height:40px;border-radius:11px;background:transparent;text-align:left;font-size:11px;color:var(--muted)}.hour-button:after{content:"↗";opacity:0;transition:opacity .2s}.hour-button:hover:after,.hour-button:focus-visible:after{opacity:1}.hour-button.current-time{font-weight:650;color:var(--blue);background:var(--blue-soft)}.cell{height:41px;display:flex;gap:7px;align-items:center;justify-content:center;border-radius:10px;background:var(--cloudy);transition:background .2s,box-shadow .2s}.cell b{font-size:14px;font-weight:550}.cell.sunny{background:var(--sunny)}.cell.rainy{background:var(--rainy)}.cell.median-cell{background:var(--blue-soft)}.median-cell>span{display:flex;align-items:baseline;gap:8px}.median-cell b{font-size:15px;font-weight:700}.median-cell small{font-size:9px;color:var(--muted)}.wx{width:30px;height:30px;flex-shrink:0;filter:drop-shadow(0 2px 2px #294c6812)}tr.hour-selected .cell{box-shadow:inset 0 0 0 1px var(--blue)}.tablefoot{display:flex;justify-content:space-between;gap:15px;font-size:10px;color:var(--muted);padding:10px 4px 15px}.tablefoot .fine{font-size:10px}.data-note{margin:10px 3px 5px;background:var(--blue-soft);padding:11px 14px;border:1px solid var(--line);border-radius:12px;color:var(--muted);font-size:11px}.data-note summary{font-weight:550;color:var(--ink)}.data-note p{max-width:760px;margin-top:8px}.data-note a{white-space:nowrap}.participate{margin:0 -25px;padding:17px 25px;border-top:1px solid var(--line);display:flex;align-items:center;gap:12px;background:var(--blue-soft)}.vote-symbol{display:grid;place-items:center;width:33px;height:33px;border-radius:50%;font-size:17px;background:var(--panel)}.participate strong{font-weight:550;font-size:12px}.participate .fine{font-size:10px}.participate button{margin-left:auto;border:1px solid var(--line);border-radius:30px;background:var(--panel);padding:9px 17px;font-size:11px;min-height:40px;white-space:nowrap}.lower{display:grid;grid-template-columns:1.15fr 1fr;gap:35px;margin:32px 0 0}.lower h2{font-size:20px;margin-bottom:16px;font-family:Georgia,serif;font-weight:400}.source-panel{border:1px solid var(--line);background:var(--panel);border-radius:17px;margin-bottom:8px}.source-panel>summary{display:flex;align-items:center;gap:12px;padding:11px 15px;list-style:none;min-height:63px}.source-panel>summary::-webkit-details-marker{display:none}.source-panel b{font-size:12px}.source-panel .sub{font-size:9px}.source-badge{display:grid;place-items:center;flex-shrink:0;width:33px;height:33px;color:var(--source);border:1px solid var(--source);border-radius:50%;font-size:10px;font-weight:700}.source-panel summary>.wx{margin-left:auto;width:25px;height:25px}.sum-temp{margin-left:auto;font-size:17px}.source-panel summary>.wx+.sum-temp{margin-left:0}.arrow{color:var(--muted);transition:transform .3s}.source-panel[open] .arrow{transform:rotate(180deg)}.source-detail{border-top:1px solid var(--line);padding:15px;font-size:10px;color:var(--muted)}.mini{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:12px 0}.mini>span{display:flex;align-items:center;flex-direction:column;padding:6px 2px;background:var(--blue-soft);border-radius:8px;font-size:9px}.mini .wx{width:24px;height:24px;margin:3px 0}.community>details{border-bottom:1px solid var(--line);padding:0 0 15px;margin-bottom:14px}.community summary{font-size:12px;padding:5px 0}.community p{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.7}.community #resultsScope{margin:9px 0;font-size:9px}.rank{display:grid;grid-template-columns:90px 1fr 35px;gap:10px;align-items:center;font-size:11px;padding:9px 0}.rank small{display:block;color:var(--muted);font-size:9px}.track{height:4px;background:var(--line);border-radius:5px;overflow:hidden}.track span{display:block;height:100%;background:var(--source)}.rank>.fine{font-size:10px}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;padding:21px 0 30px;margin-top:27px;font-size:9px;color:var(--muted)}.footlogo{font-size:10px}
dialog{padding:27px;border:1px solid var(--border);border-radius:26px;background:var(--solid);color:var(--ink);box-shadow:0 40px 100px #06172555;width:min(580px,calc(100% - 28px));max-height:85dvh;overflow:auto}dialog::backdrop{background:#0c243c66;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.dialog-head h2{font-family:Georgia,serif;font-weight:400;font-size:25px;margin:7px 0 10px}.dialog-head button{background:var(--blue-soft);border-radius:50%;flex-shrink:0;width:36px;height:36px}dialog p{margin:9px 0}dialog .eyebrow{font-size:8px}.vrow{display:grid;grid-template-columns:1fr 27px 40px 63px 63px;align-items:center;gap:9px;padding:11px 0;border-bottom:1px solid var(--line);font-size:12px}.vrow .wx{width:27px;height:27px}.vrow button{border:1px solid var(--line);background:transparent;padding:8px 4px;border-radius:20px;font-size:11px}.vrow button[aria-pressed=true]{background:var(--selected);color:var(--on-selected)}.status{font-size:11px;color:var(--blue);min-height:1.5em}.hour-summary{margin:10px 0 18px;padding:16px 20px;display:flex;align-items:center;justify-content:space-between;background:var(--blue-soft);border-radius:17px}.hour-summary strong{font-size:34px;letter-spacing:-1px;font-weight:450}.hour-summary small{display:block;color:var(--muted);font-size:10px}.hour-source{display:grid;grid-template-columns:10px 1fr 36px 70px;gap:9px;align-items:center;border-bottom:1px solid var(--line);padding:12px 2px;font-size:12px}.hour-source>i{width:5px;height:21px;border-radius:4px;background:var(--source)}.hour-source b{text-align:right;font-size:16px}.hour-source small{display:block;color:var(--muted);font-size:9px}.hour-nav{display:flex;justify-content:space-between;gap:10px;margin-top:20px}.hour-nav button{border-radius:30px;background:var(--blue-soft);border:1px solid var(--line);padding:10px 16px;min-height:41px;font-size:11px}.hour-nav button:disabled{opacity:.4}
@keyframes cloud-drift{from{transform:translate3d(-3%,0,0) scale(1.02)}to{transform:translate3d(4%,-2%,0) scale(1.06)}}
html[data-motion=paused] *,html[data-motion=reduced] *{animation-play-state:paused!important}html[data-motion=paused],html[data-motion=reduced]{scroll-behavior:auto}html[data-motion=paused] .sky-photo,html[data-motion=reduced] .sky-photo,html[data-motion=paused] .mist,html[data-motion=reduced] .mist{will-change:auto}
@media(hover:hover){.day-grid button.day-card:hover{transform:translateY(-4px);box-shadow:0 10px 20px -15px #214b79;border-color:var(--blue)}.seg button:hover,.metrics button:hover{color:var(--ink);background:var(--panel)}.source-panel>summary:hover{background:var(--blue-soft);border-radius:17px}.participate button:hover{transform:translateY(-2px);box-shadow:0 8px 15px -8px #184f7850}tbody tr:hover .cell{box-shadow:inset 0 0 0 1px var(--line)}tbody tr:hover .hour-button{color:var(--blue);background:var(--blue-soft)}}
@media(min-width:1400px){.shell{width:min(1200px,calc(100% - 120px))}.summary-card{min-height:355px;padding-inline:60px}.weather-orb{width:310px;height:310px}}
@media(max-width:1050px){.shell{width:calc(100% - 44px)}.summary-card{grid-template-columns:1fr 260px 1fr;gap:22px;padding:25px 8px 0;min-height:310px}.weather-orb{width:250px;height:250px}.summary-place h1{font-size:53px}.summary-range{padding:20px 18px}.summary-degree strong{font-size:80px}.summary-weather{font-size:13px}.summary-weather em{font-size:18px}.orb-ground{width:180px;left:35px}.metrics button{padding-inline:10px}.outlook,.forecast{padding-left:18px;padding-right:18px}.participate{margin-inline:-18px;padding-inline:18px}.day-grid{gap:5px}.median-cell>span{display:flex;flex-direction:column;align-items:center;gap:0}.median-cell small{line-height:1.3}.lower{gap:25px}}
@media(max-width:760px){.shell{width:calc(100% - 32px)}.top{padding:20px 0 19px;gap:16px}.brandicon{width:34px;height:42px}.wordmark{font-size:23px}.brand{gap:6px}.slogan{font-size:8px;letter-spacing:.35px}.preferences{gap:7px}.pref-label{display:none}.seg{padding:3px}.seg button{padding:7px 9px;font-size:10px;min-height:33px}.unitnote{display:none}.preferences [data-unit] .unit-word{display:none}.intro{margin:0 0 13px}.intro-kicker{font-size:9px;letter-spacing:2px}.summary-card{grid-template-columns:1fr 220px 1fr;gap:14px;padding-inline:0;min-height:275px}.weather-orb{width:212px;height:212px}.summary-place h1{font-size:43px;letter-spacing:-2px}.summary-place .sub{font-size:10px}.summary-weather{margin-top:15px;font-size:11px}.summary-weather em{font-size:15px}.summary-range{padding:17px 13px;border-radius:19px}.summary-range .eyebrow{font-size:8px;letter-spacing:1.4px}.range-values{gap:8px;margin-top:12px}.range-values b{font-size:20px}.summary-degree strong{font-size:71px;letter-spacing:-4px}.orb-copy .eyebrow{font-size:8px;letter-spacing:1.2px}.orb-copy .wx{width:31px;height:31px}.orb-ground{left:27px;width:160px}.summary-facts{gap:8px}.summary-facts b{font-size:13px}.summary-range>.fine{font-size:9px}.forecast-head{align-items:flex-start;flex-direction:column;gap:15px}.metrics{align-self:stretch;justify-content:space-between}.metrics button{flex:1;justify-content:center}.outlook-heading h2{font-size:22px}.outlook-heading>span{font-size:9px}.day-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.day-grid .day-card{display:grid;grid-template-columns:1fr 1fr;padding:9px 8px;text-align:left;column-gap:4px;border-radius:13px}.day-name{font-size:10px;grid-column:1/-1}.day-date{grid-column:1}.day-grid .wx{grid-column:2;grid-row:2/4;margin:0;width:27px;height:27px;justify-self:end}.day-temps{grid-row:4;grid-column:1/-1;gap:6px;font-size:12px}.day-grid small{grid-row:5;grid-column:1/-1;font-size:8px;margin-top:0}.outlook-heading{margin-bottom:13px}.day-date{font-size:8px}.forecast-head h2{font-size:26px}.cell{gap:4px}.cell b{font-size:12px}.cell .wx{width:24px;height:24px}.lower{grid-template-columns:1fr;gap:23px}.source-panel>summary{padding:12px 16px}.community h2{margin-bottom:10px}.journey-row{margin:20px 0}.scroll-cue{font-size:9px;letter-spacing:1.5px}.motion-toggle{font-size:9px;padding:8px 10px}.scroll-cue span{width:30px;height:30px}.outlook-note{font-size:8px}footer{flex-direction:column;gap:5px}.mini{grid-template-columns:repeat(8,1fr)}}
@media(max-width:560px){.shell{width:calc(100% - 28px)}.top{flex-wrap:wrap;justify-content:center;padding-top:17px;padding-bottom:16px;gap:14px}.brand{margin-right:auto}.brandicon{width:32px}.wordmark{font-size:22px}.preferences{gap:6px;margin-top:3px}.seg button{font-size:9px;padding:6px 8px;min-height:31px}.seg button .mode-word{display:none}.preferences [data-unit] .unit-word{display:none}.preferences [data-unit]{font-size:12px}.preferences [data-theme] .mode-symbol{font-size:14px}.pref-label{display:block;font-size:8px;letter-spacing:.3px;text-transform:none;margin:0 0 3px 8px}.slogan{max-width:155px}.intro{margin-bottom:14px}.intro-kicker{letter-spacing:1.5px;font-size:8px}.searchform{padding:6px 6px 6px 17px;gap:9px}.searchform input{font-size:14px}.searchform .primary{font-size:12px;padding:9px 18px;min-height:40px}.source-setting{font-size:10px;margin-top:7px}.demo{margin-top:12px;letter-spacing:.8px;font-size:8px}.summary-card{display:grid;grid-template-columns:1.12fr 1fr;gap:16px 22px;min-height:0;padding:21px 3px 13px}.summary-place{grid-column:1/-1;text-align:center}.summary-place h1{font-size:46px;letter-spacing:-1.7px;margin:0 0 4px}.summary-place>.intro-kicker{display:none}.summary-place .sub{max-width:none;font-size:10px}.summary-weather{font-size:11px;margin-top:5px}.summary-weather em{display:inline;font-family:inherit;font-size:11px;font-style:normal}.weather-orb{width:min(100%,193px);height:auto;aspect-ratio:1;justify-self:center;grid-row:2}.orb-orbit{inset:-7px}.orb-orbit:after{top:30px;right:18px;width:5px;height:5px}.orb-copy .eyebrow{font-size:7px;letter-spacing:1px}.summary-degree strong{font-size:67px;line-height:1.15}.orb-copy .wx{width:28px;height:28px;margin:0 auto}.orb-copy .fine{font-size:8px;margin-top:2px}.orb-ground{width:80%;left:10%;bottom:-12px}.summary-range{padding:17px 14px;grid-column:2;grid-row:2}.summary-range .eyebrow{letter-spacing:1px;font-size:8px}.range-values{gap:7px;margin-top:10px}.range-values b{font-size:21px}.range-track{height:4px}.summary-range>.fine{margin-bottom:11px;font-size:9px}.summary-facts{padding-top:10px;gap:8px;font-size:9px}.summary-facts b{font-size:13px}.journey-row{justify-content:space-between;margin:18px 0}.motion-toggle{position:static;font-size:8px;min-height:34px;padding:7px 9px}.scroll-cue{font-size:8px;letter-spacing:1px;gap:7px}.scroll-cue span{width:28px;height:28px;font-size:16px}.outlook{padding:17px 11px 11px;border-radius:20px}.outlook-heading{gap:6px}.outlook-heading h2{font-size:21px;letter-spacing:-.5px;max-width:210px}.outlook-heading>span{font-size:8px;text-align:right;max-width:76px}.day-grid{gap:5px}.day-grid .day-card{padding:8px 5px;gap:0;grid-template-columns:1fr;text-align:center;justify-items:center;min-height:122px}.day-name{font-size:9px}.day-date{grid-column:1;grid-row:2;font-size:8px}.day-grid .wx{grid-column:1;grid-row:3;justify-self:center;width:30px;height:30px;margin:5px 0}.day-temps{grid-column:1;grid-row:4;font-size:11px;gap:5px}.day-grid small{grid-column:1;grid-row:5;font-size:7px;margin-top:4px}.outlook-note{text-align:left;font-size:8px}.forecast{margin-top:14px;padding:19px 8px 0;border-radius:20px}.forecast-head{padding-inline:4px;gap:12px}.forecast-head h2{font-size:26px}.section-kicker{font-size:8px;letter-spacing:1.5px}.metrics{padding:3px;gap:1px}.metrics button{font-size:9px;padding:7px 4px;gap:3px;min-height:36px}.mico{font-size:13px}.datebar{padding:0 5px;margin-top:13px;font-size:10px}.legend{font-size:8px;gap:7px}.legend span:before{width:5px;height:5px;margin-right:3px}table{border-spacing:2px 3px;min-width:0}thead th{font-size:9px;height:44px;padding:0 0 8px}thead th:first-child{width:44px;padding-left:4px;font-size:9px}thead th:nth-child(2){width:53px}thead small{font-size:7px}.cell{flex-direction:column;gap:0;height:48px;border-radius:8px}.cell .wx{width:23px;height:23px;margin-top:0}.cell b{font-size:11px;line-height:1.25}.median-cell b{font-size:14px}.median-cell small{font-size:7px}.hour-button{padding:7px 3px;min-height:46px;font-size:9px;display:block;text-align:left}.hour-button:after{display:none}.hour-button.current-time{background:transparent}.current-time small{display:block;font-size:7px}.tablefoot{font-size:8px;gap:8px;padding:10px 4px 12px;flex-wrap:wrap}.tablefoot .fine{font-size:8px}.data-note{font-size:10px;padding:10px}.participate{margin:0 -8px;padding:13px 12px;gap:7px}.vote-symbol{width:28px;height:28px;font-size:14px}.participate strong{font-size:10px}.participate .fine{font-size:8px}.participate button{font-size:10px;min-height:37px;padding:8px 12px}.lower{margin-top:25px}.lower h2{font-size:21px;margin-bottom:12px}.mini{grid-template-columns:repeat(6,1fr)}dialog{padding:21px 17px}.dialog-head h2{font-size:24px}.vrow{grid-template-columns:1fr 24px 31px 56px 56px;gap:7px;font-size:11px}.vrow button{font-size:10px}.vrow .wx{width:24px;height:24px}.hour-summary{padding:14px}.hour-summary strong{font-size:29px}.hour-source{grid-template-columns:8px 1fr 30px 65px}}
@media(max-width:365px){.shell{width:calc(100% - 20px)}.brandicon{width:27px}.wordmark{font-size:20px}.brand{gap:3px}.slogan{font-size:7px}.preferences{gap:4px}.seg button{padding:5px 6px}.summary-card{gap:14px}.summary-range{padding:13px 10px}.summary-degree strong{font-size:58px}.orb-copy .eyebrow{font-size:6px}.summary-range .eyebrow{font-size:7px}.summary-facts b{font-size:12px}.outlook-heading h2{font-size:19px}.day-name{font-size:8px}.day-temps{font-size:10px;gap:4px}thead th{font-size:8px}thead th:first-child{width:39px}thead th:nth-child(2){width:44px}.cell b{font-size:10px}.cell.median-cell b{font-size:13px}.metrics button{font-size:8px}.mico{font-size:12px}.vrow{gap:5px;grid-template-columns:1fr 24px 27px 52px 52px}}
@media(max-width:560px){.top{justify-content:center;gap:10px}.brand{margin:0}.preferences{width:100%;justify-content:center;gap:13px;margin:0}.pref-label{display:none}.preferences [data-unit] .unit-word,.seg button .mode-word{display:inline}.preferences [data-unit],.seg button{font-size:10px;padding:6px 10px}.preferences [data-theme] .mode-symbol{font-size:12px}.intro{margin-top:0;margin-bottom:12px}.sky-photo{inset:-50px -10px;background-position:52% 45%}.mist{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*:before,*:after{animation:none!important;transition:none!important}.sky-photo,.mist{will-change:auto!important}.weather-orb{transform:none}}
/* V8 — a visible sky, a larger globe, all current weather inside it. */
:root{--paper:#dcebf5;--panel:rgba(251,254,255,.88);--ink:#10273e;--muted:#4c6378;--sky-image:url('./assets/sky-day.webp');--scene-shift:0px;--scene-scale:1.1;--cloud-pass:0;--scene-height:190vh}
html[data-theme=dark]{--paper:#07172d;--panel:rgba(16,34,54,.88);--ink:#edf4fc;--muted:#b0c3d7}
.atmosphere{z-index:-1}.atmosphere:after{display:none}.scene-layer{position:absolute;inset:0 0 auto;height:var(--scene-height);background:center top/cover no-repeat;transform:translate3d(0,var(--scene-shift),0) scale(var(--scene-scale));transform-origin:50% 0;will-change:transform;transition:opacity .8s ease}.scene-day{background-image:url('./assets/sky-day.webp');opacity:1}.scene-night{background-image:url('./assets/sky-night.webp');opacity:0}html[data-theme=dark] .scene-day{opacity:0}html[data-theme=dark] .scene-night{opacity:1}.scene-shade{position:absolute;inset:0;background:linear-gradient(180deg,#f7fbff18,transparent 50%,#e9f3fa0a)}html[data-theme=dark] .scene-shade{background:linear-gradient(180deg,#06183225,transparent 70%,#06183215)}.cloud-crossing{position:absolute;inset:-12%;opacity:var(--cloud-pass);background:radial-gradient(ellipse at 15% 65%,#f1f7fbea,transparent 65%),radial-gradient(ellipse at 90% 20%,#fff,transparent 65%),radial-gradient(ellipse at 50% 75%,#e7f1fbd9,transparent 80%);transform:scale(calc(1 + var(--cloud-pass)*.2));pointer-events:none}html[data-theme=dark] .cloud-crossing{background:radial-gradient(ellipse at 15% 65%,#203b58e0,transparent 65%),radial-gradient(ellipse at 90% 20%,#607c9850,transparent 65%),radial-gradient(ellipse at 50% 75%,#173049d9,transparent 80%)}.wordmark{font-family:Georgia,"Times New Roman",serif;font-size:33px;font-weight:400;letter-spacing:-1.7px;color:#0b1119;line-height:1.08}.wordmark span{font-style:italic}.wordmark sup{color:inherit;font-size:21px;vertical-align:top;line-height:1.4}.slogan{font-size:12px;font-weight:550;letter-spacing:.4px;color:#233c50;margin-top:7px}.slogan span{font-weight:700}html[data-theme=dark] .wordmark{color:#f3f7fb}html[data-theme=dark] .slogan{color:#dce6ef}.top{padding-bottom:22px}.intro{margin:0 0 12px}.intro .intro-kicker{font-size:10px;font-weight:550;letter-spacing:2px}.source-setting{color:var(--ink)}.source-setting>summary{background:var(--panel);border:1px solid var(--border);border-radius:25px;padding:6px 13px}.source-setting[open]>summary{border:0}.data-state{display:flex;justify-content:center;gap:12px;align-items:center;margin-top:14px;min-height:26px}.data-state .demo{margin:0;letter-spacing:.5px;background:var(--panel);border-radius:20px;padding:4px 9px;font-size:9px}.data-state button{font-size:9px;background:var(--panel);border:1px solid var(--border);padding:5px 10px;border-radius:20px;color:var(--muted)}.data-state button:disabled{opacity:.6}.summary-card{grid-template-columns:1fr minmax(350px,500px) 1fr;gap:18px;min-height:530px;padding:0 34px;margin:0;align-items:center}.weather-orb{width:500px;height:500px;max-width:100%;aspect-ratio:1;display:grid;place-items:center;position:relative;isolation:isolate;background:transparent;border-radius:50%;box-shadow:none!important;transform:none!important;overflow:visible}.globe-art{position:absolute;inset:-4%;z-index:-3;animation:globe-turn 85s ease-in-out infinite alternate;transform-origin:50% 50%;pointer-events:none}.globe-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity 1s}.globe-night{opacity:0}html[data-theme=dark] .globe-day{opacity:0}html[data-theme=dark] .globe-night{opacity:1}.globe-glass{position:absolute;inset:9%;border-radius:50%;z-index:-2;background:radial-gradient(ellipse at center,rgba(4,33,61,.67) 5%,rgba(9,46,77,.53) 38%,rgba(15,61,95,.15) 68%,transparent 75%);pointer-events:none}.orb-orbit{inset:1%;border-color:#fff8;transform:rotate(-19deg) scaleX(1.15) scaleY(.45);z-index:-1}.orb-orbit:after{top:12%;right:16%;width:5px;height:5px;background:#fff6d7;box-shadow:0 0 10px #fff}.orb-copy{color:white!important;text-align:center;text-shadow:0 2px 10px #052746b0;padding:0;width:68%;line-height:1.35;pointer-events:none}.orb-copy h1{font-family:Georgia,"Times New Roman",serif;font-size:35px;letter-spacing:-1px;font-weight:400;line-height:1.1;margin:0}.orb-location{font-size:9px;opacity:.88;margin:5px 0 12px}.orb-copy .eyebrow{color:#e8f4ff!important;font-size:8px;letter-spacing:1.8px;font-weight:500}.summary-degree strong{font-family:Georgia,"Times New Roman",serif;font-size:93px;font-weight:400;line-height:1.06;letter-spacing:-5px}.orb-condition{display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;margin-top:0}.orb-condition .wx{width:26px;height:26px;margin:0}.orb-copy .fine{color:#e1eef9!important;font-size:8px;margin-top:3px}.orb-range{width:70%;margin:13px auto 0;border-top:1px solid #ffffff4a;padding-top:10px}.orb-range>span{font-size:9px;color:#e1edf7}.orb-range .range-values{margin:2px auto 0;gap:12px;justify-content:center}.orb-range .range-values b{font-size:18px;color:white;font-weight:550}.orb-range .range-track{height:3px;max-width:65px;background:linear-gradient(90deg,#add5f5,#fff0c2)}.orb-range .range-track span{width:8px;height:8px;background:white;border-color:#ffffffa0}.orb-range small{font-size:8px;color:#daeaf7}.orb-facts{display:grid;grid-template-columns:repeat(4,1fr);margin:13px auto 0;gap:5px;text-align:center}.orb-facts>span{font-size:8px;color:#deeffe;border-right:1px solid #ffffff30;padding-inline:4px}.orb-facts>span:last-child{border:0}.orb-facts b{display:block;font-size:13px;font-weight:600;color:#fff;margin-top:3px;white-space:nowrap}#uvSource{display:block;font-size:7px;color:#d6e6f3;margin-top:6px}.solar-event{text-align:center;justify-self:center;display:flex;flex-direction:column;align-items:center;margin-top:30px}.solar-event>svg{width:37px;height:37px;fill:none;stroke:var(--ink);stroke-width:1.3;stroke-linecap:round;margin-bottom:7px;filter:drop-shadow(0 2px 10px #ffffffb0)}html[data-theme=dark] .solar-event>svg{filter:none}.sunrise>svg{stroke:#ae6d20}.sunset>svg{stroke:#426991}html[data-theme=dark] .sunrise>svg{stroke:#ead3a6}html[data-theme=dark] .sunset>svg{stroke:#bad6f1}.solar-event>span{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--ink)}.solar-event>strong{font-family:Georgia,serif;font-weight:400;font-variant-numeric:tabular-nums;font-size:36px;letter-spacing:-1px;margin:4px 0;color:var(--ink)}.solar-event>small{font-size:9px;color:var(--muted);background:var(--panel);padding:3px 8px;border-radius:20px}.journey-row{margin:3px 0 29px}.scroll-cue{font-size:9px;letter-spacing:1.3px;color:var(--ink);background:var(--panel);padding:7px 8px 7px 16px;border:1px solid var(--border);border-radius:40px}.scroll-cue span{border-color:var(--line);background:transparent}.forecast,.outlook{backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.metrics button{padding-inline:11px}.cell small.period-tag{font-size:8px;color:var(--muted);display:block}.cell{position:relative}.cell .period-value{display:flex;flex-direction:column;align-items:center;line-height:1.2}.cell .period-tag{opacity:.85}.cell.unavailable{background:transparent;border:1px dashed var(--line)}.day-grid .day-card:disabled{opacity:.55}.sources .source-state{font-size:9px;color:var(--muted)}.source-detail .native-periods{margin-top:13px;border-top:1px solid var(--line);padding-top:10px}.native-periods summary{padding:4px 0}.period-line{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:7px 0;border-bottom:1px solid var(--line)}.source-extra{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0;font-size:10px}.mini .period-tag{font-size:7px}.source-detail .mini span{min-width:0}.source-detail a{color:var(--blue)}.hour-source{grid-template-columns:6px 1fr 29px 88px}.hour-source b{font-size:15px}.hour-source small{font-size:9px;line-height:1.5}.hour-source .hour-period{grid-column:2/-1;font-size:10px;color:var(--muted);margin-top:-7px}.hour-source .hour-period:empty{display:none}.hour-summary small{max-width:220px}.around-you{margin-top:22px}.around-heading{display:flex;align-items:baseline;justify-content:space-between;gap:15px;margin-bottom:14px}.around-heading h2{font-family:Georgia,serif;font-size:25px;font-weight:400}.around-heading>span{font-size:9px;color:var(--muted)}.extras-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:16px;align-items:start}.extras-grid>details{background:var(--panel);border:1px solid var(--border);border-radius:23px;box-shadow:var(--shadow);overflow:hidden;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.extras-grid summary{display:flex;gap:13px;align-items:center;padding:20px;list-style:none}.extras-grid summary::-webkit-details-marker{display:none}.extra-symbol{display:grid;place-items:center;background:var(--blue-soft);width:42px;height:42px;border-radius:50%;font-size:27px;color:var(--blue);flex-shrink:0}.extras-grid summary .section-kicker{display:block;font-size:8px;letter-spacing:1.4px;margin-bottom:4px}.extras-grid summary strong{display:block;font-size:14px;letter-spacing:-.2px;font-weight:550}.extras-grid summary small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.extra-arrow{margin-left:auto;color:var(--muted)}.extra-body{border-top:1px solid var(--line);padding:15px 20px 18px;font-size:11px}.extra-body p{font-size:10px;color:var(--muted);margin:8px 0;line-height:1.7}#airPollutants{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}#airPollutants>span{background:var(--blue-soft);padding:11px 13px;border-radius:13px;color:var(--muted);font-size:10px}#airPollutants b{display:block;font-size:17px;color:var(--ink);font-weight:500}#radarMap{height:300px;width:100%;border-radius:14px;background:#d4e2e8;color:#183d55;z-index:0}.leaflet-container{font:11px/1.5 ui-sans-serif,system-ui,sans-serif}.leaflet-control-attribution{font-size:8px!important}.leaflet-control-attribution a{color:#234c7b}.radar-controls{display:flex;align-items:center;gap:10px;margin-top:11px}.radar-controls button{background:var(--blue-soft);border:1px solid var(--line);border-radius:20px;padding:8px 11px;font-size:10px;min-height:35px}.radar-controls input{width:100%;min-width:30px;accent-color:var(--blue)}.radar-controls time{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}#radarStatus{min-height:16px}.leaflet-marker-icon.wj-marker{border-radius:50%;background:#234f85;border:3px solid white;box-shadow:0 0 0 7px #377ec238}.lower{padding:22px 25px 16px;background:var(--panel);border:1px solid var(--border);border-radius:25px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);margin-top:21px}.source-panel{background:var(--blue-soft)}footer{color:var(--ink);background:var(--panel);border:1px solid var(--border);padding:16px 20px;border-radius:20px;margin-bottom:20px}.footlogo{line-height:1.7}button .mode-word,.preferences [data-unit] .unit-word{display:inline}
@keyframes globe-turn{from{transform:rotate(-6deg) scale(1)}to{transform:rotate(9deg) scale(1.012)}}
@media(min-width:1400px){.summary-card{min-height:540px;padding:0 60px}.weather-orb{width:510px;height:510px}}
@media(max-width:1050px){.summary-card{grid-template-columns:1fr minmax(330px,460px) 1fr;padding:8px 10px;gap:5px;min-height:495px}.weather-orb{width:460px;height:460px}.orb-copy h1{font-size:32px}.summary-degree strong{font-size:85px}.orb-range{margin-top:10px;padding-top:9px}.orb-facts{margin-top:10px}.solar-event>strong{font-size:29px}.solar-event>span{font-size:9px}.metrics button{padding-inline:9px}.orb-facts b{font-size:12px}}
@media(max-width:760px){.summary-card{grid-template-columns:1fr minmax(300px,385px) 1fr;padding-inline:0;min-height:430px}.weather-orb{width:385px;height:385px}.orb-copy{width:69%;}.orb-copy h1{font-size:27px}.orb-location{font-size:8px;margin:4px 0 8px}.orb-copy .eyebrow{font-size:7px}.summary-degree strong{font-size:72px}.orb-condition{font-size:10px}.orb-condition .wx{width:23px;height:23px}.orb-copy .fine{font-size:7px}.orb-range{margin-top:8px;padding-top:7px}.orb-range>span{font-size:8px}.orb-range .range-values b{font-size:16px}.orb-range small{font-size:7px}.orb-facts{margin-top:8px;gap:3px}.orb-facts>span{font-size:7px;padding-inline:2px}.orb-facts b{font-size:11px}.solar-event>strong{font-size:25px}.solar-event>span{font-size:8px;letter-spacing:.3px}.solar-event>small{font-size:8px;max-width:96px}.solar-event>svg{width:30px;height:30px}.extras-grid{grid-template-columns:1fr}.extras-grid summary{padding:16px 19px}.extras-grid summary strong{font-size:14px}.lower{padding:19px 17px}.around-heading h2{font-size:23px}}
@media(max-width:560px){.top{padding-top:20px;padding-bottom:17px;gap:17px}.wordmark{font-size:36px;letter-spacing:-1.7px}.slogan{font-size:11px;margin-top:6px;text-align:center}.intro .intro-kicker{font-size:8px;letter-spacing:1px}.summary-card{grid-template-columns:1fr 1fr;gap:0;min-height:0;padding:0;margin-top:2px}.weather-orb{grid-column:1/-1;grid-row:1;justify-self:center;width:min(100%,390px);height:auto;aspect-ratio:1}.orb-copy{width:69%}.orb-copy h1{font-size:27px}.orb-location{font-size:8px}.summary-degree strong{font-size:69px}.orb-copy .eyebrow{font-size:7px;letter-spacing:1.1px}.orb-condition{font-size:10px}.orb-range{width:72%;margin-top:7px;padding-top:6px}.orb-range .range-values b{font-size:15px}.orb-facts{margin-top:8px}.orb-facts>span{font-size:7px}.orb-facts b{font-size:10px}.orb-copy .fine{font-size:7px}.orb-range small{font-size:7px}#uvSource{font-size:6px;margin-top:4px}.solar-event{grid-row:2;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:2px 6px;width:100%;padding:4px 7px 8px;margin:0;text-shadow:0 1px 12px #ffffffa0}.solar-event>svg{width:26px;height:26px;margin:0;flex-shrink:0}.solar-event>span{font-size:8px;letter-spacing:.2px}.solar-event>strong{font-size:23px;margin:0}.solar-event>small{flex-basis:100%;max-width:none;font-size:8px;background:transparent;line-height:1.2;padding:0}.sunrise{grid-column:1}.sunset{grid-column:2}html[data-theme=dark] .solar-event{text-shadow:none}.data-state{gap:7px;margin-top:10px}.data-state .demo{font-size:8px;letter-spacing:0;max-width:77%;text-align:left}.data-state button{font-size:8px;white-space:nowrap}.journey-row{margin:14px 0 19px;gap:6px}.scroll-cue{font-size:7px;letter-spacing:.5px;padding:6px 5px 6px 10px;gap:5px}.scroll-cue span{width:23px;height:23px;font-size:14px}.motion-toggle{font-size:7px;padding:7px;min-height:36px}.metrics button{padding-inline:4px;font-size:8px;gap:2px}.metrics .mico{font-size:11px}.metrics button[data-metric=amount]{font-size:9px}.cell .period-tag{font-size:7px}.cell .period-value b{font-size:11px}.cell.unavailable{border-radius:8px}.hour-source b{font-size:13px}.hour-source .hour-period{font-size:9px}.hour-summary{gap:14px}.hour-summary small{font-size:9px}.around-heading h2{font-size:22px;max-width:240px}.around-heading>span{font-size:8px;max-width:65px;text-align:right}.extra-body{padding:13px}.extras-grid summary strong{font-size:13px}#radarMap{height:260px}.lower{padding:18px 12px}.period-line{font-size:9px;gap:5px}.source-extra{font-size:9px}.cell.median-cell small{font-size:7px}footer{padding:15px;font-size:8px}.outlook-note{line-height:1.4}}
@media(max-width:365px){.orb-copy h1{font-size:23px}.summary-degree strong{font-size:60px}.orb-copy{width:72%}.orb-location{font-size:7px;margin-bottom:6px}.orb-condition{font-size:9px}.orb-copy .fine{font-size:6px}.orb-range{padding-top:5px;margin-top:6px}.orb-range>span{font-size:7px}.orb-facts{margin-top:6px}.orb-facts>span{font-size:6px}.orb-facts b{font-size:9px}.solar-event{gap:2px 4px}.solar-event>span{font-size:7px}.solar-event>strong{font-size:22px}.solar-event>svg{width:22px}.orb-range .range-values b{font-size:14px}.metrics button{font-size:7px}.metrics button[data-metric=amount]{font-size:8px}.around-heading h2{font-size:21px}.scroll-cue{font-size:6px}}
html[data-motion=paused] .scene-layer,html[data-motion=reduced] .scene-layer{will-change:auto}html[data-motion=paused] .globe-art,html[data-motion=reduced] .globe-art{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.scene-layer{will-change:auto}.globe-art{animation:none}.cloud-crossing{display:none}}

/* Keep the essential globe data legible on phones. */
@media(max-width:560px){.orb-copy .eyebrow{font-size:9px}.orb-location{font-size:9px}.orb-copy .fine{font-size:8px}.orb-range>span{font-size:9px}.orb-range small{font-size:8px}.orb-facts>span{font-size:9px}.orb-facts b{font-size:12px}#uvSource{font-size:8px}.solar-event>span{font-size:9px}.solar-event>small{font-size:9px}.scroll-cue{font-size:8px}.motion-toggle{font-size:8px}}
@media(max-width:365px){.orb-copy .eyebrow,.orb-facts>span{font-size:8px}.orb-facts b{font-size:10px}.orb-location,.orb-copy .fine,.orb-range small,#uvSource{font-size:7px}.solar-event>span{font-size:8px}.scroll-cue{font-size:7px}}

html[data-theme=dark] .weather-orb{background:transparent}.orb-facts b{pointer-events:auto}

/* V8.1, stage 1: centered header and readable current weather. */
.top {
  flex-direction: column;
  align-items: center;
  gap: 24px;
  padding: 24px 0 22px;
}
.preferences {
  display: grid;
  grid-template-columns: auto auto;
  align-items: start;
  justify-content: center;
  gap: 7px 16px;
  width: auto;
  margin: 0;
}
.pref-label {
  display: block;
  margin: 0 0 6px;
  font-size: 12px;
  letter-spacing: .4px;
  text-align: center;
  text-transform: none;
  color: var(--ink);
}
.preferences .seg { background: var(--panel); padding: 4px; }
.preferences .seg button {
  min-height: 44px;
  padding: 9px 14px;
  font-size: 14px;
}
.preferences .seg button[aria-pressed=true] {
  background: var(--selected);
  color: var(--on-selected);
}
.preferences .mode-word { display: inline; }
.preferences .mode-symbol { font-size: 17px; }
.unitnote {
  display: block;
  grid-column: 1 / -1;
  margin: 0;
  font-size: 12px;
  text-align: center;
  color: var(--ink);
}
.brand { text-align: center; }
.wordmark {
  font-size: clamp(44px, 5.2vw, 68px);
  letter-spacing: -2.5px;
  color: #101c28;
}
.wordmark sup { font-size: .48em; }
.slogan { font-size: 16px; margin-top: 10px; letter-spacing: .2px; }
.searcharea { width: min(610px, 100%); }
.searchform input { font-size: 18px; min-height: 36px; }
.searchform:focus-within {
  outline: 3px solid var(--blue);
  outline-offset: 3px;
  background: var(--solid);
  box-shadow: 0 6px 25px #173b6426;
}
.source-setting { font-size: 13px; }
.source-setting select { font-size: 16px; max-width: 100%; }
.data-state { margin-top: 18px; flex-wrap: wrap; }
.data-state .demo { font-size: 12px; letter-spacing: 0; }
.data-state button { font-size: 12px; min-height: 36px; }
.summary-card {
  grid-template-columns: minmax(110px, 1fr) minmax(0, 590px) minmax(110px, 1fr);
  gap: 12px;
  padding: 10px 0;
  min-height: 610px;
  scroll-margin-top: 12px;
}
.weather-orb {
  width: 100%;
  max-width: 590px;
  height: auto;
  min-height: 570px;
  aspect-ratio: 1;
}
.globe-glass {
  inset: 0;
  background: radial-gradient(ellipse at center, #061c35d9 0%, #061c35bd 44%, #061c3580 61%, transparent 74%);
}
.orb-copy {
  width: 82%;
  max-width: 460px;
  padding: 24px 0;
  line-height: 1.4;
  text-shadow: 0 1px 4px #03101dcc;
  overflow-wrap: anywhere;
}
.orb-copy h1 { font-size: 36px; }
.orb-location { font-size: 14px; opacity: 1; margin: 6px 0 12px; }
.orb-copy .eyebrow { font-size: 13px; letter-spacing: 1.2px; }
.summary-degree strong { font-size: 93px; }
.orb-condition { font-size: 18px; gap: 8px; }
.orb-condition .wx { width: 32px; height: 32px; }
.orb-copy .fine { font-size: 14px; margin-top: 5px; }
.orb-range {
  width: 92%;
  margin-top: 14px;
  padding: 10px 12px;
  background: #061a31a6;
  border: 1px solid #ffffff29;
  border-radius: 18px;
}
.orb-range > span { font-size: 15px; color: #f1f6fc; }
.orb-range .range-values { gap: 16px; margin-top: 4px; }
.orb-range .range-values b { font-size: 24px; }
.orb-range .range-track { max-width: 110px; }
.orb-range small { display: block; font-size: 14px; color: #edf4fc; margin-top: 3px; }
.orb-facts {
  gap: 0;
  margin-top: 10px;
  padding: 12px 4px;
  background: #061a31b8;
  border: 1px solid #ffffff29;
  border-radius: 18px;
}
.orb-facts > span { font-size: 14px; padding-inline: 3px; color: #edf4fc; }
.orb-facts b { font-size: 21px; margin-top: 4px; }
#uvSource { font-size: 13px; color: #edf4fc; margin-top: 8px; }
.solar-event { min-width: 0; margin-top: 0; }
.solar-event > span { font-size: 13px; letter-spacing: .4px; }
.solar-event > strong { font-size: 36px; }
.solar-event > small { font-size: 12px; max-width: 165px; overflow-wrap: anywhere; }
@media (max-width: 1000px) {
  .summary-card { grid-template-columns: 1fr minmax(0, 520px) 1fr; gap: 5px; }
  .orb-copy { width: 90%; }
  .solar-event > strong { font-size: 30px; }
  .solar-event > span { font-size: 12px; }
}
@media (max-width: 760px) {
  .summary-card { grid-template-columns: 1fr 1fr; min-height: 0; gap: 10px 14px; }
  .weather-orb { grid-column: 1 / -1; grid-row: 1; width: min(100%, 470px); min-height: 470px; }
  .orb-copy { width: 94%; max-width: 410px; padding: 26px 4px 12px; }
  .orb-copy h1 { font-size: 32px; }
  .orb-location { font-size: 13px; margin-bottom: 10px; }
  .orb-copy .eyebrow { font-size: 12px; }
  .summary-degree strong { font-size: 76px; }
  .orb-condition { font-size: 16px; }
  .orb-copy .fine { font-size: 13px; }
  .orb-range { width: 94%; margin-top: 12px; padding: 9px 12px; }
  .orb-range > span { font-size: 14px; }
  .orb-range .range-values b { font-size: 22px; }
  .orb-range small { font-size: 13px; }
  .orb-facts { padding: 11px 2px; }
  .orb-facts > span { font-size: 12px; padding-inline: 2px; }
  .orb-facts b { font-size: 17px; }
  #uvSource { font-size: 12px; }
  .solar-event {
    grid-row: 2;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: 3px 6px;
    width: 100%;
    padding: 10px 5px;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 18px;
    text-shadow: none;
  }
  .sunrise { grid-column: 1; }
  .sunset { grid-column: 2; }
  .solar-event > svg { width: 26px; height: 26px; margin: 0; }
  .solar-event > span { font-size: 12px; letter-spacing: 0; }
  .solar-event > strong { font-size: 28px; margin: 0; }
  .solar-event > small { flex-basis: 100%; max-width: none; font-size: 11px; background: none; padding: 0; }
}
@media (max-width: 560px) {
  .top { gap: 20px; padding: 18px 0 20px; }
  .preferences { column-gap: 8px; }
  .preferences .seg button { font-size: 14px; padding: 8px 11px; }
  .preferences [data-unit] .unit-word { display: none; }
  .preferences [data-unit] { min-width: 46px; }
  .pref-label { font-size: 12px; }
  .unitnote { font-size: 11px; }
  .slogan { font-size: 15px; }
  .searchform input { font-size: 16px; }
  .searchform .primary { min-height: 44px; }
  .data-state .demo { max-width: 100%; font-size: 11px; }
  .data-state button { font-size: 11px; }
  .globe-art { inset: 0 -4% auto; height: auto; aspect-ratio: 1; }
  .globe-glass { border-radius: 42%; }
}
@media (max-width: 365px) {
  .preferences .seg button { padding-inline: 8px; }
  .orb-facts b { font-size: 16px; }
  .solar-event > strong { font-size: 26px; }
}

/* V8.2: language control shares the existing preference panel. */
.preferences { grid-template-columns: repeat(3, max-content); }
.summary-card { overflow-x: clip; }
.language-group { min-width: 0; }
#languageSelect { color: var(--ink, #18354e); background: var(--panel, #edf3f7); border: 1px solid currentColor; border-radius: 12px; padding: 8px 12px; min-height: 44px; max-width: 180px; font: inherit; }
#languageSelect:focus-visible { outline: 3px solid #168be8; outline-offset: 3px; }
[data-theme="dark"] #languageSelect { color: #edf5ff; background: #152c46; }
.pref-label { overflow-wrap: anywhere; }
@media (max-width: 760px) {
  .preferences { grid-template-columns: auto auto; gap: 10px 14px; }
  .language-group { grid-column: 1 / -1; justify-self: center; }
  .preferences .preference-group { max-width: 100%; }
  #languageSelect { max-width: 155px; font-size: 16px; }
  .orb-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px 14px; }
  .orb-facts > span { min-width: 0; overflow-wrap: anywhere; }
  .orb-copy { padding-bottom: 20px; }
  .weather-orb { aspect-ratio: auto; }
  .metrics { flex-wrap: wrap; }
}

/* V8.3: an accessible, compact expansion control for the hourly table. */
.hour-table-controls { display: flex; justify-content: center; }
#toggleHours { min-height: 44px; max-width: 100%; margin: 12px 0 2px; padding: 10px 18px; border: 1px solid var(--border); border-radius: 24px; color: var(--ink); background: var(--panel); font: inherit; font-size: 13px; line-height: 1.4; cursor: pointer; }
#toggleHours[hidden] { display: none; }
#toggleHours:hover { background: var(--blue-soft); }
#toggleHours:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }

/* V8.4: more room between preferences; help belongs to the temperature control. */
.preferences { column-gap: 44px; row-gap: 18px; }
.globe-glass { border-radius: 0; background: radial-gradient(ellipse closest-side at 50% 44%, #061c359e 0%, #061c3552 48%, transparent 86%); }
.estimate-mark { display: inline; margin-right: 2px; font-weight: 600; cursor: help; }
.interpolation-note { margin: 12px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.interpolation-note[hidden] { display: none; }
@media (max-width: 760px) { .preferences { column-gap: clamp(18px, 4vw, 30px); row-gap: 22px; } }

/* V8.5: readable supporting text, consistent controls and matched globe discs. */
:root { --muted: #3e566b; }
html[data-theme=dark] { --muted: #c0d0df; }
.preferences { font-family: inherit; }
.preferences .seg button, #languageSelect { font-family: inherit; font-size: 16px; font-weight: 500; line-height: 1.4; }
#languageSelect { appearance: none; min-height: 54px; padding: 12px 40px 12px 18px; border: 1px solid var(--border); border-radius: 28px; background-color: var(--panel); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%233e566b' stroke-width='2'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 15px center; box-shadow: 0 4px 16px -12px #334f64; }
html[data-theme=dark] #languageSelect { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23c0d0df' stroke-width='2'/%3E%3C/svg%3E"); }
#languageSelect option { color: var(--ink); background: var(--solid); }
html[data-theme] #languageSelect { background-repeat: no-repeat; background-position: right 15px center; background-size: 16px 16px; }
.pref-label { font-size: 14px; }
.globe-art .globe-night { transform: scale(.938); transform-origin: 50% 50%; }
.fine, .sub, .outlook-heading > span, .outlook-note, .day-date, .day-grid small,
.legend, .tablefoot, .tablefoot .fine, .participate .fine, .source-panel .sub,
.sources .source-state, .source-detail, .source-extra, .mini > span, .mini .period-tag,
.around-heading > span, .extras-grid summary small, .extra-body, .extra-body p,
#airPollutants > span, .community #resultsScope, .rank small, .rank > .fine,
.hour-source small, .hour-source .hour-period, .hour-summary small,
.data-note, .interpolation-note, footer, .footlogo { font-size: 13px; line-height: 1.5; }
.section-kicker, .extras-grid summary .section-kicker { font-size: 12px; letter-spacing: 1.3px; }
.day-name, .datebar, .hour-button, thead th { font-size: 14px; }
.day-temps, .participate strong { font-size: 15px; }
.day-grid .day-card[aria-pressed=true] :is(.day-date,small,.day-temps>span) { opacity: 1; }
.cell.median-cell small, thead small, .cell small.period-tag { font-size: 12px; line-height: 1.4; opacity: 1; }
.cell { min-height: 48px; height: auto; padding: 8px 4px; }
.median-cell > span { flex-wrap: wrap; justify-content: center; column-gap: 8px; row-gap: 2px; }
.cell .period-value b { font-size: 15px; }
.cell .availability { font-size: 12px; font-weight: 500; color: var(--muted); line-height: 1.3; }
.metrics { flex-wrap: wrap; }
.metrics button, .metrics button[data-metric=amount] { font-size: 13px; min-height: 44px; padding-inline: 10px; }
.forecast-head, .outlook-heading, .tablefoot, .around-heading { flex-wrap: wrap; }
.data-state .demo, .data-state button { font-size: 13px; }
.data-state button { min-height: 44px; }
@media(max-width:760px) {
  .tablewrap table { min-width: 710px; }
  .tablewrap { border: 1px solid var(--line); }
  .mini { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .preferences .seg button { font-size: 15px; }
  #languageSelect { max-width: 180px; }
  .day-grid small, .day-date { font-size: 13px; }
  .around-heading > span { max-width: none; text-align: left; }
}

.table-scroll-hint { display: none; }
.tablewrap:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }
@media(max-width:760px) { .table-scroll-hint { display: block; font-size: 13px; color: var(--muted); margin: 8px 0; } }

/* Stable scroll scene and compact, readable globe layout. */
.brand, .brand > div { width: 100%; }
.slogan { max-width: none; width: 100%; margin-inline: auto; text-align: center; }
.atmosphere { bottom: auto; height: max(100lvh, var(--stable-viewport, 100vh)); }
.scene-layer { transform: translate3d(0,var(--scene-shift),0); }
.cloud-crossing { display: none; }
.empty-prompt { text-align: center; margin: 25px auto; font-size: 16px; max-width: 420px; }
html[data-has-place=true] .empty-prompt { display: none; }
html[data-has-place=false] main, html[data-has-place=false] .source-setting { display: none; }
.summary-card { display: block; min-height: 0; padding: 16px 0 0; }
.weather-orb { width: min(590px,100%); height: auto; margin: auto; position: relative; }
.orb-copy { width: 94%; max-width: 540px; display: grid; grid-template-columns: 1fr minmax(170px,2fr) 1fr; gap: 10px; align-items: center; padding: 28px 0; }
.orb-heading { grid-column: 1/-1; justify-self: center; min-width: 0; max-width: 94%; padding: 10px 22px; }
.orb-now { grid-column: 2; grid-row: 2; padding: 12px 6px; }
.orb-heading, .orb-now, .orb-copy .solar-event { background: rgba(10,32,54,.85); border: 1px solid #ffffff35; border-radius: 20px; }
.orb-location { margin-bottom: 0; }
.orb-copy .solar-event { grid-row: 2; width: 100%; padding: 10px 5px; margin: 0; display: flex; flex-direction: column; gap: 2px; color: #f2f7ff; text-shadow: none; }
.orb-copy .sunrise { grid-column: 1; }
.orb-copy .sunset { grid-column: 3; }
.orb-copy .solar-event > svg { width: 26px; height: 26px; margin: 0; stroke: #f5d79d; filter: none; }
.orb-copy .solar-event > span { color: #f2f7ff; font-size: 12px; letter-spacing: 0; }
.orb-copy .solar-event > strong { color: #fff; font-size: 27px; margin: 0; }
.orb-copy .solar-event > small { color: #e6eff8; background: none; font-size: 11px; padding: 0; max-width: 100%; }
.orb-range, .orb-facts, #uvSource { grid-column: 1/-1; }
.orb-range { width: 94%; margin-top: 0; }
.orb-facts { width: 100%; margin-top: 0; }
#uvSource { justify-self: center; margin-top: 0; background: rgba(10,32,54,.85); border-radius: 16px; padding: 5px 12px; }
.jury-heading { background: var(--selected); color: var(--on-selected)!important; border-radius: 12px 12px 0 0; padding: 8px 3px; border: 2px solid var(--blue); }
.jury-heading small { font-size: 11px; }
thead th:first-child { width: 68px; font-size: 13px; }
thead th:nth-child(2) { width: 145px; }
thead .jury-heading { font-size: 14px; overflow-wrap: anywhere; }
.cell.median-cell { background: var(--selected); color: var(--on-selected); border: 2px solid var(--blue); box-shadow: 0 2px 7px #132d4a24; }
.cell.median-cell small { color: inherit; }
@media(max-width:760px) {
  /* Large blurred layers repaint expensively while scrolling on phones. */
  .forecast, .outlook, .extras-grid > details, .lower, .searchform, .summary-range { backdrop-filter: none; -webkit-backdrop-filter: none; }
  .globe-art { animation: none; }
  .orb-copy { grid-template-columns: minmax(0,1fr) minmax(135px,1.65fr) minmax(0,1fr); gap: 6px; width: 100%; padding: 20px 0; }
  .orb-heading { padding: 9px 16px; }
  .orb-copy h1 { font-size: 30px; }
  .orb-now { padding: 10px 3px; }
  .orb-copy .summary-degree strong { font-size: 66px; }
  .orb-copy .orb-condition { font-size: 14px; gap: 3px; }
  .orb-copy .orb-condition .wx { width: 24px; height: 24px; }
  .orb-copy .fine { font-size: 12px; }
  .orb-copy .solar-event { border-radius: 15px; padding: 9px 3px; align-self: start; }
  .orb-copy .solar-event > span { font-size: 11px; }
  .orb-copy .solar-event > strong { font-size: 23px; }
  .orb-copy .solar-event > small { display: none; }
  .weather-orb { min-height: 0; aspect-ratio: auto; }
  .orb-copy .orb-range, .orb-copy .orb-facts { width: 100%; }
}
@media(max-width:365px) {
  .orb-copy { grid-template-columns: minmax(0,1fr) minmax(125px,1.65fr) minmax(0,1fr); gap: 4px; }
  .orb-copy .solar-event > span { font-size: 10px; }
  .orb-copy .solar-event > strong { font-size: 20px; }
}

/* V8.7: lettering follows the globe without opaque rectangular panels. */
html[data-theme] .orb-copy { text-shadow: -1px -1px 1px #020914, 1px -1px 1px #020914, -1px 1px 1px #020914, 1px 1px 1px #020914, 0 0 4px #020914, 0 0 8px #020914, 0 2px 12px #020914; }
html[data-theme] .orb-copy .orb-heading, html[data-theme] .orb-copy .orb-now, html[data-theme] .orb-copy .solar-event,
.orb-copy .orb-range, .orb-copy .orb-facts, .orb-copy #uvSource {
  background: transparent; border-color: transparent; box-shadow: none;
  backdrop-filter: none; -webkit-backdrop-filter: none; text-shadow: inherit;
}
.orb-copy :is(h1, .fine, .orb-condition, .summary-degree, .solar-event > span, .solar-event > strong, .solar-event > small) { text-shadow: inherit; }
.orb-copy .solar-event > svg, .orb-copy .wx { filter: drop-shadow(0 1px 2px #07192b); }
.orb-copy .orb-facts > span + span { border-color: #ffffff50; }
.metric-short, .mobile-measure { display: none; }
.source-current { color: var(--ink); font-size: 12px; line-height: 1.4; margin-top: 4px; }
.vrow > span:first-child { min-width: 0; }
.vrow > span:first-child small { display: block; font-size: 11px; line-height: 1.35; color: var(--muted); margin-top: 3px; }
.vrow button:disabled { opacity: .45; cursor: not-allowed; }
@media(prefers-reduced-motion:reduce) { .scene-layer { transform: none!important; } }

@media(max-width:760px) {
  .preferences { display: grid; grid-template-columns: max-content max-content minmax(0,110px); width: 100%; max-width: 350px; column-gap: 9px; row-gap: 0; justify-content: center; align-items: end; }
  .preferences .preference-group { min-width: 0; }
  .preferences .language-group { grid-column: auto; justify-self: stretch; width: 100%; }
  .preferences .pref-label { display: block; font-size: 11px; margin: 0 0 5px; text-align: center; letter-spacing: 0; }
  .preferences .seg { padding: 3px; gap: 0; min-height: 44px; }
  .preferences .seg button { padding: 7px 8px; font-size: 15px; min-width: 36px; min-height: 38px; }
  .preferences .seg button .mode-word, .preferences [data-unit] .unit-word { display: none; }
  .preferences [data-theme] .mode-symbol { font-size: 19px; }
  html[data-theme] #languageSelect { width: 100%; max-width: 110px; min-width: 0; min-height: 46px; height: 46px; font-size: 16px; padding: 8px 23px 8px 9px; background-position: right 6px center; background-size: 13px; }
  .forecast-head { display: flex; flex-direction: column; align-items: stretch; gap: 12px; }
  .forecast-head .metrics { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); width: 100%; max-width: 400px; align-self: center; padding: 3px; gap: 2px; border-radius: 25px; }
  .metrics button, .metrics button[data-metric=amount] { min-width: 0; min-height: 44px; padding: 5px 2px; gap: 3px; justify-content: center; font-size: 12px; }
  .metrics .metric-word { display: none; }
  .metrics .metric-short { display: inline; }
  .metrics .mico { font-size: 18px; }
  .mobile-measure { display: block; margin: 8px 0 0; text-align: center; color: var(--muted); font-size: 13px; }
  .datebar { flex-wrap: wrap; gap: 6px; }
  .tablewrap { border: 0; overflow: visible; }
  .tablewrap table { width: 100%; min-width: 0; table-layout: fixed; border-spacing: 2px 4px; }
  .tablewrap thead th { width: auto; font-size: 10px; padding: 6px 0; height: 38px; overflow-wrap: normal; }
  .tablewrap thead th:first-child { width: 38px; font-size: 11px; padding: 0; }
  .tablewrap thead th:nth-child(2) { width: 46px; font-size: 11px; }
  .jury-heading small, .cell.median-cell small { display: none; }
  .source-dot { width: 18px; margin: 4px auto 0; }
  .tablewrap td, .tablewrap tbody th { padding: 0; }
  .tablewrap .cell { min-width: 0; min-height: 56px; padding: 4px 1px; flex-direction: column; gap: 0; border-radius: 8px; }
  .tablewrap .cell .wx { width: 22px; height: 22px; margin: 0; flex-shrink: 0; }
  .tablewrap .cell b, .tablewrap .cell .period-value b { font-size: 13px; line-height: 1.3; white-space: nowrap; }
  .tablewrap .median-cell b { font-size: 15px; }
  .tablewrap .cell small.period-tag { font-size: 9px; line-height: 1.1; overflow-wrap: anywhere; }
  .tablewrap .cell .availability { font-size: 10px; }
  .tablewrap .hour-button { font-size: 11px; min-height: 56px; padding: 4px 0; width: 100%; text-align: center; }
  .tablewrap .current-time small { font-size: 9px; }
  .tablewrap .estimate-mark { margin-right: 0; }
}


/* V8.10: colour plus text, never colour alone. */
#airDetails{--aq-color:#8696a5}
#airDetails[data-aqi="0"],.aq-band-0{--aq-color:#50c9c6}
#airDetails[data-aqi="1"],.aq-band-1{--aq-color:#70c65c}
#airDetails[data-aqi="2"],.aq-band-2{--aq-color:#f2ca55}
#airDetails[data-aqi="3"],.aq-band-3{--aq-color:#ed716d}
#airDetails[data-aqi="4"],.aq-band-4{--aq-color:#ad5795}
#airDetails[data-aqi="5"],.aq-band-5{--aq-color:#803776}
#airDetails .extra-symbol{background:var(--aq-color);color:#101b25;font-size:18px;font-weight:750;border:2px solid var(--ink)}
#airDetails[data-aqi="4"] .extra-symbol,#airDetails[data-aqi="5"] .extra-symbol{color:white}
#airDetails>summary{box-shadow:inset 5px 0 var(--aq-color)}
#airDetails .extra-body p{font-size:14px;color:var(--ink);line-height:1.55}
.aq-scale{list-style:none;padding:0;margin:14px 0 20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.aq-band{display:flex;align-items:center;gap:8px;padding:9px 8px;border:2px solid transparent;border-radius:10px;font-size:13px;line-height:1.35;color:var(--ink)}
.aq-band.is-current{border-color:var(--ink);background:var(--blue-soft);font-weight:700}
.aq-band small{display:block;font-size:12px;color:var(--ink)}
.aq-band b{margin-left:auto}.aq-swatch{width:12px;height:28px;border-radius:5px;background:var(--aq-color);flex-shrink:0}
#airPollutants>span{font-size:13px}#airPollutants b small{font-size:12px}
@media(max-width:360px){.aq-band{font-size:12px;padding:8px 5px;gap:6px}}

/* V8.11: the sky belongs to the document, with no separate scroll animation. */
body{position:relative;isolation:isolate}
.atmosphere{position:absolute;inset:0;min-height:100%;background:var(--paper)}
.scene-layer{height:var(--scene-height);transform:none!important;will-change:auto;mask-image:linear-gradient(#000 65%,transparent 100%);-webkit-mask-image:linear-gradient(#000 65%,transparent 100%)}
.cloud-crossing{display:none}
html[data-theme] .orb-copy{text-shadow:-1px -1px 2px #020914,1px -1px 2px #020914,-1px 1px 2px #020914,1px 1px 2px #020914,0 0 5px #020914,0 0 10px #020914,0 0 18px #020914,0 3px 26px #020914}

/* V8.12: a globe on the landing page, shared visual language for disclosures. */
.shell{position:relative}
.landing-globe{position:absolute;top:130px;left:50%;width:min(620px,96vw);aspect-ratio:1;transform:translateX(-50%);pointer-events:none;z-index:0}
.landing-globe .globe-art{inset:0;z-index:0;height:100%;animation:none}
.landing-globe:after{content:"";position:absolute;inset:10%;border-radius:50%;background:radial-gradient(ellipse,#03152855,transparent 72%)}
html[data-has-place=true] .landing-globe{display:none}
.top,.searcharea,.empty-prompt,main,footer{position:relative}
.top{z-index:2}.searcharea{z-index:5}
html[data-has-place=false] .brand{margin-top:125px}
html[data-has-place=false] .wordmark,html[data-has-place=false] .slogan,html[data-has-place=false] .empty-prompt{color:#fff;text-shadow:0 1px 3px #020b18,0 0 9px #020b18,0 0 22px #020b18}
html[data-has-place=false] .empty-prompt{margin-top:26px;margin-bottom:210px}
html[data-has-place=false] footer{margin-top:0}
#currentWeather .globe-art{animation:none;transform-origin:0 0}
.disclosure-panel{overflow:hidden}
#forecast{padding:0;margin-top:20px}
.panel-summary{display:flex;align-items:center;gap:16px;padding:22px 26px;list-style:none;min-height:100px}
.panel-summary::-webkit-details-marker{display:none}
.panel-heading{display:block;flex:1;min-width:0}
.panel-heading strong{display:block;font-family:Georgia,serif;font-size:25px;font-weight:400;line-height:1.25}
.panel-heading small{display:block;font-size:14px;line-height:1.5;color:var(--muted);margin-top:5px}
.panel-chevron,.extra-arrow{font-size:23px;transition:transform .25s;flex-shrink:0}
details[open]>.panel-summary .panel-chevron,.extras-grid details[open]>summary .extra-arrow{transform:rotate(180deg)}
.forecast-body{padding:22px 26px 0;border-top:1px solid var(--line)}
.forecast-body .participate{margin-inline:-26px;padding-inline:26px}
.extra-symbol{position:relative;width:48px;height:48px;border-radius:16px;background:var(--blue-soft);color:var(--ink)}
.extra-symbol svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#airDetails .extra-symbol{background:var(--blue-soft);color:var(--ink);border:0}
#airDetails[data-aqi="4"] .extra-symbol,#airDetails[data-aqi="5"] .extra-symbol{color:var(--ink)}
.aq-status-dot{position:absolute;width:15px;height:15px;border-radius:50%;right:-2px;top:-2px;background:var(--aq-color);border:2px solid var(--panel);box-shadow:0 0 0 1px var(--ink)}
.extras-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.extras-grid summary{min-height:110px;gap:15px}
.extras-grid summary strong{font-size:17px;line-height:1.4}
.extras-grid summary small{font-size:13px;line-height:1.4}
.extras-grid summary .section-kicker{font-size:11px;letter-spacing:1px}
@media(max-width:760px){
 .landing-globe{top:145px;width:min(460px,100%)}
 html[data-has-place=false] .brand{margin-top:108px}
 html[data-has-place=false] .empty-prompt{margin-bottom:150px;padding-inline:12px;max-width:310px}
 .panel-summary{padding:18px 15px;gap:12px}
 .panel-heading strong{font-size:22px}.panel-heading small{font-size:13px}
 .forecast-body{padding:18px 12px 0}.forecast-body .participate{margin-inline:-12px;padding-inline:12px}
 .extras-grid{grid-template-columns:1fr}.extras-grid summary{padding:18px 15px}
}
@media(max-width:365px){html[data-has-place=false] .wordmark{font-size:40px}html[data-has-place=false] .brand{margin-top:85px}.landing-globe{top:140px}html[data-has-place=false] .empty-prompt{margin-bottom:100px}}
/* V8.13: alert affordance on the globe, level from issuer, no averaged warning. */
.orb-alerts{position:absolute;right:0;top:0;z-index:8;display:flex;align-items:flex-start;gap:8px;max-width:calc(100% - 60px)}
#warningBadges{display:flex;gap:8px;min-width:0;padding:4px; margin:-4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scroll-snap-type:x proximity}
.orb-alerts [hidden]{display:none!important}
.warning-alert{--alert-color:#b9d4ed;position:relative;display:flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;min-width:48px;min-height:48px;padding:9px;border-radius:16px;background:#112b43;color:var(--alert-color);border:1.5px solid var(--alert-color);box-shadow:0 3px 10px #00142644;text-shadow:none;scroll-snap-align:start}
.warning-alert svg{display:block;width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.warning-category{display:flex;align-items:center;border-left:1px solid currentColor;padding-left:6px}
.warning-category svg{width:19px;height:19px}
.warning-alert:is([data-level=YELLOW],[data-level$=_YELLOW],[data-level=VMA_MODERATE],[data-level=NWS_MODERATE]){--alert-color:#ffde59}
.warning-alert:is([data-level=ORANGE],[data-level$=_ORANGE]){--alert-color:#ffac53}
.warning-alert:is([data-level=RED],[data-level$=_RED],[data-level=VMA_SEVERE],[data-level=VMA_EXTREME],[data-level=NWS_SEVERE],[data-level=NWS_EXTREME]){--alert-color:#ff9299}
.warning-alert:focus-visible{outline:3px solid #fff;outline-offset:1px}
.warning-alert:hover{background:#1d3b54}
.warning-alert.warning-pulse{animation:warning-attention 2.5s ease-out 3}
@keyframes warning-attention{0%,100%{box-shadow:0 3px 10px #00142644}40%{box-shadow:inset 0 0 0 2px var(--alert-color),0 3px 10px #00142644}}
html[data-motion=paused] .warning-alert,html[data-motion=reduced] .warning-alert{animation:none}
@media(prefers-reduced-motion:reduce){.warning-alert{animation:none!important}}
.warning-item:focus{outline:2px solid var(--blue);outline-offset:3px}
/* Give the controls their own row on phones, clear of even a long place name. */
@media(max-width:760px){#currentWeather{padding-top:80px}#currentWeather :is(.orb-alerts,.orb-air){top:-64px}}



.orb-copy .orb-heading{max-width:calc(100% - 105px)}
#warningDialog{max-width:680px;width:calc(100% - 28px);color:var(--ink);background:var(--panel);padding:22px;border:1px solid var(--border);border-radius:24px}
#warningDialog p{font-size:14px;line-height:1.6;margin:12px 0}
#warningDialog .dialog-head h2{font-size:23px}
#warningDialog .dialog-head button{min-width:44px;min-height:44px;border-radius:50%}
.warning-scope{color:var(--muted)}
.warning-item{margin:20px 0;padding:16px;border:1px solid var(--line);border-left:5px solid #86b7db;border-radius:13px;background:var(--blue-soft)}
.warning-item[data-level=YELLOW]{border-left-color:#ebbd18}.warning-item[data-level=ORANGE]{border-left-color:#e7811c}.warning-item[data-level=RED]{border-left-color:#dc3948}
.warning-item h3{display:flex;align-items:center;gap:10px;font-size:18px;line-height:1.35}.warning-item h3 svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.8;flex-shrink:0;stroke-linecap:round;stroke-linejoin:round}
.warning-item h4{font-size:14px;margin:15px 0 0}.warning-original{white-space:pre-line}
.warning-item dl{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:13px}.warning-item dd{margin:0;overflow-wrap:anywhere}
@media(max-width:390px){.orb-alerts{right:0;top:-5px}.orb-copy .orb-heading{max-width:calc(100% - 90px)}#warningDialog{padding:16px}.warning-item{padding:12px}.warning-item dl{grid-template-columns:1fr;gap:2px}.warning-item dd{margin-bottom:7px}}


/* V8.14: CAP severity remains separate from SMHI's colour levels. */


.warning-item[data-level=VMA_SEVERE],.warning-item[data-level=VMA_EXTREME]{border-left-color:#dc3948}
.warning-item[data-level=VMA_MODERATE]{border-left-color:#ebbd18}
#warningSources{border-block:1px solid var(--line);margin-block:16px}
.warning-area{border-radius:8px;padding:10px;background:var(--panel)}
.warning-original,.warning-area{overflow-wrap:anywhere}

#warningDialog .dialog-head button{color:var(--ink)}


/* V8.21: compact precipitation outlook and an explicit historical radar disclosure. */
.rain-body{padding:0 20px 20px;min-width:0}
.rain-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.rain-heading h3{margin:8px 0;font-family:inherit;font-size:17px;font-weight:650}
.rain-tag{border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:12px}
#rainWindow,#rainCoverage{margin:5px 0;color:var(--muted);overflow-wrap:anywhere}
.rain-chart-label{margin:22px 0 8px!important;font-weight:650}
.rain-chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:5px;padding:0;margin:12px 0;list-style:none}
.rain-chart li{min-width:0;text-align:center;font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink)}
.rain-chart time{font-size:12px;white-space:nowrap;letter-spacing:-.3px}
.rain-chart li>b{display:block;font-size:13px;margin-top:6px}
.rain-bar{display:block;position:relative;height:66px;margin:12px 5px 0;border-bottom:2px solid var(--border);background:var(--blue-soft);border-radius:5px 5px 0 0}
.rain-bar i{position:absolute;bottom:0;left:0;right:0;background:var(--blue);border-radius:4px 4px 0 0}
.rain-dot{position:absolute;top:-9px;left:50%;transform:translateX(-50%);width:6px;height:6px;border-radius:50%;background:var(--blue)}
.rain-missing .rain-bar{background:repeating-linear-gradient(-45deg,transparent 0 5px,var(--border) 5px 6px)}
.rain-explainer{color:var(--muted)}
.extras-grid .rain-values>summary,.extras-grid .radar-disclosure>summary{min-height:48px;padding:13px 0;border-top:1px solid var(--border);justify-content:space-between;font-size:14px;cursor:pointer}
.rain-values,.radar-disclosure{background:transparent;box-shadow:none;border:0}
.rain-values>summary>span:last-child,.radar-disclosure>summary>span:last-child{transition:transform .2s}
.rain-values[open]>summary>span:last-child,.radar-disclosure[open]>summary>span:last-child{transform:rotate(180deg)}
.rain-table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:13px}
.rain-table caption{text-align:left;font-size:13px;color:var(--muted);padding:8px 0 14px}
.rain-table th,.rain-table td{padding:10px 6px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
.rain-table thead th{font-size:12px;font-weight:650;color:var(--ink)}
.rain-table th:first-child{width:24%}.rain-table td:nth-child(2){width:43%}
.rain-table small,.rain-table td>span{display:block;font-size:12px;color:var(--muted);line-height:1.5}
.rain-table b{font-size:14px;font-weight:650}
.radar-disclosure{margin-top:12px}.radar-body{min-width:0}
.radar-controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.radar-controls button,#radarRefresh{font:inherit;font-size:13px;border:1px solid var(--border);background:var(--blue-soft);color:var(--ink);border-radius:20px;min-width:42px;min-height:42px;padding:8px 11px}
.radar-controls button:disabled{opacity:.5;cursor:default}
#radarPlay{min-width:87px}
#radarFrame{display:block;width:100%;margin:8px 0 0;height:40px;accent-color:var(--blue);touch-action:pan-y}
.radar-time{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;font-size:12px;font-variant-numeric:tabular-nums;align-items:baseline}
.radar-time>span:last-child{text-align:right}.radar-time time{font-size:14px;font-weight:650}
#radarPosition{text-align:center;color:var(--muted);overflow-wrap:anywhere;margin:6px 0 15px}
#radarStatus{font-size:14px;min-height:24px}.radar-problem{border-inline-start:3px solid #d58524;padding:8px 12px;background:var(--blue-soft);border-radius:5px;font-weight:550}
@media(max-width:1150px){.rain-chart{grid-template-columns:repeat(6,minmax(0,1fr));gap:18px 7px}.rain-chart time{font-size:12px}}
@media(max-width:600px){.rain-body{padding:0 14px 16px}.rain-heading h3{font-size:16px}.rain-chart{gap:17px 4px}.rain-bar{height:48px;margin-inline:5px}.radar-time{gap:4px;font-size:11px}.radar-time time{font-size:13px}.rain-table th,.rain-table td{padding:9px 3px}.radar-controls{gap:5px}.radar-controls button{font-size:12px;padding-inline:9px}}
@media(prefers-reduced-motion:reduce){.rain-values>summary>span:last-child,.radar-disclosure>summary>span:last-child{transition:none}}


/* V8.21: support in document flow, clear of mobile forecasts and browser controls. */
.support-bar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:24px;margin:25px 0 14px;padding:20px 24px;background:var(--panel);border:1px solid var(--border);border-radius:22px;color:var(--ink)}
.support-bar p{margin:0;font-size:15px;line-height:1.55;max-width:690px}
.support-actions{display:flex;flex-wrap:wrap;gap:10px;flex-shrink:0}
.support-actions button,.support-actions a{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:10px 18px;border:1px solid var(--line);border-radius:25px;background:var(--solid);color:var(--ink);font:inherit;font-size:14px;text-decoration:none;font-weight:600}
.support-actions svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.support-actions button:hover,.support-actions a:hover{background:var(--blue-soft)}
#feedbackDialog{width:min(560px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:24px;overscroll-behavior:contain}
#feedbackDialog .dialog-head{align-items:center}
#feedbackDialog .dialog-head button{min-width:44px;min-height:44px;color:var(--ink)}
#feedbackDialog p{font-size:14px;line-height:1.5}
#feedbackFields{border:0;margin:18px 0 0;padding:0;min-width:0}
#feedbackFields>label:not(.feedback-context){display:block;font-size:14px;font-weight:600;margin:13px 0 6px}
#feedbackFields textarea,#feedbackFields input[type=email]{box-sizing:border-box;width:100%;font:inherit;font-size:16px;line-height:1.5;border:1px solid var(--muted);border-radius:12px;padding:10px 12px;color:var(--ink);background:var(--solid)}
#feedbackFields textarea{display:block;resize:vertical;min-height:118px;max-height:45dvh}
.feedback-context{display:flex;align-items:flex-start;gap:10px;margin:15px 0 4px;font-size:14px;line-height:1.5;cursor:pointer}
.feedback-context input{width:19px;height:19px;flex-shrink:0;margin:1px 0;accent-color:var(--blue)}
.feedback-context[hidden]{display:none}
#feedbackDialog .feedback-privacy{color:var(--muted);font-size:13px;margin-top:18px}
.feedback-privacy a{color:inherit;text-decoration:underline;text-underline-offset:3px}
#feedbackStatus{min-height:0;overflow-wrap:anywhere;border-radius:10px}
#feedbackStatus:empty{margin:0}
#feedbackStatus:not(:empty){padding:10px 12px;background:var(--blue-soft);border-inline-start:3px solid var(--blue)}
#feedbackStatus[data-state=error],#feedbackStatus[data-state=uncertain],#feedbackStatus[data-state=rate]{border-inline-start-color:#d58a27}
.feedback-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.feedback-actions button{font:inherit;font-size:15px;min-height:44px;padding:10px 22px;border-radius:24px;border:1px solid var(--line);color:var(--ink);background:var(--blue-soft)}
.feedback-actions button.primary{background:var(--selected);color:var(--on-selected)}
.feedback-actions button:disabled{opacity:.6;cursor:wait}
.support-actions :focus-visible,#feedbackDialog :focus-visible{outline:3px solid var(--blue);outline-offset:3px}
@media(max-width:760px){.support-bar{flex-direction:column;align-items:stretch;gap:17px;padding:18px}.support-bar p{font-size:14px}.support-actions{justify-content:center}.support-actions button,.support-actions a{flex:1;padding-inline:13px}.support-bar+footer{margin-top:14px}}
@media(max-width:400px){#feedbackDialog{padding:17px}#feedbackDialog .dialog-head h2{font-size:23px}.feedback-actions button{flex:1;padding-inline:14px}.support-actions{gap:8px}}

/* V8.21: readable shared-vote receipt and compact, accessible choices. */
#voteDialog{width:min(620px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:22px}
#voteDialog .fine,#voteDialog .status,.community #resultsScope{font-size:13px;line-height:1.5}
#voteMode{font-weight:650;color:var(--ink);padding:10px 12px;background:var(--blue-soft);border-radius:12px}
#voteDialog .vrow{grid-template-columns:minmax(0,1fr) 27px 42px 66px 66px;gap:8px;font-size:15px;padding:12px 0}
#voteDialog .vrow>span:first-child{min-width:0;overflow-wrap:anywhere}
#voteDialog .vrow small{display:block;font-size:12px;line-height:1.4;color:var(--muted);margin-top:3px}
#voteDialog .vrow button{min-height:44px;font-size:14px;font-weight:600;border-radius:12px}
#voteDialog .vrow button:disabled{opacity:.55;cursor:default}
#voteDialog .vrow .vote-unconfirmed{color:var(--ink);font-weight:600}
#voteRetry,#refreshVotes{background:var(--blue-soft);border:1px solid var(--border);border-radius:20px;padding:10px 15px;min-height:44px;font:inherit;font-size:13px;margin:6px 0}
#voteRetry[hidden]{display:none}
#refreshVotes:disabled{opacity:.6}
#voteStatus{outline-offset:4px}
#rankings .rank{font-size:14px;grid-template-columns:90px 1fr 40px}
#rankings .rank small,#rankings .rank>.fine{font-size:12px}
@media(max-width:420px){
 #voteDialog{padding:16px}
 #voteDialog .dialog-head h2{font-size:24px}
 #voteDialog .vrow{grid-template-columns:minmax(0,1fr) 25px 36px 53px 53px;gap:5px;font-size:14px}
 #voteDialog .vrow button{font-size:13px;padding:7px 2px}
 #voteDialog .vrow small{font-size:11px}
}

/* V8.21: plain, readable disclosures in the normal page flow. */
.site-footer{display:block;padding:24px 28px;color:var(--ink);font-size:14px;line-height:1.6}
.footer-brand{display:flex;justify-content:space-between;align-items:start;gap:20px;padding-bottom:18px}
.footer-brand .footlogo{display:block;font-family:Georgia,serif;font-size:24px;line-height:1.2;margin-bottom:8px}
.footer-brand p{margin:0;font-size:14px}
.footer-version{font-size:13px;max-width:290px;text-align:right}
.site-info{border-top:1px solid var(--border)}
.site-info>details{border-bottom:1px solid var(--border);scroll-margin-top:18px}
.site-info>details:last-child{border-bottom:0}
.site-info>details>summary{list-style:none;display:flex;align-items:center;gap:13px;min-height:64px;padding:13px 4px;border-radius:8px}
.site-info>details>summary::-webkit-details-marker{display:none}
.site-info>details>summary:hover{background:var(--blue-soft)}
.site-info summary>svg{width:24px;height:24px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.site-info summary strong{display:block;font-size:16px;font-weight:600}
.site-info summary small{font-size:13px;color:var(--muted)}
.info-chevron{margin-left:auto;font-size:20px;line-height:1}
.site-info>details[open]>summary .info-chevron{transform:rotate(180deg)}
.info-body{padding:0 40px 22px;max-width:1000px;font-size:15px;line-height:1.65;overflow-wrap:anywhere}
.info-body h3{font-size:16px;font-weight:650;margin:22px 0 6px}
.info-body p{margin:9px 0 14px}
.info-body a{text-decoration:underline;text-underline-offset:3px;color:var(--ink)}
.info-body a:hover{color:var(--blue)}
.info-sources{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 20px;padding:0;list-style:none}
.info-sources>li{background:var(--blue-soft);border:1px solid var(--border);border-radius:13px;padding:13px 16px}
.info-sources>li>b{display:block;font-size:15px}
.info-sources>li>p{font-size:14px;line-height:1.55;margin:6px 0}
.info-links{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14px;margin:12px 0}
.info-links a{padding:4px 0;min-height:32px}
@media(max-width:600px){
 .site-footer{padding:19px 16px}
 .footer-brand{flex-direction:column;gap:12px}
 .footer-version{text-align:left;max-width:none}
 .info-body{padding:0 3px 18px;font-size:15px}
 .info-sources{grid-template-columns:minmax(0,1fr)}
 .site-info>details>summary{gap:10px}
 .site-info summary strong{font-size:15px}
 .info-links{gap:6px 16px}
 .info-links a{min-height:40px;padding:8px 0}
}

.forecast-credit{font-size:13px;line-height:1.6;color:var(--ink);margin:14px 0;text-align:center;overflow-wrap:anywhere}
.forecast-credit a{text-decoration:underline;text-underline-offset:3px;display:inline-block;padding:3px 0}
#currentWeather>.forecast-credit{position:relative;z-index:2;width:fit-content;max-width:100%;margin:12px auto 0;padding:5px 13px;border-radius:16px;background:var(--panel)}
#outlook>.forecast-credit{text-align:right;margin-bottom:0}
#forecast .forecast-credit{text-align:left;padding-inline:4px}
#voteDialog .forecast-credit{text-align:left}
.footer-art-note{font-size:13px;margin:16px 0 0;color:var(--muted)}

/* V8.21: regional suggestions; the menu stays anchored to the search field. */
.search-hint{margin:10px auto 0;font-size:14px;line-height:1.5;color:var(--text);text-align:center;max-width:650px;text-shadow:0 1px 8px var(--solid)}
#searchStatus{font-size:14px;line-height:1.5;text-align:center;margin:7px auto 0;color:var(--text)}
.search-results{max-height:min(360px,48svh);overflow-y:auto;text-align:left}
.search-results button{min-height:64px;white-space:normal}
.search-results [aria-selected="true"]{background:var(--blue-soft);outline:2px solid var(--blue);outline-offset:-2px}
.place-title{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:16px;line-height:1.35}
.place-region{flex:none;border:1px solid var(--border);border-radius:7px;padding:2px 7px;font-size:13px;color:var(--text)}
.search-results small{font-size:14px;line-height:1.45;margin-top:3px;overflow-wrap:anywhere;color:var(--text)}
@media(max-width:480px){.search-hint{font-size:13px;padding-inline:8px}.search-results button{padding:10px}.search-results small{font-size:13px}}


/* Keep the search examples readable where they cross the landing globe. */
html[data-has-place=false] .search-hint{color:#fff;text-shadow:0 1px 2px #000,0 0 6px #001526,0 0 12px #001526}


/* V8.29: a weather-led timeline with explicit desktop navigation. */
.home-link{display:inline-block;text-decoration:none;border-radius:10px}
.home-link:focus-visible{outline:3px solid var(--blue);outline-offset:8px}
#forecast{
 --hour-surface:#f7fafdf5;--hour-edge:#24496518;--hour-muted:#506478;--hour-text:#173044;
 --hour-card:#e4eef6;--hour-accent:#17677a;--hour-header:#f7fafc;--hour-row:#edf3f8;
 padding:0;isolation:isolate;overflow:hidden;border:1px solid #ffffffaa;border-radius:30px;
 color:var(--hour-text);background:linear-gradient(130deg,#ffffffd9,var(--hour-surface));
 box-shadow:0 20px 60px -35px #122d5590,inset 0 1px 0 #fff;backdrop-filter:none;-webkit-backdrop-filter:none;
}
html[data-theme=dark] #forecast{
 --hour-surface:#14293cf7;--hour-edge:#c8dfed24;--hour-muted:#bfd0dd;--hour-text:#eef7fc;
 --hour-accent:#a5e6e2;--hour-header:#1b3448;--hour-row:#21394d;
 border-color:#cbe4f02b;background:radial-gradient(ellipse at 90% 0,#41647b42,transparent 65%),var(--hour-surface);
 box-shadow:0 25px 65px -38px #020c1bcc,inset 0 1px 0 #d5f4ff14;
}
#forecast .forecast-heading{margin:0;font:inherit}
#toggleSources{width:100%;display:flex;gap:16px;align-items:center;min-height:0;padding:26px 28px 20px;border:0;border-radius:0;background:transparent;color:var(--hour-text);text-align:left;font:inherit}
#toggleSources .extra-symbol{display:none}
#toggleSources .panel-heading{flex:1}
#toggleSources .panel-heading strong{font:400 clamp(26px,2.5vw,34px)/1.2 Georgia,serif;letter-spacing:-.6px}
#toggleSources .panel-heading small{font-size:14px;color:var(--hour-muted);margin-top:7px}
#toggleSources .source-toggle-label{display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:650;line-height:1.25;white-space:nowrap;background:var(--hour-accent);color:#fff;border:1px solid transparent;border-radius:22px;padding:12px 17px;box-shadow:0 3px 12px #1239520d}
html[data-theme=dark] #toggleSources .source-toggle-label{color:#133d43}
#toggleSources .panel-chevron{font-size:20px;margin-left:-8px;color:var(--hour-accent);transition:transform .22s}
#forecast[data-sources-open=true] .panel-chevron{transform:rotate(180deg)}
#toggleSources:focus-visible{outline:3px solid var(--hour-accent);outline-offset:-5px}
#toggleSources:hover .source-toggle-label{filter:brightness(1.06)}
#forecast .forecast-body{padding:0 28px 0;border:0}
#forecast .forecast-head{display:block;margin:0 0 20px}
#forecast .metrics{display:inline-flex;width:auto;max-width:100%;padding:4px;gap:3px;background:var(--hour-row);border:1px solid var(--hour-edge);border-radius:15px;box-shadow:none}
#forecast .metrics button{min-height:40px;gap:7px;padding:7px 14px;font-size:13px;border-radius:11px;color:var(--hour-muted);font-weight:550}
#forecast .metrics button[aria-pressed=true]{background:var(--hour-header);color:var(--hour-text);box-shadow:0 2px 6px #06172d10,inset 0 0 0 1px var(--hour-edge)}
#forecast .metrics .mico{display:flex;align-items:center}
#forecast .metrics .mico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.timeline-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 10px;min-width:0}
.timeline-context{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}
.median-key{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:750;letter-spacing:.2px}
.median-key:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--hour-accent)}
#forecast #mobileMeasure{display:inline;margin:0;font-size:12px;color:var(--hour-muted);text-align:left}
.hourly-method{position:relative;font-size:12px}
.hourly-method summary{display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid var(--hour-edge);border-radius:50%;font:italic 14px Georgia,serif;list-style:none;color:var(--hour-muted);cursor:pointer}
.hourly-method summary::-webkit-details-marker{display:none}
.hourly-method p{position:absolute;left:0;bottom:34px;width:260px;max-width:65vw;padding:14px;border:1px solid var(--hour-edge);border-radius:14px;color:var(--hour-text);background:var(--hour-header);font-size:13px;line-height:1.6;box-shadow:0 10px 30px #07152b30;z-index:6;margin:0}
.hour-navigation{display:flex;align-items:center;gap:7px;flex-shrink:0}
#visibleHours{font-size:12px;font-variant-numeric:tabular-nums;color:var(--hour-muted);padding-right:5px;white-space:nowrap}
.hour-navigation button{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-width:40px;min-height:40px;padding:8px 12px;border:1px solid var(--hour-edge);border-radius:24px;background:var(--hour-header);color:var(--hour-text);font-size:12px;font-weight:650;transition:background .15s,opacity .15s}
.hour-navigation button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hour-navigation button:disabled{opacity:.3;cursor:default}
.hour-navigation button:not(:disabled):hover{background:var(--hour-accent);color:#fff}
html[data-theme=dark] .hour-navigation button:not(:disabled):hover{color:#133d43}
#forecast :is(.hour-navigation button,.hourly-method summary):focus-visible{outline:3px solid var(--hour-accent);outline-offset:2px}
#forecast .datebar{display:none}
#forecast .tablewrap{max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;border:0;border-radius:0;scrollbar-width:none;scroll-padding-inline-start:90px}
#forecast .tablewrap::-webkit-scrollbar{display:none}
#forecast #hourlyTable{--label-width:82px;--hour-width:112px;--shown-label:0px;width:calc(var(--shown-label) + var(--hour-count)*var(--hour-width));min-width:calc(var(--shown-label) + var(--hour-count)*var(--hour-width));table-layout:fixed;border-collapse:separate;border-spacing:0;text-align:center}
#forecast[data-sources-open=true] #hourlyTable{--shown-label:var(--label-width)}
#hourlyTable caption{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#forecast #hourlyTable th,#forecast #hourlyTable td{width:auto;padding:0 4px;height:auto;border:0;text-align:center;font-size:14px;color:var(--hour-text);font-weight:600;vertical-align:middle}
#forecast #hourlyTable .hourly-label{display:none;width:var(--label-width);position:sticky;left:0;z-index:2;background:var(--hour-header);border-radius:12px 0 0 12px;padding:10px;text-align:left;box-shadow:8px 0 12px -12px #061b35}
#forecast[data-sources-open=true] #hourlyTable .hourly-label{display:table-cell}
#hourlyTable .hourly-label .source-dot{display:block;width:23px;height:3px;border-radius:3px;background:var(--source);margin:0 0 7px}
#forecast #hourlyTable .median-label{color:var(--hour-accent);background:var(--hour-header);font-size:13px;font-weight:750}
#forecast #hourlyTable .hour-button{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:5px;text-align:center;min-height:40px;width:100%;padding:13px 3px 6px;font-size:13px;color:#253c50;background:var(--tile-bg);border:1px solid #ffffffa0;border-bottom:0;border-radius:18px 18px 0 0;font-weight:650}
#hourlyTable .hour-button:after{display:none}
#forecast #hourlyTable .current-time small{display:inline;font-size:9px;font-weight:650;line-height:1.1;padding:3px 5px;background:#fff9;border-radius:9px;color:#21425a}
#forecast #hourlyTable .cell{min-width:0;min-height:65px;height:100%;padding:8px 3px;gap:3px;flex-direction:column;border-radius:12px;background:var(--hour-row)}
#forecast #hourlyTable .cell.sunny{background:var(--sunny)}
#forecast #hourlyTable .cell.rainy{background:var(--rainy)}
#forecast #hourlyTable .cell.unavailable{background:transparent;border:1px dashed var(--hour-edge)}
#forecast #hourlyTable .cell b,#forecast #hourlyTable .period-value b{font-size:15px;line-height:1.25;font-weight:600}
#forecast #hourlyTable .cell .wx{width:27px;height:27px;margin:0}
#forecast #hourlyTable .cell.median-cell{position:relative;width:100%;min-height:148px;padding:2px 6px 15px;gap:5px;border:1px solid #ffffffa0;border-top:0;border-radius:0 0 18px 18px;background:linear-gradient(180deg,var(--tile-bg),var(--tile-end));color:#1b3448;transition:filter .15s}
#forecast #hourlyTable .median-cell .wx{width:42px;height:42px;margin:0 0 3px;filter:drop-shadow(0 3px 3px #587c9940)}
#forecast #hourlyTable .median-cell b{font-size:30px;font-weight:650;letter-spacing:-1px;line-height:1.15}
#forecast #hourlyTable .median-cell small{display:block;font-size:12px;font-weight:450;color:#405b6b;line-height:1.4;white-space:nowrap}
#forecast #hourlyTable .weather-empty{display:grid;place-items:center;height:45px;width:42px;font-size:22px;color:#607789}
#forecast #hourlyTable .cell .period-tag{display:block;font-size:11px;line-height:1.3}
#forecast #rows td{padding-top:7px}
#forecast #rows th{border-top:7px solid var(--hour-header)}
#forecast #hourlyTable .hour-selected .cell,#forecast #hourlyTable .hour-selected .hour-button{box-shadow:inset 0 0 0 2px #23677b}
#hourlyTable button:focus-visible{outline:3px solid #166980;outline-offset:-4px}
#hourlyTable .median-cell:hover{filter:brightness(1.045)}
#forecast [data-tone=cloud]{--tile-bg:#e3edf6;--tile-end:#d2e2f0}
#forecast [data-tone=sun]{--tile-bg:#fff3ce;--tile-end:#f4dfae}
#forecast [data-tone=night]{--tile-bg:#ece8ff;--tile-end:#d7d5f2}
#forecast [data-tone=rain]{--tile-bg:#dcf5f5;--tile-end:#bbdfec}
#forecast [data-tone=snow]{--tile-bg:#edfaff;--tile-end:#cce7f1}
#forecast [data-tone=storm]{--tile-bg:#ede8f5;--tile-end:#d6cde6}
#forecast [data-tone=mixed]{--tile-bg:#e6f2e8;--tile-end:#cfe3e0}
.timeline-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:18px 0 14px}
#forecast .hour-table-controls{justify-content:flex-start;margin:0}
#forecast #toggleHours{min-height:38px;margin:0;padding:8px 14px;font-size:12px;border:1px solid var(--hour-edge);background:transparent;border-radius:20px;color:var(--hour-text)}
#forecast .forecast-credit{margin:0;padding:0;font-size:11px;color:var(--hour-muted);text-align:left}
#forecast .tablefoot,#forecast .tablefoot .fine{font-size:12px;line-height:1.6;color:var(--hour-muted)}
#forecast[data-sources-open=false] .tablefoot,#forecast[data-sources-open=false] .participate,#forecast[data-sources-open=false] #rainDataNote{display:none}
#forecast .forecast-body .participate{margin-inline:-28px;padding:17px 28px;background:var(--hour-row);border-top:1px solid var(--hour-edge)}
@media(max-width:760px){
 #forecast{border-radius:24px}
 #toggleSources{padding:20px 16px 16px;gap:8px;flex-wrap:wrap}
 #toggleSources .panel-heading{flex-basis:100%}
 #toggleSources .panel-heading strong{font-size:27px}
 #toggleSources .panel-heading small{font-size:13px;line-height:1.5;margin-top:5px}
 #toggleSources .source-toggle-label{padding:8px 12px;font-size:12px;margin-top:4px;min-height:36px}
 #toggleSources .panel-chevron{margin:0;font-size:17px}
 #forecast .forecast-body{padding:0 12px}
 #forecast .forecast-head{margin-bottom:16px}
 #forecast .metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;max-width:420px;padding:3px;gap:2px;align-self:auto}
 #forecast .metrics button,#forecast .metrics button[data-metric=amount]{min-height:42px;padding:5px 2px;gap:4px;font-size:12px}
 #forecast .metrics .metric-word{display:none}
 #forecast .metrics .metric-short{display:inline}
 .timeline-toolbar{align-items:flex-end;gap:5px;margin-bottom:10px}
 .timeline-context{gap:6px;flex-wrap:wrap;max-width:calc(100% - 95px)}
 #forecast #mobileMeasure{flex-basis:100%;order:3;font-size:12px}
 .median-key{font-size:13px}
 .hourly-method summary{width:24px;height:24px}
 .hourly-method p{left:-85px;max-width:74vw}
 .hour-navigation{gap:5px}
 .hour-navigation button{width:40px;height:40px;padding:8px}
 #visibleHours,.hour-navigation .nav-label{display:none}
 #forecast #hourlyTable{--hour-width:97px;--label-width:70px}
 #forecast .tablewrap{scroll-padding-inline-start:75px}
 #forecast #hourlyTable th,#forecast #hourlyTable td{padding-inline:3px}
 #forecast #hourlyTable .hourly-label{font-size:11px;padding-inline:7px}
 #forecast #hourlyTable .hour-button{font-size:12px;padding-top:10px}
 #forecast #hourlyTable .cell.median-cell{min-height:137px;padding-bottom:12px}
 #forecast #hourlyTable .median-cell b{font-size:28px}
 #forecast #hourlyTable .median-cell .wx{width:38px;height:38px}
 #forecast #hourlyTable .cell .period-tag{font-size:10px}
 .timeline-bottom{gap:8px;margin-block:15px 14px}
 #forecast .forecast-credit{font-size:11px;line-height:1.5}
 #forecast .forecast-body .participate{margin-inline:-12px;padding-inline:12px}
}
@media(prefers-reduced-motion:reduce){#toggleSources .panel-chevron,#forecast .median-cell,.hour-navigation button{transition:none}}

/* Poor air quality is a quiet shortcut, separate from official warnings. */
.orb-air{position:absolute;left:0;top:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;width:46px;min-height:52px;gap:2px;padding:7px;border:1.5px solid var(--air-badge-color,#ed716d);border-radius:16px;background:#142c41;color:#fff;text-shadow:none;box-shadow:0 3px 12px #00142640}
.orb-air[hidden]{display:none}
.orb-air svg{width:23px;height:23px;fill:none;stroke:var(--air-badge-color,#ed716d);stroke-width:1.9;stroke-linecap:round}
.orb-air small{font-size:10px;line-height:1.2;font-weight:650;letter-spacing:.5px}
.orb-air:focus-visible{outline:3px solid #fff;outline-offset:3px}

/* V8.29: historical radar and global precipitation forecast in one on-demand map. */
#rainDetails[open]{grid-column:1/-1}
#rainDetails .rain-body{padding-top:0}
#radarDetails{margin-top:0}
#radarDetails>summary{min-height:70px;padding:15px 0}
#radarDetails .radar-body{padding-top:2px}
.map-modes{display:flex;gap:5px;padding:5px;border:1px solid var(--border);border-radius:18px;background:var(--blue-soft);width:fit-content;max-width:100%;margin-bottom:16px}
.map-modes button{font:inherit;font-size:14px;font-weight:650;color:var(--ink);background:transparent;border:0;border-radius:13px;padding:12px 20px;min-height:44px;cursor:pointer}
.map-modes button[aria-pressed=true]{background:var(--blue);color:var(--on-blue,#fff);box-shadow:0 2px 10px #06182417}
html[data-theme=dark] .map-modes button[aria-pressed=true]{background:#bce6ef;color:#173548}
#radarMap{height:420px;isolation:isolate;border-radius:18px;border:1px solid var(--border);background:#dce4e6;margin:12px 0}
#radarMap .leaflet-tile-pane{filter:grayscale(1)}
#radarMap .leaflet-control-attribution{font-size:11px;line-height:1.5;color:#183448;background:#fffffff0}
#radarMap .leaflet-control-attribution a{color:#155679}
#radarStatus{font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.radar-time{grid-template-columns:1fr auto 1fr}.radar-time time{font-size:15px;text-align:center}
.map-key{display:flex;flex-wrap:wrap;gap:10px 20px;margin:18px 0}
.map-key>span{display:flex;align-items:center;gap:7px;font-size:13px}.map-key b{font-weight:550}
.map-key i{display:block;width:14px;height:14px;border-radius:4px;border:1px solid #0003;flex:none}
.map-key .rain{background:#009800}.map-key .snow{background:#007fc4}.map-key .mix{background:#e8aa00}.map-key .freezing{background:#f11}.map-key .ice{background:#ec00ed}
#radarLegend,#rainNumbers{box-shadow:none;background:transparent;border:0;margin-top:14px}
#radarLegend>summary,#rainNumbers>summary{font:inherit;font-size:14px;min-height:48px;padding:12px 0;font-weight:600}
#radarLegendImage{display:block;max-width:100%;width:239px;height:auto;background:white;border-radius:10px;padding:10px;margin:12px 0}
.map-credit{font-size:12px}.radar-body a{overflow-wrap:anywhere}
@media(max-width:600px){#radarMap{height:330px;border-radius:13px}.map-modes{width:100%}.map-modes button{flex:1;padding:10px 6px;font-size:13px}.radar-time{grid-template-columns:1fr 1fr;row-gap:7px}.radar-time time{grid-column:1/-1;grid-row:1}.radar-time>span{grid-row:2}.map-key{gap:10px 14px}.map-key>span{font-size:12px}#radarStatus{font-size:13px}}

/* V8.29: visible feedback and coffee shortcuts, with room for the phone safe area. */
body{padding-bottom:calc(100px + env(safe-area-inset-bottom,0px))}
html{scroll-padding-bottom:calc(110px + env(safe-area-inset-bottom,0px))}
.support-dock{position:fixed;right:max(20px,env(safe-area-inset-right,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:70;display:flex;gap:8px;padding:7px;max-width:calc(100% - 24px);border:1px solid #ffffff85;border-radius:22px;background:#f0f7fff5;box-shadow:0 8px 30px #061b3e3d;color:#102e4c}
.support-dock[hidden]{display:none}
.support-dock button,.support-dock a{display:flex;align-items:center;justify-content:center;gap:9px;min-height:52px;min-width:0;padding:10px 15px;border:0;border-radius:16px;font:inherit;text-decoration:none;cursor:pointer;color:#fff;background:#17609c}
.support-dock a{color:#532d12;background:#ffcf99}
.support-dock span{display:block;text-align:left;min-width:0}
.support-dock b{display:block;font-size:14px;font-weight:700;line-height:1.3}
.support-dock small{display:block;font-size:11px;line-height:1.3;margin-top:2px;opacity:.94}
.support-dock small span{display:inline}
.support-dock svg{width:24px;height:24px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.support-dock button:hover{background:#104b7e}.support-dock a:hover{background:#ffc17c}
.support-dock :focus-visible{outline:3px solid #2089d2;outline-offset:3px}
html[data-theme=dark] .support-dock{background:#142b40f8;border-color:#b8d7e64f;box-shadow:0 8px 32px #0007}
html[data-theme=dark] .support-dock button{background:#c0e3f6;color:#12334a}
html[data-theme=dark] .support-dock button:hover{background:#dcf3ff}
.support-bar{border:1px solid #6597b77d;background:linear-gradient(110deg,var(--panel),var(--blue-soft));padding:24px 28px}
.support-bar .support-actions button{background:#17609c;color:white;border-color:transparent}
.support-bar .support-actions a{background:#ffcf99;color:#532d12;border-color:transparent}
.warning-item[data-level=NWS_EXTREME],.warning-item[data-level=NWS_SEVERE]{border-left-color:#dc3948}
.warning-item[data-level=NWS_MODERATE]{border-left-color:#ebbd18}
.warning-match{font-size:13px;color:var(--muted)}
body:has(dialog[open]) .support-dock{visibility:hidden}
@media(max-width:600px){
 .support-dock{right:12px;left:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));max-width:none;padding:6px;gap:6px;border-radius:19px}
 .support-dock button,.support-dock a{flex:1;padding:9px 8px;gap:7px;min-height:50px;border-radius:13px}
 .support-dock b{font-size:13px}.support-dock small{font-size:11px}.support-dock svg{width:22px;height:22px}
}
@media(max-width:350px){.support-dock b{font-size:12px}.support-dock button,.support-dock a{gap:5px;padding-inline:6px}.support-dock svg{width:20px;height:20px}}

.nws-area{margin:12px 0;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.nws-area summary{cursor:pointer;font-weight:700}.nws-area p{margin-bottom:0}

/* V8.29: ECCC's own risk colours; no conversion from alert type to severity. */
.warning-item[data-level=ECCC_YELLOW]{border-left-color:#dbad13}
.warning-item[data-level=ECCC_ORANGE]{border-left-color:#ed8a25}
.warning-item[data-level=ECCC_RED]{border-left-color:#d53e4a}
.eccc-risk{font-weight:700;margin:8px 0}

/* V8.29: use DWD's validated RGB value, including special heat/UV colours. */
.dwd-warning{border-left-color:var(--dwd-colour,#7a8d9f)}
.dwd-level{font-weight:700}
.dwd-colour{display:inline-block;vertical-align:-1px;margin-right:7px;width:14px;height:14px;border-radius:50%;background:var(--dwd-colour,#7a8d9f);box-shadow:0 0 0 1px #66778880}
.dwd-credit{font-size:.85rem;overflow-wrap:anywhere}

/* V8.29: sharper lettering, with a wider shadow following each glyph. */
#radarMap[data-loading-label]:not([data-loading-label=""])::after{content:attr(data-loading-label);position:absolute;z-index:500;top:12px;right:12px;max-width:calc(100% - 70px);padding:7px 10px;border-radius:12px;background:#102a40ed;color:#fff;font:600 12px/1.4 Arial,sans-serif;box-shadow:0 2px 10px #0003;pointer-events:none}
html[data-theme] .orb-copy{
 color:#fff;
 text-shadow:-1px -1px 1px #000,1px -1px 1px #000,-1px 1px 1px #000,1px 1px 1px #000,
  0 2px 3px #000,0 0 7px #010916,0 0 14px #010916,0 2px 22px #010916,0 4px 32px #010916;
}
.orb-copy :is(#placeTitle,#placeSubtitle,.summary-degree,.orb-condition,.solar-event>strong){-webkit-text-stroke:.45px #041020;paint-order:stroke fill}
.orb-copy :is(#placeSubtitle,.fine,.solar-event>span,.solar-event>small){font-weight:650;color:#fff}
.orb-copy .orb-facts>span{font-weight:650;color:#fff}

/* Compact hourly cards: the time is as prominent as the temperature. */
#forecast #hourlyTable{--hour-width:96px}
#forecast #hourlyTable .hour-button{flex-direction:column;gap:2px;height:52px;min-height:52px;padding:7px 3px 3px;font-size:22px;font-weight:750;line-height:1.1;font-variant-numeric:tabular-nums}
#forecast #hourlyTable .current-time small{font-size:10px;padding:2px 5px}
#forecast #hourlyTable .cell.median-cell{min-height:104px;padding:2px 4px 10px;gap:4px}
#forecast #hourlyTable .median-cell b{font-size:24px;font-weight:600;letter-spacing:-.4px}
#forecast #hourlyTable .median-cell .wx{width:32px;height:32px;margin:0}
#forecast #hourlyTable .weather-empty{width:32px;height:32px;font-size:20px}
#forecast .forecast-head{margin-bottom:14px}
.median-key{font-size:16px;letter-spacing:0}
.median-sources{margin:0 0 13px;color:var(--hour-muted);font-size:13px;line-height:1.55;max-width:850px}
#forecast .timeline-context{position:relative}
#forecast .hourly-method{position:static}
#forecast .hourly-method p{left:0;bottom:calc(100% + 6px);width:min(300px,calc(100vw - 64px));max-width:none}
@media(max-width:760px){
 #forecast #hourlyTable{--hour-width:86px}
 #forecast #hourlyTable .hour-button{font-size:20px;height:50px;min-height:50px;padding-top:6px}
 #forecast #hourlyTable .cell.median-cell{min-height:94px;padding-bottom:9px}
 #forecast #hourlyTable .median-cell b{font-size:22px}
 #forecast #hourlyTable .median-cell .wx{width:28px;height:28px}
 #forecast #hourlyTable .weather-empty{width:28px;height:28px}
 .median-key{font-size:15px}
 .median-sources{font-size:13px;margin-bottom:10px}
}

/* Wind detail is attached to the existing globe value, without a new panel. */
#windOpen{display:flex;flex-direction:column;align-items:center;gap:0;width:100%;min-height:52px;padding:0 2px;background:transparent;border:0;border-radius:9px;color:inherit;text-shadow:inherit;font:inherit;pointer-events:auto}
#windOpen>span{text-decoration:underline;text-decoration-color:#ffffff80;text-underline-offset:3px}
#windOpen:hover{background:#071a3233}
#windOpen:focus-visible{outline:2px solid #fff;outline-offset:4px}
#windDirection{font-size:14px;line-height:1.3;font-weight:650;margin-top:5px;max-width:100%}
.wind-direction-badge{display:inline-flex;align-items:center;justify-content:center;gap:5px;max-width:100%;vertical-align:middle}
.wind-direction-badge>span:not(.sr){min-width:0}
.wind-flow-arrow{display:block;width:18px;height:18px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#windDirection .wind-flow-arrow{width:21px;height:21px;color:#bce8f6;filter:drop-shadow(0 1px 2px #071a32)}
.hour-wind-direction{display:block;grid-column:1 / -1;min-width:0;line-height:1.2;font-size:12px}
#forecast #hourlyTable .compact-hour .hour-wind-direction{height:14px;line-height:14px;font-size:10px;color:var(--hour-text)}
#forecast #hourlyTable .compact-hour .hour-wind-direction .wind-direction-badge{height:14px;gap:3px;white-space:nowrap}
#forecast #hourlyTable .compact-hour .hour-wind-direction .wind-flow-arrow{width:13px;height:13px;color:var(--hour-accent)}
.wind-dialog{width:min(650px,calc(100vw - 28px))}
.wind-units{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 8px}
.wind-units button{padding:8px 16px;min-height:44px;border-radius:24px;border:1px solid var(--border);background:var(--blue-soft);font-weight:650}
.wind-units button[aria-pressed=true]{background:var(--selected);color:var(--on-selected)}
.wind-overview{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0;padding:17px;border:1px solid var(--border);border-radius:18px;background:var(--blue-soft)}
.wind-overview>div{display:flex;flex-direction:column;gap:5px;min-width:0}
.wind-overview strong{font-size:23px;line-height:1.25}
.wind-overview small{font-size:13px;color:var(--muted)}
.wind-source{padding:15px 0;border-top:1px solid var(--border)}
.wind-source header{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:0}
.wind-source header .source-dot{display:block;width:7px;height:7px;margin:0;border-radius:50%;background:var(--source);flex-shrink:0}
.wind-source-direction{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:14px;font-weight:600}
.wind-arrow{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.wind-source dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 0}
.wind-source dl>div{display:flex;flex-direction:column;gap:2px}
.wind-source dt{font-size:13px;color:var(--muted)}
.wind-source dd{margin:0;font-size:20px;font-weight:650;font-variant-numeric:tabular-nums}
.wind-source p,.wind-note{font-size:13px;line-height:1.6;color:var(--muted);margin-top:10px}
.wind-note{padding-top:14px;border-top:1px solid var(--border)}
#hourWindDetails{margin-top:18px}#hourWindDetails h3{font-size:17px;margin-bottom:8px}
@media(max-width:560px){#windDirection{font-size:12px}#windDirection .wind-flow-arrow{width:18px;height:18px}.wind-dialog{padding:18px 14px}.wind-overview{padding:12px;gap:10px}.wind-overview strong{font-size:19px}.wind-source-direction{font-size:13px}.wind-units button{flex:1;padding-inline:9px}}

/* V8.33: only visible while resolving a shared link or offering recovery. */
.route-notice{max-width:640px;margin:14px auto;padding:12px 16px;border-radius:18px;background:var(--panel);color:var(--ink);text-align:center;font-size:15px;line-height:1.45}
.route-notice p{margin:0}.route-notice button{margin-top:8px}.route-notice[hidden]{display:none}

/* V8.35: scrollable dialogs with a reachable close action, including landscape. */
html[data-dialog-open=true]{overflow:hidden}
html[data-dialog-open=true] body{position:fixed;top:var(--dialog-page-top);left:0;width:var(--dialog-page-width);overflow:hidden}
dialog:is(#hourDialog,#windDialog,#warningDialog,#voteDialog,#feedbackDialog){
 --dialog-pad:22px;position:fixed;inset:0;padding:var(--dialog-pad);
 max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));
 overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;
 scroll-padding-block:100px 20px;
}
dialog .dialog-head{
 position:sticky;top:calc(-1 * var(--dialog-pad));z-index:5;
 margin:calc(-1 * var(--dialog-pad)) calc(-1 * var(--dialog-pad)) 16px;
 padding:14px var(--dialog-pad) 12px;background:var(--solid);
 border-bottom:1px solid var(--border);align-items:center;
}
dialog .dialog-head>div,dialog .dialog-head h2{min-width:0;overflow-wrap:anywhere}
dialog .dialog-head button{min-width:44px;min-height:44px;width:44px;height:44px;color:var(--ink)}
dialog .dialog-head button:focus-visible{outline-offset:2px}
@media(max-width:560px),(max-height:480px){
 dialog:is(#hourDialog,#windDialog,#warningDialog,#voteDialog,#feedbackDialog){--dialog-pad:16px}
 dialog .dialog-head{padding-block:10px;margin-bottom:14px;gap:10px}
 dialog .dialog-head h2,#feedbackDialog .dialog-head h2,#voteDialog .dialog-head h2{font-size:22px;line-height:1.25}
}


/* V8.40: one continuous timeline with labelled local-day boundaries. */
#forecast #hourlyTable .hour-day-label{height:34px;padding:0 4px 8px;text-align:left;vertical-align:bottom;color:var(--hour-muted);font-size:14px;font-weight:650}
#forecast #hourlyTable .hour-day-label>span{display:block;border-bottom:1px solid var(--hour-edge);padding:0 0 6px;white-space:nowrap}
#forecast #hourlyTable .hour-new-day{padding-left:12px;color:var(--hour-accent)}
#forecast #hourlyTable .hour-day-start{padding-left:12px;box-shadow:inset 2px 0 var(--hour-accent)}
#forecast #hourlyTable .hour-day-groups .hourly-label{background:var(--hour-header);box-shadow:none}
@media(max-width:760px){
 #forecast #hourlyTable .hour-day-label{font-size:13px;padding-inline:3px}
 #forecast #hourlyTable .hour-new-day,#forecast #hourlyTable .hour-day-start{padding-left:10px}
}

/* V8.41: a recognizable rain-map entry and a clock tied to the visible frame. */
#rainDetails{border-color:#428ba88a;overflow:hidden}
#rainDetails>summary{position:relative;isolation:isolate;min-height:146px;padding:24px;gap:20px;color:#effbff;background:radial-gradient(ellipse at 90% 10%,#20b7e854,transparent 58%),linear-gradient(115deg,#123f65,#086c97);border:0}
#rainDetails>summary::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.18;background:repeating-linear-gradient(25deg,transparent 0 29px,#b7efff35 30px 31px,transparent 32px 61px);mask-image:linear-gradient(90deg,transparent,#000)}
#rainDetails>summary .section-kicker{color:#b6e8fa;font-weight:650;letter-spacing:.13em;font-size:11px}
#rainDetails>summary strong{color:#fff;font-size:25px;line-height:1.2;margin:6px 0}
#rainDetails>summary small{color:#d4f0fa;font-size:14px;line-height:1.4}
#rainDetails>summary .extra-arrow{display:grid;place-items:center;align-self:center;min-width:36px;height:36px;border-radius:50%;border:1px solid #bcecff73;background:#1b547333;color:#e4faff;font-size:20px}
#rainDetails .rain-map-art{position:relative;display:block;flex:0 0 92px;width:92px;height:92px;border-radius:22px;background:#072f52a8;border:1px solid #84dfff80;box-shadow:inset 0 0 30px #228abe44,0 8px 24px #04284633;overflow:hidden}
#rainDetails .rain-map-art svg{display:block;width:100%;height:100%;stroke-linecap:round;stroke-linejoin:round}
#rainDetails .rain-map-art .map-sheet{fill:#226b95;stroke:#a2dfff;stroke-width:1.8}
#rainDetails .rain-map-art .map-fold{fill:none;stroke:#a2dfff;stroke-width:1.3}
#rainDetails .rain-map-art .cloud{fill:#eafaff;stroke:#eafaff;stroke-width:1.6}
#rainDetails .rain-map-art .rain{stroke:#91e8ff;stroke-width:3;fill:none}
#rainDetails>summary:hover .rain-map-art,#rainDetails>summary:focus-visible .rain-map-art{box-shadow:0 0 0 3px #90eaff3d,inset 0 0 28px #2eabd944}
#rainDetails>summary:focus-visible{outline:3px solid #90eaff;outline-offset:-5px}
#radarDetails>summary{display:none}
#rainDetails .radar-body{padding-top:22px}
.map-window-heading{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:14px}
.map-window-heading>div{min-width:0}
.map-window-heading span{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}
#radarWindow{display:block;color:var(--ink);font-size:18px;line-height:1.45;font-weight:650}
#radarRefresh{flex-shrink:0}
.radar-stage{position:relative;isolation:isolate}
#radarMap{margin:0;height:460px}
.map-clock{position:absolute;z-index:600;right:14px;top:14px;max-width:calc(100% - 85px);width:260px;pointer-events:none;padding:12px 16px 14px;border-radius:16px;background:#092b47f5;border:1px solid #c4efff8c;box-shadow:0 4px 20px #041b3833;color:#eefbff;text-align:left;overflow:hidden;font-variant-numeric:tabular-nums}
#radarClockDay{display:block;font-size:13px;font-weight:600;line-height:1.45;color:#c4ebff}
#radarTime{display:block;font-size:32px;line-height:1.2;font-weight:750;letter-spacing:-.025em;color:#fff;margin:4px 0 7px;white-space:nowrap}
#radarClockState{display:block;font-size:12px;line-height:1.4;min-height:17px;color:#eefbff}
#radarClockZone{display:block;font-size:11px;line-height:1.5;color:#bbd8e8;margin-top:3px;overflow-wrap:anywhere}
.map-clock-track{position:absolute;bottom:0;left:0;height:3px;width:100%;background:#ffffff21}
#radarClockProgress{display:block;height:100%;background:#6ed7ff}
.map-clock.is-waiting .map-clock-track{background:#ffdf8a55}
.map-playback-info{display:flex;justify-content:center;align-items:center;gap:7px 16px;flex-wrap:wrap;margin:8px 0 0;font-size:13px;color:var(--muted);line-height:1.5}
.map-playback-info>span{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere}
#radarPosition{margin:0;font-weight:650;color:var(--ink)}
.radar-time{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px;font-size:12px;color:var(--muted)}
.radar-time>span{max-width:49%;line-height:1.5}
.radar-controls{margin-top:16px}
#radarPlay{background:#075f92;color:#fff;border-color:#6ad0ff;min-width:104px;font-weight:650}
#radarFrame{accent-color:#2595d3}
#radarForecastNote .map-key .rain{background:#38aafa}
#radarForecastNote .map-key .snow{background:#b6a0ef}
#radarStatus{margin:12px 0 0;font-size:12px;color:var(--muted);min-height:0}
#radarLegend .map-legend-scroll{overflow:auto;max-width:100%}
#radarColorTable{border-collapse:collapse;width:100%;min-width:300px;max-width:650px;table-layout:auto;font-size:12px;text-align:center;margin:10px 0}
#radarColorTable caption{text-align:left;color:var(--muted);padding:5px 0 10px;font-size:12px}
#radarColorTable th,#radarColorTable td{padding:7px 5px;border-bottom:1px solid var(--border);font-size:12px;color:var(--ink);font-weight:500;width:auto;height:auto}
#radarColorTable th:first-child{text-align:left;min-width:86px;max-width:140px;white-space:normal}
#radarColorTable td i{display:block;min-width:25px;height:22px;border-radius:5px;box-shadow:inset 0 0 0 1px #09274026}
@media(max-width:600px){
 #rainDetails>summary{min-height:126px;padding:19px 16px;gap:13px}
 #rainDetails .rain-map-art{flex-basis:65px;width:65px;height:76px;border-radius:17px}
 #rainDetails>summary strong{font-size:22px}
 #rainDetails>summary .section-kicker{font-size:9px;letter-spacing:.09em}
 #rainDetails>summary small{font-size:12px}
 #rainDetails>summary .extra-arrow{min-width:28px;height:28px;font-size:17px}
 #rainDetails .rain-body{padding-inline:12px}
 .map-window-heading{gap:10px;align-items:flex-start}
 #radarWindow{font-size:14px}
 #radarRefresh{font-size:11px;padding:8px;min-height:44px}
 #radarMap{height:385px}
 .map-clock{top:10px;right:9px;max-width:calc(100% - 62px);width:230px;padding:9px 11px 12px;border-radius:13px}
 #radarTime{font-size:27px}
 #radarClockDay{font-size:12px}
 #radarClockState{font-size:11px}
 #radarClockZone{font-size:10px}
 .map-playback-info{font-size:12px;text-align:center;gap:2px 12px}
 .radar-time{font-size:11px}
}

#radarForecastNote .map-about{background:transparent;border:0;box-shadow:none;margin:5px 0}
#radarForecastNote .map-about>summary{font-size:13px;font-weight:600;min-height:44px;padding:12px 0}
#radarForecastNote .map-about p{font-size:13px;line-height:1.65}
#radarLatest{display:inline-flex;align-items:center;justify-content:center;gap:5px}
#radarLatest>span:first-child{font-size:19px;line-height:1}
#radarFrame{appearance:none;-webkit-appearance:none;background:transparent;border:0;cursor:pointer}
#radarFrame::-webkit-slider-runnable-track{height:6px;background:#9ccbe3;border-radius:6px}
#radarFrame::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:20px;height:20px;margin-top:-7px;border:2px solid #e2f7ff;border-radius:50%;background:#168ac9;box-shadow:0 1px 5px #07395844}
#radarFrame::-moz-range-track{height:6px;background:#9ccbe3;border-radius:6px}
#radarFrame::-moz-range-thumb{width:16px;height:16px;border:2px solid #e2f7ff;border-radius:50%;background:#168ac9}
#radarFrame:focus-visible{outline:2px solid #38aafa;outline-offset:2px;border-radius:10px}
#radarFrame:disabled{opacity:.5;cursor:default}
@media(max-width:600px){#radarLatest .map-first-text{display:none}#radarLatest{min-width:42px}.radar-controls{flex-wrap:nowrap}}

/* V8.42: equal gutters, complete cards, and explicit metric modes. */
#forecast .metrics button[aria-pressed=true]{background:var(--hour-accent);color:#fff}
html[data-theme=dark] #forecast .metrics button[aria-pressed=true]{color:#133d43}
#forecast #hourlyTable .hour-day-start{position:relative;padding-inline:4px;box-shadow:none}
#forecast #hourlyTable .hour-day-start:before{content:"";position:absolute;left:-1px;top:0;bottom:0;width:2px;background:var(--hour-accent);pointer-events:none}
#forecast #hourlyTable .hour-new-day{padding-left:4px}
#forecast #hourlyTable .hour-day-label>span{position:sticky;left:4px;width:max-content;max-width:100%}
#forecast #hourlyTable .hour-metric-symbol{display:grid;place-items:center;height:38px;width:38px;margin:0 0 3px;color:#17618a}
#forecast #hourlyTable .hour-metric-symbol svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#forecast #hourlyTable .metric-unit{font-size:12px;font-weight:600;line-height:1.3;color:#31536a}
#forecast [data-tone=amount]{--tile-bg:#dff4ff;--tile-end:#b8dcf6}
#forecast [data-tone=wind]{--tile-bg:#e4f6f1;--tile-end:#c1e5df}
#forecast [data-tone=uv]{--tile-bg:#fff1d4;--tile-end:#f3dcaf}
#forecast[data-hour-metric=rain] [data-tone=rain]{--tile-bg:#dff4ff;--tile-end:#b8dcf6}
@media(max-width:760px){
 #forecast #hourlyTable .hour-day-start{padding-inline:3px}
 #forecast #hourlyTable .hour-new-day{padding-left:3px}
 #forecast #hourlyTable .hour-button{font-size:22px}
 #forecast #hourlyTable .metric-unit{font-size:11px}
}

/* V8.43: ordinary crawlable links, present before JavaScript runs. */
.place-directory-links{display:flex;flex-wrap:wrap;gap:10px 22px;padding:0 0 20px}.place-directory-links a{display:inline-flex;align-items:center;min-height:44px;color:var(--ink);font-size:15px;text-underline-offset:4px}.place-directory-links a:focus-visible{outline:3px solid var(--blue);outline-offset:4px;border-radius:4px}

/* V8.46: visible place identity before scripts; no empty forecast panels. */
.place-description{position:relative;z-index:2;max-width:650px;margin:14px auto 0;padding:12px 18px;border-radius:18px;background:var(--panel);color:var(--ink);font-size:15px;line-height:1.6;text-align:center;overflow-wrap:anywhere}
.script-notice{max-width:650px;margin:18px auto;padding:14px 18px;background:var(--solid);color:var(--ink);border-radius:18px;font-size:16px;text-align:center}
.script-notice a{display:inline-block;padding:8px;text-decoration:underline}
html[data-page-state=identity] main>:not(#currentWeather):not(#forecastSummary):not(#outlook):not(#forecast),html[data-page-state=identity] .source-setting{display:none}
html[data-page-state=identity] #currentWeather :is(.orb-copy>:not(.orb-heading),.orb-alerts,.orb-air,.forecast-credit){visibility:hidden}
html[data-page-state=identity] .orb-heading{color:#fff;background:none;border:0;box-shadow:none;text-shadow:0 1px 3px #020914,0 0 6px #020914,0 0 14px #020914}
@media(max-width:560px){.place-description{font-size:14px;padding:10px 14px}}

/* V8.47: recognizable air and rain cards, with real AQI driving the accent. */
#airDetails>summary{position:relative;isolation:isolate;min-height:146px;padding:24px;gap:20px;background:var(--solid);background:radial-gradient(ellipse at 12% 25%,color-mix(in srgb,var(--aq-color) 24%,transparent),transparent 72%),var(--solid);box-shadow:inset 0 2px var(--aq-color)}
#airDetails>summary>span:nth-child(2){min-width:0;flex:1}
#airDetails>summary .section-kicker{color:var(--ink);opacity:.85;font-size:11px;font-weight:650;letter-spacing:.1em}
#airDetails>summary strong{font-size:25px;line-height:1.25;margin:6px 0;color:var(--ink);overflow-wrap:anywhere}
#airDetails>summary small{font-size:13px;line-height:1.5;color:var(--muted)}
#airDetails>summary .extra-arrow{display:grid;place-items:center;align-self:center;min-width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--blue-soft);font-size:20px;color:var(--ink)}
.air-quality-art{position:relative;display:block;flex:0 0 92px;width:92px;height:92px;border-radius:50%;color:var(--ink);background:var(--panel);border:1px solid var(--border);box-shadow:0 8px 28px #102b3e0d}
.air-quality-art svg{display:block;width:100%;height:100%;stroke-linecap:round;stroke-linejoin:round}
.air-quality-art .air-halo{fill:none;stroke:var(--aq-color);stroke-width:1.4;opacity:.5}
.air-quality-art .air-flow{fill:none;stroke:currentColor;stroke-width:2.6}
.air-quality-art .air-particle{fill:currentColor;opacity:.5}
.air-quality-art .aq-status-dot{width:23px;height:23px;top:auto;right:1px;bottom:0;border:3px solid var(--solid);box-shadow:0 0 0 1px var(--border)}
.air-mini-scale{display:flex!important;gap:4px;width:132px;max-width:100%;margin-top:12px;align-items:center;height:8px}
.air-mini-scale i{display:block;flex:1;height:4px;min-width:0;border-radius:3px;background:var(--aq-color);opacity:.3}
#airDetails[data-aqi="0"] .air-mini-scale i:nth-child(1),#airDetails[data-aqi="1"] .air-mini-scale i:nth-child(2),#airDetails[data-aqi="2"] .air-mini-scale i:nth-child(3),#airDetails[data-aqi="3"] .air-mini-scale i:nth-child(4),#airDetails[data-aqi="4"] .air-mini-scale i:nth-child(5),#airDetails[data-aqi="5"] .air-mini-scale i:nth-child(6){opacity:1;height:8px;outline:1px solid var(--ink);outline-offset:2px}
#airDetails[data-aqi="-1"] .air-mini-scale i{background:var(--muted);opacity:.2}
#airDetails>summary:hover .air-quality-art,#airDetails>summary:focus-visible .air-quality-art{outline:2px solid var(--aq-color);outline-offset:3px}
#radarWindow{font-size:24px;line-height:1.3;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
#radarWindowDates{display:block;margin-top:4px;font-size:14px;line-height:1.45;color:var(--muted)}
@media(max-width:600px){
 #airDetails>summary{min-height:126px;padding:19px 16px;gap:13px}
 .air-quality-art{flex-basis:65px;width:65px;height:65px}
 .air-quality-art .aq-status-dot{width:19px;height:19px;border-width:2px}
 #airDetails>summary strong{font-size:22px}
 #airDetails>summary .section-kicker{font-size:10px;letter-spacing:.05em}
 #airDetails>summary small{font-size:12px}
 #airDetails>summary .extra-arrow{min-width:28px;height:28px;font-size:17px}
 .air-mini-scale{width:114px;margin-top:9px}
 #radarWindow{font-size:19px}#radarWindowDates{font-size:13px}
}

/* V8.49: disclosure arrows use centered geometry instead of a low font glyph. */
.disclosure-chevron{display:inline-flex;align-items:center;justify-content:center;align-self:center;flex-shrink:0;width:20px;height:20px;line-height:1;vertical-align:middle;transform-origin:center;transition:transform .2s ease}
.disclosure-chevron>.chevron-icon{display:block;width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.source-panel>summary>.disclosure-chevron{width:20px;height:20px}
.source-setting>summary>.disclosure-chevron{width:18px;height:18px;margin-left:6px}
details[open]>summary>.disclosure-chevron{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){.disclosure-chevron{transition:none!important}}

/* V8.54: distinguish one-hour model spread from the daily high/low. */
.day-range-label{font-size:13px;line-height:1.5;color:var(--muted);margin:0 0 12px}
.orb-copy #currentRangeLabel{font-size:15px;line-height:1.4}
.orb-copy .range-values{gap:14px}
/* Keep only the date and the visible frame's hour over the rain map.
   Loading state and timezone remain visible immediately below it. */
.map-clock{width:auto;max-width:calc(100% - 85px);padding:9px 13px 11px}
#radarTime{font-size:26px;margin:3px 0 0}
.map-frame-detail{display:flex;justify-content:space-between;align-items:baseline;gap:6px 18px;flex-wrap:wrap;padding:8px 2px 0;color:var(--muted)}
.map-frame-detail #radarClockState{color:var(--muted);min-height:0;font-size:12px}
.map-frame-detail #radarClockZone{color:var(--muted);font-size:11px;margin:0}
@media(max-width:600px){
 .map-clock{right:8px;top:8px;width:auto;max-width:min(180px,calc(100% - 72px));padding:6px 9px 9px;border-radius:11px}
 #radarClockDay{font-size:10px;line-height:1.3}
 #radarTime{font-size:20px;line-height:1.2;margin:2px 0 0}
 .map-frame-detail{gap:3px 12px;padding-top:7px}
 .map-frame-detail #radarClockState,.map-frame-detail #radarClockZone{font-size:11px}
 .day-range-label{font-size:12px;margin-bottom:10px}
 .orb-copy #currentRangeLabel{font-size:13px}
 .orb-copy .range-values{gap:10px}
}

/* V8.57: calmer daylight and explanations one step away from the forecast. */
html[data-theme=light]{--paper:#c6d5dc;--panel:#e7eef2f2;--solid:#e9f0f3;--ink:#153247;--muted:#425d70;--border:#d0dde5;--shadow:0 14px 45px -26px #173c5360,inset 0 1px #f2f6f8}
.section-info{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;min-height:44px;padding:6px;background:var(--blue-soft);border:1px solid var(--line);border-radius:50%;color:var(--ink);font-size:15px;line-height:1.3}
.section-info>span:first-child{font:italic 22px Georgia,serif;width:25px;text-align:center}
.section-info.info-with-label{border-radius:24px;padding:7px 15px 7px 9px}
.weather-info-row{display:flex;justify-content:center;gap:12px;margin:12px auto 0}
#currentWeather>.forecast-credit{font-size:12px;margin-top:12px;padding:6px 12px}
.outlook-heading{align-items:center;gap:12px}
.outlook-heading>.section-info{margin-inline-start:auto}
.hourly-panel .timeline-context{gap:9px}
.hourly-panel .tablefoot:empty,.hourly-panel .timeline-bottom:has(#toggleHours[hidden]){display:none}
.section-info-dialog{--dialog-pad:24px;position:fixed;inset:0;padding:var(--dialog-pad);max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overflow:auto;overscroll-behavior:contain;scroll-padding-top:90px}
.section-info-dialog .info-content{font-size:15px;line-height:1.7;overflow-wrap:anywhere}
.section-info-dialog h3{font-size:16px;margin:20px 0 6px}
.section-info-dialog :is(.place-description,.outlook-note,.median-sources,#tableNote,#hourRange,#radarStatus,#uvSource){display:block;max-width:none;margin:12px 0;padding:0;background:none;border:0;text-align:start;color:var(--ink);font:inherit}
.section-info-dialog :is(.interpolation-note,.data-note){font-size:14px;line-height:1.65}
.section-info-dialog .forecast-credit{display:block;margin:18px 0 0;padding:12px 0 0;border-top:1px solid var(--line);border-radius:0;background:none;text-align:start;font-size:13px}
.globe-speed-options{border:0;padding:0;margin:18px 0;display:flex;flex-wrap:wrap;gap:8px}
.globe-speed-options legend{font-weight:600;margin-bottom:8px}
.globe-speed-options label{display:flex;align-items:center;gap:7px;min-height:44px;padding:8px 14px;border:1px solid var(--line);border-radius:24px;cursor:pointer}
.globe-speed-options label:has(:checked){background:var(--selected);color:var(--on-selected)}
.globe-speed-options input{accent-color:var(--blue)}
.map-window-heading{gap:8px;flex-wrap:wrap}.map-window-heading>div{flex:1;min-width:190px}
#airDetails .extra-body>.section-info{float:right;margin:0 0 8px 10px}
@media(max-width:760px){
 .preferences{max-width:390px;grid-template-columns:max-content max-content minmax(70px,100px);column-gap:5px}
 .preferences .seg button{font-size:14px;padding-inline:6px;min-width:32px}
 .hourly-panel .forecast-body{padding-top:8px}
 .hourly-panel .timeline-toolbar{margin:12px 0 10px;gap:6px}
 .hourly-panel .timeline-context{gap:4px;display:flex;flex-wrap:wrap;max-width:65%}
 .hourly-panel #mobileMeasure{font-size:12px}
 .hourly-panel .timeline-context .section-info{order:3}
 .hourly-panel #forecastPreview{font-size:12px;line-height:1.4}
 .hourly-panel .median-key{font-size:14px}
 .hourly-panel .hour-navigation{gap:5px}
 .hourly-panel .hour-navigation button{width:44px;min-width:44px;height:44px}
 .section-info-dialog{--dialog-pad:18px}
 .section-info-dialog .dialog-head h2{font-size:24px}
 .journey-row .scroll-cue{letter-spacing:.04em;font-size:10px}
 #currentWeather>.forecast-credit{max-width:100%;font-size:11px}
}
@media(max-width:350px){.preferences{grid-template-columns:1fr 1.2fr}.preferences .language-group{grid-column:1/-1;justify-self:center;width:130px;margin-top:8px}}

/* V8.58: quiet overview, with complete explanations in native dialogs. */
.search-tools{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:16px auto 4px}
.search-tools .section-info{background:var(--panel);box-shadow:0 3px 16px #102d4210}
.search-tools #refreshData{min-height:44px;padding:10px 16px;border:1px solid var(--line);border-radius:28px;background:var(--panel);color:var(--ink)}
html[data-has-place=false] #refreshData,html[data-has-place=true] .landing-clearance{display:none}
.landing-clearance{height:clamp(180px,28vw,270px);pointer-events:none}
html[data-has-place=false] :is(.top,.searcharea){pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html[data-has-place=false] :is(.top,.searcharea) :is(a,button,select,input,label,.searchbox,#searchResults,#routeNotice){pointer-events:auto}
html[data-has-place=false] #search{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
#siteInfo .source-setting{display:block;margin:18px 0;max-width:100%;text-align:start}
#siteInfo .source-setting summary{justify-content:flex-start}
#siteInfo .source-setting p{max-width:none}
#siteInfo .source-setting select{display:block;margin-top:12px;width:100%}
#siteInfo .search-hint{color:var(--muted);text-shadow:none;font-size:14px}
#siteInfo #demoLabel{display:inline-block;margin-top:14px;color:var(--ink);background:var(--blue-soft);text-shadow:none}
#globeInfo .orb-range{display:block;width:100%;margin:14px 0 20px;padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--blue-soft);text-shadow:none;color:var(--ink)}
#globeInfo .orb-range :is(span,b,small){color:inherit;font-size:inherit}
#globeInfo .range-values{display:flex;align-items:center;gap:14px;margin-block:8px}
#globeInfo .range-values b{font-size:24px}
#globeInfo .range-track{background:var(--muted);flex:1;max-width:160px}
#globeInfo #currentTime{font-weight:650;color:var(--ink);margin:0 0 10px}

.summary-card{padding-top:0}
#outlook{margin-top:22px}
#outlook .day-range-label{display:block;margin:0 0 12px;font-size:12px;color:var(--muted)}
#forecast .forecast-heading{padding:26px 28px 18px}
#forecast .forecast-title-row{display:flex;align-items:center;gap:12px;justify-content:space-between}
#forecast #forecastTitle{font:400 clamp(26px,2.5vw,34px)/1.2 Georgia,serif;letter-spacing:-.6px;margin:0;min-width:0}
#forecast #forecastPreview{font-size:14px;color:var(--hour-muted);margin:7px 0 12px;line-height:1.5}
#forecast #toggleSources{width:auto;display:inline-flex;padding:0;gap:12px;min-height:44px;flex-wrap:nowrap;border-radius:24px}
#forecast #toggleSources .panel-chevron{margin:0}
#forecast .forecast-body{padding-bottom:24px}
#forecast .tablewrap{padding-bottom:4px}
#forecast .timeline-context{max-width:calc(100% - 102px)}
#forecast .forecast-title-row>.section-info{align-self:center}
@media(max-width:760px){
 .search-tools{gap:8px;margin-top:12px}
 .search-tools .info-with-label{font-size:12px;padding-inline:8px 12px}
 #forecast .forecast-heading{padding:20px 16px 12px}
 #forecast #forecastTitle{font-size:clamp(22px,6.4vw,29px)}
 #forecast #forecastPreview{font-size:12px;margin-block:7px 10px}
 #forecast .forecast-body{padding-bottom:20px}
 #forecast .timeline-toolbar{margin-top:8px}
 #forecast #toggleSources .source-toggle-label{margin-top:0}
 #outlook{margin-top:16px}
}

/* V8.60: the controls belong to the strip they move. */
#forecast .timeline-toolbar{margin:12px 0 6px;min-height:0}
#forecast .timeline-context{max-width:none;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
#forecast .hour-navigation{margin:8px 0 0;padding:6px 2px 0;display:flex;width:100%;gap:8px;align-items:center}
#forecast #visibleHours{margin-right:auto;font-size:12px;color:var(--hour-muted)}
#forecast .hour-swipe-hint{display:none}
#forecast .tablewrap{padding-bottom:6px}
#airDetails>summary{box-shadow:none}
#refreshData{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13px}
#refreshData>svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
#refreshData:disabled{opacity:.6;cursor:wait}
@media(max-width:760px){
 #forecast .timeline-toolbar{margin:8px 0 4px}
 #forecast .timeline-context{max-width:none;gap:4px 8px}
 #forecast .hour-navigation{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;margin-top:5px;padding-top:4px}
 #forecast #previousHours{grid-column:1;grid-row:1}
 #forecast #nextHours{grid-column:3;grid-row:1}
 #forecast .hour-navigation button{height:44px;min-height:44px;width:44px;min-width:44px;background:var(--hour-header);border-color:var(--hour-edge)}
 #forecast .hour-swipe-hint:not([hidden]){display:block;grid-column:2;grid-row:1;text-align:center;font-size:11px;color:var(--hour-muted);line-height:1.35}
 #forecast #visibleHours{display:none}
 #forecast .hour-navigation .nav-label{display:none}
 .search-tools{gap:7px}
 .search-tools #refreshData{padding-inline:11px;font-size:12px}
}

/* V8.61: dismissible mobile support, with a reachable 44px return button. */
.support-dock .support-dock-close,.support-dock-reopen{display:none}
@media(max-width:600px){
 .support-dock .support-dock-close{display:grid;place-items:center;position:absolute;right:0;bottom:calc(100% + 6px);width:44px;height:44px;min-height:44px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--panel);color:var(--ink);font-size:26px;box-shadow:0 3px 12px #071b3820}
 .support-dock-reopen{display:grid;place-items:center;position:fixed;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:70;width:44px;height:44px;padding:10px;border:1px solid var(--border);border-radius:50%;background:var(--panel);color:var(--ink);box-shadow:0 3px 12px #071b3820}
 .support-dock-reopen svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
 .support-dock-reopen:focus-visible{outline:3px solid #2089d2;outline-offset:3px}
 .support-dock-reopen[hidden]{display:none}
 body:has(dialog[open]) .support-dock-reopen{visibility:hidden}
}

/* V8.62: ten daily summaries in a compact, readable table. */
.day-coverage-wrap{max-width:100%;margin-top:18px}
.section-info-dialog .day-coverage{width:100%;border-collapse:collapse;table-layout:fixed;margin:0;font-size:14px;line-height:1.4}
.day-coverage caption{text-align:start;padding:0 0 10px;color:var(--muted);font-size:13px}
.day-coverage :is(th,td){padding:11px 8px;border-bottom:1px solid var(--border);text-align:end;font-variant-numeric:tabular-nums;vertical-align:middle}
.day-coverage th:first-child{width:49%;text-align:start;overflow-wrap:anywhere}
.day-coverage thead th{width:17%;height:auto;background:var(--blue-soft);font-size:12px;color:var(--muted);font-weight:600;overflow-wrap:anywhere}
.day-coverage tbody th{font-size:inherit;font-weight:500}
.day-coverage td:nth-child(2){font-weight:700}
.day-coverage tbody tr:nth-child(even){background:var(--blue-soft)}
.day-coverage tbody tr[data-selected=true]{background:var(--blue-soft);box-shadow:inset 3px 0 var(--blue)}
.day-coverage tbody tr:last-child>*{border-bottom:0}
@media(max-width:400px){.section-info-dialog .day-coverage{font-size:12px}.day-coverage :is(th,td){padding:10px 5px}.day-coverage thead th{font-size:11px}}

/* V8.68: the global motion control stays reachable before and after a search. */
.search-tools .motion-toggle{position:static;display:inline-flex;align-items:center;justify-content:center;min-height:44px;max-width:100%;padding:10px 16px;border:1px solid var(--line);border-radius:28px;background:var(--panel);color:var(--ink);font:inherit;font-size:14px;line-height:1.35;white-space:normal;text-align:center}
.search-tools .motion-toggle[aria-pressed=true]{background:var(--selected);color:var(--on-selected)}
.search-tools .motion-toggle:focus-visible{outline:3px solid var(--accent,#168be8);outline-offset:3px}
.search-tools .motion-toggle:disabled{cursor:default;opacity:.8}
@media(max-width:600px){.search-tools .motion-toggle{font-size:12px;padding-inline:12px}}

/* V8.69: the same readable forecast summary with or without JavaScript. */
.forecast-summary{position:relative;margin:0 0 24px;padding:24px 30px;border-radius:28px;background:var(--panel);color:var(--ink);border:1px solid var(--line);overflow-wrap:anywhere}
.forecast-summary[hidden]{display:none}
.forecast-summary h2{margin:0 0 8px;font-size:clamp(22px,3vw,30px)}
.forecast-summary p{margin:8px 0;line-height:1.6}
.forecast-summary .forecast-summary-text{max-width:75ch;font-size:17px}
.forecast-summary-time,.forecast-summary-sources,.forecast-summary-checked{font-size:13px}
.forecast-summary dl{display:flex;flex-wrap:wrap;gap:16px 32px;margin:18px 0}
.forecast-summary dt{font-size:13px}
.forecast-summary dd{margin:4px 0 0;font-size:18px;font-weight:700}
.forecast-summary dd small{font-size:12px;font-weight:400;white-space:nowrap}
.forecast-summary a{color:inherit;text-underline-offset:3px}
.forecast-summary a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(max-width:600px){.forecast-summary{padding:20px;border-radius:24px}.forecast-summary .forecast-summary-text{font-size:15px}.forecast-summary dl{gap:14px 22px}}

/* The same ten-day cards are readable before the interactive forecast starts. */
.day-method{margin:12px 4px 0;font-size:12px;color:var(--muted);line-height:1.5}
html[data-page-state=identity] #outlook .section-info{visibility:hidden}
.day-grid .day-card[role=group]{cursor:default}

/* Readable hourly content while the interactive controls are unavailable. */
html[data-page-state=identity] #forecast :is(.section-info,#toggleSources,.metrics,.datebar,.timeline-bottom,.participate,.hour-navigation button){display:none}
html[data-page-state=identity] #forecast .tablewrap{scrollbar-width:thin}
html[data-page-state=identity] #forecast .tablewrap::-webkit-scrollbar{display:block;height:6px}
html[data-page-state=identity] #forecast .tablewrap::-webkit-scrollbar-thumb{background:var(--hour-edge);border-radius:6px}
html[data-page-state=identity] #forecast :is(.hour-button,.median-cell){cursor:default}
html[data-page-state=identity] #forecast .median-cell:hover{filter:none}
#forecast[data-snapshot-only=true] #hourlyTable button:disabled{opacity:1;cursor:default}

/* V8.72: one complete forecast per hour, in a stable vertical reading order. */
.orb-feels{font-size:clamp(12px,1.4vw,17px);line-height:1.4;color:#f4f8fc;text-shadow:0 1px 3px #081726,0 0 7px #081726;margin:0 0 6px}
.orb-feels strong{font-size:1.08em;font-weight:700;margin-left:3px}
#forecast .timeline-context{max-width:100%;gap:6px 14px}
#forecast #hourlyTable{--hour-width:140px}
#forecast #hourlyTable .hour-button{font-size:23px;height:53px;min-height:53px;color:var(--hour-text)}
#forecast #hourlyTable .cell.median-cell,#forecast #hourlyTable .cell.source-hour-card{display:flex;padding:0 10px 8px;gap:0;min-height:0;align-items:stretch;color:var(--hour-text);cursor:default}
#forecast #hourlyTable .median-cell:hover{filter:none}
.hour-condition{display:flex;align-items:center;justify-content:center;height:40px;flex:0 0 40px}
#forecast #hourlyTable .hour-condition .wx{width:32px;height:32px;margin:0}
.hour-measures{display:block;width:100%;min-width:0;text-align:left}
#forecast #hourlyTable .median-cell>.hour-measures{display:block}
#forecast #hourlyTable .median-cell>.hour-condition{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:0}
.hour-measure{display:grid;grid-template-columns:minmax(0,1fr) 21px;grid-template-rows:24px 27px;column-gap:4px;padding:9px 0;border-top:1px solid #294b6626;min-width:0;align-items:center}
.hour-measure-label{grid-column:1;grid-row:1;align-self:start;font-size:10px;line-height:1.15;font-weight:550;overflow-wrap:anywhere;color:inherit;opacity:.83;white-space:normal}
.hour-measure-icon{grid-column:2;grid-row:1 / 3;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;opacity:.78}
.hour-value{grid-column:1;grid-row:2;display:flex;align-items:baseline;gap:3px;flex-wrap:wrap;line-height:1.2;font-variant-numeric:tabular-nums}
#forecast[data-hour-metric] #hourlyTable .cell .hour-value>b,.hour-overview .hour-value>b,.hour-source-detail .hour-value>b{font-size:22px;letter-spacing:-.4px;font-weight:650;line-height:1.15}
#forecast[data-hour-metric] #hourlyTable .cell [data-measure=temp] .hour-value>b{font-size:29px}
.hour-value-unit{font-size:10px;font-weight:500;white-space:nowrap}
#forecast #hourlyTable .median-cell .hour-range{grid-column:1 / -1;font-size:11px;line-height:1.35;color:inherit;opacity:.8;margin:2px 0 0}
.hour-feels{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-content:center;align-items:baseline;gap:2px 5px;min-height:34px;margin-top:4px;font-size:11px;line-height:1.3;font-weight:450}
.hour-feels>span:first-child{max-width:100%;overflow-wrap:anywhere}
.hour-feels strong{font-size:14px;font-weight:700;white-space:nowrap}
.hour-feels-count:not(.sr){flex-basis:100%;font-size:11px;opacity:.85}
#forecast #hourlyTable .hour-value-note{grid-column:1 / -1;white-space:normal;font-size:10px;font-weight:450;line-height:1.4;overflow-wrap:anywhere;margin-top:3px;color:inherit}
.hour-count{grid-column:1 / -1;font-size:11px;line-height:1.4;font-weight:400;opacity:.85}
.hour-overview{max-width:100%;padding:14px 18px;border:1px solid var(--line);border-radius:18px;background:var(--blue-soft);margin:18px 0}
.hour-overview .hour-measures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 22px}
.hour-overview .hour-measure{grid-template-columns:minmax(0,1fr) 24px}
.hour-overview .hour-measure-label,.hour-source-detail .hour-measure-label{font-size:12px}
.hour-source-detail{border-top:1px solid var(--line);padding:14px 0}
.hour-source-detail summary{cursor:pointer;font-weight:700}
.hour-source-detail summary small{display:block;font-size:12px;color:var(--muted);font-weight:400;margin-top:3px}
.hour-source-detail .hour-measures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 20px}
html[data-theme=dark] #forecast [data-tone=cloud]{--tile-bg:#30495b;--tile-end:#243c50}
html[data-theme=dark] #forecast [data-tone=sun]{--tile-bg:#514b38;--tile-end:#3e4035}
html[data-theme=dark] #forecast [data-tone=night]{--tile-bg:#363d5b;--tile-end:#29334d}
html[data-theme=dark] #forecast [data-tone=rain]{--tile-bg:#214e62;--tile-end:#1d3f56}
html[data-theme=dark] #forecast [data-tone=snow]{--tile-bg:#355266;--tile-end:#2a4054}
html[data-theme=dark] #forecast [data-tone=storm]{--tile-bg:#47445c;--tile-end:#33374d}
html[data-theme=dark] #forecast [data-tone=mixed]{--tile-bg:#345051;--tile-end:#283f47}
html[data-theme=dark] .hour-measure{border-top-color:#d9edf32c}
html[data-theme=dark] #forecast #hourlyTable .hour-button,html[data-theme=dark] #forecast #hourlyTable .cell.median-cell{border-color:#ddf3ff20}
@media(max-width:760px){
 #forecast #hourlyTable{--hour-width:128px}
 #forecast #hourlyTable .cell.median-cell,#forecast #hourlyTable .cell.source-hour-card{padding-inline:9px}
 #forecast .timeline-context{max-width:100%}
 #forecast #mobileMeasure{font-size:11px}
 .hour-overview .hour-measures,.hour-source-detail .hour-measures{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 15px}
}
@media(max-width:400px){.orb-feels{font-size:11px;margin-bottom:2px}.hour-overview{padding-inline:12px}}

/* V8.73: compact hourly values with one stationary row key. */
#forecast .hour-matrix{--measure-height:40px;--temp-height:40px;--weather-height:32px;--time-height:38px;--day-height:24px;display:grid;grid-template-columns:56px minmax(0,1fr);gap:7px;align-items:start}
#forecast .hour-matrix>.tablewrap{min-width:0}
#forecast .forecast-heading{margin-bottom:10px}
#forecast .timeline-toolbar{margin-bottom:5px}
#forecast .forecast-title-row h2{font-size:clamp(25px,3vw,35px)}
#forecast #forecastPreview{font-size:13px;margin-block:5px 9px}
#forecast #toggleSources{min-height:36px;padding:7px 14px;font-size:12px}
#forecast .timeline-context{font-size:13px}
#forecast #mobileMeasure{display:none}
#forecast #hourlyTable{--hour-width:90px}
#forecast #hourlyTable th,#forecast #hourlyTable td{padding-inline:3px;vertical-align:top}
#forecast #hourlyTable .hour-day-groups th{height:var(--day-height);padding-block:0;line-height:var(--day-height)}
#forecast #hourlyTable .hour-day-label>span{height:var(--day-height);padding:0;border:0;font-size:11px;line-height:var(--day-height)}
#forecast #hourlyTable .hour-button{position:relative;height:var(--time-height);min-height:var(--time-height);padding:2px 0 0;font-size:18px;background:var(--hour-row);border-color:var(--hour-edge);border-radius:12px 12px 0 0}
#forecast #hourlyTable .current-time small{position:absolute;top:0;right:3px;padding:0;font-size:8px;background:none;color:inherit}
#forecast #hourlyTable .cell.compact-hour{display:block;min-height:0;height:auto;padding:0;gap:0;border:1px solid var(--hour-edge);border-top:0;border-radius:0 0 12px 12px;background:var(--hour-row);color:var(--hour-text);box-shadow:none}
#forecast #hourlyTable .source-hour-card.compact-hour{border-top:1px solid var(--hour-edge);border-radius:12px}
#forecast #hourlyTable .compact-hour .hour-condition{height:var(--weather-height);min-height:0;flex-basis:auto;align-items:center;gap:0}
#forecast #hourlyTable .compact-hour .hour-condition .wx{width:25px;height:25px;filter:none}
#forecast #hourlyTable .compact-hour .weather-empty{height:var(--weather-height);font-size:17px}
#forecast #hourlyTable .compact-hour>.hour-measures{display:block}
#forecast #hourlyTable .compact-hour .hour-measure{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;height:var(--measure-height);min-height:0;padding:0 2px;border-top:1px solid var(--hour-edge);background:var(--measure-tint,transparent);transition:background .15s}
#forecast #hourlyTable .compact-hour [data-measure=temp]{height:var(--temp-height)}
#forecast #hourlyTable .compact-hour .hour-value{display:block;line-height:1.2;white-space:nowrap;text-align:center}
#forecast[data-hour-metric] #hourlyTable .compact-hour .hour-value>b{font-size:20px;font-weight:600;line-height:1.2;letter-spacing:-.4px}
#forecast[data-hour-metric] #hourlyTable .compact-hour [data-measure=temp] .hour-value>b{font-size:25px}
#forecast #hourlyTable .compact-hour .hour-feels{display:block;height:auto;min-height:0;margin:3px 0 0;padding:0;line-height:1.3}
#forecast #hourlyTable .compact-hour .hour-feels strong{font-size:12px;font-weight:500;color:var(--hour-muted)}
#forecast #hourlyTable .compact-hour .hour-origin{font-size:9px;line-height:1.1;color:var(--hour-muted)}
#forecast .hour-metric-rail{min-width:0;color:var(--hour-text)}
.hour-rail-spacer{height:var(--rail-offset,calc(var(--day-height) + var(--time-height) + var(--weather-height)))}
.hour-active-toggles{border:1px solid var(--hour-edge);border-top:0;border-radius:10px;overflow:hidden;background:var(--hour-row)}
.hour-active-toggles:empty{display:none}
#forecast .hour-row-toggle{position:relative;width:100%;height:var(--measure-height);min-height:0;padding:3px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:transparent;border:0;border-top:1px solid var(--hour-edge);border-radius:0;color:var(--hour-text)}
#forecast .hour-row-toggle[data-hour-toggle=temp][aria-pressed=true]{height:var(--temp-height)}
.hour-row-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.hour-row-toggle small{font-size:9px;line-height:1.1}
.hour-row-toggle .rail-feels{font-size:8px;line-height:1.1;max-width:100%;overflow-wrap:anywhere;margin-top:4px}
#forecast .hour-row-toggle:hover{background:var(--blue-soft)}
#forecast .hour-row-toggle:focus-visible{outline:2px solid var(--hour-accent);outline-offset:-3px}
html[data-page-state=identity] #forecast .hour-row-toggle:disabled{opacity:1;cursor:default}
html[data-theme=dark] #forecast #hourlyTable .cell.compact-hour,html[data-theme=dark] #forecast #hourlyTable .hour-button{border-color:var(--hour-edge)}
#forecast .hour-navigation{margin-block:10px}
#forecast .timeline-bottom{margin-block:6px}
#forecastSummary.forecast-summary{padding:0;border-radius:18px;margin-block:16px}
#forecastSummary>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;list-style:none;cursor:pointer;padding:13px 18px;min-height:48px}
#forecastSummary>summary::-webkit-details-marker{display:none}
#forecastSummary>summary h2{line-height:1.4;margin:0;font-size:15px;font-weight:500}
#forecastSummary .summary-chevron{font-size:21px;line-height:1;transition:transform .15s}
#forecastSummary[open] .summary-chevron{transform:rotate(180deg)}
#forecastSummary .forecast-summary-body{padding:0 18px 18px}
#forecastSummary>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:18px}
@media(max-width:760px){
 #forecast .hour-matrix{--measure-height:44px;--temp-height:44px;grid-template-columns:50px minmax(0,1fr);gap:5px}
 #forecast #hourlyTable{--hour-width:76px}
 #forecast #hourlyTable .hour-button{font-size:16px}
 #forecast[data-hour-metric] #hourlyTable .compact-hour .hour-value>b{font-size:18px}
 #forecast[data-hour-metric] #hourlyTable .compact-hour [data-measure=temp] .hour-value>b{font-size:23px}
 #forecast #hourlyTable .compact-hour .hour-feels strong{font-size:11px}
 #forecastSummary>summary{padding:11px 15px}
}
@media(prefers-reduced-motion:reduce){#forecast .hour-measure,#forecastSummary .summary-chevron{transition:none}}

/* V8.74: the key stays on the left; muted controls remain in their row order. */
#forecast .hour-matrix{--closed-row-height:24px}
#forecast .hour-metric-rail{grid-column:1;grid-row:1;align-self:start}
#forecast .hour-matrix>.tablewrap{grid-column:2;grid-row:1}
#forecast #hourlyTable .compact-hour .hour-measure{overflow:hidden;transition:height .32s cubic-bezier(.22,.7,.25,1),background .24s ease,border-color .24s ease}
#forecast #hourlyTable .compact-hour .hour-measure>*{transition:opacity .18s ease,transform .32s cubic-bezier(.22,.7,.25,1),visibility .18s;transform-origin:center}
#forecast #hourlyTable .compact-hour .hour-measure[aria-hidden=true]{height:var(--closed-row-height);background:transparent;border-top-color:transparent}
#forecast #hourlyTable .compact-hour .hour-measure[aria-hidden=true]>*{opacity:0;visibility:hidden;transform:translateY(-4px) scale(.96)}
#forecast .hour-active-toggles{overflow:visible}
#forecast .hour-row-toggle{transition:height .32s cubic-bezier(.22,.7,.25,1),box-shadow .22s ease,background .22s ease,color .22s ease}
#forecast .hour-row-toggle svg{flex-shrink:0;transition:transform .22s ease,opacity .22s ease}
#forecast .hour-row-toggle[aria-pressed=false]{height:var(--closed-row-height);padding-block:1px;color:var(--hour-muted);background:color-mix(in srgb,var(--hour-row) 84%,#80909a);box-shadow:inset 0 2px 3px #15233236,inset 0 -1px 1px #ffffff29;border-top-color:transparent;border-radius:5px}
#forecast .hour-row-toggle[aria-pressed=false] svg{transform:scale(.78);opacity:.6}
#forecast .hour-row-toggle[aria-pressed=false] :is(small,.rail-feels){display:none}
#forecast .hour-row-toggle[aria-pressed=false]:hover{color:var(--hour-text);box-shadow:inset 0 2px 3px #15233236,0 0 0 1px var(--hour-edge)}
html[data-theme=dark] #forecast .hour-row-toggle[aria-pressed=false]{background:color-mix(in srgb,var(--hour-row) 86%,#6d7a85);box-shadow:inset 0 2px 4px #020a145c,inset 0 -1px 1px #ffffff0a}
html[data-motion=paused] #forecast #hourlyTable .compact-hour .hour-measure,html[data-motion=paused] #forecast #hourlyTable .compact-hour .hour-measure>*,html[data-motion=paused] #forecast .hour-row-toggle,html[data-motion=paused] #forecast .hour-row-toggle svg{transition:none}
@media(prefers-reduced-motion:reduce){
 #forecast #hourlyTable .compact-hour .hour-measure,#forecast #hourlyTable .compact-hour .hour-measure>*,#forecast .hour-row-toggle,#forecast .hour-row-toggle svg{transition:none}
}

/* V8.75: one level for every measure, with the source control beside the key. */
#forecast .forecast-heading{padding:22px 28px 6px;margin:0}
#forecast #forecastPreview{margin:5px 0 0}
#forecast .forecast-body{padding-top:0}
#forecast .timeline-toolbar{margin:4px 0 6px;min-height:36px;align-items:center;gap:10px}
#forecast .timeline-context{flex:1;min-width:0}
#forecast #toggleSources{flex-shrink:0;min-height:36px;padding:0;gap:7px}
#forecast #toggleSources .source-toggle-label{min-height:34px;padding:7px 12px;margin:0;font-size:12px}
#forecast #toggleSources .panel-chevron{width:16px;font-size:16px}
#forecast .median-key{font-size:13px}
#forecast .hour-row-toggle[data-hour-toggle=apparent]{padding-block:0;gap:0}
#forecast .hour-row-toggle[data-hour-toggle=apparent] svg{width:18px;height:18px}
#forecast .hour-row-toggle .rail-name{max-width:100%;max-height:20px;font-size:9px;line-height:10px;overflow:hidden;overflow-wrap:anywhere;white-space:normal}
#forecast #hourlyTable .compact-hour [data-measure=apparent] .hour-value>b{font-size:20px;font-weight:600}
/* V8.81: weather belongs to the whole hour; quiet rows preserve its silhouette. */
#forecast [data-tone=cloud]{--hour-weather-tint:#7895b527}
#forecast [data-tone=sun]{--hour-weather-tint:#e7b74534}
#forecast [data-tone=night]{--hour-weather-tint:#9b8dd536}
#forecast [data-tone=rain]{--hour-weather-tint:#328fce33}
#forecast [data-tone=snow]{--hour-weather-tint:#75cbd530}
#forecast [data-tone=storm]{--hour-weather-tint:#9273b536}
#forecast [data-tone=mixed]{--hour-weather-tint:#6bafa52b}
#forecast #hourlyTable th,#forecast #hourlyTable td{padding-inline:4px}
#forecast #hourlyTable .hour-button,#forecast #hourlyTable .cell.compact-hour{
 background:linear-gradient(var(--hour-weather-tint,transparent),var(--hour-weather-tint,transparent)),var(--hour-row);
 border-color:var(--hour-edge)
}
#forecast #hourlyTable .hour-button{border-bottom:0;font-weight:650;border-radius:14px 14px 0 0}
#forecast #hourlyTable .cell.compact-hour{border-radius:0 0 14px 14px;box-shadow:0 5px 9px -7px #071a3540}
#forecast #hourlyTable .source-hour-card.compact-hour{border-radius:14px}
#forecast #hourlyTable .compact-hour .hour-condition{background:transparent}
#forecast #hourlyTable .compact-hour .hour-measure{
 position:relative;background:transparent;border-top-color:transparent;font-variant-numeric:tabular-nums
}
#forecast #hourlyTable .compact-hour .hour-measure:before{
 content:"";position:absolute;top:0;left:14%;right:14%;height:1px;background:var(--hour-edge);transition:opacity .2s
}
#forecast #hourlyTable .compact-hour [data-measure=temp]:before{opacity:0}
#forecast #hourlyTable .compact-hour .hour-measure[aria-hidden=true]:before{opacity:0}
#forecast[data-hour-metric] #hourlyTable .compact-hour .hour-value>b{font-size:18px;font-weight:500;letter-spacing:-.3px}
#forecast[data-hour-metric] #hourlyTable .compact-hour [data-measure=temp] .hour-value>b{font-size:26px;font-weight:650}
#forecast[data-hour-metric] #hourlyTable .compact-hour [data-measure=apparent] .hour-value>b{font-size:18px;font-weight:500}
#forecast .hour-row-toggle[aria-pressed=true]{background:transparent}
#forecast .hour-active-toggles{background:color-mix(in srgb,var(--hour-row) 65%,transparent);border-color:transparent}
#forecast .hour-row-toggle[aria-pressed=true]{border-top-color:transparent;color:var(--hour-muted)}
#forecast .hour-row-toggle[aria-pressed=true]:hover{background:var(--blue-soft);color:var(--hour-text)}
html[data-motion=paused] #forecast #hourlyTable .hour-measure:before{transition:none}
@media(prefers-reduced-motion:reduce){#forecast #hourlyTable .hour-measure:before{transition:none}}
@media(max-width:760px){
 #forecast #hourlyTable th,#forecast #hourlyTable td{padding-inline:3px}
 #forecast[data-hour-metric] #hourlyTable .compact-hour .hour-value>b{font-size:17px}
 #forecast[data-hour-metric] #hourlyTable .compact-hour [data-measure=temp] .hour-value>b{font-size:23px}
 #forecast[data-hour-metric] #hourlyTable .compact-hour [data-measure=apparent] .hour-value>b{font-size:17px}
}
@media(max-width:760px){
 #forecast .forecast-heading{padding:18px 16px 6px}
 #forecast .timeline-toolbar{margin:4px 0 6px;gap:6px}
 #forecast .median-key{font-size:12px}
 #forecast #toggleSources{gap:4px}
 #forecast #toggleSources .source-toggle-label{font-size:11px;padding-inline:9px}
 #forecast #hourlyTable .compact-hour [data-measure=apparent] .hour-value>b{font-size:18px}
}

#forecast #hourlyTable .source-hour-card.compact-hour{background:var(--hour-row)}
#forecast #hourlyTable .source-hour-tone{background:var(--hour-weather-tint,transparent);border-radius:inherit;overflow:hidden}
#forecast #hourlyTable .source-hour-tone>.hour-measures{display:block}
#forecast #hourlyTable thead tr:not(.hour-day-groups)>.hourly-label{height:var(--time-height);padding-block:0}

/* V8.83: one quiet invitation belongs to the search field on the landing page. */
.landing-search-invite{display:none}
html[data-has-place=false] .landing-search-invite{
 display:flex;align-items:center;justify-content:center;gap:9px;
 width:fit-content;max-width:calc(100% - 24px);margin:12px auto 0;
 color:#f4f9ff;font:500 14px/1.5 "Segoe UI",system-ui,sans-serif;text-align:center;
 text-shadow:0 1px 3px #000,0 0 7px #000b;pointer-events:none;
}
.landing-search-invite svg{width:22px;height:22px;flex:0 0 22px;fill:none;stroke:#bde6f5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 2px #000b)}
.landing-search-invite .invite-compact{display:none}
@media(max-width:600px){
 html[data-has-place=false] .landing-search-invite{font-size:13px;max-width:285px;gap:8px;margin-top:10px;line-height:1.4}
 .landing-search-invite .invite-wide{display:none}
 .landing-search-invite .invite-compact{display:inline}
 .landing-search-invite svg{width:20px;height:20px;flex-basis:20px}
}


/* The same localized introduction is visible to visitors and present in the HTML response. */
.home-intro{max-width:620px;margin:16px auto 0;padding-inline:16px;color:#f4f9ff;font:400 16px/1.6 "Segoe UI",system-ui,sans-serif;text-align:center;text-wrap:pretty;text-shadow:0 1px 3px #020b18,0 0 9px #020b18,0 0 22px #020b18}
.home-intro[hidden],html[data-has-place=true] .home-intro{display:none}
@media(max-width:600px){.home-intro{max-width:360px;margin-top:12px;font-size:14px;line-height:1.55}}
