/* Main menu owns its available height. The scene stays free of invisible
   overlays; only the left menu scrolls on short screens. */
#app{--menu-top:96px;--menu-bottom:72px;--menu-edge:clamp(28px,5vw,96px)}
#intro{position:absolute;z-index:5;inset:var(--menu-top) auto var(--menu-bottom) var(--menu-edge);width:min(490px,calc(50vw - 28px));max-width:none;transform:none;display:flex;flex-direction:column;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#786c4c66 transparent;padding:18px 14px 18px 0;scroll-padding-block:18px}
.intro-shell{width:100%;min-width:0;margin-block:auto}
#intro .eyebrow{font-size:10px;letter-spacing:2.8px;line-height:1.5}
#intro h1{font-family:"Noto Serif KR","Batang",Georgia,serif;font-size:clamp(43px,3.9vw,62px);font-weight:400;letter-spacing:-2px;line-height:1.26;margin:18px 0 14px;text-shadow:0 3px 24px #0009}
#intro h1 em{font-style:normal;color:var(--gold)}
.intro-copy{font-size:14px;font-weight:300;line-height:1.9;color:#b3c1cc;margin:0;letter-spacing:.2px}
.intro-launch{margin-top:25px}
.intro-mission{border-top:1px solid #c8b17c4d;padding-top:18px;margin:0 0 13px}
.intro-mission>span{font-size:9px;letter-spacing:2.2px;color:var(--gold)}
.intro-mission h2{font-size:17px;font-weight:500;line-height:1.5;letter-spacing:.2px;margin:6px 0 2px}
.intro-mission p{font-size:12px;line-height:1.5;color:#9fb1be;margin:0}
.choose-faction{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.faction-button{display:flex;align-items:center;gap:10px;min-width:0;min-height:78px;padding:11px 10px;border:1px solid #bb9d6188;background:linear-gradient(110deg,#74633e55,#0b141dde);text-align:left;transition:border-color .18s,background .18s}
.faction-button img{display:block;flex:0 0 42px;width:42px;height:48px;object-fit:cover;object-position:50% 25%;border:1px solid #cfb77b44;border-radius:3px;filter:saturate(.8)}
.faction-button>span{min-width:0}
.faction-button small{display:block;font-size:10px;letter-spacing:.4px;line-height:1.5;color:#ccb989;margin-bottom:5px}
.faction-button strong{display:block;font-size:13px;font-weight:500;letter-spacing:-.4px;line-height:1.5;word-break:keep-all}
.faction-button b{margin-left:auto;color:var(--gold);font-size:20px;font-weight:400}
.faction-button.alliance{border-color:#67989988;background:linear-gradient(110deg,#2e656055,#0b141dde)}
.faction-button.alliance small,.faction-button.alliance b{color:#95cfcc}
.intro-briefing{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:44px;margin-top:7px;padding:9px 12px;color:#c3cfd7;border:1px solid #6a7a8744;background:#0b151dcc;text-align:left;font-size:12px;line-height:1.5}
.intro-briefing span{color:var(--gold);font-size:19px;line-height:1}
.intro-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:13px}
.intro-mode{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;min-width:0;min-height:104px;padding:14px 11px;border:1px solid #5b768a66;background:linear-gradient(140deg,#142738eb,#09131de8);text-align:left;transition:border-color .18s,background .18s}
.intro-mode .mode-symbol{position:absolute;right:10px;top:9px;color:#8caab5;font-size:23px;line-height:1;font-weight:300;opacity:.5}
.intro-mode small{font-size:8px;letter-spacing:.8px;color:#8ca7b7;line-height:1.5;margin-right:13px}
.intro-mode strong{font-size:14px;font-weight:500;line-height:1.6;color:#e5e4db;word-break:keep-all}
.intro-mode .mode-description{font-size:11px;line-height:1.45;color:#9db2bf;word-break:keep-all}
.intro-mode.online{border-color:#8fae9b88;background:linear-gradient(135deg,#28504a66,#0b171ee8)}
.intro-mode.online small,.intro-mode.online .mode-symbol{color:#a0d1be}
.intro-mode.cinema{border-color:#a08d655e;background:linear-gradient(135deg,#54422b50,#0c141de8)}
.intro-mode.cinema small,.intro-mode.cinema .mode-symbol{color:#cdb78b}
.intro-sound-note{display:flex;align-items:center;gap:8px;margin:12px 0 0;font-size:11px;line-height:1.6;color:#8ea2b0}
.intro-sound-note>span{color:var(--gold);font-size:15px}
.hero-label{position:absolute;z-index:4;right:8%;left:auto;bottom:calc(var(--menu-bottom) + 48px);display:flex;align-items:flex-start;gap:13px;pointer-events:none;text-shadow:0 2px 12px #000}
.crosshair{font-size:24px;font-weight:200;line-height:1;color:var(--gold)}
.hero-label small{font-size:9px;letter-spacing:2.4px;color:#c4b898}
.hero-label h3{font-family:Georgia,serif;font-size:31px;font-weight:400;letter-spacing:4px;margin:0;line-height:1.6}
.hero-label p{font-size:11px;line-height:1.5;color:#acbac5;margin:2px 0 0}
.intro-footer{position:absolute;z-index:5;left:4%;right:4%;bottom:0;min-height:58px;padding:12px 0 max(12px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--line);color:#8395a3;background:linear-gradient(transparent,#070b1294);font-size:9px;line-height:1.5;letter-spacing:1px;pointer-events:none}
.intro-footer>div{display:flex;align-items:center;gap:9px;font-size:11px;letter-spacing:0}
.intro-footer button{min-height:36px;font-size:10px;letter-spacing:1.2px;color:#c2b48f;pointer-events:auto;padding:8px 0 8px 12px}
.intro-footer button span{margin-left:10px}
.drag-hint{margin-left:14px;color:#8094a2}
#app:not([data-view=battle]) .topbar{height:84px;gap:24px;padding-inline:4%;background:linear-gradient(#070b12ec,#080e16a8);border-color:#8298aa1c}
#app:not([data-view=battle]) .topbar nav{gap:26px}
#app:not([data-view=battle]) .nav{font-size:13px;min-height:44px;padding:25px 0}
#app:not([data-view=battle]) .nav.active:after{bottom:14px}
#app:not([data-view=battle]) .utilities{gap:7px}
#app:not([data-view=battle]) .icon-button{height:40px;width:40px;flex:0 0 40px}
#app:not([data-view=battle]) .audio-settings-trigger{height:40px;min-width:44px;font-size:11px}
#intro button:focus-visible{outline:2px solid #f1d8a3;outline-offset:-3px}
#modal-close{width:44px;height:44px;display:grid;place-items:center;flex:0 0 44px}
#modal button,#modal input,#modal select,#modal summary{scroll-margin-block:76px}
#modal input:focus-visible,#modal select:focus-visible,#modal summary:focus-visible{outline:2px solid #e9cd91;outline-offset:3px}
@media(hover:hover){
 .faction-button:hover,.intro-mode:hover,.intro-briefing:hover{border-color:#dfc589;background-color:#80704c38;color:#fff}
 .faction-button.alliance:hover,.intro-mode.online:hover{border-color:#abd5c7;background-color:#386d5e55}
}
@media(min-width:761px) and (max-height:820px){
 #app{--menu-top:88px;--menu-bottom:62px}
 #intro{padding-top:10px;padding-bottom:10px}
 #intro h1{font-size:42px;line-height:1.22;margin:13px 0 10px}
 .intro-copy{font-size:12px;line-height:1.7}
 .intro-launch{margin-top:16px}
 .intro-mission{padding-top:13px;margin-bottom:10px}
 .intro-mission h2{font-size:15px;margin-top:4px}
 .intro-mission p{font-size:11px}
 .faction-button{min-height:66px;padding:8px;gap:8px}
 .faction-button img{width:35px;height:43px;flex-basis:35px}
 .faction-button strong{font-size:12px}
 .intro-mode{min-height:86px;padding:10px}
 .intro-modes{margin-top:10px;gap:7px}
 .intro-sound-note{margin-top:9px;font-size:10px}
 .intro-footer{min-height:54px;padding-block:8px}
}
@media(min-width:761px) and (max-width:1100px){
 #intro{width:min(440px,calc(52vw - 28px))}
 #app:not([data-view=battle]) .topbar{gap:18px}
 #app:not([data-view=battle]) .topbar nav{gap:18px}
 #app:not([data-view=battle]) .wordmark{min-width:160px;font-size:14px}
 #app:not([data-view=battle]) .wordmark small{font-size:7px}
 .faction-button b{display:none}
 .hero-label{right:5%;max-width:40%}
 .hero-label h3{font-size:25px}
 .intro-footer .drag-hint{display:none}
}
@media(max-width:760px){
 #app{--menu-top:120px;--menu-bottom:calc(60px + env(safe-area-inset-bottom));--menu-edge:18px}
 #intro{inset:var(--menu-top) 0 var(--menu-bottom);width:100%;padding:8px 20px 16px;scroll-padding-block:16px;scrollbar-gutter:auto}
 .intro-shell{max-width:490px;margin:clamp(8px,9dvh,76px) auto 0}
 #intro .eyebrow{font-size:9px;letter-spacing:2px;gap:10px}
 #intro h1{font-size:clamp(33px,8.6vw,43px);line-height:1.25;letter-spacing:-1.4px;margin:12px 0 11px}
 .intro-copy{font-size:12px;line-height:1.75}
 .intro-launch{margin-top:18px}
 .intro-mission{padding-top:13px;margin-bottom:10px}
 .intro-mission>span{font-size:8px;letter-spacing:1.5px}
 .intro-mission h2{font-size:15px;line-height:1.5;margin:4px 0 2px}
 .intro-mission p{font-size:11px;line-height:1.5}
 .choose-faction{gap:8px}
 .faction-button{min-height:70px;padding:9px 8px;gap:8px}
 .faction-button img{width:32px;height:41px;flex-basis:32px}
 .faction-button small{font-size:10px;letter-spacing:0;margin-bottom:4px}
 .faction-button strong{font-size:12px;letter-spacing:-.7px}
 .faction-button b{display:none}
 .intro-briefing{font-size:12px;min-height:44px;margin-top:8px}
 .intro-modes{gap:7px;margin-top:11px}
 .intro-mode{min-height:96px;padding:10px 8px;gap:5px}
 .intro-mode small{font-size:7px;letter-spacing:.45px;margin:0}
 .intro-mode strong{font-size:13px;line-height:1.55;letter-spacing:-.2px}
 .intro-mode .mode-description{font-size:10px;line-height:1.5;letter-spacing:-.3px}
 .intro-mode .mode-symbol{top:7px;right:7px;opacity:.23;font-size:22px}
 .intro-sound-note{font-size:10px;line-height:1.6;margin-top:10px}
 .hero-label{display:none}
 .intro-footer{left:20px;right:20px;min-height:calc(54px + env(safe-area-inset-bottom));gap:8px;font-size:8px;letter-spacing:.7px;padding-top:7px;padding-bottom:max(8px,env(safe-area-inset-bottom))}
 .intro-footer>div{display:none}
 .intro-footer button{font-size:9px;letter-spacing:.5px;min-height:40px;padding:8px 0 8px 8px}
 .intro-footer button span{margin-left:4px}
 #app:not([data-view=battle]) .topbar{height:calc(64px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0;gap:5px}
 #app:not([data-view=battle]) .wordmark{min-width:0;gap:7px;font-size:12px;letter-spacing:.6px}
 #app:not([data-view=battle]) .wordmark small{font-size:5px;letter-spacing:1.5px}
 #app:not([data-view=battle]) .crest{font-size:28px}
 #app:not([data-view=battle]) .utilities{gap:3px;margin-left:auto}
 #app:not([data-view=battle]) .icon-button{width:44px;height:44px;flex-basis:44px;font-size:21px;border-radius:10px;border-color:#9bafba30}
 #app:not([data-view=battle]) .icon-button:last-child{font-size:16px}
 #app:not([data-view=battle]) .audio-settings-trigger{height:44px;min-width:44px;padding:0 5px;font-size:10px;border-radius:10px}
 #app:not([data-view=battle]) .topbar nav{position:absolute;left:12px;right:12px;top:calc(64px + env(safe-area-inset-top));height:44px;gap:0;justify-content:space-between;border-bottom:1px solid #a0b2bd2b;background:linear-gradient(#070d16c9,#070d1666);margin:0}
 #app:not([data-view=battle]) .nav{font-size:12px;line-height:1.5;min-height:44px;padding:10px 7px;flex:1;text-align:center}
 #app:not([data-view=battle]) .nav.active:after{bottom:0;left:12px;right:12px}
 #intro{top:calc(var(--menu-top) + env(safe-area-inset-top))}
 #modal{width:calc(100vw - 16px);max-height:calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
 #modal .modal-top{padding:8px 14px;min-height:60px}
 #modal-content{padding:20px 16px}
 #battle-hud .drawer-body{overscroll-behavior:contain;scroll-padding-block:12px}
 #battle-hud .commands button{min-height:52px}
 #battle-hud .unit-selector>button{min-height:48px}
 #battle-hud #drawer-tactics .battle-command-tabs button,#battle-hud #drawer-tactics .formation-controls button,#battle-hud #drawer-tactics .board-thrust button,#battle-hud .board-fire-policy button{min-height:44px}
 #battle-hud .board-context select{min-height:44px;font-size:16px}
 #battle-hud .board-field-help summary,#battle-hud .board-autonomy-help summary,#battle-hud .board-map-help summary{min-height:40px;display:flex;align-items:center}
}
@media(max-width:760px) and (max-height:800px){
 .intro-shell{margin-top:8px}
 .intro-copy{display:none}
 .intro-launch{margin-top:15px}
}
@media(max-width:380px){
 #intro{padding-inline:15px}
 .intro-mode{padding:10px 6px}
 .intro-mode strong{font-size:12px}
 .intro-mode .mode-description{font-size:10px}
 .faction-button{gap:6px;padding:8px 6px}
 .faction-button img{width:29px;flex-basis:29px}
 .faction-button strong{font-size:11px;letter-spacing:-.5px}
 #app:not([data-view=battle]) .wordmark small{display:none}
 #app:not([data-view=battle]) .wordmark{gap:5px;font-size:11px}
 #app:not([data-view=battle]) .crest{font-size:25px}
 #app:not([data-view=battle]) .topbar{padding-inline:10px}
}
@media(max-height:540px) and (orientation:landscape){
 #app{--menu-top:60px;--menu-bottom:52px;--menu-edge:24px}
 #app:not([data-view=battle]) .topbar{height:56px;padding:0 max(18px,env(safe-area-inset-right)) 0 max(18px,env(safe-area-inset-left));gap:14px}
 #app:not([data-view=battle]) .wordmark{font-size:12px;min-width:144px}
 #app:not([data-view=battle]) .crest{font-size:27px}
 #app:not([data-view=battle]) .wordmark small{font-size:6px}
 #app:not([data-view=battle]) .topbar nav{position:static;height:auto;inset:auto;flex:1;gap:10px;justify-content:center;margin:0;background:none;border:0}
 #app:not([data-view=battle]) .nav{padding:9px 2px;min-height:44px;font-size:11px;flex:0 1 auto}
 #app:not([data-view=battle]) .nav.active:after{bottom:2px;left:0;right:0}
 #app:not([data-view=battle]) .utilities{gap:4px}
 #app:not([data-view=battle]) .icon-button{width:44px;flex-basis:44px;height:44px;border-radius:9px}
 #app:not([data-view=battle]) .audio-settings-trigger{height:44px;min-width:44px}
 #intro{inset:var(--menu-top) max(24px,env(safe-area-inset-right)) var(--menu-bottom) max(24px,env(safe-area-inset-left));width:auto;padding:10px 0 12px}
 .intro-shell{display:grid;grid-template-columns:minmax(175px,.7fr) minmax(0,1.3fr);align-items:center;gap:clamp(20px,4vw,50px);max-width:1100px;margin:auto}
 #intro .eyebrow{font-size:8px;letter-spacing:1.7px;gap:8px}
 #intro h1{font-size:clamp(29px,4vw,42px);line-height:1.23;margin:13px 0;letter-spacing:-1.3px}
 .intro-copy{display:none}
 .intro-launch{margin:0}
 .intro-mission{padding:0;border:0;margin:0 0 8px}
 .intro-mission>span,.intro-mission h2{display:none}
 .intro-mission p{font-size:11px;line-height:1.5;color:#aec0ca}
 .faction-button{min-height:58px;padding:7px 8px;gap:7px}
 .faction-button img{width:30px;height:38px;flex-basis:30px}
 .faction-button small{font-size:9px;margin-bottom:2px}
 .faction-button strong{font-size:12px}
 .faction-button b{display:none}
 .intro-briefing{min-height:44px;font-size:11px;margin-top:7px;padding:7px 10px}
 .intro-modes{gap:7px;margin-top:8px}
 .intro-mode{min-height:75px;gap:3px;padding:9px}
 .intro-mode small{font-size:7px;margin:0}
 .intro-mode strong{font-size:13px}
 .intro-mode .mode-description{font-size:10px}
 .intro-mode .mode-symbol{font-size:20px;opacity:.25}
 .intro-sound-note{font-size:10px;margin-top:7px}
 .hero-label{display:none}
 .intro-footer{min-height:50px;left:24px;right:24px;padding:3px 0 max(3px,env(safe-area-inset-bottom));font-size:8px}
 .intro-footer>div{display:none}
 .intro-footer button{min-height:44px;font-size:9px;padding:6px 0 6px 10px}
 #modal{max-height:calc(100dvh - 12px);margin-block:auto}
 #modal .modal-top{padding:4px 16px;min-height:48px}
 #modal-content{padding:16px}
}
