/* Grimwood V17 · Pulso Táctil — mobile-first controls and Android/iOS UI */
:root{--touch-opacity:.82;--touch-button-scale:1;--touch-joystick-scale:1}
html,body,#game{width:100%;height:100%;height:100dvh;max-width:100%;overflow:hidden;overscroll-behavior:none}
body{margin:0;-webkit-text-size-adjust:100%;text-size-adjust:100%}
#world{touch-action:none;user-select:none;-webkit-user-select:none}
.touch-mode button,.touch-mode #joystick{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#touch-controls{position:fixed;inset:0;z-index:18;pointer-events:none;opacity:var(--touch-opacity)}
#touch-controls .touch-actions{position:fixed!important;inset:0!important;width:auto!important;height:auto!important;right:auto!important;bottom:auto!important;transform:none!important;pointer-events:none}
#touch-controls [data-action]{position:fixed!important;right:auto!important;bottom:auto!important;transform:translate(-50%,-50%) scale(var(--touch-button-scale))!important;transform-origin:center!important;pointer-events:auto;width:clamp(50px,13vw,76px)!important;height:clamp(50px,13vw,76px)!important;display:grid;place-items:center;border-radius:50%;backdrop-filter:blur(3px);box-shadow:0 6px 22px #0008,inset 0 0 0 1px #d9ba7c33}
#touch-controls [data-action=attack]{width:clamp(68px,18vw,98px)!important;height:clamp(68px,18vw,98px)!important;font-size:clamp(28px,7vw,40px)!important}
#touch-controls [data-action=interact]{width:clamp(46px,11vw,64px)!important;height:clamp(46px,11vw,64px)!important;font-size:clamp(14px,4vw,20px)!important}
.hide-touch-interact #touch-controls [data-action=interact]{display:none!important}
.touch-editing #touch-controls [data-action=interact]{display:grid!important}
#joystick{position:fixed!important;right:auto!important;bottom:auto!important;transform:translate(-50%,-50%) scale(var(--touch-joystick-scale))!important;width:clamp(92px,26vw,150px)!important;height:clamp(92px,26vw,150px)!important;border-radius:50%;pointer-events:auto;opacity:.9;transition:opacity .12s ease,transform .12s ease;background:radial-gradient(circle,#342c24b5 0 38%,#11100dcc 40% 69%,#94744855 70% 72%,#080706b8 73%)}
#joystick i{position:absolute!important;width:38%!important;height:38%!important;left:31%!important;top:31%!important;border-radius:50%;background:radial-gradient(circle,#d7b77eaa,#6c5337c7 68%,#211a14);box-shadow:0 0 0 1px #e3c48c55,0 5px 15px #0009}
.touch-mode #joystick:not(.adaptive-active){opacity:.62}
.touch-mode #joystick.adaptive-active{opacity:1;transition:none}
.touch-mode:not(.touch-editing) #joystick[style*="top"]{will-change:left,top}
.direct-touch #interact-prompt{cursor:pointer}
.direct-touch #interact-prompt kbd{font-size:17px;min-width:30px;text-align:center}
.android-device.touch-mode #reward-action{font-size:clamp(13px,3.4vw,16px)!important;padding:10px 14px!important;max-width:72vw;white-space:normal}
#touch-editor-bar{position:fixed;z-index:50;top:max(10px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(92vw,760px);display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid #b68b50;background:#0b0907f4;box-shadow:0 10px 30px #000a;color:#ddc79c;font:12px/1.35 Georgia,serif;pointer-events:auto}
#touch-editor-bar[hidden]{display:none}#touch-editor-bar strong{color:#e4c48b;letter-spacing:.12em}#touch-editor-bar span{color:#b5a88f}#touch-editor-bar button{min-height:36px;padding:8px 12px}
.touch-editing #touch-controls{display:block!important;opacity:.95!important}.touch-editing #touch-controls [data-action],.touch-editing #joystick{outline:2px dashed #d0aa6e88;box-shadow:0 0 0 5px #0008,0 0 22px #d3a85c44!important}.touch-editing #world{filter:brightness(.55)}
.mobile-control-actions{display:grid;gap:8px;margin-top:12px}.mobile-control-actions button{width:100%;min-height:42px}

/* Phone UI: treat dialogs as game sheets instead of desktop windows. */
@media(pointer:coarse), (max-width:820px){
 .mobile-layout #panel{box-sizing:border-box!important;left:max(0px,env(safe-area-inset-left))!important;right:max(0px,env(safe-area-inset-right))!important;bottom:max(0px,env(safe-area-inset-bottom))!important;top:auto!important;width:auto!important;max-width:none!important;max-height:min(92dvh,920px)!important;margin:0!important;padding:14px 14px calc(14px + env(safe-area-inset-bottom))!important;border-radius:18px 18px 0 0!important;overflow:auto!important;overscroll-behavior:contain}
 .mobile-layout #panel .panel-top{position:sticky;top:-14px;z-index:8;margin:-14px -14px 8px;padding:12px 12px 8px;background:linear-gradient(#0a0807 78%,transparent)}
 .mobile-layout #panel #panel-title{font-size:clamp(25px,7vw,38px)!important;line-height:1.02!important;overflow-wrap:anywhere;hyphens:auto}
 .mobile-layout #panel-body{min-width:0;overflow-wrap:anywhere;word-break:normal}
 .mobile-layout #panel-footer{position:sticky;bottom:calc(-14px - env(safe-area-inset-bottom));z-index:7;margin:14px -14px calc(-14px - env(safe-area-inset-bottom));padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#0b0907 16%);display:flex;gap:8px;flex-wrap:wrap}
 .mobile-layout #panel-footer button{flex:1 1 145px;min-height:46px;white-space:normal}
 .mobile-layout dialog[data-kind=dialogue]{padding:14px!important;min-height:0!important}
 .mobile-layout dialog[data-kind=dialogue] #panel-portrait{display:block!important;position:relative!important;float:left!important;width:clamp(78px,25vw,118px)!important;height:clamp(98px,31vw,145px)!important;margin:0 12px 8px 0!important;left:auto!important;top:auto!important;background-size:cover!important;background-position:center 14%!important;-webkit-mask-image:linear-gradient(#000 75%,transparent)!important;mask-image:linear-gradient(#000 75%,transparent)!important}
 .mobile-layout .spoken{font-size:clamp(17px,4.5vw,21px)!important;line-height:1.48!important;min-height:0!important}
 .mobile-layout .dialogue-page{min-height:0!important}.mobile-layout .dialogue-location,.mobile-layout .dialogue-count{font-size:10px!important}
 .mobile-layout .settings-book{display:block!important}.mobile-layout .settings-section{border-right:0!important;border-bottom:1px solid #78603b55;padding:14px 8px!important}.mobile-layout .control-player-grid{grid-template-columns:1fr!important}.mobile-layout .binding-row{grid-template-columns:minmax(112px,1fr) minmax(70px,.65fr) minmax(110px,1fr)!important;gap:6px!important;font-size:12px}
 .mobile-layout .cards,.mobile-layout .archive-grid,.mobile-layout .v15-profile-grid,.mobile-layout .achievement-grid{grid-template-columns:1fr!important}
 .mobile-layout .stats-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .mobile-layout input[type=range]{width:min(42vw,180px)!important}
 .mobile-layout .top-actions{right:max(8px,env(safe-area-inset-right))!important;top:max(8px,env(safe-area-inset-top))!important}.mobile-layout .player-vitals{left:max(8px,env(safe-area-inset-left))!important;top:max(8px,env(safe-area-inset-top))!important;max-width:52vw!important}.mobile-layout .room-heading{top:max(8px,env(safe-area-inset-top))!important;width:46vw!important;left:50%!important;transform:translateX(-50%)}
 .mobile-layout #objective{max-width:58vw!important;left:max(8px,env(safe-area-inset-left))!important}.mobile-layout #interact-prompt{max-width:76vw;white-space:normal;line-height:1.25}
 .phone-device .hero-portrait{display:none!important}.phone-device .currency{display:none!important}.phone-device #room-progress{font-size:9px!important}.phone-device .room-heading h2{font-size:clamp(15px,4.6vw,21px)!important}
}
@media(max-width:390px){#touch-controls [data-action]{width:50px!important;height:50px!important}#touch-controls [data-action=attack]{width:68px!important;height:68px!important}.mobile-layout .player-vitals{width:48vw!important}.mobile-layout #objective{font-size:11px!important;max-width:54vw!important}.mobile-layout #panel #panel-title{font-size:25px!important}.mobile-layout .spoken{font-size:17px!important}}
@media(max-height:500px) and (orientation:landscape) and (pointer:coarse){.mobile-layout #panel{max-height:96dvh!important;border-radius:10px 10px 0 0!important}.mobile-layout dialog[data-kind=dialogue] #panel-portrait{width:86px!important;height:100px!important}.mobile-layout .spoken{font-size:16px!important}.mobile-layout #panel-footer button{min-height:38px}.touch-mode #objective{display:none!important}.touch-mode #interact-prompt{bottom:max(8px,env(safe-area-inset-bottom))!important;left:50%!important;transform:translateX(-50%)!important}.player-vitals{max-width:36vw!important}.room-heading{width:36vw!important}}
@media(prefers-reduced-motion:reduce){#joystick,.touch-actions button{transition:none!important}}
.joystick-dynamic.touch-mode #joystick:not(.adaptive-active),.joystick-floating.touch-mode #joystick:not(.adaptive-active){opacity:0!important;pointer-events:none!important}
.joystick-fixed.touch-mode #joystick{opacity:.72!important;pointer-events:auto!important}
.touch-editing #joystick{opacity:.95!important;pointer-events:auto!important}
.title-content:before{content:'◆  PULSO TÁCTIL  ◆'!important}

/* V17.6: preserve the playable centre and peripheral silhouettes. */
#vignette{box-shadow:inset 0 0 7vw .4vw #02060a55;background:linear-gradient(#050b1425,transparent 16%,transparent 86%,#02060a45)}
body.low-health #vignette{box-shadow:inset 0 0 7vw .5vw #54161b66;background:radial-gradient(ellipse at center,transparent 72%,#591b2455 100%);animation:none}

#vignette{box-shadow:inset 0 0 7vw .4vw #02060a55;background:linear-gradient(#050b1425,transparent 16%,transparent 86%,#02060a45)}
body.low-health #vignette{box-shadow:inset 0 0 7vw .5vw #54161b66;background:radial-gradient(ellipse at center,transparent 72%,#591b2455 100%);animation:none}
