:root{--ink:#2e2419;--muted:#6b5d4d;--line:#e4dccf;--bg:#f6f1e8;--surface:#fffdf9;--green:#2f6b3a;--green-dark:#24542d;--green-chart:#3f7a47;--green-tint:#e8f1e4;--green-line:#b9d3b1;--brown:#7a5230;--brown-dark:#5a3b21;--brown-tint:#f3ebe0;--brown-line:#dccab3;--button:#f5efe5;--button-hover:#ece3d4;--accent:var(--green);--good:#2f6b3a;--bad:#b3261e;color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg)}input[type=range],input[type=checkbox],input[type=radio]{accent-color:var(--green)}a{color:var(--green)}a:hover{color:var(--green-dark)}.splash{height:100%;color:var(--muted);text-align:center;place-items:center;padding:2rem;display:grid}.splash.error{color:var(--bad)}.app{grid-template-columns:340px 1fr;height:100%;display:grid}.map{width:100%;height:100%}.sidebar{border-right:1px solid var(--line);background:var(--surface);overflow-y:auto}.sidebar header,.sidebar section,.sidebar footer{border-bottom:1px solid var(--line);padding:12px 16px}.sidebar h1{margin:0;font-size:18px}.sidebar h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:11px}.sidebar h3{margin:10px 0 4px;font-size:12px}.sub{color:var(--muted);margin-bottom:8px}.scenario-name{width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-weight:600}.hint{color:var(--muted);margin:8px 0 0;font-size:12.5px;line-height:1.4}footer p{color:var(--muted);margin:0 0 6px;font-size:11.5px;line-height:1.4}button{font:inherit;color:var(--ink);cursor:pointer;border:1px solid var(--brown-line);background:var(--button);border-radius:6px;padding:5px 10px}button:hover{background:var(--button-hover)}button.danger{color:var(--bad)}button.link{text-align:left;color:inherit;background:0 0;border:none;padding:0}button.link:hover{text-decoration:underline}.seg{display:flex}.seg button{border-radius:0;flex:1;margin-left:-1px}.seg button:first-child{border-radius:6px 0 0 6px;margin-left:0}.seg button:last-child{border-radius:0 6px 6px 0}.seg button.on{background:var(--green);border-color:var(--green);color:#fff;position:relative}.row{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.stats{border-collapse:collapse;width:100%}.stats th{text-align:left;color:var(--muted);padding:4px 8px 4px 0;font-weight:400}.stats td{text-align:right;white-space:nowrap;font-weight:600}.good{color:var(--good)}.bad{color:var(--bad)}.warn{color:#8c1d16;background:#fbeeec;border:1px solid #efc4bf;border-radius:6px;margin-bottom:8px;padding:6px 8px;font-size:12.5px}.streets ul,.ivs{margin:0;padding:0;list-style:none}.streets li{justify-content:space-between;padding:2px 0;font-size:13px;display:flex}.ivs li{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:center;padding:3px 0;display:flex}.ivs li.sel{background:var(--green-tint)}.ivs .x{color:var(--muted);background:0 0;border:none;padding:0 4px;font-size:16px}.kv{justify-content:space-between;gap:8px;padding:2px 0;display:flex}.kv span{color:var(--muted)}.slider{display:block}.slider input{width:100%}.legend{margin-top:10px;font-size:12px}.ramp{border-radius:4px;height:8px}.ramp.flow{background:linear-gradient(90deg,#c9ccd2,#f6d55c 8%,#f28c28 35%,#c8102e)}.ramp.change{background:linear-gradient(90deg,#1f63c6,#8fb4ea 40%,#c9ccd2 50%,#f2a07b 60%,#c8102e)}.ramp-labels{color:var(--muted);justify-content:space-between;margin:2px 0 6px;display:flex}.legend-row{align-items:center;gap:6px;padding:1px 0;display:flex}.sw{border-radius:3px;width:18px;height:6px;display:inline-block}.sw.major{background:#6b7280}.sw.filter{background:#2f6b3a;border:2px solid #fff;border-radius:50%;width:12px;height:12px;box-shadow:0 0 0 1px #2f6b3a}.sw.modified{opacity:.6;background:#8b5a2b;height:8px}.sw.cutoff{opacity:.6;background:#e00000;height:8px}.map-loading{color:var(--muted);background:var(--bg);place-items:center;display:grid}.row.tight{flex-wrap:nowrap;margin:0 0 6px}.scenario-pick{min-width:0;font:inherit;color:var(--ink);border:1px solid var(--brown-line);background:var(--surface);border-radius:6px;flex:1;padding:5px 6px}.save-state{color:var(--muted);margin-top:4px;font-size:11.5px}.save-state.unsaved,.save-state.saving{color:var(--brown)}.save-state.error{color:var(--bad)}.sw.diverter{background:#2f6b3a;width:16px;height:5px;transform:rotate(-35deg);box-shadow:0 0 0 1.5px #fff,0 0 0 2.5px #c9ccd2}.seg button{padding-left:4px;padding-right:4px}a.button{font:inherit;color:var(--ink);border:1px solid var(--brown-line);background:var(--button);white-space:nowrap;border-radius:6px;padding:5px 10px;text-decoration:none}a.button:hover{background:var(--button-hover);color:var(--ink)}button.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}button.primary:hover{background:var(--green-dark)}button:disabled{opacity:.5;cursor:not-allowed}.chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.chip{background:var(--green-tint);border:1px solid var(--green-line);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:2px;padding:1px 4px 1px 10px;display:inline-flex}.chip .x{color:var(--muted);background:0 0;border:none;padding:0 4px;font-size:15px}.check{align-items:center;gap:6px;margin-bottom:6px;display:flex}.sub b{color:var(--ink)}.titlebar{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.account{color:var(--muted);white-space:nowrap;font-size:12.5px}.account a,.notice a,.lineage a,.forks a{color:var(--accent)}.notice{background:var(--brown-tint);border:1px solid var(--brown-line);color:var(--brown-dark);border-radius:6px;margin-top:6px;padding:6px 8px;font-size:12.5px;line-height:1.4}.share{margin:0 0 6px}.share input{width:100%;font:inherit;border:1px solid var(--accent);border-radius:6px;padding:5px 8px;font-size:12.5px}.share .hint{margin-top:4px;display:block}.lineage{margin:0 0 6px;font-size:13px}.forks{margin:0;padding:0;font-size:13px;list-style:none}.forks li{border-bottom:1px dashed var(--line);padding:3px 0}.muted{color:var(--muted)}.auth-page{max-width:380px;margin:8vh auto;padding:0 16px}.auth-page h1{margin:0 0 4px;font-size:22px}.auth-page form{gap:10px;margin-top:14px;display:grid}.auth-page label{color:var(--muted);gap:4px;font-size:13px;display:grid}.auth-page input{font:inherit;border:1px solid var(--brown-line);color:var(--ink);background:var(--surface);border-radius:6px;padding:8px 10px}.auth-page input:focus,.scenario-name:focus,.scenario-pick:focus,.share input:focus{outline:2px solid var(--green-line);outline-offset:0;border-color:var(--green)}.auth-page .primary,.auth-page .google{padding:8px 12px}.google{width:100%;color:var(--ink);border:1px solid var(--brown-line);background:var(--surface);border-radius:6px;justify-content:center;align-items:center;gap:8px;font-weight:600;text-decoration:none;display:flex}.google:hover{background:var(--button-hover);color:var(--ink)}.or{color:var(--muted);align-items:center;gap:8px;margin:14px 0 0;font-size:12px;display:flex}.or:before,.or:after{content:"";border-top:1px solid var(--line);flex:1}.profile{max-width:760px;margin:0 auto;padding:32px 16px}.profile h1{margin:0;font-size:24px}.profile table{border-collapse:collapse;width:100%;margin-top:16px}.profile th,.profile td{text-align:left;border-bottom:1px solid var(--line);padding:8px 6px;font-size:14px}.profile th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:400}.profile a{color:var(--accent)}.tabs{gap:0;margin-top:16px;display:flex}button.link.accent{color:var(--accent)}.small-link{color:var(--accent);justify-self:start;font-size:12.5px}.titlebar+.notice{margin:0 0 8px}.logo{color:var(--ink);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.logo:hover{color:var(--ink)}.logo-mark{flex:none;display:inline-block}.logo-mark svg{width:100%;height:100%;display:block}.logo-word{letter-spacing:-.01em;color:var(--brown-dark);font-size:18px;font-weight:700}.logo-word b{color:var(--green);margin-left:1px}.auth-page{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:24px}.auth-page .logo{margin-bottom:18px}.brand{margin:0}.profile .logo{margin-bottom:20px}.admin{max-width:1120px;margin:0 auto;padding:20px 16px 48px}.admin-head{align-items:center;gap:10px;margin-bottom:20px;display:flex}.admin-head .spacer{flex:1}.admin-tag{text-transform:uppercase;letter-spacing:.08em;color:var(--brown);background:var(--brown-tint);border:1px solid var(--brown-line);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.admin h2{color:var(--ink);margin:0 0 8px;font-size:15px}.admin code{background:var(--brown-tint);border-radius:4px;padding:1px 4px}.tiles{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px;display:grid}.tile,.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px}.tile{padding:14px 16px}.tile-label{color:var(--muted);font-size:12px}.tile-value{color:var(--ink);font-variant-numeric:tabular-nums;margin:4px 0 2px;font-size:30px;font-weight:700;line-height:1.15}.tile-note{color:var(--muted);font-size:12px}.panel{min-width:0;margin-bottom:16px;padding:16px}.panel-row{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.panel-row .panel{margin-bottom:16px}.small{margin:8px 0 0;font-size:12px}.chart-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.chart-head p{margin:0}.chart-plot{position:relative}.chart-plot svg{width:100%;height:auto;display:block;overflow:visible}.chart .bar{fill:var(--green-chart);transition:opacity .1s}.chart .bar.dim{opacity:.45}.chart .grid{stroke:var(--line);stroke-width:1px}.chart .axis{stroke:var(--brown-line);stroke-width:1px}.chart .tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:9px}.chart .hit{fill:#0000;cursor:default}.tooltip{background:var(--surface);border:1px solid var(--brown-line);white-space:nowrap;pointer-events:none;color:var(--ink);border-radius:6px;padding:5px 8px;font-size:12px;position:absolute;transform:translate(-50%,calc(-100% - 8px));box-shadow:0 2px 6px #2e24191f}.table-scroll{max-height:520px;overflow:auto}.data{border-collapse:collapse;width:100%;font-size:13px}.data th{text-align:left;color:var(--muted);border-bottom:1px solid var(--brown-line);background:var(--surface);white-space:nowrap;padding:6px 8px;font-size:11.5px;font-weight:600;position:sticky;top:0}.data td{border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}.data .num{text-align:right;font-variant-numeric:tabular-nums}.data tbody tr:hover{background:var(--green-tint)}.badge{color:var(--green);background:var(--green-tint);border:1px solid var(--green-line);white-space:nowrap;border-radius:999px;margin-left:4px;padding:0 6px;font-size:10.5px;font-weight:600}.warn-badge{color:var(--brown-dark);background:var(--brown-tint);border-color:var(--brown-line)}.search{font:inherit;border:1px solid var(--brown-line);background:var(--surface);color:var(--ink);border-radius:6px;min-width:220px;padding:5px 8px}.search:focus{outline:2px solid var(--green-line);border-color:var(--green)}
