/* Map selection lives in the lobby; the battlefield keeps its minimal controls. */
#setup-dialog{width:min(1040px,calc(100vw - 24px));max-width:none;max-height:calc(var(--app-height,100dvh) - 16px);padding:0;text-align:left;overflow:auto}
#setup-dialog::before{display:none}
#setup-form{display:flex;flex-direction:column;gap:18px;padding:26px 30px;max-width:none}
#setup-dialog.campaign-mode #setup-form{height:min(740px,calc(var(--app-height,100dvh) - 16px));min-height:0}
.lobby-topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0}
.lobby-topbar .eyebrow{font-size:8px;letter-spacing:1.5px}
#setup-dialog h2{font:500 27px var(--serif);letter-spacing:3px;margin:6px 0 4px}
#setup-dialog .intro-copy{font-size:11px;line-height:1.6;margin:0;color:#7b836b}
.lobby-mode-tabs{display:flex;gap:4px;padding:4px;border:1px solid #d9d2bd;border-radius:7px;flex-shrink:0;background:#e9e4d3}
.lobby-mode-tabs button{min-height:38px;padding:8px 18px;border-radius:4px;background:transparent;color:#7b806a;font-size:12px;white-space:nowrap}
.lobby-mode-tabs button[aria-selected=true]{background:#355141;color:#f7efd8;box-shadow:0 2px 6px #253f3520}
#campaign-lobby{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:24px;flex:1;min-height:0}
.campaign-track{display:flex;flex-direction:column;min-height:0;min-width:0}
.campaign-track-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 0 10px;color:#7b7e67;font-size:11px}
.campaign-track-heading>span{letter-spacing:2px}.campaign-track-heading strong{font-weight:500;font-variant-numeric:tabular-nums;color:#516a4d}
.campaign-stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-content:start;overflow-y:auto;min-height:0;padding:2px 5px 5px 2px;scrollbar-width:thin;overscroll-behavior:contain;touch-action:pan-y}
.stage-card{display:flex;flex-direction:column;gap:4px;min-width:0;padding:7px;border:1px solid #cfc8ae;border-radius:6px;color:#50614a;background:#e9e3cc;text-align:left}
.stage-card:hover{background:#e2e2ca;border-color:#9dab89}.stage-card.is-selected{border-color:#4f704e;box-shadow:0 0 0 1px #4f704e;background:#e1e5cf}
.stage-card.is-locked{color:#8d8b77;background:#e8e2d0}.stage-card.is-locked canvas{opacity:.48;filter:saturate(.45)}
.stage-card.is-complete{background:#e2e7d0}.stage-card-top{display:flex;justify-content:space-between;align-items:center;gap:4px}.stage-card-top b{font:500 16px var(--serif)}
.stage-card-state{font-size:8px;white-space:nowrap;letter-spacing:.3px}.stage-card.is-complete .stage-card-state{color:#456b45}
.stage-card canvas{display:block;width:100%;height:65px;border-radius:3px;background:#daceab;pointer-events:none}
.stage-card-name{font:500 12px var(--serif);letter-spacing:1px;white-space:nowrap;text-align:center;line-height:1.7}
.stage-briefing{min-height:0;min-width:0;overflow-y:auto;padding:2px 5px 4px 1px;scrollbar-width:thin;overscroll-behavior:contain;touch-action:pan-y}
#stage-preview{display:block;width:100%;height:205px;background:#ddd2b2;border:1px solid #ccbf9d;border-radius:5px}
.preview-legend{display:flex;align-items:center;gap:11px;font-size:8px;color:#8b876e;margin:8px 0 17px;white-space:nowrap}.preview-legend>span{display:flex;align-items:center;gap:4px}.preview-legend i{width:6px;height:6px;border-radius:50%;display:inline-block}.preview-legend .own{background:#52735c}.preview-legend .enemy{background:#b45b46}.preview-legend .neutral{background:#a49776}.river-key{margin-left:auto;font-size:7px}
#preview-enemy-two{background:#557e91}#preview-enemy-three{background:#aa884e}
.stage-chapter{color:#9b7b43;font-size:9px;letter-spacing:1.5px}
.stage-briefing h3{font:500 25px var(--serif);letter-spacing:3px;margin:8px 0}
.stage-meta{font-size:10px;color:#6f7f62;margin:0 0 12px;line-height:1.7}
#stage-description{font-size:11px;color:#7d806c;line-height:1.9;margin:0 0 10px}
.stage-hint{padding:10px 12px;margin:0;border-left:2px solid #9aa87a;background:#e6e7d14d;color:#54694b;font-size:11px;line-height:1.8}
.stage-status{font-size:10px;color:#61774f;line-height:1.7;margin:12px 0 0}.stage-status.locked{color:#a17d47}.stage-best{font-size:9px;color:#8f845e;margin:7px 0 0;line-height:1.6}
#setup-form .setup-experience{display:grid;grid-template-columns:auto minmax(120px,180px) minmax(0,1fr);align-items:center;gap:5px 12px;flex-shrink:0;margin:0;padding:12px 0 0;border-top:1px solid #d4ccb3}
#setup-form .setup-experience>small{grid-column:3;grid-row:1;font-size:9px}
#setup-form .fullscreen-start-option{grid-column:1/3;grid-row:2;margin:0;min-height:24px;font-size:10px}
#setup-form .install-guide-link{grid-column:3;grid-row:2;justify-content:flex-end;font-size:10px;padding:3px 0}
.lobby-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}
.player-name-field{display:flex;flex-direction:column;gap:3px;flex:0 1 190px;min-width:110px;color:#647457;text-align:left}
.player-name-field>span{font-size:10px;letter-spacing:1px}
#player-name{width:100%;min-width:0;height:34px;padding:5px 9px;border:1px solid #b9bea2;border-radius:4px;background:#faf7ed;color:#334c3b;font:16px var(--serif);outline-offset:2px;touch-action:manipulation}
#player-name::placeholder{font-size:11px;color:#8a907b}
.result-player{margin:12px 0 0;color:#5d7253;font:500 17px var(--serif);overflow-wrap:anywhere}
#setup-dialog .lobby-actions .primary-button{flex:1;width:auto;min-height:46px;margin:0;padding:12px 18px;font-size:13px;letter-spacing:2px}
#setup-dialog .lobby-actions .resume-save-button{flex:1;width:auto;margin:0;padding:12px 10px;min-height:46px;font-size:11px;letter-spacing:0}
#cancel-setup{padding:10px 4px;font-size:11px;white-space:nowrap}
#setup-dialog .intro-note{font-size:8px;line-height:1.5;margin:0;text-align:center;letter-spacing:.5px;flex-shrink:0}
#free-fields .setup-fields{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin:0}
#free-fields fieldset{margin:8px 0 0}#free-fields legend{font-size:11px}#free-fields .option-row label>span{padding:13px 6px}
.free-description{font-size:11px;line-height:1.8;color:#8a8e73;margin:16px 0 0}
.campaign-current{font-size:10px;color:#687855;line-height:1.8;margin:0 0 12px;padding:0 0 10px;border-bottom:1px solid #d9d1bc}
.campaign-help{font-size:11px;line-height:1.9;color:#7f876c;margin:20px 0}
#result-dialog>#next-stage,#result-dialog>#retry-stage{margin-top:12px}#result-dialog>#choose-stage{display:block;width:100%;margin-top:7px;padding:10px}

@media(max-height:540px) and (orientation:landscape){
 #setup-form{gap:10px;padding:15px 20px}
 .lobby-topbar{gap:12px}.lobby-topbar .eyebrow{font-size:7px}#setup-dialog h2{font-size:21px;margin:3px 0 0}#setup-dialog .intro-copy{display:none}
 .lobby-mode-tabs{padding:3px}.lobby-mode-tabs button{min-height:32px;font-size:11px;padding:6px 13px}
 #campaign-lobby{gap:17px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
 .campaign-track-heading{font-size:9px;padding-bottom:6px}.campaign-stages{gap:6px}
 .stage-card{gap:2px;padding:5px}.stage-card-top b{font-size:13px}.stage-card-state{font-size:7px}.stage-card canvas{height:45px}.stage-card-name{font-size:10px;letter-spacing:.5px}
 #stage-preview{height:116px}.preview-legend{margin:5px 0 9px;gap:8px}.river-key{display:none}
 .stage-briefing{display:flex;flex-direction:column}.stage-briefing>*{flex-shrink:0}.stage-chapter{order:-4}.stage-briefing h3{order:-3}.stage-meta{order:-2}.stage-hint{order:-1;margin-bottom:10px}
 .stage-chapter{font-size:8px}.stage-briefing h3{font-size:20px;margin:5px 0;letter-spacing:2px}.stage-meta{font-size:9px;margin-bottom:6px}#stage-description{font-size:10px;line-height:1.8;margin-bottom:6px}.stage-hint{font-size:10px;padding:7px 9px}.stage-status{font-size:9px;margin-top:8px}
 #setup-form .setup-experience{padding-top:7px;grid-template-columns:auto 150px minmax(0,1fr);gap:2px 10px}#setup-form .setup-experience select{min-height:30px;font-size:10px;padding:4px 7px}#setup-form .setup-experience>small{font-size:8px}#setup-form .fullscreen-start-option,#setup-form .install-guide-link{min-height:20px;font-size:9px}
 #setup-dialog .lobby-actions .primary-button,#setup-dialog .lobby-actions .resume-save-button{min-height:36px;padding:8px 11px;font-size:11px;letter-spacing:1px}#cancel-setup{font-size:10px;padding:6px 0}.lobby-actions{gap:10px}
 .player-name-field{flex-basis:150px;gap:2px}.player-name-field>span{font-size:9px}#player-name{height:30px;padding:3px 7px}
 #setup-dialog .intro-note{display:none}#free-fields .setup-fields{gap:22px}#free-fields .option-row label>span{padding:8px 4px}.free-description{font-size:9px;margin:10px 0 0}
}
@media(max-height:360px) and (orientation:landscape){
 .stage-chapter{display:none}.stage-briefing h3{font-size:18px;margin:2px 0 4px}.stage-meta{font-size:8px;margin:0 0 5px}.stage-hint{font-size:9px;padding:6px 8px;line-height:1.7}
}

/* Fifteen independent free maps share the compact, scrollable briefing layout. */
#setup-dialog.free-mode #setup-form{height:min(740px,calc(var(--app-height,100dvh) - 16px));min-height:0}
#free-fields{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:24px;flex:1;min-height:0}
.free-map-track{min-height:0}.free-map-card small{font-size:8px;line-height:1.4;color:#7d8064;text-align:center}
.free-settings{min-height:0;min-width:0;overflow:auto;padding:2px 6px 6px 1px;scrollbar-width:thin;overscroll-behavior:contain;touch-action:pan-y}
#free-map-preview{display:block;width:100%;height:177px;background:#ddd2b2;border:1px solid #ccbf9d;border-radius:5px}
.free-map-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:12px;flex-wrap:wrap}
.free-map-heading h3{font:500 24px var(--serif);letter-spacing:2px;margin:0}.free-map-heading>span{font-size:10px;color:#6e7d5e}
.free-map-scale{font-size:10px;color:#917642;margin:7px 0 11px;line-height:1.6}
.free-map-subtitle{font-size:12px;color:#4f6848;margin:0 0 7px}.free-map-brief{font-size:11px;line-height:1.8;color:#7d806c;margin:0 0 10px}
#free-fields .setup-fields{display:flex;flex-direction:column;gap:4px;margin-top:12px}
#free-fields .option-row label>span{padding:9px 4px}#free-fields .option-row small{font-size:8px}
#free-fields .free-description{font-size:10px;margin-top:10px}#free-fields .free-friends-invite{gap:8px;flex-direction:column;align-items:flex-start;margin-top:12px;padding-top:10px}
#free-fields .free-friends-invite p{font-size:10px}#free-fields .lobby-friends-button{font-size:11px;padding:8px 10px}
@media(max-height:540px) and (orientation:landscape){
 #free-fields{gap:17px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}#free-map-preview{height:88px}
 .free-map-heading{margin-top:8px}.free-map-heading h3{font-size:19px}.free-map-heading>span,.free-map-scale{font-size:9px}.free-map-scale{margin:5px 0 8px}.free-map-subtitle{font-size:11px}.free-map-brief{font-size:10px}
 .free-map-card small{font-size:7px}#free-fields .option-row label>span{padding:7px 3px;font-size:10px}
}
@media(max-width:600px) and (orientation:portrait){
 #setup-dialog{width:calc(100vw - 16px)}#setup-form,#setup-dialog.campaign-mode #setup-form{height:auto;gap:15px;padding:20px 18px}
 .lobby-topbar{display:block}#setup-dialog h2{font-size:24px}.lobby-mode-tabs{margin-top:16px;width:100%}.lobby-mode-tabs button{flex:1;min-height:38px}
 #campaign-lobby{display:flex;flex-direction:column;flex:none;gap:20px}.campaign-track{height:290px;flex-shrink:0}.stage-card canvas{height:46px}.stage-card-name{font-size:11px;letter-spacing:0}.stage-card-top b{font-size:14px}.stage-card-state{font-size:7px}
 .stage-briefing{overflow:visible}#stage-preview{height:190px}.stage-briefing h3{font-size:24px}
 #setup-form .setup-experience{grid-template-columns:auto minmax(0,1fr);gap:7px 10px}#setup-form .setup-experience>small{grid-column:1/-1;grid-row:auto}#setup-form .fullscreen-start-option{grid-column:1/-1;grid-row:auto}#setup-form .install-guide-link{grid-column:1/-1;grid-row:auto;justify-content:center}
 .lobby-actions{flex-wrap:wrap;position:sticky;bottom:-20px;padding:12px 0 10px;background:#f5f0e2;z-index:2}.lobby-actions #cancel-setup{text-align:center;width:100%}#setup-dialog .lobby-actions .primary-button,#setup-dialog .lobby-actions .resume-save-button{flex-basis:100%;min-height:42px}
 .player-name-field{flex-basis:100%}
 #free-fields{display:flex;flex-direction:column;flex:none;gap:20px}#setup-dialog.free-mode #setup-form{height:auto;min-height:0}
 .free-map-track{height:310px;flex:none}.free-settings{overflow:visible}#free-map-preview{height:200px}.free-map-heading h3{font-size:23px}
 #free-fields .setup-fields{grid-template-columns:1fr;gap:16px}.preview-legend{gap:9px}.river-key{font-size:6px}
}
