@import url('./tokens.css');
*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:var(--sans);scroll-behavior:smooth}body{margin:0}body,html{transition:background-color var(--theme-duration),color var(--theme-duration)}button,input,select{font:inherit}button{color:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{border:0;background:none}button:disabled{cursor:default;opacity:.5}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:8px;left:8px;transform:translateY(-200%);padding:12px;background:var(--paper);z-index:10}.skip:focus{transform:none}.masthead{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);margin:0 48px;padding:24px 0}.wordmark{font-family:var(--serif);font-size:35px;letter-spacing:-2px;text-decoration:none}.wordmark i{color:var(--accent);font-style:normal}.eyebrow{font:11px/1.5 var(--mono);letter-spacing:1.5px;text-transform:uppercase}.gate{max-width:700px;margin:auto;text-align:center}.lamp-scene{position:relative;height:640px;width:100%;overflow:hidden;isolation:isolate}.lamp-scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.static-lamp{position:absolute;inset:0;width:100%;height:100%;transition:opacity .25s}.lamp-scene[data-ready='true'] .static-lamp{opacity:0}.gate small{font:11px var(--mono)}
@media(max-width:680px){.masthead{margin:0 20px;padding:16px 0}.lamp-scene{height:500px}.wordmark{font-size:30px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:0s!important}}

.boot,.boot body{transition:none!important}
/* An editorial field, not a dashboard. */
.js-only{display:none}.js .js-only{display:initial}.brand{display:flex;align-items:center;gap:26px}.brand-note{font:9px/1.5 var(--mono);letter-spacing:1px;padding-left:24px;border-left:1px solid var(--line)}.nav-location{display:flex;align-items:center;gap:32px;margin-left:auto;margin-right:48px}.nav-location time{font:11px var(--mono);color:var(--muted)}.text-button{font:12px/1.5 var(--sans);padding:10px 0;border-bottom:1px solid var(--ink);display:inline-flex!important;gap:22px;align-items:center}.text-button span{font-size:21px}.text-button:hover{color:var(--accent);border-color:var(--accent)}.text-button.js-only{display:none!important}.js .text-button{display:inline-flex!important}
main{max-width:1680px;margin:auto}.hero{padding:22px 48px 30px;display:grid;grid-template-columns:1.1fr 1.65fr .74fr;column-gap:22px;position:relative}.hero-copy{grid-column:1;grid-row:1;align-self:start;padding-top:18px}.hero h1{font:normal clamp(70px,6.7vw,100px)/.89 var(--serif);letter-spacing:-5.5px;margin:30px 0 32px}.hero h1 em{font-weight:400;letter-spacing:-6px}.location-kicker{color:var(--muted);font-size:10px}.big-temp{font:normal 108px/.92 var(--serif);letter-spacing:-7px;margin:0 0 14px;display:flex;align-items:flex-start}.big-temp .degree{font-size:70px;line-height:1;letter-spacing:-4px}.big-temp .unit{font:11px var(--mono);letter-spacing:0;padding:10px 0 0 7px;color:var(--muted)}.condition{margin:0;font-size:19px;letter-spacing:-.4px}.feels{font-size:12px;margin:7px 0 0;color:var(--muted)}.instrument{grid-column:2;grid-row:1;margin:0;position:relative;min-width:0;align-self:start}.instrument .lamp-scene{height:610px}.instrument figcaption{display:flex;align-items:center;flex-direction:column;gap:8px;text-align:center;margin:0 -25px}.instrument figcaption .eyebrow{font-size:9px;letter-spacing:1.3px}.touch-hint{font:italic 12px var(--serif);color:var(--muted)}.lamp-touch{position:absolute;inset:6% 25% 4%;background:transparent;border:none;touch-action:pan-y;width:50%;padding:0}.lamp-touch:focus-visible{outline-offset:3px;border-radius:45%}.current-details{grid-column:1;grid-row:1;align-self:end;padding-right:18px;padding-bottom:5px;max-width:340px}.readings{margin:0 0 10px}.readings>div{display:flex;justify-content:space-between;align-items:center;gap:14px;border-top:1px solid var(--line);padding:11px 0}.readings dt{font:10px var(--mono);letter-spacing:.9px}.readings dd{font-size:14px;margin:0}.reading-note{font-size:11px;color:var(--muted);margin-left:8px}.fine-print{font-size:11px;line-height:1.6;color:var(--muted)}.current-details .fine-print{margin:3px 0;font-size:10px}.field-note{grid-column:3;grid-row:1;align-self:center;padding:20px 0 0 15px}.status{font:9px var(--mono);letter-spacing:1.7px;display:flex;align-items:center;gap:8px}.status:before{content:'';width:5px;height:5px;border-radius:50%;background:var(--muted)}.status[data-live='true']:before{background:#477455}.field-note h2{font:italic 31px/1.12 var(--serif);letter-spacing:-.8px;margin:35px 0 16px}.field-note>p:not(.status):not(.fine-print){font-size:13px;line-height:1.8;color:var(--muted);margin:0}.daylight{margin:30px 0 22px}.daylight-line{position:relative;height:30px;border-top:1px solid var(--line);border-radius:50% 50% 0 0;transform:scaleY(.65);transform-origin:bottom}.daylight-line span{content:'';position:absolute;width:6px;height:6px;background:var(--accent);border-radius:50%;top:-3px;left:50%}.sun-times{display:flex;justify-content:space-between;font:8px var(--mono);color:var(--muted);letter-spacing:.6px}.sun-times b{font-weight:400;display:block;font-size:11px;color:var(--ink);margin-top:7px;letter-spacing:0}.small-link{font-size:11px;text-decoration:underline;text-underline-offset:4px;padding:8px 0;margin-right:12px;color:var(--muted)}.small-link:hover{color:var(--accent)}.reading-guide{border-top:1px solid var(--line);margin-top:15px;padding-top:12px;font-size:11px;line-height:1.6}.reading-guide summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px}.reading-guide summary span{font-size:18px}.reading-guide p{color:var(--muted)}.preview-banner{margin:14px 48px 0;padding:10px 13px;border:1px solid var(--line);font:11px/1.4 var(--mono);display:flex;justify-content:space-between;align-items:center;gap:18px}.preview-banner>span{display:flex;align-items:center;gap:9px}.preview-banner i{display:block;flex-shrink:0;background:var(--accent);width:5px;height:5px;border-radius:50%}.preview-banner button{font-size:11px;white-space:nowrap;padding:6px 0;text-decoration:underline;text-underline-offset:3px}.preview-banner button:hover{color:var(--accent)}
.hour-section{margin:25px 48px 0;padding:26px 0 36px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.section-heading .eyebrow{font-size:9px;color:var(--muted);margin:0 0 11px}.section-heading h2{font:normal 34px/1.1 var(--serif);letter-spacing:-1.2px;margin:0}.hour-navigation{display:flex;align-items:center;gap:14px}.hour-navigation>.fine-print{margin-right:25px}.arrow-button{font-size:19px;width:38px;height:38px;border:1px solid var(--line);transition:color .2s,background .2s}.arrow-button:hover{background:var(--ink);color:var(--paper)}.forecast-source{margin:22px 0 0;font-size:8px;color:var(--muted);letter-spacing:.8px}.hours-scroll{overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent;overscroll-behavior-x:contain}.hour-list{list-style:none;display:flex;margin:14px 0 5px;padding:0;width:max-content;min-width:100%;justify-content:space-between;gap:8px}.hour-list li{flex:0 0 82px}.hour{width:82px;display:flex;align-items:center;flex-direction:column;padding:15px 8px 11px;position:relative;min-height:166px;border:1px solid transparent;transition:border .2s,background .2s}.hour:hover,.hour[aria-pressed='true']{border-color:var(--line);background:color-mix(in srgb,var(--accent) 4%,transparent)}.hour[aria-pressed='true']:before{content:'';width:4px;height:4px;background:var(--accent);position:absolute;top:5px;border-radius:50%}.hour-time{font:10px var(--mono);color:var(--muted)}.specimen{display:block;width:36px;height:54px}.hour .specimen{margin:11px 0 7px}.hour-temp{font:24px var(--serif);letter-spacing:-.7px}.hour-temp sup{font-size:16px}.hour-prob{font:9px var(--mono);margin-top:9px;color:var(--muted)}.scrub-wrap{display:flex;align-items:center;gap:28px;padding-top:12px}.scrub-wrap .eyebrow{font-size:8px;color:var(--muted);white-space:nowrap}.scrub-wrap input{flex:1;min-width:0;height:30px;accent-color:var(--accent);cursor:ew-resize}.probability-note{margin:10px 0 0;font-size:10px}.empty-message{font:italic 16px/1.7 var(--serif);color:var(--muted);padding:35px 0}.days-section{border-top:1px solid var(--line);margin:0 48px;padding:42px 0 70px;display:grid;grid-template-columns:1fr 2fr;gap:85px}.days-intro>.eyebrow{font-size:9px;color:var(--muted);margin:0}.days-intro h2{font:normal 44px/1.06 var(--serif);letter-spacing:-1.4px;margin:25px 0 18px}.days-intro>p:not(.eyebrow){font-size:12px;line-height:1.9;color:var(--muted);margin-bottom:28px}.days-intro .text-button{font-size:11px;gap:18px}.days-table{min-width:0}.days-legend{display:flex;justify-content:space-between;font-size:8px;color:var(--muted);letter-spacing:.8px;padding:0 10px 15px}.days-legend span:nth-child(2){margin-left:auto;margin-right:65px}.day-list{list-style:none;padding:0;margin:0}.day-list li{border-top:1px solid var(--line)}.day{display:grid;grid-template-columns:55px 36px 120px 38px minmax(55px,1fr) 38px 55px;align-items:center;gap:14px;width:100%;min-height:57px;padding:5px 10px;text-align:left;transition:background .2s}.day:hover,.day:focus-visible{background:color-mix(in srgb,var(--accent) 5%,transparent)}.day-name{font-size:12px}.day .specimen{width:22px;height:35px}.day-condition{font-size:11px;color:var(--muted)}.day-low,.day-high{font:19px var(--serif);text-align:center}.day-low{color:var(--muted)}.day-prob{font:11px var(--mono);text-align:right;color:var(--muted)}.day-prob small{font-size:9px}.range-track{position:relative;display:block;height:5px;border-radius:6px;background:color-mix(in srgb,var(--muted) 12%,transparent)}.range-track>span{position:absolute;height:100%;border-radius:6px;background:linear-gradient(90deg,color-mix(in srgb,var(--wax) 50%,var(--paper)),var(--wax))}.daily-disclaimer{font-size:10px;margin:18px 10px 0}footer{border-top:1px solid var(--line);margin:0 48px;padding:30px 0 40px;display:flex;align-items:center;justify-content:space-between;gap:40px}footer p{font-size:10px;line-height:1.7;margin:7px 0 0;color:var(--muted)}footer .wordmark{font-size:28px}.footer-sources{text-align:right}.footer-sources p{font-size:9px}.footer-sources a{text-underline-offset:3px}.nojs-message{padding:24px 48px;border-block:1px solid var(--line)}.nojs-message h2{font:24px var(--serif)}.nojs-message p{font-size:14px}
/* The weather lab is a single native, keyboard-operable dialog. */
dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:28px 32px;max-width:640px;width:calc(100% - 32px);max-height:90dvh;overflow:auto}dialog::backdrop{background:rgb(15 23 17 / .68)}.dialog-heading{display:flex;justify-content:space-between;gap:15px;align-items:center}.dialog-heading .eyebrow{font-size:9px;color:var(--muted)}.dialog-heading h2{font:34px/1.05 var(--serif);letter-spacing:-1px;margin:12px 0}.close-button{font:28px var(--sans);width:44px;height:44px;flex-shrink:0;border:1px solid var(--line)}.dialog-intro{font-size:12px;line-height:1.7;color:var(--muted)}.preset-list{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:22px 0}.preset-button{background:var(--paper);font-size:11px;padding:14px 8px;display:flex;align-items:center;gap:8px;text-align:left;min-height:48px}.preset-button:hover,.preset-button[aria-pressed='true']{background:var(--ink);color:var(--paper)}.preset-mark{display:block;flex-shrink:0;width:8px;height:15px;border-radius:50% 65% 40% 50%;transform:rotate(15deg);background:hsl(var(--preset-hue) 44% 57%)}.parameter-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 25px}.parameter-grid label{font-size:11px}.parameter-grid label>span{float:right;color:var(--muted);font-size:10px}.parameter-grid input{width:100%;display:block;margin-top:6px;padding:10px;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:0;font:16px var(--mono)}.dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:24px 0 10px}.night-switch{font-size:12px;display:flex;align-items:center;gap:8px}.night-switch input{width:18px;height:18px;accent-color:var(--accent)}.apply-button{font-size:12px;padding:14px 20px;background:var(--ink);color:var(--paper)}
@media(min-width:1500px){.hero h1{font-size:108px}.instrument .lamp-scene{height:680px}.current-details{padding-bottom:28px}}
@media(max-width:1150px){.brand-note{display:none}.nav-location{margin-right:30px;gap:16px}.hero{grid-template-columns:1fr 1.4fr .72fr;column-gap:6px;padding-inline:32px}.masthead{margin-inline:32px}.hero h1{font-size:80px}.instrument .lamp-scene{height:590px}.field-note{padding-left:5px}.field-note h2{font-size:27px}.current-details{padding-bottom:8px;max-width:280px}.big-temp{font-size:94px}.days-section{gap:40px}.day{grid-template-columns:48px 25px 90px 32px minmax(40px,1fr) 32px 38px;gap:9px}.day-condition{font-size:10px}.hour-section,.days-section{margin-inline:32px}.preview-banner,footer{margin-inline:32px}}
@media(max-width:850px){.nav-location .eyebrow{display:none}.hero{grid-template-columns:1fr 1.45fr;gap:10px}.hero h1{font-size:78px}.field-note{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:1fr 1fr;column-gap:35px;padding:20px 0;border-top:1px solid var(--line);margin-top:22px}.field-note .status{grid-column:1}.field-note h2{grid-column:1;margin:8px 0 15px}.field-note>p:not(.status):not(.fine-print){grid-column:1}.field-note .daylight{grid-column:2;grid-row:1/3;margin:10px 0}.field-note #last-updated{grid-column:2;grid-row:3}.field-note .reading-guide{grid-column:2;grid-row:4/7;margin:0}.current-details{padding-bottom:15px}.instrument .lamp-scene{height:600px}.hour-navigation>.fine-print{display:none}.days-section{grid-template-columns:1fr;gap:30px}.days-intro{display:grid;grid-template-columns:1fr 1fr;gap:0 30px}.days-intro>.eyebrow{grid-column:1/-1}.days-intro h2{font-size:36px}.days-intro h2 br:last-child{display:none}.days-intro>p:not(.eyebrow){padding-top:8px;margin:25px 0 15px}.days-intro .text-button{grid-column:2;margin-top:-60px;align-self:end;justify-self:start}.day{grid-template-columns:55px 36px 110px 38px minmax(60px,1fr) 38px 50px;gap:12px}}
@media(max-width:600px){.masthead{margin:0 20px;padding:17px 0}.wordmark{font-size:31px}.nav-location{display:none}.masthead .text-button{font-size:11px;gap:15px;border-bottom:0;padding:8px 0}.preview-banner{margin:12px 20px 0;font-size:9px;padding:7px 9px;gap:9px;line-height:1.5}.preview-banner button{font-size:9px}.hero{display:grid;grid-template-columns:1fr;padding:22px 20px 0;gap:0}.hero-copy{grid-column:1;grid-row:1;padding-top:0;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:16px 15px}.location-kicker{grid-column:1/-1;font-size:8px;margin:0}.hero h1{font-size:clamp(48px,13.7vw,70px);letter-spacing:-2.8px;margin:2px 0 0;line-height:.95}.hero h1 em{letter-spacing:-3px}.observation{padding-left:7px}.big-temp{font-size:85px;letter-spacing:-6px;margin:0 0 5px}.big-temp .degree{font-size:49px;letter-spacing:-3px}.big-temp .unit{font-size:9px;padding:7px 0 0 5px}.condition{font-size:13px;letter-spacing:0}.feels{font-size:10px;line-height:1.5;margin-top:3px}.instrument{grid-row:2;grid-column:1;margin:15px -20px 0}.instrument .lamp-scene{height:425px}.instrument figcaption{margin:0;padding:0 10px;gap:6px}.instrument figcaption .eyebrow{font-size:8px;letter-spacing:.8px}.touch-hint{font-size:11px}.current-details{grid-column:1;grid-row:3;max-width:none;padding:0;margin:26px 0 0}.readings{display:grid;grid-template-columns:1.1fr 1fr 1fr;border-top:1px solid var(--line);padding:17px 0 2px;gap:9px}.readings>div{border:0;display:block;padding:0}.readings dt{font-size:8px;letter-spacing:.6px;margin-bottom:9px}.readings dd{font-size:16px}.reading-note{margin:4px 0 0;font-size:9px;display:block}.current-details .fine-print{font-size:9px}.field-note{grid-row:4;grid-column:1;gap:0 20px;margin-top:21px;padding:18px 0 0}.field-note h2{font-size:25px;margin-top:13px}.field-note>p:not(.status):not(.fine-print){font-size:11px;line-height:1.7}.field-note .daylight{margin-top:12px}.field-note #last-updated{font-size:9px}.field-note .reading-guide{font-size:10px}.field-note .status{font-size:8px;letter-spacing:1.2px}.field-note .small-link{font-size:10px;justify-self:start}.sun-times{font-size:7px}.sun-times b{font-size:10px}.hour-section{margin:27px 20px 0;padding:24px 0}.section-heading h2{font-size:29px}.section-heading .eyebrow{font-size:8px;letter-spacing:1px}.hour-navigation{gap:7px}.arrow-button{width:32px;height:34px}.forecast-source{font-size:7px;line-height:1.8;letter-spacing:.5px;margin-top:17px}.hour-list{gap:0;margin-top:10px}.hour-list li,.hour{width:72px;flex-basis:72px}.hour{padding:13px 6px}.scrub-wrap{gap:12px}.scrub-wrap .eyebrow{font-size:7px;letter-spacing:.5px}.probability-note{font-size:9px}.days-section{margin:0 20px;padding:28px 0 32px;gap:22px}.days-intro{display:block}.days-intro h2{font-size:38px;margin:18px 0}.days-intro h2 br{display:none}.days-intro h2 em{display:block}.days-intro>p:not(.eyebrow){display:none}.days-intro .text-button{margin:0;font-size:10px}.days-intro>.eyebrow{font-size:8px}.days-legend{font-size:7px;padding-inline:0}.days-legend span:nth-child(2){margin-right:30px}.day{grid-template-columns:36px 23px 30px minmax(40px,1fr) 30px 32px;gap:8px;padding:7px 0;min-height:56px}.day-condition{display:none}.day-name{font-size:10px}.day-low,.day-high{font-size:17px}.day-prob{font-size:9px}.day-prob small{font-size:7px}.daily-disclaimer{font-size:9px;margin-inline:0}footer{margin:0 20px;padding:25px 0;display:block}.footer-sources{text-align:left;margin-top:20px}.footer-sources p{font-size:9px}.footer-sources p:first-child{font-size:9px}dialog{padding:20px}.dialog-heading h2{font-size:29px}.preset-list{grid-template-columns:repeat(2,1fr)}.parameter-grid{gap:15px}.dialog-actions{align-items:flex-start;flex-direction:column}.apply-button{align-self:stretch}.nojs-message{padding:20px}}

/* Keep explanatory metadata legible at a true 360 CSS-pixel viewport. */
@media(max-width:600px){.location-kicker,.instrument figcaption .eyebrow,.readings dt,.forecast-source,.section-heading .eyebrow,.days-intro>.eyebrow,.days-legend,.scrub-wrap .eyebrow{font-size:9px}.preview-banner,.preview-banner button,.current-details .fine-print,.field-note #last-updated,.probability-note,.daily-disclaimer,.footer-sources p,.hour-prob{font-size:10px}.day-name{font-size:12px}.hour-time{font-size:11px}.day-prob{font-size:10px}.day-prob small{font-size:9px}.sun-times{font-size:9px}.footer-sources p:first-child{font-size:10px}.field-note{min-width:0}.reading-guide p{overflow-wrap:anywhere}}

/* Scene lighting eases in JS. UI foreground stays readable at every room shade. */
html,body{transition:none}
.boot,.boot *,.boot *::before,.boot *::after,.theme-changing,.theme-changing *,.theme-changing *::before,.theme-changing *::after{transition:none!important}

/* Deployment identity and touch ergonomics. The material renderer is unchanged. */
.wordmark{font-size:28px;letter-spacing:-1.2px;white-space:nowrap}
@media(max-width:600px){.masthead{flex-wrap:wrap;gap:8px 18px}.masthead .wordmark{font-size:25px}.masthead .text-button{font-size:11px;gap:10px}.masthead .brand{min-width:0}}
@media(pointer:coarse){.small-link,.text-button,.preview-banner button,.reading-guide summary{min-height:44px}.arrow-button{width:44px;height:44px}.close-button{min-width:44px;min-height:44px}.parameter-grid input{min-height:44px}}
