/* Game taps are actions. Text fields and scrollable lists keep native editing/scrolling. */
.layout,.topbar,.entry-screen,#fullscreen-help{touch-action:manipulation}
#world,#minimap{touch-action:none}
.touch-only{display:none}
.touch-ui{--safe-left:max(8px,env(safe-area-inset-left));--safe-right:max(8px,env(safe-area-inset-right));--safe-bottom:max(8px,env(safe-area-inset-bottom));--touch-header:calc(44px + env(safe-area-inset-top));height:var(--touch-height,100dvh);overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
.touch-ui .touch-only{display:inline-flex}
.touch-ui .desktop-only,.touch-ui .input-hint,.touch-ui .mode,.touch-ui .brand small,.touch-ui #asset-status,.touch-ui #logout-button,.touch-ui .top-actions>a{display:none}
.touch-ui .topbar{height:var(--touch-header);padding:env(safe-area-inset-top) var(--safe-right) 0 var(--safe-left);gap:8px}
.touch-ui .brand{gap:5px;font-size:11px;letter-spacing:1px;flex-shrink:0}
.touch-ui .crest{width:23px;height:29px;font-size:20px}
.touch-ui .top-actions{min-width:0;gap:6px;flex:1;justify-content:flex-end}
.touch-ui #save-status{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:8px}
.touch-ui .sound-volume-controls{position:static;gap:5px;padding:0;border:0;background:none;box-shadow:none}
.touch-ui #sound-volume{width:64px;height:40px}
.touch-ui #sound-volume-value{width:27px;font-size:9px}
.touch-ui .layout{display:block;height:calc(var(--touch-height,100dvh) - var(--touch-header))}
.touch-ui .world{width:100%;height:100%;min-height:0}
.touch-ui .entry-screen{height:var(--touch-height,100dvh);padding:max(12px,env(safe-area-inset-top)) var(--safe-right) var(--safe-bottom) var(--safe-left);overflow-y:auto;align-items:safe center}
.touch-ui #entry-fullscreen{justify-content:center;background:transparent;font-size:12px;padding:8px;min-height:40px}
.touch-ui :is(input:not([type=range]),select,textarea){font-size:16px}
.touch-ui .hud{top:8px;bottom:auto;left:var(--safe-left);right:auto;width:152px;padding:8px;min-height:0}
.touch-ui .vitals{width:100%}.touch-ui .level-line{margin-bottom:5px;font-size:10px}.touch-ui .level-line>span{font-size:8px}
.touch-ui .vitals label{font-size:9px;margin:3px 0}.touch-ui .vitals progress{height:4px;margin:0}
.touch-ui .stamina-row{margin-top:4px;gap:5px}.touch-ui #run-button{width:32px;height:32px;padding:5px}.touch-ui #run-button kbd{display:none}
.touch-ui .minimap-panel{top:8px;right:var(--safe-right);width:120px;padding:6px;border-radius:6px}
.touch-ui .minimap-panel h2{font-size:10px;margin:0 0 4px}.touch-ui #minimap{height:78px}
.touch-ui .minimap-coordinates{font-size:8px;margin:4px 0}.touch-ui .minimap-panel .world-tools{height:24px;margin:2px 0 0}
.touch-ui .minimap-panel .world-tools button{padding:2px;min-width:18px;height:24px;font-size:10px}
.touch-ui .minimap-panel #zoom-label{min-width:25px;font-size:8px}.touch-ui .zoom-controls{gap:0}
.touch-ui .minimap-panel #return-button{width:23px;height:24px}.touch-ui .minimap-panel #map-button{width:24px;height:24px}.touch-ui #map-button kbd{display:none}
.touch-ui .statuses{top:129px;bottom:auto;left:var(--safe-left);max-width:166px;gap:3px;padding:0}
.touch-ui .status-icon{width:25px;height:25px;flex-shrink:0}.touch-ui .status-icon canvas{width:19px;height:19px}.touch-ui .status-icon small{font-size:8px}
.touch-ui .target-card{top:160px;left:var(--safe-left);right:auto;bottom:auto;transform:none;width:140px;padding:6px 8px;font-size:10px}
.touch-ui .target-card progress{height:4px;margin-top:4px}
.touch-ui .action-bars{display:flex;flex-direction:column;align-items:stretch;left:var(--safe-left);right:var(--safe-right);bottom:calc(var(--safe-bottom) + 53px);gap:12px}
.touch-ui .action-bars .skill-hotbar{position:relative;order:2;left:auto;right:auto;bottom:auto;transform:none;width:100%;max-width:none;display:flex;flex:0 0 58px;gap:6px;padding:5px;height:58px}
.touch-ui .hotbar-slots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.touch-ui .hotbar-slot{height:46px;padding:4px;min-width:0}.touch-ui .hotbar-slot canvas{width:32px;height:32px}.touch-ui .hotbar-slot kbd{font-size:8px;bottom:0;right:3px}
.touch-ui .touch-page-hidden,.touch-ui .selected-skill{display:none}
.touch-ui #touch-skill-page{align-items:center;justify-content:center;flex:0 0 40px;padding:0;font-size:10px;color:var(--gold)}
.touch-ui .experience-bar{height:8px;top:-10px}.touch-ui #experience-label{font-size:7px;line-height:8px}
.touch-ui .potion-hotbar{order:1;align-self:flex-end;flex:0 0 42px;width:184px;height:42px;padding:3px;gap:4px}
.touch-ui .potion-slot{height:34px;min-width:0}.touch-ui .potion-slot .item-icon{width:27px;height:27px}.touch-ui .potion-slot kbd{display:none}
.touch-ui .potion-slot.registering{border-color:var(--gold);border-style:dashed;background:var(--selection)}
.touch-ui #touch-toolbar{position:absolute;left:var(--safe-left);right:var(--safe-right);bottom:var(--safe-bottom);height:44px;align-items:center;gap:5px}
.touch-ui #touch-toolbar>button{flex:0 0 44px;height:44px;padding:3px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1px;background:var(--surface);border-color:var(--surface-border)}
.touch-ui #touch-toolbar svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.touch-ui #touch-toolbar>button span{font-size:9px}.touch-ui #touch-toolbar>button[aria-expanded=true]{color:var(--gold);background:var(--selection)}
.touch-ui .touch-action-state{flex:1;min-width:0;font-size:10px;line-height:1.6;color:#e8e5d7;text-shadow:0 1px 2px #000,1px 0 #000,-1px 0 #000}
.touch-ui #touch-cancel{padding:3px 8px;min-height:28px;margin-left:4px;color:var(--gold);font-size:10px}
.touch-ui.touch-aiming #skill-hotbar{border-color:var(--gold)}.touch-ui.touch-aiming #touch-action-hint{color:var(--gold)}
.touch-ui .window-shortcuts{display:none;z-index:5;left:auto;right:var(--safe-right);bottom:calc(var(--safe-bottom) + 55px);width:222px;padding:10px;background:var(--floating);border:1px solid var(--surface-border);border-radius:8px;box-shadow:0 6px 25px #0008}
.touch-ui.touch-menu-open .window-shortcuts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.touch-ui .window-shortcuts .skillbook-toggle,.touch-ui .window-shortcuts #panel-button.skillbook-toggle{position:static;right:auto;bottom:auto;width:100%;height:60px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;padding:4px}
.touch-ui .window-shortcuts .skillbook-toggle svg{width:24px;height:24px}.touch-ui .window-shortcuts kbd{display:none}.touch-ui .window-shortcuts .skillbook-toggle span{font-size:10px}
.touch-ui #touch-map-button,.touch-ui #touch-logout-button{grid-column:span 2;align-items:center;justify-content:center;min-height:38px;padding:5px;font-size:11px}
.touch-ui #touch-fullscreen-button{grid-column:1 / -1;align-items:center;justify-content:center;min-height:38px;padding:5px;font-size:11px;color:var(--gold)}
.touch-ui .rpg-window,.touch-ui .sidebar{position:fixed;z-index:6;left:var(--safe-left);right:var(--safe-right);top:calc(var(--touch-header) + 8px);bottom:calc(var(--safe-bottom) + 180px);width:auto;max-width:none;height:auto;max-height:none;padding:12px;background:var(--floating);border:1px solid var(--surface-border);border-radius:8px;overflow-y:auto;overscroll-behavior:contain}
.touch-ui .sidebar{display:flex;padding:0}.touch-ui.panel-hidden .sidebar{display:none}
.touch-ui .skill-panel{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;padding:12px;gap:8px}.touch-ui .skill-panel .section-title{flex-shrink:0;margin:0}
.touch-ui .skill-list{flex:1;min-height:0;max-height:none;overflow-y:auto;grid-template-columns:repeat(4,minmax(0,1fr));align-content:start}
.touch-ui .skill-button{min-height:62px;padding:5px 3px;font-size:10px}.touch-ui .skill-description{margin:0;font-size:11px;max-height:64px;overflow-y:auto}
.touch-ui #register-skill{flex-shrink:0;min-height:40px;margin:0}.touch-ui #touch-book-close{margin-left:auto;align-items:center;justify-content:center;width:40px;height:36px;padding:0;font-size:20px}
.touch-ui .window-title{position:sticky;top:-12px;z-index:1;background:var(--floating);padding:6px 0}.touch-ui .window-title button{width:38px;height:38px;padding:0;font-size:23px}.touch-ui .window-title kbd{display:none}
.touch-ui .inventory-columns{display:block}.touch-ui #inventory-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}.touch-ui .item-slot{height:44px}
.touch-ui .paperdoll{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;min-height:0;height:auto;margin:8px 0}
.touch-ui #equipment-character{position:static;width:76px;height:124px;transform:none}.touch-ui #equipment-grid{position:static;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:4px}
.touch-ui .equipment-slot{height:49px;min-width:0;padding:2px}.touch-ui .equipment-slot small{font-size:7px}
.touch-ui .inventory-footer{position:sticky;bottom:-12px;flex-wrap:wrap;gap:5px;padding:8px 0;background:var(--floating)}.touch-ui .inventory-footer>span{width:100%;font-size:9px}.touch-ui .inventory-footer button{min-height:38px;font-size:11px}
.touch-ui .shop-toolbar{flex-wrap:wrap}.touch-ui .shop-item{min-height:50px}.touch-ui .shop-tabs button,.touch-ui #shop-buy,.touch-ui #workshop-action{min-height:40px}
.touch-ui .workshop-columns{grid-template-columns:1fr}.touch-ui .stat-increase{min-height:38px;min-width:38px}
.touch-ui .minimap-panel.expanded{position:absolute;inset:8px var(--safe-right) calc(var(--safe-bottom) + 54px) var(--safe-left);width:auto;max-width:none;height:auto;transform:none;padding:10px;z-index:5;display:flex;flex-direction:column}
.touch-ui .minimap-panel.expanded #minimap{flex:1;min-height:0;height:auto}.touch-ui .minimap-panel.expanded .world-tools{flex-shrink:0}.touch-ui .map-legend{font-size:9px}
.touch-ui #touch-slot-details{position:absolute;z-index:6;left:var(--safe-left);right:var(--safe-right);bottom:calc(var(--safe-bottom) + 176px);display:flex;flex-direction:column;padding:12px;background:var(--tooltip);border:1px solid var(--surface-border);border-radius:8px;font-size:12px}
.touch-ui #touch-slot-details p{font-size:11px;line-height:1.6}.touch-ui #touch-slot-details>div{display:flex;gap:8px}.touch-ui #touch-slot-details button{min-height:40px}
.touch-ui #toast{bottom:calc(var(--safe-bottom) + 174px);font-size:11px;z-index:7}
.touch-ui .chat-overlay{left:var(--safe-left);right:var(--safe-right);bottom:calc(var(--safe-bottom) + 174px);width:auto;max-width:none}
.touch-ui .chat-overlay #messages{max-height:68px;font-size:10px;opacity:.78}.touch-ui .chat-overlay.editing #messages{max-height:140px;opacity:1}
.touch-ui .chat-compose{gap:5px;align-items:center}.touch-ui .chat-compose>label{display:none}.touch-ui #chat-input{height:42px}.touch-ui #chat-send,.touch-ui #chat-close{width:40px;height:42px;flex-shrink:0;align-items:center;justify-content:center;padding:0}
.touch-ui .chat-notice{font-size:9px}.touch-ui.chat-editing .chat-overlay{bottom:var(--safe-bottom);z-index:7}
.touch-ui.chat-editing :is(.action-bars,#touch-toolbar,.hud,.statuses,.minimap-panel,.target-card){visibility:hidden}
.touch-ui #death-notice{z-index:8;pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px;background:var(--floating);border:1px solid var(--surface-border);border-radius:9px;font-size:16px}
.touch-ui #revive-button{align-items:center;justify-content:center;min-width:180px;min-height:48px;background:var(--gold);color:#15130b;border:0;font-size:14px}
.touch-ui.dead :is(.action-bars,#touch-toolbar,.window-shortcuts){visibility:hidden}
.touch-ui .item-tooltip{max-width:calc(100vw - 24px);max-height:50dvh;overflow-y:auto}
#fullscreen-help{width:min(360px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:22px;background:var(--floating);color:#e8e5d7;border:1px solid var(--surface-border);border-radius:10px;box-shadow:0 12px 40px #0008;overflow-y:auto}
#fullscreen-help::backdrop{background:#0009}
#fullscreen-help h2{font-size:18px;color:var(--gold);margin:0 0 14px}
#fullscreen-help p,#fullscreen-help li{font-size:13px;line-height:1.8}
#fullscreen-help ol{padding-left:22px}#fullscreen-help li{margin:8px 0}#fullscreen-help strong{color:var(--gold)}
#fullscreen-help-close{width:100%;min-height:44px;margin-top:8px}
@media(orientation:landscape){
  .touch-ui .action-bars{left:auto;width:54%;max-width:480px;bottom:var(--safe-bottom)}
  .touch-ui #touch-toolbar{right:auto;width:calc(46% - var(--safe-left) - 12px)}
  .touch-ui .touch-action-state{font-size:9px}.touch-ui #touch-toolbar>button{flex-basis:40px}
  .touch-ui .minimap-panel{width:112px}.touch-ui #minimap{height:60px}
  .touch-ui .rpg-window,.touch-ui .sidebar{left:calc(var(--safe-left) + 160px);bottom:var(--safe-bottom)}
  .touch-ui .skill-list{grid-template-columns:repeat(6,minmax(0,1fr))}.touch-ui .skill-button{min-height:50px}.touch-ui .skill-description{max-height:34px;font-size:10px}
  .touch-ui .skill-panel{padding:8px;gap:4px}.touch-ui #skill-search{padding:4px 8px;height:32px}.touch-ui #register-skill{min-height:32px}
  .touch-ui .chat-overlay{right:auto;width:38%;bottom:calc(var(--safe-bottom) + 50px)}
  .touch-ui.chat-editing .chat-overlay{right:var(--safe-right);width:auto;bottom:var(--safe-bottom)}
  .touch-ui #touch-slot-details{left:auto;width:52%;bottom:calc(var(--safe-bottom) + 120px)}
  .touch-ui #toast{bottom:calc(var(--safe-bottom) + 116px)}
}
