/* Scope gesture restrictions to game controls; menus keep normal scrolling/zoom. */
.touch{flex-wrap:wrap}.utility-actions{display:flex;gap:6px;flex-wrap:wrap}
.touch button{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;min-height:44px;min-width:44px}
.touch button.pressed,.touch button:active{background:#8a784f;box-shadow:inset 0 0 0 2px #ffda91}
#specialAbilityButton{touch-action:none}
.shop-panel,.still-panel,.settings-card,#sleepPanel,#endingPanel{overscroll-behavior:contain;overflow-wrap:anywhere}
.shop-overlay,.still-overlay,.title-screen,.title-settings,#sleepOverlay,#endingOverlay{padding-top:max(12px,env(safe-area-inset-top))!important;padding-bottom:max(12px,env(safe-area-inset-bottom))!important;padding-left:max(12px,env(safe-area-inset-left))!important;padding-right:max(12px,env(safe-area-inset-right))!important}
.shop-panel,.still-panel,.settings-card,#sleepPanel,#endingPanel{max-height:calc(var(--viewport-height,100svh) - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-y:auto}
.shop-panel button,.still-panel button,.settings-card button,#sleepPanel button,#endingPanel button,#saveRetry{min-height:44px;touch-action:manipulation}
@media(max-width:850px){
 body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
 header{padding:8px 10px;gap:8px}header .eyebrow,header p{display:none}header h1{font-size:18px;line-height:1.3;letter-spacing:1px;margin:0}
 .player-title{font-size:14px;margin:0 8px 4px;padding:4px 8px}
 .layout{padding:0 6px;gap:6px;grid-template-columns:minmax(0,1fr)}
 .stage{display:grid;grid-template-columns:minmax(0,1fr);border-radius:10px}
 #game{grid-row:2;width:100%;min-height:180px;height:clamp(180px,calc(var(--viewport-height,100svh) - 380px),440px)}
 .hud{position:static;grid-row:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:5px;min-width:0;background:#14232b}
 .hud .stat{min-width:0;padding:4px;font-size:11px;line-height:1.3;overflow-wrap:anywhere}.hud .stat b{font-size:14px}.hud .hp{grid-column:span 2}.hud #currentEquipment{grid-column:1/-1}
 .hud .stat[hidden]{display:none}
 #combatStats{position:static!important;grid-row:3;margin:3px 5px;padding:4px 8px;font-size:12px}
 .state{position:static;grid-row:4;transform:none;white-space:normal;overflow-wrap:anywhere;font-size:12px;line-height:1.4;border-radius:0;padding:5px 8px;text-align:center}
 .location{position:static;grid-row:5;padding:3px 8px;font-size:10px;letter-spacing:0}.hint{display:none}
 .touch{grid-row:2;display:grid;grid-template-columns:140px minmax(0,1fr);gap:6px;align-items:start;position:sticky;bottom:0;z-index:10;padding:8px 6px max(8px,env(safe-area-inset-bottom));background:#14232bf5;border:1px solid #50615c;border-radius:10px;opacity:1}
 .pad{display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:4px}.pad>div{display:contents}
 .pad [data-hold=ArrowUp]{grid-column:2;grid-row:1}.pad [data-hold=ArrowLeft]{grid-column:1;grid-row:2}.pad [data-hold=ArrowRight]{grid-column:3;grid-row:2}.pad [data-hold=ArrowDown]{grid-column:2;grid-row:3}.pad [data-hold=ShiftLeft]{grid-column:2;grid-row:2;font-size:11px}
 .touch button{padding:7px 3px;min-width:44px;min-height:44px;font-size:13px;line-height:1.3;margin:0}
 .actions{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0;width:100%}.actions button{min-height:66px;overflow-wrap:anywhere}#attackButton{font-size:18px}#specialAbilityButton{font-size:13px}
 .utility-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.utility-actions button{font-size:12px}
 .layout aside{grid-row:3;grid-column:1/-1;grid-template-columns:minmax(0,1fr);padding:8px}.layout aside .panel:last-child{display:block}
 footer{padding:8px 10px max(12px,env(safe-area-inset-bottom));gap:8px;flex-wrap:wrap}footer .log{flex-basis:100%;overflow-wrap:anywhere}footer button{min-height:44px}
 .overlay{padding:8px;overflow-y:auto;align-items:flex-start}.intro{max-width:100%;padding:16px;margin:auto}.intro h2{font-size:23px}.intro p{font-size:13px;line-height:1.6}
 .title-screen{overflow-y:auto}.title-art{width:min(100%,640px);aspect-ratio:auto;display:flex;flex-direction:column;gap:8px;max-height:100%;overflow-y:auto;padding:4px}
 .title-art>img{height:auto;object-fit:contain;flex-shrink:0}
 .title-hotspot{position:static;flex-shrink:0;width:100%;height:auto;min-height:48px;padding:10px 14px;background:#293b43;color:#fff1d2;border:1px solid #bba179;font-size:18px;touch-action:manipulation}
 .title-hotspot::after{content:attr(aria-label)}
 .title-notice{position:static;transform:none;white-space:normal;overflow-wrap:anywhere;font-size:13px;padding:8px;flex-shrink:0}
 .shop-panel{padding:14px}.shop-heading{gap:10px}.shop-heading h2{font-size:20px}.shop-products{grid-template-columns:minmax(0,1fr)}.shop-product strong{font-size:16px}.shop-actions button{flex:1;min-width:100px}
 #stillDialogue{padding:14px;font-size:18px;margin:12px auto;line-height:1.6}.still-panel img{max-height:55svh}.settings-card{padding:18px}
}
@media(max-width:850px) and (orientation:landscape) and (max-height:500px){
 .layout{grid-template-columns:minmax(0,1fr) 296px;align-items:start}.stage{grid-row:1;grid-column:1}.touch{grid-row:1;grid-column:2;top:0;bottom:auto}.layout aside{grid-row:2}
 #game{height:clamp(160px,calc(var(--viewport-height,100svh) - 180px),300px);min-height:160px}
 .title-art{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.65fr);align-items:center}.title-art>img{grid-column:1;grid-row:1/4;max-height:70svh}.title-hotspot{grid-column:2}.title-notice{grid-column:1/-1}
}

/* Floating movement surface. No selection suppression on menus or page text. */
#game,.touch{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}
#stickZone{display:none;position:relative;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;border:1px dashed #78958780;border-radius:14px;background:#29443d55;min-width:0}
.stick-hint{position:absolute;inset:0;display:grid;place-content:center;text-align:center;font-size:13px;line-height:1.6;color:#bdcebc;pointer-events:none}
#stickBase{position:absolute;width:var(--stick-diameter,88px);height:var(--stick-diameter,88px);border:2px solid #e4eac88c;border-radius:50%;background:#a9c6ac35;pointer-events:none;transform:translate(-50%,-50%)}
#stickBase[hidden]{display:none}#stickKnob{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px;border-radius:50%;background:#ebdbada8;border:1px solid #fff0cbb0;pointer-events:none}
#stickZone.engaged .stick-hint{opacity:0}
@media(max-width:850px),(pointer:coarse){
 .movement-area{min-width:0;width:100%}.movement-area .pad{display:none}
 #stickZone{display:block;height:150px;width:100%}
 .touch{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;align-items:start}
 .utility-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
 .utility-actions button{min-width:44px;padding:7px 2px;overflow-wrap:anywhere}
}

/* Presentation only: retain all control targets and input handlers. */
.auxiliary>summary h2{display:inline;margin:0}.auxiliary>summary{cursor:pointer}.auxiliary[open]>summary{margin-bottom:12px}
@media(min-width:851px){.auxiliary>summary{list-style:none}.auxiliary>summary::-webkit-details-marker{display:none}}
@media(max-width:850px){
 header{padding:5px 10px}header h1{font-size:16px}
 .stage{border-radius:8px}
 #game{grid-row:1;height:clamp(240px,calc(var(--viewport-height,100svh) - 350px),520px);min-height:240px}
 .hud{grid-row:2;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;padding:5px;border-top:1px solid #50615c}
 .hud .stat{grid-column:span 2;padding:3px 4px;border-radius:5px;font-size:11px;line-height:1.4}
 .hud .stat:first-child{grid-column:span 1;display:flex;align-items:center;justify-content:center}
 .hud .hp{grid-column:span 3}.hud #hungerStat{grid-column:span 2}
 .hud .stat b{font-size:13px;white-space:nowrap}.hud .track{height:3px;margin-top:3px}
 .hud #currentEquipment{grid-column:1/-1;font-size:11px}
 #combatStats{margin:0 5px 3px;padding:3px 6px;font-size:11px;border-radius:5px}
 .state{padding:4px 6px;font-size:11px}.location{padding:2px 6px;font-size:10px}
 .touch{border-radius:8px;padding-top:6px;box-shadow:0 -2px 8px #0002}
 .layout aside{gap:4px;padding:0;display:flex;flex-direction:column}
 .layout aside .auxiliary{border:1px solid #3b504b;border-radius:7px;padding:0;background:#182a2d;color:#b7c7bf;min-width:0}
 .auxiliary>summary{min-height:44px;padding:11px 10px;font-size:12px;line-height:20px;touch-action:manipulation}
 .auxiliary>summary h2{font-size:12px;font-weight:normal}.auxiliary[open]>summary{margin-bottom:0;border-bottom:1px solid #3b504b}
 .auxiliary>summary~*{margin-left:10px;margin-right:10px}.auxiliary .keys{margin-top:10px;margin-bottom:10px;gap:6px;font-size:11px}
 .auxiliary .mission{font-size:11px;padding:5px 0}.auxiliary .legend,.auxiliary .muted,.auxiliary .completion{font-size:11px;line-height:1.6}
 footer{margin-top:8px;gap:6px}
}
@media(max-width:850px) and (orientation:landscape) and (max-height:500px){
 #game{height:clamp(180px,calc(var(--viewport-height,100svh) - 140px),340px);min-height:180px}
}
