/* Touch-first app shell; safe areas and browser toolbars are included in the viewport. */
button,input,select{touch-action:manipulation}#touch-stick,.dpad{touch-action:none;user-select:none;-webkit-user-select:none}.mobile-header-tools,#mobile-dock,#touch-stick,#map-zoom,#touch-cancel{display:none}.touch-actions{display:flex;gap:8px;align-items:center}.dpad .pressed{background:#627c69;border-color:#ffe4a3}
.mobile-sheet-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;background:#193638;border-bottom:1px solid #647460;z-index:4}.mobile-sheet-head h2{font-size:19px;margin:0;font-weight:400}.mobile-options{display:grid;gap:12px;padding:18px}.mobile-options label{display:flex;justify-content:space-between;align-items:center;gap:15px}.mobile-options p{font-size:13px;line-height:1.8;margin:0;color:#c5d0bd}.mobile-options select{font:inherit;color:inherit;background:#29433c;padding:12px;border:1px solid #8b9678;min-height:48px}#mobile-menu-body .tools{max-width:none;display:grid;grid-template-columns:1fr 1fr;padding:18px;gap:10px}#mobile-menu-body .tools button{font-size:14px;min-height:48px}#mobile-party-body .roster{margin:0;border:0;padding:16px}#mobile-party-body #roster{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1100px),(pointer:coarse){
 html,body{height:100%;height:100dvh;overscroll-behavior:none}body{overflow:hidden;font-size:14px}button{min-height:48px;min-width:48px;font-size:14px;border-radius:8px;-webkit-tap-highlight-color:transparent}input,select{font-size:16px!important;min-height:48px}button:focus-visible{outline:2px solid #e8cc87;outline-offset:-2px}.mobile-header-tools{display:flex}#game-main{height:100vh;height:100dvh;width:100%;max-width:none;margin:0;padding:max(6px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));display:grid;grid-template-rows:48px 44px minmax(0,1fr) 114px 56px;gap:6px;overflow:hidden}#game-main header{margin:0;min-width:0;gap:8px}#game-main header h1{font-size:19px;letter-spacing:.06em;margin:0}#game-main header small{font-size:7px;letter-spacing:.08em}#game-main header>.tools{display:none}#mobile-menu{padding:8px 12px;font-size:13px}#game-main .chapter{margin:0;padding:5px 8px;min-width:0;gap:8px;border:0;border-left:2px solid #b5a876}#chapter-label,.chapter p{display:none}.chapter>div{min-width:0}.chapter h2{font-size:14px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#round{font-size:11px}#game-main .game{min-height:0;display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;gap:5px}.field{height:100%;min-height:0;display:grid;grid-template-rows:28px minmax(0,1fr) 30px;border-radius:10px;overflow:hidden}.map-top,.map-bottom{min-height:0;height:100%;padding:3px 8px;font-size:11px;gap:7px}.map-top #terrain{display:none}#phase{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-bottom #hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-bottom #cancel{min-height:26px;font-size:11px;padding:2px 9px}.map-viewport{min-height:0;height:100%;overflow:hidden}#map{width:100%;height:100%;aspect-ratio:auto;touch-action:none}#minimap{width:76px;height:57px}.explore-marker{font-size:10px;padding:4px 6px}#game-main aside{display:flex;max-height:156px;min-height:0;gap:5px;overflow-y:auto;overscroll-behavior:contain}#objective-card,.order,.journal{display:none}#unit-card{display:none}.actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.actions button{font-size:13px;min-height:48px;padding:7px 5px;overflow-wrap:anywhere}.actions .label{font-size:11px;margin:0}.actions .wide{grid-column:auto}.actions .target{grid-column:1/-1}.actions [data-action=back],.actions [data-action=hub]{grid-column:1/-1}body[data-game-mode=hub] #game-main .game{grid-template-rows:minmax(0,1fr)}body[data-game-mode=hub] #game-main aside{display:none}#field-controls{height:114px;margin:0;padding:0;display:flex;align-items:center;justify-content:space-between;gap:12px}#control-note{display:none}.dpad{display:none}#touch-stick{display:block;position:relative;flex-shrink:0;width:104px;height:104px;border:1px solid #8ea08c;border-radius:50%;background:radial-gradient(circle,#395950,#1b3433);box-shadow:inset 0 0 20px #061b1e}#touch-stick small{position:absolute;bottom:5px;width:100%;text-align:center;font-size:10px;color:#adbdad;pointer-events:none}.stick-cross{position:absolute;left:20px;top:49px;width:62px;height:1px;background:#83a29566}.stick-cross:after{content:'';position:absolute;left:30px;top:-30px;width:1px;height:62px;background:#83a29566}#stick-knob{position:absolute;width:42px;height:42px;left:30px;top:30px;border:1px solid #c0b881;border-radius:50%;background:linear-gradient(#758b75,#475f55);pointer-events:none;box-shadow:0 4px 8px #001a}.touch-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-width:220px;flex:1}#field-interact{grid-column:1/-1;min-height:54px;padding:10px;font-size:15px;background:#4d6251;border-color:#b5aa78}#map-zoom,#touch-cancel{display:block;font-size:12px;padding:6px}body[data-game-mode=hub] #touch-cancel{display:none}body[data-game-mode=hub] #map-zoom{grid-column:1/-1}#mobile-dock{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0;border-top:1px solid #68765d}#mobile-dock button{font-size:13px;min-height:48px;background:#1e3835}#game-main>.roster,#game-main>footer{display:none}.title-copy{bottom:max(35px,env(safe-area-inset-bottom));max-height:calc(100dvh - 50px);overflow:auto}.title-copy h1{font-size:36px}.title-rule{margin:12px 0}.title-tagline{font-size:12px}.title-menu{gap:3px}.title-menu button,.title-menu #title-gallery,.title-menu #title-credits{font-size:14px;min-height:48px;padding:9px 12px}.title-audio{min-height:40px;font-size:11px;bottom:max(8px,env(safe-area-inset-bottom))}dialog{max-height:calc(100dvh - 20px);width:calc(100% - 16px);overflow:auto;border-radius:14px;overscroll-behavior:contain}#mobile-menu-dialog,#mobile-party-dialog{max-width:700px}#mobile-party-dialog .member .small-actions button{font-size:12px;min-height:44px}#mobile-party-dialog .member .name{font-size:15px;min-height:30px}.profile-button{min-height:48px}#rpg-dialog{max-height:calc(100dvh - 16px);width:calc(100% - 16px)}.rpg-heading{padding:12px}.rpg-heading h2{font-size:19px}.rpg-heading button{font-size:13px;min-height:48px}#rpg-body{padding:12px}.rpg-tabs{overflow-x:auto;flex-shrink:0;gap:6px}.rpg-tabs button{font-size:13px;padding:10px;flex-shrink:0}.goods{padding:13px 10px}.goods h3{font-size:15px}.goods p{font-size:12px}.goods small{font-size:11px}.goods button{font-size:13px;min-height:48px}.tavern-member p,.tavern-member small{font-size:12px}.tavern-member button{font-size:13px;min-height:48px}.rpg-note,.job-option p{font-size:13px}.rpg-heading>div:last-child{gap:7px}.rpg-target{align-items:stretch}#rpg-body .equipped-row button{min-height:44px;font-size:12px}.shop-intro{flex-wrap:wrap}.shop-intro p{font-size:13px}.register-form label{font-size:14px}.destination-list button{font-size:14px}.destination-list small{font-size:12px}#story-dialog{width:100%;max-height:100dvh;height:100dvh;border:0;border-radius:0}.story-stage{height:100%;min-height:0;max-height:none}.story-top button{font-size:12px;padding:7px 10px;min-height:44px}.story-top{padding:max(10px,env(safe-area-inset-top)) 12px 10px}.story-panel,.narration .story-panel{bottom:max(12px,env(safe-area-inset-bottom));min-height:0;max-height:60%;padding:16px;overflow:auto}#story-text{font-size:15px;line-height:1.9;min-height:85px}.story-choice{font-size:14px}.story-choice small{font-size:12px}.story-bottom button{font-size:15px;min-height:48px}.opening-controls{top:max(12px,env(safe-area-inset-top));right:12px}.opening-controls button{font-size:13px;min-height:48px}.opening-words{bottom:max(40px,env(safe-area-inset-bottom))}#opening-caption{font-size:20px}#opening-sub{font-size:14px}.cinema-controls{flex-wrap:wrap}.cinema-controls button{font-size:13px;min-height:48px;padding:9px 12px}.cinema-controls label{font-size:13px}#scene-presets button{font-size:13px;min-height:44px}#scene p{font-size:14px}#toast{bottom:max(80px,env(safe-area-inset-bottom));font-size:14px}.member .meta{font-size:12px}.profile-copy p{font-size:14px}.profile-copy blockquote{font-size:16px}
}
@media(max-width:1100px) and (orientation:landscape),(pointer:coarse) and (orientation:landscape){
 #game-main{grid-template-columns:minmax(0,1fr) 230px;grid-template-rows:44px minmax(0,1fr) 110px;gap:6px}#game-main header{grid-column:1/-1}#game-main .chapter{grid-column:1;grid-row:2;position:absolute;top:max(52px,calc(env(safe-area-inset-top) + 50px));left:max(18px,env(safe-area-inset-left));z-index:3;pointer-events:none;max-width:45%;background:#172e2ccf}#game-main .game{grid-column:1;grid-row:2/-1;grid-template-rows:minmax(0,1fr);display:block;position:relative}#game-main .field{height:100%}#game-main aside{position:fixed;right:max(10px,env(safe-area-inset-right));top:max(58px,calc(env(safe-area-inset-top) + 54px));width:230px;max-height:calc(100dvh - 294px);overflow:auto}#field-controls{grid-column:2;grid-row:3;z-index:5;height:110px;gap:5px}#touch-stick{width:96px;height:96px}.stick-cross{left:16px;top:45px}#stick-knob{left:26px;top:26px}.touch-actions{max-width:127px}#field-interact{font-size:12px}#mobile-dock{grid-column:2;grid-row:2;align-self:end;margin-bottom:0;grid-template-columns:repeat(2,1fr);z-index:4}#game-main>.roster{display:none}.actions{grid-template-columns:1fr 1fr}body[data-game-mode=hub] #game-main aside{display:none}.title-copy{left:auto;right:5%;width:43%;top:5%;bottom:5%;transform:none}.title-copy h1{font-size:30px}.title-tagline,.title-rule,.title-kicker{display:none}.title-menu{margin-top:8px}.title-menu button{min-height:44px;padding:6px 12px}.title-audio{left:16px;right:auto}.story-portrait{left:4%;width:43%;bottom:0}.story-panel,.narration .story-panel{left:43%;right:3%;width:54%;bottom:3%;max-height:78%;padding:12px}.story-speaker h2{font-size:19px}#story-text{font-size:14px;min-height:0}.cinema{padding-top:0}.cinema canvas{max-height:56dvh;aspect-ratio:16/9}.cinema-unit{top:25px;width:145px}.cinema-unit span{font-size:12px}#scene .cinema-controls{padding-bottom:8px}.opening-words{left:6%;right:6%;bottom:10%}#opening-caption{font-size:18px}#opening-sub{font-size:13px}
}
@media(min-width:700px) and (orientation:portrait){#game-main{grid-template-rows:54px 50px minmax(0,1fr) 124px 60px}.touch-actions{max-width:330px}.actions{grid-template-columns:repeat(4,1fr)}#mobile-party-body #roster{grid-template-columns:repeat(3,minmax(0,1fr))}.title-copy{left:10%;right:10%;width:80%}.title-copy h1{font-size:55px}.title-menu{max-width:380px}.story-panel,.narration .story-panel{max-height:45%;padding:26px}#story-text{font-size:19px}.story-portrait{width:60%;bottom:25%}}
@media(max-height:680px) and (orientation:portrait){#game-main{grid-template-rows:44px 32px minmax(0,1fr) 102px 50px;gap:4px}#field-controls{height:102px}#touch-stick{width:96px;height:96px}#stick-knob{left:26px;top:26px}.stick-cross{left:16px;top:45px}.title-tagline,.title-rule{display:none}.title-copy{bottom:35px}.title-menu{margin-top:4px}}
/* Combat is a full-screen mobile view, with persistent return controls. */
@media(max-width:1100px),(pointer:coarse){
 #scene{width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;border:0;border-radius:0;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));overflow:hidden}
 #scene[open]{display:flex;flex-direction:column;gap:8px}.cinema{padding:0;flex:1;min-height:180px;border-radius:10px;position:relative}.cinema canvas{position:absolute;left:0;right:0;top:88px;bottom:0;width:100%;height:calc(100% - 88px);aspect-ratio:auto;max-height:none}.cinema-heading{height:24px;padding:7px 10px;background:#1a3435;font-size:9px}.cinema-unit{top:27px;width:calc(50% - 15px);height:56px;padding:5px 8px;background:#24413a;backdrop-filter:none}.cinema-unit.left{left:5px}.cinema-unit.right{right:5px}.cinema-unit span{font-size:13px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cinema-unit small{font-size:9px;margin:2px 0}.cinema-unit b{font-size:10px}.cinema-hp{position:absolute;left:8px;right:8px;bottom:9px;height:3px;margin:0}.cinema-unit b{position:absolute;right:8px;bottom:12px}#scene-damage{top:51%;left:66%;font-size:28px}.cinema-track{bottom:0}#scene-text{min-height:40px!important;max-height:64px;padding:8px!important;font-size:14px!important;overflow:auto}#scene-presets{margin:0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:4px}#scene-presets button{min-width:0;min-height:44px;padding:5px 2px;font-size:12px}.cinema-controls{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0}.cinema-controls button{min-height:48px;font-size:14px}.cinema-controls label{justify-content:center;min-width:0;font-size:13px}.cinema-controls select{min-width:0;max-width:100%;padding:8px}.cinema-controls #scene-next{margin:0!important;min-height:52px}#scene .scene-credit{display:none}
}
@media(max-width:1100px) and (orientation:landscape),(pointer:coarse) and (orientation:landscape){
 #scene[open]{display:grid;grid-template-columns:minmax(0,1fr) 220px;grid-template-rows:auto minmax(0,1fr) auto;gap:8px}.cinema{grid-column:1;grid-row:1/-1;height:100%;min-height:0}.cinema canvas{top:85px;height:calc(100% - 85px)}#scene-text{grid-column:2;grid-row:1;padding:8px!important;max-height:80px;min-height:0!important}#scene-presets{grid-column:2;grid-row:2;grid-template-columns:repeat(3,1fr);align-self:start}.cinema-controls{grid-column:2;grid-row:3;gap:6px}.cinema-controls button{font-size:12px;padding:7px 5px;min-height:44px}.cinema-controls label{font-size:11px}.cinema-controls select{font-size:13px!important;min-height:44px}
}
