/* Detail-only competitive terminal. The data-player node remains the same
   lifecycle/fullscreen root, with no transformed ancestor or decorative controls. */
.detail-page .player{position:relative;background:#15212d;border:1px solid #486174;border-radius:4px;padding:0 9px 8px;box-shadow:0 12px 24px #0003}
.detail-page .player-toolbar{margin:0 -9px;padding:12px 18px;background:#202f3d;border-bottom:3px solid #0b1520;gap:18px}
.terminal-title{display:flex;align-items:center;gap:10px;min-width:0;font-size:13px;letter-spacing:.025em;font-weight:700;color:#e2f1fb}
.terminal-title>span:last-child{overflow-wrap:anywhere;line-height:1.35}
.terminal-led{width:7px;height:7px;flex:0 0 7px;background:#f1b884;box-shadow:0 0 0 3px #f1b88417}
.detail-page .player-toolbar>div{flex-shrink:0;gap:10px}
.detail-page .player-toolbar button{min-height:40px;padding:6px 9px;background:#111f2c;border:1px solid #435d72;border-radius:3px;font-size:11px}
.detail-page .player-toolbar button:hover{background:#304b60;border-color:#8dcdec}
/* Thick inner bezel and side strips belong to the stage, preserving its iframe
   size contract. Insets cast no pointer-intercepting layer over gameplay. */
.detail-page .player-stage{margin-top:9px;border:5px solid #080f18;outline:1px solid #37536a;box-shadow:-7px 0 0 -5px #74bddb,7px 0 0 -5px #74bddb;background:#080f18}
.detail-page .player-prompt{overflow:hidden}
.detail-page .player-bottom{margin-top:10px;padding:13px 14px;border-top:1px solid #4c667c;border-bottom:1px solid #0b1520;background:#223342;gap:14px}
.detail-page .player-bottom p{font-size:11px;color:#c4d5e4}
.detail-page .player-bottom>div{gap:8px}
.detail-page .player-bottom button{padding:8px 10px;min-height:36px;background:#142332;border:1px solid #425b70;border-radius:3px;color:#d2e5f4;font-size:10px}
.detail-page .player-bottom button:disabled{opacity:.45}
.detail-page .embed-disclosure{padding:12px 10px 2px;font-size:10px;line-height:1.8;color:#a9bdcf;background:transparent}
/* Expanded and native fullscreen modes shed the cabinet bezel. The original
   flex stage and Close/Fullscreen controls continue to own the available area. */
.detail-page .player:is(.is-expanded,:fullscreen){padding:0;border-radius:0;box-shadow:0 0 0 30px #050b13e8}
.detail-page .player:is(.is-expanded,:fullscreen) .player-toolbar{margin:0;padding:5px 10px;border-bottom:1px solid #37536a}
.detail-page .player:is(.is-expanded,:fullscreen) .player-stage{margin:0;border:0;outline:0;box-shadow:none}
.detail-page .player:is(.is-expanded,:fullscreen) .player-bottom{margin:0;padding:6px 10px}
.detail-page .player:is(.is-expanded,:fullscreen) .embed-disclosure{padding:5px 10px}
@media(max-width:560px){
 .detail-page .player{padding:0 5px 5px}
 .detail-page .player-toolbar{margin:0 -5px;padding:9px 10px;gap:10px;align-items:center}
 .terminal-title{font-size:11px;gap:7px;max-width:65%}
 .terminal-led{width:5px;height:5px;flex-basis:5px}
 .detail-page .player-toolbar>div{gap:6px}
 .detail-page .player-toolbar button{padding:6px;min-width:36px;min-height:36px}
 .detail-page .player-stage{margin-top:6px;border-width:3px;box-shadow:none}
 .detail-page .player-bottom{padding:10px;margin-top:7px;gap:7px}
 .detail-page .player-bottom p{font-size:10px}
 .detail-page .player-bottom button{font-size:10px;padding:7px 9px}
 .detail-page .embed-disclosure{padding:10px 6px 2px;font-size:9px}
}
@media(max-height:520px) and (orientation:landscape){
 .detail-page .player{padding:0;border-radius:0}
 .detail-page .player-toolbar{margin:0;padding:4px 8px;border-bottom:1px solid #37536a}
 .detail-page .player-stage{margin:0;border:0;outline:0;box-shadow:none}
 .detail-page .player.is-expanded .player-bottom,.detail-page .player.is-expanded .embed-disclosure{display:none}
}
@media(forced-colors:active){.terminal-led{background:CanvasText;box-shadow:none}.detail-page .player-stage{outline:1px solid CanvasText;box-shadow:none}}

/* Single-game cabinet silhouette: separate marquee, thick side cheeks and an
   outward control deck. Decorations remain inert; real controls keep semantics. */
.detail-page .player{padding:0 16px 0;border:2px solid #465d6d;border-radius:8px 8px 2px 2px;background:#25323e;overflow:visible}
.detail-cabinet-marquee{margin:-2px -18px 0;padding:19px 25px;background:#16232f;border:5px solid #354c5d;border-top-color:#79bdd7;border-bottom-color:#7297ac;clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%,0 10px);text-align:center;color:#e8f5fe;font-size:20px;line-height:1.3;font-weight:800;letter-spacing:.035em;overflow-wrap:anywhere}
.detail-page .player-toolbar{margin:0;padding:6px 4px;background:#25323e;border:0}
.detail-page .terminal-title{font-size:10px;color:#bad0e1;letter-spacing:.03em}
.detail-page .player-toolbar button{min-height:34px;font-size:10px}
.detail-page .player-stage{margin:0 0 16px;border:7px solid #09121d;outline:1px solid #54788f;box-shadow:-12px 0 0 -10px #74bddb,12px 0 0 -10px #74bddb}
.detail-page .player-bottom{position:relative;display:grid;grid-template-columns:56px minmax(0,1fr) auto 62px;gap:12px;margin:0 -25px;padding:17px 18px;background:#2b3c4a;border:1px solid #5d7e94;border-top:3px solid #90bcd1;border-bottom:5px solid #101c28;border-radius:3px;align-items:center}
.detail-page .player-bottom p{font-size:10px}.detail-page .player-bottom>div:not(.detail-stick):not(.detail-keys){display:flex;gap:7px;flex-wrap:wrap}
.detail-page .player-bottom button{font-size:10px;padding:7px 9px;min-height:36px}
.detail-page .player-bottom .detail-stick{display:block;position:relative;height:44px;width:50px;border:0;background:transparent}
.detail-stick:before{content:'';position:absolute;bottom:0;width:48px;height:14px;border:2px solid #61869c;border-radius:50%;background:#122331}
.detail-stick i{position:absolute;width:6px;height:29px;background:#d2e9ef;left:22px;bottom:9px;transform:rotate(12deg);transform-origin:bottom}
.detail-stick i:before{content:'';position:absolute;top:-8px;left:-7px;width:20px;height:20px;background:#f1b884;border-radius:50%;box-shadow:inset -3px -3px #d18a56}
.detail-page .player-bottom .detail-keys{display:flex;gap:9px;align-items:center;justify-content:center;transform:rotate(-13deg)}
.detail-keys i{display:block;width:23px;height:23px;border:2px solid #f6d0a8;background:#efb27d;border-radius:50%;box-shadow:0 4px #a76b42}
.detail-keys i:last-child{background:#e8a16c}
.detail-coin-base{height:34px;display:flex;justify-content:center;align-items:center;margin:0 -16px;background:#192833;border-bottom:5px solid #0c1822}
.detail-coin-base span{width:74px;height:7px;background:#08131c;border-top:2px solid #4f7189}
.detail-page .embed-disclosure{margin:0 -16px;padding:10px 14px;background:#12202c;border-radius:0 0 2px 2px}
/* Avoid adding cabinet geometry to the game area's fixed/fullscreen mode. */
.detail-page .player:is(.is-expanded,:fullscreen){overflow:hidden;padding:0;border-width:1px;border-radius:0}
.detail-page .player:is(.is-expanded,:fullscreen) :is(.detail-cabinet-marquee,.detail-stick,.detail-keys,.detail-coin-base){display:none}
.detail-page .player:is(.is-expanded,:fullscreen) .player-stage{margin:0;border:0;outline:0;box-shadow:none}
.detail-page .player:is(.is-expanded,:fullscreen) .player-bottom{display:flex;margin:0;border:0;border-top:1px solid #3c576c;padding:7px 10px}
.detail-page .player:is(.is-expanded,:fullscreen) .embed-disclosure{margin:0;padding:5px 10px}
@media(max-width:820px){.detail-page .player-bottom{grid-template-columns:50px minmax(0,1fr) auto 56px;gap:10px}}
@media(max-width:560px){
 .detail-page .player{padding:0 9px;border-radius:5px 5px 2px 2px}
 .detail-cabinet-marquee{margin:-2px -11px 0;border-width:4px;padding:15px 12px;font-size:17px}
 .detail-page .player-toolbar{margin:0;padding:5px 0}.detail-page .player-stage{border-width:4px;margin:0 0 11px;box-shadow:none}
 .detail-page .player-bottom{grid-template-columns:40px minmax(0,1fr) 47px;margin:0 -14px;padding:12px 10px;gap:8px}
 .detail-page .player-bottom p{grid-column:2;grid-row:1;font-size:9px}
 .detail-page .player-bottom>div:not(.detail-stick):not(.detail-keys){grid-column:2;grid-row:2;gap:5px}
 .detail-page .player-bottom .detail-stick{grid-column:1;grid-row:1/3;scale:.75;transform-origin:left center}
 .detail-page .player-bottom .detail-keys{grid-column:3;grid-row:1/3;gap:7px}.detail-keys i{width:18px;height:18px}
 .detail-page .player-bottom button{font-size:9px;padding:6px;min-height:34px}
 .detail-coin-base{margin:0 -9px;height:26px}.detail-page .embed-disclosure{margin:0 -9px;padding:9px 10px}
}
@media(max-height:520px) and (orientation:landscape){.detail-cabinet-marquee,.detail-stick,.detail-keys,.detail-coin-base{display:none!important}.detail-page .player{padding:0}.detail-page .player-stage{margin:0;border:0;outline:0}.detail-page .player-bottom{display:flex;margin:0;padding:7px}.detail-page .player.is-expanded .player-bottom{display:none}.detail-page .embed-disclosure{margin:0}}
@media(forced-colors:active){.detail-cabinet-marquee{clip-path:none;border-color:CanvasText}.detail-stick,.detail-keys{display:none!important}.detail-page .player-bottom{display:flex}.detail-coin-base{display:none}}

/* Cabinet LEDs stay in the bezel, never above the iframe or its controls. */
.detail-cabinet-marquee{position:relative;display:flex;align-items:center;justify-content:center;gap:22px}
.detail-cabinet-marquee:before,.detail-cabinet-marquee:after{content:'';width:clamp(22px,6vw,64px);height:3px;flex-shrink:0;background:#9bdfff;box-shadow:0 2px 9px #79caff65}
.detail-page .player:before,.detail-page .player:after{content:'';position:absolute;top:108px;bottom:156px;width:3px;background:#8bd7fc;box-shadow:0 2px 10px #79caff70;pointer-events:none;border-radius:2px}
.detail-page .player:before{left:5px}.detail-page .player:after{right:5px}
.detail-page .player-bottom:after{content:'';position:absolute;left:8%;right:8%;bottom:-3px;height:2px;background:#f1b884;box-shadow:0 3px 10px #f1b88455;pointer-events:none}
@media(prefers-reduced-motion:no-preference){
 .detail-cabinet-marquee:before,.detail-cabinet-marquee:after,.detail-page .player:before,.detail-page .player:after,.detail-page .player-bottom:after{animation:terminal-led-breathe 3.6s ease-in-out infinite alternate}
 .detail-page .player-bottom:after{animation-delay:-1.8s}
}
@keyframes terminal-led-breathe{from{opacity:.55}to{opacity:1}}
.detail-page .player:is(.is-expanded,:fullscreen):before,.detail-page .player:is(.is-expanded,:fullscreen):after,.detail-page .player:is(.is-expanded,:fullscreen) .player-bottom:after{display:none}
@media(max-width:560px){.detail-cabinet-marquee{gap:12px}.detail-cabinet-marquee:before,.detail-cabinet-marquee:after{width:22px;height:2px}.detail-page .player:before,.detail-page .player:after{width:2px;top:98px;bottom:164px}.detail-page .player:before{left:2px}.detail-page .player:after{right:2px}}
@media(max-height:520px) and (orientation:landscape){.detail-page .player:before,.detail-page .player:after,.detail-page .player-bottom:after{display:none}}
@media(forced-colors:active){.detail-cabinet-marquee:before,.detail-cabinet-marquee:after,.detail-page .player:before,.detail-page .player:after,.detail-page .player-bottom:after{display:none}}

/* One shared color cycle keeps each LED and its halo in phase. Reduced-motion
   mode uses a steady ice-blue finish instead of any color or opacity animation. */
.detail-cabinet-marquee:before,.detail-cabinet-marquee:after,.detail-page .player:before,.detail-page .player:after,.detail-page .player-bottom:after{background:#8bd7fc;box-shadow:0 2px 10px #79caff70}
@media(prefers-reduced-motion:no-preference){
 .detail-cabinet-marquee:before,.detail-cabinet-marquee:after,.detail-page .player:before,.detail-page .player:after,.detail-page .player-bottom:after{animation:terminal-led-color 5s linear infinite;animation-delay:0s}
}
@keyframes terminal-led-color{
 0%,100%{background:#8bd7fc;box-shadow:0 2px 10px #79caff70;opacity:.9}
 33.333%{background:#79e4ba;box-shadow:0 2px 10px #79e4ba70;opacity:.9}
 66.667%{background:#f1b884;box-shadow:0 2px 10px #f1b88470;opacity:.9}
}

/* Category-specific cabinet topper: original grid geometry, no input handling.
   Reserve headroom in document flow; expanded gameplay hides the whole topper. */
.detail-page .detail-layout{padding-top:58px}
.detail-ornament{position:absolute;left:50%;top:-58px;width:96px;height:58px;margin-left:-48px;pointer-events:none}
.detail-ornament svg{display:block;width:96px;height:56px;overflow:visible;shape-rendering:crispEdges;filter:drop-shadow(0 3px 2px #0005)}
.detail-ornament>span{position:absolute;bottom:-1px;left:14px;right:14px;height:5px;background:#233c4c;border-top:2px solid #85c4df}
.detail-page .player:is(.is-expanded,:fullscreen) .detail-ornament{display:none}
@media(prefers-reduced-motion:no-preference){.detail-ornament svg{animation:topper-float 3s ease-in-out infinite alternate}.ornament-thrust{animation:topper-engine .8s ease-in-out infinite alternate}}
@keyframes topper-float{to{translate:0 -3px}}
@keyframes topper-engine{to{opacity:.45;transform:translateY(2px)}}
@media(max-width:560px){.detail-page .detail-layout{padding-top:43px}.detail-ornament{top:-44px;width:72px;height:44px;margin-left:-36px}.detail-ornament svg{width:72px;height:42px}.detail-ornament>span{left:11px;right:11px;height:4px}}
@media(max-height:520px) and (orientation:landscape){.detail-ornament{display:none}.detail-page .detail-layout{padding-top:0}}
@media(forced-colors:active){.detail-ornament{display:none}}

/* Six related cabinet models share lifecycle geometry and per-game semantic
   finish tokens. Apply only in normal view; expanded modes retain prior rules. */
.detail-page .player{background:var(--cab-shell,#25323e);border-color:var(--cab-edge,#465d6d)}
.detail-cabinet-marquee{background:var(--cab-marquee,#16232f);border-color:var(--cab-edge,#354c5d);border-top-color:var(--cab-trim,#79bdd7);border-bottom-color:var(--cab-trim,#7297ac)}
.detail-page .player-toolbar{background:var(--cab-shell,#25323e)}
.detail-page .player-bottom{background:var(--cab-panel,#2b3c4a);border-color:var(--cab-edge,#5d7e94);border-top-color:var(--cab-trim,#90bcd1)}
.detail-coin-base{background:var(--cab-marquee,#192833)}
.detail-stick i:before{background:var(--cab-stick,#f1b884);box-shadow:inset -3px -3px #0003}
.detail-keys i{background:var(--cab-key1,#efb27d);border-color:var(--cab-trim,#f6d0a8);box-shadow:0 4px #0006}
.detail-keys i:last-child{background:var(--cab-key2,#e8a16c)}
/* Racer: swept sign, restrained track markings, broad instrument deck. */
.cabinet-racer .detail-cabinet-marquee{clip-path:polygon(22px 0,calc(100% - 22px) 0,100% 100%,0 100%);border-radius:0;letter-spacing:.09em}
.cabinet-racer .player-toolbar{border-bottom:3px dashed var(--cab-edge);margin-bottom:8px}
.cabinet-racer .player-bottom{border-radius:0 0 12px 12px;border-inline-width:5px}
.cabinet-racer .detail-coin-base span{width:105px}
/* Orbital: beveled hardware and a segmented lower service panel. */
.cabinet-orbital .detail-cabinet-marquee{clip-path:polygon(16px 0,calc(100% - 16px) 0,100% 16px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 16px)}
.cabinet-orbital .player-bottom{border-inline:6px solid var(--cab-edge);border-radius:4px}
.cabinet-orbital .detail-keys i{border-radius:5px;rotate:45deg}
.cabinet-orbital .detail-coin-base{border-top:2px dashed var(--cab-edge)}
/* Fortress: crenellated marquee and substantial stone-like control edges. */
.cabinet-fortress .detail-cabinet-marquee{clip-path:polygon(0 0,12% 0,12% 8px,23% 8px,23% 0,35% 0,35% 8px,46% 8px,46% 0,58% 0,58% 8px,69% 8px,69% 0,81% 0,81% 8px,92% 8px,92% 0,100% 0,100% 100%,0 100%);padding-top:24px;border-radius:0}
.cabinet-fortress .player-bottom{border-inline-width:7px;border-radius:0}
.cabinet-fortress .detail-coin-base{height:42px;border-bottom-width:9px}
.cabinet-fortress .detail-coin-base span{width:32px;height:13px;border-radius:9px 9px 0 0}
/* Logic: stepped geometric sign and square tactile controls. */
.cabinet-logic .detail-cabinet-marquee{clip-path:polygon(12px 0,calc(100% - 12px) 0,calc(100% - 12px) 8px,100% 8px,100% 100%,0 100%,0 8px,12px 8px);border-radius:0}
.cabinet-logic .player-bottom{border-radius:0;border-top-style:double;border-top-width:6px}
.cabinet-logic .detail-keys{transform:none}.cabinet-logic .detail-keys i{border-radius:3px}
.cabinet-logic .detail-coin-base span{width:52px;border-inline:8px solid var(--cab-edge)}
/* Workshop: visible fasteners, warm-looking panels and mechanical footplate. */
.cabinet-workshop .detail-cabinet-marquee{clip-path:none;border-radius:7px;border-style:double;border-width:7px}
.cabinet-workshop .player-toolbar{background-image:radial-gradient(circle at 7px 50%,var(--cab-trim) 0 2px,transparent 3px),radial-gradient(circle at calc(100% - 7px) 50%,var(--cab-trim) 0 2px,transparent 3px);padding-inline:18px}
.cabinet-workshop .player-bottom{border-radius:7px;border-inline:5px double var(--cab-trim)}
.cabinet-workshop .detail-coin-base{border-top:3px double var(--cab-edge)}
/* Classic: rounded marquee shoulders and familiar circular arcade controls. */
.cabinet-classic .detail-cabinet-marquee{clip-path:none;border-radius:26px 26px 3px 3px;border-top-width:6px}
.cabinet-classic .player-bottom{border-radius:12px 12px 3px 3px}
.cabinet-classic .detail-keys i{width:25px;height:25px;border-radius:50%}
.cabinet-classic .detail-coin-base span{width:46px;height:10px;border:2px solid var(--cab-edge)}
/* Normal view model details must not leak into the expanded play surface. */
.detail-page .player:is(.is-expanded,:fullscreen) .player-toolbar{background-image:none;border:0;margin:0;padding:5px 10px}
.detail-page .player:is(.is-expanded,:fullscreen) .player-bottom{border-inline:0;border-radius:0}
@media(max-width:560px){.cabinet-fortress .detail-cabinet-marquee{padding-top:20px}.cabinet-fortress .detail-coin-base{height:30px}.cabinet-classic .detail-keys i{width:18px;height:18px}.cabinet-workshop .player-toolbar{padding-inline:12px}.cabinet-racer .detail-cabinet-marquee{letter-spacing:.035em}}
@media(forced-colors:active){.detail-page .player,.detail-page .player-bottom,.detail-cabinet-marquee{border-color:CanvasText}.cabinet-workshop .player-toolbar{background-image:none}}

/* Cabinet's normal-view relative positioning must not override the fixed
   expanded lifecycle root. Explicit geometry also prevents a zero-height stage. */
.detail-page .player.is-expanded{position:fixed;inset:12px;z-index:80;display:flex;flex-direction:column}
.detail-page .player:is(.is-expanded,:fullscreen) .player-stage{flex:1;min-height:0;aspect-ratio:auto}
.detail-page .player:fullscreen{display:flex;flex-direction:column;width:100%;height:100%}
@media(max-width:560px){.detail-page .player.is-expanded{inset:5px}}
