:root{color-scheme:light;--color-evergreen:#2e5e4e;--color-moss:#4d7a5a;--color-fern:#6fa46a;--color-river:#5e8ca8;--color-mist:#dce5e3;--color-cedar:#8a6b52;--color-sandstone:#eae4da;--color-fog:#f7f6f2;--color-charcoal:#1f2c28;--color-paper:#fffdf8;--color-cloud:#fbfaf7;--color-stone:#cfc8bb;--color-basalt:var(--color-charcoal);--color-forest:var(--color-evergreen);--color-slate:#375667;--color-bark:var(--color-cedar);--color-copper:#a86d45;--color-amber:#f4a51c;--color-rust:#b45a3c;--color-text:var(--color-charcoal);--color-muted:#68746e;--color-border:rgba(46,94,78,0.1);--color-focus:#2e6f8c;--color-status-open:var(--color-evergreen);--color-status-busy:var(--color-amber);--color-status-closure:var(--color-rust);--color-status-stale:#74707a;--shadow-soft:0 24px 66px rgba(31,44,40,0.1);--shadow-lifted:0 18px 42px rgba(31,44,40,0.09);--radius-card:24px;--radius-inner:18px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--max-page-width:1120px;--card-surface:rgba(255,253,248,0.9)}*{box-sizing:border-box}html{min-width:320px;background:var(--color-fog)}body{margin:0;background:linear-gradient(180deg,#eef4f1 0,#f7f6f2 56%),linear-gradient(135deg,rgba(94,140,168,.14) 0,rgba(247,246,242,0) 48%),linear-gradient(315deg,rgba(111,164,106,.1) 0,rgba(234,228,218,.28) 60%),var(--color-fog);color:var(--color-text);font-family:Plus Jakarta Sans,Manrope,Inter,system-ui,sans-serif;font-feature-settings:"kern" 1,"liga" 1;font-weight:500}body,button{letter-spacing:0}a{color:var(--color-evergreen);font-weight:700;text-decoration-thickness:1px;text-underline-offset:4px;transition:color .16s ease,-webkit-text-decoration-color .16s ease;transition:color .16s ease,text-decoration-color .16s ease;transition:color .16s ease,text-decoration-color .16s ease,-webkit-text-decoration-color .16s ease}a:hover{color:var(--color-river)}a:focus-visible,button:focus-visible{outline:3px solid rgba(46,111,140,.38);outline-offset:3px}button{font:inherit}.dashboard-shell{width:min(100%,var(--max-page-width));min-height:100vh;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-8)}.dashboard-hero{display:grid;grid-template-columns:1fr;grid-gap:var(--space-4);gap:var(--space-4);align-items:stretch}.camera-card,.chart-card,.permit-banner,.status-card{min-width:0;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--card-surface);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.camera-card:hover,.chart-card:hover,.permit-banner:hover,.status-card:hover{border-color:rgba(46,94,78,.16);box-shadow:0 28px 74px rgba(31,44,40,.12);transform:translateY(-1px)}.status-card{--status-accent:var(--color-evergreen);--status-value:var(--color-paper);--status-card-muted:rgba(255,253,248,0.72);--status-card-faint:rgba(255,253,248,0.18);position:relative;display:flex;min-height:360px;overflow:hidden;flex-direction:column;justify-content:space-between;padding:var(--space-6);background:linear-gradient(145deg,rgba(31,44,40,.98) 0,rgba(39,76,64,.97) 55%,rgba(33,57,68,.97) 100%),var(--color-charcoal);color:var(--color-paper);box-shadow:0 28px 74px rgba(31,44,40,.22)}.status-card[data-status-tone=busy]{--status-accent:var(--color-status-busy)}.status-card[data-status-tone=closure]{--status-accent:var(--color-status-closure)}.status-card[data-status-tone=stale],.status-card[data-status-tone=unavailable]{--status-accent:var(--color-status-stale)}.status-card[data-occupancy-tone=low]{--status-accent:var(--color-evergreen)}.status-card[data-occupancy-tone=moderate]{--status-accent:var(--color-cedar)}.status-card[data-occupancy-tone=high]{--status-accent:var(--color-amber)}.status-card[data-occupancy-tone=nearly-full]{--status-accent:var(--color-rust)}.status-card[data-occupancy-tone=unknown]{--status-accent:var(--color-status-stale)}.status-card .status-facts dd,.status-card .status-title{color:var(--color-paper)}.status-card .status-facts dt,.status-card .status-value span,.status-card .weather-range{color:var(--status-card-muted)}.status-card .status-facts div{border-top-color:var(--status-card-faint)}.status-card .weather-icon{filter:drop-shadow(0 3px 7px rgba(0,0,0,.36)) saturate(1.1)}.eyebrow{margin:0 0 var(--space-2);color:var(--color-evergreen);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}h1,h2{margin:0;color:var(--color-basalt);letter-spacing:0}h1{font-size:2.45rem;line-height:1}.status-title{max-width:18ch;color:var(--color-basalt);font-size:1.55rem;font-weight:800;line-height:1.04}h2{font-size:1.22rem;font-weight:850;line-height:1.12}.status-mainline{margin:var(--space-8) 0}.status-value{margin:0;color:var(--status-value);font-size:5.05rem;font-weight:800;line-height:.95;white-space:nowrap}.status-value span{display:inline-block;margin-left:var(--space-2);color:var(--color-muted);font-size:1.55rem;font-weight:700;line-height:1.2;vertical-align:baseline}.status-value-delayed{max-width:11ch;font-size:2.25rem;line-height:1.05;white-space:normal}.status-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin:0}.status-facts div{min-width:0;padding-block:var(--space-4) var(--space-1);border-top:1px solid rgba(136,160,148,.24)}.status-facts dt{margin:0 0 var(--space-1);color:var(--color-muted);font-size:.74rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.status-facts dd{margin:0;color:var(--color-basalt);font-size:1rem;font-weight:700;overflow-wrap:anywhere}.weather-readout{display:inline-flex;min-width:0;flex-direction:column;gap:2px;align-items:flex-start;line-height:1.25}.weather-current{display:inline-flex;min-width:0;gap:6px;align-items:center;white-space:nowrap}.weather-range{color:var(--color-muted);font-size:.9rem;font-weight:600}.weather-icon-tip{display:inline-flex;flex:0 0 auto;align-items:center}.weather-icon{flex:0 0 33px;width:33px;height:33px;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(47,58,52,.08))}.parking-spots-value{white-space:nowrap}.status-card .permit-required-link{color:var(--color-paper);-webkit-text-decoration-color:rgba(255,253,248,.62);text-decoration-color:rgba(255,253,248,.62)}.status-card .permit-required-link:hover{color:var(--status-card-muted)}.camera-credit,.footer-copy p,.permit-banner p{color:var(--color-muted);line-height:1.55}.camera-card{min-width:0;padding:var(--space-6);background:linear-gradient(145deg,rgba(255,253,248,.96),rgba(238,244,241,.9)),var(--card-surface)}.chart-header,.section-heading{display:flex;gap:var(--space-4);align-items:flex-start;justify-content:space-between}.camera-time{flex:0 0 auto;margin:0;color:var(--color-muted);font-size:.82rem;font-weight:800}.camera-frame{display:grid;width:100%;min-height:220px;margin-top:var(--space-5);overflow:hidden;place-items:center;border:1px solid rgba(136,160,148,.26);border-radius:var(--radius-inner);background:linear-gradient(135deg,rgba(46,94,78,.08),rgba(94,140,168,.12)),var(--color-mist);box-shadow:inset 0 1px 0 rgba(255,254,250,.8),0 14px 30px rgba(47,58,52,.1);aspect-ratio:16/9}.camera-frame img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .28s ease}.camera-frame:hover img{transform:scale(1.015)}.camera-fallback{padding:var(--space-4);color:var(--color-muted);font-weight:800;text-align:center}.camera-credit{margin:var(--space-4) 0 0;font-size:.88rem}.permit-banner{display:grid;grid-template-columns:1fr;grid-gap:var(--space-4);gap:var(--space-4);margin-top:var(--space-5);padding:var(--space-6);border-color:rgba(138,107,82,.2);background:linear-gradient(135deg,rgba(234,228,218,.72),rgba(255,254,250,.9)),var(--color-paper)}.permit-banner h2{color:var(--color-cedar)}.permit-banner p{max-width:68ch;margin:var(--space-2) 0 0}.permit-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.permit-actions a{padding:8px 12px;border-radius:999px;background:rgba(138,107,82,.1);text-decoration:none}.permit-actions a,.site-footer a{min-height:40px;display:inline-flex;align-items:center}.chart-card{margin-top:var(--space-5);padding:var(--space-6);background:linear-gradient(180deg,rgba(255,253,248,.98),rgba(255,253,248,.9)),var(--color-paper)}.chart-header{flex-direction:column}.range-control{display:grid;width:100%;grid-template-columns:repeat(3,1fr);grid-gap:var(--space-2);gap:var(--space-2);padding:5px;border:1px solid rgba(136,160,148,.24);border-radius:999px;background:rgba(220,229,227,.44)}.range-button{min-height:42px;border:0;border-radius:999px;background:transparent;color:var(--color-muted);cursor:pointer;font-weight:850;transition:background .16s ease,color .16s ease,transform .16s ease}.range-button[aria-pressed=true]{background:var(--color-evergreen);color:var(--color-paper);box-shadow:0 8px 18px rgba(46,94,78,.18)}.range-button:hover{background:rgba(255,254,250,.78);color:var(--color-basalt);transform:translateY(-1px)}.range-button[aria-pressed=true]:hover{background:var(--color-evergreen);color:var(--color-paper)}.chart-error,.chart-loading{margin:var(--space-4) 0 0;color:var(--color-bark);font-weight:800}.chart-wrap{margin-top:var(--space-6)}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:center;color:var(--color-muted);font-size:.88rem;font-weight:850}.chart-legend span{display:inline-flex;align-items:center;gap:var(--space-2)}.legend-line{width:28px;border-top:3px solid var(--color-evergreen)}.legend-line-forecast{border-top-color:var(--color-river);border-top-style:dashed}.now-chip{padding:5px 10px;border:1px dashed var(--color-cedar);border-radius:999px;color:var(--color-cedar);background:rgba(138,107,82,.08)}.chart-canvas{width:100%;height:320px;margin-top:var(--space-4);overflow:hidden;border:1px solid rgba(136,160,148,.22);border-radius:var(--radius-inner);background:linear-gradient(180deg,rgba(255,254,250,.94),rgba(245,249,247,.86)),var(--color-cloud);box-shadow:inset 0 1px 0 rgba(255,254,250,.8)}.chart-fallback{display:block;width:100%;height:100%}.chart-fallback polyline{fill:none;stroke:var(--color-evergreen);stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.chart-fallback .chart-fallback-forecast{stroke:var(--color-river);stroke-dasharray:8 7}.chart-fallback-now{stroke:var(--color-cedar);stroke-dasharray:6 6;stroke-width:2}.site-footer{display:grid;grid-template-columns:1fr;grid-gap:var(--space-4);gap:var(--space-4);margin-top:var(--space-6);padding:var(--space-5) 0 0;border-top:1px solid rgba(46,94,78,.08);color:var(--color-muted)}.site-footer nav{display:flex;flex-wrap:wrap;gap:var(--space-3)}.site-footer nav a{min-height:36px;padding:6px 10px;border-radius:999px;background:rgba(255,253,248,.52);text-decoration:none}.footer-copy{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.footer-copy p{margin:0;font-size:.82rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (min-width:760px){.dashboard-shell{padding:var(--space-8) var(--space-6) var(--space-10)}.dashboard-hero{grid-template-columns:minmax(320px,.85fr) minmax(360px,1.15fr)}.status-card{min-height:430px;padding:var(--space-8)}.status-title{font-size:1.75rem}.status-value{font-size:5.65rem}.status-value span{font-size:1.65rem}.status-value-delayed{font-size:2.65rem}.camera-card{padding:var(--space-5)}.permit-banner{grid-template-columns:1fr auto;align-items:center}.chart-header{flex-direction:row}.range-control{width:240px}.chart-canvas{height:380px}}@media (min-width:1080px){.dashboard-shell{padding-top:var(--space-10)}.status-card{min-height:460px}.status-title{font-size:2rem}.camera-frame{min-height:310px}.site-footer{grid-template-columns:1fr 1.25fr}}@media (max-width:420px){.dashboard-shell{padding-inline:var(--space-3)}.camera-card,.chart-card,.permit-banner,.status-card{padding:var(--space-4)}.status-title{font-size:1.42rem}.status-value{font-size:3.35rem}.status-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.section-heading{flex-direction:column}}@media (max-width:759px){.status-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.section-heading{flex-direction:column}.camera-time{flex:initial}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}