:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#183447;background:#f3f6f8;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #ced9df;border-radius:7px;padding:9px 14px;background:white;color:#214154;font-size:14px}button:hover{background:#eaf4f4}button:disabled{opacity:.4;cursor:default}.primary{background:#176a62;color:white;border-color:#176a62}.primary:hover{background:#11554f}header{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #dce4e9;background:white}.brand{display:flex;gap:12px;align-items:center;font-size:21px;font-weight:700}.brand small{font-size:11px;letter-spacing:2px;color:#708793;font-weight:500;margin-left:16px}.logo{background:#17354a;color:#67d2ba;border-radius:9px;padding:4px 11px;font-size:26px}.actions{display:flex;gap:10px}.shell{display:grid;grid-template-columns:230px 1fr;min-height:calc(100vh - 78px)}aside{background:#153247;color:#c3d1db;padding:30px 18px;display:flex;flex-direction:column}.overline{font-size:12px;letter-spacing:2px;margin:0 14px 15px;color:#89a4b5}nav button{display:flex;justify-content:space-between;width:100%;margin:4px 0;background:transparent;color:#c4d5df;border:0;text-align:left;padding:13px}nav button:hover,nav button.active{background:#294c60;color:white}nav b{font-size:12px;font-weight:500;opacity:.7}.aside-foot{margin-top:auto;padding:50px 12px 0;font-size:14px;line-height:1.6}.aside-foot button{margin:5px 0;width:100%;background:transparent;color:#dce8ee;border-color:#486172}.aside-foot p{color:#9db4c1}main{padding:36px 40px;min-width:0}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:#65818d}.heading{display:flex;justify-content:space-between;align-items:center;margin:13px 0 25px;gap:20px}h1{font-size:32px;margin:0;letter-spacing:-1px}p{line-height:1.6}.heading p{color:#6c8290;font-size:14px;margin:8px 0 0}.summary{display:flex;gap:16px;margin-bottom:24px}.metric{background:white;border:1px solid #dce5e9;border-radius:9px;padding:15px 20px;flex:1;font-size:13px;color:#69808c}.metric strong{display:block;color:#17384b;font-size:25px;font-weight:600;margin-top:5px}#tools{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:16px}input,select,textarea{border:1px solid #cbd8df;border-radius:6px;background:white;padding:10px;color:#17384b;max-width:100%}#search{width:340px;font-size:14px}#save-state{font-size:12px;color:#718591}section{background:white;border:1px solid #dce5e9;border-radius:10px;overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:14px}th{background:#f8fafb;color:#69808d;font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:14px 18px;border-bottom:1px solid #dce5e9}td{padding:13px 18px;border-bottom:1px solid #edf1f3;vertical-align:middle}tr:last-child td{border-bottom:0}td small{display:block;color:#77909d;font-size:12px;margin-top:4px}.row-actions{white-space:nowrap}.row-actions button{font-size:12px;padding:5px 8px;margin-left:5px}.delete{color:#a44d46}.node{display:flex;gap:8px;align-items:center}.toggle{padding:0;width:23px;height:25px;border:0;background:transparent}.badge{display:inline-block;border-radius:5px;padding:4px 7px;background:#e9f5f0;color:#23755d;font-size:12px}.warn{background:#fff1d7;color:#8d6114}.empty{padding:45px;color:#718591;text-align:center}.panel{padding:25px;max-width:1000px}.panel h2{font-size:19px;margin-top:0}.panel label{display:block;margin:18px 0 8px;font-size:14px}.panel textarea{width:100%;min-height:180px;font-family:monospace;font-size:13px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel .actions{flex-wrap:wrap;margin:20px 0}#notice:not(:empty){padding:12px 16px;border-radius:6px;background:#e4f2ed;margin-bottom:20px;font-size:14px}.error{color:#a53737;white-space:pre-wrap}dialog{border:1px solid #cbd8df;border-radius:14px;width:580px;max-width:95vw;padding:26px;color:#183447}dialog::backdrop{background:#122b4260}.dialog-head,.dialog-actions{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font-size:22px;margin:0}.dialog-head button{border:0;font-size:23px}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:24px}#fields label{display:block;margin:18px 0 6px;font-size:14px}#fields input,#fields select{width:100%}#fields .hint{font-size:12px;color:#748792}code{background:#eef3f6;padding:2px 4px}details{margin:15px 0}summary{cursor:pointer}a{color:#126b65}@media(max-width:850px){header{padding:14px;height:auto;gap:12px;flex-wrap:wrap}.brand small{display:none}.shell{grid-template-columns:1fr}aside{padding:12px}nav{display:flex;flex-wrap:wrap}nav button{width:auto}.overline,.aside-foot{display:none}main{padding:22px 15px}.summary{gap:8px}.metric{padding:10px;font-size:12px}.grid{grid-template-columns:1fr}#tools{flex-wrap:wrap}.heading{align-items:flex-start}h1{font-size:27px}}

.file-link{display:inline-block;border:1px solid #ced9df;border-radius:7px;padding:9px 14px;font-size:14px;text-decoration:none}#download-dialog .actions{flex-wrap:wrap;gap:10px}
[hidden]{display:none!important}.map-content{background:#0b151f;border-color:#203545;color:#d4e4ed}.map-tools{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:15px;background:#142432;border-bottom:1px solid #29404f}.map-tools label{font-size:12px;display:flex;align-items:center;gap:6px}.map-tools select,.map-tools button{background:#203746;color:#e0edf2;border-color:#3b5364;font-size:12px;padding:7px}.map-tools input[type=range]{width:85px;padding:0;accent-color:#68cdbb}.map-tools input[type=checkbox]{accent-color:#68cdbb}#map-stage{position:relative;height:calc(100vh - 290px);min-height:560px;overflow:hidden;background:radial-gradient(ellipse at center,#122633 0%,#0b151f 70%)}#radial-svg{width:100%;height:100%;touch-action:none;user-select:none;cursor:grab}#radial-svg:active{cursor:grabbing}.orbit{stroke:#31505e;stroke-width:1;fill:none;stroke-dasharray:3 7;opacity:.65}.ring-label{fill:#638392;font-size:11px;letter-spacing:3px}.process-node,.route-hit{cursor:pointer}.process-node:hover rect,.process-node:focus rect{stroke-width:3;filter:brightness(1.3)}.dim{opacity:.13}.route:hover{opacity:1}.map-legend{position:absolute;top:16px;left:20px;right:20px;display:flex;gap:18px;flex-wrap:wrap;pointer-events:none;font-size:12px;color:#a7c1ce}.map-legend span{display:flex;align-items:center;gap:6px}.map-legend i{width:8px;height:8px;border-radius:50%}.map-info{position:absolute;bottom:40px;right:16px;width:235px;max-height:45%;overflow:auto;background:#142735eb;border:1px solid #2e4959;border-radius:9px;padding:14px;font-size:12px;box-shadow:0 8px 28px #0003}.map-info strong{font-size:14px}.map-info p{color:#a8c1ce;margin:8px 0}.map-info select{width:100%;margin-top:8px;background:#203b4b;color:#e7f2f6;font-size:12px;border-color:#38596b}.info-head{display:flex;justify-content:space-between;align-items:center}.info-head button{padding:2px 7px;background:transparent;color:#d4e4ed;border:0;font-size:20px}.flow-to{color:#73cbb9}.map-help{position:absolute;bottom:13px;left:20px;font-size:11px;color:#7695a6;pointer-events:none}.map-content:fullscreen{border:0;border-radius:0;width:100vw;height:100vh}.map-content:fullscreen #map-stage{height:calc(100vh - 100px)}@media(prefers-reduced-motion:reduce){.flow-particle{display:none}}@media(max-width:850px){#map-stage{min-height:620px}.map-info{width:190px}.map-tools{gap:8px}.map-help{max-width:180px}}
.type-marker{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#68cdbb;color:#102b3c;font-size:12px;font-weight:700}
.inline-hint{padding:12px 18px;background:#edf5f5;color:#4b6b76;font-size:14px}td input,td select{font-size:14px;min-width:145px;width:100%;padding:8px}td input[type=number]{min-width:80px;max-width:120px}td .node input{min-width:160px}input[aria-invalid=true]{border-color:#dc4444}.map-workspace{display:grid;grid-template-columns:minmax(0,1fr) 280px}.map-workspace #map-stage{height:calc(100vh - 310px);min-height:610px}.map-workspace .map-info{position:static;width:auto;max-height:calc(100vh - 280px);min-height:610px;border:0;border-left:1px solid #29404f;border-radius:0;padding:20px;background:#142432;box-shadow:none;overflow:auto;font-size:14px}.map-info h2{font-size:18px;margin-top:0}.map-info h3{font-size:14px;margin:24px 0 12px}.map-info label{display:block;margin:14px 0 6px;color:#acc4d0;font-size:13px}.map-info input,.map-info select{width:100%;padding:8px;margin:0;font-size:14px;background:#203b4b;color:#e7f2f6;border-color:#38596b}.palette{display:grid;grid-template-columns:repeat(8,1fr);gap:5px}.palette .swatch{padding:0;min-height:23px;border:2px solid transparent;border-radius:4px}.palette .chosen{outline:2px solid white;outline-offset:1px}.palette .none-colour{grid-column:span 8;background:#243f50;color:white;margin-bottom:7px}.map-legend{pointer-events:auto;z-index:2;gap:7px}.map-legend button{display:flex;align-items:center;gap:6px;background:#142432d9;border:1px solid #345160;color:#cfe2eb;padding:5px 8px;font-size:12px}.map-legend .branch-hidden{opacity:.4;text-decoration:line-through}.map-tools{gap:10px}.map-tools input[type=range]{width:65px}.map-tools output{font-size:11px;min-width:15px}.map-settings{position:relative;margin:0;font-size:13px}.map-settings>div{position:absolute;z-index:20;width:290px;right:0;background:#203746;padding:20px;border:1px solid #4d6879;border-radius:8px;box-shadow:0 12px 30px #0006}.map-settings label{margin:12px 0;justify-content:space-between}.map-settings input[type=color]{width:45px;height:30px;padding:2px}.map-content:fullscreen .map-workspace #map-stage{height:calc(100vh - 110px)}.map-content:fullscreen .map-info{max-height:calc(100vh - 110px)}#clear-selection{margin-top:20px;background:#294658;color:white}.map-content .dim{opacity:.10}@media(max-width:1000px){.map-workspace{grid-template-columns:1fr}.map-workspace .map-info{min-height:0;max-height:480px;border-left:0;border-top:1px solid #29404f}.map-workspace #map-stage{height:650px}.map-settings>div{left:0;right:auto}}main:has(.map-content){padding-left:20px;padding-right:20px}
/* Diagram controls remain horizontal sliders in a dedicated left rail. */
.map-content{display:grid;grid-template-columns:220px minmax(0,1fr);align-items:stretch}.map-tools{display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:12px;border-bottom:0;border-right:1px solid #29404f;max-height:calc(100vh - 200px);min-height:650px;overflow:auto;padding:16px}.map-tools label{font-size:14px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:7px}.map-tools input[type=range]{width:140px;max-width:100%;flex:1;min-width:90px}.map-tools select{width:100%;font-size:14px}.map-tools button{font-size:14px}.map-tools input[type=checkbox]{width:auto}.map-settings>div{position:static;width:auto;padding:8px 0;border:0;box-shadow:none;background:transparent}.map-workspace{min-width:0;grid-template-columns:minmax(0,1fr) 250px}.map-workspace #map-stage{height:calc(100vh - 200px);min-height:650px}.map-workspace .map-info{max-height:calc(100vh - 200px);min-height:650px;padding:14px}.map-legend{max-height:130px;overflow:auto}.map-content:fullscreen .map-tools,.map-content:fullscreen .map-workspace #map-stage,.map-content:fullscreen .map-info{height:100vh;max-height:100vh;min-height:0}.colour-menu{min-width:190px}.colour-menu summary{display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px}.colour-preview{display:inline-block;width:42px;height:25px;border:1px solid #718096;border-radius:4px;flex-shrink:0}.colour-menu .palette{min-width:220px;padding:10px;background:#29404f;border-radius:6px;margin-top:6px}.colour-menu button{min-width:0}.colour-menu .swatch{width:24px;height:24px}.map-info input[type=range]{padding:0;accent-color:#68cdbb}@media(max-width:1250px){.map-workspace{grid-template-columns:minmax(0,1fr)}.map-workspace .map-info{min-height:0;max-height:400px;border-top:1px solid #29404f}.map-content:fullscreen .map-info{height:auto;max-height:35vh}}@media(max-width:700px){.map-content{grid-template-columns:165px minmax(0,1fr)}.map-tools{padding:10px}.map-tools input[type=range]{width:100px}.map-tools label,.map-tools button{font-size:13px}.map-legend{left:8px;right:8px}.map-help{max-width:180px}}
/* Independent disclosure groups keep the full control set reachable. */
.map-tools{padding:0;gap:0;min-height:0;height:calc(100vh - 200px);max-height:none;overflow-y:auto}.control-section{border-bottom:1px solid #314b5c;margin:0}.control-section>summary{padding:17px 14px;font-size:14px;font-weight:650;cursor:pointer;background:#192e3d;position:sticky;top:0;z-index:3}.section-body{padding:14px;display:flex;flex-direction:column;gap:15px}.map-tools .section-body>label{display:flex;flex-direction:column;align-items:stretch;gap:7px;margin:0;font-size:14px}.slider-row{display:flex;align-items:center;gap:7px;min-width:0}.map-tools .slider-row input[type=range]{width:100%;min-width:0}.map-tools .slider-row output{width:35px;flex-shrink:0;text-align:right;font-size:12px}.map-tools .check-row{flex-direction:row!important;align-items:flex-start!important;justify-content:flex-start!important}.map-tools input[type=color]{width:100%;height:30px;padding:2px}.control-hint{font-size:12px;color:#96b0c0;line-height:1.5;margin:0}.button-stack{display:grid;gap:6px}.map-tools .map-legend{position:static;max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:8px 0;pointer-events:auto}.map-tools .map-legend button{font-size:12px;text-align:left;line-height:1.4;white-space:normal}.map-tools .map-legend i{flex-shrink:0}.branch-section>summary,.planet-shell>summary{font-size:13px;cursor:pointer;padding:6px 0}.planet-shell{margin:0;padding:6px 0;border-top:1px solid #29404f}.planet-shell label{margin:10px 0;display:flex;flex-direction:column;align-items:stretch}.map-tabs{position:absolute;left:14px;top:14px;display:flex;gap:4px;z-index:4;padding:4px;border:1px solid #345160;background:#142432eb;border-radius:9px}.map-tabs button{background:transparent;color:#9db9ca;border:0;padding:7px 12px;font-size:13px}.map-tabs button[aria-selected=true]{background:#294b60;color:#fff}.planet-node{cursor:pointer}.planet-node:focus circle,.planet-node:hover circle{stroke-width:3;filter:brightness(1.2)}.rear-node{pointer-events:none}.map-content:fullscreen .map-tools{height:100vh;max-height:100vh}.map-workspace{align-items:start}.map-help{max-width:calc(100% - 28px);padding:5px;background:#0b151fb0;line-height:1.5}.map-content:fullscreen .map-workspace #map-stage{min-height:100vh}@media(max-width:700px){.section-body{padding:10px}.control-section>summary{padding:14px 10px}.map-tabs button{padding:5px;font-size:12px}}
.map-tools .map-legend{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;max-height:230px;overflow-y:scroll;overflow-x:hidden;scrollbar-gutter:stable;gap:3px}.map-tools .map-legend button{width:100%;flex:0 0 auto;justify-content:flex-start;font-size:11px;line-height:1.35;padding-top:5px;padding-bottom:5px;min-height:28px}.map-tools .map-legend button span{min-width:0;overflow-wrap:anywhere}.map-tools .map-legend i{width:7px;height:7px;flex:0 0 7px}
.city-pad{position:absolute;right:16px;bottom:16px;z-index:5;display:grid;grid-template-columns:32px 32px 32px;grid-template-rows:30px 30px 30px;gap:3px;background:#102331e8;border:1px solid #375869;border-radius:12px;padding:7px;touch-action:none}.city-pad button{padding:0;border:1px solid #476574;background:#233f50;color:#e4f2f5;font-size:18px}.city-pad [data-city-pan=up]{grid-column:2}.city-pad [data-city-pan=left]{grid-row:2;grid-column:1}.city-pad [data-city-pan=right]{grid-row:2;grid-column:3}.city-pad [data-city-pan=down]{grid-row:3;grid-column:2}.city-pad span{grid-row:2;grid-column:2;align-self:center;text-align:center;font-size:10px;color:#95b4c5}[data-city-tile],[data-district]{cursor:pointer}[data-city-tile]:focus polygon,[data-district]:focus rect{stroke:white;stroke-width:2}.map-tabs{max-width:calc(100% - 28px)}.map-help:has(+.city-pad){max-width:calc(100% - 140px)}

.camera-tools{position:absolute;right:14px;bottom:14px;z-index:5;width:210px;border:1px solid #375869;border-radius:10px;padding:10px;background:#102331ed;max-height:75%;overflow-y:auto;color:#dcecf3}.camera-tools details{margin:0 0 10px}.camera-tools summary{font-size:14px;margin-bottom:10px}.camera-tools label{display:block;font-size:13px;margin:9px 0}.camera-tools input[type=range]{min-width:0;width:100%;padding:0;accent-color:#68cdbb}.camera-tools output{font-size:12px;width:40px;text-align:right}.camera-tools .check-row{display:flex;align-items:center;gap:6px}.camera-tools .city-pad{position:static;width:max-content;margin-left:auto;border:0;padding:0}.city-pad [data-city-pan=center]{grid-row:2;grid-column:2}.camera-tools:not(:has(details)){width:auto}.map-help{max-width:calc(100% - 245px)}.process-actions{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.process-actions button{padding:7px 10px}.swapping-process,.swapping-process *{cursor:grabbing!important;user-select:none!important}.process-node[aria-pressed=true],[data-city-tile]:has([stroke-width="1.8"]){cursor:grab}.city-top-banner{pointer-events:none}@media(max-width:700px){.camera-tools{width:170px;padding:7px}.map-help{display:none}}

.save-bar{display:flex;align-items:center;gap:12px;margin:-8px 0 14px;min-height:24px}.save-bar #save-state{font-size:13px;color:#476371}.save-bar button{font-size:12px;padding:4px 8px}#local-recovery-banner{padding:12px;background:#e0f1ed;border:1px solid #a3cfc3;border-radius:8px;margin-bottom:12px;font-size:14px}#local-recovery-banner button{margin-left:8px}.recovery-notes{max-height:45vh;overflow:auto;font-size:14px}.local-project{padding:14px 0;border-bottom:1px solid #d4e1e5}.local-project small{display:block;margin:5px 0 8px;color:#617985}.local-project details button{margin:4px;font-size:13px}header .actions{flex-wrap:wrap}@media(max-width:1100px){header{height:auto;min-height:78px;flex-wrap:wrap;padding:15px;gap:12px}}
/* NodeTracker accounts */
[hidden]{display:none!important}.account-gate{min-height:100vh;display:grid;place-items:center;background:#102a3b;padding:24px}.account-card{width:min(100%,470px);background:#fff;padding:32px;border-radius:16px;box-shadow:0 20px 80px #0005}.account-card h1{font-size:26px;margin:28px 0 12px}.account-card p{line-height:1.6}.account-card input{display:block;width:100%;margin:8px 0 18px}.account-card label{font-size:14px}.account-card small{display:block;line-height:1.6;color:#526271}.account-links{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.account-card #account-submit{width:100%}#account-message{color:#8b351e;overflow-wrap:anywhere}#account-status{font-size:12px;max-width:240px;overflow-wrap:anywhere}#access-notice{padding:10px 14px;background:#fff3d9;color:#60430b;margin-bottom:12px;border-radius:8px;font-size:14px}.users-dialog{width:min(850px,95vw)}.users-dialog [data-rows]{overflow:auto;max-height:55vh}.users-dialog td{overflow-wrap:anywhere}.users-dialog [data-status]{color:#7b4025}#workspace>header{height:auto;min-height:72px;flex-wrap:wrap;gap:12px}#workspace .actions{flex-wrap:wrap}

/* Map controls float directly above the drawing surface. */
#map-full{margin:12px 14px;flex-shrink:0}
.branch-overlay{position:absolute;left:14px;top:65px;z-index:4;max-width:min(280px,calc(100% - 28px));max-height:46%;color:#cfe2eb;background:transparent;border:0;text-shadow:0 1px 3px #000;display:flex;flex-direction:column}
.branch-overlay>summary{cursor:pointer;font-size:14px;padding:5px 0;flex-shrink:0}
.branch-overlay:not([open])>.map-legend{display:none}
.branch-overlay .map-legend{position:static;display:flex;flex-flow:column nowrap;gap:3px;max-height:calc(100vh * .32);overflow:auto;padding:0;pointer-events:auto}
.branch-overlay .map-legend button{background:transparent;border:0;box-shadow:none;text-align:left;font-size:13px;line-height:1.4;white-space:normal;text-shadow:0 1px 3px #000;flex-shrink:0}
.branch-overlay .map-legend i{flex-shrink:0}
.branch-overlay .map-legend button:hover,.branch-overlay .map-legend button:focus-visible{background:#294b6044}
.camera-tools,.camera-tools .city-pad,.city-pad{background:transparent;border:0;box-shadow:none}
.camera-tools{opacity:.75;transition:opacity .15s}
.camera-tools:hover,.camera-tools:focus-within{opacity:1}
.city-pad button{background:#233f5090;border-color:#47657490}
.map-delete-dialog{max-width:420px;background:#142432;color:#e0edf2;border:1px solid #476574;border-radius:10px;padding:24px}
.map-delete-dialog::backdrop{background:#0008}
@media(max-width:700px){.map-tabs{flex-wrap:wrap}.branch-overlay{top:100px;max-width:calc(100% - 28px);max-height:30%}.branch-overlay .map-legend{max-height:140px}}
.project-navigation{display:flex;flex-direction:column;margin:0 0 24px;gap:4px}.project-navigation button{text-align:left;background:transparent;color:#d3e4ed;border:0;padding:10px 14px;font-size:14px}.project-navigation button:hover{background:#ffffff14}.project-chart-title{position:absolute;top:12px;left:18px;right:18px;z-index:4;color:#e5f3fa;font-weight:650;font-size:16px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-shadow:0 1px 3px #000}.map-tabs{top:42px}.branch-overlay{top:94px}.node-tree{display:flex;flex-direction:column;gap:3px;overflow:auto}.node-tree button{display:flex;align-items:center;gap:7px;text-align:left;background:transparent;border:0;font-size:13px;white-space:normal;min-width:0}.node-tree button[aria-pressed=true]{background:#294b60;color:#fff}.node-tree i{width:8px;height:8px;border-radius:50%;flex-shrink:0}.node-depths{position:absolute;top:94px;left:18px;z-index:4;display:flex;gap:18px;flex-wrap:wrap;color:#cfe2eb;font-size:13px}.node-depths label{max-width:190px}.node-depths input{width:135px;padding:0;accent-color:#68cdbb}.node-depths output{min-width:20px}.city-pad [data-node-pan=up]{grid-column:2}.city-pad [data-node-pan=left]{grid-row:2;grid-column:1}.city-pad [data-node-pan=center]{grid-row:2;grid-column:2}.city-pad [data-node-pan=right]{grid-row:2;grid-column:3}.city-pad [data-node-pan=down]{grid-row:3;grid-column:2}.map-info input[type=checkbox]{width:auto}.project-name-dialog{width:min(480px,90vw);padding:24px;border-radius:10px;border:1px solid #476574}.project-name-dialog input{display:block;width:100%;margin:12px 0}.project-name-dialog::backdrop{background:#0008}#add-top-level{margin-bottom:16px;width:100%}@media(max-width:700px){.branch-overlay{top:130px}.node-depths{top:130px}.map-tabs{max-width:calc(100% - 28px)}}

#project-notes{position:absolute;left:24px;bottom:64px;z-index:9}#notes-toggle{background:#17354ae8;color:#e5f5f2;border:1px solid #537487;border-radius:18px;padding:7px 15px}#notes-panel{position:absolute;bottom:44px;left:0;width:var(--notes-width,390px);max-height:70vh;overflow:auto;padding:16px;background:#142d40f5;color:#e6f0f5;border:1px solid #547084;border-radius:12px;box-shadow:0 8px 30px #0005}#notes-panel textarea{width:100%;height:220px;resize:vertical;background:#0c2031;color:#f0f5fa;padding:10px;border:1px solid #537487}#notes-panel small{display:block;margin-top:8px;color:#b9cbd7}#example-menu{position:fixed;z-index:110;width:330px;max-height:350px;overflow:auto;background:#142d40;border:1px solid #547084;border-radius:10px;padding:8px;box-shadow:0 8px 30px #0005}#example-menu button{display:block;width:100%;text-align:left;background:transparent;color:#e6f0f5;border:0;padding:12px}#example-menu button:hover,#example-menu button:focus{background:#29495e}#example-menu small{display:block;margin-top:5px;color:#b9cbd7}.excel-mapping{width:min(920px,94vw);max-height:85vh;overflow:auto}.excel-mapping fieldset{margin:12px 0;padding:12px;border:1px solid #bbb}.excel-mapping textarea{width:100%;min-height:70px}.excel-mapping select{max-width:100%}.excel-panel{margin-bottom:18px}

#project-notes{display:flex;flex-direction:column;align-items:flex-start;gap:10px}#project-notes[hidden]{display:none}#property-filter-toggle{display:flex;align-items:center;justify-content:center;width:38px;height:32px;border:1px solid #537487;border-radius:9px;background:#17354ae8;color:#e5f5f2}#property-filter-panel{position:absolute;bottom:calc(100% + 12px);left:0;width:min(450px,var(--notes-width,390px));max-height:60vh;overflow:auto;padding:14px;background:#142d40f5;color:#e6f0f5;border:1px solid #547084;border-radius:12px;box-shadow:0 8px 30px #0005}#property-filter-panel button,#property-filter-panel select{background:#1a3c50;color:#e6f0f5;border:1px solid #537487}#property-filter-panel button[aria-pressed=true]{border-color:#59d6bd;background:#285b66}.filter-style-row{display:flex;align-items:center;gap:14px;margin:12px 0}.filter-style-row>label{flex:1;min-width:0}.filter-style-row input{width:100%;padding:0}.filter-colour{position:relative}.filter-colour summary{display:flex;align-items:center;gap:4px;cursor:pointer}.filter-colour summary i{display:inline-block;width:24px;height:24px;border-radius:4px;border:1px solid #abc}.filter-palette{position:absolute;top:34px;left:0;background:#142d40;padding:8px;display:grid;grid-template-columns:repeat(4,32px);gap:5px;z-index:3;border:1px solid #547084}.filter-palette button{width:32px;height:28px;padding:0;font-size:10px}.filter-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.filter-properties,.filter-values{max-height:210px;overflow:auto}.filter-properties button{display:block;width:100%;text-align:left;margin-bottom:5px;overflow-wrap:anywhere}.filter-values label{display:flex;gap:7px;align-items:center;margin:8px 0;overflow-wrap:anywhere}.filter-values input{width:auto}.filter-values p,#property-filter-panel small{font-size:12px;color:#b9cbd7}.property-contour{pointer-events:none}
.node-properties{box-sizing:border-box;height:260px;overflow:auto;background:#142735f5;border:1px solid #3b596b;border-radius:9px;padding:12px;color:#d8e8f0;font-size:12px;user-select:text;cursor:auto}.node-properties h3{margin:0 0 8px;font-size:14px}.node-properties label{display:block;margin:8px 0 4px;color:#a8c1ce}.node-properties input,.node-properties select{width:100%;box-sizing:border-box;background:#203b4b;color:#e7f2f6;border:1px solid #38596b;padding:6px;font-size:12px}.node-parent{margin:3px 0;overflow-wrap:anywhere}[data-node-connection]{cursor:pointer}
.summary-content{display:grid;grid-template-columns:200px minmax(0,1fr);background:#0b151f;color:#d4e4ed;border-color:#29404f}.summary-controls{padding:18px;background:#142432;display:flex;flex-direction:column;gap:8px;align-self:start;position:sticky;top:0}.summary-controls button{background:#203746;color:#e0edf2;border:1px solid #3b5364;text-align:left}.summary-controls p{font-size:12px;color:#a8c1ce;line-height:1.5}.summary-tables{min-width:0;padding:20px;display:flex;flex-direction:column;gap:22px}.summary-tables h2,.summary-tables h3{color:#e0edf2;margin:0 0 12px}.summary-scroll{overflow:auto;max-height:470px;border:1px solid #29404f;border-radius:7px}.summary-scroll table{margin:0;width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.summary-scroll th,.summary-scroll td{background:#102331;border-bottom:1px solid #29404f;padding:10px 12px;white-space:nowrap;text-align:left;color:inherit}.summary-scroll thead th{position:sticky;top:0;z-index:2;background:#203746}.summary-scroll th:first-child{position:sticky;left:0;z-index:1;min-width:240px}.summary-scroll thead th:first-child{z-index:3}.summary-selected td,.summary-selected th{background:#264b5e}.summary-process{display:flex;align-items:center;gap:4px}.summary-process button{background:transparent;border:0;padding:4px;font-size:13px;text-align:left;white-space:normal}.summary-process button:first-child{color:#a8c1ce;min-width:24px}.summary-process button[aria-pressed=true]{text-decoration:underline;font-weight:750}.summary-descendant{opacity:.65}.summary-scroll td{max-width:360px;white-space:normal;overflow-wrap:anywhere}.summary-scroll th[scope=row]{max-width:360px;white-space:normal}@media(max-width:850px){.summary-content{grid-template-columns:1fr}.summary-controls{position:static;display:flex;flex-direction:row;flex-wrap:wrap}.summary-controls p{width:100%}.summary-tables{padding:12px}}

.summary-tables>section>h3{color:#183447;background:#f3f6f8;margin:0;padding:14px 16px;border-bottom:1px solid #ced9df}.summary-tables>section>p{color:#365366;padding:0 16px}.summary-map-tabs{position:sticky;top:0;left:auto;align-self:flex-start;flex-wrap:wrap;max-width:100%;margin:0}.summary-controls>h3{color:#e0edf2}.summary-content:fullscreen{width:100vw;height:100vh;max-height:none;overflow:auto;border:0;border-radius:0}.summary-content:fullscreen .summary-controls{max-height:100vh;overflow-y:auto}.summary-content:fullscreen .summary-tables{padding-top:16px}
.branch-overlay .map-legend{direction:rtl;scrollbar-gutter:stable}.branch-overlay .map-legend>*{direction:ltr}.summary-content{grid-template-columns:220px minmax(0,1fr)}.summary-controls.map-tools{padding:0;gap:0;height:calc(100vh - 200px);min-height:0}.summary-controls.map-tools #map-full{font-size:14px;padding:7px;background:#203746;color:#e0edf2;border-color:#3b5364;margin:12px 14px}.summary-tables{padding-top:0}.summary-map-header{position:relative;height:94px;min-height:94px;margin:0 -20px}.summary-map-header .summary-map-tabs{position:absolute;top:42px;left:14px;margin:0}.summary-content:fullscreen .summary-controls.map-tools{height:100vh}.summary-content:fullscreen .summary-tables{padding-top:0}@media(max-width:850px){.summary-content{grid-template-columns:220px minmax(0,1fr)}.summary-controls.map-tools{flex-direction:column;flex-wrap:nowrap}.summary-tables{padding-top:0}.summary-map-header{margin:0 -12px;height:125px;min-height:125px}}@media(max-width:700px){.summary-content{grid-template-columns:165px minmax(0,1fr)}}
.summary-scroll th>button{background:transparent;color:inherit;border:0;font:inherit;text-align:left;padding:0;width:100%}.summary-scroll th[aria-sort=ascending],.summary-scroll th[aria-sort=descending]{background:#315c70}
.table-view-switch,.grid-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 16px}.table-view-switch button[aria-pressed=true]{background:#176a62;color:white}.data-grid{max-height:70vh;overflow:auto;outline:none;user-select:none}.data-grid table{border-collapse:separate;border-spacing:0;min-width:100%}.data-grid td,.data-grid th{border-right:1px solid #dce5e9;border-bottom:1px solid #dce5e9;white-space:pre-wrap;min-width:130px;max-width:330px;overflow-wrap:anywhere;padding:9px 12px}.data-grid td:first-child,.data-grid th:first-child{min-width:45px}.data-grid thead th{position:sticky;top:0;background:#edf4f7;z-index:2}.data-grid thead button{background:transparent;border:0;font:inherit;color:#214154;padding:0;width:100%;text-align:left}.data-grid .grid-selected{background:#d7eee9;box-shadow:inset 0 0 0 1px #278777}.data-grid .grid-readonly{color:#69808d;background:#f3f6f8}.data-grid .grid-readonly.grid-selected{background:#d7eee9}.data-grid input,.data-grid select{width:100%;min-width:150px;user-select:text}.data-grid th[aria-sort=ascending],.data-grid th[aria-sort=descending]{background:#c5e4df}#grid-paste-panel{padding:16px}#grid-paste-text{display:block;width:100%;margin:10px 0;font-family:monospace}#grid-paste-error{color:#a44d46}.grid-toolbar span{font-size:13px;color:#69808d}
.map-tabs{max-width:calc(100% - 28px);overflow-x:auto;white-space:nowrap}.summary-map-header .map-tabs{flex-wrap:nowrap}.summary-controls.map-tools .section-body{width:100%}
/* Shared on-screen navigation and group controls. */
.camera-tools:not(:has(details)){width:210px}.map-camera-sliders{margin-bottom:12px}.branch-and-groups{position:absolute;left:14px;top:94px;z-index:4;width:260px;max-width:calc(100% - 28px);max-height:60%;display:flex;flex-direction:column;gap:10px;color:#cfe2eb;text-shadow:0 1px 3px #000;pointer-events:none}.branch-and-groups>*{pointer-events:auto}.branch-and-groups .branch-overlay{position:static;max-width:100%;max-height:none;flex-shrink:1;min-height:30px}.branch-and-groups .map-legend{max-height:22vh}.property-groups-overlay{display:flex;flex-direction:column;min-height:90px;overflow:hidden;font-size:13px}.property-groups-overlay label{display:block}.property-groups-overlay select{display:block;width:100%;margin:5px 0;background:#17354ae8;color:#e5f5f2;border-color:#537487;font-size:13px}.property-group-values{overflow:auto;min-height:36px;direction:rtl;scrollbar-gutter:stable}.property-group-row{direction:ltr;display:flex;align-items:center;gap:5px;margin:3px 0}.property-group-order{display:flex;gap:2px;flex-shrink:0}.property-group-order button{padding:2px 5px;background:#17354a99;color:#dcecf3;border-color:#53748766}.property-group-row>[data-group-toggle]{flex:1;text-align:left;border:0;background:transparent;color:#cfe2eb;padding:5px;overflow-wrap:anywhere}.property-group-row>[aria-pressed=false]{opacity:.45;text-decoration:line-through}.property-group-row>[aria-pressed=true]{font-weight:650}.property-group-row>[data-group-toggle]:hover{background:#294b6044}.summary-controls.map-tools button{text-align:center}#project-notes{flex-direction:row;align-items:center;gap:8px}#view-help-toggle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid #537487;border-radius:50%;background:#17354ae8;color:#e5f5f2;font-weight:700}#project-notes.outside-map{position:fixed;bottom:18px!important;left:24px;z-index:9}.view-help-dialog{width:min(680px,94vw);max-height:85vh;overflow:auto;padding:24px;border:1px solid #547084;border-radius:12px;background:#142d40;color:#e6f0f5}.view-help-dialog::backdrop{background:#0007}.view-help-dialog h2{font-size:20px;margin:0}.view-help-dialog h3{font-size:15px;margin:18px 0 5px;color:#79ddc7}.view-help-dialog p{font-size:14px;margin:0;line-height:1.65}.property-text-editor{width:100%;min-width:140px;min-height:calc(1.45em + 22px);line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;resize:vertical}.map-info .property-text-editor,.node-properties .property-text-editor{background:#163244;color:#e0edf2;border-color:#3b5364}@media(max-width:700px){.camera-tools:not(:has(details)){width:170px}.branch-and-groups{top:130px;width:220px;max-height:45%}.branch-and-groups .map-legend{max-height:100px}}
.summary-scroll .summary-edit{display:block;width:100%;min-height:22px;padding:0;background:transparent;border:0;border-radius:3px;text-align:left;color:inherit;font:inherit;white-space:pre-wrap;overflow-wrap:anywhere}.summary-scroll .summary-edit:hover,.summary-scroll .summary-edit:focus-visible{background:#294b60;outline:1px solid #547084}.summary-scroll input,.summary-scroll select,.summary-scroll textarea{background:#17354a;color:#dcecf3;border:1px solid #537487;font:inherit;min-width:100px;width:100%;padding:4px}.summary-scroll input[type=number]{min-width:70px;max-width:100px}.data-grid td{user-select:none}.data-grid input,.data-grid textarea{user-select:text}#data-grid:focus{outline:1px solid #4d9f94;outline-offset:-1px}[data-node-properties-toggle],[data-pyramid-node]{cursor:pointer}.pyramid-face{cursor:pointer}

.app-brand-logo{width:40px;height:36px;object-fit:contain;flex:none}
@media(prefers-reduced-motion:reduce){.hierarchy-pulse{display:none}}

.district-rotate{display:flex;gap:6px}.district-rotate button{flex:1}

.map-drag-preview{position:fixed;z-index:2147483647;pointer-events:none;background:#10222fed;color:#edf7fa;border:3px solid;border-radius:7px;padding:9px 14px;font:600 13px system-ui;max-width:240px;box-shadow:0 4px 18px #0008}.map-drag-preview.valid-drop{box-shadow:0 0 12px #7df9c6}.map-drop-target{filter:drop-shadow(0 0 4px #fff) drop-shadow(0 0 8px #5ce8c0)}

.summary-counts{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:#385268;padding:8px 0}.summary-counts strong{color:#17384b}.summary-map-header:has(.summary-counts){min-height:110px;height:auto}.summary-counts{position:relative;padding:92px 18px 12px;margin:0;gap:8px 18px}
.version-comparison{width:1100px}.comparison-scroll{max-height:60vh;overflow:auto}.comparison-scroll pre{white-space:pre-wrap;overflow-wrap:anywhere;max-width:320px;font:inherit;margin:0}.history-choice{display:block;width:100%;margin:8px 0;text-align:left}textarea.property-text-editor{height:auto;min-height:calc(1.45em + 22px);max-height:none;resize:vertical;overflow:auto}

.city-routing-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:10px 16px;border:1px solid #456071;border-radius:8px;background:#10222fee;color:#e7f4f8;pointer-events:none;z-index:8}
/* Hover reveals only the target; CSS does not rerun tracing or layout. */
#radial-svg [data-node]:hover,#radial-svg [data-node]:focus-visible,
#radial-svg [data-pyramid-node]:hover,#radial-svg [data-pyramid-node]:focus-visible,
#radial-svg [data-focus-node]:hover,#radial-svg [data-focus-node]:focus-visible{opacity:1!important}
