:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f8f9fb;--canvas:#fbfcfd;--hover:#f3f6fb;--text:#1c2430;--muted:#5d6878;--border:#d9dee6;--border-strong:#b9c1cd;--accent:#2456d6;--accent-bg:#eaf0ff;--accent-text:#fff;--focus:#2456d6;--danger:#b42318;--danger-bg:#fdecea;--grid-dot:#dde2ea;--tone-none:#8a94a3;--tone-none-bg:#eef0f3;--tone-none-ink:#4a5361;--tone-plan:#5b7cfa;--tone-plan-bg:#e8edff;--tone-plan-ink:#2a3f9e;--tone-work:#d68a00;--tone-work-bg:#fff2d9;--tone-work-ink:#744800;--tone-test:#0f9488;--tone-test-bg:#daf4f1;--tone-test-ink:#0b5c55;--tone-live:#16a34a;--tone-live-bg:#dcfce7;--tone-live-ink:#14532d;--zone-0:#2456d6;--zone-1:#7c3aed;--zone-2:#0f9488;--zone-3:#c2410c;--zone-4:#be185d;--zone-5:#15803d;--zone-6:#475569;--zone-7:#a16207;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#111418;--surface:#1a1f26;--surface-2:#161b21;--canvas:#0f1318;--hover:#222934;--text:#e6e9ee;--muted:#9aa4b2;--border:#2c333d;--border-strong:#3d4653;--accent:#6b8cff;--accent-bg:#1c2544;--accent-text:#0b1020;--focus:#8aa4ff;--danger:#ff8a80;--danger-bg:#3a1714;--grid-dot:#222933;--tone-none:#6f7887;--tone-none-bg:#262c35;--tone-none-ink:#c3cad4;--tone-plan:#7d97ff;--tone-plan-bg:#1f2847;--tone-plan-ink:#c7d2ff;--tone-work:#f0a830;--tone-work-bg:#3a2a0c;--tone-work-ink:#ffd89a;--tone-test:#2cc4b4;--tone-test-bg:#0f3531;--tone-test-ink:#a6efe6;--tone-live:#34d17a;--tone-live-bg:#0f3320;--tone-live-ink:#a7f3c4;--zone-0:#7d97ff;--zone-1:#a78bfa;--zone-2:#2cc4b4;--zone-3:#fb923c;--zone-4:#f472b6;--zone-5:#4ade80;--zone-6:#94a3b8;--zone-7:#facc15}}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent)}h1,h2{margin:0 0 12px}h1{font-size:1.5rem}h2{font-size:1.05rem}.center{place-items:center;min-height:100vh;padding:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:20px}.sign-in{gap:12px;width:100%;max-width:360px;display:grid}label{gap:4px;font-size:.9rem;display:grid}input,select,textarea{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;padding:8px 10px}textarea{resize:vertical}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:1px}button,a.button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--accent-text);cursor:pointer;border-radius:6px;padding:8px 14px;text-decoration:none;display:inline-block}button.secondary,a.button.secondary{background:var(--surface);color:var(--text);border-color:var(--border)}button.secondary:hover:not(:disabled){border-color:var(--border-strong);background:var(--hover)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button:disabled{opacity:.6;cursor:default}button.link{color:var(--accent);text-align:left;background:0 0;border:none;justify-self:start;padding:0}button.link:hover{text-decoration:underline}button.icon{color:var(--muted);background:0 0;border:none;padding:2px 8px;font-size:1.5rem;line-height:1}.stack{gap:12px;display:grid}.divider{color:var(--muted);align-items:center;gap:10px;font-size:.85rem;display:flex}.divider:before,.divider:after{content:"";border-top:1px solid var(--border);flex:1}.muted{color:var(--muted)}.error{color:var(--danger)}.mono{font-family:ui-monospace,Consolas,monospace;font-size:.85em}.nowrap{white-space:nowrap}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 20px;display:flex}.brand{color:var(--text);font-size:1.05rem;font-weight:700;text-decoration:none}.spacer{flex:1}.badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:.75rem}.content{max-width:1480px;margin:0 auto;padding:20px 24px 40px}.page-pad{max-width:1040px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row input{flex:1;min-width:180px}.row.end{justify-content:flex-end}.grow{flex:1}.grow-right{margin-right:auto}.notice{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:10px 14px}.notice.ok{border-color:var(--tone-live);background:var(--tone-live-bg);color:var(--tone-live-ink)}.notice.error{border-color:var(--danger);background:var(--danger-bg)}.project-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.project-card{color:var(--text);gap:6px;margin:0;text-decoration:none;display:grid}.project-card:hover{border-color:var(--accent)}.project-head{margin-bottom:16px}.crumbs{color:var(--muted);gap:6px;margin-bottom:2px;font-size:.85rem;display:flex}.project-head h1{margin:0}.description{margin:4px 0 0}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-top:12px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;padding:10px 14px;font-weight:600;text-decoration:none}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.version-banner{border-color:var(--accent);background:var(--accent-bg);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.empty-state p{max-width:640px}.tone-none{--tc:var(--tone-none);--tb:var(--tone-none-bg);--ti:var(--tone-none-ink)}.tone-plan{--tc:var(--tone-plan);--tb:var(--tone-plan-bg);--ti:var(--tone-plan-ink)}.tone-work{--tc:var(--tone-work);--tb:var(--tone-work-bg);--ti:var(--tone-work-ink)}.tone-test{--tc:var(--tone-test);--tb:var(--tone-test-bg);--ti:var(--tone-test-ink)}.tone-live{--tc:var(--tone-live);--tb:var(--tone-live-bg);--ti:var(--tone-live-ink)}.stage{background-color:var(--tb);color:var(--ti);white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:3px 10px;font-size:.8rem;font-weight:600;display:inline-block}select.stage{cursor:pointer;padding:3px 6px 3px 10px}select.stage:hover{border-color:var(--tc)}.flag{color:var(--danger);background:var(--danger-bg);white-space:nowrap;border-radius:999px;margin-left:8px;padding:1px 7px;font-size:.72rem;font-weight:700}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toolbar p{margin:0}.segmented{border:1px solid var(--border);background:var(--surface);border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{color:var(--text);background:0 0;border:none;border-radius:0;padding:7px 14px}.segmented button+button{border-left:1px solid var(--border)}.segmented button.active{background:var(--accent);color:var(--accent-text)}.count{opacity:.75;margin-left:2px;font-size:.85em}.filters{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;display:flex}.filters input[type=search]{flex:220px;max-width:360px}label.check,label.inline{align-items:center;gap:6px;font-size:.9rem;display:inline-flex}.progress{padding:14px 18px}.progress-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.progress-head h2{margin:0;font-size:.95rem}.progress-row{grid-template-columns:80px minmax(0,1fr) 100px;align-items:center;gap:12px;margin:6px 0;font-size:.88rem;display:grid}.progress-label{font-weight:600}.progress-value{color:var(--muted);text-align:right}.bar{background:var(--tone-none-bg);border-radius:7px;height:14px;display:flex;overflow:hidden}.segment{background:var(--tc);min-width:3px}.legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.swatch{background:var(--tc);vertical-align:-1px;border-radius:3px;width:10px;height:10px;display:inline-block}.table-wrap{border:1px solid var(--border);background:var(--surface);border-radius:10px;max-height:calc(100vh - 220px);overflow:auto}table.grid{border-collapse:separate;border-spacing:0;width:100%}table.grid th,table.grid td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 10px}table.grid th{z-index:1;background:var(--surface-2);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap;font-size:.75rem;position:sticky;top:0}table.grid tbody tr:hover td{background:var(--hover)}table.grid tbody tr:last-child td{border-bottom:none}.num,table.grid th.num{text-align:right}.stage-col{width:1%}dialog.drawer{border:none;border-left:1px solid var(--border);background:var(--surface);width:min(580px,100vw);max-width:100vw;height:100vh;max-height:100vh;color:var(--text);margin:0 0 0 auto;padding:0}dialog.drawer::backdrop{background:#0a0f1959}.drawer-panel{flex-direction:column;height:100%;display:flex}.drawer-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:14px 20px;display:flex}.drawer-head h2{flex:1;margin:0}.drawer-body{flex:1;padding:16px 20px;overflow:auto}.drawer-foot{border-top:1px solid var(--border);padding:12px 20px}.drawer-foot p{margin:0 0 8px}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-grid .wide,.field.wide{grid-column:1/-1}.form-grid p{margin:0}.field>span{font-size:.85rem;font-weight:600}.field small{font-size:.78rem}fieldset.stages{border:1px solid var(--border);border-radius:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:0;padding:10px 14px 14px;display:grid}fieldset.stages legend{padding:0 4px;font-size:.85rem;font-weight:600}.stage-field span{color:var(--muted);font-size:.8rem;font-weight:600}@media (width<=560px){.form-grid{grid-template-columns:1fr}}.settings>fieldset{border:none;min-width:0;margin:0;padding:0}.edit-list{gap:8px;margin:0 0 12px;padding:0;list-style:none;display:grid}.edit-list li{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.edit-list li>input{flex:0 300px}.order{gap:4px;display:inline-flex}.order button{padding:4px 9px;line-height:1.2}.save-bar{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:12px 16px;display:flex;position:sticky;bottom:12px;box-shadow:0 6px 24px #00000014}.timeline,.version-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.timeline>li{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px}.timeline-head{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.changes{color:var(--muted);margin:6px 0 0;padding-left:18px;font-size:.9rem}.version-list li{align-items:center;gap:12px;margin:0;padding:14px 18px;display:flex}.version-list li.current{border-color:var(--accent)}.map-toolbar{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:10px;display:flex}.layer-toggles{border:none;flex-wrap:wrap;gap:6px;margin:0;padding:0;display:flex}.layer-chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:3px 10px 3px 6px}.map-layout{grid-template-columns:minmax(0,1fr) 340px;gap:12px;height:calc(100vh - 330px);min-height:420px;display:grid}.map-canvas{border:1px solid var(--border);background:var(--canvas);border-radius:12px;position:relative;overflow:hidden}.map-canvas.connecting{outline:2px dashed var(--accent);outline-offset:-2px}.map-svg{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;width:100%;height:100%;font-family:inherit;display:block}.map-svg:active{cursor:grabbing}.grid-dot{fill:var(--grid-dot)}.zoom-controls{gap:6px;display:flex;position:absolute;bottom:12px;right:12px}.zoom-controls button{min-width:36px;padding:6px 10px;box-shadow:0 2px 8px #00000014}.zone-0{--zc:var(--zone-0)}.zone-1{--zc:var(--zone-1)}.zone-2{--zc:var(--zone-2)}.zone-3{--zc:var(--zone-3)}.zone-4{--zc:var(--zone-4)}.zone-5{--zc:var(--zone-5)}.zone-6{--zc:var(--zone-6)}.zone-7{--zc:var(--zone-7)}.zone rect{fill:var(--zc);fill-opacity:.06;stroke:var(--zc);stroke-opacity:.45;stroke-width:1.5px}.zone-name{fill:var(--zc);font-size:15px;font-weight:700}.box{cursor:pointer;outline:none}.box.movable{cursor:grab}.box.dragging{cursor:grabbing}.box-bg{fill:var(--surface);stroke:var(--border-strong);stroke-width:1.2px}.box:hover .box-bg{stroke:var(--zc)}.box-stripe{fill:var(--zc)}.box-name{fill:var(--text);font-size:13.5px;font-weight:600}.box-sub{fill:var(--muted);font-size:11.5px}.box.selected .box-bg{stroke:var(--accent);stroke-width:2.5px}.box:focus-visible .box-bg{stroke:var(--focus);stroke-width:3px}.box.dim{opacity:.35}.box.quiet{opacity:.45}.box.dragging .box-bg{stroke:var(--accent);stroke-width:2px}.box.connect-source .box-bg{stroke:var(--accent);stroke-width:2.5px;stroke-dasharray:5 3}.connecting .box:not(.connect-source):hover .box-bg{stroke:var(--accent);stroke-width:2.5px}.badge circle{fill:var(--tc);stroke:var(--surface);stroke-width:2px}.badge text{fill:#fff;text-anchor:middle;font-size:11px;font-weight:700}.badge.blocked circle{stroke:var(--danger);stroke-width:2.5px}.link-hit{fill:none;stroke:#0000;stroke-width:14px;cursor:pointer;pointer-events:stroke}.link-line,.link-casing{fill:none;stroke:var(--tc);stroke-width:2.4px;stroke-linecap:round;pointer-events:none}.link.tone-none .link-line{stroke-width:1.6px}.link.layer-sec .link-line{stroke-dasharray:1.5 5;stroke-width:2.8px}.link.layer-id .link-line{stroke-dasharray:9 4 2 4}.link-casing{stroke-width:6.5px}.link.layer-net .link-line{stroke:var(--canvas);stroke-width:2.2px}.link:hover .link-line{stroke-width:3.2px}.link.selected .link-line{stroke-width:3.6px}.link.selected .link-casing{stroke-width:8.5px}.link.layer-net.selected .link-line,.link.layer-net:hover .link-line{stroke-width:2.6px}.link.dim{opacity:.15}.link-label{fill:var(--muted);text-anchor:middle;paint-order:stroke;stroke:var(--canvas);stroke-width:4px;stroke-linejoin:round;pointer-events:none;font-size:11px}.arrow{fill:var(--tc)}.blocked-mark circle{fill:var(--danger);stroke:var(--surface);stroke-width:2px}.blocked-mark text{fill:#fff;text-anchor:middle;font-size:11px;font-weight:800}.map-panel{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:16px;overflow:auto}.map-panel h2{margin-bottom:4px;font-size:1.05rem}.map-panel h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:18px 0 8px;font-size:.75rem}.map-panel p{margin:6px 0}.item-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.item-row{text-align:left;background:var(--surface-2);width:100%;color:var(--text);border:1px solid var(--border);border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:8px 10px;font-size:.9rem;display:grid}.item-row:hover{border-color:var(--accent)}.item-row-title,.item-row-meta{grid-column:1}.item-row-meta{font-size:.8rem}.item-row .stage{grid-area:1/2/span 2;align-self:center}.map-legend{gap:6px;margin:0;padding:0;font-size:.88rem;list-style:none;display:grid}.map-legend li{align-items:center;gap:8px;display:flex}.map-legend svg{flex:none}.legend-line{stroke:var(--tc,var(--muted));stroke-width:2.4px;stroke-linecap:round}.legend-line.layer-sec{stroke-dasharray:1.5 5;stroke-width:2.8px}.legend-line.layer-id{stroke-dasharray:9 4 2 4}.legend-line.casing{stroke-width:6.5px}.legend-line.inner{stroke:var(--surface);stroke-width:2.2px}@media (width<=900px){.map-layout{grid-template-columns:1fr;height:auto}.map-canvas{height:70vh}.content{padding:16px}}.top-nav{gap:4px;margin-left:12px;display:flex}.top-nav a{color:var(--muted);border-radius:6px;padding:6px 10px;font-weight:600;text-decoration:none}.top-nav a:hover{color:var(--text);background:var(--hover)}.top-nav a.active{color:var(--text);background:var(--accent-bg)}.people-page h2,.people-tab h2{margin-top:20px}.people-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.person{gap:8px;margin:0;padding:14px 18px;display:grid}.person-head{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.access-lines{gap:2px;margin:0;padding-left:18px;display:grid}.small{font-size:.85rem}.row.between{justify-content:space-between}.grant-row{border:1px solid var(--border);border-radius:8px;gap:10px;margin:0;padding:12px 14px;display:grid}.scope-choice{gap:6px;display:grid}.workstream-checks{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px 12px;padding-left:24px;display:grid}.add-role{justify-self:start}.local-sign-in{border-top:1px dashed var(--border);padding-top:12px}.sign-in textarea,.drawer textarea{width:100%}.page-head{align-items:center;gap:12px;margin-bottom:6px;display:flex}.page-head h1{margin:0}.title-row{align-items:center;gap:10px;display:flex}.demo-card{border-color:var(--accent);background:var(--accent-bg);flex-wrap:wrap;align-items:center;gap:16px;display:flex}.demo-text{flex:360px}.demo-text p{margin:6px 0 0}
