/* Shared, reversible presentation layout. Game rules and saves are unchanged. */
.classroom-help{font-size:14px;line-height:1.45;max-width:72ch;margin:8px auto;padding:8px 16px;color:#193b4d;background:#f4ecd9}
body.projector .site-masthead,body.projector .site-pilot-banner,body.projector .device-guidance,body.projector>footer{display:none!important}
body.projector main{max-width:none;padding:12px 20px}
body.projector>header{max-width:none;padding:8px 20px;position:relative;gap:12px}
body.projector button,body.projector select{font-size:18px;min-height:44px}
body.projector .status h1{font-size:24px}
body.projector .status p,body.projector #help,body.projector .math,body.projector #notice{font-size:18px;line-height:1.45}
body.projector .layout{grid-template-columns:minmax(0,1fr) 350px}
body.projector #map{height:calc(100dvh - 260px);min-height:380px}
body.projector .city-label{font-size:12px}
body.projector .hex-label{display:none}
body.projector .legend,body.projector #cityStatus{font-size:14px}
body.projector .intro{display:none}
body.projector .scoreboard{font-size:20px;padding:12px}
body.projector .event,body.projector .cg-change{font-size:19px}
body.projector .playarea{grid-template-columns:minmax(0,1.3fr) minmax(340px,1fr);gap:18px}
body.projector .venue{padding:12px;font-size:20px}
body.projector .dashboard strong{font-size:36px}
@media(max-width:950px){body.projector .layout,body.projector .playarea{grid-template-columns:1fr}body.projector #map{height:65dvh}}
@media print{.classroom-help,#classroomPublic{display:none!important}}
#classroomShield{display:none}
#crt .last-combat-cell{background:#ffe2a1;outline:3px solid #8d591e;outline-offset:-3px;font-weight:800}
body.projector.convoy-classroom #desk,body.projector.convoy-classroom #packet{display:none!important}
body.projector.convoy-classroom #classroomShield:has(+ #desk:not([hidden])){display:block}
body.projector .scoreboard strong{font-size:26px;line-height:1.15}
body.projector .scoreboard{padding:10px}
body.projector .event{padding:8px 16px;margin:8px 0}
body.projector .event h2{margin:0 0 4px;font-size:24px}
body.projector .event p{margin:4px 0}
body.projector .cg-change{padding:8px;margin:8px 0}
body.projector .playarea h2{margin:8px 0;font-size:24px}
body.projector .playarea>section>p{margin:4px 0;font-size:16px}
body.projector .venue{padding:8px;margin:8px 0}
/* Keep unavailable actions distinct while preserving readable board information. */
.hex.unavailable-hex{fill:#adb6b2!important;fill-opacity:.8;stroke:#88938f}
.counter.unavailable-counter{opacity:.5;filter:grayscale(.8)}
.counter.unavailable-counter.chosen{opacity:.8}
#controls button:disabled{opacity:1;background:#dce0e2!important;color:#596169!important;border:1px dashed #8c969d!important;cursor:not-allowed}
#controls .error{color:#982c22;border-left-color:#982c22}
.oberlabs-guide{max-width:660px;max-height:85vh;overflow:auto;line-height:1.5}
.oberlabs-guide li{margin:12px 0}.oberlabs-guide a{color:#174f85;font-weight:700}
.phase-recap{font-size:16px;line-height:1.5}.phase-recap p{margin:6px 0 0}
body.projector #result,body.projector #handoff{font-size:20px;line-height:1.5}
#log{font-size:15px;line-height:1.5}.decision .hint{font-size:15px;line-height:1.5}
/* Moscow: keep decisions beside the battlefield without covering counters. */
body.moscow-game .layout > aside{display:flex;flex-direction:column;gap:10px;min-width:0}
body.moscow-game .layout > aside > .decision{order:-2;flex-shrink:0}
body.moscow-game .layout > aside > .board-die{order:-3;flex-shrink:0;position:sticky;top:0;z-index:5;box-shadow:0 3px 0 #f7f5ed}
body.moscow-game .layout > aside > details{flex-shrink:0}
body.moscow-game .board-die{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:8px}
body.moscow-game .board-die .dice-button{flex:0 0 65px;width:65px;height:64px}
body.moscow-game .board-die .dice-stage{transform:scale(.5);transform-origin:top left}
body.moscow-game .board-die > div:nth-child(2){flex:1;min-width:190px}
body.moscow-game .board-die small{max-width:none;font-size:14px;line-height:1.35}
body.moscow-game .board-die p{font-size:15px;line-height:1.35;margin:3px 0}
body.moscow-game .layout > aside:focus-visible{outline:3px solid #b7862f;outline-offset:2px}
@media(min-width:1101px){
 body.moscow-game .layout,body.moscow-game.projector .layout{grid-template-columns:minmax(0,1fr) clamp(380px,28vw,420px)}
 body.moscow-game .layout > aside{position:sticky;top:12px;max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;padding-right:4px;scroll-padding:12px}
}
@media(max-width:1100px){
 body.moscow-game .layout,body.moscow-game.projector .layout{grid-template-columns:minmax(0,1fr)}
 body.moscow-game .layout > aside{position:static;max-height:none;overflow:visible}
}
@media print{body.moscow-game .layout > aside{display:none}}
/* Keep unavailable attack choices legible and distinguish them without color alone. */
body.moscow-game #controls .unit-option{border:1px solid #b9cdd5;border-left:4px solid #276478;cursor:pointer}
body.moscow-game #controls .unavailable-option{background:#dedfe0;color:#4a5055;border:1px dashed #7a8389;border-left:4px solid #7a8389;cursor:not-allowed}
body.moscow-game .unavailable-option input{cursor:not-allowed}
body.moscow-game .unavailable-reason{display:block;font-size:14px;line-height:1.4;margin:5px 0 0 24px;font-weight:500}
body.moscow-game #controls select:disabled{background:#dedfe0;color:#4a5055;border:1px dashed #7a8389;opacity:1;cursor:not-allowed}
body.moscow-game .counter.declared-target rect{stroke:#713da6;stroke-width:4;stroke-dasharray:5 2}
body.moscow-game .counter.current-target rect{stroke:#ffcf27;stroke-width:4;stroke-dasharray:none}
body.moscow-game .declared-target-key{border-bottom:3px dashed #713da6}
body.moscow-game .current-target-key{border-bottom:3px solid #b88b00}
body.moscow-game .planned-attacks{margin-top:12px;padding:10px}
body.moscow-game .planned-attack-list{max-height:240px;overflow-y:auto;overscroll-behavior:contain}
body.moscow-game .planned-attack-list .battle{padding:8px 0}
body.moscow-game .planned-attack-list p{margin:4px 0 8px}
/* Compact, shared status strip directly above the map and decisions. */
body.moscow-game .status{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;padding:7px 0;margin:0;align-items:start}
body.moscow-game .status h1{margin:0;font-size:22px;line-height:1.2}
body.moscow-game .status p{margin:3px 0 0;line-height:1.35}
body.moscow-game .status #notice{grid-column:1/-1;margin:0;min-height:0;line-height:1.35}
body.moscow-game .status #weather{font-size:14px;line-height:1.4}
body.moscow-game .layout{margin-top:0}
@media(max-width:600px){body.moscow-game .status{grid-template-columns:1fr}body.moscow-game .status h1{font-size:20px}}
