/* Shared Bocha Jev console skin. Game canvases keep their own rendering palette. */
:root{color-scheme:dark;--bg:#080d18;--panel:#111c2b;--line:#2a3a50;--muted:#a2b2c8;--green:#87f5de;--mint:#87f5de;--accent:#87f5de}
body[data-game]{background:radial-gradient(ellipse at 14% 0%,#152b4655,transparent 55%),#080d18;color:#e9f0fb;font-family:Inter,"SF Pro Display","PingFang SC",system-ui,sans-serif}
body[data-game] main{--sidebar-width:320px;--workspace-gap:20px}
body[data-game] h1{font-size:clamp(23px,2.3vw,32px);line-height:1.3;letter-spacing:-.8px;font-weight:600}
body[data-game] .eyebrow{display:block;color:#87f5de;font:11px/1.5 ui-monospace,SFMono-Regular,monospace;letter-spacing:1.7px}
body[data-game] .title-main p{font-size:12px;color:#a2b2c8;line-height:1.6;margin-top:6px}
body[data-game] .page-title{margin:0;min-height:0;align-items:stretch}
body[data-game] .title-main{align-items:center;gap:14px}
body[data-game] .page-title .agent-install{border:1px solid #2a4156;border-radius:8px;background:linear-gradient(115deg,#122839,#111c2d);padding:10px 13px;box-shadow:none}
body[data-game] .agent-install-top label{color:#d7edf7;font-size:12px}
body[data-game] .page-title #copy-agent-prompt{border-color:#3b6571;background:#143c43;color:#a5f6e6;font-size:11px;padding:4px 8px}
body[data-game] .page-title #agent-install-prompt{color:#abc3d4;font-size:11px;height:48px;line-height:1.5}
body[data-game] .page-title .agent-guide{font-size:10px;color:#9fb5c9}
body[data-game] .page-title #agent-copy-status{color:#b4fff0;background:#133c43}
body[data-game] :is(.arena-panel,.arena,.play-arena){border-color:#2a3b50;background:#101b2a;border-radius:10px;box-shadow:0 10px 28px #0003}
body[data-game] .decision-console{min-width:0;background:#0d1624;border:1px solid #2b3d53;border-top:2px solid #70d8cf;border-radius:8px;padding:0 14px 14px;gap:0;scrollbar-width:thin;scrollbar-color:#344d63 transparent}
.console-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;min-height:49px;padding:12px 0;border-bottom:1px solid #2b3d53;margin-bottom:14px}
.console-heading span{font:10px ui-monospace,monospace;letter-spacing:1.4px;color:#86efdf}
.console-heading strong{font-size:14px;font-weight:550;color:#f0f6ff}
body[data-game] .decision-console :is(.panel,.card){flex-shrink:0;border:0;border-radius:0;border-bottom:1px solid #26364b;box-shadow:none;background:transparent;padding:14px 0;margin:0}
body[data-game] .decision-console :is(.panel,.card):last-child{border-bottom:0}
body[data-game] .decision-console :is(.panel,.card):first-of-type{padding-top:0}
body[data-game] .decision-console :is(h2,.panel-heading h2){color:#e6f0ff;font-size:14px;line-height:1.5}
body[data-game] .decision-console p{color:#a5b8cc;font-size:12px;line-height:1.65}
body[data-game] .decision-console :is(.micro,.label,.status,.row,.bar-label,.connection,.decision small,.reading>span,.choice-text,.metrics span,.footnote){font-size:11px;color:#a8bdd1}
body[data-game] .decision-console :is(.decision,.reading,.metrics,.jev-motion,.divider){border-color:#2b3d53}
body[data-game] .decision-console :is(.decision strong,.decision-text strong,.value,.selected .choice-text){color:#91f5e2}
body[data-game] .decision-console :is(.arrow,.direction-grid span,.history span){background:#142e39;border-color:#2c5362;color:#9be9e0}
body[data-game] .decision-console :is(.track,.bar){background:#23374b}
body[data-game] .decision-console :is(.fill.winner,.selected .bar i){background:#86efdf}
body[data-game] .decision-console .ai-pill{border-color:#35606b;color:#94ded8}
body[data-game] :is(button,select){border-color:#34475d;border-radius:5px}
body[data-game] button:not(.primary):not(.primary-button):not(.ai-button):not(#start):not(#auto):not(.game-card){background-color:#172638;color:#d0e3f5}
body[data-game] :is(button.primary,.primary-button,.ai-button,#auto[aria-pressed=true]){background:#88f0dd;color:#072e2c;border-color:#88f0dd;box-shadow:none}
body[data-game] button:hover:not(:disabled){filter:brightness(1.12)}
body[data-game] :is(a,button,select,textarea,canvas):focus-visible{outline:2px solid #8af5e2;outline-offset:3px}
body[data-game] .arena-top{background:#132235;color:#b4c8df;border-bottom:1px solid #293a50;font-size:12px}
body[data-game] :is(.arena-footer,.keyboard-help,.controls-legend){color:#a5b8cf}
body[data-game] kbd{background:#152437;color:#c6d8ec;border-color:#3a4c62}
body[data-game] footer{color:#7e96b0;font-size:10px}
body:is([data-game="fc"],[data-game="battle-city"]) #empty{background:radial-gradient(ellipse at 25% 10%,#27456588,transparent 70%),#0b1523}
body:is([data-game="fc"],[data-game="battle-city"]) .game-card{background:#142538;border-color:#385a73}
body:is([data-game="fc"],[data-game="battle-city"]) .game-card-action{color:#90eadc;border-color:#385a73}
body:is([data-game="fc"],[data-game="battle-city"]) .library-badges span{color:#acc3db;border-color:#36516c}
body:is([data-game="fc"],[data-game="battle-city"]) .decision-console>section:first-of-type h2{font-size:17px}
body[data-game="flight"] .english-title{color:#d3edf8;font-size:25px}
body[data-game="flight"] .decision-console .mode-switch{background:#09121f}
body[data-game="flight"] .decision-console .mode-switch .active{background:#234751;color:#b4fff0}
body[data-game="flight"] .decision-console .metrics strong{color:#defcf6}
body[data-game="blocks"] .board-frame{border-color:#426179;background:#142b3a}
body[data-game="blocks"] .right-column{padding-top:0}
body[data-game="blocks"] .ai-card h2{margin-top:12px}
body[data-game="mario"] .decision-console .reading{padding-top:0;border-top:0}
body[data-game="mario"] .stats{background:#142235;border-color:#304359}
body[data-game="mario"] .round-timer{background:#1c283a;border-color:#43536b}
body[data-game="snake"] .board{background:#0b171e;border-color:#2a4151}
@media(min-width:1001px) and (min-height:650px){
 body[data-game]:not([data-game="lobby"]){height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
 body[data-game]:not([data-game="lobby"])>main{height:auto;flex:1;min-height:0;padding-top:18px;padding-bottom:8px;display:grid;grid-template-rows:92px minmax(0,1fr)24px;gap:16px}
 body[data-game="mario"]>main{grid-template-rows:92px minmax(0,1fr)}
 body[data-game="blocks"]>main{grid-template-rows:92px minmax(0,1fr)28px;padding-bottom:0}
 body[data-game="blocks"]>footer{height:24px;min-height:24px;margin:0 auto;width:calc(100% - 64px);max-width:1376px;padding:4px 0}
 body[data-game] :is(.workspace,.layout,.game-layout){min-height:0;height:auto;display:grid;grid-template-columns:minmax(0,1fr) var(--sidebar-width);gap:var(--workspace-gap);align-items:stretch}
 body[data-game] .decision-console{height:100%;overflow-y:auto;display:flex;flex-direction:column}
 body[data-game="snake"] .hero{margin:0}
 body[data-game="snake"] .arena{min-height:0;display:flex;flex-direction:column;padding:14px 18px}
 body[data-game="snake"] .board{flex:1;min-height:0;width:auto;height:auto;aspect-ratio:1;max-width:100%;align-self:center}
 body[data-game="snake"] .board svg{height:100%;width:auto;max-width:100%;display:block}
 body[data-game="snake"] :is(.scores,.legend,.controls){flex-shrink:0}
 body[data-game="snake"] .foot{margin:0;align-items:center}
 body[data-game="flight"] .canvas-wrap{height:auto;min-height:0;flex:1}
 body[data-game="flight"] .canvas-wrap>canvas{position:absolute;inset:0;width:100%;height:100%}
 body[data-game="blocks"] .game-layout{--board-width:min(calc((100dvh - 330px)/2),340px)}
 body[data-game="blocks"] .play-arena{grid-template-columns:minmax(140px,.7fr) minmax(0,1.3fr);gap:24px;padding:14px 22px}
 body[data-game="blocks"] .left-column{overflow:auto}
 body[data-game="mario"] .play{grid-template-rows:60px minmax(0,1fr)22px 38px;min-height:0}
}
@media(max-width:1000px),(max-height:649px){
 body[data-game]:not([data-game="lobby"]){height:auto;min-height:100dvh;display:block;overflow:auto}
 body[data-game]:not([data-game="lobby"])>main{height:auto;display:block;padding-top:18px;padding-bottom:18px}
 body[data-game] .page-title{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-bottom:18px}
 body[data-game] .page-title .agent-install{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px}
 body[data-game] .agent-install-top{margin:0;grid-column:1/-1}
 body[data-game] .page-title #agent-install-prompt{height:34px}
 body[data-game] .page-title .agent-guide{align-self:center;white-space:nowrap;margin:0}
 body[data-game] :is(.workspace,.layout,.game-layout){display:flex;flex-direction:column;height:auto;gap:16px;min-height:0}
 body[data-game] .decision-console{height:auto;overflow:visible;width:100%;display:block;padding:0 16px 12px}
 body:is([data-game="fc"],[data-game="battle-city"]) .screen{height:55dvh;min-height:300px;flex:none}
 body[data-game="flight"] .canvas-wrap{height:60dvh;min-height:360px;flex:none}
 body[data-game="flight"] .canvas-wrap>canvas{position:absolute;inset:0;width:100%;height:100%}
 body[data-game="snake"] .board{width:min(100%,440px);height:auto;aspect-ratio:1;margin:auto}
 body[data-game="snake"] .arena{padding:16px}
 body[data-game="mario"] .play{display:block}.play .stats{margin-bottom:12px}
 body[data-game="mario"] .canvas-wrap{min-height:180px;max-height:none;aspect-ratio:960/520}
 body[data-game="mario"] .canvas-wrap canvas{height:100%;max-height:none;min-height:0}
 body[data-game="mario"] .controls{flex-wrap:wrap;margin-top:14px}
 body[data-game="blocks"] .play-arena{display:grid;grid-template-columns:minmax(110px,.75fr) minmax(0,1fr);gap:18px;padding:16px}
 body[data-game="blocks"] .board-column{width:min(100%,280px);justify-self:center}
 body[data-game="blocks"] .left-column{padding:0;overflow:visible;max-height:none}
 body[data-game="blocks"] .left-column .card{padding:10px;background:transparent;border:0}
 body[data-game="blocks"] .controls-legend{flex-wrap:wrap;gap:10px;font-size:11px}
 body[data-game="blocks"]>footer{padding:0 16px 14px}
 body[data-game] footer{margin-top:16px;gap:12px;flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
body[data-game] .page-title .agent-install{gap:0;min-height:0}
body[data-game="mario"] .play{min-width:0;width:100%}
body[data-game="mario"] .play .canvas-wrap{min-width:0;width:100%}
body[data-game="mario"] .play canvas{min-width:0;width:100%}
body[data-game="mario"] .decision-console .reading p{min-height:0;margin:10px 0 18px}
body[data-game="mario"] .decision-console details{margin:12px 0}
@media(max-width:1000px),(max-height:649px){body[data-game] .page-title .agent-install{gap:6px 12px}}

/* Installation is a homepage action; game titles occupy the full workspace width. */
body[data-game]:not([data-game="lobby"]) .page-title{grid-template-columns:minmax(0,1fr)}
/* Shared game dock: actions first, one input hint surface below the picture. */
body[data-game] .game-controls{flex-shrink:0;min-width:0;border-top:1px solid #293b51;padding:9px 12px;background:#101b2a}
body[data-game] .game-controls .controls{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin:0;padding:0}
body[data-game] .game-controls .controls button{min-height:34px;padding:7px 12px;font-family:inherit;font-size:12px;line-height:1.4;flex:none;width:auto;margin:0}
body[data-game] .game-controls .keyboard-help{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:8px 0 0;margin:0;font-size:11px;color:#a5b8cf}
body[data-game] .game-controls .keyboard-help>span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
body[data-game] .game-controls kbd{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:2px 4px;margin:0;height:auto;border:1px solid #42566c;border-bottom-width:2px;border-radius:4px;font:10px/1.2 monospace}
body[data-game] .game-controls :is(.touch,.touch-controls,.touch-help,.mobile-bomb){display:none}
body[data-game] .site-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;min-height:24px;margin:0;padding:0;border:0;color:#8da4bd;font:10px/1.5 ui-monospace,monospace;letter-spacing:.5px}
body[data-game] .site-footer>span{display:block}
body[data-game="lobby"] .site-footer{margin-top:16px}
body[data-game="flight"] .game-controls .bomb-button{display:inline-flex;align-items:center;gap:8px}
body[data-game="flight"] .game-controls .bomb-button :is(small,kbd,.equipment-icon){display:none}
body[data-game="flight"] .game-controls .bomb-button strong{font-size:14px}
body[data-game="blocks"] .play-arena{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden}
body[data-game="blocks"] .blocks-stage{display:grid;grid-template-columns:minmax(140px,.7fr) minmax(0,1.3fr);gap:24px;padding:14px 22px;min-height:0;flex:1}
body[data-game="snake"] .game-controls{margin-top:4px}
body[data-game="mario"] .game-controls #status{margin:0;flex-basis:100%;text-align:center;width:100%;font-size:11px}
@media(min-width:1001px) and (min-height:650px){
 body[data-game="mario"]>main,body[data-game="blocks"]>main{grid-template-rows:92px minmax(0,1fr)24px;padding-bottom:8px}
 body[data-game="mario"] .play{grid-template-rows:60px minmax(0,1fr)22px auto}
 body[data-game="blocks"] .game-layout{--board-width:min(calc((100dvh - 386px)/2),320px)}
}
@media(max-width:1000px),(max-height:649px){
 body[data-game] .site-footer{margin-top:16px}
 body[data-game="blocks"] .blocks-stage{grid-template-columns:minmax(100px,.75fr) minmax(0,1fr);gap:14px;padding:14px}
 body[data-game="mario"] .game-controls{margin-top:12px}
}
@media(pointer:coarse){
 body[data-game] .game-controls .keyboard-help{display:none}
 body[data-game] .game-controls :is(.touch,.touch-controls){display:flex;justify-content:center;flex-wrap:wrap;gap:8px;padding:8px 0 0}
 body[data-game] .game-controls :is(.touch,.touch-controls) button{min-width:44px;min-height:44px}
 body[data-game] .game-controls .touch-help{display:block;text-align:center;font-size:11px;color:#a5b8cf;padding-top:8px}
 /* The pulse button in the shared action row works for touch too. */
}

body[data-game] .game-controls .speed-setting{display:flex;align-items:center;gap:8px;margin:0;padding:0;border:0;font-size:11px}

body[data-game] .site-footer{width:100%;max-width:none;margin-inline:0}

/* Game identity is the heading; decision scope aligns with the live inspector. */
body[data-game]:not([data-game="lobby"]) .page-title{grid-template-columns:minmax(0,1fr) var(--sidebar-width);gap:var(--workspace-gap)}
body[data-game]:not([data-game="lobby"]) .page-title h1{font-size:28px;line-height:1.2;margin:5px 0}
body[data-game]:not([data-game="lobby"]) .title-main p{margin:4px 0 0}
.decision-scope{display:flex;flex-direction:column;justify-content:center;gap:9px;min-width:0;padding:4px 0 4px 16px;border-left:1px solid #30465b}
.decision-scope-label{font-size:11px;line-height:1.5;letter-spacing:1px;color:#91a9bf}
.decision-scope ul{display:flex;flex-wrap:wrap;gap:6px 0;list-style:none;margin:0;padding:0;color:#b0e7df;font-size:13px;line-height:1.6}
.decision-scope li{display:inline-flex;align-items:center;white-space:nowrap}
.decision-scope li+li::before{content:'·';color:#597d88;margin:0 9px}
@media(max-width:1000px),(max-height:649px){
 body[data-game]:not([data-game="lobby"]) .page-title{grid-template-columns:1fr;gap:14px}
 .decision-scope{flex-direction:row;align-items:baseline;justify-content:flex-start;gap:12px;border-left:0;border-top:1px solid #26394e;padding:10px 0 0}
 .decision-scope-label{flex-shrink:0;letter-spacing:0}.decision-scope ul{font-size:12px}
}
@media(max-width:560px){body[data-game]:not([data-game="lobby"]) .page-title h1{font-size:24px}.decision-scope{gap:10px}.decision-scope li+li::before{margin:0 6px}}

/* A details element is also first-of-type; retain separation from the decision panel. */
body[data-game] .decision-console details.panel.game-instructions{padding-top:28px}
body[data-game] .decision-console .game-instructions summary{font-size:13px;line-height:1.5;color:#d8e8f8}
body[data-game] .decision-console .game-instructions p{margin:10px 0 0}

/* Read-only model controller display for the three emulated demos. */
body[data-game] .game-controls:has(.model-inputs){display:flex;align-items:center;justify-content:center;padding:12px 16px}
body[data-game] .model-inputs{grid-column:2;grid-row:1;display:flex;align-items:center;justify-content:center;gap:18px;color:#b3c4d7;font-size:11px;min-width:0}
body[data-game] .direction-display{display:flex;align-items:center;gap:9px}
body[data-game] .direction-pad{display:grid;grid-template-columns:repeat(3,24px);grid-template-rows:repeat(2,24px);gap:3px}
body[data-game] .game-controls .direction-pad kbd{width:24px;height:24px;padding:0;font-size:11px}
body[data-game] .direction-pad [data-controller-key="UP"]{grid-column:2;grid-row:1}
body[data-game] .direction-pad [data-controller-key="LEFT"]{grid-column:1;grid-row:2}
body[data-game] .direction-pad [data-controller-key="DOWN"]{grid-column:2;grid-row:2}
body[data-game] .direction-pad [data-controller-key="RIGHT"]{grid-column:3;grid-row:2}
body[data-game] .action-display{display:flex;align-items:center;gap:12px}
body[data-game] .action-display>span{display:flex;flex-direction:column;align-items:center;gap:5px;white-space:nowrap}
body[data-game] .game-controls .action-display kbd{width:24px;height:24px;padding:0;font-size:11px}
body[data-game] .model-only-mode{color:#88f0dd;font-size:12px;margin:0 0 12px}

/* Session tools sit above the picture; model keys stay directly below it. */
body[data-game] .arena-top:has(.demo-toolbar){display:flex;align-items:center;gap:12px;padding:8px 12px;flex-shrink:0;min-width:0}
body[data-game] .arena-top:has(.demo-toolbar) #rom-name{flex:0 1 auto;min-width:0}
body[data-game] .arena-top:has(.demo-toolbar) #status{flex:1;min-width:0;text-align:right;font-size:11px}
body[data-game] .arena-top .demo-toolbar{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;padding:0;margin:0 0 0 6px;flex-shrink:0}
body[data-game] .demo-toolbar button{min-height:32px;padding:6px 9px;margin:0;font-family:inherit;font-size:11px;line-height:1.4;white-space:nowrap}
body[data-game] .demo-toolbar #reset{background:transparent;color:#a5b8cf}
@media(max-width:760px){body[data-game] .arena-top:has(.demo-toolbar){flex-wrap:wrap;gap:8px 12px}body[data-game] .arena-top .demo-toolbar{flex-basis:100%;justify-content:flex-end;margin:0}body[data-game] .arena-top:has(.demo-toolbar) #rom-name{max-width:50%}}

/* Only the flight picture is capped; the surrounding console keeps its grid. */
body[data-game="flight"] .canvas-wrap{background:#05080d}
body[data-game="flight"] .flight-viewport{position:absolute;inset:0;width:min(100%,640px);height:100%;margin-inline:auto;overflow:hidden;background:#0b1417}
body[data-game="flight"] .flight-viewport>canvas{position:absolute;inset:0;width:100%;height:100%}
