/* Player V2: scoped to the ordinary player, never the admin or catalogue. */
/* Desktop uses the full viewport below the site chrome; mobile overrides this with its own surface contract. */
.player-v2 .player-layout{width:min(1280px,calc(100% - 28px));margin:12px auto 32px;display:block}.player-v2 .player-header{gap:14px;min-height:56px;padding:10px 18px}.player-header>a:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:58vw}.player-v2 .player-stage{--control-scale:1;--control-opacity:.9;--control-offset:4px;position:relative;background:#0c1115;border:1px solid #37433d;border-radius:18px;display:grid;grid-template-areas:"screen";grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:min(calc(100dvh - 100px),860px);min-height:260px;overflow:hidden;touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;color:#edf3ed;isolation:isolate}
.player-v2 #emulator{grid-area:screen;width:100%;height:100%;min-height:0;min-width:0;overflow:hidden;position:relative;background:#06090b;contain:size layout}.player-v2 #emulator canvas{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;image-rendering:pixelated;touch-action:none}.player-stage.changing-layout #emulator{visibility:hidden}.player-stage .ejs_menu_bar,.player-stage[data-shared=true] .ejs_virtualGamepad{display:none!important}.player-stage #emulator input[type=range]{padding:0;min-height:0}
.player-v2 .touch-control{display:none;touch-action:none;opacity:var(--control-opacity)}.player-v2 .player-stage[data-controls=true][data-shared=true]{grid-template-areas:"left screen right" "left system right";grid-template-columns:clamp(116px,18%,190px) minmax(0,1fr) clamp(116px,18%,190px);grid-template-rows:minmax(0,1fr) 42px}.player-v2 [data-controls=true][data-shared=true] .touch-control{display:flex}.touch-control.left-control{grid-area:left}.touch-control.right-control{grid-area:right}.player-v2 .left-control,.player-v2 .right-control{align-items:center;justify-content:center;flex-direction:column;padding:12px calc(8px + var(--control-offset));gap:10px;min-width:0}.player-v2 .system-controls{grid-area:system;justify-content:center;align-items:center;gap:12px;padding-bottom:4px}.player-v2 .player-stage button{touch-action:none;border:1px solid #65786d;background:#263730;color:#f4f7f1;border-radius:12px;min-height:36px;padding:6px 12px;line-height:1.1;font-family:inherit;-webkit-tap-highlight-color:transparent}.player-v2 .system-controls button{font-size:11px;min-width:68px;padding:7px 12px;border-radius:30px;min-height:32px}.player-v2 .stage-actions{position:absolute;top:8px;right:8px;z-index:4;display:flex;gap:6px}.player-v2 .stage-actions button{background:#17241de8;min-height:36px;font-size:12px;box-shadow:0 2px 8px #0005}.stage-actions #open-player-menu{font-size:20px;width:40px;padding:4px}.player-v2 .stick{width:min(calc(138px * var(--control-scale)),100%);aspect-ratio:1;border-radius:50%;position:relative;background:radial-gradient(circle,#34493d 0 20%,#203029 65%);border:2px solid #6c8173;touch-action:none;box-shadow:inset 0 2px 8px #0006}.stick:before,.stick:after{content:"";position:absolute;background:#82958555;pointer-events:none}.stick:before{width:2px;height:70%;top:15%;left:50%}.stick:after{height:2px;width:70%;left:15%;top:50%}.player-v2 .stick-thumb{width:44%;height:44%;left:28%;top:28%;position:absolute;border-radius:50%;background:#9bab94;border:2px solid #c9d1bd;box-shadow:0 3px 7px #0008;pointer-events:none;z-index:1}.player-v2 .stick.active .stick-thumb{background:#c9deb6}.stick-cross{display:none}.player-stage[data-stick-style=cross] .stick{border-radius:22%}.player-stage[data-stick-style=cross] .stick-cross{position:absolute;display:grid;place-items:center;inset:0;font-size:80px;color:#8c9d86;pointer-events:none}.player-stage[data-stick-style=cross] .stick-thumb{opacity:.55;width:28%;height:28%;top:36%;left:36%}
.player-v2 .action-buttons{width:min(calc(168px * var(--control-scale)),100%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));aspect-ratio:1;gap:2px;align-items:center}.player-v2 .action-buttons button{width:100%;aspect-ratio:1;min-height:0;padding:0;border-radius:50%;font-size:18px;font-weight:700;box-shadow:0 3px 0 #0006;position:relative}.action-buttons[data-count="4"] [data-button=x]{grid-area:1/2}.action-buttons[data-count="4"] [data-button=y]{grid-area:2/1}.action-buttons[data-count="4"] [data-button=a]{grid-area:2/3}.action-buttons[data-count="4"] [data-button=b]{grid-area:3/2}.player-v2 .action-buttons[data-count="2"]{grid-template-columns:1fr 1fr;grid-template-rows:1fr .65fr;aspect-ratio:1.2;gap:8px}.action-buttons[data-count="2"] [data-button=a]{align-self:start}.action-buttons[data-count="2"] [data-button=b]{align-self:end}.player-v2 .action-buttons .combo-button{grid-column:1/-1;justify-self:center;width:60%;aspect-ratio:auto;height:36px;border-radius:30px;font-size:12px}.player-v2 .action-buttons[data-count="6"]{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);aspect-ratio:1.5;gap:5px}.player-v2 .shoulder-buttons{display:flex;justify-content:center;gap:8px;width:100%}.player-v2 .shoulder-buttons button{flex:1;max-width:72px}.player-v2 .player-stage .pressed{background:#d6e7b9!important;color:#17221a!important;border-color:#effada;box-shadow:none}
.player-v2 .launch-panel{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f1f2e9;color:#29382e;padding:24px;text-align:center;gap:12px}.player-v2 .launch-panel h1{font-size:clamp(22px,4vw,42px);max-width:750px;line-height:1.15;margin:0}.player-v2 .launch-panel p{margin:0;max-width:640px}.player-v2 .launch-panel button{background:#385744;color:#fff;font-size:15px;padding:12px 18px;min-height:44px}.player-v2 .launch-buttons{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.player-v2 .launch-panel progress{width:min(430px,90%);height:10px;accent-color:#486c49}.player-v2 #load-detail{min-height:24px;font-size:12px;overflow-wrap:anywhere}.player-v2 #load-phase{font-size:14px}.player-v2 .player-toolbar{display:flex;gap:8px;flex-wrap:wrap;padding:12px 0}.player-v2 .player-toolbar>*{font-size:12px}.player-v2 .player-status{display:flex;justify-content:space-between;gap:12px;font-size:12px;flex-wrap:wrap;padding:12px 0}.player-v2 .player-help{font-size:13px;border-top:1px solid #ced4c4;padding:12px 0}.player-v2 .player-help summary{cursor:pointer;min-height:38px}.runtime-choice{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.runtime-choice label{display:flex;flex-direction:column;gap:6px}.player-menu label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0;font-size:14px}.player-menu label input[type=range]{width:60%;padding:0;min-height:24px}.player-menu label input[type=checkbox]{width:20px;min-height:20px}.player-menu select{max-width:65%}.menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.player-v2 .progress-dialog{max-height:calc(100dvh - 32px);width:min(700px,calc(100vw - 24px));padding:24px;overflow:auto}.player-v2 .snapshot-row>div:last-child{display:flex;flex-wrap:wrap;gap:6px}.player-v2 #game-save-section,.player-v2 #old-snapshots{padding-top:16px;margin-top:16px;border-top:1px solid #cbd4c5}
body.player-immersive{overflow:hidden}.player-immersive #player-stage,.player-v2 #player-stage:fullscreen{position:fixed;left:var(--player-left,0);top:var(--player-top,0);width:var(--player-vw,100vw);height:var(--player-vh,100dvh);max-height:none;border:0;border-radius:0;z-index:1000;padding:max(0px,env(safe-area-inset-top)) max(0px,env(safe-area-inset-right)) max(0px,env(safe-area-inset-bottom)) max(0px,env(safe-area-inset-left));min-height:0}.player-v2 #player-stage:fullscreen{left:0;top:0;width:100vw;height:100dvh}.player-immersive .recovery-question:not([hidden]){position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);max-width:90vw;width:450px;z-index:1001;background:#f3f6eb;padding:18px;box-shadow:0 12px 60px #0008}.player-v2 [hidden]{display:none!important}
@media(max-width:650px){.player-v2 .player-header{font-size:11px;min-height:46px;gap:8px;padding:8px 12px}.player-v2 .player-brand,.player-v2 #gamepad-status{display:none}.player-v2 .player-layout{width:100%;margin-top:0}.player-v2 .player-stage{border-radius:0;border-inline:0}.player-v2 .player-stage[data-orientation=portrait][data-controls=true][data-shared=true]{grid-template-areas:"screen screen" "system system" "left right";grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) 38px clamp(170px,29dvh,240px);height:min(80dvh,820px);min-height:440px}.player-v2 .player-stage .left-control,.player-v2 .player-stage .right-control{padding:6px calc(12px + var(--control-offset))}.player-v2 .launch-panel{padding:16px}.player-v2 .player-toolbar>*{padding:8px 10px;min-height:40px}.player-v2 .progress-dialog{padding:18px}}
@media(orientation:landscape) and (max-height:540px){.player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true]{grid-template-columns:clamp(110px,18%,168px) minmax(0,1fr) clamp(110px,18%,168px);grid-template-rows:minmax(0,1fr) 36px;min-height:210px;height:calc(var(--player-vh,100dvh) - 70px)}.player-v2 .left-control,.player-v2 .right-control{padding:4px calc(8px + var(--control-offset));gap:4px}.player-v2 .stick{width:min(calc(120px * var(--control-scale)),100%)}.player-v2 .action-buttons{width:min(calc(146px * var(--control-scale)),100%)}.player-v2 .action-buttons button{font-size:16px}.player-v2 .shoulder-buttons button{min-height:30px;padding:4px}.player-v2 .system-controls button{min-height:30px}.player-v2 .stage-actions{top:4px;right:4px}.player-v2 .player-header{min-height:42px}.player-v2 .launch-panel{padding:12px;gap:6px}.player-v2 .launch-panel h1{font-size:22px}.player-v2 .launch-panel .quiet{font-size:11px}.player-v2 .launch-panel button{min-height:40px}.player-immersive #player-stage[data-orientation=landscape]{height:var(--player-vh,100dvh);min-height:0}}

/* Recovery remains actionable in native fullscreen and immersive mode. */
.player-v2 .player-stage .recovery-question:not([hidden]){position:absolute;left:50%;top:auto;bottom:max(8px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(480px,calc(100% - 24px));max-width:none;max-height:calc(100% - 16px);overflow:auto;z-index:7;background:#f3f6eb;color:#24372a;padding:12px 16px;box-shadow:0 8px 30px #0008;border-radius:12px;font-size:13px}.player-v2 .player-stage .recovery-question p{margin:0 0 8px}.player-v2 .player-stage .recovery-question button{min-height:36px;font-size:12px}

/* Display controls stay reachable before startup and in short landscape views. */
.player-v2 .stage-actions{z-index:7;max-width:calc(100% - 16px)}
.player-v2 .stage-actions button{min-height:44px}
.player-v2 .launch-panel{padding-top:64px}
.player-immersive #immersive-game,.player-immersive #fullscreen-game,#player-stage:fullscreen #immersive-game,#player-stage:fullscreen #fullscreen-game{display:none}
.keyboard-bindings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 20px}
.keyboard-bindings>div{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0}
.keyboard-bindings button{min-width:72px;min-height:44px;overflow-wrap:anywhere}
.player-menu fieldset{min-width:0;margin:16px 0}
.player-menu p[role=status]:empty{display:none}
@media(max-width:400px){.keyboard-bindings{grid-template-columns:1fr}}

/* Make the two most important states visible without opening a menu. */
.player-v2 .resume-overlay{position:absolute;z-index:5;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;background:#17241de8;border:1px solid #b9d0b5;border-radius:999px;padding:14px 22px;min-height:58px;color:#f5faef;font-size:15px;font-weight:700;box-shadow:0 8px 28px #0009;backdrop-filter:blur(5px)}
.player-v2 .resume-overlay:hover,.player-v2 .resume-overlay:focus-visible{background:#2b513b;transform:translate(-50%,-50%) scale(1.03)}
.player-v2 .resume-overlay-icon{font-size:24px;line-height:1}
.player-v2 .runtime-badge{border:1px solid #53685a;border-radius:999px;padding:4px 9px;color:#cbd9c8;font-size:11px;white-space:nowrap}
.player-v2 .control-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid #3d5144;border-radius:10px;background:#111b16;color:#d8e4d5;font-size:12px}
.player-v2 .control-summary strong{color:#f3f8ed}.player-v2 .control-summary span{flex:1;min-width:220px;color:#b7c7b4}.player-v2 .control-summary button{min-height:32px;padding:5px 10px;font-size:11px}
@media(max-width:650px){.player-v2 .control-summary{align-items:flex-start}.player-v2 .control-summary span{flex-basis:100%;min-width:0}.player-v2 .resume-overlay{min-height:54px;padding:12px 18px}}

/* Mobile uses one game surface with controls layered over its safe edges. */
@media(pointer:coarse),(max-width:650px){
  .player-v2 .player-stage[data-orientation][data-controls=true][data-shared=true]{display:block;height:calc(var(--player-vh,100dvh) - 70px);min-height:0;max-height:none}
  .player-v2 .player-stage[data-controls=true][data-shared=true] #emulator{position:absolute;inset:0;width:100%;height:100%}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .touch-control{position:absolute;z-index:3;display:flex;grid-area:auto}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .left-control{left:max(calc(10px + var(--control-offset)),env(safe-area-inset-left));bottom:max(calc(14px + var(--control-offset)),env(safe-area-inset-bottom));width:35%;height:35%;padding:0;align-items:flex-start;justify-content:flex-end}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .right-control{right:max(calc(10px + var(--control-offset)),env(safe-area-inset-right));bottom:max(calc(14px + var(--control-offset)),env(safe-area-inset-bottom));width:35%;height:35%;padding:0;align-items:flex-end;justify-content:flex-end}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .system-controls{left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translateX(-50%);height:42px;padding:0;gap:8px;justify-content:center}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .stick{width:min(calc(34vw * var(--control-scale)),calc(138px * var(--control-scale)),calc(50vw - 46px));max-width:none}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .action-buttons{width:min(calc(38vw * var(--control-scale)),calc(168px * var(--control-scale)),calc(50vw - 24px));min-width:140px;max-width:none}
  .player-v2 .player-stage[data-controls=true][data-shared=true] .shoulder-buttons{width:min(calc(38vw * var(--control-scale)),calc(168px * var(--control-scale)),calc(50vw - 24px));min-width:140px;max-width:none}
}

/* Runtime tools live in the pause menu on touch screens. Keep live status
   available to assistive technology without taking space from the game. */
.player-v2 .recording-indicator{align-self:center;color:#fff;background:#8b2424;padding:7px 10px;border-radius:20px;font-size:12px}
.player-v2 .player-status #runtime-badge{display:none}
@media(pointer:coarse),(max-width:650px){
  .player-v2 #player-app[data-player-state=running] .player-toolbar,
  .player-v2 #player-app[data-player-state=paused] .player-toolbar,
  .player-v2 #player-app[data-player-state=running] .control-summary,
  .player-v2 #player-app[data-player-state=paused] .control-summary,
  .player-v2 #player-app[data-player-state=running] .player-footnote,
  .player-v2 #player-app[data-player-state=paused] .player-footnote{display:none}
  .player-v2 #player-app[data-player-state=running] .player-status,
  .player-v2 #player-app[data-player-state=paused] .player-status{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%)}
  .player-v2 .player-stage .touch-control button{min-height:44px}
  .player-v2 .player-stage .system-controls button{min-width:56px}
  .player-v2 .stage-actions #exit-immersive{width:44px;padding:0;font-size:0}
  .player-v2 .stage-actions #exit-immersive::before{content:'×';font-size:26px;line-height:1}
  .player-immersive #player-stage[data-orientation][data-controls=true][data-shared=true]{height:var(--player-vh,100dvh)}
}

.player-v2 .keyboard-onboarding{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:#07100dcc;color:#f3f8ed;padding:24px;backdrop-filter:blur(2px)}
.player-v2 .keyboard-onboarding-card{width:min(520px,100%);padding:28px;border:1px solid #7d927e;border-radius:16px;background:#18261eeF;box-shadow:0 18px 60px #000a;text-align:center}
.player-v2 .keyboard-onboarding-card .eyebrow{color:#b9cdb1;margin-bottom:22px}.binding-diagram{display:flex;align-items:center;justify-content:center;gap:48px;margin:10px 0 22px}.binding-direction,.binding-actions{display:flex;align-items:center;gap:5px}.binding-direction{flex-direction:column}.binding-direction>div{display:flex;gap:5px}.binding-direction span,.binding-actions span{font-size:11px;color:#b9cdb1}.binding-actions{gap:12px}.binding-actions>div{display:flex;flex-direction:column;align-items:center;gap:4px}.player-v2 .keyboard-onboarding kbd{display:inline-grid;place-items:center;min-width:38px;height:38px;padding:0 8px;border:1px solid #879b86;border-radius:7px;background:#34483a;color:#f8fbf2;font:700 15px/1 ui-monospace,SFMono-Regular,monospace;box-shadow:0 3px 0 #17241b}.binding-system{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;color:#d7e4d2;font-size:12px;margin-bottom:22px}.binding-system kbd{display:inline-flex;min-width:54px;height:30px;font-size:12px}.keyboard-onboarding-card>.button{min-width:150px;justify-content:center}.keyboard-onboarding-help{display:block;margin:12px auto 0;border:0;background:transparent;color:#b9cdb1;font-size:12px;text-decoration:underline}
.player-v2 .continue-game{font-size:16px;font-weight:700}.player-v2 .continue-detail{font-size:11px;color:#5c6d5c;max-width:620px;text-align:center}.player-v2 .continue-preview{width:min(320px,80vw);max-height:180px;object-fit:contain;border:1px solid #536653;border-radius:8px;background:#0d1711;box-shadow:0 4px 16px #0005}.detail-continue-preview{width:96px;height:54px;object-fit:cover;border-radius:6px;vertical-align:middle;background:#18251b;border:1px solid var(--line)}

/* Final contrast and state treatment for the shipping HUD. */
.player-v2 .control-summary button{background:#dbe8d2;color:#17221a;border:1px solid #a7b99e;border-radius:7px;font-weight:700;white-space:nowrap}.player-v2 .control-summary button:hover,.player-v2 .control-summary button:focus-visible{background:#f3f8ed;color:#17221a}
.player-v2 .runtime-badge{align-self:flex-start}
.player-v2 .resume-overlay{width:112px;height:112px;min-height:0;flex-direction:column;justify-content:center;gap:5px;border-radius:50%;padding:0;background:#101a15e8;border:1px solid #d4e5c7}.player-v2 .resume-overlay-icon{font-size:30px}.player-v2 .resume-overlay span:last-child{font-size:12px;letter-spacing:.02em}.player-v2 .resume-overlay:hover,.player-v2 .resume-overlay:focus-visible{background:#274b35;transform:translate(-50%,-50%)}
.player-v2 .player-help{border:1px solid #3d5144;border-radius:12px;background:#111b16;color:#d8e4d5;padding:0 14px;margin-top:18px}.player-v2 .player-help summary{padding:13px 0;color:#f3f8ed;font-weight:700;list-style:none}.player-v2 .player-help summary::-webkit-details-marker{display:none}.player-v2 .player-help summary::before{content:'+';display:inline-block;width:20px;color:#aeca9e;font-size:18px}.player-v2 .player-help[open] summary::before{content:'−'}.player-v2 .player-help p{color:#b7c7b4;margin:10px 0;line-height:1.55}.player-v2 .player-help select{background:#e9efe4;color:#17221a;border:1px solid #a7b99e;border-radius:6px;padding:7px}.player-v2 .player-help form button,.player-v2 .player-help>button{background:#dbe8d2;color:#17221a;border:1px solid #a7b99e;border-radius:7px;padding:8px 11px;font-weight:700}

.player-v2 .player-stage .recovery-question p{color:#24372a}

/* Desktop quick actions sit on the game surface and recede during keyboard play. */
@media(pointer:fine) and (min-width:651px){
  .player-v2 .player-stage .player-toolbar{position:absolute;left:16px;bottom:16px;z-index:4;max-width:calc(100% - 32px);padding:8px;background:#101a15ed;border:1px solid #53685a;border-radius:12px;backdrop-filter:blur(6px);transition:opacity .16s}
  .player-v2 #player-app[data-player-state=running] .player-toolbar{opacity:0;pointer-events:none}
  .player-v2 #player-app[data-player-state=running] .player-stage:hover .player-toolbar,
  .player-v2 #player-app[data-player-state=running] .player-toolbar:focus-within{opacity:1;pointer-events:auto}
  .player-v2 .player-stage .player-toolbar a{color:#e1ebda;padding:9px}
}
@media(prefers-reduced-motion:reduce){.player-v2 .player-stage .player-toolbar{transition:none}}

.player-v2 .player-stage .player-toolbar{position:absolute;left:16px;bottom:16px;z-index:4}

/* The pause menu leads with play and progress; layout tuning stays optional. */
.player-v2 .player-menu{background:#14211b;color:#e4eddc;border:1px solid #617561;border-radius:18px;box-shadow:0 24px 80px #0009}
.player-v2 .player-menu .dialog-heading{position:sticky;top:-24px;z-index:2;background:#14211b;padding:16px 0;margin-top:-16px;border-bottom:1px solid #3d5144}
.player-v2 .player-menu h2,.player-v2 .player-menu label,.player-v2 .player-menu summary{color:#e4eddc}
.player-v2 .player-menu .quiet{color:#b7c7b4}
.player-v2 .player-menu button{min-height:44px;padding:9px 12px;background:#273b2e;color:#edf4e8;border:1px solid #60735d;border-radius:9px;font:inherit;font-size:13px;cursor:pointer}
.player-v2 .player-menu button:hover,.player-v2 .player-menu button:focus-visible{background:#3b5440;border-color:#c4d8b1}
.player-v2 .player-menu button.primary{background:#d2e3bb;color:#17221a;font-weight:700}
.player-v2 .player-menu button:disabled{opacity:.45;cursor:default}
.player-v2 .player-menu input{accent-color:#bed7a4}
.player-v2 .player-menu select{background:#273b2e;color:#edf4e8;border:1px solid #60735d;border-radius:8px;padding:8px}
.player-v2 .player-menu fieldset{border:0;padding:0;margin:12px 0}
.player-v2 .player-menu[data-focus=keyboard] .menu-actions{margin-top:82px}
.player-v2 .player-menu .menu-settings{border-top:1px solid #3d5144;margin-top:12px;padding-top:4px}
.player-v2 .player-menu .menu-settings>summary{padding:12px 0;cursor:pointer;font-size:14px;font-weight:600}
.player-v2 .player-menu .keyboard-bindings{gap:8px 20px}
.player-v2 .player-menu .keyboard-bindings button{background:#344b38;min-width:72px}
.player-v2 .player-menu .dialog-heading button{font-size:22px;width:44px;padding:0}
@media(max-width:650px){.player-v2 .player-menu .dialog-heading{top:-18px}}

@media(orientation:portrait) and (pointer:coarse), (orientation:portrait) and (max-width:650px){
  .player-v2 .player-stage[data-controls=true][data-shared=true] .system-controls{bottom:max(calc(155px * var(--control-scale) + var(--control-offset)),env(safe-area-inset-bottom))}
}

/* Startup, failure and the in-game menu share the same contrast and palette. */
.player-v2 .launch-panel{background:#14211b;color:#edf4e8}
.player-v2 .launch-panel .quiet,.player-v2 .launch-panel .eyebrow,.player-v2 .launch-panel .continue-detail,.player-v2 .launch-panel #load-detail{color:#b7c7b4}
.player-v2 .launch-panel a{color:#d2e3bb}
.player-v2 .launch-panel .button.primary{background:#d2e3bb;color:#17221a;border:1px solid #d2e3bb;font-weight:700}
.player-v2 .launch-panel .button.secondary{background:#273b2e;color:#edf4e8;border:1px solid #60735d}


/* Inline playback keeps the indexable parent document separate from the runtime. */
body.player-embedded{background:#0a1115;overflow:hidden}
body.player-embedded .player-header,body.player-embedded .player-status,body.player-embedded .control-summary,body.player-embedded .player-footnote,body.player-embedded .player-help,body.player-embedded #fullscreen-hint,body.player-embedded #zoom-warning,body.player-embedded .site-footer{display:none!important}
body.player-embedded #main,body.player-embedded #player-app{width:100%;height:100dvh;margin:0;padding:0;max-width:none;overflow:hidden}
body.player-embedded .player-layout{width:100%;height:100dvh;max-width:none;margin:0;padding:0}
body.player-embedded .player-stage,body.player-embedded .player-stage[data-controls=true][data-shared=true]{width:100%;height:100dvh!important;max-height:none!important;min-height:0!important;border:0;border-radius:0}
body.player-embedded .player-v2 .player-stage{border-radius:0}
body.player-embedded .player-stage .recovery-question:not([hidden]){z-index:8}
.player-v2 #player-app[data-player-state=running] .control-summary,.player-v2 #player-app[data-player-state=paused] .control-summary,.player-v2 #player-app[data-player-state=running] .player-footnote,.player-v2 #player-app[data-player-state=paused] .player-footnote{display:none!important}
.player-v2 .player-stage .player-toolbar{position:absolute;left:0;right:0;bottom:0;max-width:none;min-height:47px;z-index:4;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:3px 10px;background:#0a100eef;border:0;border-top:1px solid #576f5b;border-radius:0;box-shadow:none}
.player-v2 .player-stage .player-toolbar .hud-group{display:flex;gap:5px;align-items:center}
.player-v2 .player-stage .player-toolbar button,.player-v2 .player-stage .player-toolbar a{display:inline-flex;align-items:center;justify-content:center;width:43px;height:40px;min-width:40px;min-height:40px;border:0;border-radius:7px;background:transparent;color:#edf4e8;padding:0;font-size:21px;text-decoration:none;line-height:1}
.player-v2 .player-stage .player-toolbar button:hover,.player-v2 .player-stage .player-toolbar a:hover,.player-v2 .player-stage .player-toolbar button:focus-visible,.player-v2 .player-stage .player-toolbar a:focus-visible{background:#375542;outline:2px solid #d2e3bb;outline-offset:-2px}
.player-v2 .player-stage .player-toolbar button:disabled{opacity:.38}
.player-v2 .stage-actions button{font-size:23px;min-width:42px;padding:5px 8px}
.player-v2 #enable-audio{border:1px solid #c9d6ba;background:#263c30;color:#fff}
.player-v2 #player-app[data-player-state=running] .player-status,.player-v2 #player-app[data-player-state=paused] .player-status{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%)}
.player-v2 .keyboard-onboarding[data-modal=false]{background:transparent;backdrop-filter:none;align-items:flex-start;justify-content:center;padding:12px;pointer-events:none}
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card{width:min(480px,100%);padding:13px 20px;background:#14231ce9;pointer-events:auto}
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card .eyebrow{margin-bottom:7px}
.player-v2 .keyboard-onboarding[data-modal=false] .binding-diagram{gap:16px;margin:4px 0 9px}
.player-v2 .keyboard-onboarding[data-modal=false] .binding-system{margin-bottom:8px}
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-help{margin-top:4px}
@media(pointer:coarse),(max-width:650px){.player-v2 .player-stage .player-toolbar{display:none!important}.player-v2 .stage-actions{top:5px;right:5px}}
@media(pointer:fine) and (min-width:651px){.player-v2 .player-stage .player-toolbar{left:0;right:0;bottom:0;width:100%;max-width:none;padding:3px 10px;border:0;border-top:1px solid #576f5b;border-radius:0}.player-v2 #player-app[data-player-state=paused] .player-toolbar{opacity:1;pointer-events:auto}.player-v2 #player-app[data-player-state=running] .player-stage:hover .player-toolbar,.player-v2 #player-app[data-player-state=running] .player-toolbar:focus-within{opacity:1;pointer-events:auto}}
@media(max-width:410px){.player-v2 .player-stage .player-toolbar .hud-group{gap:1px}.player-v2 .player-stage .player-toolbar button,.player-v2 .player-stage .player-toolbar a{width:40px}}

/* Match the reference player's guide: the whole game surface is washed out,
   while the controls stay centered and sit directly on top of the canvas. */
.player-v2 .keyboard-onboarding[data-modal=true]{position:absolute;inset:0 0 47px;z-index:5;display:grid;place-items:center;align-content:center;overflow:auto;padding:30px 20px 50px;background:rgba(203,237,212,.88);backdrop-filter:none;pointer-events:auto}
.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card{width:min(680px,100%);padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;color:#fff;text-align:center}
.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card{transform:translateY(-60px)}
.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card .eyebrow{margin:0 0 102px;color:#505050;font-size:15px;letter-spacing:.08em;font-weight:500;position:relative;top:-11px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-diagram{display:flex;align-items:center;justify-content:center;gap:220px;margin:0;flex-wrap:nowrap}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction{position:relative;display:block;width:142px;height:142px;flex:none;border-radius:50%;background:#68726899;box-shadow:inset 0 0 0 1px #a6b0a666;transform:translateY(-18px)}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction>kbd,.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction>div kbd{position:absolute;display:grid;place-items:center;width:48px;height:48px;min-width:48px;padding:0;border:0;border-radius:50%;background:#5f675fcc;color:#fff;box-shadow:none;font-size:15px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction>[data-binding=up]{left:47px;top:0}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction>div{display:contents}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=left]{left:0;top:47px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=right]{right:0;top:47px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=down]{left:47px;bottom:0}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction>span{display:none}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction kbd{position:absolute}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction kbd::before{position:absolute;background:#202020;color:#fff;border-radius:4px;padding:3px 7px;font:700 11px/1 system-ui,sans-serif;white-space:nowrap}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=up]::before{content:'Up';left:1px;top:-25px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=left]::before{content:'Left';left:1px;top:27px;transform:translateX(-2px)}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=right]::before{content:'Right';right:-5px;top:27px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction [data-binding=down]::before{content:'Down';left:1px;bottom:-25px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions{display:grid;grid-template-columns:repeat(2,56px);gap:14px 12px;align-items:start}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions>div{display:flex;flex-direction:column;align-items:center;gap:5px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions>div:nth-child(2){transform:translateY(-20px)}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions>div:nth-child(3){transform:translateY(-24px)}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions>div:nth-child(4){transform:translateY(-44px)}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions kbd{width:56px;height:56px;min-width:56px;border:0;border-radius:50%;background:#626262;color:#fff;box-shadow:none;font-size:16px;order:2}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-actions span{order:1;color:#fff;background:#202020;border-radius:4px;padding:3px 7px;font:700 11px/1 system-ui,sans-serif}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-system{display:flex;justify-content:center;gap:16px;margin:-28px 0 0;color:#fff;font-size:15px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-system>span{display:flex;flex-direction:column;align-items:center;gap:5px}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-system [data-system-label]{order:1;background:#202020;border-radius:4px;padding:3px 8px;color:#fff;font:700 11px/1 system-ui,sans-serif}
.player-v2 .keyboard-onboarding[data-modal=true] .binding-system kbd{order:2;display:grid;place-items:center;min-width:76px;height:40px;border:0;border-radius:22px;background:#666;color:#fff;font-size:15px;box-shadow:none}
.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card>.button{display:inline-flex;min-width:160px;margin-top:35px;border:0;border-radius:4px;background:#4930ce;color:#fff;font-weight:700;padding:12px 24px;box-shadow:0 2px 4px #0003}
.player-v2 .keyboard-onboarding[data-modal=true] .onboarding-transient-hint,.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-help{display:none}

/* The reference keeps the player actions in compact dark pills. */
.player-v2 .stage-actions button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:42px;padding:0 11px}
.player-v2 .stage-actions .player-action-icon{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.player-v2 .stage-actions .player-action-label{display:none}
.player-v2 .stage-actions #immersive-game,.player-v2 .stage-actions #fullscreen-game{width:43px;padding:0}
.player-v2 .stage-actions #open-player-menu{width:43px;padding:0;font-size:22px}
.player-v2 #exit-immersive{display:grid;place-items:center;padding:0;line-height:1}
.player-v2 .stage-actions #exit-immersive::before{content:none}
.player-v2 .close-icon{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.player-v2 .hud-svg{display:block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.player-v2 .pause-svg .pause-bars{display:block;fill:currentColor;stroke:none}
.player-v2 .pause-svg .play-triangle{display:none;fill:currentColor;stroke:none}
.player-v2 #pause-game.is-paused .pause-bars{display:none}
.player-v2 #pause-game.is-paused .play-triangle{display:block}
.player-v2 .mute-svg .mute-speaker{fill:currentColor;stroke:none}
.player-v2 .mute-svg .sound-wave{display:block}
.player-v2 .mute-svg .mute-slash{display:none}
.player-v2 #hud-mute.is-muted .sound-wave{display:none}
.player-v2 #hud-mute.is-muted .mute-slash{display:block}
.player-v2 .resume-overlay{width:78px;height:78px;min-height:0;display:grid;place-items:center;align-content:center;gap:4px;border-radius:12px;padding:0;background:#1b2c23ed;border:0;box-shadow:0 8px 25px #0006}
.player-v2 .resume-overlay-icon{display:block;width:0;height:0;border-top:11px solid transparent;border-bottom:11px solid transparent;border-left:17px solid #fff;margin-left:4px;font-size:0;line-height:0}
.player-v2 .resume-overlay span:last-child{font-size:11px;line-height:1;color:#fff;letter-spacing:0}
@media(max-width:650px){.player-v2 .keyboard-onboarding[data-modal=true]{inset:0;padding:27px 12px 48px}.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card{transform:none}.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card .eyebrow{margin-bottom:46px;top:0;font-size:13px}.player-v2 .keyboard-onboarding[data-modal=true] .binding-diagram{gap:42px;transform:scale(.82)}.player-v2 .keyboard-onboarding[data-modal=true] .binding-direction{transform:none}.player-v2 .keyboard-onboarding[data-modal=true] .binding-system{margin-top:21px}.player-v2 .keyboard-onboarding[data-modal=true] .keyboard-onboarding-card>.button{margin-top:23px}}

/* A first-run hint is a small, transient controller cheat sheet, not a second
   start dialog. A full dialog is available when Controls is opened manually. */
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card{width:min(370px,100%);padding:11px 15px;border-radius:12px;box-shadow:0 5px 18px #0008}
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card .eyebrow{margin:0 0 12px;font-size:14px}
.player-v2 .keyboard-onboarding[data-modal=false] .binding-diagram{gap:28px;margin:10px 0 16px}
.player-v2 .keyboard-onboarding[data-modal=false] .binding-system{gap:18px;font-size:15px;margin:0 0 12px}
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card>.button,
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-help{display:none}
.player-v2 .onboarding-transient-hint{display:none}
.player-v2 .keyboard-onboarding[data-modal=false] .onboarding-transient-hint{display:block;font-size:13px;color:#cae2bd;margin:0}

/* Readable startup guide. */
.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card{width:min(560px,calc(100vw - 48px));max-width:100%;padding:20px 24px}
.player-v2 .keyboard-onboarding .keyboard-onboarding-card .eyebrow{font-size:14px;letter-spacing:.04em}
.player-v2 .keyboard-onboarding .binding-diagram{gap:32px;margin:14px 0 18px;flex-wrap:wrap}
.player-v2 .keyboard-onboarding .binding-actions{display:grid;grid-template-columns:repeat(2,minmax(65px,1fr));gap:12px 18px}
.player-v2 .keyboard-onboarding kbd{min-width:46px;height:46px;font-size:19px}
.player-v2 .keyboard-onboarding .binding-direction span,.player-v2 .keyboard-onboarding .binding-actions span,.player-v2 .keyboard-onboarding .binding-system{font-size:15px;color:#e0ebd9}
.player-v2 .keyboard-onboarding .onboarding-transient-hint{font-size:13px;margin:12px 0 0}
@media(max-width:500px){.player-v2 .keyboard-onboarding[data-modal=false] .keyboard-onboarding-card{padding:14px}.player-v2 .keyboard-onboarding .binding-diagram{gap:16px}.player-v2 .keyboard-onboarding kbd{min-width:36px;height:38px;font-size:17px}}

/* Match the reference player surface: the toolbar owns its own row below the
   canvas instead of floating over the last game pixels. */
.player-v2 .player-stage{grid-template-areas:"screen" "toolbar";grid-template-rows:minmax(0,1fr) 47px}
.player-v2 .player-stage .player-toolbar{grid-area:toolbar;position:static;left:auto;right:auto;bottom:auto;width:auto;max-width:none;min-height:47px}
@media(pointer:fine) and (min-width:651px){
  .player-v2 .launch-panel{inset:0 0 47px}
  .player-v2 #player-app[data-player-state=running] .player-toolbar{opacity:.45;pointer-events:auto}
  .player-v2 #player-app[data-player-state=running] .player-stage:hover .player-toolbar{opacity:.45}
  .player-v2 #player-app[data-player-state=running] .player-stage .player-toolbar:hover,
  .player-v2 #player-app[data-player-state=running] .player-stage .player-toolbar:focus-within{opacity:1}
  .player-v2 .player-stage[data-controls=true][data-shared=true]{grid-template-areas:"left screen right" "left system right" "toolbar toolbar toolbar";grid-template-rows:minmax(0,1fr) 42px 47px}
}

/* Compatibility cores keep their native mapping dialog, opened by our HUD. */
.player-v2 #emulator:has(.rc-native-controls:not([style*="display: none"])){z-index:6}

@media(orientation:landscape) and (pointer:coarse), (orientation:landscape) and (max-width:650px){
  .player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true] .left-control,
  .player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true] .right-control{top:50%;bottom:auto;height:auto;transform:translateY(-50%);width:auto;max-width:calc(50% - 24px);justify-content:center;gap:6px}
  .player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true] .left-control{left:max(calc(4px + var(--control-offset)),env(safe-area-inset-left))}
  .player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true] .right-control{right:max(calc(4px + var(--control-offset)),env(safe-area-inset-right))}
  .player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true] .action-buttons,
  .player-v2 .player-stage[data-orientation=landscape][data-controls=true][data-shared=true] .shoulder-buttons{width:calc(144px * var(--control-scale));min-width:0}
}
@media(pointer:coarse),(max-width:650px){
  .player-v2 .player-stage{grid-template-areas:"screen";grid-template-rows:minmax(0,1fr)}
  .player-v2 .player-stage[data-controls=true][data-shared=true]{grid-template-areas:"screen screen" "system system" "left right";grid-template-rows:minmax(0,1fr) 38px clamp(170px,29dvh,240px)}
  .player-v2 .player-stage .player-toolbar{display:none!important}
}
