@font-face{font-family:"Fusion Pixel 12px Proportional zh_hans";src:url("../../fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hans.otf.woff2") format("woff2");font-display:swap}
:root{color-scheme:light;font-family:"Fusion Pixel 12px Proportional zh_hans","Microsoft YaHei",sans-serif;color:#000;background:#008080;--shell:#c0c0c0;--light:#fff;--mid:#808080;--dark:#0a0a0a;--title:#000080;--terminal:#000;--signal:#00ff00;--alert:#ffff00}
*{box-sizing:border-box}
html,body{min-height:100%;margin:0}
body{padding:4px;background:#008080}
button,input,select{font:inherit}
button{min-height:24px;padding:2px 10px;color:#000;border:0;background:#c0c0c0;box-shadow:inset -1px -1px #0a0a0a,inset 1px 1px #fff,inset -2px -2px #808080,inset 2px 2px #dfdfdf}
button:active{box-shadow:inset -1px -1px #fff,inset 1px 1px #0a0a0a,inset -2px -2px #dfdfdf,inset 2px 2px #808080}
input,select{min-height:23px;color:#000;border:0;background:#fff;box-shadow:inset -1px -1px #fff,inset 1px 1px #808080,inset -2px -2px #dfdfdf,inset 2px 2px #0a0a0a}
input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible{outline:1px dotted #000;outline-offset:-4px}
input[type="checkbox"],input[type="radio"]{min-height:0;box-shadow:none}
.map-app{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:4px;width:100%;min-height:calc(100vh - 8px);padding:4px;background:var(--shell);box-shadow:inset -1px -1px #0a0a0a,inset 1px 1px #fff,inset -2px -2px #808080,inset 2px 2px #dfdfdf}
.priority-strip{display:grid;grid-template-columns:minmax(190px,.85fr) minmax(480px,2fr);min-height:58px;color:var(--signal);border:2px inset #dfdfdf;background:#000;font-family:"Courier New",monospace}
.priority-brand{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:7px 10px;border-right:1px solid #008000}
.priority-brand span{color:#00aa00;font-size:10px;letter-spacing:.08em}
.priority-brand strong{font-family:"Fusion Pixel 12px Proportional zh_hans",sans-serif;font-size:15px;font-weight:400}
.priority-cells{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0}
.priority-cells div{display:flex;min-width:0;flex-direction:column;justify-content:center;padding:5px 9px;border-left:1px solid #003d00}
.priority-cells dt{color:#00aa00;font-size:9px;letter-spacing:.08em}
.priority-cells dd{margin:4px 0 0;overflow:hidden;color:#00ff00;font-size:13px;text-overflow:ellipsis;white-space:nowrap}
.priority-cells .priority-cell--alert dd{color:var(--alert)}
.map-workspace{display:grid;grid-template-columns:208px minmax(0,1fr);gap:4px;min-height:0}
.logic-panel{min-height:0;padding:3px;overflow:auto;background:#c0c0c0;box-shadow:inset -1px -1px #fff,inset 1px 1px #808080;font-size:12px;line-height:1.2}
.panel-title,.utility-title{padding:3px 5px;color:#fff;background:#000080;font-size:12px}
fieldset{min-width:0;margin:3px 2px;padding:5px 6px 6px;border:2px groove #fff}
legend{padding:0 3px}
.control-group{display:grid;gap:4px}
.control-group label,.transport-group label{display:flex;min-height:16px;align-items:center;gap:4px}
.transport-control{margin:3px 2px;border:2px groove #fff}
.transport-control summary{padding:5px 6px;cursor:default;list-style:none}
.transport-control summary::-webkit-details-marker{display:none}
.transport-control summary::before{content:"▶";display:inline-block;width:14px}
.transport-control[open] summary::before{content:"▼"}
.transport-panel{padding:0 4px 4px}
.transport-master{display:block;margin:1px 4px 3px}
.transport-group{display:grid;gap:3px;margin:2px 0;padding:4px 5px}
.old-city-mode-control{display:grid!important;gap:3px!important}
.old-city-mode-control select{width:100%}
.map-stage{display:grid;grid-template-rows:25px minmax(0,1fr) auto;min-width:0;min-height:0;padding:3px;background:#c0c0c0;box-shadow:inset -1px -1px #fff,inset 1px 1px #808080}
.map-stage-bar{display:grid;grid-template-columns:auto minmax(120px,1fr) auto;align-items:center;gap:12px;padding:0 3px 0 6px;color:#fff;background:#000080;font:11px/1 "Courier New",monospace}
.map-stage-bar output{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zoom-controls{display:flex;align-items:center;gap:2px;height:21px}
.zoom-controls button{min-width:23px;min-height:19px;height:19px;padding:0 5px;font:11px/1 "Fusion Pixel 12px Proportional zh_hans",sans-serif}
.zoom-controls output{min-width:43px;color:#00ff00;text-align:center;font-family:"Courier New",monospace}
.zoom-controls #measure-toggle[aria-pressed="true"]{color:#00ff00;background:#000;box-shadow:inset -1px -1px #fff,inset 1px 1px #0a0a0a,inset -2px -2px #dfdfdf,inset 2px 2px #808080}
.map-wrap{position:relative;width:100%;height:100%;min-width:0;min-height:280px;overflow:hidden;border:2px inset #dfdfdf;background:#111820;overscroll-behavior:contain;touch-action:none}
.map-canvas-shell{position:absolute;top:50%;left:50%;width:280px;height:280px;transform:translate(-50%,-50%) scale(1);transform-origin:50% 50%;will-change:top,left,transform}
.map-wrap canvas{display:block;width:100%;height:100%;cursor:grab;image-rendering:auto}
.north{position:absolute;top:8px;right:8px;padding:3px 7px;color:#00ff00;border:1px solid #008000;background:#000;font:12px/1 "Courier New",monospace}
.map-wrap.is-panning,.map-wrap.is-panning canvas{cursor:grabbing}
.map-wrap.is-measuring canvas{cursor:crosshair}
.map-corner{position:absolute;width:18px;height:18px;border-color:#e02d3f;pointer-events:none}
.map-corner--nw{top:5px;left:5px;border-top:2px solid;border-left:2px solid}
.map-corner--ne{top:5px;right:5px;border-top:2px solid;border-right:2px solid}
.map-corner--sw{bottom:5px;left:5px;border-bottom:2px solid;border-left:2px solid}
.map-corner--se{right:5px;bottom:5px;border-right:2px solid;border-bottom:2px solid}
.legend{display:flex;min-height:38px;gap:4px;padding:4px;overflow-x:auto;border:2px inset #dfdfdf;background:#fff;color:#303030;font-size:10px}
.legend-group{display:flex;flex:0 0 auto;align-items:center;gap:6px;padding-right:8px;border-right:1px solid #c0c0c0}
.legend-title{color:#000;font-weight:700}
.legend-items{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.legend-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.swatch{display:inline-block;width:10px;height:10px;flex:none}
.road-swatch{background:#4a5055}.old-city-road-swatch{background:#5f5048}.old-city-local-swatch{background:linear-gradient(transparent 42%,#81736a 42% 58%,transparent 58%)}.rail1-swatch{background:#d84b39;border-radius:50%}.rail2-swatch{background:#395da8;border-radius:50%}.trolley-route-swatch{height:5px;border-radius:3px;box-shadow:0 0 0 1px #fff}.trolley-interchange-swatch{background:#fff;border:2px solid #4d5960;border-radius:50%}.vertical-link-swatch{background:repeating-linear-gradient(90deg,#796b61 0 2px,transparent 2px 4px)}.railway-swatch{background:#623f99}.old-railway-swatch{background:repeating-linear-gradient(90deg,#1f2328 0 3px,transparent 3px 6px)}.hatch{border:1px solid #aaa;background:repeating-linear-gradient(45deg,#737373 0 2px,transparent 2px 5px)}.contour-swatch{background:linear-gradient(transparent 43%,#3d4a4c 43% 57%,transparent 57%)}.tunnel-swatch{background:repeating-linear-gradient(90deg,#18242b 0 3px,transparent 3px 6px)}.place-swatch{border-radius:50%;background:#111;box-shadow:0 0 0 2px #fff inset}.task-swatch{border-radius:50%;background:#e02d3f;box-shadow:0 0 0 2px #fff inset}
.coordinate-dock{display:grid;grid-template-columns:minmax(500px,1.1fr) minmax(330px,.9fr);gap:4px}
.utility-window{min-width:0;padding:3px;background:#c0c0c0;box-shadow:inset -1px -1px #0a0a0a,inset 1px 1px #fff,inset -2px -2px #808080,inset 2px 2px #dfdfdf}
.coordinate-form{display:grid;grid-template-columns:minmax(150px,1fr) 72px 72px auto;align-items:center;gap:5px;padding:5px 6px}
.coordinate-form label{display:grid;grid-template-columns:14px 1fr;align-items:center;gap:3px;font-family:"Courier New",monospace;font-size:11px;font-weight:700}
.coordinate-form .marker-name-field{grid-template-columns:32px minmax(0,1fr);font-family:"Fusion Pixel 12px Proportional zh_hans",sans-serif;font-weight:400}
.coordinate-form input{width:100%;padding:2px 5px;font-family:"Courier New",monospace}
.coordinate-form .marker-name-field input{font-family:"Fusion Pixel 12px Proportional zh_hans",sans-serif}
.coordinate-actions{display:flex;gap:3px}
.coordinate-actions button{min-width:44px;min-height:23px;padding-right:7px;padding-left:7px;font:12px/1 "Fusion Pixel 12px Proportional zh_hans",sans-serif}
.location-readout{display:grid;grid-template-columns:minmax(110px,.6fr) minmax(180px,1fr) minmax(150px,.85fr);align-items:center;gap:8px;min-height:36px;padding:5px 7px;color:#00ff00;border:2px inset #dfdfdf;background:#000;font:11px/1.35 "Courier New",monospace}
.location-readout strong{overflow:hidden;color:#ffff00;text-overflow:ellipsis;white-space:nowrap}
.location-readout span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){body{padding:0}.map-app{min-height:100vh}.priority-strip{grid-template-columns:1fr}.priority-brand{display:none}.map-workspace{grid-template-columns:184px minmax(0,1fr)}.priority-cells{grid-template-columns:repeat(4,minmax(110px,1fr));overflow-x:auto}.coordinate-dock{grid-template-columns:1fr}.coordinate-window{grid-row:1}.location-window{grid-row:2}.location-readout{grid-template-columns:1fr 1fr}.location-readout span:last-child{grid-column:1/-1}}
@media(max-width:640px){.map-app{display:block;min-width:0}.priority-strip{position:sticky;top:0;z-index:5}.priority-cells{grid-template-columns:repeat(4,130px)}.map-workspace{display:flex;flex-direction:column}.logic-panel{max-height:210px}.map-stage{min-height:480px}.map-stage-bar{grid-template-columns:1fr auto}.map-stage-bar>span{display:none}.map-wrap{width:100%;min-width:0}.coordinate-form{grid-template-columns:1fr 1fr}.coordinate-form .marker-name-field{grid-column:1/-1}.coordinate-actions{justify-content:flex-end}.location-readout{grid-template-columns:1fr}.location-readout span:last-child{grid-column:auto}.legend{max-height:82px}.coordinate-dock{margin-top:4px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
