/* Controls belong to the active cabinet and are removed with its screen. */
.arcade-controls { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; max-width:960px; margin:0 auto; padding:12px 16px max(14px,env(safe-area-inset-bottom)); background:#10161d; border-top:1px solid #34444b; }
.arcade-control-hint { flex:0 0 100%; margin:0 0 4px; text-align:center; font:13px/1.45 monospace; color:#d8e4df; }
.arcade-controls button { min-width:80px; min-height:46px; padding:10px 14px; border:1px solid #6a858b; border-radius:7px; color:#f0f4e6; background:#1d303a; font:700 13px/1.2 monospace; cursor:pointer; touch-action:none; user-select:none; }
.arcade-controls button:active { background:#385647; color:#caffae; transform:translateY(1px); }
.arcade-controls button:focus-visible { outline:3px solid #ffe680; outline-offset:2px; }
@media (max-width:760px) { body.playing:has(#mount + .arcade-controls) #mount { height:auto; aspect-ratio:16/9; min-height:200px; max-height:none; } .arcade-controls { gap:7px; padding:10px; } .arcade-controls button { flex:1 0 auto; min-width:64px; } }
@media (max-height:500px) and (orientation:landscape) { body.playing:has(#mount + .arcade-controls) #mount { height:calc(100dvh - 150px); } .arcade-controls { padding:6px; gap:5px; } .arcade-control-hint { display:none; } .arcade-controls button { min-height:40px; padding:8px; } }

/* The coin app has one action surface below its pixel chart. */
body.playing:has(#mount .coin-session) #mount { box-sizing:border-box; width:min(100%,960px); height:auto; aspect-ratio:auto; max-height:none; min-height:0; margin:0 auto; }
body.playing:has(#mount .coin-session) .stage-wrap { height:auto; min-height:0; padding-bottom:24px; }
.tape-books { box-sizing:border-box; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; max-width:960px; margin:0 auto; padding:12px 16px; background:#101c24; border-top:1px solid #45606b; font:14px/1.45 system-ui,sans-serif; }
.tape-books dt { margin:0 0 3px; color:#c5d5db; font-size:13px; }
.tape-books dd { margin:0; color:#b7ffd0; font-size:18px; font-weight:700; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.tape-controls { align-items:start; gap:12px; padding-top:12px; }
.tape-controls .arcade-control-hint { display:none; }
.tape-controls button { font-family:system-ui,sans-serif; font-size:14px; }
.tape-amount-row { flex:1 0 100%; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:6px 10px; align-items:center; }
.tape-amount-row[hidden] { display:none; }
.tape-amount-row label { grid-column:1 / -1; color:#c5d5db; font:13px/1.4 system-ui,sans-serif; }
.tape-currency { display:flex; align-items:center; gap:8px; border:1px solid #6a858b; border-radius:7px; padding:0 12px; color:#c5d5db; font:18px/1.3 system-ui,sans-serif; background:#09131c; }
.tape-currency:focus-within { outline:2px solid #b7ffd0; outline-offset:2px; }
.tape-currency input { box-sizing:border-box; width:100%; min-width:0; min-height:46px; padding:8px 0; border:0; outline:none; color:#f0f4e6; background:transparent; font:18px/1.3 system-ui,sans-serif; }
.tape-controls .tape-use-all { min-width:0; min-height:46px; padding:8px; background:none; border:0; color:#b7ffd0; text-decoration:underline; text-underline-offset:3px; }
.tape-primary { display:flex; flex:1 0 100%; gap:10px; }
.tape-primary button { flex:1; min-height:48px; }
.tape-primary button:first-child { color:#092818; background:#a5efb8; border-color:#c0ffcf; font-weight:750; }
.tape-controls button:disabled { cursor:default; opacity:.45; }
.tape-status { flex:1 0 100%; margin:0; color:#b7ffd0; font:14px/1.45 system-ui,sans-serif; }
.tape-status[hidden] { display:none; }
.tape-funding { flex:1 0 100%; color:#c5d5db; font:14px/1.45 system-ui,sans-serif; }
.tape-funding summary { cursor:pointer; box-sizing:border-box; min-height:44px; padding:12px 0; }
.tape-funding p { max-width:680px; margin:8px 0 12px; }
.tape-funding button { margin:0 6px 6px 0; }
@media (max-width:520px) { .tape-books { padding:12px; } .tape-primary { gap:7px; } }
/* Each device borrows this same view. The world layout is never its container. */
.coin-session { box-sizing:border-box; width:100%; max-width:960px; min-width:0; margin:0 auto; color:#edf5ed; background:#101c24; }
.coin-chart-mount { box-sizing:border-box; width:100%; height:auto; min-height:0; aspect-ratio:480/208; overflow:hidden; }
.coin-chart-mount canvas { display:block; width:100%; height:100%; }
.coin-session .tape-books, .coin-session .tape-controls { width:100%; max-width:none; }
.tape-funding-review { padding:12px; border:1px solid #89b5a0; border-radius:6px; background:#142c2a; }
.tape-funding-review[hidden] { display:none; }
.coin-session .tape-funding button { min-height:44px; }
@media (max-height:500px) and (min-width:760px) {
  #mount .coin-session, #desk .coin-session { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); grid-template-rows:auto 1fr; align-items:start; }
  .coin-session .coin-chart-mount { grid-column:1; grid-row:1; }
  .coin-session .tape-books { grid-column:1; grid-row:2; padding:10px; }
  .coin-session .tape-controls { grid-column:2; grid-row:1 / span 2; gap:8px; padding:8px; min-width:0; }
  .coin-session .tape-controls button { min-height:44px; }
  .coin-session .tape-primary button { min-height:48px; }
}
/* A laptop browser has room for a chart beside its actions, even when its
   physical screen is short. Phones keep one column. */
.finance-market { container-type:inline-size; }
@container (min-width:540px) {
  #desk .coin-session { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); grid-template-rows:auto 1fr; align-items:start; }
  #desk .coin-chart-mount { grid-column:1; grid-row:1; }
  #desk .tape-books { grid-column:1; grid-row:2; padding:10px; }
  #desk .tape-controls { grid-column:2; grid-row:1 / span 2; padding:10px; gap:8px; min-width:0; }
}

/* World dimensions are independent of control visibility. Controls overlay corners. */
body.playing:has(.rpg-stage) .foot{display:none}
body.playing .stage-wrap.rpg-stage{position:fixed;inset:var(--rpg-top,70px) 0 0;box-sizing:border-box;width:100%;height:auto;min-height:0;max-height:none;margin:0;padding:0;display:block;overflow:hidden}
body.playing #mount.rpg-mount{position:absolute;inset:48px 0 0;box-sizing:border-box;width:100%;height:calc(100% - 48px);min-height:0;max-height:none;max-width:none;margin:0;aspect-ratio:auto}
.rpg-view-bar{position:absolute;z-index:3;inset:0 0 auto;height:48px;box-sizing:border-box;display:flex;gap:8px;align-items:center;justify-content:space-between;padding:2px 12px;background:#101c23ee}
.rpg-balances{flex:1;min-width:0;font:13px/1.25 system-ui,sans-serif;color:#e2ece7;overflow-wrap:anywhere}
.rpg-panel-toggle,.rpg-shortcuts-toggle{flex:none;min-height:44px;padding:7px 10px;border:1px solid #78929a;border-radius:5px;color:#e9f5ed;background:#172b34;font:13px system-ui,sans-serif;cursor:pointer}
.rpg-panel-toggle:focus-visible,.rpg-shortcuts-toggle:focus-visible{outline:2px solid #ffe680;outline-offset:2px}
.rpg-stage>.rpg-panel{position:absolute;inset:48px 0 0;z-index:2;box-sizing:border-box;width:auto;min-width:0;min-height:0;max-width:none;max-height:none;margin:0;padding:0;border:0;background:none;color:#f4ece0;font:15px/1.4 system-ui,sans-serif;display:block;pointer-events:none}
.rpg-stage>.rpg-panel[hidden]{display:none}
.rpg-panel button{box-sizing:border-box;min-height:44px;padding:8px 10px;border:1px solid #76838b;border-radius:8px;background:#20323bed;color:#fff;font:inherit;cursor:pointer;touch-action:manipulation;pointer-events:auto}
.rpg-panel button:hover,.rpg-panel button:focus-visible{background:#355362;outline:2px solid #ffe680;outline-offset:1px}
.rpg-dialogue{display:flex;flex-direction:column;gap:8px;min-height:0;min-width:0}
.rpg-panel[data-mode="explore"] .rpg-dialogue{position:absolute;top:8px;left:12px;max-width:min(340px,calc(100% - 24px));max-height:104px;overflow:hidden;padding:8px 10px;box-sizing:border-box;border-radius:8px;background:#10202bd9;font-size:13px}
.rpg-heading{flex:none;color:#e8d7a2;font-weight:700}.rpg-narrative{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;overflow-wrap:anywhere}.rpg-narrative p{margin:0 0 8px}.rpg-route{color:#b0d9ce}
.rpg-choices{display:grid;grid-template-columns:minmax(0,1fr);flex:none;gap:6px}.rpg-choices button{width:100%;text-align:left}
.rpg-controls{position:absolute;inset:auto max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));display:flex;align-items:end;justify-content:space-between;gap:16px;margin:0;padding:0;border:0}
.rpg-pad{flex:none;display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(2,44px);gap:4px}.rpg-pad button{padding:4px;touch-action:none}.rpg-pad [data-move="arrowup"]{grid-column:2}.rpg-pad [data-move="arrowleft"],.rpg-pad [data-move="arrowdown"],.rpg-pad [data-move="arrowright"]{grid-row:2}
.rpg-action{flex:none;width:clamp(130px,20vw,220px);max-width:calc(100% - 156px);min-width:0;min-height:56px!important}
.rpg-stage .rpg-community-links{display:none;position:absolute;right:12px;top:8px;width:min(300px,calc(100% - 24px));padding:8px;background:#10202bf5;border:1px solid #78929a;border-radius:8px;gap:6px;pointer-events:auto}
.rpg-stage.rpg-shortcuts .rpg-community-links{display:grid}.rpg-community-links button{font-size:14px;text-align:left}.rpg-guide{display:none}
.rpg-stage>.rpg-panel[data-mode="conversation"]{inset:auto 12px max(12px,env(safe-area-inset-bottom)) auto;width:min(420px,calc(100% - 24px));max-height:calc(100% - 66px);padding:14px;border:1px solid #7e9699;border-radius:12px;background:#101d24f5;display:flex;flex-direction:column;pointer-events:auto;overflow:hidden}
.rpg-panel[data-mode="conversation"] .rpg-dialogue{flex:1;min-height:0}.rpg-panel[data-mode="conversation"] .rpg-controls,.rpg-panel[data-mode="conversation"] .rpg-community-links,.rpg-panel[data-mode="conversation"] .rpg-guide{display:none}
@media(max-width:600px){.rpg-view-bar{gap:5px;padding-inline:8px}.rpg-balances{font-size:11px}.rpg-panel-toggle,.rpg-shortcuts-toggle{font-size:12px;padding-inline:7px}.rpg-controls{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));gap:8px}.rpg-action{font-size:13px}.rpg-panel[data-mode="explore"] .rpg-dialogue{font-size:12px;left:8px;max-width:calc(100% - 16px)}}
@media(max-height:500px){.rpg-stage>.rpg-panel[data-mode="conversation"]{padding:10px;font-size:13px}.rpg-dialogue{gap:5px}.rpg-narrative p{margin-bottom:5px}.rpg-choices{gap:4px}.rpg-choices button{padding:5px 8px}.rpg-panel[data-mode="explore"] .rpg-dialogue{max-width:260px;max-height:62px;font-size:12px}}

.rpg-controls,.rpg-view-bar{-webkit-user-select:none;user-select:none}

/* Device entries travel with the world actions and disappear together with H. */
.rpg-tools{flex:none;display:grid;gap:6px;width:clamp(138px,24vw,236px);max-width:calc(100% - 148px);min-width:0}
.rpg-tools .rpg-action{width:100%;max-width:none;min-height:48px!important}
.rpg-tools .device-cluster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;border:0;background:none}
.rpg-tools #phone-fab,.rpg-tools #desk-fab{justify-content:center;flex-direction:column;gap:3px;width:100%;min-width:0;min-height:48px;padding:5px 3px;border:1px solid #76838b;border-radius:8px;color:#e8f5f3;background:#20323bed;font:12px/1.1 system-ui,sans-serif;letter-spacing:0;touch-action:manipulation}
.rpg-tools #phone-fab span,.rpg-tools #desk-fab span{font:inherit;white-space:nowrap}
.rpg-tools kbd{font:inherit;opacity:.75}.rpg-tools .fab-glyph{width:16px;height:16px}
@media(max-width:360px){.rpg-tools{width:138px;max-width:calc(100% - 146px)}.rpg-tools #phone-fab,.rpg-tools #desk-fab{font-size:11px}.rpg-tools .rpg-action{font-size:12px}}

/* Exploration text has an explicit expandable reading area, never a clipped tail. */
.rpg-panel[data-mode="explore"] .rpg-dialogue{max-height:none;overflow:visible;gap:3px;pointer-events:auto}
.rpg-room-info{min-width:0}.rpg-room-info summary{box-sizing:border-box;min-height:44px;display:flex;align-items:center;gap:6px;cursor:pointer;color:#b8ddcd;font:600 13px/1.3 system-ui,sans-serif;list-style:none}
.rpg-room-info summary::before{content:'▸';flex:none}.rpg-room-info[open] summary::before{content:'▾'}
.rpg-room-info summary:focus-visible{outline:2px solid #ffe680;outline-offset:1px}
.rpg-room-info .rpg-narrative{max-height:min(150px,25dvh);overflow-y:auto;overscroll-behavior:contain;padding-right:3px;font-size:13px;line-height:1.45}
.rpg-room-info:not([open]) .rpg-narrative{display:none}.rpg-room-info .rpg-route{padding-bottom:6px}.rpg-sauna-clock{flex:none;font:13px/1.4 system-ui,sans-serif}
@media(max-height:500px){.rpg-room-info .rpg-narrative{max-height:80px}.rpg-panel[data-mode="explore"] .rpg-dialogue{max-width:280px;max-height:none}}

.rpg-nav-toggle{flex:none;min-height:44px;padding:7px 9px;border:1px solid #78929a;border-radius:5px;color:#e9f5ed;background:#172b34;font:12px system-ui,sans-serif;cursor:pointer}.rpg-nav-toggle:focus-visible{outline:2px solid #ffe680;outline-offset:2px}
.rpg-mount .pixel-screen{border:1px solid #52645f!important;border-radius:6px!important;box-shadow:none!important}.rpg-mount .pixel-screen:focus-visible{outline:2px solid #efdda5;outline-offset:-3px}
#fullscreen-exit{position:fixed;z-index:110;top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));min-height:44px;padding:8px 12px;border:1px solid #a0b5a7;border-radius:8px;background:#182d2be8;color:#f4f3e6;font:600 13px system-ui,sans-serif;cursor:pointer}#fullscreen-exit[hidden]{display:none}
body.immersive-view .top,body.immersive-view .rpg-view-bar,body.immersive-view #world-nav-show,body.immersive-view .rpg-panel[data-mode="explore"] .rpg-dialogue{display:none!important}
body.immersive-view.playing .stage-wrap.rpg-stage{inset:0!important}body.immersive-view.playing #mount.rpg-mount{inset:0!important;height:100%!important}body.immersive-view .rpg-stage>.rpg-panel[data-mode="explore"]{inset:0}
body.immersive-view .rpg-mount .pixel-screen{border:0!important;border-radius:0!important}body.immersive-view .tesla-interior{top:0}
.top .rpg-nav-toggle{min-height:44px;font:12px system-ui,sans-serif}.immersive-view #fullscreen-exit:focus-visible{outline:2px solid #efdda5;outline-offset:2px}

.top #fullscreen-btn{flex:none;min-height:44px;max-width:100px;padding:6px 8px;border:1px solid #78929a;border-radius:5px;color:#e9f5ed;background:#172b34;font:12px/1.2 system-ui,sans-serif;cursor:pointer}.top #fullscreen-btn:focus-visible{outline:2px solid #ffe680;outline-offset:2px}
@media(max-width:600px){.top .hud-right{gap:5px}.top .rpg-nav-toggle,.top #fullscreen-btn{font-size:11px;padding:5px 6px;max-width:88px}}
body.playing #mount.rpg-mount{border:1px solid #52645f;border-radius:6px;box-shadow:none}.rpg-mount .pixel-screen{border:0!important}body.immersive-view.playing #mount.rpg-mount{border:0;border-radius:0}

.rpg-walk-status{position:absolute;left:50%;top:8px;transform:translateX(-50%);max-width:min(320px,calc(100% - 24px));padding:7px 10px;border-radius:7px;background:#142a32e8;color:#f1ecd8;font:13px/1.35 system-ui,sans-serif;pointer-events:none}.rpg-walk-status:empty{display:none}

/* One global HUD; world controls float without consuming a second header row. */
body:has(.rpg-stage) .top{display:flex;align-items:center;gap:8px;min-height:56px;height:56px;padding:4px 10px;box-sizing:border-box;flex-wrap:nowrap}
body:has(.rpg-stage) .top>.brand{display:none}
body:has(.rpg-stage) .top>.hud-right{flex:none;flex-wrap:nowrap;gap:5px}
body:has(.rpg-stage) .rpg-balances{position:relative;flex:1;min-width:0;color:#e2ece7;font:13px/1.35 system-ui,sans-serif}
.rpg-balances>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;list-style:none;white-space:normal;font:inherit}
.rpg-balances>summary::after{content:'▾';margin-left:7px}.rpg-balances[open]>summary::after{content:'▴'}
.rpg-balances>summary:focus-visible{outline:2px solid #efdda5;outline-offset:1px}
.rpg-balance-details{position:absolute;z-index:120;top:calc(100% + 6px);left:0;width:min(340px,calc(100vw - 24px));padding:14px;box-sizing:border-box;border:1px solid #758e86;border-radius:10px;background:#142724;box-shadow:0 8px 24px #0008;font:14px/1.5 system-ui,sans-serif}
.rpg-balance-details>div{display:flex;justify-content:space-between;gap:14px}.rpg-balance-details strong{display:inline;color:#f4edd3;font:600 14px/1.5 system-ui,sans-serif}.rpg-balance-details p{font-size:12px;line-height:1.45;color:#c2d0c6;margin:10px 0 0}
body.playing #mount.rpg-mount{inset:0;height:100%}
.rpg-stage>.rpg-panel[data-mode="explore"]{inset:0}
.rpg-stage>.rpg-view-bar{inset:auto auto max(112px,calc(env(safe-area-inset-bottom) + 112px)) max(12px,env(safe-area-inset-left));width:140px;height:auto;padding:0;background:none;display:flex;gap:4px;z-index:4}
.rpg-view-bar .rpg-panel-toggle,.rpg-view-bar .rpg-shortcuts-toggle{min-width:0;flex:1;padding:6px 4px;font-size:12px;line-height:1.2}
body.immersive-view .rpg-stage>.rpg-view-bar{display:flex!important}
body.world-nav-hidden:has(.rpg-stage) #world-nav-show{top:max(8px,env(safe-area-inset-top))}
@media(max-width:600px){body:has(.rpg-stage) .top{gap:5px;padding-inline:8px}body:has(.rpg-stage) .rpg-balances{font-size:12px}.rpg-stage>.rpg-view-bar{left:max(8px,env(safe-area-inset-left))}.top .rpg-nav-toggle{font-size:12px;max-width:none;white-space:nowrap}}
body.world-nav-hidden:has(.rpg-stage) .top{display:none}
.rpg-stage:has(.rpg-panel[data-mode="conversation"])>.rpg-view-bar{top:8px;bottom:auto;left:auto;right:8px;width:180px}

/* While a device is foreground, its native launch/switch controls stay reachable. */
body:is(.phone-out,.desk-out) .top{display:flex!important}
body:is(.phone-out,.desk-out) .top .rpg-nav-toggle,
body:is(.phone-out,.desk-out) #world-nav-show{display:none!important}
body:is(.phone-out,.desk-out) .top .device-cluster{display:flex;gap:4px;flex:none;background:none;border:0}
body:is(.phone-out,.desk-out) .top .device-cluster button{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:44px;min-height:44px;padding:4px;border:1px solid #76838b;border-radius:6px;font:10px/1.1 system-ui,sans-serif}
body:is(.phone-out,.desk-out) .top .device-cluster button span{font:inherit;white-space:nowrap}
body:is(.phone-out,.desk-out) .top .device-cluster .fab-glyph{width:15px;height:15px}
body:is(.phone-out,.desk-out) .top .rpg-balances>summary{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block;line-height:44px}

/* Leveraged reviews cover only the active trading surface and scroll internally. */
.coin-session:has(.tape-leverage) { position:relative; }
.tape-leverage { flex:1 0 100%; display:grid; grid-template-columns:auto minmax(0,1fr); gap:4px 8px; align-items:center; min-width:0; font:13px/1.35 system-ui,sans-serif; }
.tape-leverage label { color:#d8e4df; }
.tape-leverage select { min-width:0; width:100%; height:44px; padding:7px; color:#edf5ed; background:#182f38; border:1px solid #6a858b; border-radius:6px; font:inherit; }
.tape-leverage-summary { grid-column:1/-1; margin:0; font-size:12px; line-height:1.35; color:#d5e5dd; overflow-wrap:anywhere; }
.tape-leverage-review { position:absolute; inset:0; z-index:6; box-sizing:border-box; overflow:auto; overscroll-behavior:contain; padding:16px; background:#10241e; border:1px solid #90c9a9; color:#edf5ed; font:16px/1.6 system-ui,sans-serif; }
.tape-leverage-review[hidden] { display:none; }
.tape-leverage-review p { margin:0 0 16px; }
.coin-session .tape-leverage-review button { min-height:44px; margin:4px; font:700 15px/1.3 system-ui,sans-serif; touch-action:manipulation; }
.tape-leverage select:focus-visible { outline:3px solid #ffe680; outline-offset:2px; }
@media(max-height:500px) { #phone .finance-coin .coin-session .tape-controls,#desk .finance-coin .coin-session .tape-controls { display:flex; align-content:flex-start; overflow:auto; max-height:100%; box-sizing:border-box; } }
:is(#phone,#desk) .finance-coin .coin-session .tape-controls .tape-status:not([hidden]) { position:static; inset:auto; text-align:left; font-size:12px; line-height:1.4; margin:4px 0; }
