:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#0d0e12;--card-bg:#1a1b21;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{width:100%;height:100svh;position:relative;overflow:hidden}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}@media (width>=769px){.weather-panel{border-left:1px solid var(--border);width:420px;max-width:90vw;top:0;bottom:0;right:0;transform:translate(100%)}.weather-panel.open{transform:translate(0)}.weather-panel-handle{display:none}}@media (width<=768px){.weather-panel{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);border-radius:0;inset:0;transform:translateY(100%)}.weather-panel.open{transform:translateY(0)}.weather-panel-header{z-index:1;background:var(--bg);padding-left:max(20px, env(safe-area-inset-left,0px));padding-right:max(20px, env(safe-area-inset-right,0px));position:sticky;top:0}.weather-panel-body{padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.weather-panel-close{width:44px;min-width:44px;height:44px;min-height:44px}}@media (prefers-reduced-motion:reduce){.weather-panel,.weather-panel-backdrop{transition:none}}.city-picker{align-items:center;gap:8px;display:flex}.city-picker-label{color:#6b6375;font-size:14px}.city-picker-select{color:#2d2b32;cursor:pointer;background-color:#fff;border:1px solid #e5e4e7;border-radius:8px;padding:8px 12px;font-size:14px;transition:border-color .2s,box-shadow .2s}.city-picker-select:hover{border-color:#9ca3af}.city-picker-select:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}@media (prefers-color-scheme:dark){.city-picker-label{color:#9ca3af}.city-picker-select{color:#f4f4f5;background-color:#1e2028;border-color:#2e303a}.city-picker-select:hover{border-color:#4b5563}}.invalid-city-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:400px;display:flex}.invalid-city-state h2{color:var(--text-h);margin:0 0 8px}.invalid-city-state p{color:var(--text);margin:0 0 8px}.invalid-city-id{word-break:break-all;font-weight:600}.invalid-city-hint{opacity:.8;font-size:14px;margin-bottom:24px!important}.invalid-city-actions{flex-direction:column;align-items:center;gap:16px;display:flex}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg, var(--border) 25%, #ffffff26 50%, var(--border) 75%);background-size:800px 100%;border-radius:8px;animation:1.5s ease-in-out infinite shimmer}.skeleton-heading{width:60%;height:32px;margin-bottom:8px}.skeleton-text{width:40%;height:16px;margin-bottom:4px}.skeleton-text-sm{width:30%;height:14px}.skeleton-card{border-radius:12px;height:88px}.skeleton-chart{border-radius:12px;height:250px}.skeleton-chart-sm{border-radius:12px;height:220px}.skeleton-info{border-radius:8px;height:48px}@media (prefers-color-scheme:dark){.skeleton{background:linear-gradient(90deg, var(--border) 25%, #ffffff0f 50%, var(--border) 75%);background-size:800px 100%}}.map-skeleton{z-index:0;background:radial-gradient(circle at 30% 20%,#ffffff0f,#0000 50%),linear-gradient(#1a3c6e 0%,#2563a8 60%,#3b82d4 100%);position:fixed;inset:0;overflow:hidden}.map-skeleton-shimmer{background:linear-gradient(100deg,#0000 30%,#ffffff0a 50%,#0000 70%) 0 0/200% 100%;animation:2.4s linear infinite map-skeleton-shimmer;position:absolute;inset:0}@keyframes map-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-color-scheme:dark){.map-skeleton{background:radial-gradient(circle at 30% 20%,#ffffff0a,#0000 50%),linear-gradient(#0f1d36 0%,#142a52 60%,#1d3a72 100%)}}@media (prefers-reduced-motion:reduce){.map-skeleton-shimmer{animation:none}}.dashboard{padding:20px;position:relative}.dashboard-background{z-index:-2;background-position:50%;background-repeat:no-repeat;background-size:cover;transition:background-image .5s ease-in-out;position:fixed;inset:0}.dashboard-overlay{z-index:-1;-webkit-backdrop-filter:saturate(1.2);backdrop-filter:saturate(1.2);background:linear-gradient(#ffffffbf,#ffffffd9);position:fixed;inset:0}@media (prefers-color-scheme:dark){.dashboard-overlay{background:linear-gradient(#121216bf,#121216d9)}}.dashboard-header{text-align:left;margin-bottom:32px}.header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.header-controls{align-items:center;gap:12px;display:flex}.dashboard-header h1{letter-spacing:-.02em;margin:0 0 8px;font-size:32px;font-weight:600}.dashboard-subtitle{color:var(--text);margin:0 0 4px}.data-source,.refreshing-indicator{opacity:.7;font-size:12px}.stale-indicator{color:#d97706;font-size:12px}.current-conditions{color:var(--text);margin:0;font-size:16px}.metrics-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:32px;display:grid}.charts-section{flex-direction:column;gap:24px;display:flex}.chart-row{grid-template-columns:repeat(2,1fr);gap:24px;display:grid}.chart-container{background:var(--card-bg,var(--bg));border:1px solid var(--border);border-radius:12px;padding:20px 24px}.chart-container.large{grid-column:span 2}.chart-container h2{text-align:left;margin:0 0 16px;font-size:16px;font-weight:500}.chart-wrapper{height:280px;position:relative}.additional-info{grid-template-columns:repeat(4,1fr);gap:16px;margin-top:24px;display:grid}.info-item{background:var(--card-bg,var(--bg));border:1px solid var(--border);text-align:left;border-radius:12px;padding:16px 20px}.info-label{color:var(--text);margin-bottom:4px;font-size:12px;display:block}.info-value{color:var(--text-h);font-size:18px;font-weight:500;display:block}.loading-state,.error-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:400px;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:48px;height:48px;margin-bottom:16px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-state h2{color:var(--text-h);margin:0 0 8px}.error-state p{color:var(--text);margin:0 0 16px}.retry-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:12px 24px;font-size:14px;font-weight:500;transition:opacity .2s}.retry-button:hover{opacity:.9}.chart-tabs{background:var(--card-bg,var(--bg));border:1px solid var(--border);border-radius:8px;gap:4px;width:fit-content;margin-bottom:16px;padding:4px;display:flex}.chart-tab{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s}.chart-tab[aria-selected=true]{background:var(--accent);color:#fff}.chart-tab:hover:not([aria-selected=true]){background:var(--accent-bg)}.share-button{border:1px solid var(--border);background:var(--card-bg,var(--bg));color:var(--text);cursor:pointer;white-space:nowrap;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:500;transition:all .15s}.share-button:hover{background:var(--accent-bg)}@media (width<=1024px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.chart-row{grid-template-columns:1fr}.chart-container.large{grid-column:span 1}.additional-info{grid-template-columns:repeat(2,1fr)}}@media (width<=640px){.dashboard{padding:16px}.metrics-grid{grid-template-columns:1fr}.dashboard-header h1{font-size:24px}.header-controls{flex-wrap:wrap}.chart-container{padding:16px}.chart-wrapper{height:200px}.additional-info{grid-template-columns:1fr}}@media (width<=375px){.dashboard{padding:12px}.dashboard-header{margin-bottom:20px}.chart-wrapper{height:180px}}.metric-card{background:var(--card-bg,var(--bg));border:1px solid var(--border);text-align:left;border-radius:12px;padding:20px 24px;transition:box-shadow .2s}.metric-card:hover{box-shadow:var(--shadow)}.metric-title{color:var(--text);letter-spacing:.02em;margin:0 0 8px;font-size:14px;font-weight:400}.metric-value{color:var(--text-h);letter-spacing:-.02em;margin:0;font-size:32px;font-weight:600}.metric-unit{color:var(--text);margin-left:2px;font-size:18px;font-weight:400}.metric-icon{margin-top:8px;font-size:24px;display:block}.map-container{z-index:0;position:fixed;inset:0}.map-container .mapboxgl-map{width:100%;height:100%}.map-error{background:var(--bg);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.map-error-content{text-align:left;max-width:480px}.map-error-content h2{margin:0 0 12px}.map-error-content ol{padding-left:20px;line-height:1.8}.map-error-content code{font-size:13px}.map-marker{cursor:pointer;flex-direction:column;align-items:center;gap:4px;display:flex}.marker-dot{background:var(--accent);border:2px solid #fff;border-radius:50%;width:14px;height:14px;transition:transform .2s;position:relative;box-shadow:0 1px 4px #0000004d}.map-marker:hover .marker-dot,.map-marker.selected .marker-dot{transform:scale(1.3)}.map-marker:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 4px #ffffffe6, 0 0 0 6px var(--accent);border-radius:4px}.marker-pulse{border:2px solid var(--accent);border-radius:50%;animation:1.5s ease-out infinite pulse;position:absolute;inset:-6px}@keyframes pulse{0%{opacity:1;transform:scale(.8)}to{opacity:0;transform:scale(1.6)}}.marker-label{color:var(--text-h);white-space:nowrap;background:#ffffffe6;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;box-shadow:0 1px 3px #00000026}@media (prefers-color-scheme:dark){.marker-label{background:#1a1b21e6}}@media (prefers-reduced-motion:reduce){.marker-dot{transition:none}.marker-pulse{animation:none;display:none}}.weather-panel-backdrop{z-index:100;opacity:0;pointer-events:none;background:#0000004d;transition:opacity .3s;position:fixed;inset:0}.weather-panel-backdrop.open{opacity:1;pointer-events:auto}.weather-panel{z-index:101;background:var(--bg);box-shadow:var(--shadow);will-change:transform;flex-direction:column;transition:transform .3s cubic-bezier(.32,.72,0,1);display:flex;position:fixed}.weather-panel.dragging{transition:none}.weather-panel-handle{cursor:grab;touch-action:none;flex-shrink:0;justify-content:center;padding:12px 0 4px;display:flex}.weather-panel-handle:active{cursor:grabbing}.weather-panel-pill{background:var(--border);border-radius:2px;width:36px;height:4px}.weather-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 20px 12px;display:flex}.weather-panel-header h2{margin:0;font-size:18px}.weather-panel-close{border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text);background:0 0;border-radius:8px;justify-content:center;align-items:center;font-size:18px;transition:background .15s;display:flex}.weather-panel-close:hover{background:var(--accent-bg)}.weather-panel-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}@media (width>=769px){.weather-panel{border-left:1px solid var(--border);width:420px;max-width:90vw;top:0;bottom:0;right:0;transform:translate(100%)}.weather-panel.open{transform:translate(0)}.weather-panel-handle{display:none}}@media (width<=768px){.weather-panel{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);border-radius:0;inset:0;transform:translateY(100%)}.weather-panel.open{transform:translateY(0)}.weather-panel-header{z-index:1;background:var(--bg);padding-left:max(20px, env(safe-area-inset-left,0px));padding-right:max(20px, env(safe-area-inset-right,0px));position:sticky;top:0}.weather-panel-body{padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.weather-panel-close{width:44px;min-width:44px;height:44px;min-height:44px}}@media (prefers-reduced-motion:reduce){.weather-panel,.weather-panel-backdrop{transition:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
