@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-wdth-normal-rJmnGBSt.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-wdth-normal-7khWdh9v.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-wdth-normal-DY7AcnAa.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-ui:"Archivo Variable", "Archivo", system-ui, sans-serif;--font-cond:var(--font-ui);--fs-12:.875rem;--fs-13:.9375rem;--fs-15:1rem;--fs-18:1.125rem;--fs-22:1.375rem;--fs-28:1.75rem;--fs-40:2.5rem;--fs-display:clamp(8.5rem, 3rem + 22vw, 26rem);--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--sp-12:3rem;--sp-16:4rem;--r-control:2px;--r-panel:0;--rule-heavy:2px;--t-m10:#3d55a8;--t-0:#4f8fc9;--t-10:#3e9e8c;--t-18:#d9a521;--t-25:#e07a2e;--t-32:#c2402a;--t-38:#8b1e2c;--ease:cubic-bezier(.16, 1, .3, 1);--dur:.18s;--field-dur:.9s;--shell-max:1320px;--gutter:1.25rem;--tap:44px;--paper:#f2b83b;--ink:#1a1712;--ink-2:#3d3119;--precip:#1b4c9a;--warn:#8e1b10;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink-3:var(--ink-2);--paper-2:color-mix(in srgb, var(--ink) 8%, var(--paper));--rule:color-mix(in srgb, var(--ink) 28%, var(--paper));--rule-strong:color-mix(in srgb, var(--ink) 55%, var(--paper));--on-ink:var(--paper);--precip-soft:color-mix(in srgb, var(--precip) 20%, transparent);--focus:var(--ink);--shadow-pop:0 10px 30px -10px #00000059;--popover:color-mix(in srgb, var(--paper) 94%, var(--ink))}@media (width>=720px){:root{--gutter:2.5rem}}:root[data-sky=clear-day]{--paper:#f2b83b;--ink:#1a1712;--ink-2:#3d3119;--precip:#1b4c9a;--warn:#8e1b10;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-sky=cloudy-day]{--paper:#c5ced5;--ink:#182027;--ink-2:#343c43;--precip:#1a519b;--warn:#9a2416;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-sky=snow-day]{--paper:#e2eaf0;--ink:#13253a;--ink-2:#3e4e60;--precip:#1a519b;--warn:#9a2416;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-sky=mist-day]{--paper:#d3cfc5;--ink:#211f1b;--ink-2:#3d3b36;--precip:#1f5299;--warn:#982818;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-sky=clear-night]{--paper:#15223f;--ink:#f3eee4;--ink-2:#b9b9b9;--precip:#93bbff;--warn:#ffb08a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-sky=cloudy-night]{--paper:#222a33;--ink:#e9edf0;--ink-2:#b5babf;--precip:#93bbff;--warn:#ff9f80;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-sky=rain-day]{--paper:#224b66;--ink:#fff;--ink-2:#dce2e7;--precip:#c4e2ff;--warn:#ffc6ae;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-sky=rain-night]{--paper:#122130;--ink:#e6eef4;--ink-2:#afb9c1;--precip:#8ec5ff;--warn:#ffa98a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-sky=storm]{--paper:#2c2340;--ink:#f6f2fb;--ink-2:#c1bcca;--precip:#bcc9ff;--warn:#ffd45e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-sky=snow-night]{--paper:#1b293c;--ink:#eaf1f7;--ink-2:#b4bdc6;--precip:#93bbff;--warn:#ffaa8c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-sky=mist-night]{--paper:#25282b;--ink:#eae8e3;--ink-2:#b7b6b3;--precip:#9dbff5;--warn:#ffa588;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--dur:.01ms;--field-dur:.01ms}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--paper);transition:background-color var(--field-dur) var(--ease)}body{background:var(--paper);min-height:100dvh;color:var(--ink);font-family:var(--font-ui);font-optical-sizing:auto;transition:background-color var(--field-dur) var(--ease), color var(--field-dur) var(--ease);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;caret-color:var(--precip);scrollbar-color:var(--rule-strong) transparent;margin:0;font-size:1rem;line-height:1.45;overflow-x:hidden}::selection{background:var(--ink);color:var(--paper)}h1,h2,h3,p,dl,dd{margin:0}h1,h2,h3{text-wrap:balance}button,input{font:inherit;color:inherit}button{cursor:pointer}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.tabular{font-variant-numeric:tabular-nums}.section{min-width:0;padding-top:var(--sp-3);border-top:var(--rule-heavy) solid var(--ink)}.section__title{align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-5);font-size:var(--fs-22);letter-spacing:-.01em;font-weight:700;font-stretch:112%;line-height:1.15;display:flex}.section__note{font-size:var(--fs-13);color:var(--ink-2);margin-left:auto;font-weight:400}.footnote{margin-top:var(--sp-3);font-size:var(--fs-12);color:var(--ink-2)}.btn{justify-content:center;align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-4);border-radius:var(--r-control);white-space:nowrap;transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease);border:1px solid #0000;font-weight:500;display:inline-flex}.btn svg{flex-shrink:0;width:18px;height:18px}.btn:disabled{opacity:.6;cursor:progress}.btn--primary{background:var(--ink);color:var(--on-ink)}.btn--primary:hover:not(:disabled){background:color-mix(in srgb, var(--ink) 85%, var(--paper))}.btn--quiet{border-color:var(--rule-strong);background:0 0}.btn--quiet:hover:not(:disabled){background:var(--paper-2)}.link-btn{align-items:center;gap:var(--sp-1);min-height:32px;color:inherit;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--rule-strong);text-decoration-color:var(--rule-strong);transition:text-decoration-color var(--dur) var(--ease);background:0 0;border:0;padding:0;display:inline-flex}.link-btn:hover{text-decoration-color:currentColor}.link-btn:disabled{opacity:.6;cursor:progress}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spin{animation-duration:3s}}.backdrop{z-index:0;pointer-events:none;--tint:color-mix(in srgb, var(--ink) 7%, transparent);position:fixed;inset:0;overflow:hidden}.backdrop>*{opacity:0;transition:opacity var(--field-dur) var(--ease);position:absolute;inset:0}.backdrop__disc{background:color-mix(in srgb, #f0731c 42%, var(--paper));border-radius:50%;width:52vmax;height:52vmax;inset:-14vmax -12vmax auto auto}.backdrop:is([data-sky=clear-day],[data-sky=mist-day]) .backdrop__disc{opacity:1}.backdrop[data-sky=mist-day] .backdrop__disc{background:color-mix(in srgb, var(--ink) 6%, var(--paper))}.backdrop[data-sky=cloudy-day] .backdrop__disc{opacity:1;background:color-mix(in srgb, #fff 30%, var(--paper))}.backdrop:is([data-sky=clear-night],[data-sky=cloudy-night]) .backdrop__disc{opacity:1;background:color-mix(in srgb, var(--ink) 12%, var(--paper));width:30vmax;height:30vmax;top:-6vmax;right:-4vmax}.backdrop[data-sky=cloudy-night] .backdrop__disc{background:color-mix(in srgb, var(--ink) 6%, var(--paper))}.backdrop__stars{background-image:radial-gradient(1.5px 1.5px at 8% 14%, var(--ink) 50%, transparent 51%), radial-gradient(1px 1px at 22% 40%, var(--ink) 50%, transparent 51%), radial-gradient(1.5px 1.5px at 41% 9%, var(--ink) 50%, transparent 51%), radial-gradient(1px 1px at 57% 27%, var(--ink) 50%, transparent 51%), radial-gradient(1px 1px at 73% 52%, var(--ink) 50%, transparent 51%), radial-gradient(1.5px 1.5px at 88% 71%, var(--ink) 50%, transparent 51%), radial-gradient(1px 1px at 33% 66%, var(--ink) 50%, transparent 51%), radial-gradient(1px 1px at 12% 86%, var(--ink) 50%, transparent 51%), radial-gradient(1px 1px at 64% 84%, var(--ink) 50%, transparent 51%);background-size:640px 640px}.backdrop[data-sky=clear-night] .backdrop__stars{opacity:.45;animation:7s ease-in-out infinite alternate bd-twinkle}.backdrop[data-sky=cloudy-night] .backdrop__stars{opacity:.15}.backdrop__clouds span{background:var(--tint);border-radius:999px;position:absolute}.backdrop__clouds span:first-child{width:70vmax;height:16vmax;top:14vh;right:-18vmax}.backdrop__clouds span:nth-child(2){width:54vmax;height:12vmax;top:30vh;right:8vmax}.backdrop:is([data-sky^=cloudy],[data-sky^=rain],[data-sky=storm],[data-sky^=snow]) .backdrop__clouds{opacity:1}.backdrop:is([data-sky^=cloudy],[data-sky^=rain],[data-sky=storm],[data-sky^=snow]) .backdrop__clouds span{animation:80s ease-in-out infinite alternate bd-drift}.backdrop__clouds span:nth-child(2){animation-duration:95s!important;animation-direction:alternate-reverse!important}.backdrop__rain{background-image:repeating-linear-gradient(104deg, transparent 0 26px, color-mix(in srgb, var(--ink) 14%, transparent) 26px 27px, transparent 27px 53px);background-size:100% 120px;inset:-30% -10% 0;-webkit-mask-image:repeating-linear-gradient(#000 0 22px,#0000 22px 46px);mask-image:repeating-linear-gradient(#000 0 22px,#0000 22px 46px)}.backdrop:is([data-sky^=rain],[data-sky=storm]) .backdrop__rain{opacity:1;animation:.7s linear infinite bd-rain}.backdrop[data-intensity=light] .backdrop__rain{animation-duration:1.1s}.backdrop[data-intensity=light][data-sky^=rain] .backdrop__rain{opacity:.55}.backdrop__snow{background-image:radial-gradient(2.5px 2.5px at 20px 30px, var(--ink) 50%, transparent 51%), radial-gradient(2px 2px at 110px 140px, var(--ink) 50%, transparent 51%), radial-gradient(3px 3px at 190px 70px, var(--ink) 50%, transparent 51%), radial-gradient(2px 2px at 250px 200px, var(--ink) 50%, transparent 51%);background-size:280px 260px;inset:-260px -40px 0}.backdrop[data-sky^=snow] .backdrop__snow{opacity:.22;animation:14s linear infinite bd-snow}.backdrop__fog span{background:var(--tint);height:9vh;position:absolute;left:-10%;right:-10%}.backdrop__fog span:first-child{top:38vh}.backdrop__fog span:nth-child(2){top:56vh;left:10%}.backdrop__fog span:nth-child(3){top:74vh;right:25%}.backdrop[data-sky^=mist] .backdrop__fog{opacity:1}.backdrop[data-sky^=mist] .backdrop__fog span{animation:30s ease-in-out infinite alternate bd-slide}.backdrop__fog span:nth-child(2){animation-direction:alternate-reverse!important}.backdrop__flash{background:color-mix(in srgb, var(--warn) 10%, transparent)}.backdrop[data-sky=storm] .backdrop__flash{animation:11s ease-out infinite bd-flash}@keyframes bd-twinkle{to{opacity:.25}}@keyframes bd-drift{0%{transform:translate(-4vw)}to{transform:translate(5vw)}}@keyframes bd-rain{to{transform:translate(-28px,120px)}}@keyframes bd-snow{to{transform:translate(30px,260px)}}@keyframes bd-slide{0%{transform:translate(-3%)}to{transform:translate(3%)}}@keyframes bd-flash{0%,88%,to{opacity:0}89%{opacity:1}90%{opacity:.2}92%{opacity:.8}95%{opacity:0}}@media (prefers-reduced-motion:reduce){.backdrop *{animation:none!important}}.wi{flex-shrink:0;display:block;overflow:visible}.wi--animated .wi-rays{transform-box:view-box;animation:60s linear infinite wi-spin}.wi--animated .wi-drop{animation:1.4s cubic-bezier(.45,0,.8,.6) infinite wi-fall}.wi--animated .wi-flake{animation:3.2s ease-in-out infinite wi-drift}.wi--animated .wi-bolt{animation:7s ease-in-out infinite wi-blink}.wi--animated .wi-band,.wi--animated .wi-gust{animation:7s ease-in-out infinite alternate wi-slide}.wi--animated .wi-band--2,.wi--animated .wi-gust--2{animation-direction:alternate-reverse}@keyframes wi-spin{to{transform:rotate(360deg)}}@keyframes wi-fall{0%{opacity:0;transform:translateY(-1px)}30%{opacity:1}to{opacity:0;transform:translateY(2.5px)}}@keyframes wi-drift{0%,to{opacity:1;transform:translate(0)}50%{opacity:.7;transform:translate(.6px,1.2px)}}@keyframes wi-blink{0%,90%,94%,to{opacity:1}92%,96%{opacity:.2}}@keyframes wi-slide{0%{transform:translate(-.6px)}to{transform:translate(.8px)}}@media (prefers-reduced-motion:reduce){.wi *{animation:none!important}}.poster{row-gap:var(--sp-6);padding-bottom:var(--sp-8);grid-template-columns:minmax(0,1fr);grid-template-areas:"place""reading""facts";display:grid}@media (width>=900px){.poster{column-gap:var(--sp-6);row-gap:var(--sp-8);padding-bottom:var(--sp-12);grid-template-rows:auto 1fr;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-areas:"reading reading reading reading reading reading reading reading place place place place""reading reading reading reading reading reading reading reading facts facts facts facts"}}.poster__place{min-width:0;padding-top:var(--sp-3);border-top:var(--rule-heavy) solid var(--ink);grid-area:place}.poster__name{letter-spacing:-.02em;overflow-wrap:anywhere;font-size:clamp(2rem,1.4rem + 1.6vw,2.75rem);font-weight:800;font-stretch:112%;line-height:1}.poster__region{margin-top:var(--sp-2);font-size:var(--fs-18);font-weight:500}.poster__time{margin-top:var(--sp-3);font-size:var(--fs-18);color:var(--ink-2);line-height:1.4}.poster__reading{grid-area:reading;align-self:start;min-width:0}.poster__temp{font-size:var(--fs-display);letter-spacing:-.065em;align-items:flex-start;margin-left:-.06em;padding-top:.08em;font-weight:300;font-stretch:92%;line-height:.78;display:flex}.poster__deg{letter-spacing:0;margin-left:.04em;font-size:.5em;font-weight:300;line-height:1}.poster__condition{align-items:center;gap:var(--sp-3);margin-top:var(--sp-6);letter-spacing:-.015em;font-size:clamp(1.625rem,1.2rem + 1.4vw,2.5rem);font-weight:600;font-stretch:100%;line-height:1.1;display:flex}.poster__icon{flex-shrink:0;width:1.1em;height:1.1em}.poster__headline{max-width:30ch;margin-top:var(--sp-3);text-wrap:pretty;font-size:clamp(1.125rem,1rem + .5vw,1.5rem);font-weight:400;line-height:1.3}.poster__facts{grid-area:facts;align-self:end;min-width:0}.facts>div{justify-content:space-between;align-items:baseline;gap:var(--sp-4);padding:var(--sp-2) 0;border-top:1px solid var(--rule);display:flex}.facts>div:last-child{border-bottom:1px solid var(--rule)}.facts dt{font-size:var(--fs-18);color:var(--ink-2)}.facts dd{font-size:var(--fs-22);font-weight:600;font-stretch:87.5%}.poster__notes{gap:var(--sp-2);margin-top:var(--sp-4);display:grid}.poster__note{gap:var(--sp-2);font-size:var(--fs-18);line-height:1.35;display:flex}.poster__note svg{width:18px;height:18px;color:var(--warn);flex-shrink:0;margin-top:3px}.poster__actions{align-items:center;gap:var(--sp-2) var(--sp-5);margin-top:var(--sp-5);font-size:var(--fs-18);flex-wrap:wrap;display:flex}.poster__actions .link-btn{min-height:var(--tap);font-weight:600}.poster__actions svg{width:16px;height:16px}.poster__updated{color:var(--ink-2)}.hourly__scroller{overscroll-behavior-x:contain;scrollbar-width:thin;max-width:100%;overflow-x:auto}.hourly__scroller:focus-visible{outline-offset:-2px}.mg{display:block;overflow:visible}.mg text{font-family:var(--font-cond);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;font-stretch:87.5%}.mg text.is-night{stroke:var(--paper-2)}.mg__night{fill:var(--paper-2)}.mg__day-rule{stroke:var(--rule);stroke-width:1px;shape-rendering:crispedges}.mg__now{stroke:var(--warn);stroke-width:1.5px}.mg__line{fill:none;stroke:var(--ink);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.mg__dot{stroke:var(--ink);stroke-width:1px}.mg__temp{font-size:var(--fs-15);fill:var(--ink);font-weight:500}.mg__temp.is-extreme{font-weight:600}.mg__baseline{stroke:var(--rule);stroke-width:1px}.mg__bar{fill:var(--precip);fill-opacity:.85}.mg__pop{font-size:var(--fs-12);fill:var(--precip);font-weight:500}.mg__quiet{font-family:var(--font-ui);font-size:var(--fs-13);fill:var(--ink-2)}.mg__glyph{color:var(--ink-2)}.mg__time{font-size:var(--fs-13);fill:var(--ink-2)}.mg__time.is-now{fill:var(--ink);font-weight:600}.mg__weekday{font-size:var(--fs-12);fill:var(--ink-2)}.daily__table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.daily__row>*{height:52px;padding:0 var(--sp-2);border-top:1px solid var(--rule);vertical-align:middle}.daily__row:first-child>*{border-top:0}.daily__row>:first-child{padding-left:0}.daily__row>:last-child{padding-right:0}.daily__day{width:5rem;font-size:var(--fs-18);text-align:left;white-space:nowrap;font-weight:500}.daily__cond{width:calc(28px + var(--sp-4));color:var(--ink-2)}.daily__pop{width:3.5rem;font-size:var(--fs-15);color:var(--precip);text-align:right;font-weight:600}.daily__lo,.daily__hi{width:3rem;font-family:var(--font-cond);font-stretch:87.5%;font-size:var(--fs-22);text-align:right}.daily__lo{color:var(--ink-2)}.daily__hi{color:var(--ink);font-weight:600}.daily__track{background:color-mix(in srgb, var(--ink) 16%, transparent);border-radius:3px;min-width:3rem;height:6px;display:block;position:relative}.daily__fill{border-radius:inherit;position:absolute;top:0;bottom:0}@media (width<=380px){.daily__row>*{padding:0 var(--sp-1)}.daily__day{width:3.25rem}.daily__pop{width:2.5rem}}.metrics{container-type:inline-size}.metrics__list{column-gap:var(--sp-8);grid-template-columns:1fr;display:grid}@container (width>=520px){.metrics__list{grid-template-columns:1fr 1fr}}.metric{align-items:center;column-gap:var(--sp-3);min-height:60px;padding:var(--sp-2) 0;border-top:1px solid var(--rule);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label value""note value";display:grid}.metric__label{font-size:var(--fs-15);color:var(--ink-2);grid-area:label;align-self:end}.metric__note{font-size:var(--fs-13);color:var(--ink-2);grid-area:note;align-self:start;line-height:1.35}.metric__value{align-items:center;gap:var(--sp-1);white-space:nowrap;grid-area:value;display:flex}.metric__num{font-family:var(--font-cond);font-stretch:87.5%;font-size:var(--fs-22);font-weight:500;line-height:1.1}.metric__unit{font-size:var(--fs-13);color:var(--ink-2);align-self:flex-end;padding-bottom:2px}.metric__arrow{margin-right:var(--sp-1);color:var(--ink);flex-shrink:0}.sun__chart{padding-top:1.25rem;display:block;position:relative}.sun__track{background:color-mix(in srgb, var(--ink) 16%, transparent);height:6px;display:block;position:relative}.sun__day{background:var(--ink);position:absolute;top:0;bottom:0}.sun__now{background:var(--warn);width:2px;box-shadow:0 0 0 2px var(--paper);margin-left:-1px;position:absolute;top:-7px;bottom:-7px}.sun__now-label{font-size:var(--fs-12);color:var(--warn);font-weight:600;line-height:1;position:absolute;top:0;transform:translate(-50%)}.sun__axis{margin-top:var(--sp-2);font-size:var(--fs-12);color:var(--ink-2);justify-content:space-between;display:flex}.sun__times{gap:var(--sp-8);margin-top:var(--sp-4);display:flex}.sun__times dt{font-size:var(--fs-13);color:var(--ink-2)}.sun__times dd{font-family:var(--font-cond);font-stretch:87.5%;font-size:var(--fs-22);font-weight:500;line-height:1.2}.sun__status{margin-top:var(--sp-2);font-size:var(--fs-13);color:var(--ink-2)}.air__head{align-items:baseline;gap:var(--sp-3);display:flex}.air__label{font-size:var(--fs-22);font-weight:600;line-height:1.2}.air__index{font-size:var(--fs-13);color:var(--ink-2)}.air__scale{max-width:20rem;margin-top:var(--sp-3);grid-template-columns:repeat(5,1fr);gap:3px;display:grid}.air__scale span{background:color-mix(in srgb, var(--ink) 18%, transparent);height:4px}.air__scale span.is-current{height:8px;box-shadow:0 0 0 1px var(--ink);margin-top:-2px}.air__note{margin-top:var(--sp-3);color:var(--ink-2)}.air__components{justify-content:start;column-gap:var(--sp-5);row-gap:var(--sp-1);margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--rule);grid-template-columns:repeat(4,auto);display:grid}.air__components div{align-items:baseline;gap:var(--sp-1);display:flex}.air__components dt{font-size:var(--fs-13);color:var(--ink-2)}.air__components dd{color:var(--ink);font-weight:500}@media (width<=360px){.air__components{grid-template-columns:repeat(2,auto)}}.places{align-items:baseline;gap:0 var(--sp-8);min-height:32px;font-size:var(--fs-15);flex-wrap:wrap;display:flex}.places__group{align-items:center;gap:0 var(--sp-3);flex-wrap:wrap;min-width:0;max-width:100%;display:flex}.places__label{color:var(--ink-2)}.places__list{flex-wrap:wrap;align-items:center;min-width:0;display:flex}.places__item{align-items:center;display:inline-flex}.places__item+.places__item:before{content:"·" / "";padding:0 var(--sp-2);color:var(--ink-3)}.places__item:has(.places__remove)+.places__item:before{content:none}.places__item:has(.places__remove)+.places__item{margin-left:var(--sp-3)}.places__place{border-radius:var(--r-control);min-height:32px;color:var(--ink);white-space:nowrap;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--rule-strong);text-decoration-color:var(--rule-strong);transition:text-decoration-color var(--dur) var(--ease);background:0 0;border:0;align-items:center;padding:0 2px;display:inline-flex}.places__place:hover{text-decoration-color:currentColor}.places__place.is-current{cursor:default;font-weight:600;text-decoration:none}.places__remove{border-radius:var(--r-control);width:28px;height:32px;color:var(--ink-3);transition:color var(--dur) var(--ease), background-color var(--dur) var(--ease);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.places__remove:hover{color:var(--ink);background:var(--paper-2)}.places__remove svg{width:12px;height:12px}.places__clear{font-size:var(--fs-13);color:var(--ink-2)}.search{width:100%;max-width:520px;position:relative}.search__row{align-items:stretch;gap:var(--sp-2);display:flex}.search__field{align-items:center;gap:var(--sp-2);min-width:0;height:var(--tap);padding:0 var(--sp-3);border-radius:var(--r-control);background:var(--paper);border:1px solid var(--rule-strong);transition:border-color var(--dur) var(--ease);flex:1;display:flex}.search__field:hover{border-color:var(--ink-3)}.search__field:focus-within{border-color:var(--ink);outline:2px solid var(--focus);outline-offset:2px}.search__icon{width:18px;height:18px;color:var(--ink-2);flex-shrink:0}.search__input{background:0 0;border:0;flex:1;min-width:0;height:100%;font-size:1rem}.search__input::placeholder{color:var(--ink-2)}.search__input:focus{outline:none}.search__spinner{border:1.5px solid var(--rule);border-top-color:var(--ink);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.8s linear infinite spin}.search__submit{flex-shrink:0}.search__submit[data-busy]{cursor:progress}.search__list{z-index:30;top:calc(100% + var(--sp-1));padding:var(--sp-1) 0;border-radius:var(--r-control);background:var(--paper);border:1px solid var(--rule);box-shadow:var(--shadow-pop);position:absolute;left:0;right:0}.search__list[hidden]{display:none}.search__group{padding:var(--sp-2) var(--sp-3) var(--sp-1);font-size:var(--fs-13);color:var(--ink-2)}.search__option{align-items:center;gap:var(--sp-3);min-height:var(--tap);padding:var(--sp-2) var(--sp-3);cursor:pointer;display:flex}.search__option[aria-selected=true]{background:var(--paper-2)}.search__option svg{width:16px;height:16px;color:var(--ink-2);flex-shrink:0}.search__option-text{flex-direction:column;min-width:0;display:flex}.search__option-name{font-weight:500}.search__option-sub{font-size:var(--fs-13);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.search__hint{top:calc(100% + var(--sp-1));font-size:var(--fs-13);color:var(--warn);position:absolute;left:0}@media (width<=380px){.search__field>.search__icon{display:none}}.state{align-items:flex-start;gap:var(--sp-4);max-width:560px;padding-top:var(--sp-10);flex-direction:column;display:flex}.state__title{font-family:var(--font-cond);font-stretch:87.5%;font-size:var(--fs-40);letter-spacing:-.01em;font-weight:500;line-height:1.1}.state__title--small{font-size:var(--fs-28)}.state__text{max-width:60ch;color:var(--ink-2)}.state__text--small{font-size:var(--fs-13)}.state__actions{gap:var(--sp-3);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.state__code{max-width:100%;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--paper-2);font-size:var(--fs-13);margin:0;overflow-x:auto}code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.92em}.picks{margin-top:var(--sp-2);border-top:1px solid var(--rule);align-self:stretch}.picks li{border-bottom:1px solid var(--rule)}.picks__row{justify-content:space-between;align-items:baseline;gap:var(--sp-4);width:100%;min-height:var(--tap);padding:var(--sp-3) var(--sp-2);text-align:left;transition:background-color var(--dur) var(--ease);background:0 0;border:0;display:flex}.picks__row:hover{background:var(--paper-2)}.picks__name{font-weight:500}.picks__meta{font-size:var(--fs-13);color:var(--ink-2);text-align:right}.banner{align-items:center;gap:var(--sp-3);padding:var(--sp-1) var(--sp-1) var(--sp-1) var(--sp-4);border-radius:var(--r-control);background:var(--paper-2);color:var(--ink);display:flex}.banner__icon{width:18px;height:18px;color:var(--warn);flex-shrink:0}.banner__text{min-width:0;padding:var(--sp-2) 0;flex:1}.banner__action{flex-shrink:0;font-weight:500}.banner__close{width:var(--tap);height:var(--tap);border-radius:var(--r-control);color:var(--ink-2);transition:color var(--dur) var(--ease), background-color var(--dur) var(--ease);background:0 0;border:0;flex-shrink:0;place-items:center;padding:0;display:grid}.banner__close:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 8%, transparent)}.banner__close svg{width:16px;height:16px}.skeleton{gap:var(--sp-3);flex-direction:column;min-width:0;display:flex}.skeleton--hero{grid-area:hero}.skeleton--hourly{padding-top:var(--sp-4);border-top:1px solid var(--rule);grid-area:hourly}.skeleton--daily{padding-top:var(--sp-4);border-top:1px solid var(--rule);grid-area:daily}.sk{border-radius:var(--r-control);background:var(--paper-2);animation:1.8s ease-in-out infinite sk-pulse;display:block}.sk--panel{border-radius:var(--r-panel);height:300px}.sk--title{width:9rem;height:14px}.sk--chart{height:140px}.sk-row{padding:var(--sp-2) 0;border-bottom:1px solid var(--rule);display:block}.sk--line{width:100%;height:14px}@media (width>=720px){.dashboard.skeleton-grid{grid-template-areas:"hero hero""hourly hourly""daily daily"}}@media (width>=1080px){.dashboard.skeleton-grid{grid-template-areas:"hero daily""hourly daily"}}@keyframes sk-pulse{50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}.app{min-height:100dvh;position:relative}.shell{z-index:1;gap:var(--sp-6);max-width:var(--shell-max);min-height:100dvh;padding:max(var(--sp-4), env(safe-area-inset-top)) var(--gutter) max(var(--sp-6), env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex;position:relative}.topbar{align-items:center;gap:var(--sp-6);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand search actions";display:grid}.brand{align-items:center;gap:var(--sp-2);min-height:var(--tap);color:var(--ink);font-family:var(--font-ui);letter-spacing:-.03em;border-radius:var(--r-control);grid-area:brand;font-size:1.375rem;font-weight:800;font-stretch:125%;line-height:1;text-decoration:none;display:inline-flex}.brand__deg{margin-left:calc(-1 * var(--sp-2) - .02em);font-weight:500}.topbar__search{grid-area:search;min-width:0}.topbar__actions{align-items:center;gap:var(--sp-5);grid-area:actions;display:flex}.topbar__locate{min-height:var(--tap);font-size:var(--fs-15);white-space:nowrap}.topbar__locate svg{width:18px;height:18px;color:var(--ink-2);flex-shrink:0}.toggle,.toggle__item{align-items:center;display:inline-flex}.toggle__sep{color:var(--ink-3);padding:0 2px}.toggle__btn{min-width:32px;min-height:var(--tap);padding:0 var(--sp-1);border-radius:var(--r-control);color:var(--ink-2);font-size:var(--fs-15);text-underline-offset:4px;transition:color var(--dur) var(--ease), text-decoration-color var(--dur) var(--ease);background:0 0;border:0;font-weight:400;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px}.toggle__btn:hover{color:var(--ink);-webkit-text-decoration-color:var(--rule-strong);text-decoration-color:var(--rule-strong)}.toggle__btn[aria-pressed=true]{color:var(--ink);font-weight:600;text-decoration-color:currentColor}.toggle--small .toggle__btn{font-size:var(--fs-13)}.progress{z-index:50;height:2px;position:fixed;top:0;left:0;right:0;overflow:hidden}.progress:after{content:"";background:var(--ink);width:30%;animation:progress 1.2s var(--ease) infinite;position:absolute;inset:0}@keyframes progress{0%{transform:translate(-100%)}to{transform:translate(340%)}}.messages:empty{display:none}.messages{gap:var(--sp-2);flex-direction:column;display:flex}main{flex:1}.app__note{max-width:65ch;color:var(--ink-2)}.dashboard{gap:var(--sp-12) var(--sp-6);transition:opacity var(--dur) var(--ease);grid-template-columns:minmax(0,1fr);grid-template-areas:"hero""hourly""daily""metrics""sun""air";align-items:start;display:grid}.dashboard.is-updating{opacity:.6}.dashboard__col{display:contents}.dashboard__col>*{min-width:0}.area-hero{grid-area:hero}.area-hourly{grid-area:hourly}.area-daily{grid-area:daily}.area-metrics{grid-area:metrics}.area-sun{grid-area:sun}.area-air{grid-area:air}@media (width>=900px){.dashboard{grid-template-columns:repeat(12,minmax(0,1fr));grid-template-areas:none}.area-hero{grid-area:1/1/2/-1}.area-hourly{grid-area:2/1/3/-1}.area-daily{grid-area:3/1/4/7}.area-metrics{grid-area:3/7/4/13}.area-sun{grid-area:4/1/5/7}.area-air{grid-area:4/7/5/13}.dashboard:not(:has(.area-daily)) .area-metrics{grid-column:1/-1}}.footer{margin-top:var(--sp-8);padding-top:var(--sp-3);border-top:var(--rule-heavy) solid var(--ink);font-size:var(--fs-13);color:var(--ink-2)}.footer a{color:inherit;-webkit-text-decoration-color:var(--rule-strong);text-decoration-color:var(--rule-strong)}.footer a:hover{text-decoration-color:currentColor}@media (width<=899px){.topbar{gap:var(--sp-2) var(--sp-4);grid-template-columns:auto 1fr;grid-template-areas:"brand actions""search search"}.topbar__actions{justify-self:end}}@media (width<=479px){.topbar__actions{gap:var(--sp-3)}.toggle__btn{min-width:0}.topbar__locate{min-width:var(--tap);justify-content:center;text-decoration:none}.topbar__locate-text{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (prefers-reduced-motion:reduce){.progress:after{width:100%;animation:2s linear infinite progress-pulse}}@keyframes progress-pulse{50%{opacity:.35}}
