:root{--bg:#0f1115;--panel:#171a21;--line:#272c36;--txt:#e7eaf0;--muted:#9aa3b2;--accent:#4ea1ff;--good:#5fd38d;--warn:#ff8a8a}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--txt);margin:0;font-family:ui-sans-serif,system-ui,sans-serif}main{grid-template-columns:360px 1fr;height:100vh;display:grid}#map{height:100vh;position:relative}#panel{background:var(--panel);border-right:1px solid var(--line);padding:18px;overflow-y:auto}h1{letter-spacing:-.02em;margin:0;font-size:20px}.sub{color:var(--muted);margin:4px 0 0;font-size:12.5px}h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 8px;font-size:12px}section{border-top:1px solid var(--line);padding-top:6px}header{border:0}.btn-row{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.btn{color:var(--txt);border:1px solid var(--line);cursor:pointer;background:#222734;border-radius:8px;padding:8px 10px;font-size:13px}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:wait}.btn.primary{background:var(--accent);color:#05121f;border:0;width:100%;padding:11px;font-weight:600}.btn.ghost{color:var(--muted);background:0 0}.btn.sm{padding:6px 8px;font-size:12px}.sel{color:var(--txt);border:1px solid var(--line);background:#11141b;border-radius:6px;flex:1;padding:7px;font-size:13px}.field{color:var(--muted);margin:8px 0;font-size:13px;display:block}.field input{width:100%;color:var(--txt);border:1px solid var(--line);background:#11141b;border-radius:6px;margin-top:4px;padding:6px}input[type=range]{accent-color:var(--accent);flex:1}.hint{color:var(--muted);min-height:1em;font-size:12px}.status{margin-top:10px;font-size:13px;line-height:1.5}.status .done{color:var(--good);font-weight:600}.status .warn,.warn{color:var(--warn)}.status .dim,.dim{color:var(--muted);font-size:11.5px}.meta{color:var(--muted);margin-top:6px;font-size:12px}.spinner{border:2px solid var(--muted);border-top-color:var(--accent);vertical-align:-1px;border-radius:50%;width:11px;height:11px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.spark-wrap{border:1px solid var(--line);background:#11141b;border-radius:6px;padding:4px}#spark{width:100%;height:48px}.time-row{align-items:center;gap:8px;margin:8px 0;display:flex}#hour-label{font-variant-numeric:tabular-nums;min-width:44px}.chk{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:flex}.metric-row{gap:14px;margin:6px 0;display:flex}.field.sm2{margin:4px 0;font-size:12px}.field.sm2 input{width:84px;margin:0 4px;padding:4px 6px;display:inline-block}.field.sm{flex:1;margin:4px 0;font-size:12px}.field.sm input{width:100%;padding:5px 6px}.good{color:var(--good)}.plan-table{margin-top:8px}.stand-block{margin:8px 0}.stand-h{border-left:3px solid var(--accent);padding:4px 0 4px 8px;font-size:12.5px;font-weight:600}.sched{color:var(--muted);margin:4px 0 0;padding-left:18px;font-size:12px;line-height:1.6}.sched li{margin:2px 0}.sched span{color:var(--accent);font-variant-numeric:tabular-nums}.streets{margin:10px 0 0;padding-left:18px;font-size:13px}.streets li{justify-content:space-between;margin:3px 0;display:flex}.streets li span{color:var(--accent);font-variant-numeric:tabular-nums}.tip{pointer-events:none;border:1px solid var(--line);color:var(--txt);z-index:5;background:#0b0d12;border-radius:5px;padding:3px 7px;font-size:12px;position:absolute}.legend{z-index:6;backdrop-filter:blur(6px);border:1px solid var(--line);pointer-events:none;background:#0b0d12d1;border-radius:8px;min-width:168px;padding:8px 10px;position:absolute;bottom:30px;left:14px}.legend .lg-title{color:var(--txt);margin-bottom:5px;font-size:11px;font-weight:600}.legend .lg-bar{border-radius:4px;height:8px}.legend .lg-scale{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:3px;font-size:10.5px;display:flex}.kbd-hint{z-index:6;border:1px solid var(--line);color:var(--muted);pointer-events:none;background:#0b0d12b3;border-radius:6px;padding:4px 8px;font-size:11px;position:absolute;top:14px;left:14px}#peakquiet a{color:var(--accent);text-decoration:none}#peakquiet a:hover{text-decoration:underline}footer{border-top:1px solid var(--line);margin-top:16px}.fine{color:var(--muted);font-size:10.5px;line-height:1.5}a{color:var(--accent)}@media (width<=720px){main{grid-template-rows:auto 60vh;grid-template-columns:1fr}#map,#panel{height:auto}}
