:root{
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:#ccc8ba;
  background:#171716;
  font-synthesis:none;
  --panel:#20201f;
  --panel-deep:#1b1b1a;
  --line:#3e3f3d;
  --muted:#93918c;
}
*{box-sizing:border-box}
body{margin:0;min-width:0;min-height:100vh;background:radial-gradient(circle at 50% 5%,#2a2b29 0,#1c1c1b 42%,#141413 100%);overflow:hidden}
button{font:inherit}
button:focus-visible{outline:2px solid #c5c0b2;outline-offset:2px}

.topbar{height:68px;display:grid;grid-template-columns:1.25fr 1fr 1.05fr;align-items:center;padding:0 24px;background:#1a1b19;border-bottom:1px solid #393a38;box-shadow:0 8px 24px #00000055;position:relative;z-index:3}
.brand{display:flex;gap:11px;align-items:center;min-width:0}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid #807f79;border-radius:2px;font:700 18px Georgia,serif;color:#d0cbbd;background:#222221}.brand div{display:grid;gap:2px;min-width:0}.brand strong{font-family:Georgia,serif;letter-spacing:.14em;font-size:17px}.brand span,.map-toolbar span,.selection-block span,.panel-block p,footer{color:var(--muted);font-size:11px}.turn-strip,.resource-strip{display:flex;justify-content:center;gap:8px;align-items:center}.turn-strip span,.resource-strip span,.menu-button{padding:7px 10px;border:1px solid #3a3b39;background:#232322;border-radius:2px;font-size:11px;letter-spacing:.075em;color:#cbc6b8;white-space:nowrap}.turn-strip span:nth-child(2){background:#4e4f4c;color:#ded9cb;border-color:#6e6c65}.resource-strip{justify-content:flex-end}.menu-button{cursor:pointer;background:#1e1e1d;color:#c0beb9}

.workspace{height:calc(100vh - 102px);min-height:590px;display:grid;grid-template-columns:minmax(0,1fr) 244px;gap:13px;padding:13px;transition:grid-template-columns .18s ease}.workspace.panel-collapsed{grid-template-columns:minmax(0,1fr) 0}.panel-collapsed .side-panel{display:none}
.map-card,.side-panel{background:var(--panel);border:1px solid var(--line);box-shadow:0 10px 35px #00000055}.map-card{display:grid;grid-template-rows:52px minmax(0,1fr);overflow:hidden;min-width:0}.map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 13px 0 17px;border-bottom:1px solid var(--line);background:#262625}.map-toolbar>div{display:grid;gap:3px;min-width:0}.map-toolbar strong{font-family:Georgia,serif;font-size:13px;letter-spacing:.04em}.map-toolbar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.debug-toggle{border:1px solid #585752;background:#1b1b1a;color:#c3c2be;border-radius:2px;padding:8px 10px;font-size:11px;cursor:pointer;white-space:nowrap}.debug-toggle strong{font-family:inherit;color:#979690}.debug-toggle.on{border-color:#9c9b94;background:#2e2e2d}.debug-toggle.on strong{color:#cdc8b9}

.map-wrap{width:100%;height:100%;min-height:0;background:#bbb393;position:relative;overflow:hidden;touch-action:none;cursor:grab}/* MP-PERF-1: cursor is inherited, so toggling it on :active restyled the whole map subtree (~7000 elements) on every press and release; touch has no cursor */@media (pointer:fine){.map-wrap:active{cursor:grabbing}}.map-wrap:after{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(#30332b20 .55px,transparent .72px);background-size:4px 4px;mix-blend-mode:multiply;opacity:.32}#eastfront-map{display:block;width:100%;height:100%;user-select:none;-webkit-user-select:none;touch-action:none;will-change:transform}

/* Terrain: all cell geometry still comes from canonical hexPolygon(). */
.terrain{stroke:#726d59;stroke-width:.85;vector-effect:non-scaling-stroke}.terrain-plain{fill:#b8b18f}.terrain-forest{fill:#84906e}.terrain-city{fill:#9d9682}.terrain-marsh{fill:#8ea29b}.terrain-hill{fill:#b19872}.terrain-detail{pointer-events:none;opacity:.61}.forest-detail{fill:#57554e;stroke:#434341;stroke-width:.85}.forest-detail .tree-trunk{fill:none;stroke:#434341;stroke-width:1.2}.city-detail{fill:#64625b;stroke:#4a4a48;stroke-width:.9}.marsh-detail{fill:none;stroke:#6f6d68;stroke-width:1.45;stroke-linecap:round}.hill-detail{fill:none;stroke:#6f6850;stroke-width:1.4;stroke-linecap:round}

/* Infrastructure endpoints remain canonical center-to-center/shared-edge geometry. */
.road-underlay{stroke:#4e4e4c;stroke-width:7.2;stroke-linecap:round;opacity:.62}.road-center{stroke:#938b73;stroke-width:3.7;stroke-linecap:round;opacity:.96}.rail-underlay{stroke:#bdb59b;stroke-width:5.4;stroke-linecap:round;opacity:.68}.rail-base{stroke:#3f3f3e;stroke-width:2.25;stroke-linecap:round}.rail-sleeper{stroke:#3d3d3c;stroke-width:1.35}.river-bank{stroke:#6d6b67;stroke-width:7.3;stroke-linecap:round;stroke-linejoin:round;opacity:.78}.river-water{stroke:#a09e96;stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round}.bridge-shadow{stroke:#3f3f3d;stroke-width:10.2;stroke-linecap:butt}.bridge-deck{stroke:#cac1a8;stroke-width:7.1;stroke-linecap:butt}.bridge-rail{stroke:#4e4e4c;stroke-width:1.3;stroke-linecap:butt}

/* Exact base polygons; visual hierarchy is intentionally restrained. */
.overlay{vector-effect:non-scaling-stroke}.reachable{fill:#7998a1;fill-opacity:.18;stroke:#c4bfb0;stroke-width:1.2;cursor:pointer}.reachable:focus-visible{stroke:#e7e2d4;stroke-width:2.4;outline:none}.zoc{fill:#6f3d3a;fill-opacity:.055;stroke:#743a37;stroke-width:1.9;stroke-dasharray:5 4;pointer-events:none}.planned-path{fill:none;stroke:#d5d0c2;stroke-width:2.8;stroke-dasharray:6 5;stroke-linecap:round;stroke-linejoin:round;opacity:.9;pointer-events:none}.path-node{fill:#d9d4c6;stroke:#6f6d68;stroke-width:1.8;pointer-events:none}.path-node-core{fill:#72706c;pointer-events:none}.destination-node{fill:#ead482;stroke:#56544d}.destination-hex{fill:#e6ce73;fill-opacity:.075;stroke:#d9c369;stroke-width:1.7;stroke-dasharray:3 4;pointer-events:none}.attack-target-base{fill:#bbad84;fill-opacity:.035;stroke:#a1946b;stroke-width:1.1;stroke-dasharray:2 5;pointer-events:none}.target-bracket{stroke:#cbbd93;stroke-width:3.1;stroke-linecap:square;pointer-events:none;vector-effect:non-scaling-stroke}

/* Touch expansion is transparent and sits below visible counters. */
.unit-hit-area{fill:#ede8d9;fill-opacity:.001;stroke:none;pointer-events:all;cursor:pointer}.counter-visual{cursor:pointer;filter:url(#counterShadow);color:#172022;outline:none}.counter-face{transform-box:fill-box;transform-origin:center;transition:transform .1s ease}.counter-body{stroke:#2f393b;stroke-width:1.45}.counter.german .counter-body{fill:#798993}.counter.soviet .counter-body{fill:#9b6b61}.counter.stack-back{opacity:.97}.counter.selected{filter:url(#selectedShadow)}.counter.selected .counter-body{stroke:#e8e4d5;stroke-width:2.6}.counter-visual:focus-visible .counter-body{stroke:#d4e8e4;stroke-width:2.6}.counter-top-rule{fill:none;stroke:#d7dbd4;stroke-width:.7;opacity:.3}.unit-symbol{fill:none;stroke:currentColor;stroke-width:2.05;stroke-linecap:square;stroke-linejoin:miter}.counter-stats{font-size:8.8px;font-weight:850;letter-spacing:.025em;fill:#182123}.stack-front .counter-stats,.stack-back .counter-stats{font-size:7.25px}.stats-rule{stroke:#292a27;stroke-width:.75;opacity:.66}.damage-mark{font:900 11px/1 sans-serif;fill:#d6d1c1;paint-order:stroke;stroke:#393938;stroke-width:.6}.at-label{font-size:10px;font-weight:900;fill:currentColor;stroke:none}.oos-icon{fill:none;stroke:#d8d2c3;stroke-width:1.55;stroke-linecap:round;paint-order:stroke;filter:drop-shadow(0 1px .6px #00000077)}.faction-mark circle{fill:#d4cfc1;fill-opacity:.80;stroke:#363735;stroke-width:.7}.faction-mark text{font-size:5.2px;font-weight:900;fill:#2a2a28;stroke:none}.stack-badge circle{fill:#222c2e;stroke:#e0dccf;stroke-width:.8}.stack-badge text{font-size:6.3px;font-weight:850;fill:#f0ede3;stroke:none}

.side-panel{padding:11px;display:flex;flex-direction:column;gap:9px;overflow:auto;min-width:0}.panel-block{border:1px solid #3b3b39;background:var(--panel-deep);padding:11px}.selection-block{display:grid;gap:4px}.selection-block strong{font:700 18px Georgia,serif;color:#d1ccbe}.selection-block span:not(.eyebrow){font-size:10px}.eyebrow{display:block;color:#8a8882!important;font-size:9px!important;letter-spacing:.16em;margin-bottom:6px}.panel-block p{margin:0;line-height:1.5}.legend{display:grid;grid-template-columns:22px 1fr;align-items:center;gap:7px 9px;font-size:11px}.legend .eyebrow{grid-column:1/-1}.legend-swatch{display:block;width:20px;height:15px;border-radius:1px}.reachable-swatch{background:#7998a14a;border:1px solid #c4bfb0}.zoc-swatch{border:2px dashed #743a37}.target-swatch{position:relative;border:1px dotted #a1946b}.target-swatch:after{content:"";position:absolute;left:2px;top:2px;width:5px;height:5px;border-left:2px solid #cbbd93;border-top:2px solid #cbbd93}.legend-line{width:22px;height:0}.road-swatch{border-top:5px double #938b73}.rail-swatch{border-top:3px dashed #4c4c4a}.river-swatch{border-top:4px solid #a09e96}.debug-key{display:none}.workspace.debug-active .debug-key{display:block}.assertions{margin-top:auto;display:grid;gap:4px;font-size:9px}.assertions>strong{font-size:12px;margin-bottom:4px}.assertions.pass>strong{color:#b7b5ad}.assertions.fail>strong{color:#d9a392}.assertions div{display:grid;grid-template-columns:14px 1fr;color:#93928d}.assertions div span{color:#b4b2a9}

/* Debug is always the top tactical layer. */
.debug-boundary{fill:none;stroke:#e3ded0;stroke-width:.75;stroke-dasharray:2 3;pointer-events:none}.debug-center{fill:#20201f;stroke:#e3ded0;stroke-width:.8;pointer-events:none}.debug-label{font:6.3px ui-monospace,monospace;fill:#2f2f2e;paint-order:stroke;stroke:#d0cbbb;stroke-width:2px;pointer-events:none}.counter-anchor-debug{stroke:#fff0a8;stroke-width:1.05;fill:#6f5d1c;pointer-events:none}.debug-counter-bounds{fill:none;stroke:#ede8d9;stroke-width:.8;stroke-dasharray:3 2;pointer-events:none}.debug-touch-bounds{fill:none;stroke:#42d6df;stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.debug-stack-offset{stroke:#ffcf78;stroke-width:.8;stroke-dasharray:2 2;pointer-events:none}.debug-road-node{fill:#ded9c9;stroke:#494947;stroke-width:1}.debug-rail-node{fill:#ddd8ca;stroke:#2c2c2b;stroke-width:1}.debug-river-edge{stroke:#27dbff;stroke-width:1.5;stroke-dasharray:2 2}.debug-bridge-crossing{fill:#ffec64;stroke:#3e3e3b;stroke-width:1.2}.debug-path-node{fill:none;stroke:#ff86dc;stroke-width:1.2;pointer-events:none}

footer{height:34px;display:flex;justify-content:space-between;align-items:center;padding:0 18px;background:#151514;border-top:1px solid #333332;letter-spacing:.025em}

@media(max-width:1100px){.workspace{grid-template-columns:minmax(0,1fr) 218px;gap:10px;padding:10px}.topbar{grid-template-columns:1.18fr .92fr 1fr;padding:0 17px}.turn-strip,.resource-strip{gap:5px}.turn-strip span,.resource-strip span,.menu-button{padding:7px 8px}.map-toolbar{padding-left:13px}.side-panel{padding:9px}.panel-block{padding:9px}}
@media(max-width:900px){.brand span{display:none}.resource-strip>span{display:none}.topbar{grid-template-columns:1fr 1.1fr auto}.workspace.panel-open{grid-template-columns:minmax(0,1fr) 205px}.map-toolbar span{display:none}}
@media(max-height:760px){.topbar{height:60px}.workspace{height:calc(100vh - 94px);min-height:545px}.map-card{grid-template-rows:46px minmax(0,1fr)}.side-panel{gap:6px}.panel-block{padding:8px}.assertions{font-size:8.3px}}

/* UI-003 real Core integration additions. Tactical geometry still comes from the locked SVG coordinate space. */
.terrain-rough{fill:#9a9277}.terrain-main-city{fill:#888174}.terrain-outer-city{fill:#958e7e}.terrain-lake{fill:#78969b}.capital-detail{stroke-width:1.15}.rough-detail{stroke:#69624b}.lake-detail{fill:none;stroke:#6c6a63;stroke-width:1.3;opacity:.72}.river-major{stroke-width:6.2}.counter-id{font-size:4.7px;font-weight:800;fill:#e8e7df;opacity:.82}.unit-mini-label{font-size:6px;font-weight:900;fill:currentColor;stroke:none}.unit-letter-label{font-size:9px;font-weight:900;fill:currentColor;stroke:none}
.deployment-zone{fill:#9c9b97;fill-opacity:.10;stroke:#cbc6b8;stroke-width:1;stroke-dasharray:3 4;cursor:pointer;vector-effect:non-scaling-stroke}.deployment-zone:focus-visible{stroke:#ede8d9;stroke-width:2;outline:none}.move-option{vector-effect:non-scaling-stroke;cursor:pointer}.move-legal{fill:#789aa5;fill-opacity:.22;stroke:#d0cbbd;stroke-width:1.6}.move-illegal{fill:#8a5048;fill-opacity:.10;stroke:#7e4b46;stroke-width:1.3;stroke-dasharray:3 4}
.boot-screen,.privacy-gate{min-height:100vh;display:grid;place-items:center;background:#171716;color:#d2cdbe;font:14px Inter,ui-sans-serif,system-ui,sans-serif}.boot-screen.error{color:#e1aaa0}.privacy-gate{padding:24px;background:radial-gradient(circle at 50% 35%,#2b2c2a,#151514 68%)}.privacy-card{width:min(520px,90vw);padding:32px;border:1px solid #454543;background:#20201f;box-shadow:0 20px 60px #00000088;text-align:center}.privacy-card h1{margin:8px 0 10px;font:700 28px Georgia,serif;color:#d2cdbf}.privacy-card p{color:#acaaa5;line-height:1.6;margin:0 0 24px}.primary-action{width:100%;border:1px solid #7a7975;background:#474746;color:#dfdacc;padding:11px 12px;border-radius:2px;font-weight:800;letter-spacing:.08em;cursor:pointer}.primary-action:disabled{opacity:.35;cursor:not-allowed}.status-message p{color:#c2bcad}.deployment-panel{display:grid;min-height:0}.deployment-progress{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.deployment-progress strong{font:700 20px Georgia,serif;color:#d1ccbe}.deployment-progress span{font-size:9px;color:#92918b}.roster-list{display:grid;gap:4px;max-height:255px;overflow:auto;margin-bottom:9px;padding-right:3px}.roster-row{display:grid;grid-template-columns:1fr auto;gap:2px 6px;text-align:left;border:1px solid #3b3c3a;background:#1d1d1c;color:#cbc6b8;padding:7px 8px;cursor:pointer}.roster-row small{grid-column:1;color:#8a8882;font-size:8px}.roster-row b{grid-column:2;grid-row:1/3;align-self:center;font-size:7px;letter-spacing:.08em;color:#807f7c}.roster-row.placed b{color:#b5b3ac}.roster-row.selected{border-color:#c5c0b2;background:#323230}.roster-row:disabled{cursor:not-allowed;opacity:.45}.privacy-note{margin-top:8px!important}.integration-debug{display:grid;gap:5px;font-size:9px}.integration-debug>div{display:grid;grid-template-columns:66px minmax(0,1fr);gap:6px}.integration-debug>div span{color:#7d7b74}.integration-debug>div strong{font-size:8px;color:#b8b7b2;overflow-wrap:anywhere}.integration-debug .ok{color:#b4b2a9}.integration-debug .bad{color:#d9a392}.viewer-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px}.mini-button{border:1px solid #454543;background:#242423;color:#a09e98;padding:6px;cursor:pointer}.mini-button.active{border-color:#acaaa2;color:#d5d0c2;background:#363634}.panel-block code{font-size:9px;color:#c5c0b2}

/* UI-004 non-combat turn-loop affordances. All tactical placement remains SVG/canonical geometry. */
.rail-hit-corridor{stroke:#fff;stroke-opacity:.001;stroke-width:18;pointer-events:stroke;cursor:pointer}
.rail-repair-highlight{stroke:#bab8b0;stroke-width:5;stroke-opacity:0;pointer-events:none}.rail-repair-highlight.rail-active{stroke:#a8a69d;stroke-opacity:.52}.rail-repair-highlight.rail-selected{stroke:#d2c49a;stroke-opacity:.96;stroke-width:7}
.movement-draft{stroke:#d7d2c4;stroke-width:3.4}.reinforcement-entry{fill:#b6b4ac;fill-opacity:.19;stroke:#d8d2c2;stroke-width:1.6;stroke-dasharray:5 3;cursor:pointer;vector-effect:non-scaling-stroke}.recovery-base{fill:#beb9a9;fill-opacity:.08;stroke:#bcbab1;stroke-width:1.1;stroke-dasharray:2 5;pointer-events:none;vector-effect:non-scaling-stroke}
.entrench-icon{fill:none;stroke:#d8d2c2;stroke-width:1.25;stroke-linecap:round;opacity:.9}.phase-actions{display:grid;gap:7px}.secondary-action{width:100%;border:1px solid #4d4d4b;background:#262624;color:#bbb9b3;padding:8px 9px;border-radius:2px;cursor:pointer}.secondary-action.active{border-color:#c9b76e;background:#323331;color:#d3cebe}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.issue-list{display:grid;gap:4px;margin:6px 0;font-size:9px;color:#cda69d}.phase-metric{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:#8e8c86}.phase-metric strong{color:#cbc6b8}.reinforcement-list{display:grid;gap:4px;max-height:180px;overflow:auto}.reinforcement-row{display:grid;grid-template-columns:1fr auto;border:1px solid #3e3f3d;background:#1d1d1c;color:#c2bdaf;padding:7px;text-align:left;cursor:pointer}.reinforcement-row.selected{border-color:#d0c6a6;background:#2e2e2d}.reinforcement-row small{grid-column:1/-1;color:#898782;font-size:8px}.warning-note{color:#d0c5a3!important}.game-over-panel{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 35%,#2f302e,#141413 68%);padding:24px}.game-over-card{width:min(560px,90vw);padding:36px;border:1px solid #575652;background:#20201f;text-align:center;box-shadow:0 25px 70px #00000099}.game-over-card h1{font:700 38px Georgia,serif;color:#d6d0c0;margin:8px 0}.game-over-card p{color:#aeada9}.phase-pill{font-size:9px;color:#a1a09a;text-transform:uppercase;letter-spacing:.08em}
/* UI-005 combat transaction prototype */
.combat-target-option{fill:rgba(183,169,128,.16);stroke:#ad9f77;stroke-width:2.2;stroke-dasharray:7 4;cursor:pointer}.combat-target-option.selected{fill:rgba(193,180,138,.3);stroke-width:3}.combat-attack-line{stroke:#cfc198;stroke-width:2.4;stroke-dasharray:8 5;pointer-events:none}.combat-battle-target{fill:none;stroke:#dfd1a7;stroke-width:2.7;stroke-dasharray:3 3;pointer-events:none}.retreat-option{fill:rgba(141,132,105,.18);stroke:#9c6948;stroke-width:2;stroke-dasharray:5 4;cursor:pointer}.retreat-draft-line{fill:none;stroke:#a69a77;stroke-width:3;stroke-dasharray:8 5}.breakthrough-option{fill:rgba(112,159,171,.13);stroke:#6f9fac;stroke-width:2;stroke-dasharray:5 4;cursor:pointer}.breakthrough-option.illegal{fill:rgba(145,69,59,.1);stroke:#95584f}.breakthrough-draft-line{fill:none;stroke:#aeaca4;stroke-width:3;stroke-dasharray:10 5}.schwerpunkt-target{fill:rgba(214,128,72,.13);stroke:#d5844d;stroke-width:2.4;stroke-dasharray:4 3;cursor:pointer}.schwerpunkt-target.selected{fill:rgba(214,128,72,.3);stroke-width:3}.combat-card{border:1px solid rgba(196,185,150,.25);background:rgba(29,29,28,.42);padding:10px;border-radius:6px;margin-top:8px}.combat-card h3{margin:0 0 6px;font-size:13px;letter-spacing:.05em}.combat-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px 8px;font-size:11px}.combat-grid span{opacity:.72}.combat-grid strong{text-align:right}.combat-unit-list{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0}.combat-unit-list button{font-size:10px}.pending-lock{border-left:3px solid #ad9f77;padding-left:8px}.battle-history{max-height:160px;overflow:auto}.battle-history-row{display:grid;grid-template-columns:1fr auto;gap:3px 8px;padding:6px 0;border-bottom:1px solid rgba(237,232,217,.07);font-size:10px}.dice-box{display:flex;gap:8px;align-items:center;margin:8px 0}.die{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(237,232,217,.35);border-radius:5px;font-weight:700;background:rgba(237,232,217,.05)}.modifier-list{font-size:10px;display:grid;grid-template-columns:1fr auto;gap:3px 10px}.combat-handoff-note{color:#d4c69d}.loss-draft{font-family:ui-monospace,monospace;font-size:10px;word-break:break-all;background:rgba(0,0,0,.18);padding:6px;border-radius:4px}
/* UI-006 P4R3 production terrain renderer. Geometry remains canonical. */
.renderer-controls{display:flex;gap:7px;align-items:center}.production-toggle{min-width:92px}.prod-ground-substrate{opacity:.98}.production-terrain-cell{pointer-events:none}.production-grid{fill:none;stroke:#575652;stroke-width:.75;stroke-opacity:.64;vector-effect:non-scaling-stroke;pointer-events:none}.prod-road,.prod-rail-ballast,.prod-rail-sleep,.prod-rail-pair,.prod-river-bank,.prod-river-water,.prod-bridge{pointer-events:none}.prod-road{filter:drop-shadow(0 .7px .6px #2d2e2c60)}.prod-river-water{filter:drop-shadow(0 1px .5px #41423e60)}.prod-bridge{filter:drop-shadow(0 1.2px .7px #20201e88)}
#eastfront-map[data-renderer-mode="production"] #counter-layer .counter-body{filter:drop-shadow(0 1px .8px #0005)}
#eastfront-map[data-renderer-mode="production"] .deployment-zone{fill-opacity:.12;stroke-width:1.2}
#eastfront-map[data-renderer-mode="production"] .combat-target-option,#eastfront-map[data-renderer-mode="production"] .move-option{paint-order:stroke fill}

/* UI-008 product shell / Web Preview */
.preview-home,.preview-state{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 22%,#2f2f2e 0,#1c1c1b 44%,#121211 100%);color:#d2cdbe}
.preview-home-card,.preview-state-card{width:min(560px,92vw);border:1px solid #494a48;background:linear-gradient(180deg,#242422,#1a1b19);box-shadow:0 28px 80px #00000088;padding:42px 44px;text-align:center}
.preview-brand-mark{width:58px;height:58px;margin:0 auto 18px;display:grid;place-items:center;border:1px solid #888680;background:#282927;color:#d9d3c3;font:700 30px Georgia,serif}
.preview-kicker{display:block;color:#96948c;font-size:11px;letter-spacing:.22em;text-transform:uppercase}.preview-home h1,.preview-state h1{font:700 clamp(30px,5vw,48px) Georgia,serif;letter-spacing:.035em;color:#d9d4c6;margin:12px 0}.preview-home-copy,.preview-state-card p{color:#afaea8;line-height:1.65;margin:0 auto 24px;max-width:430px}.preview-new-game{min-width:220px;border:1px solid #888885;background:#464645;color:#e1dcce;padding:13px 20px;font-weight:800;letter-spacing:.12em;cursor:pointer}.preview-new-game:hover{background:#53524d}.preview-about{margin:22px auto 0;max-width:420px;color:#93918c;font-size:12px;text-align:left;border-top:1px solid #343533;padding-top:14px}.preview-about summary{cursor:pointer;text-align:center;color:#bdbbb6}.preview-about p{margin:10px 0 0;line-height:1.55}.preview-home-version{margin-top:24px;border:0;background:none;height:auto;padding:0;justify-content:center;font-size:10px;letter-spacing:.1em}.preview-loading .preview-state-card{border-color:#454543}.preview-fatal .preview-state-card{border-color:#715752}.preview-fatal h1{font-size:34px}.mobile-advisory,.mobile-game-advisory{border:1px solid #766e57;background:#292a27;color:#c9c4b4;padding:10px 12px;font-size:12px;line-height:1.45}.mobile-game-advisory{position:fixed;left:10px;right:10px;top:10px;z-index:20;text-align:center;box-shadow:0 8px 24px #00000088}.game-over-restart{margin-top:22px}.map-controls{display:flex!important;grid-auto-flow:column;align-items:center;justify-content:flex-end;gap:8px}.zoom-controls,.developer-controls{display:flex;align-items:center;gap:5px}.map-control-button{min-width:38px;min-height:38px;border:1px solid #585752;background:#1b1b1a;color:#cdc8ba;border-radius:2px;cursor:pointer;font-weight:800}.map-control-button:hover{background:#2d2d2b}.fit-button{font-size:9px;letter-spacing:.08em}.zoom-controls span{min-width:44px;text-align:center;font-size:9px!important;color:#b0afa9!important}.resource-strip .menu-button{min-height:38px}

@media(max-width:1100px){.map-toolbar{gap:8px}.map-controls{gap:5px}.map-control-button{min-width:42px;min-height:42px}.resource-strip .menu-button{min-height:42px}.side-panel{width:auto}.roster-row,.secondary-action,.primary-action,.mini-button,.reinforcement-row{min-height:42px}}
@media(max-width:760px){body{overflow:auto}.preview-home,.preview-state{padding:14px}.preview-home-card,.preview-state-card{padding:30px 20px}.topbar{height:auto;min-height:70px;grid-template-columns:1fr auto;padding:8px 10px;gap:8px}.turn-strip{grid-column:1/-1;order:3;justify-content:flex-start;overflow:auto}.resource-strip{gap:4px}.workspace,.workspace.panel-open{height:calc(100vh - 124px);min-height:520px;grid-template-columns:minmax(0,1fr);padding:6px}.workspace.panel-open .side-panel{position:absolute;right:8px;top:128px;bottom:38px;width:min(270px,80vw);z-index:10;box-shadow:0 15px 45px #000000bb}.map-card{grid-template-rows:auto minmax(0,1fr)}.map-toolbar{min-height:54px;padding:6px 8px}.map-toolbar>div:first-child{display:none}.map-controls{width:100%;justify-content:flex-end}.developer-controls{display:none}.mobile-game-advisory{top:auto;bottom:8px}.brand span{display:block!important}.brand strong{font-size:14px}.resource-strip>span{display:none}footer{display:none}}

/* UI-009R1 mobile/tablet compatibility: one cached production terrain surface below live SVG interaction layers. */
.map-stage{position:absolute;inset:0;transform-origin:50% 50%;contain:layout style}
/* Promote only during camera motion; permanent promotion can leave WebKit's
   enlarged SVG backing blurry even after all terrain has finished loading. */
.map-stage[data-camera-moving=true]{will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.map-stage>.terrain-surface,.map-stage>#eastfront-map{will-change:auto}
.terrain-surface{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;display:block;pointer-events:none;user-select:none;-webkit-user-select:none;will-change:transform;z-index:0}
#eastfront-map{position:relative;z-index:1;background:transparent}

/* UI Visual Pass A — original slate / brass command interface.
   Presentation only: no terrain, counter geometry, or event targeting changes. */
:root{--panel:#17202b;--panel-deep:#111923;--line:#394553;--muted:#aab5c3;--ivory:#f0e9dc;--brass:#bca071;--ice:#bed9e9;color:var(--ivory);background:#0b1018}
body{background:radial-gradient(ellipse at 35% 0,#292a26,#0d0d0b 65%)}
.topbar{background:linear-gradient(180deg,#252623,#131412);border-bottom:1px solid #817962;box-shadow:0 2px 0 #0a0a08,0 8px 24px #00000066}
.brand-mark,.preview-brand-mark{color:#d2c8a9;background:linear-gradient(145deg,#2f302c,#141513);border:1px solid var(--brass);box-shadow:inset 0 0 0 3px #141512,inset 0 0 0 4px #58564f,0 3px 10px #00000066;border-radius:50%}
.brand strong{color:var(--ivory);letter-spacing:.18em}.brand span{color:#a8a69e}
.turn-strip span,.resource-strip>span{background:#11120f;border-color:#383835;border-radius:3px;color:#bebcb3;letter-spacing:.055em}
.turn-strip strong,.resource-strip strong{font-variant-numeric:tabular-nums;color:var(--ivory);font-size:15px;margin-left:4px}
.turn-strip span:nth-child(2){background:#2b2c28;color:#d3cec0;border-color:#6a6860}
.turn-strip span:last-child{border-bottom:2px solid var(--brass);color:#c1bbac}
.map-card,.side-panel{border-color:#454643;border-radius:5px;box-shadow:0 10px 28px #00000066,inset 0 1px #ede8d90c}
.map-toolbar{background:linear-gradient(180deg,#252623,#1c1c1a);border-color:#424240}.map-toolbar strong{color:#cfc9ba;letter-spacing:.06em}
.side-panel{background:linear-gradient(160deg,#1f201df5,#131412fa);scrollbar-color:#6d6b63 #141512;scrollbar-width:thin}
.panel-block{background:linear-gradient(145deg,#21211e,#151613);border:1px solid #3f403d;border-radius:4px;padding:12px;box-shadow:inset 0 1px #ede8d907,0 3px 9px #00000022}
.eyebrow{color:#b3aa92!important;letter-spacing:.13em;font-size:10px!important}.panel-block p{color:#bcbab2;line-height:1.65}
.selection-block{border-top:2px solid var(--brass)}.selection-block strong{color:#dbd5c6;font-size:20px}.selection-block span:not(.eyebrow){color:#bebcb4;font-size:11px}
.phase-metric{padding:7px 0;border-bottom:1px solid #ede8d90a;color:#b6b4ac;font-size:11px}.phase-metric strong{color:#d8d2c2;font-variant-numeric:tabular-nums}
.phase-pill{display:inline-block;padding:5px 8px;background:#2f302c;border:1px solid #59574f;border-radius:3px;color:#d0c7ad}
button{touch-action:manipulation;transition:background-color .12s,border-color .12s,box-shadow .12s;color:var(--ivory)}
.menu-button,.debug-toggle,.mini-button,.secondary-action,.map-control-button{background:linear-gradient(180deg,#2d2e2b,#1e1e1c);border:1px solid #5b5a52;color:#d3cebf;border-radius:3px;box-shadow:inset 0 1px #ede8d90b,0 2px 3px #00000033;min-height:40px}
.primary-action,.preview-new-game{background:linear-gradient(180deg,#3f3f3e,#292927);border:1px solid #afa482;color:#e1dbcb;border-radius:3px;min-height:48px;box-shadow:inset 0 1px #d6d0c033,inset 0 -3px #12121270,0 4px 12px #00000044;letter-spacing:.13em}
.primary-action{margin-top:4px}.preview-new-game{min-width:240px}
button:focus-visible,summary:focus-visible{outline:2px solid #d2cdbd;outline-offset:3px}
@media(hover:hover){button:not(:disabled):hover{border-color:#b9b197;box-shadow:inset 0 1px #ede8d918,0 0 0 1px #b5ab8a25}.preview-new-game:hover,.primary-action:hover{background:#494a47}.roster-row:not(:disabled):hover{background:#2e2f2b}}
button:not(:disabled):active{box-shadow:inset 0 3px 8px #00000099;border-color:#ccc7b7;background:#3a3b37}
button:disabled,.primary-action:disabled{opacity:1;color:#8b8981;border-color:#373835;background:#1c1c1a;box-shadow:none;cursor:not-allowed}
.mini-button.active,.secondary-action.active,.debug-toggle.on{background:#343430;border-color:#ada488;color:#e1dbcb;box-shadow:inset 3px 0 #b3a98b}.debug-toggle.on strong{color:#c5c0b1}
.roster-list{gap:7px;max-height:310px;scrollbar-color:#6f6e66 #141512;scrollbar-width:thin}
.roster-row{grid-template-columns:36px minmax(0,1fr) auto;gap:4px 8px;min-height:62px;padding:9px;background:#191917;border:1px solid #434440;border-radius:3px;color:#d8d3c5;align-items:center}
.roster-row>span:not(.roster-emblem){grid-column:2;font-size:12px;font-weight:650;overflow-wrap:anywhere}.roster-row small{grid-column:2;font-size:10px;color:#b7b5ac;line-height:1.45;overflow-wrap:anywhere}
.roster-row b{grid-column:3;grid-row:1/3;color:#c3b792;font-size:8px;letter-spacing:.04em}.roster-row.placed b{color:#adcadd}.roster-row.placed{border-left:3px solid #7899b1}
.roster-row.selected{background:#353631;border-color:#cfc4a4;box-shadow:inset 3px 0 #cfc4a4,0 0 0 1px #aca28530}.roster-row.selected b{color:#e1dbcb}
.roster-emblem{grid-column:1;grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border:1px solid #877f68;border-radius:4px;background:linear-gradient(145deg,#373734,#1a1a18);color:#c9c4b4;font-size:18px;font-weight:700;box-shadow:inset 0 0 0 2px #141512}
.roster-emblem svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.5}.roster-emblem text{fill:currentColor;stroke:none;font:700 10px system-ui}
.deployment-progress{padding:4px 0 10px;border-bottom:1px solid #484946}.deployment-progress strong{color:#d6d0c0;font-size:24px;font-variant-numeric:tabular-nums}.deployment-progress span{color:#bab8b0;font-size:11px}
.reinforcement-row{background:#1d1e1b;border-color:#4c4d49;color:#d8d3c5;border-radius:3px}.reinforcement-row small{color:#b6b4ac;font-size:10px}.reinforcement-row.selected{background:#353531;border-color:#c7bc9b}
.combat-card{background:#141512;border-color:#54534f;border-radius:4px}.combat-card h3{color:#c4beaf}.die{background:#2c2d29;color:#d3cebe;border-color:#827a62;box-shadow:inset 0 1px #ede8d920,0 3px 8px #00000055}.issue-list{color:#dcb2ab}.warning-note,.combat-handoff-note{color:#bfbaaa!important}.status-message{border-left:3px solid #aaa185}.status-message p{color:#d2cdbe}
.preview-home,.preview-state,.privacy-gate,.game-over-panel{background:radial-gradient(ellipse at 25% 15%,#353632 0,transparent 55%),radial-gradient(ellipse at 90% 90%,#262725,transparent 45%),#10100e;color:var(--ivory)}
.preview-home-card,.preview-state-card,.privacy-card,.game-over-card{background:linear-gradient(150deg,#2b2b28f5,#161614fa 70%);border:1px solid #817961;border-radius:5px;box-shadow:inset 0 0 0 5px #141512,inset 0 0 0 6px #6d6b6455,0 30px 90px #00000099;padding:48px 40px}
.preview-home h1,.preview-state h1,.privacy-card h1,.game-over-card h1{color:#d9d3c4;font-weight:400;letter-spacing:.09em;text-shadow:0 2px 10px #00000055}.preview-kicker{color:#c1b99e;letter-spacing:.25em}.preview-home-copy,.preview-state-card p,.privacy-card p,.game-over-card p{color:#bfbdb4}.preview-about{color:#b4b1a9;border-color:#57554e}.preview-about summary{color:#c5bfb0;min-height:36px}.preview-home-version{color:#a4a29a}
.preview-brand-mark{width:68px;height:68px;margin-bottom:26px}.preview-loading .preview-state-card{border-color:#817961}.preview-fatal .preview-state-card{border-color:#925e5b}.boot-screen{background:#141512;color:#d0cbbb}
.mobile-advisory,.mobile-game-advisory{background:#252524;border-color:#827a63;color:#c9c4b4;border-radius:4px}
footer{background:#10100e;border-color:#383935;color:#a19f96}
.deployment-zone{fill:#a6cbe4;stroke:#d1ccbd}.deployment-zone:hover{fill-opacity:.24;stroke:#d7d1c1;stroke-width:2}.move-legal:hover,.reachable:hover{fill-opacity:.32;stroke:#d9d4c4}.deployment-zone:focus-visible,.move-option:focus-visible{stroke:#d4cebe;stroke-width:2.4;outline:none}
@media(pointer:coarse){.menu-button,.mini-button,.secondary-action,.map-control-button,.debug-toggle{min-height:46px;min-width:44px}.roster-row{min-height:68px}.roster-list{gap:8px}.primary-action{min-height:50px}}
@media(min-width:761px){.workspace{grid-template-columns:minmax(0,1fr) 276px}.workspace.panel-collapsed{grid-template-columns:minmax(0,1fr) 0}}
@media(min-width:761px) and (max-width:1100px){.workspace.panel-open{grid-template-columns:minmax(0,1fr) 252px}.topbar{padding:0 12px}.turn-strip span,.resource-strip span{padding:7px 6px;letter-spacing:0}.brand strong{font-size:15px}}
@media(max-width:760px){.preview-home-card,.preview-state-card,.privacy-card,.game-over-card{padding:34px 24px}.workspace.panel-open .side-panel{width:min(300px,85vw)}.turn-strip span{font-size:11px}.resource-strip>span{display:inline-flex;align-items:center;padding:6px;font-size:10px}.resource-strip{flex-wrap:wrap;justify-content:flex-end}.topbar{grid-template-columns:minmax(110px,1fr) minmax(0,1.5fr)}.brand span{font-size:9px}.roster-row small{font-size:11px}.map-control-button{min-height:44px;min-width:44px}}
@media(prefers-reduced-motion:reduce){button,.workspace{transition:none}}

/* Visual Pass B: campaign hierarchy and commander dossier. */
.topbar{height:88px;grid-template-columns:minmax(160px,.8fr) minmax(360px,1.8fr) auto;padding:0 22px;gap:22px}
.brand strong{font-size:20px;font-weight:400}.brand-mark{width:42px;height:42px}.brand span{font-size:9px;letter-spacing:.12em}
.command-hud{justify-content:flex-start;gap:24px;border-left:1px solid #aba18440;padding-left:24px}
.command-hud span{padding:0;border:0;background:none;border-radius:0;white-space:normal;letter-spacing:.1em}
.campaign-heading{min-width:0}.campaign-heading .eyebrow{margin-bottom:5px;font-size:9px!important}.campaign-heading>strong{font:400 19px Georgia,serif;color:#d4cebe}
.campaign-turn{border-left:1px solid #ede8d917;padding-left:20px;display:grid;gap:2px}.campaign-turn>span{font-size:9px;color:#acaaa2}.campaign-turn>strong{font:400 30px Georgia,serif;color:#d4cebe;margin:0}
.campaign-side{display:flex;align-items:center;gap:9px}.campaign-side strong{font-size:10px;letter-spacing:.12em;color:#c3bdae}
.command-hud .faction-seal{display:grid;place-items:center;width:34px;height:40px;border:1px solid #8298ad;background:#2e2f2b;font:18px Georgia,serif;clip-path:polygon(0 0,100% 0,100% 80%,50% 100%,0 80%)}
.campaign-side[data-side="SOVIET"] .faction-seal{background:#4a3033;border-color:#a47b70;color:#c0baab}
.resource-strip{gap:10px}.resource-strip>span{background:none;border:0;border-left:1px solid #ede8d918;padding:4px 10px;font-size:10px}.resource-strip>span strong{display:block;font-size:20px;margin:2px 0 0;color:#ccc7b7}
.workspace{height:calc(100vh - 122px);min-height:0;gap:12px;padding:12px}.side-panel{gap:12px;padding:12px;background:linear-gradient(115deg,#282926,#141512 65%)}
.command-title{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #9d93755c;font-size:11px!important;letter-spacing:.2em}
.unit-dossier{display:flex;align-items:center;gap:12px}.unit-dossier .roster-emblem{width:56px;height:56px;flex-shrink:0;border-radius:50%}.unit-dossier .roster-emblem svg{width:38px;height:38px}.unit-dossier>div{min-width:0;display:grid;gap:4px}.unit-dossier strong{font:17px Georgia,serif;overflow-wrap:anywhere}.unit-dossier .eyebrow{margin:0;color:#c9c4b4!important}
.unit-readings{display:grid;grid-template-columns:repeat(3,1fr);margin:18px 0 12px;padding:12px 0;border-block:1px solid #ede8d912}.unit-readings div{padding:0 8px;text-align:center;border-right:1px solid #ede8d914}.unit-readings div:last-child{border:0}.unit-readings dt{font-size:10px;color:#b9b7ae}.unit-readings dd{margin:5px 0 0;font-size:24px;font-weight:500;color:#d1ccbd;font-variant-numeric:tabular-nums}
.unit-status{display:grid;grid-template-columns:auto 1fr;gap:9px;font-size:11px}.unit-status strong{text-align:right;font:500 11px system-ui;color:#d4cfc1}.command-empty{display:flex;gap:12px;align-items:center}.command-reticle{font:34px Georgia!important;color:#aaa186!important}
.deployment-steps{display:flex;list-style:none;padding:0;gap:8px;counter-reset:step;margin:8px 0 12px}.deployment-steps li{counter-increment:step;flex:1;font-size:10px;color:#99978e;line-height:1.5}.deployment-steps li:before{content:counter(step,decimal-leading-zero);display:block;font:18px Georgia;color:#8a8880;border-top:2px solid #3e3e3b;padding-top:7px;margin-bottom:5px}.deployment-steps .current{color:#d5cfbf}.deployment-steps .current:before{color:#c2bcad;border-color:#c2b58f}.deployment-steps .done:before{color:#c2bdae;border-color:#88a8bf}
.deployment-guidance{padding:10px 12px;background:#161613;border-left:2px solid #a69c7d;margin-bottom:12px!important;font-size:12px!important}
.roster-row{grid-template-columns:46px minmax(0,1fr) auto;min-height:76px;padding:10px;gap:5px 10px}.roster-emblem{width:44px;height:44px;border-radius:50%}.roster-emblem svg{width:32px;height:32px}.roster-row>span:not(.roster-emblem){font:16px Georgia,serif;letter-spacing:.02em}.roster-row small{line-height:1.6}.roster-row.selected .roster-emblem{border-color:#beb9a9;background:#3c3d3a;box-shadow:0 0 0 3px #c7ba9115,inset 0 0 0 2px #141512}.roster-row:active{box-shadow:inset 0 3px 10px #00000099}.roster-list{max-height:34vh}
.deployment-locations{border:1px solid #69675f;border-radius:3px;margin:4px 0 12px;background:#1b1c19}.deployment-locations summary{cursor:pointer;min-height:48px;padding:14px;font-size:12px;color:#c7c2b3}.deployment-locations p{padding:0 12px 10px;font-size:11px}.location-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:8px;max-height:230px;overflow:auto}.location-button{min-height:48px;min-width:44px;border:1px solid #718ba2;background:#31312d;color:#dcd7c9;border-radius:3px;font:12px ui-monospace,monospace}.location-button:focus-visible{outline-offset:0}
#ready-button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:68px;padding:12px 16px;text-align:left;border:1px solid #b7ad8b;border-bottom:3px solid #7d7356;background:linear-gradient(110deg,#434341,#242423);box-shadow:inset 0 0 0 3px #17181680,0 6px 16px #00000055;letter-spacing:.04em;flex-shrink:0}
.advance-label{font:19px Georgia,serif;color:#d7d1c1}.advance-label small{display:block;font:9px system-ui;letter-spacing:.1em;margin-bottom:6px;color:#c4bba2}.advance-arrow{display:grid;place-items:center;border:1px solid #aa9e7a;border-radius:50%;width:36px;height:36px;font:30px Georgia;color:#c9c4b4}#ready-button:disabled{opacity:.5}#ready-button:not(:disabled):active{background:#2e2f2b;border-color:#d8d3c4;box-shadow:inset 0 4px 12px #000000bb}
.preview-home-card{width:min(690px,92vw);padding:64px 52px;text-align:left;position:relative}.preview-home-card:before{content:"";position:absolute;top:20px;left:20px;right:20px;height:1px;background:linear-gradient(90deg,#afa482,transparent);pointer-events:none}.preview-home .preview-brand-mark{margin:0 0 32px;width:76px;height:76px}.preview-home h1{font-size:clamp(34px,5vw,54px);max-width:480px;line-height:1.12;margin:20px 0}.preview-home-copy{margin:0 0 30px;max-width:390px}.preview-new-game{min-height:58px;padding:16px 30px;text-align:left}.preview-about{margin:28px 0 0}.preview-about summary{text-align:left}.preview-home-version{justify-content:flex-start}
@media(min-width:761px){.workspace.panel-open{grid-template-columns:minmax(0,1fr) 300px}}
@media(max-width:1150px){.topbar{gap:12px;padding:0 12px;grid-template-columns:150px minmax(280px,1fr) auto}.command-hud{gap:14px;padding-left:14px}.campaign-heading>strong{font-size:16px}.campaign-side strong{display:none}.resource-strip{gap:4px}.resource-strip>span{padding:4px 6px}.menu-button{font-size:10px;padding:8px}.workspace.panel-open{grid-template-columns:minmax(0,1fr) 280px}}
@media(max-width:900px){.topbar{height:auto;min-height:112px;grid-template-columns:1fr auto;padding:10px 12px}.command-hud{grid-row:2;grid-column:1/-1;border-left:0;border-top:1px solid #ede8d912;padding:10px 0 0;justify-content:space-between;overflow:visible}.campaign-heading>strong{font-size:17px}.campaign-side strong{display:block}.campaign-turn{display:flex;align-items:baseline;gap:8px}.campaign-turn>strong{font-size:24px}.workspace{height:calc(100dvh - 150px)}.resource-strip>span{display:block}.brand span{display:none!important}}
@media(max-width:760px){.workspace,.workspace.panel-open{grid-template-columns:minmax(0,1fr);height:calc(100dvh - 140px);min-height:440px}.workspace.panel-open .side-panel{top:138px;bottom:10px;width:min(320px,88vw)}.campaign-side strong{font-size:9px}.campaign-heading>strong{font-size:15px}.preview-home-card{padding:40px 28px}.preview-home h1{font-size:36px}.roster-list{max-height:30vh}.location-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.resource-strip .menu-button{min-height:44px}.campaign-heading .eyebrow{font-size:8px!important}}

/* B1: terrain cards and touch-first deployment confirmation. */
.location-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:240px;gap:8px;scroll-padding:6px}
.location-card{display:grid;gap:5px;min-height:108px;padding:12px;text-align:left;align-content:start;background:linear-gradient(145deg,#333430,#1c1c19)}
.location-card strong{font:16px Georgia,serif;color:#d1ccbd}.location-card span{font:10px/1.4 system-ui;color:#bfbbad}.location-card small{font:10px ui-monospace,monospace;color:#b1aea6}
.location-card.selected{border:2px solid #ccbf98;background:#3c3c39;box-shadow:inset 0 0 0 2px #171715;animation:deployment-select .15s ease-out}.location-card:active{transform:translateY(1px);box-shadow:inset 0 3px 8px #00000099}
.deployment-location-heading{display:grid;gap:5px;padding:14px}.deployment-location-heading strong{font:18px Georgia;color:#d2cdbe}.deployment-location-heading span{font:11px/1.5 system-ui;color:#bcbab1}
.deployment-confirm{padding:12px;border-top:1px solid #716f67;background:#191916}.deployment-confirm p{padding:0 0 8px;font-size:12px}.deployment-confirm button{min-height:52px;letter-spacing:.06em}
.deployment-feedback{padding:12px;border:1px solid #829db0;background:#2d2e2a;margin:10px 0;border-radius:4px}.deployment-feedback strong{font-size:11px;letter-spacing:.09em}.deployment-feedback p{margin-top:6px;font-size:12px}.deployment-feedback.invalid{border-color:#c58b80;background:#472f34;color:#cfc9ba}.deployment-feedback.deployed{border-color:#b1a88c;background:#323230;color:#d6d0c0}
.roster-row.selected{animation:deployment-select .15s ease-out}.roster-row{min-height:82px}.roster-row small{font-size:11px}.deployment-guidance{font-size:12px!important}
@keyframes deployment-select{from{transform:scale(.98)}to{transform:scale(1)}}
@media(min-width:761px) and (max-width:1150px){.workspace.panel-open{grid-template-columns:minmax(0,1fr) 310px}.side-panel{position:static;min-height:0}.roster-list{max-height:24vh}}
@media(max-width:760px){.workspace.panel-open{display:flex;flex-direction:column;height:calc(100dvh - 140px);min-height:0;gap:6px}.workspace.panel-open .map-card{flex:1 1 45%;min-height:120px;width:100%}.workspace.panel-open .side-panel{position:relative;inset:auto;width:100%;flex:0 1 52%;min-height:0;max-height:52%;border-radius:12px 12px 0 0;box-shadow:0 -5px 22px #00000055}.workspace.panel-open .side-panel:before{content:"";display:block;width:38px;height:3px;background:#908e86;margin:0 auto 4px;border-radius:3px;flex-shrink:0}.workspace.panel-open .side-panel>section{flex-shrink:0}.location-grid{max-height:210px}.roster-list{max-height:200px}.workspace.panel-collapsed{min-height:0}.deployment-steps{margin-block:5px}.location-card{min-height:104px}}
@media(prefers-reduced-motion:reduce){.location-card.selected,.roster-row.selected{animation:none}.location-card:active{transform:none}}

/* B1.1: reserved tablet map space and fixed confirmation dock. */
.side-panel{overflow:hidden;gap:0;padding:0;min-height:0}.command-panel-scroll{flex:1;min-height:0;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.command-panel-scroll>section{flex-shrink:0}
.side-panel>.deployment-confirm{flex:0 0 auto;margin:0;border-top:1px solid #978f76;background:linear-gradient(110deg,#2d2e2a,#181815);box-shadow:0 -6px 18px #00000044;padding:12px}.deployment-confirm>p{margin:0;font-size:12px}.deployment-confirm .deployment-feedback{margin:4px 0 8px;padding:8px;max-height:100px;overflow:auto}.deployment-confirm .deployment-feedback p{padding:0;font-size:11px}.deployment-confirm button{min-height:48px}
.location-card{border-top:2px solid #807860;min-height:126px;padding:12px;gap:7px}.location-card .card-unit-type{color:#c9be9e;font-size:9px;letter-spacing:.08em;text-transform:uppercase}.location-card strong{font-size:19px}.location-card small{border-top:1px solid #ede8d912;padding-top:6px;color:#b3b1a9}.location-card.selected{background:linear-gradient(140deg,#484945,#2d2e2a);border-color:#cdc098}
.deployment-focus-halo{fill:#d6c9a1;fill-opacity:.16;stroke:#232320;stroke-width:7;vector-effect:non-scaling-stroke;pointer-events:none}.deployment-focus-ring{fill:none;stroke:#d6d0c0;stroke-width:3;vector-effect:non-scaling-stroke;pointer-events:none;animation:destination-pulse 1s ease-in-out 2}
@keyframes destination-pulse{50%{stroke:#e7f7ff;stroke-width:5;opacity:.7}}
.menu-button,.map-control-button,.location-button,#confirm-deployment{min-height:44px;min-width:44px}
@media(min-width:761px) and (max-width:1366px){.workspace.panel-open{grid-template-columns:minmax(0,1fr) 310px}.workspace.panel-open .side-panel{position:static;width:auto;min-height:0}.command-panel-scroll{padding:10px}.roster-list{max-height:210px}.location-grid{max-height:260px}.side-panel>.deployment-confirm{padding:10px}}
@media(max-width:760px){.workspace.panel-open .side-panel{display:flex;flex-direction:column;max-height:55%;flex-basis:55%}.workspace.panel-open .side-panel>section{flex-shrink:initial}.side-panel:before{margin:6px auto!important}.command-panel-scroll{padding:8px 10px}.side-panel>.deployment-confirm{padding:8px 10px;padding-bottom:max(8px,env(safe-area-inset-bottom))}.deployment-confirm .deployment-feedback{max-height:65px}.deployment-confirm>p{font-size:11px}.deployment-confirm button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.deployment-focus-ring{animation:none}}

/* Counter V2 — muted faction enamel, ivory symbols, isolated data band. */
.counter-v2{color:#f1e8d5}.counter-v2.german .counter-body{fill:#344c60;stroke:#96b1c4}.counter-v2.soviet .counter-body{fill:#62413d;stroke:#c09a83}
.counter-v2 .counter-id{font-size:5px;font-weight:600;fill:#e0ded5;opacity:1;letter-spacing:.01em}.counter-v2 .counter-country{font-family:system-ui,sans-serif;letter-spacing:.06em}.counter-v2 .counter-stats{fill:#f5ead7;font-size:8px;font-weight:700;letter-spacing:0;font-variant-numeric:tabular-nums}.counter-v2 .unit-symbol{stroke:#f1e8d5;stroke-width:2;fill:none}.counter-v2 .unit-mini-label,.counter-v2 .unit-letter-label{fill:#f1e8d5}.counter-v2[data-damage="2"] .unit-symbol{opacity:.65}.counter-v2 .damage-mark{fill:#f4cc9b;font-size:9px;stroke:#1c2028;stroke-width:.5}.counter-v2 .oos-icon{stroke:#f2c69d;stroke-width:1.4}.counter-v2 .stack-badge circle{fill:#111e2b;stroke:#d6bd8c;stroke-width:1}.counter-v2 .stack-badge text{fill:#fff1d6;font-size:7px;font-weight:800}
.counter-v2.selected .counter-body{stroke:#f6d797;stroke-width:2.5}.counter-v2.selected{filter:drop-shadow(0 0 3px #ecc582aa)}.counter-v2:focus-visible .counter-body{stroke:#dbf3ff;stroke-width:3}.counter-v2:active .counter-inset{stroke:#fff2cd;stroke-opacity:1;stroke-width:1.4}
@media(hover:hover){.counter-v2:hover .counter-inset{stroke-opacity:.9}}

/* Combat target routing feedback: canonical enemy hex and counter. */
.counter.attackable-enemy .counter-face{filter:drop-shadow(0 0 3px #c9a86c)}
.counter.selected-combat-target .counter-face{filter:drop-shadow(0 0 5px #f2d69a) drop-shadow(0 0 2px #fff3d7)}
.combat-target-option.selected-combat-target{stroke:#d4cfbf;stroke-width:4;stroke-dasharray:none;fill:rgba(187,174,133,.3)}
.combat-target-option.unavailable-combat-target{fill:rgba(145,69,59,.07);stroke:#95584f;stroke-dasharray:2 5;cursor:not-allowed}
.counter.unavailable-combat-target{opacity:.55;cursor:not-allowed}
.counter.combat-attacker-eligible .counter-body{stroke:#9ac8c2;stroke-width:2;stroke-dasharray:3 3}
.counter.combat-attacker-selected .counter-body{stroke:#b4ede1;stroke-width:3;stroke-dasharray:none}
.counter.combat-attacker-selected .counter-face{filter:drop-shadow(0 0 3px #72b9ae)}
.combat-attacker-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.combat-attacker-chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;max-width:100%;padding:6px 9px;border:1px solid #a5a29a88;border-radius:5px;background:#222220;color:#dbd7c8;font:inherit;font-size:12px;line-height:1.4;white-space:normal;overflow-wrap:anywhere;text-align:left;touch-action:manipulation}
button.combat-attacker-chip{cursor:pointer}button.combat-attacker-chip:active{background:#353633}button.combat-attacker-chip:focus-visible{outline:2px solid #d0cabb;outline-offset:2px}
.combat-attacker-chip.primary{border-color:#b3a886;color:#d0cabb;background:#242423}
.combat-group-count,.combat-group-hint{font-size:12px;line-height:1.5}.combat-group-hint{color:#c1bcac;margin:8px 0}
.advance-option{stroke:#b6b4ab;fill:rgba(139,181,121,.2)}
.combat-crt-scroll{max-width:100%;overflow-x:auto;margin-top:12px}
.combat-crt{border-collapse:collapse;font-size:11px;white-space:nowrap;width:100%}
.combat-crt caption{text-align:left;padding:8px 0}
.combat-crt th,.combat-crt td{padding:5px;border:1px solid #aea48833;text-align:center}
.combat-modifier-summary,.combat-result-summary{font-size:12px;line-height:1.6;overflow-wrap:anywhere}
.attack-preview .attack-matchup{padding:10px;gap:5px}
.attack-preview .attack-matchup strong{font-size:14px;line-height:1.4}
.attack-preview .attack-odds{margin:8px 0}

/* Combat UX Pass 1: concise preview with secondary tactical controls. */
.attack-matchup{display:grid;gap:10px;padding:16px 12px;background:#131411;border:1px solid #8d846955;border-radius:6px;overflow-wrap:anywhere}.attack-matchup>span{color:#b8ae8d;font-size:11px;letter-spacing:.16em}.attack-matchup strong{font-family:Georgia,serif;font-size:16px;font-weight:500;color:#d8d2c2}.attack-odds{display:flex;justify-content:space-between;gap:12px;margin:14px 0}.attack-odds strong{display:block;font-size:23px;font-variant-numeric:tabular-nums;color:#c6c1b2}.combat-confirm{width:100%;min-height:52px;margin:14px 0}.combat-advanced{border-top:1px solid #aea48833;margin:8px 0}.combat-advanced summary{min-height:44px;display:flex;align-items:center;cursor:pointer;color:#beb9a9;touch-action:manipulation}.combat-advanced summary::before{content:'＋';margin-right:8px}.combat-advanced[open] summary::before{content:'−'}.combat-advanced button{min-height:44px;white-space:normal;text-align:left}.combat-advanced button:active,.combat-confirm:active{transform:translateY(1px)}.combat-confirm:disabled{opacity:.45;cursor:not-allowed}.attack-guidance{line-height:1.5}

/* VS2 terrain hierarchy only: existing grid and all hit targets stay intact. */
.terrain-surface[data-world-surface="vs2-002-surface-integration"] + #eastfront-map .production-grid{stroke-opacity:.23}

/* Localization: system CJK fallbacks and text-fit adjustments only. */
:root{--ui-cjk-font:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC","Hiragino Sans GB","Noto Sans CJK SC","Noto Sans SC",sans-serif;font-family:var(--ui-cjk-font)}
.language-select{font:inherit;font-size:12px;min-height:44px;max-width:120px;padding:6px;border:1px solid var(--line,#585752);border-radius:3px;background:#20211e;color:#d0cbbc;cursor:pointer}
.preview-home-card>.language-select,.preview-state-card>.language-select,.privacy-card>.language-select,.game-over-card>.language-select{display:block;margin:0 0 16px auto}
html[lang="zh-CN"] :is(h1,h2,h3,button,select,.eyebrow,.campaign-heading,.campaign-heading>strong,.campaign-turn,.campaign-turn>strong,.campaign-side,.map-toolbar strong,.unit-dossier,.attack-matchup strong,.deployment-location-heading,.location-card,.location-card>strong,.preview-kicker){font-family:var(--ui-cjk-font);letter-spacing:.025em}
html[lang="zh-CN"] :is(.panel-block p,.deployment-guidance,.deployment-feedback,.attack-guidance,.combat-card,.privacy-card p){line-height:1.6}
html[lang="zh-CN"] :is(.primary-action,.secondary-action,.mini-button,.location-card,.deployment-confirm p){white-space:normal;overflow-wrap:anywhere;line-height:1.45}
html[lang="zh-CN"] .fit-button{min-width:64px;padding-inline:6px}
html[lang="zh-CN"] .campaign-turn strong{font-size:16px;white-space:nowrap}
html[lang="zh-CN"] :is(.combat-grid,.modifier-list){grid-template-columns:minmax(0,1fr) auto}
html[lang="zh-CN"] .resource-strip{gap:5px}
html[lang="zh-CN"] .resource-strip>span{padding-inline:5px;letter-spacing:0}
@media(min-width:901px) and (max-width:1250px){.resource-strip{flex-wrap:wrap}.topbar{min-height:82px;height:auto;padding-block:5px}.resource-strip .language-select{min-height:44px}}
@media(max-width:760px){.resource-strip .language-select{max-width:100px;font-size:11px;padding-inline:3px}.resource-strip .menu-button{padding-inline:6px}}

/* UA-001: compact presentation controls; no Counter, camera or terrain styles. */
.animation-controls { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:11px; }
.animation-controls label { color:var(--muted,#b8b7b4); }
.animation-controls select { min-height:36px; padding:4px 7px; color:#d5d0c0; background:#1e1e1b; border:1px solid #736b54; border-radius:5px; font:inherit; }
@media (pointer:coarse) { .animation-controls select, .animation-controls button { min-height:44px; } }
@media(max-width:1100px) { .animation-controls label { display:none; } }
.startup-progress{margin:28px auto 0;max-width:400px}
.startup-track{height:6px;overflow:hidden;background:#121310;border:1px solid #59574f;border-radius:2px}
.startup-fill{display:block;height:100%;width:100%;background:#a59b7c;transform-origin:left center;transition:transform 180ms ease-out}
.startup-steps{margin:13px 0 20px;color:#bfb69d;font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:.05em}
.preview-loading .startup-stage{margin:0 0 7px;color:#d6d1c1;font-size:16px}
.preview-loading .startup-items{margin:0;color:#aeaba3;font-size:12px;min-height:2em;font-variant-numeric:tabular-nums}
.startup-progress:not([data-startup-stage="ready"]):not([data-startup-stage="failed"]) .startup-stage{animation:startup-breath 1.8s ease-in-out infinite}
.startup-progress[data-startup-stage="ready"] .startup-fill{transition:none}
@keyframes startup-breath{0%,100%{opacity:1}50%{opacity:.64}}
@media(prefers-reduced-motion:reduce){.startup-fill{transition:none}.startup-progress .startup-stage{animation:none!important}}

/* FOW-002: only the lightweight world-space veil crossfades. */
@keyframes fog-enter { from { opacity:0 } to { opacity:1 } }
@keyframes fog-leave { from { opacity:1 } to { opacity:0 } }
#fog-surface-layer { pointer-events:none; }
@media (prefers-reduced-motion:reduce) { #fog-surface-layer image { animation:none !important; } }

/* UA-003R3: the existing unit button owns both presentations and its hit proxy. */
.model-controls{display:flex;align-items:center;gap:5px;font-size:11px;color:#c6c1b3}.model-controls select{background:#1f201d;color:#d6d1c1;border:1px solid #6e664f;border-radius:4px;padding:4px}
.counter[data-unit-display="model"]{filter:none}
.compact-body{fill:#2d2e2a;fill-opacity:.96;stroke:#a29f97;stroke-width:.9}.soviet .compact-body{fill:#513a36;stroke:#b89788}
.compact-category{fill:#cdc8ba;font:600 6.2px sans-serif}.compact-stats{fill:#e1dccc;font-family:sans-serif;font-weight:800}
.compact-damage,.compact-oos,.compact-entrench{fill:none;stroke:#f0bd88;stroke-width:1.5}
.counter.selected .compact-body,.counter:focus-visible .compact-body{stroke:#f5d798;stroke-width:2}
.counter.combat-attacker-primary .compact-body{stroke:#f3cf83;stroke-width:2}
.counter.combat-attacker-selected .compact-body{stroke:#79c5b9;stroke-width:2}
.counter.selected-combat-target .compact-body{stroke:#fff0c0;stroke-width:2.5;stroke-dasharray:3 1}
.counter.attackable-enemy .compact-body{stroke:#ddbb7d}
.counter.unavailable-combat-target .compact-body{stroke:#806e68}
.counter-face,.compact-plate{transition:opacity .12s ease}
@media(prefers-reduced-motion:reduce){.counter-face,.compact-plate{transition:none}}

[data-unit-presence-layer]{transition:opacity .12s ease}
@media(prefers-reduced-motion:reduce){[data-unit-presence-layer]{transition:none}}

.compact-stack{font:800 7px sans-serif;fill:#d9d3c3;paint-order:stroke;stroke:#20211d;stroke-width:2;stroke-linejoin:round}
.map-controls{flex-wrap:wrap}.model-controls select{min-height:36px}
@media(pointer:coarse){.model-controls select{min-height:44px}}

/* COMBAT-UX3: in-panel, bounded result reveal; never covers map controls. */
.combat-result-panel{border:1px solid #9e9479;border-radius:6px;margin:10px 0;padding:12px;background:#222220}.result-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.result-heading button,.result-history button{min-height:44px}.result-id,.result-note{font-size:12px;opacity:.8;overflow-wrap:anywhere}.result-crt{font-size:24px;margin:8px 0}.result-dice{justify-content:center;margin:12px 0}.result-history summary{padding:12px 0;cursor:pointer}.result-history button{display:block;width:100%;margin:6px 0;overflow-wrap:anywhere}.dice-reveal .die{animation:result-reveal .48s ease-out both}.dice-reveal .die:nth-child(2){animation-delay:.06s}@keyframes result-reveal{0%{opacity:0;transform:rotate(-12deg) translateY(-5px)}55%{opacity:1;transform:rotate(5deg)}100%{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.dice-reveal .die{animation:none}}
/* R1: CSS camera zoom must not magnify the locator grid over the terrain. */
.grand-art .production-grid{stroke-width:calc(.75px / var(--map-zoom,1))}

.factory-unavailable{filter:grayscale(1);opacity:.65}.city-assets{border-left:3px solid #b88942;padding-left:8px;font-size:.85em}

[data-status="SEIZED_CONSTRUCTION"]{stroke:#a34439;fill:#a3443933;stroke-dasharray:1 1}

/* CITY-ART-002 keeps illustration below FOW and unit interaction above it. */
#city-detail-status{font-size:12px;color:#ded5b8;padding:4px 8px} .city-art-labels [role=button]{cursor:pointer}.city-art-labels [role=button]:focus{outline:1px solid #c6b088}.city-art-hide-labels .city-art-labels,.city-art-hide-labels #grand-objectives{display:none}

/* Construction: compact left ledger/queue and narrow building palette. */
.hoi-construction header{display:flex;justify-content:space-between;padding:8px;border-block:1px solid #807860;background:#222220;color:#d3cebd;text-transform:uppercase;letter-spacing:2px}.hoi-construction header span{display:flex;align-items:center;font-variant-numeric:tabular-nums}.civil-account{display:flex;justify-content:space-between;background:#171716;padding:7px 3px;border-bottom:1px solid #56544f}.civil-account span{display:grid;text-align:center;font-size:11px;color:#a6a59f}.civil-account b{font-size:16px;color:#cac5b5}.construction-body{display:grid;grid-template-columns:minmax(0,1fr) 62px;min-height:230px}.construction-palette{display:flex;flex-direction:column;border-left:1px solid #79715a;padding:3px;gap:3px}.construction-palette button{padding:3px!important;display:grid;justify-items:center;min-height:47px;border-radius:0!important}.construction-palette button[aria-pressed=true]{border-color:#cbbd94;background:#494947;color:#ebddb2}.construction-palette small{font-size:10px}.construction-columns{display:flex;justify-content:space-between;font-size:10px;padding:6px 2px;background:#2f2f2e}.construction-queue article{display:grid;grid-template-columns:27px minmax(65px,1fr) 76px 24px;gap:3px;align-items:center;padding:5px 2px;border-bottom:1px solid #4e4e4c;background:#282826;font-variant-numeric:tabular-nums}.construction-queue article:nth-of-type(even){background:#21221f}.construction-queue article>button{padding:2px!important}.construction-queue article b{font-size:12px;display:block}.construction-queue article small{font-size:10px;display:block;color:#bdbcb7}.construction-capacity{text-align:center}.civil-slots{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;margin:3px}.civil-slots i{height:5px;background:#121211;border:1px solid #56544f}.civil-slots .used{background:#bbaf8a;border-color:#cac4b5}.construction-capacity progress{width:100%;height:7px;accent-color:#a6b16c}.construction-order button{display:block;padding:0!important;min-height:19px;width:22px;font-size:12px}.construction-empty{font-size:12px;padding:10px}.construction-mode{display:flex;align-items:center;gap:5px;font-size:11px;background:#3a3b39;padding:5px}.construction-mode button{margin-left:auto}.hoi-construction details{font-size:11px}.hoi-construction .hoi-icon{width:24px;height:24px}#construction-sites [role=button]{cursor:crosshair}#construction-sites [role=button]:hover polygon,#construction-sites [role=button]:focus polygon{fill:#d7c469;fill-opacity:.6;stroke:#fff0a3}
.construction-queue,.construction-queue article>div{min-width:0!important}.construction-queue article>button{min-width:24px!important;width:24px!important}.construction-order button{min-width:22px!important}.construction-queue article b{overflow-wrap:anywhere}.construction-queue article small{line-height:1.4}

/* Recruitment: queue and formal templates, shared military panel proportions. */
.ui-sidebar[data-mode="recruitment"]{width:560px;max-width:calc(100vw - 24px)}
.recruit-controls{display:flex;gap:8px;padding:8px;border-bottom:1px solid #68665f}.recruit-controls label{display:grid;gap:3px}.recruit-controls select{max-width:350px}
.recruit-columns{display:grid;grid-template-columns:minmax(0,1fr) 165px;gap:8px;padding-top:8px}.recruit-templates{display:flex;flex-direction:column;gap:4px}.recruit-templates button{display:flex;align-items:center;gap:5px;text-align:left;min-height:38px}.recruit-templates button[aria-pressed="true"]{border-color:#c8bc98;background:#3e3f3d}
.recruit-queue article{padding:7px;margin:5px 0;background:#242423;border:1px solid #555450}.recruit-queue header{display:flex;gap:5px;align-items:center}.recruit-queue header span{margin-left:auto;font-size:11px;color:#c3baa1}.recruit-bars{display:flex;gap:8px;margin:7px 0}.recruit-bars label{width:50%;font-variant-numeric:tabular-nums}.recruit-bars progress{width:100%;height:8px;display:block;accent-color:#99978f}.recruit-queue footer{display:flex;gap:4px;margin-top:5px}.recruit-queue footer button:last-child{margin-left:auto}.hoi-recruitment p{font-size:12px}.hoi-recruitment .command-icon{width:18px;height:18px}

.local-ai-status{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px;background:#242423;color:#ede8d9;font-size:14px}.local-ai-status button{min-height:44px}.home-screen{padding:32px}.home-screen select{margin:12px;min-height:44px}