@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_195182e4-module__TxbuIq__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_195182e4-module__TxbuIq__variable{--font-sans:"Space Grotesk","Space Grotesk Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.f2220059.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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.f6f1950f.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.bd5f4d11.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.51c18f09.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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.23358719.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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.15008bfb.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:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_13fc341d-module__lMjmPq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_13fc341d-module__lMjmPq__variable{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}
:root{--bg:#111211;--bg-elev:#1a1d1b;--bg-elev-2:#242926;--line:#2f3631;--text:#e8ece8;--text-muted:#a2aea3;--accent:#ff8b2b;--accent-soft:#ffb374;--ok:#18b66a;--error:#ff4d4f;--heat-0:#1d221f;--heat-1:#24452f;--heat-2:#2f6c42;--heat-3:#589050;--heat-4:#8ca84a;--heat-5:#e6a933}*{box-sizing:border-box}html,body{height:100%;min-height:100%;margin:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-moz-text-size-adjust:100%;text-size-adjust:100%;overscroll-behavior-y:none;background:#000}body{min-height:100dvh;color:var(--text);font-family:var(--font-sans),sans-serif;background-color:#000;position:relative;overflow-x:hidden}.rain-glass-background{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.rain-glass-frame{border:0;width:100%;height:100%;display:block}a{color:inherit;text-decoration:none}.app-root{z-index:1;justify-content:center;width:100%;padding:32px 18px 48px;display:flex;position:relative}.dashboard-shell{gap:18px;width:min(1260px,100%);display:grid}@keyframes slideInSoft{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.dashboard-shell>.header{opacity:0;animation:.52s cubic-bezier(.22,.8,.24,1) 40ms forwards slideInSoft;transform:translateY(16px)}.dashboard-shell>.error-banner{opacity:0;animation:.46s cubic-bezier(.22,.8,.24,1) 90ms forwards slideInSoft;transform:translateY(14px)}.card-grid .card{opacity:0;animation:.48s cubic-bezier(.22,.8,.24,1) forwards slideInSoft;transform:translateY(14px)}.card-grid .card:first-child{animation-delay:.12s}.card-grid .card:nth-child(2){animation-delay:.15s}.card-grid .card:nth-child(3){animation-delay:.18s}.card-grid .card:nth-child(4){animation-delay:.21s}.card-grid .card:nth-child(5){animation-delay:.24s}.card-grid .card:nth-child(6){animation-delay:.27s}.card-grid .card:nth-child(7){animation-delay:.3s}.card-grid .card:nth-child(8){animation-delay:.33s}.card-grid .card:nth-child(9){animation-delay:.36s}.card-grid .card:nth-child(10){animation-delay:.39s}.card-grid .card:nth-child(11){animation-delay:.42s}.card-grid .card:nth-child(12){animation-delay:.45s}.dashboard-shell>.panel{opacity:0;animation:.52s cubic-bezier(.22,.8,.24,1) forwards slideInSoft;transform:translateY(14px)}.dashboard-shell>.panel:nth-of-type(2){animation-delay:.36s}.dashboard-shell>.panel:nth-of-type(3){animation-delay:.43s}.dashboard-shell>.panel:nth-of-type(4){animation-delay:.5s}.dashboard-shell>.panel:nth-of-type(5){animation-delay:.57s}@media (prefers-reduced-motion:reduce){.dashboard-shell>.header,.dashboard-shell>.error-banner,.card-grid .card,.dashboard-shell>.panel{opacity:1!important;animation:none!important;transform:none!important}}.header{border:1px solid var(--line);background:linear-gradient(150deg,#ff8b2b1a,#1c1f1ceb 45%);border-radius:16px;justify-content:space-between;align-items:flex-end;gap:16px;padding:20px;display:flex}.eyebrow{color:var(--accent-soft);text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:.78rem}.header h1{letter-spacing:.02em;margin:2px 0;font-size:clamp(1.6rem,2.8vw,2.3rem)}.header-brand-line{color:#ffd3ae;margin:0 0 8px;font-size:.9rem;font-weight:600}.header-station-line{color:var(--accent-soft);margin:0;font-size:.9rem;font-weight:600}.subtle{color:var(--text-muted);margin:0;font-size:.86rem}.status-meta{justify-items:end;gap:6px;display:grid}.status-chip{border:1px solid var(--line);background:var(--bg-elev);border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:.85rem;display:inline-flex}.status-dot{border-radius:999px;width:10px;height:10px}.status-online{background:var(--ok);box-shadow:0 0 10px #18b66ab3}.status-offline{background:var(--error);box-shadow:0 0 10px #ff4d4fb3}.card-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.card{border:1px solid var(--line);background:linear-gradient(#232825f2,#181b19f2);border-radius:14px;padding:14px}.card-hero{background:linear-gradient(160deg,#ff8b2b24,#1d211ef2 44%)}.card-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.78rem}.card-value{margin:7px 0 3px;font-size:1.44rem;font-weight:600}.card-detail{color:var(--text-muted);margin:0;font-size:.8rem}.card-weather-fact .card-value{margin-bottom:8px;font-size:1rem;line-height:1.35}.card-weather-fact .card-detail{line-height:1.4}.card-stoplights{background:linear-gradient(#232825f2,#181b19f2)}.stoplights-list{gap:10px;display:grid}.stoplight-row{align-items:center;gap:9px;display:inline-flex}.stoplight-dot{border-radius:999px;width:10px;height:10px;display:inline-block}.stoplight-green{background:#20c272;box-shadow:0 0 8px #20c27299}.stoplight-red{background:#ff5558;box-shadow:0 0 8px #ff555899}.stoplight-yellow{background:#f5c44f;box-shadow:0 0 8px #f5c44f99}.stoplight-label{color:var(--text);font-size:.86rem;font-weight:600}.wind-direction-detail{align-items:center;gap:6px;display:inline-flex}.wind-vane{color:#7cc7ff;background:#7cc7ff1a;border:1px solid #7cc7ff59;border-radius:999px;justify-content:center;align-items:center;width:18px;height:18px;font-size:.68rem;line-height:1;display:inline-flex}.small-stats{color:var(--text-muted);flex-wrap:wrap;gap:10px;font-size:.82rem;display:flex}.small-stats span{border:1px solid var(--line);background:#1c201de0;border-radius:999px;padding:6px 12px}.panel{border:1px solid var(--line);background:#191d1beb;border-radius:16px;padding:16px}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.panel h2{margin:0;font-size:1.05rem}.forecast-location{margin-bottom:10px}.forecast-error{color:#ffc39f;margin-top:-4px;margin-bottom:10px}.forecast-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.forecast-card{border:1px solid var(--line);background:linear-gradient(#1f2321f2,#171b18f2);border-radius:12px;padding:10px}.forecast-day{color:var(--accent-soft);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.74rem}.forecast-summary{margin:6px 0 4px;font-size:.92rem;font-weight:600}.forecast-temp{margin:0;font-size:1rem}.forecast-meta{color:var(--text-muted);margin:4px 0 0;font-size:.77rem}.trend-legend{align-items:center;gap:10px;display:inline-flex}.legend-item{color:var(--text-muted);align-items:center;gap:6px;font-size:.78rem;display:inline-flex}.legend-dot{border-radius:999px;width:8px;height:8px;display:inline-block}.legend-temp{background:#ff5a55}.legend-rain{background:#49a7ff}.legend-sun{border-top:2px dashed #ffce7cbf;width:12px;height:0;display:inline-block}.trend-chart-wrap{border:1px solid var(--line);background:linear-gradient(#1f2321f2,#171b18f2);border-radius:12px;overflow-x:auto}.trend-chart{width:100%;min-width:720px;height:auto;display:block}.axis-line{stroke:#c4cdc740;stroke-width:1px}.axis-grid-line{stroke:#c4cdc724;stroke-width:1px;stroke-dasharray:3 5}.temp-line{fill:none;stroke:#ff5a55;stroke-width:2.4px}.temp-dot{fill:#ff847f}.rain-bar{fill:#49a7ffb3}.sun-line{stroke-width:1.2px;stroke-dasharray:4 4}.sun-line.sunrise{stroke:#ffcb7a85}.sun-line.sunset{stroke:#a9b9ff7a}.sun-label{letter-spacing:.02em;font-size:10px}.sun-label.sunrise{fill:#ffd69bdb}.sun-label.sunset{fill:#c1cdffcc}.axis-label{fill:var(--text-muted);font-size:12px}.axis-y-label{fill:var(--text-muted);font-size:11px}.axis-y-left{text-anchor:end}.axis-y-right{text-anchor:start}.axis-label-right{text-anchor:end}.axis-date{fill:var(--text-muted);text-anchor:middle;font-size:11px}.rain-overview{margin-top:10px}.rain-overview-title{margin-bottom:8px}.rain-tags{flex-wrap:wrap;gap:6px;display:flex}.rain-tag{color:#a8d8ff;background:#49a7ff1a;border:1px solid #49a7ff59;border-radius:999px;padding:4px 10px;font-size:.74rem}.heatmap-wrap{grid-template-columns:auto 1fr;gap:8px;display:grid;overflow-x:auto}.heatmap-main{grid-template-rows:auto 1fr;gap:6px;display:grid}.heatmap-months{grid-auto-flow:column;gap:4px;min-width:740px;min-height:12px;display:grid}.heatmap-month-label{color:#a2aea3b8;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;align-self:end;font-size:.64rem}.heatmap-days{grid-template-rows:repeat(7,12px);gap:4px;padding-top:19px;display:grid}.heatmap-days span{color:var(--text-muted);align-items:center;font-size:.68rem;display:flex}.heatmap-grid{grid-template-rows:repeat(7,12px);grid-auto-flow:column;gap:4px;min-width:740px;display:grid}.heat-cell{background:var(--heat-0);border:1px solid #ffffff0a;border-radius:2px;width:12px;height:12px}.heat-cell.level-0{background:var(--heat-0)}.heat-cell.level-1{background:var(--heat-1)}.heat-cell.level-2{background:var(--heat-2)}.heat-cell.level-3{background:var(--heat-3)}.heat-cell.level-4{background:var(--heat-4)}.heat-cell.level-5{background:var(--heat-5)}.heat-cell.outside-range{opacity:.28}.heatmap-legend{color:var(--text-muted);align-items:center;gap:6px;font-size:.73rem;display:inline-flex}.records-groups{gap:14px;display:grid}.records-group h3{color:var(--accent-soft);margin:0 0 8px;font-size:.92rem}.records-items{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;display:grid}.record-item{border:1px solid var(--line);background:var(--bg-elev);border-radius:12px;padding:10px}.record-label{color:var(--text-muted);margin:0;font-size:.8rem}.record-value{margin:6px 0 3px;font-size:1.16rem;font-weight:600}.record-meta{font-family:var(--font-mono),monospace;color:var(--accent-soft);margin:0;font-size:.72rem}.record-caption{color:var(--text-muted);margin:6px 0 0;font-size:.74rem}.table-wrap{overflow:auto}.raw-table{border-collapse:collapse;width:100%;font-size:.88rem}.raw-table th,.raw-table td{border-bottom:1px solid var(--line);text-align:left;padding:8px 10px}.raw-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem}.error-banner{color:#ffc9cb;background:#ff4d4f26;border:1px solid #ff4d4f59;border-radius:12px;margin:0;padding:9px 12px;font-size:.86rem}.record-break-overlay{z-index:1200;background:#060807b8;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.record-break-modal{background:linear-gradient(170deg,#252b27f7,#161917fa);border:1px solid #ff8b2b73;border-radius:14px;width:min(640px,100%);max-height:86vh;padding:16px;overflow:auto;box-shadow:0 24px 80px #0000006b}.record-break-eyebrow{color:var(--accent-soft);text-transform:uppercase;letter-spacing:.07em;margin:0 0 4px;font-size:.74rem}.record-break-modal h2{margin:0 0 8px;font-size:1.18rem}.record-break-list{gap:8px;margin-top:12px;display:grid}.record-break-item{border:1px solid var(--line);background:#121714eb;border-radius:10px;padding:9px 10px}.record-break-item-title{color:var(--text);margin:0;font-size:.86rem}.record-break-item-value{color:var(--accent-soft);margin:4px 0 0;font-size:.92rem;font-weight:600}.record-break-item-meta{color:var(--text-muted);margin:4px 0 0;font-size:.74rem}.record-break-close{color:var(--text);cursor:pointer;background:#ff8b2b2b;border:1px solid #ff8b2b73;border-radius:10px;margin-top:12px;padding:8px 12px;font-size:.9rem;font-weight:600}.record-break-close:hover{background:#ff8b2b3d}.brand-footer{justify-content:center;padding:8px 0 2px;display:flex}.brand-logo-block{cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.brand-logo-image{width:150px;max-width:100%;height:auto;display:block}@media (min-width:1080px){.card-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.card-weather-fact{grid-column:span 2}.card-stoplights{grid-column:span 1}}@media (max-width:860px){html{font-size:14px}body{background-color:#000}.app-root{padding:max(6px,calc(env(safe-area-inset-top) + 4px))8px max(14px,calc(env(safe-area-inset-bottom) + 10px))}.dashboard-shell{gap:10px}.header{flex-direction:column;align-items:flex-start;gap:6px;padding:10px}.header h1{margin:0;font-size:1.5rem}.header-brand-line,.header-station-line{font-size:.72rem;line-height:1.2}.header-station-line{white-space:nowrap;text-overflow:ellipsis;width:100%;overflow:hidden}.subtle{font-size:.68rem}.card-grid{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:8px}.card{border-radius:12px;padding:9px}.card-value{margin:5px 0 2px;font-size:1.08rem}.card-label{font-size:.68rem}.panel{padding:12px}.status-meta{justify-items:start}.panel-head{flex-direction:column;align-items:flex-start}.records-items{grid-template-columns:1fr}.heatmap-grid,.heatmap-months{min-width:540px}.trend-chart{min-width:660px}}
