#touch-controls{z-index:30;pointer-events:none;color:#e8e8ef;font:16px system-ui,sans-serif;position:fixed;inset:0}#touch-controls *{box-sizing:border-box}#touch-controls button,#touch-controls input,#touch-controls summary{min-width:48px;min-height:48px;font:inherit;touch-action:manipulation}#touch-controls button{color:inherit;overflow-wrap:anywhere;background:#232937;border:1px solid #555c70;border-radius:8px;padding:8px 10px}#touch-controls button:disabled{opacity:.45}#touch-controls button[aria-pressed=true]{background:#294c6c;border-color:#99caff}#touch-controls input{color:#f3f3f8;background:#141923;border:1px solid #8094af;border-radius:6px;width:100%;padding:8px}#touch-controls h2{overflow-wrap:anywhere;margin:0 0 8px;font-size:18px}#touch-controls form{gap:6px;margin:8px 0;display:flex}#touch-controls form input{min-width:0}.touch-launcher{bottom:max(6px, env(safe-area-inset-bottom));left:max(6px, env(safe-area-inset-left));right:max(6px, env(safe-area-inset-right));pointer-events:auto;justify-content:space-between;display:flex;position:absolute}.touch-sheet{bottom:calc(58px + env(safe-area-inset-bottom));left:max(6px, env(safe-area-inset-left));right:max(6px, env(safe-area-inset-right));max-width:520px;max-height:calc(72dvh - 58px - env(safe-area-inset-bottom));overscroll-behavior:contain;pointer-events:auto;background:#10141df7;border:1px solid #647186;border-radius:12px;margin:auto;padding:10px;position:absolute;overflow:auto}.touch-sheet[hidden]{display:none}.touch-actions{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.touch-rows{gap:6px;max-height:28dvh;margin:8px 0;display:grid;overflow:auto}.touch-rows button{text-align:left}.touch-pad{grid-template-columns:repeat(3,1fr);gap:5px;max-width:290px;margin:8px auto;display:grid}.touch-detail{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}#gamepad-controls{z-index:32;pointer-events:none;color:#e8e8ef;--gp-fg:#f2f4fb;--gp-accent:#ffc167;--gp-plate:#0a0d14db;--gp-plate-lit:#16304ceb;--gp-edge:#c3cfe861;--gp-select:#8ec5ff;--gp-size:min(72vmin, 520px);font:15px system-ui,sans-serif;position:fixed;inset:0}#gamepad-controls *{box-sizing:border-box}#gamepad-controls.gamepad-modal{pointer-events:auto}#gamepad-controls button:not(.gamepad-wedge),#gamepad-controls select{font:inherit;color:inherit;background:#232937;border:1px solid #555c70;border-radius:8px;padding:6px 10px}#gamepad-controls button{font:inherit}#gamepad-controls button:disabled{opacity:.45}.gamepad-notice{top:max(8px, env(safe-area-inset-top));pointer-events:none;background:#141923e6;border:1px solid #8094af;border-radius:10px;max-width:min(90vw,640px);margin:0;padding:8px 14px;position:absolute;left:50%;transform:translate(-50%)}.gamepad-wheel{width:var(--gp-size);height:var(--gp-size);pointer-events:auto;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gamepad-hub{width:calc(var(--gp-size) * .36);text-align:center;background:var(--gp-plate);border-radius:10px;gap:1px;padding:5px 7px;line-height:1.25;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #000000b3}.gamepad-hub strong{color:var(--gp-accent);font-size:clamp(12px, calc(var(--gp-size) * .034), 17px);letter-spacing:.04em}.gamepad-hub span{color:var(--gp-fg);font-size:clamp(11px, calc(var(--gp-size) * .03), 15px)}.gamepad-hub small{color:#9aa5bd;font-size:clamp(10px, calc(var(--gp-size) * .026), 13px)}.gamepad-wedge{width:calc(var(--gp-size) * .215);height:calc(var(--gp-size) * .215);border:1px solid var(--gp-edge);background:var(--gp-plate);color:var(--gp-fg);border-radius:14px;grid-template-rows:1fr auto;place-items:center;gap:2px;padding:6px 3px 4px;display:grid;position:absolute;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #000000c9,0 2px 8px #00000073}.gamepad-icon{width:clamp(24px, calc(var(--gp-size) * .095), 48px);height:clamp(24px, calc(var(--gp-size) * .095), 48px);filter:drop-shadow(0 1px 1px #000000a6)}.gamepad-wedge span{font-size:clamp(10px, calc(var(--gp-size) * .036), 15px);text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 3px #000,0 1px 2px #000;max-width:100%;line-height:1.1;overflow:hidden}.gamepad-wedge[aria-selected=true]{background:var(--gp-plate-lit);border-color:var(--gp-select);transform:translate(-50%,-50%)scale(1.08);box-shadow:0 0 0 1px #000000c9,0 0 12px #8ec5ff59}.gamepad-legend{inset:max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));pointer-events:auto;background:#141923f7;border:1px solid #8094af;border-radius:12px;max-width:720px;max-height:100%;margin:auto;padding:14px;position:absolute;overflow:auto}.gamepad-legend h2{margin:0 0 6px;font-size:18px}.gamepad-detail{color:#a8b2c8;overflow-wrap:anywhere;margin:0 0 10px}.gamepad-rows{gap:6px;display:grid}.gamepad-row{border-radius:8px;grid-template-columns:minmax(96px,1fr) 2fr 2fr;align-items:center;gap:6px;padding:2px;display:grid}.gamepad-row[aria-current=true]{background:#294c6c}.gamepad-row select{min-width:0}.gamepad-name{text-align:left}.gamepad-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}@media (width<=560px){.gamepad-row{grid-template-columns:1fr}}.grimvault-online-gate{z-index:9000;color:#e8dcc8;text-align:center;box-sizing:border-box;background-color:#0c0a09;background-image:linear-gradient(#0c0a098c,#0c0a09d9),url(../assets/grimvault/backgrounds/title-screen.png);background-position:50%;background-repeat:repeat;background-size:cover;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;place-items:center;padding:24px;font-family:Georgia,Times New Roman,serif;display:grid;position:fixed;inset:0;overflow:hidden}.grimvault-online-gate-panel{background:#100c0ab8;border:1px solid #c9482b8c;border-image:url(../assets/grimvault/frames/ui-frame-skull.png) 180 fill;width:min(560px,100%);padding:clamp(20px,5vw,44px);position:relative;box-shadow:0 0 60px #000000d9}.grimvault-online-gate h1{letter-spacing:.06em;color:#f4e7d0;text-shadow:0 0 14px #c9482bd9;margin:0 0 6px;font-size:clamp(34px,7vw,64px);font-weight:700}.grimvault-online-gate .gate-kicker{letter-spacing:.34em;text-transform:uppercase;color:#c9482b;margin:0 0 18px;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.grimvault-online-gate .gate-char{color:#c9b69b;margin:0 0 26px;font-size:15px}.grimvault-online-gate .gate-status{color:#a89f8c;min-height:20px;margin:0 0 18px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.grimvault-online-gate button{letter-spacing:.08em;cursor:pointer;color:#1a120c;background:#c9482b;border:1px solid #e07048;border-radius:2px;padding:14px 30px;font:16px/1 ui-monospace,SFMono-Regular,Menlo,monospace;box-shadow:0 0 18px #c9482b80}.grimvault-online-gate button:disabled{opacity:.45;cursor:wait;filter:grayscale(.4)}.grimvault-online-gate .gate-muted{color:#6f6655;letter-spacing:.1em;font:11px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;position:absolute;bottom:-4px;left:0;right:0}.grimvault-identity-overlay{z-index:10000;color:#eee;background:#000000db;place-items:center;font:16px monospace;display:grid;position:fixed;inset:0}.grimvault-identity-panel{background:#111;border:1px solid #777;width:min(520px,100vw - 32px);padding:24px;box-shadow:0 0 40px #000}.grimvault-identity-panel h1{color:#ffd36a;margin:0 0 16px;font-size:22px}.grimvault-identity-panel button{color:#eee;cursor:pointer;background:#222;border:1px solid #888;margin-top:12px;padding:8px 12px}.grimvault-identity-panel input{box-sizing:border-box;color:#eee;background:#050505;border:1px solid #555;width:100%;margin-top:12px;padding:8px}.grimvault-identity-muted{color:#aaa;font-size:13px}.grimvault-identity-error{color:#ff8a8a;white-space:pre-wrap;margin-top:12px}
