:root{color-scheme:dark;--bg:#101917;--panel:#182520;--line:#314037;--muted:#9ead9e;--gold:#d6be83;--text:#edf0e4;--green:#78b797;--red:#f0a397}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 system-ui,"Microsoft JhengHei",sans-serif;height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden}
button,input,summary{font:inherit}button,summary{border:1px solid #405247;background:#25372d;color:var(--text);padding:6px 10px;border-radius:6px;cursor:pointer}button:hover,summary:hover{background:#39533f}button:focus-visible,canvas:focus-visible,input:focus-visible,summary:focus-visible,[role=tabpanel]:focus-visible{outline:2px solid var(--gold);outline-offset:2px}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--gold);color:#1c261d;border-color:var(--gold);font-weight:700}button.active{border-color:var(--gold);background:#3a3e2b;color:#f2d9a2}
input{background:#101c17;border:1px solid #4c6151;border-radius:5px;color:var(--text);padding:9px;width:100%;min-width:0}h1,h2,h3,p{margin:0}h2{font-size:16px}h3{font-size:14px}p{color:var(--muted)}

.dialog-error{color:#ffb4a7;border:1px solid #9a5e54;padding:10px;border-radius:6px}.download-button{display:inline-block;padding:9px 12px;border:1px solid #c6ad77;border-radius:6px;background:#c6ad77;color:#17251c;text-decoration:none}#export-text{width:100%;margin-top:10px;resize:vertical;background:#0e1a15;color:#dce5d8}details{margin-top:14px}
dialog{border:1px solid #607253;border-radius:12px;background:#1a2a21;color:var(--text);padding:22px;width:min(590px,calc(100% - 24px));max-height:85dvh;overflow:auto;box-shadow:0 16px 80px #0009}dialog::backdrop{background:#060e0ab8}dialog p{font-size:13px;margin:12px 0}dialog h3{margin:18px 0 8px;color:var(--gold)}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:14px}.dialog-title button{padding:3px 10px}dialog label{display:block;margin:14px 0}dialog label input{margin-top:5px}.save-card{background:#132017;border:1px solid #394c3c;padding:10px;border-radius:6px;margin:8px 0;display:flex;align-items:center;justify-content:space-between;gap:10px}.save-card strong{display:block;overflow-wrap:anywhere}.save-card small{display:block;font-size:11px;color:var(--muted)}.save-card button{font-size:12px;padding:6px 9px}.save-card>div:first-child{min-width:0}.save-card .inline{flex-shrink:0}#import-preview{overflow-wrap:anywhere}


/* Workforce keeps the existing map/dock proportions and scroll container. */

.workforce-summary,#workforce-preview{white-space:pre-line;font-variant-numeric:tabular-nums}
.workforce-actions{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.workforce-actions button{flex:1;min-width:76px}
#workforce-preview:empty{display:none}#workforce-preview{padding:10px;border:1px solid var(--line,#344b3c);border-radius:6px;margin:8px 0}
#workforce-apply{width:100%;margin-bottom:12px}#workforce-groups details{border-top:1px solid #344b3c;padding:10px 0}
#workforce-groups summary{cursor:pointer;font-weight:600;margin-bottom:8px}.workforce-row{padding:8px 0}.workforce-row p{margin:4px 0;font-size:12px}
.workforce-location{padding:4px 6px;max-width:100%}.workforce-edit{display:flex;align-items:center;gap:6px}.workforce-edit input{width:66px;min-width:0;padding:8px}.workforce-edit button{margin-left:auto}

.workforce-submit{position:sticky;bottom:0;background:#17291f;border-top:1px solid #496047;padding:6px 0;z-index:2}.workforce-submit .workforce-actions{margin:3px 0}.workforce-submit #workforce-preview{max-height:120px;overflow:auto;font-size:12px}.workforce-submit #workforce-apply{margin:4px 0 0}

/* Engineering extends the existing dock; the world canvas keeps its full height. */

#hud .core-health{grid-column:1 / -1;width:100%;padding:5px 8px;text-align:left;font-size:12px;color:#c8dfba;background:#22362c}
.core-health.urgent{color:#ffb3a5!important;border-color:#b36c5b;background:#402923!important}
#map-core-status{display:none;position:absolute;right:10px;top:50px;z-index:2;font-size:11px;padding:6px 9px;background:#16271fee}
.dock-collapsed #map-core-status{display:block}
#pane-engineering p{white-space:pre-line;font-size:12px;color:var(--muted);line-height:1.6}
#engineering-policy{padding:10px;border:1px solid var(--line);border-radius:6px;display:grid;gap:8px}
.engineering-switch{display:flex;align-items:center;gap:8px}.engineering-switch input{width:auto}
.reserve-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.reserve-fields label{min-width:0;font-size:12px}.reserve-fields input{display:block;width:100%;min-width:0;margin-top:4px}
.repair-row{margin:8px 0}.engineering-location{width:100%;text-align:left;font-size:12px}.repair-actions{display:flex;flex-wrap:wrap;gap:5px}.repair-actions button{font-size:11px;padding:6px}.repair-actions button[aria-pressed=true]{border-color:var(--gold);color:var(--gold)}
#engineering-queue{min-width:0}#engineering-empty{padding:12px;border:1px dashed var(--line)}


#pane-engineering>details{border:1px solid var(--line);border-radius:6px;padding:8px 10px;margin:8px 0}#pane-engineering summary{font-size:12px;cursor:pointer}#pane-engineering details[open]>summary{margin-bottom:10px}

/* City plans stay inside the existing scroll panes. */
#opening-guide,#housing-planner,#population-planner{border:1px solid var(--line);border-radius:6px;padding:9px;margin:10px 0;font-size:12px}
#opening-guide summary,#housing-planner summary,#population-planner summary{cursor:pointer;color:var(--gold);font-weight:600}
#opening-guide p,#housing-planner p,#population-planner p{white-space:pre-line;line-height:1.6;overflow-wrap:anywhere;margin:8px 0}
#opening-steps{padding:0;list-style:none;font-size:11px;line-height:1.8}#opening-action{width:100%;font-size:12px}
.city-actions{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.city-actions button{flex:1;font-size:12px;min-width:72px;padding:7px}
#build-categories button[aria-pressed=true]{background:#484735;border-color:var(--gold);color:var(--gold)}
#housing-form{display:grid;gap:10px}#housing-form label,#population-planner label{display:block;font-size:12px}
#housing-form select,#population-planner select{display:block;width:100%;min-width:0;margin:5px 0 8px;padding:8px;background:#13251c;color:var(--text);border:1px solid var(--line);border-radius:5px}
#housing-cells{max-height:180px;overflow:auto}#housing-cells button{flex-basis:110px}.build-tools [hidden]{display:none}

/* Growth tools remain in the existing dock; larger comparisons open above the paused map. */
.growth-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:10px}
#growth-dialog{width:min(860px,calc(100vw - 36px));max-width:calc(100vw - 36px)}
#research-lines{position:sticky;top:0;background:#14241e;padding:8px 0;z-index:1}
#research-lines [aria-pressed="true"]{border-color:#d7bd77;background:#3d4230;color:#f4da91}
#tower-details p,#research-summary,#research-current,#growth-preview,#command-summary,#city-diagnosis{white-space:pre-line;overflow-wrap:anywhere}
#tower-details button{max-width:100%;margin:4px 0;white-space:normal}
#history-chart{display:block;width:100%;max-height:200px;background:#102019;margin:12px 0}
#event-list{max-height:330px;overflow:auto;overscroll-behavior:contain}#event-list p{padding:10px 0;border-bottom:1px solid #35463b}
#event-list button{margin-left:10px}#command-list .card{margin:10px 0}

.build-tools .symbol img{display:block;object-fit:contain;image-rendering:auto}

/* Map and console: each has its own bounded viewport. */
body{display:block}#workspace{height:100%;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:8px;padding:8px;position:relative;min-width:0;min-height:0}
#world-panel,#build-panel{min-width:0;min-height:0;border:1px solid var(--line);border-radius:9px;overflow:hidden}
#world-panel{grid-column:1;grid-row:1;position:relative;background:#0d1714}#build-panel{grid-column:2;grid-row:1;display:flex;flex-direction:column;background:var(--panel)}
.dock-collapsed #workspace{grid-template-columns:minmax(0,1fr)}.dock-collapsed #build-panel{display:none}
#topbar{display:flex;align-items:center;gap:5px;padding:5px 8px;border-bottom:1px solid var(--line);flex-shrink:0;min-width:0}
#topbar nav{display:flex;gap:3px;align-items:center;flex-shrink:0}#topbar button{padding:4px 6px;font-size:11px;min-height:30px}#dock-close{width:28px}
#topbar #city-menu{display:flex;align-items:center;gap:4px;flex:1;min-width:0;padding:3px 0;text-align:left;background:transparent;border-color:transparent}#city-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}#city-menu span{color:var(--muted)}
/* Three 24px rows: stock, city status, navigation. */
#hud{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:1px 6px 0;gap:0;flex-shrink:0;font-variant-numeric:tabular-nums}
#hud>button{display:flex;align-items:center;justify-content:center;min-width:0;min-height:24px;gap:3px;padding:0 2px;border:0;border-radius:0;background:transparent;white-space:nowrap}#hud>button:hover{background:#25372d}
#hud span{color:var(--muted);font-size:11px}#hud strong{font-size:12px;line-height:1.3;white-space:nowrap}#hud small{color:var(--green);font-size:10px;line-height:1;white-space:nowrap}#hud small.negative{color:#f0b28e}
#hud-status{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.25fr);padding:0 6px;gap:2px;flex-shrink:0;font-variant-numeric:tabular-nums}#city-vitals{display:contents}
#population-shortcut{display:flex;align-items:center;justify-content:center;gap:3px;padding:0;background:transparent;text-align:left;border:0;min-width:0;min-height:24px;font-size:11px;line-height:1.3;white-space:nowrap}#population-shortcut strong{font-size:11px}#population-shortcut span{color:var(--muted)}#population-shortcut small{display:none}#population-shortcut:hover{background:#25372d}
.core-health{font-size:11px;text-align:left;color:#bbcfb4;background:#203127;padding:5px 7px}#city-vitals .core-health{font-size:10px;padding:0;line-height:1.3;min-height:24px;background:transparent;border:0;white-space:nowrap;text-align:center}#city-vitals .core-health:hover{background:#25372d}
#alert-summary{margin:0;padding:0 2px;border:0;min-height:24px;font-size:11px;line-height:1.3;color:var(--gold);text-align:center;background:transparent;white-space:nowrap;min-width:0}#alert-summary.urgent{color:#ffb4a7;background:#3c2b24}
.dock-tabs{display:flex;gap:2px;padding:1px 6px;border-bottom:1px solid var(--line);flex-shrink:0}.dock-tabs button{flex:1;min-height:24px;padding:0 4px;font-size:12px;line-height:1.3;background:transparent;border:0;border-radius:3px}.dock-tabs [aria-selected=true]{color:var(--gold);background:#3a3e2b;box-shadow:inset 0 -2px var(--gold)}
.resource-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.resource-table th,.resource-table td{padding:10px 4px;border-bottom:1px solid var(--line);text-align:right;overflow-wrap:anywhere}.resource-table th:first-child{text-align:left}.resource-table thead{color:var(--muted);font-size:11px}
.dock-pane{padding:12px;overflow:auto;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#63785f transparent;flex:1}
#statusbar{border-top:1px solid var(--line);padding:7px 10px;font-size:10px;flex-shrink:0;max-height:70px;overflow:auto}#status{display:block;overflow-wrap:anywhere;color:#bec9b4}#status.error{color:var(--red)}#save-status{display:block;color:#899e89;font-size:9px;margin-top:2px}
/* Controls remain available with the console closed. */
#canvas-wrap{position:relative;width:100%;height:100%;overflow:hidden}#world{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}
.map-overlay-tools{position:absolute;inset:10px 10px auto;display:flex;align-items:start;gap:8px;pointer-events:none;z-index:2}.map-overlay-tools>*{pointer-events:auto}#active-tool{font-size:11px;padding:6px 9px;border:1px solid #475740;background:#142019ed;border-radius:5px;pointer-events:none}
#dock-toggle{display:none;margin-left:auto;font-size:12px;background:#203025f5}.dock-collapsed #dock-toggle{display:block}#map-pause{display:none;font-size:11px;background:#203025f5}.dock-collapsed #map-pause{display:block}
#paused-banner{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:#101b14e8;color:#e2cc96;border:1px solid #766640;padding:6px 13px;border-radius:5px;font-size:11px;pointer-events:none;text-align:center;max-width:calc(100% - 260px)}
#map-core-status{display:none;position:absolute;right:10px;top:58px;z-index:2}.dock-collapsed #map-core-status{display:block}
#map-alert{display:none;position:absolute;left:12px;top:96px;max-width:calc(100% - 24px);font-size:11px;text-align:left;background:#3c2b24ed;border-color:#966151;color:#ffb4a7}.dock-collapsed #map-alert:not([hidden]){display:block}
#map-message{position:absolute;bottom:100px;left:12px;max-width:calc(100% - 230px);padding:7px 10px;background:#102018f5;border:1px solid #4d674d;border-radius:5px;font-size:12px;pointer-events:none;overflow-wrap:anywhere;z-index:3}#map-message.error{color:var(--red);border-color:#966151}
#minimap-wrap{position:absolute;bottom:12px;right:12px;background:#101914ef;border:1px solid #4a5c49;padding:7px;border-radius:7px;box-shadow:0 4px 18px #0005}#minimap-wrap>span{display:block;font-size:10px;color:var(--muted);margin:4px 0}#minimap{display:block;width:144px;height:96px;margin:auto;cursor:crosshair;touch-action:none}
.map-actions{display:flex;align-items:center;gap:4px}.map-actions button{font-size:11px;padding:4px 6px;min-height:30px}.map-actions span{font-size:10px;color:var(--muted)}
#quickbar{position:absolute;left:12px;bottom:12px;z-index:2;padding:6px;border:1px solid #4a5c49;border-radius:8px;background:#142019f2;box-shadow:0 4px 18px #0004}#quick-tools{display:flex;gap:4px}#quick-tools button{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;width:54px;padding:7px 2px 4px;font-size:10px}#quick-tools img{object-fit:contain}#quick-tools kbd{position:absolute;left:4px;top:2px;font:9px system-ui;color:var(--muted)}#quick-toggle{display:none}#minimap-toggle{display:none}#mobile-nav{display:none}
/* Searchable construction catalog. */
.panel-title,.context-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.context-heading{margin-bottom:12px}.context-heading button{font-size:12px}.tag{font-size:10px;color:var(--muted)}
.mode-tools{display:flex;gap:6px;margin:8px 0}.mode-tools button{flex:1;font-size:12px}.build-search{position:relative;margin:10px 0}.build-search input{font-size:12px;padding-right:36px}.build-search button{position:absolute;right:3px;top:3px;padding:3px 7px;border:0;background:transparent}
#build-categories{display:flex;gap:3px;margin:8px 0}#build-categories button{flex:1;padding:6px 2px;font-size:12px;background:transparent}#build-categories [aria-pressed=true]{border-color:var(--gold);color:var(--gold);background:#3a3e2b}#build-search-status:empty{display:none}#build-search-status,#build-empty{font-size:12px;margin:8px 0}
.build-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}.build-tools button{display:grid;grid-template-columns:32px minmax(0,1fr);gap:3px 7px;align-items:center;text-align:left;padding:9px 7px;min-width:0}.build-tools img{grid-row:1/3;object-fit:contain}.build-tools span{font-size:12px;overflow-wrap:anywhere}.build-tools small{grid-column:2;font-size:10px;line-height:1.5;color:var(--muted)}
#tool-description p{line-height:1.6}.tool-cost{color:var(--gold);margin-bottom:5px}
#opening-guide,#housing-planner,#population-planner{border:0;padding:0;margin:10px 0}summary{font-size:12px;color:var(--muted);background:transparent}details[open]>summary{margin-bottom:10px}details.help>summary{border-style:dashed}details p{font-size:12px;white-space:pre-line;overflow-wrap:anywhere;margin:8px 0}
.card{background:#142019;border:1px solid var(--line);border-radius:7px;padding:12px;margin:10px 0}.card h3{color:#dedcc3;margin-bottom:6px}.card p{font-size:12px;white-space:pre-line;overflow-wrap:anywhere}.intro{font-size:12px;margin:8px 0 12px}.inline{display:flex;gap:6px;flex-wrap:wrap}.wide{width:100%}
/* Task-specific workspaces. */
.workforce-summary{font-size:12px;margin:8px 0}#workforce-groups details{margin:5px 0;border:0;padding:0}#workforce-groups summary{color:var(--text);font-size:12px;padding:9px;margin-bottom:0}#workforce-groups details[open]>summary{margin-bottom:8px}#workforce-groups details>button{font-size:11px}.workforce-row{border-bottom:1px solid var(--line)}.workforce-location,.workforce-edit{font-size:12px}
.workforce-submit{bottom:-12px;background:#17291ff7;padding:8px 0}.workforce-submit #workforce-preview{font-size:12px}.workforce-submit #workforce-apply{width:100%}
#selection{margin-top:0}#staff-label{display:block;font-size:12px;margin:10px 0}#staff-controls button{font-size:12px;padding:6px 8px}#repair{margin-top:8px}
.management-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0}.management-actions button{padding:10px;text-align:left;font-size:14px;color:var(--gold)}.management-actions small{display:block;font-size:10px;margin-top:3px;color:var(--muted)}
#frontier-status,#civic-status,#surge-status{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:11px;background:#203025;border:1px solid #4b563d;border-radius:7px;font-size:12px;margin:10px 0}#frontier-status strong,#civic-status strong,#surge-status strong{width:100%;color:var(--gold)}#frontier-status span,#civic-status span,#surge-status span{width:100%;color:var(--muted)}#frontier-status button,#civic-status button,#surge-status button{font-size:11px;padding:5px 8px}
#civic-status{background:#192c26;border-color:var(--line)}#civic-status #needs-label{color:var(--green)}#civic-status.shortage #needs-label{color:#ffc48a}#surge-status{background:#322c24;border-color:#6b5d43}
.system-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0 22px}.system-actions button{font-size:12px;padding:9px 6px}.city-stat{display:grid;gap:3px;margin-bottom:18px}.city-stat span,.city-stat small{color:var(--muted);font-size:11px}.city-stat strong{font-size:17px;overflow-wrap:anywhere}
.map-settings{margin:10px 0}.map-caption{display:grid;gap:4px;min-width:0}.map-caption strong{font-size:12px;overflow-wrap:anywhere}.map-caption span{font-size:11px;color:var(--muted)}.map-footer{padding:10px 0;font-size:11px;color:var(--muted)}.map-footer span{display:block;white-space:pre-line;margin-bottom:8px}
@media(max-width:1100px){#quick-toggle{display:block;font-size:11px;width:100%;padding:6px}#quick-tools{display:none;margin-top:6px}#quickbar.expanded #quick-tools{display:grid;grid-template-columns:repeat(3,1fr)}#map-message{bottom:200px}}
@media(max-width:700px){
 /* v3.4.8: the panel is a FIXED-height bottom block, not an expanding overlay — it never
    grows to cover the map. The map keeps a real, resizable share of the screen (grid row 1,
    1fr) at all times; the panel is grid row 2, height pinned to a constant 46dvh regardless
    of which pane or how much content it holds (each .dock-pane scrolls internally). Its
    own margin-bottom clears the persistent nav bar so nothing sits underneath it. The
    dock-tabs row inside the panel duplicated that same nav (建設/人口/研究 appeared twice),
    so it's hidden here; the bottom nav is the only pane-switcher on mobile now. */
 #workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;padding:5px;gap:0}
 #build-panel{position:static;grid-column:1;grid-row:2;width:auto;height:46dvh;margin:6px 0 66px;box-shadow:0 -8px 20px #0009;border-color:#657252}
 .dock-tabs{display:none}
 #topbar button{min-height:34px}.dock-pane{padding:10px}.dock-pane button,.dock-pane summary{min-height:36px}.build-tools button{padding:9px 6px}#build-categories button{font-size:11px;min-height:36px}
 .map-overlay-tools{inset:8px 8px auto;gap:5px}#map-pause{min-height:36px;font-size:11px;padding:7px}#active-tool{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#paused-banner{max-width:calc(100% - 32px);font-size:10px;padding:5px 8px}#map-core-status{right:8px;font-size:10px}#map-alert{left:8px;font-size:10px;max-width:calc(100% - 16px)}
 /* v3.4.5: one persistent bottom bar (建築/人口/研究/系統/地圖) is the whole mobile nav,
    fixed to the viewport so it never drifts on tall devices and stays above the panel
    overlay. Quick-build drops off mobile entirely (reachable inside 建築's common list);
    the minimap keeps its own small toggle, positioned clear of the bar. */
 #dock-toggle,#quickbar,.dock-collapsed #dock-toggle{display:none}
 #mobile-nav{display:flex;position:fixed;left:8px;right:8px;bottom:8px;z-index:11;gap:5px;background:#142019ed;border:1px solid #475740;border-radius:8px;padding:5px;box-shadow:0 4px 18px #0004}
 #mobile-nav button{flex:1;min-height:44px;padding:4px 2px;font-size:11px;background:transparent;border:1px solid transparent}
 #mobile-nav button[aria-current=true]{border-color:var(--gold);color:var(--gold);background:#3a3e2b}
 #minimap-wrap{bottom:66px;right:8px;padding:5px}#minimap-toggle{display:block;min-height:36px;font-size:11px;padding:6px}
 #minimap-body{display:none;position:absolute;bottom:100%;right:0;margin:0 0 8px;background:#101914ef;border:1px solid #4a5c49;padding:7px;border-radius:7px;box-shadow:0 4px 18px #0005}
 #minimap-wrap.expanded #minimap-body{display:block}
 #minimap{width:96px;height:64px}.map-actions{display:grid;grid-template-columns:32px 38px 32px;gap:3px}.map-actions #home{grid-column:1/-1}.map-actions button{min-height:32px}.map-actions span{text-align:center}
 #map-message{bottom:150px;left:8px;max-width:calc(100% - 16px);font-size:11px}
 .save-card{flex-wrap:wrap}.save-card .inline{flex-wrap:wrap}dialog{padding:16px}.workforce-submit{bottom:-10px}#statusbar{max-height:54px}
}
@media(max-height:600px){#statusbar{max-height:40px}}

/* v3.3: job totals stay visible; individual assignments are secondary, read-only. */
.job-group{border-bottom:1px solid var(--line);padding:9px 0;min-width:0}
.job-group.empty .job-total,.job-group.empty details{display:none}.job-group.empty .job-heading{margin-bottom:0}.job-group.empty{padding:8px 0;color:var(--muted)}
.job-heading{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:12px;margin-bottom:6px}.job-heading small{font-size:11px;color:var(--muted)}
.job-total{display:grid;grid-template-columns:32px minmax(40px,1fr) 32px 54px;gap:5px;align-items:center}.job-total input{min-width:0;width:100%;text-align:center;margin:0;padding:5px;font-size:13px}.job-total button{padding:4px;min-height:30px;font-size:12px}
#workforce-groups .job-group summary{padding:4px 0;font-size:10px;color:var(--muted);min-height:24px}#workforce-groups .workforce-row{padding:6px 0}#workforce-groups .workforce-row button{font-size:11px}
.workforce-submit{position:sticky;z-index:3;border-top:1px solid var(--line);max-height:46%;overflow-y:auto;flex-shrink:0}#workforce-preview{white-space:pre-line}
@media(max-width:700px){.job-total button,.job-total input{min-height:36px}}

/* v3.4: two everyday pages; secondary tools open above the map on demand. */
#secondary-tools{position:absolute;z-index:5;top:10px;right:10px;display:flex;gap:5px}
#secondary-tools button{height:32px;padding:4px 12px;font-size:12px;background:#17271f}
#topbar{padding:3px 8px}#topbar button{min-height:30px}
#hud{grid-template-columns:1.6fr 1fr 1fr .8fr}#hud small{font-size:10px}
#hud-status{grid-template-columns:1.3fr .8fr 1.1fr}#population-shortcut small{display:inline;font-size:10px;color:var(--green)}
#threat-summary{flex-shrink:0;min-height:22px;max-width:100%;padding:2px 8px;border:0;border-radius:0;background:#202c22;color:var(--gold);font-size:10px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dock-tabs button{min-height:30px;font-size:13px}
.dock-pane{padding:8px 10px}.dock-pane h2{font-size:14px;margin:4px 0 8px}
#statusbar{padding:4px 8px;max-height:42px}
#pane-build .panel-title{display:none}#opening-guide{padding:5px 8px;margin:0 0 6px}
#pane-build .mode-tools{gap:5px;margin:6px 0}#pane-build .mode-tools button{min-height:32px;padding:3px 8px;font-size:12px}
.build-tools{gap:4px}.build-tools button{height:36px;min-height:32px;padding:2px 5px;grid-template-columns:24px minmax(0,1fr);column-gap:5px;row-gap:0}
.build-tools img{width:24px;height:24px}.build-tools span{font-size:12px;white-space:nowrap}.build-tools small{font-size:9px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#build-categories button{min-height:32px;padding:3px 5px;font-size:11px}
#build-search-status:empty{display:none}#tool-description{margin:4px 0;padding:5px}
#population-planner{padding:6px 0;margin:4px 0 8px;border:0;border-bottom:1px solid var(--line);border-radius:0}
.recruit-line{display:flex;align-items:center;gap:8px}.recruit-line button{flex-shrink:0;height:32px;padding:3px 8px;font-size:12px}#recruit-forecast{font-size:10px;color:var(--muted);line-height:1.4}
#population-planner #recruit-reason{font-size:10px;line-height:1.4;margin:5px 0}
#population-planner summary,.dock-pane .help>summary{font-size:11px;min-height:26px;padding:4px 0;cursor:pointer}
#workforce-summary{font-size:11px;margin:4px 0}.dock-pane .help{margin:6px 0;padding:0;border:0}
.job-group{position:relative;padding:2px 0;min-height:36px}.job-heading{position:absolute;left:0;top:2px;width:54px;height:32px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:0;margin:0;font-size:12px}.job-heading small{font-size:9px;color:#f0b28e}
.job-total{display:grid;grid-template-columns:28px minmax(32px,1fr) 26px 28px;gap:2px;margin-left:56px;margin-right:42px;height:32px}
.job-total input{height:32px;min-height:32px;padding:2px;font-size:12px;border:0;background:#112219;appearance:textfield}.job-total input::-webkit-inner-spin-button{appearance:none}
.job-total button{height:32px;min-height:32px;padding:0;font-size:14px}.job-capacity{font-size:11px;color:var(--muted)}
.job-group>details{margin:0}.job-group>details>summary{position:absolute;right:0;top:2px;display:flex;align-items:center;justify-content:center;width:38px;height:32px;padding:0!important;font-size:10px;list-style:none;cursor:pointer;background:#24352b;border-radius:4px}.job-group>details>summary::-webkit-details-marker{display:none}
.job-group>details[open]{padding-top:8px}.job-group>details>button{height:32px;padding:3px 8px;font-size:11px}
.job-group.empty{min-height:32px;padding:0}.job-group.empty .job-heading{position:static;height:30px;flex-direction:row;width:100%;justify-content:space-between;align-items:center}.job-group.empty .job-heading small{color:var(--muted)}
.workforce-submit{position:sticky;bottom:-8px;background:#17291f;padding:5px 0;max-height:none;overflow:visible}#workforce-brief{font-size:10px;line-height:16px;min-height:16px;overflow-wrap:anywhere}
.commit-actions{display:grid;grid-template-columns:1.5fr 1fr .7fr;gap:5px;margin-top:3px}.commit-actions button,.workforce-submit #workforce-apply{width:auto;height:32px;min-height:32px;margin:0;padding:3px 6px;font-size:12px}#workforce-detail{max-height:150px;overflow:auto;margin-top:5px}
#management-dialog{width:min(680px,calc(100vw - 24px))}#system-dialog{width:min(420px,calc(100vw - 24px))}#management-body>.dock-pane,#system-body>.dock-pane{padding:0;overflow:visible}
#management-body .management-actions{grid-template-columns:repeat(4,1fr)}#management-body .management-actions button{min-height:36px;padding:5px;font-size:12px;text-align:center}#management-body .management-actions small{display:none}
#pane-inspect .card{padding:8px;margin:6px 0}#pane-inspect p{font-size:11px;line-height:1.5}#staff-controls>button{min-height:32px;padding:5px;font-size:12px}#staff-controls details{margin-top:6px;font-size:11px}
@media(max-width:700px){.dock-pane button,.dock-pane summary{min-height:26px}.job-total button,.job-total input{min-height:32px}.build-tools button{min-height:32px;padding:2px 5px}#build-categories button{min-height:32px}.workforce-submit{bottom:-8px}#secondary-tools{top:50px;right:8px}#threat-summary{font-size:10px}}
@media(pointer:coarse){
 button,summary,input,select,.download-button{min-height:44px!important}
 #hud-status{display:flex;flex-wrap:wrap}#hud-status>button,#city-vitals>button{flex:1;min-width:80px}#threat-summary{white-space:normal;text-align:center}
 .job-group{min-height:48px}.job-heading{height:44px}.job-total{height:44px;grid-template-columns:36px minmax(32px,1fr) 24px 36px}.job-group>details>summary{height:44px;width:40px}.job-group.empty .job-heading{height:44px}
 .build-tools button{height:48px}.commit-actions button{height:44px}.recruit-line{flex-wrap:wrap}
}

/* Keep the desktop fixed header below 140px including borders. */
@media (min-width:701px) and (pointer:fine){#topbar{padding-top:2px;padding-bottom:2px}}

#workforce-groups .job-group>details{margin:0}
@media(pointer:coarse){button,summary{min-width:44px}.job-total{grid-template-columns:44px minmax(30px,1fr) 24px 44px;margin-right:48px}.job-group>details>summary{width:44px}}

@media(pointer:fine){.job-group{padding-top:1px;padding-bottom:1px}.job-heading,.job-group>details>summary{top:1px}}

/* Keep maximum assignment beside the common controls instead of inside details. */
.job-total{grid-template-columns:28px minmax(32px,1fr) 44px 28px 36px}
.job-capacity{white-space:nowrap;text-align:right}
.job-total .job-fill{font-size:11px}
@media(pointer:coarse){
 .job-heading{position:static;width:calc(100% - 48px);flex-direction:row;justify-content:space-between}
 .job-total{margin:0;grid-template-columns:44px minmax(30px,1fr) 44px 44px 48px}
}

.dock-collapsed #secondary-tools{top:96px}
.dock-collapsed #map-alert{top:138px}
@media(max-width:700px){.dock-collapsed #map-core-status{top:8px}.dock-collapsed #paused-banner{top:44px}.dock-collapsed #map-alert{top:78px}}

#recruit-capacity{font-size:11px;line-height:1.45;margin:4px 0 7px;color:var(--text)}#recruit-help{font-size:11px;min-height:28px;padding:3px 8px;margin:0 0 5px;max-width:100%;white-space:normal}

@media(pointer:coarse){#recruit-help{min-height:44px}}

#population-feedback:empty,#workforce-feedback:empty{display:none}#population-feedback,#workforce-feedback{font-size:11px;margin:5px 0;color:var(--gold)}
#pane-growth .growth-grid{grid-template-columns:minmax(0,1fr);gap:6px}#pane-growth .card{padding:8px;margin:0}#pane-growth .card h3{font-size:12px}#pane-growth p{font-size:11px;line-height:1.45;white-space:pre-line;margin:5px 0}#pane-growth button{font-size:11px;min-height:28px;padding:4px 6px;max-width:100%;white-space:normal}#pane-growth #research-lines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:5px 0}#research-current{color:var(--gold)}@media(pointer:coarse){#pane-growth button{min-height:44px}}

/* Coverage stays on the map; no extra fixed sidebar rows. */
#coverage-mode{width:112px;min-height:30px;margin:0;padding:3px 5px;font-size:11px;background:#192d24;color:#e1dfc6;border:1px solid #465548;border-radius:5px}
#coverage-legend{position:absolute;top:47px;left:10px;max-width:min(580px,calc(100% - 30px));margin:0;padding:6px 9px;background:#10221bef;border:1px solid #729a91;border-radius:5px;color:#d7eeee;font-size:11px;line-height:1.5;pointer-events:none;max-height:100px;overflow:hidden}
@media(max-width:700px){#coverage-legend{top:112px;left:8px;max-width:calc(100% - 16px);font-size:10px;max-height:112px}#coverage-mode{width:100px}body:not(.dock-collapsed) #coverage-legend{display:none}}

/* v3.4.4: on-demand management only; the map and fixed HUD keep their dimensions. */
.diagnostic-row,.battle-row {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;padding:8px 0;border-bottom:1px solid #344b3e}
.diagnostic-row small,.battle-row small {grid-column:1 / -1;overflow-wrap:anywhere;color:var(--muted,#a5b5a8)}
.diagnostic-row button,.battle-row button {min-height:28px;padding:3px 8px;text-align:left;font-size:12px}
.diagnostic-row button:last-child {grid-column:2;grid-row:1}
#diagnostic-groups details,#battle-details details {margin:8px 0}
#diagnostic-groups summary {cursor:pointer}
#coverage-chain-control {display:flex;align-items:center;gap:6px;font-size:12px}
#coverage-chain-control[hidden] {display:none}
#coverage-full-chain {width:auto;margin:0}
