:root{color:#0d1b2d;background:#f5f9fe;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--bg: #f5f9fe;--surface: #ffffff;--surface-soft: #f8fbff;--surface-raised: #ffffff;--text: #0d1b2d;--muted: #687a8f;--muted-strong: #43566d;--border: #dbe6f2;--border-strong: #c8d7e8;--accent: #075fc9;--accent-strong: #034a9f;--accent-soft: #e9f3ff;--accent-softer: #f3f8ff;--success: #2faa60;--warning: #f1b72b;--danger: #eb5148;--offline: #aeb9c7;--shadow: 0 18px 46px rgb(38 68 108 / 10%);--shadow-soft: 0 8px 24px rgb(38 68 108 / 8%);--ring: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent)}:root[data-theme=dark],.dashboard[data-theme=dark]{color:#edf5ff;background:#07131f;--bg: #07131f;--surface: #0d1b29;--surface-soft: #102437;--surface-raised: #11283c;--text: #edf5ff;--muted: #9eb1c7;--muted-strong: #c4d3e4;--border: #20364a;--border-strong: #31506a;--accent: #4aa3ff;--accent-strong: #8bc7ff;--accent-soft: #102f4f;--accent-softer: #0a2238;--success: #63cd8f;--warning: #efc14a;--danger: #ff7167;--offline: #758293;--shadow: 0 20px 56px rgb(0 0 0 / 28%);--shadow-soft: 0 12px 34px rgb(0 0 0 / 18%)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg)}button,input,select{font:inherit}button{align-items:center;background:linear-gradient(180deg,var(--accent),var(--accent-strong));border:1px solid color-mix(in srgb,var(--accent) 84%,#ffffff);border-radius:7px;box-shadow:0 8px 18px color-mix(in srgb,var(--accent) 20%,transparent);color:#fff;cursor:pointer;display:inline-flex;font-weight:850;gap:7px;justify-content:center;min-height:40px;padding:0 15px;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease,transform .16s ease}button:hover:not(:disabled){box-shadow:0 10px 22px color-mix(in srgb,var(--accent) 24%,transparent);transform:translateY(-1px)}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{box-shadow:var(--ring);outline:none}button:disabled{cursor:not-allowed;opacity:.55}.secondary{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 16%,var(--border));box-shadow:none;color:var(--accent-strong)}.secondary:hover:not(:disabled){background:color-mix(in srgb,var(--accent-soft) 76%,var(--surface));box-shadow:var(--shadow-soft)}input,select{background:var(--surface);border:1px solid var(--border);border-radius:7px;color:var(--text);min-height:40px;padding:8px 10px;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;width:100%}input:hover,select:hover{border-color:var(--border-strong)}a{color:var(--accent);font-weight:850;text-decoration:none}a:hover{color:var(--accent-strong)}.dashboard{background:var(--bg);color:var(--text);min-height:100vh}.topbar{align-items:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb,var(--surface) 94%,transparent);border-bottom:1px solid var(--border);display:grid;gap:14px;grid-template-columns:minmax(210px,1fr) auto auto auto;padding:10px 24px;position:sticky;top:0;z-index:10}.brand{align-items:center;display:grid;font-weight:900;gap:0 10px;grid-template-columns:38px auto;letter-spacing:0}.brand small{color:var(--muted);font-size:.78rem;font-weight:750;grid-column:2}.brand-mark{align-items:center;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 22%,var(--border));border-radius:8px;color:var(--accent);display:inline-flex;grid-row:span 2;height:38px;justify-content:center;width:38px}.nav{display:flex;flex-wrap:wrap;gap:4px}.nav a{border-radius:7px;color:var(--muted);font-size:.9rem;font-weight:850;padding:9px 14px;transition:background .16s ease,color .16s ease}.nav a:hover{background:var(--surface-soft);color:var(--text)}.nav a.active{background:var(--accent-soft);color:var(--accent)}.theme-toggle{align-items:center;border:1px solid var(--border);border-radius:999px;color:var(--muted);cursor:pointer;display:inline-flex;font-size:.84rem;font-weight:850;gap:8px;min-height:38px;padding:5px 9px;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.theme-toggle input{height:1px;opacity:0;position:absolute;width:1px}.theme-switch{background:color-mix(in srgb,var(--muted) 22%,var(--surface));border-radius:999px;display:inline-flex;height:22px;padding:2px;position:relative;width:42px}.theme-switch:after{background:var(--surface);border:1px solid var(--border);border-radius:50%;box-shadow:0 2px 7px #0a1e322e;content:"";height:18px;left:2px;position:absolute;top:2px;transition:background .16s ease,transform .16s ease;width:18px}.theme-toggle input:checked+.theme-switch{background:var(--accent)}.theme-toggle input:checked+.theme-switch:after{transform:translate(20px)}.login-screen{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:24px}.login-panel,.section-block,.station-add-panel,.station-manage-card,.state-block,.empty-state,.error{background:color-mix(in srgb,var(--surface) 96%,transparent);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.login-panel{display:grid;gap:16px;max-width:380px;padding:24px;width:100%}.login-panel h1,.page-header h1,.section-heading h2,.chart-title h3,.station-add-panel h2{margin:0}.login-panel label{display:grid;gap:6px;font-size:.9rem;font-weight:850}.app-page{margin:0 auto;max-width:1280px;padding:24px}.page-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:18px}.page-header h1{font-size:1.8rem;letter-spacing:0}.page-header p{color:var(--muted);margin:6px 0 0}.state-block,.empty-state,.error{margin-bottom:16px;padding:18px}.muted{color:var(--muted)}.error{border-color:color-mix(in srgb,var(--danger) 50%,var(--border));color:var(--danger)}.success{border-color:color-mix(in srgb,var(--success) 44%,var(--border));color:var(--success)}.error-text{color:var(--danger)}.segmented-control{background:var(--surface);border:1px solid var(--border);border-radius:8px;display:inline-grid;grid-template-columns:repeat(5,minmax(68px,1fr));overflow:hidden}.overview-range-bar{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-soft);display:flex;gap:14px;justify-content:space-between;margin-bottom:16px;padding:10px 12px;position:sticky;top:64px;z-index:9}.public-dashboard-page .overview-range-bar{top:0}.overview-range-bar>span,.overview-controls>span{color:var(--muted);font-size:.78rem;font-weight:900;letter-spacing:.02em;text-transform:uppercase}.segmented-control button{background:transparent;border:0;border-radius:0;box-shadow:none;color:var(--muted);min-height:36px;padding:0 13px}.segmented-control button:hover:not(:disabled){background:var(--surface-soft);box-shadow:none;color:var(--text);transform:none}.segmented-control button.active{background:var(--accent);color:#fff}.overview-controls{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-soft);display:flex;flex-wrap:wrap;gap:9px;margin-bottom:18px;padding:10px 12px}.check-pill{align-items:center;background:var(--surface-soft);border:1px solid var(--border);border-radius:999px;color:var(--muted-strong);cursor:pointer;display:inline-flex;font-size:.88rem;font-weight:850;gap:7px;min-height:34px;padding:7px 11px;transition:background .16s ease,border-color .16s ease,color .16s ease}.check-pill:hover{border-color:color-mix(in srgb,var(--station-color, var(--accent)) 48%,var(--border))}.check-pill.active{background:color-mix(in srgb,var(--station-color, var(--accent)) 14%,var(--surface));border-color:color-mix(in srgb,var(--station-color, var(--accent)) 48%,var(--border));color:var(--text)}.check-pill input{accent-color:var(--accent);min-height:auto;width:auto}.station-dot{background:var(--station-color, var(--accent));border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--station-color, var(--accent)) 18%,transparent);height:8px;width:8px}.section-block{margin-bottom:18px;padding:16px}.section-heading,.chart-title{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:14px}.section-heading span,.chart-title>span{color:var(--muted);font-size:.82rem;font-weight:850}.current-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.current-card,.record-card{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;min-width:0;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.current-card:hover,.record-card:hover,.chart-panel:hover,.station-manage-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-soft)}.current-card{display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr);padding:12px}.metric-icon,.record-icon{align-items:center;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 16%,var(--border));border-radius:999px;color:var(--accent);display:inline-flex;justify-content:center}.metric-icon{height:36px;width:36px}.metric-copy{display:grid;gap:4px;min-width:0}.current-card small,.record-card span{color:var(--muted);font-size:.72rem;font-weight:850}.current-card strong,.record-card strong{color:var(--accent);font-size:1.3rem;line-height:1.05;white-space:nowrap}.current-card span,.record-card small{color:var(--text);font-weight:850}.current-card em{color:var(--muted);font-size:.72rem;font-style:normal}.chart-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.chart-panel{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;min-width:0;padding:14px;transition:border-color .16s ease,box-shadow .16s ease}.chart-panel:first-child{grid-column:span 2}.chart-kicker{align-items:center;color:var(--muted);display:inline-flex;font-size:.76rem;font-weight:850;gap:6px;margin-bottom:4px;text-transform:uppercase}.chart-kicker svg{color:var(--accent)}.chart{background:transparent;min-width:0}.overview-lower-grid{display:grid;gap:18px;grid-template-columns:minmax(300px,.84fr) minmax(420px,1.16fr)}.record-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}.record-card{display:grid;gap:6px;padding:14px;position:relative}.record-icon{height:36px;margin-bottom:2px;width:36px}.health-heatmap{display:grid;gap:8px;overflow-x:auto;padding:4px 2px 8px}.health-legend{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end;min-width:320px}.health-legend span{align-items:center;color:var(--muted);display:inline-flex;font-size:.76rem;font-weight:850;gap:6px}.health-legend i{border-radius:50%;display:inline-block;height:8px;width:8px}.health-legend .current,.health-cell.current{background:var(--success)}.health-legend .stale,.health-cell.stale{background:var(--warning)}.health-legend .offline,.health-cell.offline{background:var(--offline)}.health-legend .error,.health-cell.error{background:var(--danger)}.health-row{align-items:center;display:grid;gap:10px;grid-template-columns:minmax(96px,140px) minmax(260px,1fr)}.health-row>span{color:var(--text);font-weight:850;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.health-row>div{display:grid;gap:3px;grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;min-width:260px}.health-cell{border:1px solid color-mix(in srgb,var(--surface) 76%,transparent);border-radius:3px;box-shadow:none;height:18px;min-height:18px;padding:0;position:relative}.health-cell:hover,.health-cell:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--text) 14%,transparent);transform:none;z-index:3}.health-tooltip{background:color-mix(in srgb,var(--surface-raised) 96%,transparent);border:1px solid var(--border-strong);border-radius:7px;box-shadow:var(--shadow);color:var(--text);font-size:.75rem;font-weight:750;left:50%;line-height:1.35;max-width:280px;padding:9px 10px;pointer-events:none;position:fixed;text-align:left;transform:translate(-50%);width:max-content;z-index:30}.station-add-panel{align-items:end;display:grid;gap:14px;grid-template-columns:minmax(240px,1fr) auto;margin-bottom:18px;padding:16px}.station-add-panel>div{display:grid;gap:12px}.station-add-panel h2{font-size:1.02rem}.station-add-panel label,.display-name-field{color:var(--muted);display:grid;font-size:.82rem;font-weight:900;gap:6px}.station-management-list{display:grid;gap:12px}.station-manage-card{display:grid;gap:14px;padding:16px;position:relative;transition:border-color .16s ease,box-shadow .16s ease}.station-manage-card:before{background:var(--offline);border-radius:8px 0 0 8px;bottom:0;content:"";left:0;position:absolute;top:0;width:3px}.station-manage-card.enabled:before{background:var(--success)}.station-manage-main{align-items:center;display:grid;gap:16px;grid-template-columns:minmax(220px,1fr) auto minmax(190px,auto)}.station-manage-main small{color:var(--muted);display:block;margin-top:6px}.switch-row{align-items:center;cursor:pointer;display:inline-flex;font-weight:900;gap:9px;white-space:nowrap}.switch-row input{height:1px;opacity:0;position:absolute;width:1px}.switch-track{background:color-mix(in srgb,var(--muted) 28%,var(--surface));border-radius:999px;display:inline-flex;height:24px;padding:2px;position:relative;width:44px}.switch-track:after{background:var(--surface);border:1px solid var(--border);border-radius:50%;box-shadow:0 2px 7px #0a1e322e;content:"";height:20px;left:2px;position:absolute;top:2px;transition:background .16s ease,transform .16s ease;width:20px}.switch-row input:checked+.switch-track{background:var(--success)}.switch-row input:checked+.switch-track:after{transform:translate(20px)}.coordinate-block{text-align:right}.coordinate-link{align-items:center;background:var(--accent-softer);border:1px solid color-mix(in srgb,var(--accent) 16%,var(--border));border-radius:999px;display:inline-flex;gap:6px;padding:7px 10px;white-space:nowrap}.station-manage-meta{border-top:1px solid var(--border);display:grid;gap:12px;grid-template-columns:repeat(5,minmax(0,1fr));padding-top:12px}.station-manage-meta div{display:grid;gap:5px;min-width:0}.station-manage-meta span,.station-manage-meta small,.backfill-status small{color:var(--muted);font-size:.78rem;font-weight:850}.station-manage-meta strong{overflow-wrap:anywhere}.actions{display:flex;flex-wrap:wrap;gap:8px}.backfill-status{display:grid;gap:5px}.backfill-status .status-pill{justify-self:start}.status-pill{border-radius:999px;color:var(--text);display:inline-flex;font-size:.72rem;font-weight:900;line-height:1;padding:6px 9px;text-transform:uppercase;white-space:nowrap}.status-pill.current{background:color-mix(in srgb,var(--success) 18%,var(--surface));color:var(--success)}.status-pill.stale{background:color-mix(in srgb,var(--warning) 22%,var(--surface));color:color-mix(in srgb,var(--warning) 68%,var(--text))}.status-pill.offline,.status-pill.error{background:color-mix(in srgb,var(--danger) 16%,var(--surface));color:var(--danger)}.status-pill.disabled,.status-pill.unknown{background:color-mix(in srgb,var(--muted) 16%,var(--surface));color:var(--muted)}.table-wrap,.station-grid,.detail-grid,.rose-grid,.map-panel,.metric-grid,.toolbar,.selector-row{display:none}@media (max-width: 980px){.chart-grid,.overview-lower-grid{grid-template-columns:1fr}.chart-panel:first-child{grid-column:auto}.station-manage-main,.station-manage-meta{grid-template-columns:1fr 1fr}.coordinate-block{text-align:left}}@media (max-width: 720px){.topbar{align-items:stretch;grid-template-columns:1fr;padding:12px 16px;position:sticky;top:0}.brand{grid-template-columns:36px minmax(0,1fr)}.brand-mark{height:36px;width:36px}.nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.nav a{text-align:center}.theme-toggle{justify-content:center}.app-page{padding:16px}.page-header,.section-heading,.chart-title{align-items:flex-start;flex-direction:column}.segmented-control{grid-template-columns:repeat(5,minmax(54px,1fr));width:100%}.segmented-control button{padding:0 8px}.overview-range-bar{align-items:stretch;flex-direction:column;gap:8px;position:static}.overview-controls{align-items:stretch}.check-pill{flex:1 1 145px}.current-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.current-card,.station-add-panel,.station-manage-main,.station-manage-meta{grid-template-columns:1fr}.coordinate-link{white-space:normal}.health-row{grid-template-columns:88px minmax(220px,1fr)}}@media (max-width: 460px){.current-grid,.record-grid{grid-template-columns:1fr}.app-page{padding:12px}.section-block,.station-add-panel,.station-manage-card{padding:14px}}
