@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.00az9qtie3ho1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.3j-a226dh71aj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.2gwoz23eiro2t.woff2)format("woff2");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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.0i3h3th1vs4m7.woff2)format("woff2");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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0zr6hhvz-h9nw.woff2)format("woff2");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}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.27spqqad3wyeo.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.3f4zuumv8svu0.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.34r5yzckw0h2s.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.2jyz_zw3a8jit.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.30bdpjkrtcces.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.1v5bejj26fx9h.woff2)format("woff2");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}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--ink:#17263a;--muted:#66758a;--line:#2d4f7024;--sky:#eaf5fb;--accent:#1676a8;--accent-dark:#0b5c87;--white:#ffffffd1;--weather-sunny:#d99000;--weather-partly-cloudy:#c47d24;--weather-cloudy:#657789;--weather-fog:#718ba1;--weather-drizzle:#62a9cf;--weather-rain:#287eb8;--weather-snow:#8ed5ee;--weather-storm:#8a5a9e}*{box-sizing:border-box}body{color:var(--ink);font-family:var(--font-geist-sans), sans-serif;background:#dceef7;margin:0}button,input{font:inherit}.skip-link{z-index:10;color:#fff;background:var(--accent-dark);border-radius:.6rem;padding:.7rem 1rem;font-weight:700;text-decoration:none;transition:transform .18s;position:absolute;top:1rem;left:1rem;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.weather-page{background:radial-gradient(circle at 9% 14%,#ffffffd9 0 5rem,#0000 5.1rem),radial-gradient(circle at 92% 82%,#ffffff8a 0 13rem,#0000 13.1rem),linear-gradient(140deg,#e9f7fc 0%,#d8eff8 48%,#c1e2ef 100%);justify-content:center;min-height:100vh;padding:clamp(3rem,9vw,7.5rem) 1.25rem 4rem;display:flex;position:relative;overflow:hidden}.weather-page:before,.weather-page:after{content:"";pointer-events:none;border:1px solid #ffffff94;border-radius:50%;position:absolute}.weather-page:before{width:34rem;height:34rem;top:-18rem;right:-10rem}.weather-page:after{width:23rem;height:23rem;bottom:-14rem;left:-10rem}.weather-shell{z-index:1;width:min(100%,36rem);position:relative}.weather-header{text-align:center;margin-bottom:2.25rem;animation:.6s both reveal}.weather-kicker,.weather-card-label{color:var(--accent-dark);letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:700}.weather-header h1{letter-spacing:-.06em;margin:.5rem 0 .65rem;font-size:clamp(2.55rem,8vw,4rem);line-height:.98}.weather-header p{color:var(--muted);margin:0;font-size:1.05rem}.search-panel{background:var(--white);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid #ffffffbf;border-radius:1rem;gap:.6rem;padding:.45rem;animation:.6s .1s both reveal;display:flex;box-shadow:0 1.25rem 2.75rem #275a771f}.search-panel input{min-width:0;color:var(--ink);background:0 0;border:0;outline:0;flex:1;padding:.85rem 1rem}.search-panel input::placeholder{color:#8b9aab}.search-panel input:focus-visible{border-radius:.6rem;box-shadow:0 0 0 3px #1676a824}.search-panel button{cursor:pointer;color:#fff;background:var(--accent);border:0;border-radius:.72rem;padding:.8rem 1.3rem;font-weight:700;transition:background .18s,transform .18s,box-shadow .18s}.search-panel button:hover{background:var(--accent-dark);transform:translateY(-1px);box-shadow:0 .5rem 1rem #0b5c8733}.search-panel button:active{transform:translateY(0)}.city-results{background:var(--white);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid #ffffffbf;border-radius:1rem;margin-top:1rem;animation:.3s both reveal;box-shadow:0 1.25rem 2.75rem #275a771f}.city-results-list{max-height:12rem;margin:0;padding:.45rem;list-style:none;overflow-y:auto}.city-results-item+.city-results-item{border-top:1px solid var(--line)}.city-results-button{cursor:pointer;width:100%;color:var(--ink);text-align:left;background:0 0;border:0;border-radius:.72rem;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.85rem 1rem;transition:background .18s,box-shadow .18s,transform .18s;display:flex}.city-results-button:hover{background:#eaf5fbb8;transform:translateY(-1px);box-shadow:0 .5rem 1rem #275a7714}.city-results-button:focus-visible{outline-offset:2px;outline:3px solid #1676a847}.city-results-button:active{box-shadow:none;background:#eaf5fbe6;transform:translateY(0)}.city-results-name{overflow-wrap:anywhere;font-weight:700}.city-results-location{color:var(--muted);overflow-wrap:anywhere;font-size:.86rem}.status-message{border:1px solid var(--line);background:var(--white);border-radius:.85rem;align-items:center;gap:.65rem;margin-top:1rem;padding:.9rem 1rem;animation:.3s both reveal;display:flex;box-shadow:0 .75rem 1.5rem #2957701a}.status-message--loading{color:var(--accent-dark)}.status-message--error{color:#a52d2d;border-color:#be3a3a40}.status-message-icon{flex:none}.status-message-icon--loading{animation:.9s linear infinite spin}.weather-card{background:linear-gradient(135deg,#fffffff5,#eaf5fbd1);border:1px solid #ffffffeb;border-radius:1.5rem;margin-top:1.5rem;padding:2rem;animation:.55s both reveal;box-shadow:0 1.75rem 3.5rem #29577029,inset 0 1px #ffffffb8}.weather-card-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;padding:0 .15rem 1.5rem;display:flex}.weather-card-context{min-width:0}.weather-card h2{letter-spacing:0;margin:.45rem 0 0;font-size:1.65rem;font-weight:700}.weather-card-heading p{color:var(--muted);overflow-wrap:anywhere;margin:.6rem 0 0;font-size:1rem;font-weight:600}.weather-primary{justify-content:space-between;align-items:center;gap:1.5rem;margin:2rem 0 2.1rem;padding:0 .15rem;display:flex}.weather-temperature{color:var(--ink);letter-spacing:0;margin:0;font-size:6.5rem;font-weight:700;line-height:.9}.weather-condition{border:1px solid var(--line);min-width:9.5rem;color:var(--muted);text-align:center;background:#eaf5fbad;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:.7rem;margin:0;padding:1.1rem 1.35rem;font-size:1rem;font-weight:600;line-height:1.2;display:flex}.weather-condition-icon{background:#ffffff8c;border-radius:50%;justify-content:center;align-items:center;width:5rem;height:5rem;display:flex;box-shadow:0 .5rem 1rem #277eb81a}.weather-icon-picture{display:contents}.weather-condition-icon img{object-fit:contain;filter:drop-shadow(0 .4rem .5rem #277eb82e);flex:none;width:64px;max-width:64px;height:64px;max-height:64px}.weather-condition-description{max-width:8rem}.weather-details{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:0;padding:1.35rem .15rem 0;display:grid}.weather-details p{color:var(--muted);flex-direction:column;gap:.35rem;margin:0;font-size:.78rem;line-height:1.3;display:flex}.weather-details p+p{border-left:1px solid var(--line);padding-left:1.25rem}.weather-details strong{color:var(--ink);font-size:1.15rem}.weather-detail-label{letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:.4rem;font-size:.74rem;font-weight:700;display:inline-flex}.weather-detail-icon{color:var(--accent);flex:none}.forecast-card{background:#ffffffdb;border:1px solid #ffffffdb;border-radius:1.35rem;margin-top:1.5rem;padding:clamp(1.35rem,4vw,1.75rem);animation:.55s both reveal;box-shadow:0 1.25rem 2.75rem #2957701f}.forecast-card-heading{border-bottom:1px solid var(--line);flex-direction:column;gap:.35rem;margin-bottom:1.35rem;padding-bottom:1rem;display:flex}.forecast-card-label{color:var(--accent-dark);letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:700}.forecast-card h2{letter-spacing:0;margin:0;font-size:1.35rem}.forecast-list{grid-template-columns:repeat(7,minmax(7rem,1fr));min-width:100%;margin:0;padding:0 .35rem .35rem;scroll-padding-inline:.35rem;list-style:none;display:grid;overflow-x:auto}.forecast-day{border-bottom:1px solid var(--line);background:0 0;align-content:space-between;justify-items:center;gap:.8rem;min-width:7rem;min-height:10.25rem;padding:.9rem .8rem;transition:border-color .18s,background .18s,transform .18s,box-shadow .18s;display:grid}.forecast-day+.forecast-day{border-left:1px solid var(--line)}.forecast-day:hover{background:#eaf5fbd1;border-bottom-color:#1676a861;transform:translateY(-2px)}.forecast-date{color:var(--muted);letter-spacing:.02em;white-space:nowrap;text-transform:capitalize;font-size:.75rem;font-weight:700}.forecast-icon{box-sizing:border-box;object-fit:contain;background:#ffffffad;border-radius:50%;width:54px;max-width:54px;height:54px;max-height:54px;padding:.2rem;display:block}.forecast-temperature{width:100%;color:var(--muted);font-variant-numeric:tabular-nums;grid-template-columns:1fr 1fr;align-items:baseline;font-size:.82rem;display:grid}.forecast-temperature strong{color:var(--ink);justify-self:end;font-size:1rem}.forecast-temperature span{border-left:1px solid #2d4f7033;justify-self:start;padding-left:.65rem}.hourly-toggle-button{cursor:pointer;width:100%;color:var(--accent-dark);background:#ffffffbd;border:1px solid #1676a82e;border-radius:.85rem;margin-top:1rem;padding:.85rem 1.1rem;font-weight:700;transition:border-color .18s,background .18s,box-shadow .18s,transform .18s;display:block;box-shadow:0 .5rem 1rem #275a7712}.hourly-toggle-button:hover{background:#eaf5fbe6;border-color:#1676a85c;transform:translateY(-1px);box-shadow:0 .7rem 1.25rem #275a771a}.hourly-toggle-button:focus-visible{outline-offset:3px;outline:3px solid #1676a847}.hourly-toggle-button:active{background:#d6edf7eb;transform:translateY(0);box-shadow:0 .25rem .6rem #275a7714}.hourly-forecast-card{border-top:1px solid var(--line);margin-top:1.35rem;padding-top:1.5rem;animation:.4s both reveal}.hourly-forecast-card-heading{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem;display:flex}.hourly-forecast-card-heading h2{letter-spacing:0;margin:.35rem 0 0;font-size:1.25rem}.hourly-date-selector{scrollbar-width:thin;gap:.45rem;margin:0 -.15rem 1.1rem;padding:.15rem .15rem .4rem;display:flex;overflow-x:auto}.hourly-date-button{cursor:pointer;border:1px solid var(--line);min-width:5.4rem;color:var(--muted);background:#ffffff7a;border-radius:.7rem;flex-direction:column;flex:none;align-items:center;gap:.15rem;padding:.55rem .75rem;font-size:.78rem;font-weight:700;transition:border-color .18s,background .18s,color .18s,box-shadow .18s;display:flex}.hourly-date-label{white-space:nowrap}.hourly-date-value{opacity:.82;font-size:.7rem;font-weight:500}.hourly-date-button:hover{color:var(--accent-dark);background:#eaf5fbcc;border-color:#1676a84d}.hourly-date-button[aria-pressed=true]{border-color:var(--accent);color:#fff;background:var(--accent);box-shadow:0 .35rem .75rem #1676a833}.hourly-date-button:focus-visible{outline-offset:2px;outline:3px solid #1676a83d}.hourly-forecast-list{border-top:1px solid var(--line);border-bottom:1px solid var(--line);scroll-snap-type:x proximity;grid-template-columns:repeat(24,minmax(8.5rem,1fr));margin:0;padding:0;list-style:none;display:grid;overflow-x:auto}.hourly-forecast-item{border-right:1px solid var(--line);text-align:center;scroll-snap-align:start;align-content:center;justify-items:center;gap:.55rem;min-width:8.5rem;min-height:10.5rem;padding:1rem .75rem;display:grid}.hourly-forecast-item:first-child{border-left:1px solid var(--line)}.hourly-forecast-item:hover{background:#eaf5fb75}.hourly-forecast-time{color:var(--ink);font-variant-numeric:tabular-nums;font-size:.82rem;font-weight:700}.hourly-forecast-icon{box-sizing:border-box;object-fit:contain;background:#eaf5fb9e;border-radius:50%;width:44px;max-width:44px;height:44px;max-height:44px;padding:.2rem;display:block}.hourly-forecast-condition{min-height:2.2rem;color:var(--muted);font-size:.76rem;line-height:1.25}.hourly-forecast-temperature{color:var(--ink);font-variant-numeric:tabular-nums;font-size:1.1rem}.hourly-forecast-precipitation{color:var(--muted);font-size:.72rem}@keyframes reveal{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:420px){.weather-page,.search-panel button{padding-left:1rem;padding-right:1rem}.weather-card{padding:1.35rem}.weather-card-heading{padding-bottom:1.15rem;padding-right:0}.weather-temperature{font-size:4.8rem}.weather-primary{text-align:center;flex-direction:column;align-items:stretch;gap:1.5rem;margin-top:1.8rem}.weather-condition{flex-direction:row;min-width:0;padding:.85rem 1rem;font-size:.95rem}.weather-condition-description{max-width:none}.weather-details{padding-left:0;padding-right:0}.weather-details p+p{padding-left:.8rem}.forecast-list{grid-template-columns:repeat(7,minmax(7rem,1fr))}.forecast-day{min-width:7rem}.forecast-card{padding:1.25rem}.forecast-list{gap:.55rem}.forecast-day{min-height:9.75rem;padding-left:.35rem;padding-right:.35rem}.forecast-temperature{font-size:.78rem}.forecast-temperature span{padding-left:.35rem}.hourly-forecast-card{padding-top:1.25rem}.hourly-forecast-card-heading{flex-direction:column;align-items:flex-start;gap:0}.hourly-forecast-list{grid-template-columns:repeat(24,minmax(8rem,1fr))}.hourly-forecast-item{min-width:8rem;min-height:10rem;padding-left:.6rem;padding-right:.6rem}}@media (prefers-reduced-motion:reduce){.weather-header,.search-panel,.weather-card,.forecast-card,.status-message,.city-results,.status-message-icon--loading{animation:none}.search-panel button,.city-results-button,.forecast-day,.hourly-toggle-button,.hourly-date-button,.hourly-forecast-card,.hourly-forecast-item{transition:none}}
