html.touch-mode{--gb-shell: #cfcbc2;--gb-shell-dark: #b3aea3;--gb-bezel: #4a4d5c;--gb-ink: #2e3a6b;--gb-btn: #a3214f;--gb-btn-dark: #6e1233;--gb-dpad: #26272c;--gb-pill: #8d8a84;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--screen-gap: 10px;--screen-h: calc((100vw - 2 * var(--screen-gap)) * 9 / 16);height:100%;overflow:hidden;overscroll-behavior:none;background:var(--gb-shell)}html.touch-mode body{position:fixed;inset:0;overflow:hidden;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;background:linear-gradient(180deg,#d8d4cb,var(--gb-shell) 40%,var(--gb-shell-dark))}html.touch-mode body:before,html.touch-mode .game-header,html.touch-mode .controls-card,html.touch-mode .details-card{display:none}html.touch-mode #app{padding:0;min-height:0}html.touch-mode .game-card{animation:none}html.touch-mode #game-canvas{position:fixed;z-index:1;min-height:0;aspect-ratio:auto;background:#000}@media(orientation:portrait){html.touch-mode #game-canvas{top:calc(var(--safe-top) + var(--screen-gap));left:var(--screen-gap);width:calc(100vw - 2 * var(--screen-gap));height:var(--screen-h);border-radius:4px;box-shadow:0 0 0 8px var(--gb-bezel),0 0 0 9px #00000040,0 14px 24px #00000040}.touch-pad{position:fixed;z-index:2;left:0;right:0;top:calc(var(--safe-top) + var(--screen-gap) + var(--screen-h) + 18px);bottom:0;padding:6px 18px calc(var(--safe-bottom) + 10px);display:flex;flex-direction:column;align-items:stretch;gap:6px;--dpad-size: min(42vw, 200px, 30vh);--btn-size: min(18vw, 84px, 12vh)}.tp-top{display:flex;justify-content:flex-end;gap:10px;min-height:44px}.tp-face{position:relative}.tp-main{flex:1;display:flex;align-items:center;justify-content:space-between;min-height:0}.tp-pills{display:flex;justify-content:center;gap:28px;padding-bottom:4px}.tp-pill{transform:rotate(-24deg)}.tp-brand{text-align:center;font:italic 800 .72rem/1 Trebuchet MS,Verdana,sans-serif;letter-spacing:.14em;color:var(--gb-ink);opacity:.8}.tp-caption{color:var(--gb-ink)}}@media(orientation:landscape){html.touch-mode body{background:#000}html.touch-mode #game-canvas{inset:0;width:100%;height:100%}.touch-pad{position:fixed;z-index:2;inset:0;pointer-events:none;--dpad-size: min(40vh, 170px);--btn-size: min(17vh, 72px)}.touch-pad>*>*,.tp-dpad-wrap,.tp-face{pointer-events:auto}.tp-main{display:contents}.tp-dpad-wrap{position:absolute;left:calc(var(--safe-left) + 14px);bottom:calc(var(--safe-bottom) + 14px);opacity:.62}.tp-face{position:absolute;right:calc(var(--safe-right) + 14px);bottom:calc(var(--safe-bottom) + 14px);opacity:.7}.tp-pills{position:absolute;left:calc(var(--safe-left) + 8px);top:34%;display:flex;flex-direction:column;gap:12px;opacity:.6}.tp-top{position:absolute;right:calc(var(--safe-right) + 8px);top:24%;display:flex;flex-direction:column;gap:8px;opacity:.6}.tp-brand{display:none}.tp-caption{color:#fff;text-shadow:0 1px 2px #000,0 0 4px #000}}.touch-pad{font-family:Trebuchet MS,Verdana,sans-serif;touch-action:none;-webkit-user-select:none;user-select:none}.touch-pad.is-disabled .tp-dpad-wrap,.touch-pad.is-disabled .tp-face,.touch-pad.is-disabled .tp-pills{opacity:.28;filter:grayscale(.6)}.tp-caption{display:block;margin-top:4px;font-size:.62rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;text-align:center;white-space:nowrap;pointer-events:none}.tp-btn-face{display:flex;align-items:center;justify-content:center;pointer-events:none}.tp-dpad-wrap.is-hidden{visibility:hidden}.tp-dpad{position:relative;width:var(--dpad-size);height:var(--dpad-size);touch-action:none}.tp-dpad-arm,.tp-dpad-hub{position:absolute;background:var(--gb-dpad);pointer-events:none}.tp-dpad-arm{width:34%;height:34%;border-radius:6px;box-shadow:inset 0 2px #ffffff1f,0 4px #00000059}.tp-dpad-arm:after{content:"";position:absolute;inset:0;margin:auto;width:0;height:0;border:7px solid transparent}.tp-dpad-up{left:33%;top:0}.tp-dpad-down{left:33%;bottom:0}.tp-dpad-left{left:0;top:33%}.tp-dpad-right{right:0;top:33%}.tp-dpad-up:after{border-bottom-color:#5d5f68;top:-7px}.tp-dpad-down:after{border-top-color:#5d5f68;bottom:-7px}.tp-dpad-left:after{border-right-color:#5d5f68;left:-7px}.tp-dpad-right:after{border-left-color:#5d5f68;right:-7px}.tp-dpad-hub{left:32%;top:32%;width:36%;height:36%;background:radial-gradient(circle,#1b1c20 30%,var(--gb-dpad) 32%)}.tp-dpad.is-up .tp-dpad-up,.tp-dpad.is-down .tp-dpad-down,.tp-dpad.is-left .tp-dpad-left,.tp-dpad.is-right .tp-dpad-right{background:#111215;box-shadow:inset 0 2px 4px #0009;transform:translateY(2px)}.tp-face{width:calc(var(--btn-size) * 2.3);height:calc(var(--btn-size) * 2.1)}.tp-btn{position:absolute;width:var(--btn-size);touch-action:none}.tp-btn .tp-btn-face{width:var(--btn-size);height:var(--btn-size);border-radius:50%;background:radial-gradient(circle at 35% 30%,#c93a6c,var(--gb-btn) 55%,var(--gb-btn-dark));color:#fff;font-size:calc(var(--btn-size) * .36);font-weight:900;box-shadow:0 5px #00000059,inset 0 -3px 6px #00000040}.tp-btn .tp-btn-face.tp-long{font-size:calc(var(--btn-size) * .19);letter-spacing:.02em}.tp-btn.is-pressed .tp-btn-face{transform:translateY(3px);box-shadow:0 2px #00000059,inset 0 2px 6px #0006;filter:brightness(.85)}.tp-face[data-count="2"] .tp-btn:nth-child(1){right:0;top:0}.tp-face[data-count="2"] .tp-btn:nth-child(2){left:0;top:36%}.tp-face[data-count="3"]{height:calc(var(--btn-size) * 2.75)}.tp-face[data-count="3"] .tp-btn:nth-child(1){right:0;top:30%}.tp-face[data-count="3"] .tp-btn:nth-child(2){left:0;bottom:0}.tp-face[data-count="3"] .tp-btn:nth-child(3){left:6%;top:-6%}.tp-face[data-count="3"] .tp-btn:nth-child(3) .tp-btn-face{transform:scale(.8)}.tp-face[data-count="3"] .tp-btn.is-pressed:nth-child(3) .tp-btn-face{transform:scale(.8) translateY(3px)}.tp-face[data-count="4"] .tp-btn:nth-child(1){left:0;top:0}.tp-face[data-count="4"] .tp-btn:nth-child(2){right:0;top:0}.tp-face[data-count="4"] .tp-btn:nth-child(3){left:0;bottom:0}.tp-face[data-count="4"] .tp-btn:nth-child(4){right:0;bottom:0}.tp-pill{display:flex;flex-direction:column;align-items:center;touch-action:none;padding:6px;margin:-6px}.tp-pill .tp-btn-face{width:56px;height:18px;border-radius:10px;background:linear-gradient(180deg,#9d9a93,var(--gb-pill));color:#eceae4;font-size:.6rem;font-weight:900;letter-spacing:.08em;box-shadow:0 2px #0000004d,inset 0 1px #ffffff4d}.tp-pill.is-pressed .tp-btn-face{transform:translateY(2px);box-shadow:inset 0 2px 3px #00000059}.tp-extra{display:flex;flex-direction:column;align-items:center;touch-action:none}.tp-extra .tp-btn-face{width:40px;height:28px;border-radius:8px;background:linear-gradient(180deg,#5b5e6d,var(--gb-bezel));color:#f1f2f6;font-size:.8rem;font-weight:900;box-shadow:0 3px #0000004d}.tp-extra.is-pressed .tp-btn-face{transform:translateY(2px);box-shadow:0 1px #0000004d}@media(orientation:landscape){.tp-extra{flex-direction:row;gap:6px}.tp-extra .tp-caption{margin-top:0}}.tp-tip{position:fixed;z-index:5;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);transform:translate(-50%);width:min(92vw,420px);display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:12px;background:#14161eeb;color:#f3f4f8;font:600 .8rem/1.35 Trebuchet MS,Verdana,sans-serif;box-shadow:0 8px 24px #00000059}.tp-tip-close{margin-left:auto;opacity:.7;font-size:1rem}.tp-prompt{position:fixed;z-index:10;inset:0;display:flex;justify-content:center;align-items:flex-start;padding:calc(env(safe-area-inset-top,0px) + 16px) 16px 16px;background:#0009;touch-action:manipulation}.tp-prompt-card{width:min(100%,420px);display:grid;gap:12px;padding:16px;border-radius:14px;background:#18181b;border:1px solid #3f3f46;color:#fafafa;font-family:Trebuchet MS,Verdana,sans-serif}.tp-prompt-title{display:grid;gap:8px;font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#a1a1aa}.tp-prompt-input{font-size:18px;font-weight:700;padding:10px 12px;border-radius:8px;border:2px solid #ff9f0a;background:#0f0f11;color:#fff;-webkit-user-select:text;user-select:text}.tp-prompt-input:focus{outline:none}.tp-prompt-actions{display:flex;justify-content:flex-end;gap:10px}.tp-prompt-btn{font:800 .95rem Trebuchet MS,Verdana,sans-serif;padding:10px 18px;border-radius:8px;border:1px solid #3f3f46;background:#27272a;color:#fafafa}.tp-prompt-btn-primary{background:#ff9f0a;border-color:#ff9f0a;color:#111}
