body.command-candidate .workspace.panel-open { grid-template-columns:minmax(0,1fr) 332px; }
body.command-candidate .map-wrap { position:relative; }
body.command-candidate .map-card { grid-template-rows:auto minmax(0,1fr); }
.command-brief h3 { margin:6px 0; color:#c2bdae; font-size:18px; }
.command-brief p { line-height:1.55; margin:7px 0; }
.command-problems { display:flex; flex-wrap:wrap; gap:8px; padding:8px 0; color:#cfc6ac; font-size:12px; }
.command-plan-members { display:flex; flex-wrap:wrap; gap:5px; margin:10px 0; }
.command-brief .button-row { display:flex; flex-wrap:wrap; gap:4px; margin:7px 0; }
.command-brief small { display:block; font-size:11px; line-height:1.6; color:#b0aea6; }
.command-unit-list { display:grid; gap:4px; max-height:160px; overflow:auto; }
.command-brief summary { cursor:pointer; font-size:12px; }
.command-next { border-left:2px solid #afa380; padding-left:8px; }
.command-picking { color:#ddcfa5!important; }
.command-control-german { fill:#79b2d4;fill-opacity:.12;stroke:#79b2d4;stroke-opacity:.3;stroke-width:1; }
.command-control-soviet { fill:#db8f7c;fill-opacity:.12;stroke:#db8f7c;stroke-opacity:.3;stroke-width:1; }
.command-member-ring { stroke:#d6c89e;stroke-width:2;fill:none;stroke-dasharray:4 3; }
.command-problem-mark { fill:#dfdaca;font-size:13px;paint-order:stroke;stroke:#313230;stroke-width:4px; }
.command-goal { fill:#d6c89e;fill-opacity:.08;stroke:#d6c89e;stroke-width:3;stroke-dasharray:5 4; }
.command-plan-label { fill:#d6d1c1;font-size:12px;paint-order:stroke;stroke:#313130;stroke-width:4px; }
.command-plan-arrow { stroke:#d6c89e;stroke-width:2;stroke-dasharray:7 5; }
.command-actual-path { fill:none;stroke:#b7b5ad;stroke-width:3; }
.command-loss-record { fill:none;stroke:#de927f;stroke-width:2; }
#command-picker polygon { pointer-events:all;cursor:crosshair; }
#command-picker polygon:hover { fill:#d9cba144;stroke:#c2bdae;stroke-width:2; }
#command-map-note { position:absolute;left:12px;bottom:12px;z-index:4;display:grid;gap:4px;max-width:min(500px,calc(100% - 24px));padding:10px 14px;background:#1b1b19ea;border:1px solid #aaa08066;pointer-events:none;color:#cec9bb;font-size:12px;line-height:1.4; }
#command-map-note strong {color:#c2bdae;}
#command-map-note span {display:block;}
body.command-candidate .command-panel-scroll>.selection-block { padding-block:10px; }
@media(min-width:901px) and (max-width:1100px){body.command-candidate .topbar{grid-template-columns:200px minmax(210px,1fr) auto;}body.command-candidate .brand strong{font-size:17px;letter-spacing:.1em;}body.command-candidate .map-toolbar{min-height:68px;}body.command-candidate .map-controls{flex-wrap:wrap;}}
@media(max-width:1100px){body.command-candidate .workspace.panel-open{grid-template-columns:minmax(0,1fr) 304px;}#command-map-note{font-size:11px;max-width:380px;padding:8px;}}
@media(max-width:760px){body.command-candidate .workspace.panel-open{grid-template-columns:minmax(0,1fr);}#command-map-note{max-width:200px;font-size:10px;}}

.flow-controls { border-left: 3px solid #aaa083; }
.flow-controls label { display: flex; align-items: center; gap: .5rem; font-size: 13px; line-height: 1.5; cursor: pointer; }
.flow-controls input { width: 18px; height: 18px; flex-shrink: 0; accent-color: #b6ac8d; }
.flow-controls p, .flow-refit p { font-size: 12px; line-height: 1.5; margin: .5rem 0; }
.flow-controls summary { cursor: pointer; font-size: 12px; }
.flow-controls .eyebrow { margin-bottom: .6rem; display: block; }
.flow-refit { border-bottom: 1px solid #746c554d; padding-bottom: .4rem; margin: .5rem 0 .8rem; }
.flow-refit strong { color: #c0baab; }
@media (min-width: 901px) and (max-width: 1100px) {
    .topbar { grid-template-columns: 200px minmax(210px, 1fr) auto; }
    .brand strong { font-size: 17px; letter-spacing: .1em; }
    .map-toolbar { min-height: 68px; }
    .map-card { grid-template-rows: auto minmax(0, 1fr); }
    .map-toolbar > div:first-child { min-width: 132px; }
    .map-controls { flex-wrap: wrap; }
}
/* ART-UI-022 selective layout port: map-first, warm compact dock. Original map,
   hit targets, assets and loading pipeline retained. No industry ledger/state. */
body.playable-integrated{--panel:#2c2c2b;--panel-deep:#2c2c2b;--line:#696863;--muted:#b8b7b3;background:#1b1b19;color:#d4cfbf}
.playable-integrated #app.has-workspace{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.playable-integrated .topbar{flex:0 0 52px;height:52px;padding:0 16px;background:#1b1b19;grid-template-columns:1fr 1.2fr auto;gap:10px}
.playable-integrated .brand span{display:none}.playable-integrated .brand strong{font:22px Georgia;letter-spacing:2px}
.playable-integrated .workspace,.playable-integrated .workspace.panel-open{flex:1;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(220px,1fr) minmax(200px,31vh);height:auto;min-height:0;gap:0;padding:0}
.playable-integrated .workspace.panel-collapsed{grid-template-rows:minmax(0,1fr)}
.playable-integrated .map-card{border:0;min-height:0;box-shadow:none;width:100%;grid-template-rows:auto minmax(0,1fr)}
.playable-integrated .map-card.network-map-card{grid-template-rows:auto auto minmax(0,1fr)}
.playable-integrated .map-toolbar{min-height:44px;padding:4px 12px;background:#2c2c2b;gap:8px}.playable-integrated .map-controls{flex-wrap:wrap;gap:4px}.playable-integrated .map-controls button,.playable-integrated .map-controls select{min-height:36px}
.playable-integrated .network-match-status{min-height:22px;font-size:12px;padding:3px 14px;background:#2c2c2b;color:#c2bcad}
.playable-integrated .workspace.panel-open .side-panel{position:static;inset:auto;width:auto;max-height:none;min-height:0;border:0;border-top:3px double #8a8984;border-radius:0;box-shadow:0 -3px 14px #18181655;background:#d0cbbc;color:#242423;overflow:hidden;display:flex}
.playable-integrated .side-panel:before{display:none}
.playable-integrated .playable-dock{display:grid;grid-template-columns:minmax(280px,1.35fr) minmax(200px,.8fr) minmax(250px,1fr);gap:14px;overflow:hidden;padding:10px 16px}
.playable-dock>div{min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:8px}
.playable-integrated .side-panel .panel-block{background:transparent;border:0;border-bottom:1px solid #afaea8;padding:8px;color:#2b2b2a}
.playable-integrated .side-panel p,.playable-integrated .side-panel small,.playable-integrated .side-panel span,.playable-integrated .side-panel strong,.playable-integrated .side-panel h3,.playable-integrated .side-panel dd,.playable-integrated .side-panel dt{color:inherit}
.playable-integrated .side-panel .eyebrow{color:#585651!important}
.playable-integrated .side-panel button{background:#c8c3b2;border-color:#9d9b95;color:#2b2b2a;min-height:40px}
.playable-integrated .side-panel .primary-action{background:#55534b;color:#e6e1d2}.playable-integrated .side-panel button:disabled{opacity:.45}
.playable-options label{display:flex;align-items:center;gap:8px;min-height:40px;font-size:13px;cursor:pointer}.playable-options input{width:19px;height:19px;accent-color:#55534b}
.playable-integrated #command-map-note{position:static;max-width:none;pointer-events:auto;background:#c7c2b2;color:#2b2b2a;border:0;font-size:11px;padding:8px}.playable-integrated #command-map-note strong{color:#2b2b2a}
.playable-integrated .local-ai-status{flex:0 0 auto;order:-1;min-height:38px;padding:3px 12px;background:#1b1b19;gap:10px;font-size:12px}.playable-integrated .local-ai-status>strong{display:none}.playable-integrated .local-ai-status button{min-height:32px}.playable-integrated .local-ai-status textarea{height:64px;max-width:240px}.playable-integrated footer{flex:0 0 22px;height:22px;background:#1b1b19;font-size:10px}
.playable-integrated .deployment-confirm{max-height:105px;overflow:auto;padding:6px 16px!important;display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#c5c0b1!important;color:#2b2b2a}.playable-integrated .deployment-confirm button{width:auto;min-width:160px}.playable-integrated .deployment-confirm p{color:#2b2b2a}
.playable-integrated .home-screen{height:100dvh;overflow:auto;padding:clamp(24px,6vw,80px);max-width:900px;margin:auto}.playable-integrated .home-screen h1{font:34px Georgia,serif;letter-spacing:2px}.playable-integrated .home-screen p{line-height:1.65;max-width:700px}.playable-integrated .home-screen label{display:block}.playable-test-scenes{margin:20px 0}.playable-test-scenes summary{cursor:pointer;min-height:44px}
@media(max-width:1100px){.playable-integrated .playable-dock{grid-template-columns:minmax(240px,1.15fr) minmax(170px,.75fr) minmax(220px,1fr);gap:8px;padding:6px 10px}.playable-integrated .topbar{grid-template-columns:auto 1fr auto;padding:0 10px}.playable-integrated .brand strong{font-size:18px}.playable-integrated .map-toolbar>div:first-child{display:none}.playable-integrated .workspace.panel-open{grid-template-rows:minmax(200px,1fr) minmax(220px,36vh)}.playable-integrated .side-panel button{min-height:44px}}
@media(max-width:850px){.playable-integrated .playable-dock{grid-template-columns:minmax(250px,1fr) minmax(220px,1fr)}.playable-inspect{display:none}.playable-integrated .resource-strip>span{display:none}.playable-integrated .brand{display:none}.playable-integrated .topbar{grid-template-columns:1fr auto}.playable-integrated .workspace.panel-open{grid-template-rows:minmax(200px,1fr) minmax(250px,37vh)}}
@media(max-width:560px){.playable-integrated .playable-dock{grid-template-columns:minmax(0,1fr);overflow:auto}.playable-dock>div{overflow:visible}.playable-integrated .topbar{height:auto;flex-wrap:wrap}.playable-integrated .workspace.panel-open{grid-template-rows:minmax(160px,1fr) minmax(200px,40vh)}}
/* Keep inherited dark-skin values legible in the ART paper dock. */
.playable-integrated .side-panel .phase-metric,.playable-integrated .side-panel .command-problems,.playable-integrated .side-panel .issue-list,.playable-integrated .side-panel .flow-refit,.playable-integrated .side-panel .button-row,.playable-integrated .side-panel .roster-row small,.playable-integrated .side-panel .roster-row b{color:#444543}
.playable-integrated .side-panel .issue-list{color:#743a25}
.playable-integrated .side-panel .roster-row{min-height:80px;height:auto;flex-shrink:0;grid-template-columns:44px minmax(0,1fr) auto;overflow:visible}
.playable-integrated .side-panel .roster-list{grid-auto-rows:minmax(80px,auto);max-height:180px}
.playable-integrated .side-panel .deployment-steps{margin:5px 0}.playable-integrated .side-panel .location-card{min-height:100px}
.playable-integrated .side-panel .primary-action span{color:#e6e1d2}.playable-integrated .side-panel .roster-emblem{color:#d0cbbc}
.playable-integrated .topbar{min-height:52px}.playable-integrated .map-card{gap:0}.playable-integrated .roster-emblem{width:36px;height:36px}.playable-integrated .playable-options strong{display:flex;align-items:center;gap:8px}.playable-options img{width:28px;height:28px}
.playable-integrated .side-panel .attack-matchup,.playable-integrated .side-panel .combat-attacker-chip,.playable-integrated .side-panel .combat-grid>div,.playable-integrated .side-panel .dice-box,.playable-integrated .side-panel .die{background:#c5c0b1;color:#2b2b2a;border-color:#9d9b95}
.playable-integrated .side-panel .combat-advanced summary,.playable-integrated .side-panel .combat-modifier-summary{color:#54524b}
.playable-integrated .side-panel .combat-crt{background:#d0cbbc;color:#2b2b2a}.playable-integrated .side-panel .combat-crt th,.playable-integrated .side-panel .combat-crt td{color:#2b2b2a;border-color:#9d9b95}

.playable-integrated .rail-primary{display:flex;gap:6px;position:sticky;top:0;background:#d0cbbc;z-index:2;padding:4px 0}.rail-primary button{flex:1}.playable-actions select{max-width:100%;min-height:40px}

.logistics-ops{display:grid;gap:5px}.logistics-panel pre{white-space:pre-wrap;word-break:break-word;font-size:11px}.logistics-panel table{font-size:12px;width:100%}.logistics-panel button{min-height:40px}

.freight-planner{border-top:1px solid #b8af96;margin-top:10px;padding-top:10px}.freight-planner table{font-size:12px;width:100%;border-collapse:collapse}.freight-planner td,.freight-planner th{padding:4px;text-align:left;border-bottom:1px solid #beb9ab}.freight-planner pre{max-height:260px;overflow:auto;font-size:11px}.freight-planner select{max-width:150px;min-height:32px}.freight-planner button{white-space:normal}

/* GRAND001: only visible authorized counters enter the scene. */
.grand-far .counter text,.grand-far .unit-plate text{display:none}
.grand-panel select{max-width:100%;width:100%;min-height:44px}.grand-panel button{min-height:44px}.grand-panel pre{max-height:220px;overflow:auto;font-size:11px}.grand-panel label{display:block}.grand-panel p{line-height:1.45}
#eastfront-map[aria-label="大战略实验1280格地图"]{will-change:auto}

.city-panel{border-top:3px solid #998c67;background:#cfc9ba}.city-tabs{display:flex;gap:4px;flex-wrap:wrap}.city-tabs button[aria-pressed=true]{background:#4f4f4e;color:white}.city-panel select{width:100%;min-height:34px}.city-panel button{min-height:34px}.city-near{display:block}.city-far{display:none}.grand-far .city-near{display:none}.grand-far .city-far{display:block}[data-city-map]{cursor:pointer}

#city-districts~#grand-objectives circle{display:none}

/* GRAND-PLAY-001: reuse the map, keep choices in the existing dock. */
body.has-campaign-clock .phase-ribbon,body.has-campaign-clock #network-match-status{display:none}
.campaign-clock h2{font-size:18px;margin:0 0 8px}.campaign-clock strong{font-size:16px}.campaign-orders select{width:100%}.campaign-orders button{min-height:36px}.campaign-clock button{min-height:40px}
body.has-campaign-clock .playable-dock{grid-template-columns:minmax(240px,.95fr) minmax(210px,.75fr) minmax(300px,1.3fr)}
body.has-campaign-clock .playable-tools>details{padding:10px;border-top:1px solid #81807c}
@media(max-width:1000px){body.has-campaign-clock .playable-dock{grid-template-columns:1fr 1fr}body.has-campaign-clock .playable-tools{grid-column:1/-1}}

body.has-campaign-clock .resource-strip>span,body.has-campaign-clock .animation-controls{display:none}
body.has-campaign-clock .hex-grid{opacity:.12}
body.has-campaign-clock .campaign-turn{font-size:13px;max-width:160px}

body.has-campaign-clock .turn-strip,body.has-campaign-clock #grand-objectives,body.has-campaign-clock .map-toolbar>div:first-child>span{display:none}
#campaign-hud{font-size:15px;color:#d0cbbc;padding:10px;flex:1;text-align:center}

/* GRAND-MAP: controls share the existing operation panel. */
.battle-list{display:flex;flex-wrap:wrap;gap:4px}.battle-list button{font-size:12px}.battle-map-panel details{margin:8px 0}.map-legend{border-left:3px solid #c5b78d;padding-left:8px}.battle-bubble{cursor:pointer}.battle-bubble:focus rect{stroke:#ede8d9;stroke-width:4}#battle-detail{border:1px solid #897f60;padding:10px;background:#d7d1c2}#battle-detail p{line-height:1.45}#control-boundaries,#corps-fronts{pointer-events:none}

#eastfront-map[data-map-strategy="yes"] .counter-stats,#eastfront-map[data-map-strategy="yes"] .compact-stats{opacity:0}#eastfront-map[data-map-planning="no"] .production-grid{opacity:.20}

/* GRAND-MAP R1: map controls stay compact; only narrow arrow strokes accept clicks. */
.battle-map-panel .action-legend{font-size:11px;line-height:1.6}.battle-map-panel .action-detail{border-left:3px solid #8aafba;padding-left:7px}.battle-medallion:focus{outline:none}.battle-medallion:focus .battle-badge-rim{stroke:#e0dbcb;stroke-width:3}.actual-action-arrow:focus{outline:none}.actual-action-arrow:focus{opacity:1!important}.battle-list{display:flex;flex-wrap:wrap;gap:4px}.battle-list button{font-size:11px;padding:4px 7px}.battle-map-panel #battle-detail{max-height:300px;overflow:auto;border-top:1px solid #7d7b75;padding-top:6px}

.battle-roster{width:100%;border-collapse:collapse;font-size:11px}.battle-roster th,.battle-roster td{padding:3px 4px;border-bottom:1px solid #c3baa1;text-align:left}.battle-roster small{display:block;font-size:10px;font-weight:normal;color:#53534f}.battle-map-panel #battle-detail .button-row{gap:4px}.battle-map-panel #battle-detail button{padding:4px 6px;font-size:11px}

/* R2: display-only map hierarchy. Legacy non-continuous layouts are unchanged. */
body.has-r2-dock .workspace,body.has-r2-dock .workspace.panel-open{display:block;position:relative;min-height:0}
body.has-r2-dock .map-card{height:100%}
body.has-r2-dock .workspace.panel-open .side-panel{position:absolute;inset:44px 0 0;width:100%;border:0;background:none;box-shadow:none;pointer-events:none;overflow:visible;display:block}
.r2-dock{pointer-events:none;font-size:12px}
.r2-dock button,.r2-dock summary,.r2-dock input,.r2-dock select{pointer-events:auto}
body.has-r2-dock #map-wrap{--campaign-fit:calc(69dvh - 157px)}
body.has-r2-dock #eastfront-map,body.has-r2-dock #terrain-surface{position:absolute!important;width:100%!important;height:var(--campaign-fit)!important;top:calc((100% - var(--campaign-fit))/2)!important;left:0!important}
body.has-r2-dock [data-unit-presence-layer],body.has-r2-dock #map-dynamic-layer [data-unit-id],body.has-r2-dock #map-dynamic-layer [data-hit-unit-id]{display:none!important;pointer-events:none!important}
body.has-r2-dock .model-controls{display:none}
.r2-dock header{display:flex;align-items:center;justify-content:space-between;gap:8px}
body.has-r2-dock .r2-dock .campaign-clock{position:absolute;top:8px;left:12px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;max-width:calc(100% - 360px);padding:6px 8px;border:1px solid #7a7870;background:#272726f2;color:#d5d0c0;box-shadow:0 2px 7px #1a1b1988;pointer-events:auto}
.r2-dock .campaign-clock>h2,.r2-dock .campaign-clock>p{display:none}
.r2-dock .campaign-clock>strong{font-size:13px;white-space:nowrap;margin-right:6px}
.r2-dock .campaign-clock>.button-row{display:contents}
body.has-r2-dock .r2-dock button{min-height:30px;font-size:12px;padding:4px 7px;width:auto}
body.has-r2-dock .campaign-clock button{background:#3b3b3a;border-color:#7a7975;color:#dad5c7;min-width:32px}
.r2-dock .campaign-clock>details{font-size:11px}
.r2-dock .campaign-clock>details[open]{position:absolute;top:48px;left:0;background:#2a2a29;border:1px solid #7d7c78;padding:12px;width:320px;max-height:420px;overflow:auto;z-index:3;box-shadow:0 5px 14px #1a1b19aa}
.r2-left{position:absolute;bottom:12px;left:12px;width:270px;max-height:65%;overflow:auto;pointer-events:auto}
.r2-right{position:absolute;top:8px;right:12px;width:316px;max-height:calc(100% - 24px);overflow:auto;pointer-events:auto;scrollbar-width:thin}
body.has-r2-dock .r2-dock .battle-map-panel{display:flex;flex-direction:column;gap:6px;max-height:none;padding:0;border:0;background:none}
.r2-dock .r2-map-tools{order:4}.r2-dock .r2-battle-list{order:3}.r2-dock .battle-map-panel>details:last-child{order:5}
.r2-dock .r2-right>details,.r2-dock .battle-map-panel>details,.r2-dock #battle-detail,.r2-dock .r2-stack,.r2-dock .r2-unit,.r2-dock .action-detail{background:#d0cbbdf5;border:1px solid #888782;padding:8px;color:#2d2d2b;margin:0 0 6px;box-shadow:0 2px 7px #1a1b1955}
.r2-dock summary{cursor:pointer;font-weight:600;min-height:24px}
body.has-r2-dock .r2-dock #battle-detail{max-height:650px;overflow:auto;order:0}
.r2-dock #battle-detail h3{font-size:15px;margin:0}.r2-dock #battle-detail>p{font-size:12px;line-height:1.45;margin:8px 0}
.r2-dock #battle-detail>.button-row{display:flex;gap:4px;flex-wrap:wrap}.r2-dock #battle-detail .battle-roster{font-size:11px;width:100%}
.r2-dock .battle-roster td,.r2-dock .battle-roster th{padding:4px 2px}.r2-dock .battle-roster small{font-size:9px}
.r2-dock .r2-stack>button{display:block!important;width:100%!important;text-align:left;margin-top:4px}.r2-dock .r2-stack small{display:block;font-size:11px}
.r2-dock .r2-unit h3{font-size:15px}.r2-dock .r2-unit p{font-size:12px;margin:8px 0}.r2-dock .r2-unit .button-row{display:flex;flex-wrap:wrap;gap:4px}
.r2-dock .r2-orders .panel-block{padding:0;border:0}.r2-dock .r2-orders h3{display:none}
.r2-dock .r2-logistics{margin-top:6px}
@media(max-width:1000px){.r2-right{width:280px}.r2-left{width:230px}.r2-dock .campaign-clock{max-width:calc(100% - 310px)!important}}
body.has-r2-dock .map-card.network-map-card{grid-template-rows:auto minmax(0,1fr)}

body.has-r2-dock .workspace.panel-open .side-panel{z-index:2}

body.has-r2-dock #eastfront-map[data-r2-focus="battle"][data-map-planning="no"] #interaction-overlays{display:none}

.r2-dock .campaign-clock>p[role="status"]:not(:empty),.r2-dock .campaign-clock>p:has(b){display:block;flex-basis:100%;font-size:11px;margin:0}

/* GRAND-UNIT-001: exact own status, separate personnel from equipment. No value animation. */
.unit-dual-bars{display:block;min-width:122px;line-height:1.3;text-align:left}
.unit-status-row{display:grid;grid-template-columns:25px minmax(26px,1fr) 73px;gap:4px;align-items:center;margin:3px 0;font-size:10px;font-variant-numeric:tabular-nums}
.unit-status-track{display:block;height:7px;background:#292a28;border:1px solid #1d1d1c;border-radius:1px;overflow:hidden}
.unit-status-track>i{display:block;height:100%;transition:none!important;animation:none!important}
.unit-org-fill{background:#83c985}.unit-personnel-fill{background:#bfb188}
.unit-dual-bars>small{display:block;font-size:9px;color:#454544}
.unit-state-unknown{font-size:10px;color:#565653}.unit-gear-detail{font-size:11px;margin:5px 0}
.corps-status{font-size:12px;line-height:1.5;background:#c6c1b2;padding:6px;margin:5px 0}.corps-status small{display:block}
.r2-dock .battle-roster{table-layout:fixed}.r2-dock .battle-roster th:first-child{width:34%}.r2-dock .battle-roster th:last-child{width:10%}
.r2-dock .battle-roster .unit-status-row{grid-template-columns:23px minmax(20px,1fr);gap:2px;font-size:9px}
.r2-dock .battle-roster .unit-status-row>span:last-child{grid-column:2;font-size:9px;line-height:1.1}
.r2-dock .battle-roster .unit-dual-bars{min-width:0}.r2-dock .battle-roster .unit-status-track{height:7px}
.r2-dock .battle-roster th,.r2-dock .battle-roster td{overflow-wrap:anywhere}
.r2-dock .r2-stack>button{white-space:normal}.r2-dock .r2-stack>small{line-height:1.45}

.r2-dock .battle-roster td{vertical-align:top}.r2-dock .battle-roster small{line-height:1.4;margin:2px 0}.unit-gear-detail>div,.unit-gear-detail>small{line-height:1.45}

/* GRAND-UI-001: one command surface over the retained map. */
body.has-command-ui #local-ai-status,body.has-command-ui .topbar,body.has-command-ui .bottom-bar,body.has-command-ui .map-toolbar>div:first-child,body.has-command-ui .map-toolbar>span{display:none!important}
body.has-command-ui .workspace{height:100dvh!important;margin:0!important;flex:1!important}
body.has-command-ui .map-card,body.has-command-ui .map-card.network-map-card{height:100dvh!important;display:block!important;position:relative}
body.has-command-ui #map-wrap{height:100%!important;--campaign-fit:100dvh}
body.has-command-ui .map-toolbar{position:absolute;top:72px;left:12px;z-index:3;background:#222321de;border:1px solid #6f6f6c;min-height:0;padding:3px;width:auto;pointer-events:none}
body.has-command-ui .map-controls{pointer-events:auto}body.has-command-ui .model-controls{display:none!important}
body.has-command-ui .workspace.panel-open .side-panel{inset:0!important;z-index:4!important}
.command-ui{color:#d4d0c1;font-family:'Microsoft YaHei',system-ui,sans-serif;font-size:12px}
.command-ui .ui-top{position:absolute;inset:0 0 auto;height:62px;display:flex;align-items:stretch;gap:0;background:linear-gradient(#333331,#1f1f1d);border-bottom:2px solid #6e6c65;pointer-events:auto;box-shadow:0 2px 9px #00000088}
.command-ui .ui-top>button,.command-ui .ui-brand{border:0;border-right:1px solid #58564f;border-radius:0;padding:6px 14px;min-width:94px;background:transparent;color:#d6d1c3;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:3px}
.command-ui .ui-brand{font-size:15px;letter-spacing:.07em;color:#c2bcad}.command-ui small{display:block;color:#b3b1aa;font-size:11px;line-height:1.4}.command-ui .ui-top button strong{font-size:16px}
.command-ui .ui-clock{margin-left:auto;display:flex;align-items:center;gap:4px;padding:5px 10px;white-space:nowrap}.command-ui .ui-clock>strong{font-size:20px;color:#d4cfbf}.command-ui .ui-clock>span{font-size:11px;color:#bab9b5}
body.has-command-ui .command-ui button{background:#373836;border:1px solid #71716e;color:#d8d3c5;border-radius:2px;min-height:32px;font-size:12px;padding:5px 8px;width:auto;cursor:pointer}
body.has-command-ui .command-ui button:hover{background:#4b4c4a;border-color:#bab9b4}body.has-command-ui .command-ui button:disabled{opacity:.45;cursor:not-allowed}body.has-command-ui .command-ui button[aria-pressed=true]{border-color:#d0c6a8;background:#555451}
.command-ui .ui-warning{color:#c0baab!important}.command-ui .ui-notice{position:absolute;top:65px;left:50%;transform:translateX(-50%);max-width:45vw;padding:4px 10px;background:#21211fe8;border-radius:2px;font-size:11px;pointer-events:none}
.command-ui .ui-sidebar{position:absolute;right:10px;top:72px;bottom:112px;width:370px;background:#282826f5;border:1px solid #747370;box-shadow:0 4px 18px #00000077;pointer-events:auto;display:flex;flex-direction:column;overflow:hidden}
.command-ui .ui-sidebar[data-mode=battle]{width:460px}.command-ui .ui-sidebar>header{flex:0 0 auto;padding:8px 12px;background:#383937;border-bottom:1px solid #6c6a64}.command-ui .ui-sidebar h2{font-size:16px;margin:0;font-weight:600}
.command-ui .ui-content{overflow:auto;scrollbar-width:thin;padding:12px;min-height:0;flex:1}.command-ui .panel-block,.command-ui .r2-orders,.command-ui .r2-stack,.command-ui .action-detail,body.has-command-ui .command-ui #battle-detail,.command-ui .battle-map-panel>details{background:transparent!important;color:#d2cdbf!important;border:0!important;box-shadow:none!important;padding:0!important;max-height:none!important;overflow:visible!important}
.command-ui h3{font-size:14px;margin:12px 0 8px}.command-ui p{font-size:12px;line-height:1.55;margin:8px 0}.command-ui label{display:block;margin:8px 0;color:#c1bfb7}.command-ui select{background:#1f1f1d;color:#d4cfc1;border:1px solid #6f6e6b;padding:7px;width:100%;max-width:100%;min-height:36px}.command-ui details{border-top:1px solid #555451;padding-top:7px;margin-top:10px}.command-ui summary{color:#c9c4b4;padding:5px 0;cursor:pointer}.command-ui pre{color:#c3c2bf;background:#1a1a18;padding:8px;overflow:auto;font-size:10px}.command-ui a{color:#c1bcac}
.command-ui .ui-corps-bar{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;align-items:stretch;gap:6px;padding:6px;background:#21211fea;border:1px solid #73726f;pointer-events:auto;max-width:calc(100% - 24px);overflow-x:auto;box-shadow:0 -2px 14px #00000088}
.command-ui .ui-corps-card{display:flex;align-items:stretch;border-top:3px solid var(--corps);flex-shrink:0}.command-ui .ui-corps-card>button:first-child{display:flex;gap:8px;align-items:center;text-align:left;min-width:202px}.command-ui .ui-corps-card>button:not(:first-child){width:30px;padding:2px}.command-ui .ui-corps-card.selected{outline:2px solid var(--corps)}
.command-ui .ui-badge{width:33px;height:42px;display:grid;place-items:center;background:#1f1f1e;border:2px solid var(--corps);clip-path:polygon(0 0,100% 0,100% 76%,50% 100%,0 76%);font-size:21px;color:var(--corps)}
.command-ui .ui-direct{min-width:74px}.command-ui .ui-corps-bar>button{min-width:72px}.command-ui .ui-map-legend{position:absolute;bottom:104px;left:12px;font-size:11px;color:#cac5b7;background:#262725c9;padding:4px 7px;pointer-events:none}
.command-ui .corps-status{background:#21211f;color:#cbc5b5;border-left:3px solid #9d9c97}.command-ui .unit-dual-bars>small,.command-ui .unit-state-unknown{color:#bfbeba}.command-ui .unit-status-row{font-size:11px;grid-template-columns:28px minmax(30px,1fr) 74px}.command-ui .unit-status-track{height:8px;background:#141513;border-color:#7b7a75}
.command-ui .ui-duel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin:12px 0}.command-ui .duel-side>h4{border-bottom:3px solid #7caaba;padding:8px 5px;margin:0;background:#222220}.command-ui .duel-side.opponent>h4{border-color:#b78677;background:#292927}.command-ui .duel-unit{padding:8px 0;border-bottom:1px solid #57554e}.command-ui .duel-unit small{font-size:10px}.command-ui .duel-unit .unit-status-row{grid-template-columns:26px minmax(22px,1fr);gap:2px}.command-ui .duel-unit .unit-status-row>span:last-child{grid-column:2;font-size:10px}.command-ui .ui-factor{color:#c7bd9e}
.command-ui .ui-sidebar[data-mode=battle] .r2-map-tools,.command-ui .ui-sidebar[data-mode=battle] .r2-battle-list,.command-ui .ui-sidebar[data-mode=battle] .battle-map-panel>details:last-child{display:none}
.command-ui .ui-sidebar[data-mode=army] .battle-map-panel>*:not(.r2-map-tools),.command-ui .ui-sidebar[data-mode=tools] #battle-detail{display:none}
.command-ui .ui-sidebar[data-mode=army] .r2-orders>summary{display:none}.command-ui .ui-sidebar[data-mode=army] .r2-orders{display:block}.command-ui .ui-unit-choice{display:block;width:100%!important;text-align:left;margin:6px 0}
body.has-command-ui #fog-surface-layer{filter:grayscale(1)}
body.has-command-ui #eastfront-map[data-map-planning=no] #interaction-overlays{display:none}
@media(max-width:1200px){.command-ui .ui-brand{display:none}.command-ui .ui-top>button{padding:5px 8px;min-width:80px}.command-ui .ui-clock{padding:4px;gap:2px}.command-ui .ui-clock>span{display:none}.command-ui .ui-sidebar{width:330px}.command-ui .ui-sidebar[data-mode=battle]{width:410px}.command-ui .ui-corps-card>button:first-child{min-width:174px}.command-ui .ui-corps-card>button:not(:first-child){width:32px}.command-ui .ui-corps-bar{width:calc(100% - 20px)}.command-ui .ui-corps-card small{font-size:10px}.command-ui .ui-badge{width:26px}.command-ui .ui-map-legend span{display:none}}
@media(pointer:coarse){body.has-command-ui .command-ui button{min-height:44px;min-width:44px}.command-ui .ui-corps-bar{bottom:6px}}

.command-ui .ui-sidebar[data-mode=army] .r2-map-tools>summary,.command-ui .ui-sidebar[data-mode=army] .r2-map-tools>*:not(.front-editor){display:none}
.command-ui .ui-sidebar[data-mode=army] .front-editor>summary{font-weight:bold}
.command-ui .ui-battle-helpers{margin:8px 0}
.command-ui .ui-sidebar[data-mode=army] .r2-map-tools{display:block;border-top:1px solid #71716e!important;padding-top:8px!important}
body.has-command-ui #fog-surface-layer{filter:grayscale(1) brightness(.72)}

body.has-command-ui #terrain-surface{filter:saturate(.68)}
.command-ui .ui-assessment{font-size:11px;margin:4px 0}.command-ui .ui-duel{margin-top:6px}
.command-ui .duel-unit{padding:5px 0}.command-ui .ui-roster{margin:4px 0}

.command-ui .ui-duel{max-height:240px;overflow:auto;scrollbar-width:thin}
.command-ui .duel-unit .unit-status-row{grid-template-columns:26px minmax(24px,1fr) 58px}
.command-ui .duel-unit .unit-status-row>span:last-child{grid-column:auto}
.command-ui .duel-unit .unit-dual-bars{min-width:0}
.command-ui .duel-side>h4{position:sticky;top:0;z-index:1}

/* GRAND-ART-001: same single-side workspace; status stays subordinate to the map. */
.ui-sidebar .ux-line summary{display:grid;grid-template-columns:1fr auto;gap:4px 8px;padding:10px 5px;border-bottom:1px solid #7a797555;cursor:pointer}
.ui-sidebar .ux-line summary b{color:#d0cbbc}.ui-sidebar .ux-line summary span{font-size:12px;color:#c0bfbb}.ui-sidebar .ux-line em{color:#c3b898;font-style:normal;font-size:12px}
.industry-project,.industry-object{border:1px solid #82807a55;padding:10px;margin:8px 0;background:#2d2d2c55}.industry-project header{display:flex;justify-content:space-between;align-items:center;gap:8px}.industry-project progress{width:100%;height:8px;accent-color:#a2a098}.industry-project small{display:block;line-height:1.6;color:#bab9b4}.industry-project label{display:flex;align-items:center;justify-content:space-between}.industry-project select{max-width:90px}
#industry-logistics [role=button]{cursor:pointer}#industry-logistics [role=button]:focus{outline:none;filter:brightness(1.25)}

/* GRAND-UI-003: direct commands remain visible and touch-sized. */
.direct-command{border:1px solid #706f6c;padding:10px;background:#242423;color:#dbd6c8;position:sticky;bottom:0;z-index:2}
.direct-command p,.direct-command small{font-size:12px;line-height:1.4;margin:5px 0;display:block}.direct-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.direct-command button,.direct-command select,.ui-corps-card>button,.ui-direct,.r2-stack button{min-height:44px;min-width:44px}.direct-actions button[aria-pressed=true]{outline:2px solid #bfbaaa;background:#494a47}.direct-preview{padding:8px;border-left:3px solid #cfc6ab;background:#353533}.direct-preview button{margin-right:5px}.command-ui .ui-content:has(.direct-command){padding-bottom:12px}.ui-corps-card.selected{box-shadow:inset 0 -4px var(--corps)}

.officer-portrait{width:40px;height:50px;flex:none;object-fit:cover;border:1px solid var(--corps)}.ui-corps-card.selected .officer-portrait{outline:2px solid #cfcabb}.direct-command{position:relative;bottom:auto}.direct-command label{display:flex;gap:6px;align-items:center}.direct-command button:disabled{opacity:.55}

.command-ui .direct-command button,.command-ui .direct-command select,.command-ui .ui-corps-card>button,.command-ui .ui-direct,.command-ui .r2-stack button{min-height:44px;min-width:44px}.command-ui .direct-actions button{padding:6px;font-size:13px}.command-ui .direct-command{padding:8px}.command-ui .ui-top button,.command-ui .ui-sidebar header button{min-height:44px;min-width:44px}

.ui-corps-bar .ui-direct{order:-1;position:sticky;left:0;z-index:2;background:#30302f;flex:none}.command-ui .r2-stack summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;cursor:pointer}.command-ui .r2-stack>p{font-size:12px}

body.has-command-ui .command-ui button,body.has-command-ui .command-ui select{min-height:44px;min-width:44px}

/* UI003-R1: one fixed short command strip, no scrolling command roster. */
.command-ui .ui-corps-bar{left:10px;right:10px;bottom:6px;width:auto;display:flex;gap:5px;overflow:visible;padding:5px;max-height:70px}
.command-ui .ui-corps-card{flex:1;min-width:0;max-width:220px}.command-ui .ui-corps-card>button:first-child{min-width:0;flex:1;padding:3px;gap:5px}.command-ui .ui-corps-card>button:not(:first-child){display:none}.command-ui .ui-corps-card small{font-size:12px}.command-ui .ui-corps-card b{font-size:12px}.command-ui .officer-portrait{width:34px;height:44px;filter:saturate(.55) contrast(.92)}
.command-ui .ui-corps-bar>button{padding:4px;min-width:52px;max-width:66px;font-size:12px}.command-ui .ui-direct{order:-1;position:static}.command-ui .ui-corps-card.selected{border-color:var(--corps)}
.map-command-strip{position:fixed;bottom:83px;left:12px;right:12px;z-index:6;pointer-events:auto;background:#2a2a28f5;border:1px solid #7e7d79;padding:6px 9px;box-shadow:0 3px 10px #00000066;color:#d3cebe}
.map-command-heading{display:flex;gap:12px;align-items:center;font-size:13px;min-height:24px}.map-command-heading span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:#bdb8a8}
.map-command-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.map-command-actions strong{font-size:13px}.map-command-actions small{max-width:340px;font-size:12px}.map-command-actions button{padding:5px 12px}.map-command-actions>span{font-size:13px;margin-right:auto}
.command-ui .ui-sidebar{bottom:197px;max-height:calc(100vh - 275px)}.command-ui .ui-map-legend{bottom:78px}.command-ui:has(.map-command-strip) .ui-map-legend{display:none}
@media(max-width:1100px){.command-ui .ui-corps-card{max-width:176px}.command-ui .ui-corps-bar>button{min-width:48px;max-width:56px}.command-ui .ui-corps-card>button:first-child{min-width:0}.command-ui .ui-sidebar{width:320px}.map-command-actions button{padding:4px 9px}.command-ui .ui-clock>strong{font-size:17px}.command-ui .ui-top>button{min-width:64px}}

.command-ui .ui-corps-bar{transform:none}.command-ui .ui-corps-card>button:first-child{height:54px}.command-ui .map-command-strip{bottom:86px}

@media(max-width:1100px){.command-ui .ui-top{width:100%;left:0;right:0}.command-ui .ui-top>button{min-width:54px;padding:4px;flex:1 1 70px}.command-ui .ui-clock{flex:0 1 auto;min-width:0}.command-ui .ui-clock>strong{font-size:14px}.command-ui .ui-clock>button{padding:4px;font-size:12px}.command-ui .ui-clock>[role=status]{max-width:64px;white-space:normal;font-size:10px}}

/* GRAND-UX-004: production workbench and map-first plans, existing asset family. */
.command-ui .factory-summary{display:flex;justify-content:space-between;gap:8px;padding:12px;background:#313130;border-bottom:2px solid #8f8e88;position:sticky;top:0;z-index:1}
.factory-summary b{font-size:22px;color:#d1ccbd}.production-line{margin:12px 0;background:#30302e;border:1px solid #61605d;border-left:4px solid #a2a09b;padding:12px;border-radius:3px}
.production-line header{display:flex;align-items:center;gap:10px}.production-line header>div{flex:1}.production-line header img,.production-line header svg{width:48px;height:42px;object-fit:contain}.production-line header small{display:block;font-size:12px;font-weight:normal;color:#bbb9b3}.production-line header strong{text-align:right;font-size:20px}
.factory-allocation{display:flex;align-items:center;gap:9px;margin:10px 0}.factory-allocation button{min-width:44px;min-height:44px;font-size:24px}.factory-allocation b{font-size:22px;min-width:24px;text-align:center}.factory-allocation span:last-child{margin-left:auto;font-size:13px}
.production-efficiency{height:7px;background:#1e1e1c;border:1px solid #555552}.production-efficiency i{display:block;height:100%;background:#99978f}.command-ui .line-shortage{font-size:13px;margin:8px 0}.production-line details{display:inline-block;margin:4px 0 0 8px}.production-line details[open]{display:block;margin:8px 0}
.equipment-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:12px;background:#232422;border:1px solid #9a9995}.equipment-picker h3{grid-column:1/-1}.equipment-picker button{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:82px}.equipment-picker img,.equipment-picker svg{width:44px;height:36px}.equipment-picker small{font-size:11px}.conversion-confirm{padding:10px;background:#3d3d3b;border:1px solid #b5ab8b}.stock-table table{width:100%;text-align:right}.stock-table th:first-child{text-align:left}.stock-table th,.stock-table td{padding:7px 3px;border-bottom:1px solid #55544d}
.plan-steps{display:grid;grid-template-columns:1fr 1fr;gap:8px}.plan-steps button{min-height:52px}.plan-steps button:last-child{grid-column:1/-1;background:#4d4d4b}.corps-plan-tools h3{margin-top:0}.map-plan-strip{position:fixed;bottom:96px;left:50%;transform:translateX(-50%);width:min(700px,90vw);pointer-events:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#323231;border:2px solid #aba9a1;padding:10px;z-index:36}.map-plan-strip small{width:100%;color:#c3c1bb}.map-plan-strip button{min-height:44px}.national-name{font-family:serif;font-weight:bold;opacity:.8}
@media(max-width:1100px){.command-ui .ui-sidebar[data-mode=economy]{width:350px;max-width:46vw}.command-ui .ui-sidebar[data-mode=army]{width:320px;max-width:42vw}.map-plan-strip{bottom:80px}.factory-allocation{gap:5px}.production-line{padding:9px}.factory-allocation span:last-child{font-size:12px}}

/* R2 camera-only joystick: outside the map hit surface and above the corps bar. */
#map-joystick{position:fixed;z-index:55;bottom:168px;right:22px;width:140px;height:140px;border:2px solid #91a99c;border-radius:50%;background:#142820b8;touch-action:none;user-select:none;display:grid;place-items:center;color:#c6d2be;box-shadow:0 2px 6px #0007}
#map-joystick[hidden]{display:none}#map-joystick[data-hand=left]{right:auto;left:22px}
.joystick-ring{pointer-events:none;font-size:23px;opacity:.65}.joystick-stick{position:absolute;width:54px;height:54px;border-radius:50%;background:#7d7b75;border:2px solid #c5c0b1;pointer-events:none;opacity:.8}#map-joystick.active .joystick-stick{background:#93ad94}
.joystick-settings{display:grid;gap:6px;border:1px solid #595752}.joystick-settings label{display:flex;justify-content:space-between;align-items:center;gap:12px}.joystick-settings select{min-height:44px}

/* R3: allocation controls retain their equipment identity while scrolling. */
.production-line-controls{position:sticky;top:0;z-index:2;background:#30302e;padding:4px 0;border-bottom:1px solid #5a5854}.production-line-controls .factory-allocation{flex-wrap:wrap}.plan-primary{border:2px solid #a6a49c!important;font-weight:700}.map-command-heading span{white-space:normal}.command-ui .animation-controls{display:flex;flex-wrap:wrap;gap:6px}.command-ui .animation-controls button,.command-ui .animation-controls select{min-height:44px}

/* Division drafts: same campaign sidebar; six compact columns, touch-sized slots. */
.ui-sidebar[data-mode="division"]{width:min(610px,calc(100vw - 24px));max-width:none}
.division-designer fieldset{border:0;padding:0;min-width:0}
.division-designer input,.division-designer select{min-height:44px;width:100%;box-sizing:border-box}
.division-grid{display:grid;grid-template-columns:repeat(6,minmax(44px,1fr));gap:5px;margin:12px 0}
.division-column{display:flex;flex-direction:column;gap:5px;text-align:center}
.division-slot{min-width:44px;min-height:62px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px!important}
.division-slot b{font-size:23px}.division-slot small{font-size:11px;line-height:1.2}
.division-slot[aria-pressed="true"]{outline:2px solid #bbb9b3;background:#3a3b38}
.division-palette{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;padding:8px 0}
.division-palette button{min-height:44px}.division-review{color:#cfc6a8;border-left:3px solid #bbb08d;padding-left:8px}
.division-designer table{width:100%;border-collapse:collapse;margin:10px 0}.division-designer th,.division-designer td{padding:6px;text-align:left;border-bottom:1px solid #56544f}

/* Division review: persistent save and compact summary; detail is opt-in. */
.division-save-bar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:10px;padding:9px;background:#2c2d2b;border-top:2px solid #9f9e99}.division-save-bar>span{flex:1;font-weight:700}.division-save-bar small{display:block;font-size:11px;font-weight:400}.division-save-bar button{min-height:44px;flex:none}.division-demands>summary{min-height:44px;display:flex;align-items:center;cursor:pointer}.division-slot{min-height:48px}.division-slot b{font-size:19px}.division-grid{margin:8px 0;gap:4px}.division-column{gap:4px}

.command-ui .ui-sidebar[data-mode="division"]{top:64px;bottom:80px}.division-head{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-items:end}.division-head .button-row{grid-column:1/-1;margin:0}.division-head label{margin:0}.division-review{margin:4px 0}.division-designer .division-grid{margin:6px 0}.division-designer .division-column small{line-height:1.1}

.command-ui .ui-sidebar[data-mode="division"]{position:fixed;height:calc(100dvh - 144px);max-height:calc(100dvh - 144px)}

/* Unified command workbench: stable map, compact controls, optional details. */
.command-ui .map-selection-tools{position:absolute;left:12px;top:80px;display:flex;align-items:center;gap:8px;pointer-events:auto;background:#232321e8;padding:5px;border:1px solid #787773}
.map-selection-tools button{min-height:44px}.map-selection-tools [aria-pressed=true]{outline:2px solid #c1bfb8}
.controls-help[open]{max-width:310px;max-height:45vh;overflow:auto}.controls-help summary{cursor:pointer;padding:8px}.batch-feedback{max-height:140px;overflow:auto;max-width:320px}.batch-feedback div{padding:4px;border-top:1px solid #6a6863}
.command-ui .ui-sidebar[data-mode="division"]{width:min(850px,calc(100vw - 24px))}
.integrated-designer .designer-tabs{display:flex;gap:6px;align-items:center;border-bottom:1px solid #787772;padding-bottom:8px}.designer-tabs b{margin-left:auto;color:#d2c7a4}
.designer-tabs [aria-pressed=true]{border-bottom:3px solid #c3c1b9;background:#414140}
.design-library,.design-name{display:flex;gap:8px;align-items:end;margin:10px 0}.design-library label{flex:1;margin:0}.design-name input{flex:1}
.design-workspace{display:grid;grid-template-columns:minmax(350px,1fr) 190px;gap:16px;background:#1d1d1b;padding:12px;border:1px solid #62615d}
.design-workspace .division-slot{height:48px;border:1px solid #6f6d68;background:#313130;border-radius:2px;box-shadow:inset 0 0 0 2px #222220}.design-workspace .division-slot:has(b:only-child){background:#21211f}
.design-stats{display:flex;flex-direction:column;gap:7px;padding-left:12px;border-left:1px solid #6c6b67}.design-stat{display:grid;grid-template-columns:1fr auto;gap:3px}.design-stat small{grid-column:1/-1;color:#c1b799;text-align:right}.design-stat b{font-size:18px;color:#d2cdbd}
.design-demand{border-top:1px solid #686763;padding-top:10px;display:flex;flex-direction:column;gap:7px}.design-demand span{display:flex;justify-content:space-between}
.design-primary{background:#59574f!important;border:1px solid #bdbbb2!important;font-weight:700}.integrated-designer .division-save-bar{bottom:-12px;margin-top:12px;background:#2d2d2c;min-height:64px}.integrated-designer .division-save-bar>span{font-size:17px}.design-confirm{position:sticky;bottom:0;padding:14px;background:#333331;border:2px solid #c1b89f;z-index:8}.designer-notice:empty{display:none}
.integrated-designer fieldset{display:block}.integrated-designer .division-palette{grid-template-columns:1fr;min-height:50px}.integrated-designer .division-palette:has(button){grid-template-columns:repeat(3,1fr)}
.command-ui .ui-sidebar[data-mode=economy]{width:420px;max-width:48vw}.factory-summary{position:sticky;top:0;z-index:4;background:#242423;padding:10px;border-bottom:2px solid #8c8a85}.production-line{padding:10px 12px;border:1px solid #63625e;border-left:4px solid #b1afa9;background:#2b2c2a;box-shadow:inset 0 1px #8c8b862b}.production-line-controls{background:#2b2c2a}.production-line header svg{color:#d5d3b1;width:44px;height:44px;padding:5px;background:#1a2623;border:1px solid #697467}.production-line header b{font-size:16px}.production-line .factory-allocation{margin-top:8px}.production-line .factory-allocation b{font-size:24px;min-width:26px;text-align:center}.production-line .line-shortage{min-height:18px;color:#bdb8a8}.production-line .line-convert{font-size:12px;background:transparent;min-height:36px}.stock-table table{width:100%;border-collapse:collapse}.stock-table td,.stock-table th{text-align:right;padding:7px;border-bottom:1px solid #65645f}.stock-table th:first-child{text-align:left}
.command-ui .ui-sidebar[data-mode=battle]{background:#292928eF;border-color:#88867f}.command-ui #battle-detail>header{background:#1d1d1c;border-bottom:2px solid #a09e95;padding:8px}.command-ui #battle-detail .ui-battle-side{background:#212120}.command-ui #battle-detail>p{padding:8px;border-bottom:1px solid #6a6964}.command-ui .plan-steps{display:grid;grid-template-columns:1fr 1fr;gap:6px}.command-ui .plan-steps #plan-start{grid-column:1/-1;background:#50504d}
@media(max-width:900px){.design-workspace{grid-template-columns:minmax(295px,1fr) 145px;gap:8px;padding:8px}.design-stats{padding-left:8px}.division-column small{font-size:10px}.design-stat{font-size:12px}.design-stat b{font-size:16px}.command-ui .ui-sidebar[data-mode=economy]{width:370px;max-width:60vw}}
.command-ui .map-selection-tools{top:128px;max-width:calc(100% - 24px)}
.command-ui .ui-sidebar[data-mode="division"]{height:calc(100dvh - 176px);max-height:calc(100dvh - 176px);bottom:112px}
.command-ui:has(.ui-sidebar[data-mode=economy]) .map-command-strip,.command-ui:has(.ui-sidebar[data-mode=division]) .map-command-strip{display:none}
.command-ui .ui-sidebar[data-mode=economy]{bottom:102px;max-height:calc(100dvh - 174px)}
.command-ui .modern-tabs{display:flex;gap:4px}.command-ui .modern-tabs button{min-width:0;flex:1;padding:6px 4px;font-size:12px}
.command-ui .production-line{margin:8px 0;padding:8px}.command-ui .production-line-controls{padding:0}.command-ui .production-line header{gap:6px}.command-ui .production-line header strong{font-size:18px}.command-ui .factory-summary{padding:6px}.command-ui .line-shortage{margin:5px 0}.design-name input{background:#222221;color:#dbd5c6;border:1px solid #8d8c86;padding:6px 10px}

.command-ui .modern-tabs{flex-wrap:nowrap}.command-ui .modern-tabs button{flex:1 1 0!important;width:auto!important}
.design-library input{min-width:120px;width:190px;background:#222221;color:#dbd5c6;border:1px solid #8d8c86;padding:8px;min-height:44px}.design-library{align-items:center;margin:6px 0}.design-library label{min-width:120px}.design-workspace{gap:12px;padding:8px}.design-stats{gap:4px}.design-stat{line-height:1.2}.design-stat small{font-size:11px}.design-demand{gap:4px;padding-top:5px}.integrated-designer .division-save-bar{margin-top:6px;min-height:56px}.integrated-designer .division-palette{margin:4px 0;min-height:44px}.integrated-designer details{margin:4px 0}

/* HOI4-UI-001: desktop command layout. Flat original surfaces, existing assets. */

/* HOI4-UI-001: top resources/tools, left management, map, bottom commanders. */
.command-ui.hoi-ui{--hoi-panel:#262625;--hoi-edge:#6f6d66;--hoi-ink:#cdc8b9;font-family:"Microsoft YaHei",sans-serif;color:var(--hoi-ink)}
body.has-hoi-ui .hoi-ui button{border-radius:0;background:#2b2c2a;border:1px solid #666561;box-shadow:inset 0 0 0 1px #161615;color:#cec9ba;min-height:28px;font-size:12px;padding:4px 7px}
body.has-hoi-ui .hoi-ui button:hover{background:#3e3f3d;border-color:#bbb399}body.has-hoi-ui .hoi-ui button[aria-pressed=true]{background:#444442;border-color:#ccc1a0}
.hoi-ui .hoi-icon{width:23px;height:23px;flex:none;vertical-align:middle;color:#b1afa9}
.hoi-top{position:absolute;inset:0 0 auto;pointer-events:none;height:80px;z-index:5}
.hoi-top button,.hoi-top nav,.hoi-time{pointer-events:auto}
.hoi-country{position:absolute;left:0;top:0;width:88px;height:66px;border-width:3px!important;font-family:serif}.hoi-country b{font-size:23px;display:block}.hoi-country small{font-size:10px}
.hoi-national{position:absolute;left:88px;top:0;right:430px;height:29px;display:flex;align-items:stretch;background:#222221;border-bottom:1px solid #6f6d66;overflow:hidden}
.hoi-national button{white-space:nowrap;border-width:0 1px 0 0!important;box-shadow:none!important;min-width:75px;background:transparent!important}.hoi-national b{color:#c2bfb7;margin-left:4px}
.hoi-time{position:absolute;right:0;top:0;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;width:425px;min-height:57px;padding:3px 5px;background:#1f1f1e;border:1px solid #73726d;gap:3px}.hoi-time>strong{font-family:Georgia,"Microsoft YaHei",serif;font-size:14px;width:calc(100% - 70px);text-align:right}.hoi-time>span{font-size:11px}.hoi-time>button{min-height:24px!important;padding:2px 8px!important}.hoi-time [role=status]{font-size:10px;max-width:100px;overflow:hidden}
.hoi-management{position:absolute;left:90px;top:30px;display:flex;gap:3px}.hoi-management>button{display:flex;align-items:center;gap:3px;height:35px!important;font-size:11px!important}.hoi-management>button span{display:block}
.hoi-alert{position:absolute;left:640px;top:33px;font-size:11px!important}
.hoi-ui .ui-sidebar{left:0;right:auto;top:78px;bottom:20px;max-height:none;width:365px;max-width:none;border:2px solid var(--hoi-edge);background:var(--hoi-panel);box-shadow:3px 0 5px #00000077}
.hoi-ui .ui-sidebar[data-mode=economy]{width:450px;max-width:none}.hoi-ui .ui-sidebar[data-mode=battle]{width:460px}.hoi-ui .ui-sidebar[data-mode=division]{width:740px;top:78px;bottom:18px;max-height:none}
.hoi-ui .ui-sidebar>header{background:#30302e;min-height:36px;padding:3px 6px;border-bottom:2px solid #73726d;display:flex;justify-content:space-between;align-items:center}.hoi-ui .ui-sidebar h2{font-size:16px;font-family:Georgia,"Microsoft YaHei",serif;font-weight:normal}.hoi-ui .ui-sidebar header button{min-height:26px;min-width:26px}
.hoi-ui .ui-content{padding:7px;scrollbar-color:#75746f #1f1f1e}.hoi-ui p{line-height:1.4;margin:5px 0}.hoi-ui details{margin-top:5px;padding-top:4px}.hoi-ui h3{font-size:13px;margin:8px 0 5px}.hoi-ui select,.hoi-ui input{border-radius:0;background:#20201e;color:#d2cdbe;border:1px solid #716f6a}.hoi-ui select{min-height:28px;padding:3px}
.hoi-ui .hoi-roster{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}.hoi-ui .hoi-roster-row{display:grid;width:100%;grid-template-columns:28px minmax(80px,1fr) 30px 62px;align-items:center;gap:5px;min-height:45px;border-left:4px solid var(--corps);text-align:left;background:#232422}.hoi-roster-row small{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:155px}.hoi-row-state{font-size:10px;text-align:right}.hoi-roster-bars{display:flex;gap:4px;height:31px}.hoi-roster-bars>i{display:flex;align-items:flex-end;width:7px;background:#10100e;border:1px solid #61605b;transform:rotate(180deg)}.hoi-roster-bars>i>em{display:block;background:#78a353;height:100%;max-width:100%}.hoi-roster-bars>i+ i>em{background:#b6a752}
.hoi-ui .ui-corps-bar.hoi-commanders{left:50%;right:auto;transform:translateX(-50%);bottom:0;width:auto;max-width:calc(100% - 475px);max-height:81px;padding:3px;gap:4px;background:#1b1b1ad9;border:1px solid #73726d;box-shadow:none;overflow:visible}
.hoi-ui .hoi-commanders .ui-corps-card{flex:none;width:146px;max-width:none;border:1px solid var(--corps)}.hoi-ui .hoi-commanders .ui-corps-card>button:first-child{height:66px;min-width:0;padding:2px;display:flex;gap:4px}.hoi-ui .hoi-commanders .officer-portrait{width:43px;height:59px;filter:saturate(.5)}.hoi-ui .hoi-commanders .ui-corps-card b{font-size:11px}.hoi-ui .hoi-commanders .ui-corps-card small{font-size:10px}.hoi-ui .hoi-commanders .ui-corps-card>button:not(:first-child){display:block;min-width:22px;width:22px;padding:0}
.hoi-map-modes{position:absolute;right:4px;bottom:6px;display:flex;flex-direction:column;gap:3px;pointer-events:auto}.hoi-map-modes button{display:flex;align-items:center;gap:4px;font-size:10px!important}
.hoi-ui .map-command-strip{left:380px;right:120px;bottom:86px;max-width:none;width:auto;padding:5px;background:#252623;border:1px solid #968e75}.hoi-ui .map-command-actions{gap:3px;flex-wrap:wrap}.hoi-ui .map-command-actions button{min-height:28px;font-size:11px}.hoi-ui .map-command-heading{font-size:11px}.hoi-ui .map-command-heading span{font-size:10px}.hoi-ui .map-plan-strip{left:380px;right:120px;bottom:88px;max-width:none;background:#252623}
.hoi-ui .ui-map-legend{left:auto;right:4px;bottom:100px;background:#232422b0;font-size:10px}.hoi-ui .ui-map-legend span{display:none}.hoi-ui .ui-notice{top:82px;left:55%;max-width:40vw;background:#262724;color:#c5c0b1}
body.has-hoi-ui .map-toolbar{top:78px;left:auto;right:8px;background:#232422}.hoi-ui .mp-room-status{top:65px!important;left:auto!important;right:8px!important;max-width:620px;font-size:10px!important;padding:2px 5px!important;white-space:nowrap!important;overflow:hidden}.hoi-ui .mp-room-status button{min-height:22px;font-size:10px;padding:1px 4px}
.hoi-ui .modern-tabs{gap:2px;margin:0 0 6px}.hoi-ui .modern-tabs button{flex:1;font-size:11px;padding:3px}.hoi-ui .factory-summary{padding:6px 4px;background:#1f201d;border:1px solid #66645f;gap:10px;font-size:12px}.hoi-ui .production-line{border:1px solid #666562;border-radius:0;background:#232422;padding:5px;margin:4px 0;box-shadow:none}.hoi-ui .production-line header{gap:6px}.hoi-ui .production-line header b{font-size:13px}.hoi-ui .production-line header small{font-size:10px}.hoi-ui .production-line header strong{font-size:16px;color:#bdbbb2;background:#3a3a38;padding:2px 8px}.hoi-ui .production-line-controls{background:#232422;top:0;padding:0;z-index:1}.hoi-ui .factory-allocation{gap:4px;margin:3px 0;font-size:11px}.hoi-ui .factory-allocation button{min-height:25px;min-width:26px}.hoi-ui .production-efficiency{height:7px;border:1px solid #74736e;margin:3px 0;background:#121310}.hoi-ui .production-efficiency i{background:#838179}.hoi-ui .line-shortage{font-size:10px}.hoi-ui .line-convert{min-height:24px;font-size:10px}.hoi-ui .stock-table table{font-size:11px;width:100%;border-collapse:collapse}.hoi-ui .stock-table th,.hoi-ui .stock-table td{padding:4px;border-bottom:1px solid #454543}.hoi-ui .equipment-picker{position:relative;inset:auto;grid-template-columns:repeat(3,minmax(0,1fr));max-height:none}.hoi-ui .equipment-picker button{font-size:10px;padding:4px}.hoi-ui .equipment-icon{width:42px;height:30px}
.hoi-ui .division-integrated{height:100%}.hoi-ui .division-save-bar{background:#2c2d2b}.hoi-ui .design-workspace{grid-template-columns:minmax(0,1fr) 190px}.hoi-ui .design-grid button{min-height:48px;font-size:11px}.hoi-ui .design-library{gap:4px}.hoi-ui .design-library input{min-width:0}.hoi-ui .design-library button{padding:4px}.hoi-ui .plan-steps{gap:4px}.hoi-ui .corps-plan-tools button{min-height:28px;font-size:11px}
@media(min-width:1200px){.hoi-ui:has(.ui-sidebar) .hoi-commanders{left:calc(50% + 155px)}.hoi-ui .ui-sidebar[data-mode=army]{width:365px;max-width:none}}
@media(max-width:1100px){.hoi-national{right:325px}.hoi-national button{min-width:60px;font-size:10px!important}.hoi-time{width:320px}.hoi-management>button{padding:3px!important}.hoi-management>button span{font-size:10px}.hoi-alert{left:590px;top:60px}.hoi-ui .ui-sidebar{width:310px}.hoi-ui .ui-sidebar[data-mode=economy]{width:370px}.hoi-ui .hoi-commanders{max-width:calc(100% - 360px);left:65%!important}.hoi-ui .hoi-commanders .ui-corps-card{width:116px}.hoi-ui .map-command-strip,.hoi-ui .map-plan-strip{left:320px;right:10px}.hoi-ui .ui-sidebar[data-mode=division]{width:min(740px,95vw)}}
.hoi-roster-bars>i{transform:none}.hoi-roster-bars>i>em{width:100%;max-height:100%}
.hoi-ui .map-selection-tools{left:auto;right:8px;top:125px;bottom:auto;background:#212120;border:1px solid #64635e}.hoi-ui .map-selection-tools button{min-height:28px;font-size:11px}
body.has-hoi-ui .map-toolbar{top:94px}
.hoi-ui .ui-sidebar[data-mode=division]{height:auto;max-height:none}
.hoi-ui .ui-sidebar{height:auto}

body.has-hoi-ui .network-match-status{display:none}
.hoi-ui .ui-sidebar[data-mode]{bottom:20px;max-height:none;height:auto}

/* HOI4-UI-001 light polish: surfaces and legibility only; no layout or animation. */
.command-ui.hoi-ui{--hoi-panel:#252524;--hoi-edge:#747370;--hoi-ink:#d3cebf;font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-variant-numeric:tabular-nums lining-nums}
body.has-hoi-ui .hoi-ui button{color:#d4cfc1;border-color:#73726d #3e3f3d #393938 #6c6a66;box-shadow:inset 0 1px #ede8d90b,inset 0 -1px #00000055;text-shadow:0 1px #00000088}
body.has-hoi-ui .hoi-ui button:hover:not(:disabled){background:#424241;border-color:#a9a79f;color:#e6e1d2}
body.has-hoi-ui .hoi-ui button:focus-visible{outline:2px solid #c9c0a6;outline-offset:-3px}
body.has-hoi-ui .hoi-ui button[aria-pressed=true]{background:#41413f;border-color:#b2b0a8;box-shadow:inset 0 -2px #bbb091,inset 0 1px #ede8d914}
body.has-hoi-ui .hoi-ui button:disabled{opacity:1;color:#93928e;background:#242523;border-color:#424241;box-shadow:none;text-shadow:none;cursor:not-allowed}
.hoi-ui .ui-sidebar{box-shadow:inset 1px 0 #adaca822,3px 0 5px #00000077}
.hoi-ui .ui-sidebar>header{background:#353533;border-bottom:1px solid #8a8983;box-shadow:inset 0 1px #cdc7b81a,inset 0 -2px #171816}
.hoi-ui .ui-sidebar h2{font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-size:16px;font-weight:600;letter-spacing:.5px;color:#d2cdbd}
.hoi-ui .hoi-icon{color:#c1bfba}
.hoi-ui .ui-content{font-size:12px}.hoi-ui .ui-content small{color:#b7b6b2}
.hoi-national b,.hoi-time>strong{color:#cdc8b9;font-variant-numeric:tabular-nums}
.hoi-ui .production-line{background:#282927;border-color:#676662;box-shadow:inset 0 1px #ede8d90a}
.hoi-ui .production-line-controls{background:#282927}
.hoi-ui .production-line header b{font-size:14px;font-weight:600;color:#dbd6c6}
.hoi-ui .production-line header small,.hoi-ui .line-shortage{font-size:11px;color:#b8b7b2}
.hoi-ui .production-line header strong{font-size:18px;min-width:58px;text-align:right;background:#333331;color:#ccc6b6;box-shadow:inset 0 0 0 1px #595750}
.hoi-ui .production-line header strong small{font-size:10px;font-weight:400}
.hoi-ui .production-efficiency{border-color:#6a6862;background:#151614}.hoi-ui .production-efficiency i{background:#8d8b83;box-shadow:inset 0 1px #bfbaaa4d}
.hoi-ui .stock-table table{font-size:12px}.hoi-ui .stock-table th,.hoi-ui .stock-table td{border-color:#454544}
.hoi-ui .stock-table td,.hoi-ui .stock-table thead th:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}
.hoi-ui .stock-table tbody th{text-align:left;font-weight:400;color:#c3bdae}
.hoi-ui .hoi-roster-row{background:#292a28;border-top-color:#64635e;border-bottom-color:#3a3b39}
.hoi-ui .hoi-roster-row b{font-size:13px;font-weight:600;letter-spacing:.3px}.hoi-ui .hoi-roster-row small,.hoi-ui .hoi-row-state{font-size:11px;line-height:1.3}
body.has-hoi-ui .hoi-ui .hoi-roster-row[aria-pressed=true]{background:#3c3c3a;border-color:#b2b0a8;box-shadow:inset 3px 0 #c5c0b1}
.hoi-ui .hoi-roster-bars>i{border-color:#6a6962;background:#161714}.hoi-ui .hoi-roster-bars>i>em{background:#8da65c}.hoi-ui .hoi-roster-bars>i+i>em{background:#c4af63}
.hoi-ui .hoi-commanders .ui-corps-card.selected{outline:1px solid #ccc3a6;outline-offset:1px}.hoi-ui .hoi-commanders .ui-corps-card.selected>button:first-child{background:#3c3c3a}
.hoi-ui .design-stat>strong,.hoi-ui .design-demand{font-variant-numeric:tabular-nums}.hoi-ui details>summary{color:#c4bfb0}

/* HOI4-UI-001 visual pass: original catalogue art, archival fictional portraits. */
body.has-hoi-ui #terrain-surface{filter:none}
body.has-hoi-ui .map-wrap{background:#303c3d}
body.has-hoi-ui .map-wrap:after{display:none}
.command-ui.hoi-ui{--hoi-panel:#232322;--hoi-edge:#827a62;--hoi-ink:#d7d2c3}
.hoi-ui .ui-sidebar,.hoi-ui .hoi-time,.hoi-ui .hoi-national,.hoi-ui .hoi-commanders{background-color:#232321;background-image:repeating-linear-gradient(0deg,#ede8d903 0,#ede8d903 1px,transparent 1px,transparent 4px)}
.hoi-ui .ui-sidebar>header{background:#3d3d3b;border-bottom:3px double #9b937b;min-height:39px}
.hoi-ui .ui-sidebar h2{font-size:18px;letter-spacing:2px;color:#d5d0c0}
.hoi-ui .hoi-national{height:29px;border-bottom:2px solid #877f68}
.hoi-ui .hoi-national button{font-size:12px;color:#babab6}
.hoi-ui .hoi-national b{font-size:14px;color:#d4cfbf}
.hoi-ui .hoi-management>button{background:#373736;border-top:2px solid #888781;height:36px!important;gap:5px}
.hoi-ui .hoi-country{background:#383937!important;border-color:#a79f86!important;box-shadow:inset 0 0 0 3px #222220!important}
.hoi-ui .hoi-country b{font-family:Georgia,'Microsoft YaHei',serif;color:#d2cdbd;letter-spacing:3px}
.hoi-ui .hoi-commanders .officer-portrait{display:block;flex:none;width:49px;height:61px;filter:none;background-image:url('/assets/playable/hoi-visual/commanders.jpg');background-size:300% 100%;border:1px solid #a79f86;border-radius:0;box-shadow:none}
.hoi-ui .portrait-walter{background-position:0 50%}.hoi-ui .portrait-roven{background-position:50% 50%}.hoi-ui .portrait-veil{background-position:100% 50%}
.hoi-ui .hoi-commanders .ui-corps-card{border-top:3px solid var(--corps);background:#222220}
.hoi-ui .hoi-commanders .ui-corps-card>button:first-child{background:#2e2e2c;gap:5px}
.hoi-ui .hoi-commanders .ui-corps-card.selected>button:first-child{background:#444442}
.hoi-ui .hoi-commanders .ui-corps-card b{color:#d7d1c2;line-height:1.4}
.hoi-ui .hoi-commanders .ui-corps-card small{color:#bdb8a8}
.hoi-ui .equipment-art{display:block;flex:none;width:112px;height:74.67px;background-image:url('/assets/playable/hoi-visual/equipment.jpg');background-size:300% 300%;border:1px solid #56544f}
.hoi-ui .production-line{padding:7px;background:#242523;border:1px solid #6c6a65;border-left:3px solid #908e86;margin:6px 0}
.hoi-ui .production-line-controls{background:#242523}
.hoi-ui .production-line header{display:flex;align-items:center;gap:8px}
.hoi-ui .production-line header>div{flex:1;min-width:0}
.hoi-ui .production-line header b{font-size:15px;line-height:1.4;color:#d9d3c3}
.hoi-ui .production-line header strong{min-width:51px;padding:4px;font-size:21px;background:#20201f;box-shadow:none;border-bottom:2px solid #89877f}
.hoi-ui .production-line header strong small{display:block;color:#bebdb8}
.hoi-ui .factory-allocation{margin:5px 0 3px;gap:5px;flex-wrap:nowrap}
.hoi-ui .factory-allocation>span:first-child{color:#c1c0ba}
.hoi-ui .factory-slots{display:flex;gap:2px;min-width:0;flex:1;overflow:hidden}
.hoi-ui .factory-slots i{font-style:normal;display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;color:#c8c3b2;background:#464744;border:1px solid #88867e;font-size:19px}
.hoi-ui .efficiency-value{font-variant-numeric:tabular-nums;white-space:nowrap;color:#c6c0b1}
.hoi-ui .production-efficiency{height:9px;background:#151614;border-color:#56544d;margin:4px 0}
.hoi-ui .production-efficiency i{background:#8da758;box-shadow:inset 0 1px #bfbaaa}
.hoi-ui .factory-summary{background:#373836;border:1px solid #7f7d76;padding:8px;justify-content:space-between}
.hoi-ui .factory-summary b{font-size:18px;color:#d4cfbf}
.hoi-ui .equipment-picker .equipment-art{width:108px;height:72px;max-width:100%;margin:0 auto 4px}
.hoi-ui .equipment-picker button{display:flex;flex-direction:column;align-items:center;gap:3px}
.hoi-ui .hoi-roster-row{border-bottom:1px solid #161714;background:#2e2e2d}
.hoi-ui .hoi-roster-row b{color:#d7d2c3}.hoi-ui .hoi-roster-row small{color:#bbb9b2}
@media(max-width:1100px){.hoi-ui .equipment-art{width:87px;height:58px}.hoi-ui .production-line header b{font-size:13px}.hoi-ui .hoi-commanders .officer-portrait{width:39px}.hoi-ui .factory-slots i{width:15px}}
.hoi-ui .production-line .line-convert{min-height:26px;font-size:11px;padding:3px 6px}
.hoi-ui .production-line details{margin:2px 0 0 6px;padding-top:2px}
.hoi-ui .production-line .line-shortage{margin:4px 0;min-height:14px;font-size:11px}
.hoi-ui .factory-slots svg{width:18px;height:18px}
.hoi-ui .production-line .factory-allocation b{font-size:19px;min-width:20px}

#eastfront-map[data-city-dots="yes"] #city-districts {display:none}

.province-detail header{border-bottom:2px solid #887d5b;padding:8px;background:#303b32}.province-detail h3{font-size:22px;margin:5px 0}.province-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#536050;margin:8px 0}.province-grid>div{display:grid;padding:8px;background:#25312b}.province-grid b{font-size:19px;font-variant-numeric:tabular-nums;color:#e3d4ae}.province-grid small{color:#b2b8a1}.province-control,.province-resource{display:flex;flex-wrap:wrap;gap:10px;padding:7px;border-block:1px solid #65715b}.province-detail h4{margin:14px 0 5px}.province-detail>small{display:block}.hoi-map-modes{flex-wrap:wrap;max-width:210px}

/* UI-ICON-002: semantic SVG controls, shared with training. */
.hoi-national button,.map-command-actions button{display:inline-flex;align-items:center;gap:5px}.hoi-icon{width:22px;height:22px;flex:none;vertical-align:middle}.hoi-top .hoi-national .hoi-icon{width:20px;height:20px}.hoi-management .icon-nav-label{display:none}.hoi-management button{min-width:44px}.hoi-top .hoi-time button{min-width:36px}.icon-guide{position:relative;display:inline-block;flex:none}.icon-guide>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;color:#cfc6ac}.icon-guide>div{position:absolute;z-index:70;right:0;bottom:40px;width:320px;max-height:50vh;overflow:auto;background:#222220;border:1px solid #928a72;padding:12px;color:#ddd8ca;font-size:12px}.hoi-top .icon-guide>div{top:35px;bottom:auto}.icon-guide p{margin:6px 0}.icon-guide .hoi-icon{width:18px;height:18px;margin-right:5px}.icon-guide b{color:#cac4b5}button:focus-visible,summary:focus-visible{outline:2px solid #d1c399;outline-offset:2px}.unit-weather summary{display:flex;gap:5px;align-items:center;cursor:pointer;font-size:12px}.unit-weather summary span{margin-left:auto;font-variant-numeric:tabular-nums}.unit-weather .hoi-icon{width:18px;height:18px}.weather-detail h4{display:flex;align-items:center;gap:6px}

.training-status{border-bottom:1px solid #575651;padding:8px 10px;background:#252624}.training-status header{display:flex;align-items:center;gap:7px}.training-status header strong{margin-left:auto;color:#cfc4a4;font-variant-numeric:tabular-nums}.training-status progress{width:100%;height:7px;accent-color:#b3a98c}.training-status p{font-size:12px;margin:5px 0}.training-status details{font-size:12px}.training-status summary{cursor:pointer;color:#c0b79e}

.hoi-top>.icon-guide{position:absolute;left:410px;top:30px;z-index:75}.hoi-top>.icon-guide>div{left:0;right:auto}.unit-command-help{font-size:12px;margin:6px 0}.unit-command-help summary{cursor:pointer;color:#c0b79e}

/* Keep the existing compact strip size; align it with the map, not half its own width. */
.hoi-ui .map-plan-strip{transform:none;width:auto}
.commander-picker{display:grid;gap:4px}.commander-picker button{display:flex;text-align:left;align-items:center;gap:8px;min-height:64px}.commander-picker button>span:first-child{width:46px;height:60px;overflow:hidden;flex:none}.hoi-ui .commander-picker .officer-portrait{display:block;width:46px;height:60px;background-image:url('/assets/playable/hoi-visual/commanders.jpg');background-size:300% 100%;border:1px solid #a79f86;filter:none}.commander-picker small{display:block}

/* Compact authorized counter disambiguation; markers stay at their real hex. */
.counter-choice{position:fixed;z-index:150;width:208px;max-height:210px;overflow:auto;background:#26302b;border:1px solid #ada077;padding:6px;display:grid;gap:4px;font-size:12px;touch-action:pan-y}
.counter-choice button{min-height:28px;text-align:left;border-radius:1px}
