:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#253d36;background:#f5f6f2;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;border:0;border-radius:9px;padding:9px 13px;background:#eef1ed;color:#29483d}button:hover{background:#dce7df}button:disabled{opacity:.55;cursor:wait}a{color:#276b50;text-decoration:none}a:hover{text-decoration:underline}aside{position:fixed;inset:0 auto 0 0;width:235px;background:#fff;border-right:1px solid #e6e9e1;padding:32px 22px;display:flex;flex-direction:column}.brand{font-size:27px;font-weight:750;letter-spacing:-1px;display:flex;align-items:center;gap:9px;color:#253d36}.brand-icon{font-size:31px}.brand-dot{color:#db9a59;margin-left:-8px}.aside-label{font-size:10px;letter-spacing:1.8px;color:#99a59f;margin:48px 10px 16px}nav{display:grid;gap:9px}.nav{display:flex;align-items:center;gap:13px;background:none;width:100%;text-align:left;padding:14px;color:#6b7b74}.nav span{font-size:22px;min-width:24px}.nav.active{background:#e9f1e9;color:#28563f;font-weight:650}.nav small{margin-left:auto;background:#fff;border-radius:5px;padding:2px 6px}.aside-bottom{margin-top:auto;border-top:1px solid #edf0e8;padding-top:22px;font-size:12px;font-weight:600;color:#5f756a}.aside-bottom p{font-weight:400;color:#87968f;line-height:1.7}.live-dot{display:inline-block;width:7px;height:7px;background:#c99d62;border-radius:50%;margin-right:6px}main{margin-left:235px;padding:38px 42px;max-width:1600px}header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:#84968c;margin:0 0 9px}h1{font-family:Georgia,serif;font-weight:500;font-size:36px;letter-spacing:-1px;margin:0 0 10px}h2{font-size:18px;font-weight:650;letter-spacing:-.4px;margin:0 0 12px}h3{font-size:14px;margin:10px 0 7px}p{font-size:13px;line-height:1.6;color:#6d7e75}.subtitle{margin:0;font-size:12px}.mode-banner{background:#edf0e6;border:1px solid #e2e6d8;border-radius:10px;padding:12px 16px;font-size:12px;color:#6d765f;margin-bottom:25px}.mode-banner b{font-size:9px;letter-spacing:1px;background:#dde5ce;border-radius:5px;padding:5px 8px;margin-right:9px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stats article{background:white;border:1px solid #e6e9e1;border-radius:13px;padding:21px}.stats span{font-size:9px;letter-spacing:1.8px;color:#8f9e95;font-weight:700}.stats strong{display:block;font-size:32px;margin-top:14px;font-weight:550}.stats p{font-size:11px;margin-bottom:0}.stats em{font-style:normal;font-size:14px;color:#8b9d92}.stats .radius-stat{background:#e9efe3}.grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.card{background:#fff;border:1px solid #e4e8df;border-radius:15px;padding:25px;min-width:0}.section-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.section-head h2{margin:0}.primary{background:#315d49;color:white}.primary:hover{background:#244a38}.secondary{border:1px solid #dce3d9;background:#fff;white-space:nowrap}.text-button{background:none;font-size:12px;color:#3c7155;padding:5px}.weather{background:#fffdf6}.weather-main{display:flex;gap:25px;align-items:center;padding:12px 0}.weather-main strong{font-size:58px;font-weight:500;letter-spacing:-3px}.weather-main em{font-size:22px;letter-spacing:0;font-style:normal;margin-left:5px}.weather-main p{margin:0}.sun{font-size:65px;color:#d5ac4f}.weather-note{max-width:380px}.forecast-strip{display:flex;gap:15px;border-top:1px solid #ecebdc;padding-top:14px;margin-top:18px}.forecast-strip div{flex:1;font-size:11px;display:grid;gap:6px}.forecast-strip span{font-size:18px}.forecast-strip small{color:#7f897d}.map{border-radius:10px;overflow:hidden;background:#f1f4ec}.map svg{display:block;width:100%;max-height:300px}.gridline{stroke:#e1e7dc;fill:none;stroke-width:1}.radius-circle{fill:#dde9df;fill-opacity:.65;stroke:#88ab90;stroke-dasharray:5 5}.axis{stroke:#d2decf;stroke-width:1}.map-point{fill:#c19251;stroke:white;stroke-width:3}.home-point{fill:#345f49;stroke:white;stroke-width:4}.home-symbol{fill:white;font-size:23px}.map text{font-size:11px;fill:#6a8072}.map text.home-symbol{fill:white}.caption{font-size:10px;color:#93a095;line-height:1.7}.task-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid #edf0e8;padding:15px 0;font-size:12px}.task-row>div,.task-row>b{flex:1}.task-row small{display:block;font-size:10px;color:#93a095;margin-top:5px}.task-row button{background:none;color:#96a299;font-size:11px;padding:5px}.task-row input{accent-color:#416d51;width:16px;height:16px}.done{text-decoration:line-through;color:#9ba59d}.category{display:inline-block;font-size:9px;letter-spacing:.7px;color:#809178;background:#f0f3e9;padding:5px 8px;border-radius:5px}.report-row{border-top:1px solid #edf0e8;padding-top:15px;margin-top:15px}.report-row p{margin:5px 0}.report-row a{font-size:11px}.row-actions{display:flex;gap:5px;justify-content:flex-end}.row-actions button{font-size:10px;background:none}.empty{padding:25px 0;color:#93a095}.sources{margin-top:24px}.source-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:25px}.source-grid a{font-size:11px}.legend{font-size:11px;color:#315d49}.legend span{margin-left:20px;color:#c19251}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}progress{width:100%;height:7px;accent-color:#4b7558;margin-top:15px}label{display:grid;font-size:12px;gap:7px;color:#5e7366;margin:14px 0}input,select,textarea{border:1px solid #dce3d8;border-radius:8px;padding:10px;background:#fff;color:#29483d;min-width:0;width:100%}textarea{min-height:90px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.check{display:flex;align-items:center;gap:9px}.check input{width:auto;accent-color:#315d49}.danger{background:#f6ece6;color:#995536}.warning,#notice{background:#f7eeda;border-radius:8px;padding:13px;color:#8c6632;font-size:12px;margin-bottom:16px}dialog{border:1px solid #dce3d8;border-radius:16px;padding:30px;width:min(560px,95vw);max-height:90vh;color:#253d36}dialog::backdrop{background:#17382c66;backdrop-filter:blur(3px)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}#form-error{color:#a45339}.official-alert{font-size:12px;border-top:1px solid #e8e7d6;padding:12px 0}.official-alert p{white-space:pre-line}footer{font-size:10px;color:#9aa79d;margin-top:32px;line-height:1.6}@media(max-width:1100px){main{padding:30px 25px}.source-grid{grid-template-columns:1fr 1fr}.project-grid{grid-template-columns:1fr 1fr}.stats{gap:10px}.stats article{padding:15px}aside{width:200px}main{margin-left:200px}}@media(max-width:760px){aside{position:static;width:100%;padding:15px 20px}.brand{font-size:23px}.aside-label,.aside-bottom{display:none}nav{display:flex;gap:4px;margin-top:12px;overflow:auto}.nav{padding:9px;font-size:11px;white-space:nowrap;width:auto}.nav span{font-size:16px;min-width:0}.nav small{display:none}main{margin:0;padding:24px 16px}h1{font-size:28px}header{align-items:flex-start}header>.secondary{font-size:11px}.stats{grid-template-columns:1fr 1fr}.grid,.project-grid{grid-template-columns:1fr}.card{padding:20px}.source-grid{grid-template-columns:1fr 1fr}.section-head{flex-wrap:wrap}.mode-banner{line-height:1.7}}@media(max-width:400px){.source-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}header>.secondary{display:none}}

.traffic-frame{width:100%;height:440px;border:0;margin-top:18px;border-radius:10px}

/* Explicit palettes keep forms, map labels and status messages readable in both themes. */
:root{color-scheme:light} :root[data-theme=dark]{color-scheme:dark;color:#edf3ef;background:#111b17}
:focus-visible{outline:3px solid #276b50;outline-offset:4px}
[data-theme=dark] :focus-visible{outline-color:#f4cc81}
[data-theme=dark] aside,[data-theme=dark] .card,[data-theme=dark] .stats article,[data-theme=dark] dialog{background:#1d2b24;color:#edf3ef;border-color:#52685a}
[data-theme=dark] .weather{background:#2b2b20}
[data-theme=dark] .brand,[data-theme=dark] h1,[data-theme=dark] h2,[data-theme=dark] h3{color:#edf3ef}
[data-theme=dark] p,[data-theme=dark] label,[data-theme=dark] .caption,[data-theme=dark] .empty,[data-theme=dark] footer,[data-theme=dark] small,[data-theme=dark] .eyebrow,[data-theme=dark] .aside-label,[data-theme=dark] .stats span,[data-theme=dark] .stats em,[data-theme=dark] .aside-bottom,[data-theme=dark] .aside-bottom p,[data-theme=dark] .done{color:#bccbc2}
[data-theme=dark] a,[data-theme=dark] .text-button,[data-theme=dark] .legend{color:#a7e4bf}
[data-theme=dark] button{background:#334b3d;color:#edf3ef}
[data-theme=dark] button:hover{background:#456650}
[data-theme=dark] .nav{background:transparent;color:#bccbc2}
[data-theme=dark] .nav.active,[data-theme=dark] .mode-banner,[data-theme=dark] .radius-stat{background:#2c4234;color:#edf3ef;border-color:#52685a}
[data-theme=dark] .mode-banner b,[data-theme=dark] .category,[data-theme=dark] .nav small{background:#3c5543;color:#edf3ef}
[data-theme=dark] .primary{background:#a7e4bf;color:#112c1c}
[data-theme=dark] .primary:hover{background:#c3f2d3}
[data-theme=dark] .secondary,[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:#14221a;color:#edf3ef;border-color:#7b9483}
[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:#bccbc2;opacity:1}
[data-theme=dark] .task-row,[data-theme=dark] .report-row,[data-theme=dark] .official-alert,[data-theme=dark] .forecast-strip,[data-theme=dark] .aside-bottom{border-color:#52685a}
[data-theme=dark] .task-row button,[data-theme=dark] .row-actions button{color:#c4e4d0}
[data-theme=dark] .warning,[data-theme=dark] #notice{background:#493919;color:#ffe0a0}
[data-theme=dark] .danger{background:#543025;color:#ffceba}
[data-theme=dark] #form-error{color:#ffbca8}
[data-theme=dark] .map{background:#14221a}
[data-theme=dark] .gridline,[data-theme=dark] .axis{stroke:#405848}
[data-theme=dark] .radius-circle{fill:#34543e;stroke:#a7d5b2}
[data-theme=dark] .map text{fill:#d1e2d7}
[data-theme=dark] .map-point{fill:#f4cc81;stroke:#14221a}
[data-theme=dark] .home-point{fill:#a7e4bf;stroke:#14221a}
[data-theme=dark] .map text.home-symbol{fill:#112c1c}
[data-theme=dark] .legend span{color:#f4cc81}
[data-theme=dark] dialog::backdrop{background:#0009}
