/* @cpi 2026-10-12 20:14: recorte del mismo cabinet completo, tablero y monitor proporcionales. */
.metal-demo{margin:0;min-height:100%;background:#111513;color:#fff;font-family:system-ui}
.metal-demo{min-height:100dvh;display:grid;place-items:center}
.metal-cabinet{position:relative;width:min(100vw,calc(96dvh * 1.15));aspect-ratio:1.15;background:url('./assets/optimized/cabinets/mslug3-play@2x.webp') center top/100% auto no-repeat}
.metal-monitor{position:absolute;left:23%;top:36%;width:54%;height:39%;background:#000;border:3px solid #171d19;border-radius:8px;overflow:hidden;box-shadow:0 0 0 2px #706c55,inset 0 0 12px #000;display:grid;place-items:center}
.metal-monitor iframe{width:100%;height:100%;border:0;position:absolute;inset:0}
/* @cpi 2026-10-14 00:04: START debe superponerse al iframe incluso cuando el zoom cambia grid por block. */
.metal-start{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;border:2px solid #cda545;border-radius:7px;background:#182018;color:#ffe296;padding:12px 20px;font:bold 16px system-ui;cursor:pointer;box-shadow:0 3px 0 #060906}
.metal-deck{position:absolute;left:12%;top:84%;width:76%;height:12%;display:flex;align-items:center;justify-content:space-between;touch-action:none}
.metal-stick{width:24%;height:100%;position:relative;touch-action:none;cursor:grab}
.metal-stick::before{content:'';position:absolute;left:22%;top:47%;width:56%;height:37%;border-radius:50%;background:radial-gradient(ellipse,#3b3b35 0 37%,#111 42% 64%,#929481 67%,#252b24 74%);box-shadow:0 4px 4px #0009}
.metal-stick i{position:absolute;left:46%;top:22%;height:43%;width:9%;background:linear-gradient(90deg,#777,#fff 40%,#999 70%,#383838);transform:translate(var(--x,0px),var(--y,0px));transform-origin:bottom}
.metal-stick b{position:absolute;left:28%;top:0;width:46%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 31% 22%,#fff4c8,#e9bb40 35%,#9b650c 72%,#543e16);transform:translate(var(--x,0px),var(--y,0px));box-shadow:2px 5px 5px #0008}
.metal-buttons{display:flex;gap:clamp(8px,3vw,28px);width:51%;align-items:center}
.metal-buttons button{position:relative;flex:1;min-width:0;border:0;background:transparent;color:#ffeac4;padding:0;touch-action:none;cursor:pointer}
.metal-buttons i{display:block;width:76%;margin:auto;aspect-ratio:1.4;border-radius:50%;background:radial-gradient(ellipse at 35% 22%,#ffa18d,#d43122 56%,#8d2113 80%);border:3px solid #252922;box-shadow:0 5px 0 #541912,0 7px 0 #b4ac8a,0 10px 8px #0009}
.metal-buttons [data-action=jump] i{background:radial-gradient(ellipse at 35% 22%,#fff7c1,#e5bb37 56%,#9b761c 80%);box-shadow:0 5px 0 #806311,0 7px 0 #b4ac8a,0 10px 8px #0009}
.metal-buttons [data-action=grenade] i{background:radial-gradient(ellipse at 35% 22%,#b6edbe,#488356 56%,#254f30 80%);box-shadow:0 5px 0 #233d22,0 7px 0 #b4ac8a,0 10px 8px #0009}
.metal-buttons .pressed i{transform:translateY(4px);filter:brightness(.85)}
.metal-buttons span{display:block;margin-top:10px;font-size:clamp(7px,1.25vw,11px);font-weight:800;text-shadow:0 1px 3px #000}
.metal-help{position:absolute;top:100%;width:100%;margin:3px 0;font-size:12px;text-align:center;color:#aead9b}
@media(orientation:portrait){.metal-cabinet{width:109vw;max-width:none}.metal-help{font-size:10px}}

/* @cpi 2026-10-12 20:24: estilos acotados al diálogo Metal Slug; no cambian otros cabinets. */
dialog.metal-session .metal-cabinet{background-image:url('./assets/optimized/cabinets/mslug3-play@2x.webp');background-size:100% auto;aspect-ratio:1.15;height:auto;padding:0;margin:0;position:absolute;overflow:visible}
dialog.metal-session .metal-monitor{left:23%;top:36%;width:54%;height:39%;padding:0;position:absolute;aspect-ratio:auto}
dialog.metal-session .metal-deck{left:12%;top:84%;width:76%;height:12%;padding:0;background:none;border:0;position:absolute}
dialog.metal-session .metal-monitor video{width:100%;height:100%;object-fit:contain}
dialog.metal-session .metal-monitor canvas[hidden]{display:none}
dialog.metal-session .metal-status{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:12px;background:#07100e;color:#ffe39e;font:14px system-ui;z-index:2}
dialog.metal-session .metal-status[hidden],dialog.metal-session .metal-deck[hidden],dialog.metal-session .metal-start[hidden]{display:none}
dialog.metal-session .metal-continue{position:fixed;bottom:12px;right:12px;padding:8px 14px;background:#302b18;color:#ffe7a0;border:1px solid #a68d44;border-radius:6px;z-index:50}
dialog.metal-session.expanded .metal-cabinet{background:none!important;aspect-ratio:4/3;width:min(98vw,calc((100dvh - 170px)*4/3));}
dialog.metal-session.expanded .metal-monitor{position:relative;left:0;top:0;width:100%;height:auto;aspect-ratio:4/3;border:6px solid #7948a0;border-radius:10px;box-sizing:border-box}
dialog.metal-session.expanded .metal-deck{position:relative;left:0;top:0;width:100%;height:100px;background:#20251c;border:3px solid #7948a0;box-sizing:border-box;padding:10px 20px}

dialog.metal-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:4/3!important}
dialog.metal-session[data-screen-zoom] .metal-monitor canvas[hidden]{display:none!important}
dialog.metal-session .metal-monitor video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}

dialog.metal-session .metal-coop{position:fixed;top:10px;left:10px;z-index:50;max-width:calc(100vw - 160px);padding:9px;border:1px solid #8c875b;border-radius:7px;background:#172015ed;color:#efe4be;font:13px system-ui}
dialog.metal-session .metal-coop button{display:block;margin-top:8px;width:100%;padding:8px;background:#494c2e;border:1px solid #8c875b;border-radius:5px;color:white;cursor:pointer}
dialog.metal-session .metal-coop[hidden]{display:none}
.metal-buttons span{white-space:nowrap}
@media(max-width:600px){.metal-buttons span{font-size:6px}}

/* @cpi 2026-10-13 15:00: Bad Dudes conserva el marco y sitúa los mandos sobre su tablero. */
dialog.baddudes-session:not(.expanded) .metal-cabinet{aspect-ratio:2/3;width:min(100vw,calc(94dvh * 2/3));clip-path:polygon(2% 0,98% 0,98% 27%,96% 33%,96% 72%,100% 86%,98% 100%,2% 100%,0 86%,4% 72%,4% 33%,2% 27%)}
dialog.baddudes-session:not(.expanded) .metal-monitor{left:13.2%;top:35.6%;width:73.7%;height:34.8%;border:0;box-shadow:none;border-radius:6px}
dialog.baddudes-session:not(.expanded) .metal-deck{left:12%;top:75%;width:76%;height:9%}
dialog.baddudes-session .metal-stick b{background:radial-gradient(circle at 30% 25%,#ffb4aa,#e52d24 40%,#820e12 85%)}
.illustrated-cabinet[data-game=baddudes] .cabinet-art{clip-path:polygon(18.6% 0,81.5% 0,81.5% 30%,84% 53%,83% 99.5%,17% 99.5%,16% 53%,18.6% 30%)}

/* @cpi 2026-10-13 17:15: pantalla Metal Slug ajustada al hueco; zoom conserva el marco 4:3. */
dialog.metal-session:not(.baddudes-session):not(.sidepckt-session):not(.expanded) .metal-monitor video{object-fit:fill}

/* @cpi 2026-10-13 17:38: continuar y nueva partida comparten centro y estilo en el monitor. */
dialog.metal-session .metal-monitor>.metal-continue{position:absolute;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);z-index:16;min-height:0;padding:10px 18px;font:700 14px system-ui;white-space:nowrap;border-radius:8px;background:#123c61;color:#fff;border:2px solid #8de4ff;box-shadow:none}
dialog.metal-session .metal-monitor>.metal-continue[hidden]{display:none}
/* @cpi 2026-10-13: monitores verticales MAME, mismo encuadre para jugador y mirones. */
/* @cpi 2026-10-16 10:21: Slap Fight conserva encaje y mandos al migrar a plazas nativas. */
dialog:is(.mame-turn-session,.slapfight-session):not(.expanded) .metal-cabinet{aspect-ratio:2/3;width:min(104vw,calc(94dvh * 2/3));clip-path:polygon(5% 2%,95% 2%,96% 76%,100% 89%,99% 97%,1% 97%,0 89%,4% 76%)}
dialog:is(.mame-turn-session,.slapfight-session):not(.expanded) .metal-monitor{left:24%;top:29%;width:52%;height:43%;border:0;box-shadow:none;border-radius:5px}
dialog:is(.mame-turn-session,.slapfight-session):not(.expanded) .metal-deck{left:17%;top:82%;width:66%;height:9%}
dialog:is(.mame-turn-session,.slapfight-session) .metal-stick b{background:radial-gradient(circle at 30% 25%,#ffb4aa,#e52d24 40%,#820e12 85%)}
dialog.mame-turn-session.dkong-session .metal-buttons{width:24%}
dialog:is(.mame-turn-session,.slapfight-session):not(.expanded) .metal-monitor video{object-fit:contain}
dialog:is(.mame-turn-session,.slapfight-session)[data-screen-zoom].expanded .metal-monitor{aspect-ratio:var(--screen-ratio)!important}
dialog:is(.mame-turn-session,.slapfight-session) .metal-monitor iframe{pointer-events:none}
.illustrated-cabinet[data-game=dkong] .cabinet-art{clip-path:polygon(20% 0,80% 0,80% 50%,84% 64%,84% 100%,16% 100%,16% 64%,20% 50%)}
.illustrated-cabinet[data-game=slapfight] .cabinet-art{clip-path:polygon(22% 0,78% 0,78% 40%,84% 54%,84% 100%,16% 100%,16% 54%,22% 40%)}
/* El zoom de Donkey Kong recorta el mismo mueble del salón: conserva exactamente su arte. */
dialog.dkong-session:not(.expanded) .metal-cabinet{aspect-ratio:0.7312;width:min(104vw,calc(94dvh * .7312));background-image:url('./assets/optimized/cabinets/dkong@2x.webp')!important;background-size:147.059% auto;background-position:center top;clip-path:polygon(5% 0,95% 0,95% 79%,100% 96%,99% 100%,1% 100%,0 96%,5% 79%)}
dialog.dkong-session:not(.expanded) .metal-monitor{left:25.7%;top:33.7%;width:48.6%;height:42.3%;border:0;border-radius:8px}
/* @cpi 2026-10-13: El nuevo panel ya lleva ilustraciones y deja libres los mandos funcionales. */
dialog.dkong-session:not(.expanded) .metal-cabinet:after{display:none}
dialog.dkong-session:not(.expanded) .metal-deck{left:17%;top:84%;width:66%;height:11%;z-index:2}
dialog.dkong-session:not(.expanded) .metal-buttons{width:28%}
dialog.dkong-session[data-screen-zoom].expanded .metal-cabinet:after{display:none}

/* @cpi 2026-10-13 23:23: Tapper recorta el MISMO mueble y conserva el monitor completo sobre los mandos. */
.illustrated-cabinet[data-game=tapper] .cabinet-art{clip-path:polygon(15% 0,85% 0,86% 17%,83% 22%,85% 44%,91% 49%,91% 56%,89% 91%,91% 92%,91% 98%,86% 100%,14% 100%,9% 98%,9% 92%,11% 91%,11% 56%,9% 56%,9% 49%,15% 44%,17% 22%,14% 17%)}
dialog.tapper-session:not(.expanded) .metal-cabinet{aspect-ratio:.994;width:min(100vw,calc(94dvh * .994));background-image:url('./assets/optimized/cabinets/tapper@2x.webp')!important;background-size:121.951% auto;background-position:center top;clip-path:polygon(7% 0,93% 0,94% 31%,90% 41%,92% 80%,100% 90%,100% 100%,0 100%,0 90%,8% 80%,10% 41%,6% 31%)}
dialog.tapper-session:not(.expanded) .metal-monitor{left:23.17%;top:36.36%;width:53.66%;height:38.18%;border:0;border-radius:10px}
dialog.tapper-session:not(.expanded) .metal-deck{left:25%;top:85%;width:50%;height:11%;z-index:2}
dialog.tapper-session .metal-buttons{width:30%}

/* @cpi 2026-10-13: Tetris Atari conserva el mueble y el monitor nativo 336 x 240. */
dialog.tetris-mame-session:not(.expanded) .metal-cabinet{aspect-ratio:1.0892857;background-size:100% 178.5714%}
dialog.tetris-mame-session:not(.expanded) .metal-monitor{left:20%;top:31%;width:60%;height:auto;aspect-ratio:336/240;border:5px solid #111820;border-radius:2px;box-sizing:border-box;box-shadow:0 0 0 1px #60666a}
dialog.tetris-mame-session:not(.expanded) .metal-deck{left:26%;top:81.5%;width:48%;height:10%}
dialog.tetris-mame-session .metal-buttons{width:34%}
dialog.tetris-mame-session .metal-stick{width:34%}
dialog.tetris-mame-session .metal-stick b{background:radial-gradient(circle at 30% 25%,#ffb4aa,#e52d24 40%,#820e12 85%)}
dialog.tetris-mame-session .metal-buttons i{background:radial-gradient(ellipse at 35% 22%,#fff7c1,#e5bb37 56%,#9b761c 80%)}
dialog.tetris-mame-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:336/240!important}
dialog.tetris-mame-session .metal-monitor video{object-fit:contain!important}
dialog.tetris-mame-session .metal-monitor iframe{pointer-events:none}

/* @cpi 2026-10-14 12:35: arte completo y huecos CRT medidos en los tres muebles nuevos. */
dialog.pang-session:not(.expanded) .metal-cabinet,
dialog.blktiger-session:not(.expanded) .metal-cabinet,
dialog.xsleena-session:not(.expanded) .metal-cabinet{aspect-ratio:2/3;width:min(100vw,calc(94dvh * 2/3));background-size:100% 100%;clip-path:none}
dialog.pang-session:not(.expanded) .metal-cabinet{background-image:url('./assets/optimized/cabinets/pang@2x.webp')!important}
dialog.blktiger-session:not(.expanded) .metal-cabinet{background-image:url('./assets/optimized/cabinets/blktiger@2x.webp')!important}
dialog.xsleena-session:not(.expanded) .metal-cabinet{background-image:url('./assets/optimized/cabinets/xsleena@2x.webp')!important}
dialog.pang-session:not(.expanded) .metal-monitor{left:24.5%;top:20.3%;width:51%;height:24.5%;border:0;border-radius:7px;box-shadow:none}
dialog.blktiger-session:not(.expanded) .metal-monitor{left:28.3%;top:21%;width:43.4%;height:19.8%;border:0;border-radius:7px;box-shadow:none}
dialog.xsleena-session:not(.expanded) .metal-monitor{left:23%;top:20.1%;width:54%;height:22.8%;border:0;border-radius:7px;box-shadow:none}
dialog.pang-session:not(.expanded) .metal-deck{left:17%;top:47%;width:66%;height:8%;z-index:2}
dialog.blktiger-session:not(.expanded) .metal-deck{left:17%;top:44%;width:66%;height:8%;z-index:2}
dialog.xsleena-session:not(.expanded) .metal-deck{left:17%;top:46%;width:66%;height:8%;z-index:2}
dialog.pang-session:not(.expanded) .metal-buttons{width:30%}
dialog.pang-session .metal-monitor video,
dialog.blktiger-session .metal-monitor video,
dialog.xsleena-session .metal-monitor video{object-fit:contain!important}
/* @cpi 2026-10-14 13:55: los tres CRT horizontales son 4:3, no la proporcion del framebuffer. */
dialog.pang-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:4/3!important}
dialog.blktiger-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:4/3!important}
dialog.xsleena-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:4/3!important}

/* @cpi 2026-10-14 15:02: el juego usa el recorte superior del mismo mueble, sin monedero ni márgenes transparentes. */
dialog.pang-session:not(.expanded) .metal-cabinet{aspect-ratio:768/910;width:min(100vw,calc(94dvh * 768/910));background-image:url('./assets/optimized/cabinets/pang-play@2x.webp')!important;background-size:133.3333% 100%;background-position:center top}
dialog.blktiger-session:not(.expanded) .metal-cabinet{aspect-ratio:804/910;width:min(100vw,calc(94dvh * 804/910));background-image:url('./assets/optimized/cabinets/blktiger-play@2x.webp')!important;background-size:127.3632% 100%;background-position:center top}
dialog.xsleena-session:not(.expanded) .metal-cabinet{aspect-ratio:904/910;width:min(100vw,calc(94dvh * 904/910));background-image:url('./assets/optimized/cabinets/xsleena-play@2x.webp')!important;background-size:113.2743% 100%;background-position:center top}
dialog.pang-session:not(.expanded) .metal-monitor{left:16%;top:34.26%;width:68%;height:41.35%}
dialog.blktiger-session:not(.expanded) .metal-monitor{left:22.36%;top:35.45%;width:55.28%;height:33.42%}
dialog.xsleena-session:not(.expanded) .metal-monitor{left:19.42%;top:33.93%;width:61.17%;height:38.48%}
dialog.pang-session:not(.expanded) .metal-deck{left:10%;top:79.33%;width:80%;height:13.5%}
dialog.blktiger-session:not(.expanded) .metal-deck{left:10%;top:74.27%;width:80%;height:13.5%}
dialog.xsleena-session:not(.expanded) .metal-deck{left:10%;top:77.64%;width:80%;height:13.5%}
dialog.pang-session .metal-cabinet:after,dialog.blktiger-session .metal-cabinet:after,dialog.xsleena-session .metal-cabinet:after{display:none}

/* @cpi 2026-10-14 14:05: boton unico acotado en zoom, sin crecer hasta ocupar todo el grupo. */
dialog.expanded .metal-buttons{justify-content:center;height:100%}
dialog.expanded .metal-buttons button{max-width:110px}
dialog.expanded .metal-buttons i{width:min(76%,80px)}
.metal-status:has(.arcade-loading){position:absolute;inset:0;z-index:3;display:grid;place-items:center;background:#090909}
.metal-status[hidden]{display:none!important}

/* @cpi 2026-10-14 18:50: Pang normal, mandos apoyados sobre el tablero y botón proporcionado; conserva el zoom y la captura táctil. */
dialog.pang-session:not(.expanded) .metal-deck{left:18%;top:78.5%;width:64%;height:10%}
dialog.pang-session:not(.expanded) .metal-buttons{position:absolute;right:0;top:40%;transform:translateY(-50%);width:24%;min-width:48px}
dialog.pang-session:not(.expanded) .metal-buttons button{min-height:44px}
dialog.pang-session:not(.expanded) .metal-buttons i{width:72%;max-width:64px;aspect-ratio:1.7;border-width:2px;box-shadow:0 3px 0 #541912,0 5px 0 #b4ac8a,0 7px 6px #0009}
dialog.pang-session:not(.expanded) .metal-buttons span{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:3px;font-size:clamp(7px,.9vw,9px)}
dialog.pang-session:not(.expanded) .metal-stick{position:absolute;left:0;top:0;height:100%;width:24%}

/* @cpi 2026-10-14 19:56: subir boton y rotulo dentro del tablero, sin pisar el canto delantero. */

/* @cpi 2026-10-15: mismo arte Snow Bros y botonera comun de Slug. */
dialog.snowbros-fbneo-session:not(.expanded) .metal-cabinet{aspect-ratio:1.16959;width:min(100vw,calc(94dvh * 1.16959));background-size:100% 175.4386%}
dialog.snowbros-fbneo-session:not(.expanded) .metal-monitor{left:22%;top:33.3%;width:56%;height:43%;border:0;box-shadow:none}
dialog.snowbros-fbneo-session:not(.expanded) .metal-deck{left:15%;top:82.4%;width:70%;height:12.3%}

/* @cpi 2026-10-15 23:55: geometria medida en ambos muebles, conservando CRT 4:3 y mandos sobre el tablero. */
dialog.bublbobl-session:not(.expanded) .metal-cabinet{aspect-ratio:832/900;width:min(100vw,calc(94dvh * 832/900));background-size:123.08% 100%;background-position:center top}
dialog.bublbobl-session:not(.expanded) .metal-monitor{left:24.8%;top:38.67%;width:50.6%;height:35.11%;border:0;box-shadow:none}
dialog.bublbobl-session:not(.expanded) .metal-deck{left:13%;top:77.5%;width:74%;height:12%}
dialog.ssridersebd-session:not(.expanded) .metal-cabinet{aspect-ratio:716/900;width:min(100vw,calc(94dvh * 716/900));background-size:143.02% 100%;background-position:center top}
dialog.ssridersebd-session:not(.expanded) .metal-monitor{left:23%;top:40.9%;width:54%;height:32.2%;border:0;box-shadow:none}
dialog.ssridersebd-session:not(.expanded) .metal-deck{left:12%;top:79%;width:76%;height:12%}
dialog.bublbobl-session .metal-cabinet:after,dialog.ssridersebd-session .metal-cabinet:after,dialog.speedspn-session .metal-cabinet:after{display:none}
/* Speed Spin conserva monitor y mandos, sin dibujar un cabinet sobre la mesa real. */
dialog.speedspn-session:not(.expanded) .metal-cabinet{background:#122b28!important;aspect-ratio:4/4;width:min(100vw,90dvh);border:4px solid #d8e3d5;border-radius:12px}
dialog.speedspn-session:not(.expanded) .metal-monitor{left:2%;top:2%;width:96%;height:72%;border:0;box-shadow:none}
dialog.speedspn-session:not(.expanded) .metal-deck{left:4%;top:76%;width:92%;height:21%}

/* @cpi 2026-10-15 19:05: pixeles no cuadrados originales; ejecutor y mirones ocupan el CRT 4:3. */
dialog:is(.bublbobl-session,.ssridersebd-session,.speedspn-session) .metal-monitor video{object-fit:fill}

/* @cpi 2026-10-15 23:55: Final Fight conserva arte completo; el recorte CSS acaba bajo mandos. */
dialog.ffight-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/936;width:min(119vw,calc(86dvh * 1024/936));background-size:100% auto;background-position:center top}
dialog.ffight-session:not(.expanded) .metal-monitor{left:27.4%;top:37.1%;width:44%;height:36.1%;border:0;box-shadow:none}
dialog.ffight-session:not(.expanded) .metal-deck{left:21%;top:81%;width:58%;height:10%}
dialog.ffight-session .metal-cabinet:after{display:none}
dialog.ffight-session .metal-monitor video{object-fit:fill}

/* @cpi 2026-10-15 20:20: pantalla con aspecto CRT conservado dentro del marco negro; mandos sobre la repisa. */
dialog.trackfld-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/900;width:min(135vw,calc(86dvh * 1024/900));background-size:100% auto;background-position:center top}
dialog.trackfld-session:not(.expanded) .metal-monitor{left:30.8%;top:37.5%;width:38.6%;height:32.94%;border:0;box-shadow:none}
dialog.trackfld-session:not(.expanded) .metal-deck{left:23%;top:81%;width:54%;height:10%}
dialog.trackfld-session .metal-stick{display:none!important}
dialog.trackfld-session .metal-buttons{width:100%;justify-content:space-evenly}
dialog.trackfld-session .metal-cabinet:after,dialog.panic-session .metal-cabinet:after{display:none}
dialog.panic-session:not(.expanded) .metal-cabinet{aspect-ratio:1086/860;width:min(162vw,calc(86dvh * 1086/860));background-size:100% auto;background-position:center top}
dialog.panic-session:not(.expanded) .metal-monitor{left:37%;top:39.7%;width:25.3%;height:42.6%;border:0;box-shadow:none}
dialog.panic-session:not(.expanded) .metal-deck{left:24%;top:85%;width:51%;height:10%}

/* @cpi 2026-10-16 11:20: geometria del cabinet Pac-Man aprobado; recorte .54 y CRT vertical. */
dialog.pacman-session:not(.expanded) .metal-cabinet{aspect-ratio:.964283;width:min(121.95122vw,calc(94dvh * .964283));background-size:100% 185.185185%;background-position:center top}
dialog.pacman-session:not(.expanded) .metal-monitor{left:29.1%;top:30.925926%;width:42%;height:53.333333%;border:0;border-radius:0;box-shadow:none}
dialog.pacman-session:not(.expanded) .metal-deck{left:20%;top:87.592593%;width:60%;height:11.111111%;justify-content:center}
dialog.pacman-session .metal-buttons,dialog.pacman-session .metal-cabinet:after{display:none}
dialog.pacman-session .metal-monitor video{object-fit:contain!important}
dialog.pacman-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}

/* @cpi 2026-10-16 11:44: Space Invaders conserva arte, recorte y ventana vertical originales. */
dialog.invaders-session:not(.expanded) .metal-cabinet{aspect-ratio:.929152;width:min(120.09346vw,calc(94dvh * .929152));background-size:100% 162.601626%;background-position:center top}
dialog.invaders-session:not(.expanded) .metal-monitor{left:28.8%;top:36.585366%;width:42%;height:46.341463%;border:0;border-radius:0;box-shadow:none}
dialog.invaders-session:not(.expanded) .metal-deck{left:20%;top:86.178862%;width:60%;height:9.756098%}
dialog.invaders-session .metal-cabinet:after{display:none}
dialog.invaders-session .metal-monitor video{object-fit:contain!important}
dialog.invaders-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.invaders-session:not(.expanded) .metal-buttons{width:24%}

/* @cpi 2026-10-16: Galaxian conserva el recorte del cabinet vertical aprobado. */
dialog.galaxian-session:not(.expanded) .metal-cabinet{aspect-ratio:.929152;width:min(120.09346vw,calc(94dvh * .929152));background-size:100% 162.601626%;background-position:center top}
dialog.galaxian-session:not(.expanded) .metal-monitor{left:28.8%;top:36.585366%;width:42%;height:46.341463%;border:0;border-radius:0;box-shadow:none}
dialog.galaxian-session:not(.expanded) .metal-deck{left:20%;top:86.178862%;width:60%;height:9.756098%}
dialog.galaxian-session .metal-cabinet:after{display:none}
dialog.galaxian-session .metal-monitor video{object-fit:contain!important}
dialog.galaxian-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.galaxian-session:not(.expanded) .metal-buttons{width:24%}

/* @cpi 2026-10-16 12:17: ocultar solo el cartel de carga sobre el reset, nunca errores ni controles. */
.runtime-boot-visible>.arcade-start:has(.arcade-loading){visibility:hidden!important}

/* @cpi 2026-10-16 12:30: monitor vectorial y mandos dentro del arte aprobado de Asteroids. */
dialog.asteroids-session:not(.expanded) .metal-cabinet{aspect-ratio:1.2346;width:min(122vw,calc(88dvh * 1.2346));background-size:100% 185.185%;background-position:center top}
dialog.asteroids-session:not(.expanded) .metal-monitor{left:25.2%;top:34.63%;width:49.6%;height:43.06%;border:0;box-shadow:none}
dialog.asteroids-session:not(.expanded) .metal-deck{left:20%;top:81.5%;width:60%;height:16%;background:none}
dialog.asteroids-session .metal-cabinet:after{display:none}
dialog.asteroids-session .metal-monitor video{object-fit:contain!important}
/* @cpi 2026-10-16 12:36: los vectores no usan escalado nearest-neighbour de sprites. */
dialog.asteroids-session .metal-monitor canvas,dialog.asteroids-session .metal-monitor video{image-rendering:auto!important}
dialog.asteroids-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:4/3!important}


/* @cpi 2026-10-16 12:43: conservar ventana y mandos del arte Frogger, CRT 3:4 sin recortes. */
dialog.frogger-session:not(.expanded) .metal-cabinet{aspect-ratio:1.1695906;width:min(130.43478vw,calc(94dvh * 1.1695906));background-size:100% 175.438596%;background-position:center top}
dialog.frogger-session:not(.expanded) .metal-monitor{left:32.5%;top:28.947368%;width:35%;height:48.245614%;border:0;box-shadow:none}
dialog.frogger-session:not(.expanded) .metal-deck{left:20%;top:80.701754%;width:60%;height:14.035088%}
dialog.frogger-session .metal-buttons,dialog.frogger-session .metal-cabinet:after{display:none}
dialog.frogger-session .metal-monitor video{object-fit:contain!important}
dialog.frogger-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}

/* @cpi 2026-10-16 13:03: ventana Arkanoid original, pantalla vertical completa y pala en el panel. */
dialog.arkanoid-session:not(.expanded) .metal-cabinet{aspect-ratio:1.1695906;width:min(137.614679vw,calc(94dvh * 1.1695906));background-size:100% 175.438596%;background-position:center top}
dialog.arkanoid-session:not(.expanded) .metal-monitor{left:37.34375%;top:35.087719%;width:25.3125%;height:39.473684%;border:0;box-shadow:none}
dialog.arkanoid-session:not(.expanded) .metal-deck{left:20%;top:85.964912%;width:60%;height:8.77193%}
dialog.arkanoid-session .metal-cabinet:after{display:none}
dialog.arkanoid-session .metal-monitor video{object-fit:contain!important}
dialog.arkanoid-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.arkanoid-session:not(.expanded) .metal-buttons{width:24%}

/* @cpi 2026-10-16 13:12: panel compacto morado/dorado, lista alfabetica con scroll para salones concurridos. */
dialog.metal-session .metal-coop{padding:0;background:#251b32f5;border:1px solid #b39a61;border-radius:10px;color:#f3e9d6;cursor:pointer;box-shadow:0 6px 20px #0006}
dialog.metal-session .metal-coop summary{padding:10px 13px;color:#e8c982;font-weight:600;cursor:pointer}
dialog.metal-session .metal-coop[open]{width:min(300px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}
dialog.metal-session .metal-coop>section{padding:0 10px 10px}
dialog.metal-session .coop-help{margin:0 0 10px;color:#d7c9df;font:12px/1.45 system-ui}
dialog.metal-session .coop-list{display:flex;flex-direction:column;gap:4px;max-height:calc(100dvh - 190px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#a98a53 #251b32}
dialog.metal-session .metal-coop .coop-person{display:flex;align-items:center;gap:10px;flex-shrink:0;margin:0;padding:6px 8px;width:100%;text-align:left;background:#372641;border:1px solid #a88b512e;border-radius:7px;color:#f4ebdc;cursor:pointer}
dialog.metal-session .metal-coop .coop-person:hover{background:#50345e;border-color:#d1b36f}
dialog.metal-session .metal-coop .coop-person:focus-visible{outline:2px solid #e8c982;outline-offset:-2px}
dialog.metal-session .coop-avatar{position:relative;display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:6px;overflow:hidden;background:#614870;color:#f5dc9d}
dialog.metal-session .coop-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
dialog.metal-session .coop-nick{min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:500}

/* @cpi 2026-10-16 16:18: Final Fight en movil vertical: dos botones proximos para ataque+salto, sin acciones adicionales. */
@media(max-width:700px) and (orientation:portrait){
 dialog.ffight-session:not([data-arcade-landscape]) .metal-buttons{width:auto;flex:none;gap:6px;justify-content:flex-end;align-items:center;margin-left:auto;padding-right:2px}
 dialog.ffight-session:not([data-arcade-landscape]) .metal-buttons button{flex:0 0 clamp(46px,13.5vw,64px);width:clamp(46px,13.5vw,64px);max-width:64px;min-height:52px}
 dialog.ffight-session:not([data-arcade-landscape]) .metal-buttons i{width:92%;max-width:60px;aspect-ratio:1.3}
 dialog.ffight-session:not([data-arcade-landscape]) .metal-buttons [data-action=jump]{translate:0 -8px}
 dialog.ffight-session:not([data-arcade-landscape]) .metal-buttons span{margin-top:7px;font-size:8px;white-space:nowrap}
}

/* @cpi 2026-10-16 16:48: monitor CRT completo, ambos tableros y mandos en el mueble aprobado. */
dialog.puzzlebobble-session:not(.expanded) .metal-cabinet{aspect-ratio:.87;width:min(109vw,calc(94dvh * .87));background-size:100% 100%}
dialog.puzzlebobble-session:not(.expanded) .metal-monitor{left:14.2%;top:31.6%;width:71.6%;height:46.72%;border:0;box-shadow:none}
dialog.puzzlebobble-session:not(.expanded) .metal-deck{left:20%;top:82%;width:60%;height:10%}
dialog.puzzlebobble-session .metal-cabinet:after{display:none}
dialog.puzzlebobble-session .metal-monitor video{object-fit:contain!important}
dialog.puzzlebobble-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:4/3!important}
dialog.puzzlebobble-session:not(.expanded) .metal-buttons{width:24%}

/* @cpi 2026-10-16 17:03: seis acciones originales en dos filas de tres, sin botones de combos inventados. */
.metal-buttons[data-action-count="6"]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:46%;align-content:center}
.metal-buttons[data-action-count="6"] button{width:100%;min-width:0;min-height:0}
.metal-buttons[data-action-count="6"] button i{width:clamp(30px,6vw,56px);height:auto;aspect-ratio:1.3;max-width:100%}
.metal-buttons[data-action-count="6"] button span{font-size:clamp(7px,1.6vw,10px)}
@media (orientation:landscape){.metal-session[data-arcade-landscape] .metal-buttons[data-action-count="6"]{width:100%;gap:5px}}

/* @cpi 2026-10-16 18:37: recorte del mueble Dino, mismo arte que salon y sin controles duplicados. */
dialog.dino-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/860;width:min(127vw,calc(94dvh * 1024/860));background-size:100% auto;background-position:center top}
dialog.dino-session:not(.expanded) .metal-monitor{left:28.9%;top:36.74%;width:42.2%;height:35.35%;border:0;box-shadow:none}
dialog.dino-session:not(.expanded) .metal-deck{left:21%;top:79%;width:58%;height:10%;z-index:2}
dialog.dino-session .metal-cabinet:after{display:none}
dialog.dino-session .metal-buttons{width:38%;gap:8px}
dialog.dino-session .metal-buttons i{width:min(90%,60px)}

/* @cpi 2026-10-16 19:25: Double Dragon, pantalla y mandos medidos sobre el arte final. */
dialog.ddragon-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/865;width:min(127vw,calc(94dvh * 1024/865));background-size:100% auto;background-position:center top}
dialog.ddragon-session:not(.expanded) .metal-monitor{left:33.98%;top:45.66%;width:32.03%;height:28.9%;border:0;box-shadow:none}
dialog.ddragon-session:not(.expanded) .metal-deck{left:21%;top:85.78%;width:58.1%;height:9.48%;z-index:2}
dialog.ddragon-session .metal-cabinet:after{display:none}
dialog.ddragon-session .metal-buttons{width:48%;gap:6px}
dialog.ddragon-session .metal-buttons i{width:min(90%,46px)}

/* @cpi 2026-10-16 20:20: encaje propio de Street Fighter II, sin alterar otros cabinets. */
dialog.sf2-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/825;width:min(127vw,calc(94dvh * 1024/825));background-size:100% auto;background-position:center top}
dialog.sf2-session:not(.expanded) .metal-monitor{left:30.859%;top:35.758%;width:38.086%;height:37.576%;border:0;box-shadow:none}
dialog.sf2-session:not(.expanded) .metal-deck{left:20.02%;top:82.424%;width:59.57%;height:11.515%;z-index:2}
dialog.sf2-session .metal-cabinet:after{display:none}

/* @cpi 2026-10-16 20:20: geometria del cabinet Tumble Pop. */
dialog.tumblep-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/890;width:min(127vw,calc(94dvh * 1024/890));background-size:100% auto;background-position:center top}
dialog.tumblep-session:not(.expanded) .metal-monitor{left:28.418%;top:40.562%;width:42.578%;height:34.157%;border:0;box-shadow:none}
dialog.tumblep-session:not(.expanded) .metal-deck{left:18.066%;top:83.034%;width:63.477%;height:9.438%;z-index:2}
dialog.tumblep-session .metal-cabinet:after{display:none}

/* @cpi 2026-10-16 20:25: seis botones dentro del tablero, etiquetas cortas sin invadir monitor. */
dialog.sf2-session:not(.expanded):not([data-arcade-landscape]) .metal-deck{top:79%;height:17%}
dialog.sf2-session:not(.expanded):not([data-arcade-landscape]) .metal-buttons{height:100%;gap:4px 8px;align-content:center}
dialog.sf2-session:not(.expanded):not([data-arcade-landscape]) .metal-buttons i{width:clamp(18px,5vw,30px);border-width:2px;box-shadow:0 2px 0 #541912,0 3px 0 #b4ac8a}
dialog.sf2-session:not(.expanded):not([data-arcade-landscape]) .metal-buttons span{margin-top:3px;font-size:7px}
dialog.sf2-session:not(.expanded):not([data-arcade-landscape]) .metal-stick{height:58%}

/* @cpi 2026-10-16 20:55: geometria propia de Golden Axe. */
dialog.goldnaxe-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/930;width:min(127vw,calc(94dvh * 1024/930));background-size:100% auto;background-position:center top}
dialog.goldnaxe-session:not(.expanded) .metal-monitor{left:30.859%;top:37.527%;width:38.086%;height:37.957%;border:0;box-shadow:none}
dialog.goldnaxe-session:not(.expanded) .metal-deck{left:20.02%;top:84.409%;width:59.57%;height:9.14%;z-index:2}
dialog.goldnaxe-session .metal-cabinet:after{display:none}
dialog.goldnaxe-session .metal-buttons{width:40%;gap:6px}
dialog.goldnaxe-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Bomberman World. */
dialog.bbmanw-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/910;width:min(127vw,calc(94dvh * 1024/910));background-size:100% auto;background-position:center top}
dialog.bbmanw-session:not(.expanded) .metal-monitor{left:27.539%;top:39.56%;width:44.727%;height:37.033%;border:0;box-shadow:none}
dialog.bbmanw-session:not(.expanded) .metal-deck{left:17.578%;top:84.945%;width:64.453%;height:8.791%;z-index:2}
dialog.bbmanw-session .metal-cabinet:after{display:none}
dialog.bbmanw-session .metal-buttons{width:40%;gap:6px}
dialog.bbmanw-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Aero Fighters. */
dialog.aerofgt-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/935;width:min(127vw,calc(94dvh * 1024/935));background-size:100% auto;background-position:center top}
dialog.aerofgt-session:not(.expanded) .metal-monitor{left:34.18%;top:30.802%;width:31.641%;height:44.92%;border:0;box-shadow:none}
dialog.aerofgt-session:not(.expanded) .metal-deck{left:20.02%;top:81.818%;width:59.57%;height:9.626%;z-index:2}
dialog.aerofgt-session .metal-cabinet:after{display:none}
dialog.aerofgt-session .metal-buttons{width:40%;gap:6px}
dialog.aerofgt-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de 1943: The Battle of Midway. @cpi 2026-10-18 13:09: clase escapada (\31 943), un selector que empieza por cifra se descartaba entero. */
dialog.\31 943-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/975;width:min(127vw,calc(94dvh * 1024/975));background-size:100% auto;background-position:center top}
dialog.\31 943-session:not(.expanded) .metal-monitor{left:33.691%;top:31.487%;width:32.617%;height:37.949%;border:0;box-shadow:none}
dialog.\31 943-session:not(.expanded) .metal-deck{left:19.043%;top:83.795%;width:62.012%;height:9.026%;z-index:2}
dialog.\31 943-session .metal-cabinet:after{display:none}
dialog.\31 943-session .metal-buttons{width:40%;gap:6px}
dialog.\31 943-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Super Sidekicks 2. */
dialog.ssideki2-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/915;width:min(127vw,calc(94dvh * 1024/915));background-size:100% auto;background-position:center top}
dialog.ssideki2-session:not(.expanded) .metal-monitor{left:27.051%;top:34.536%;width:45.605%;height:38.579%;border:0;box-shadow:none}
dialog.ssideki2-session:not(.expanded) .metal-deck{left:19.043%;top:83.06%;width:61.523%;height:9.29%;z-index:2}
dialog.ssideki2-session .metal-cabinet:after{display:none}
dialog.ssideki2-session .metal-buttons{width:40%;gap:6px}
dialog.ssideki2-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Shock Troopers. */
dialog.shocktro-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/895;width:min(127vw,calc(94dvh * 1024/895));background-size:100% auto;background-position:center top}
dialog.shocktro-session:not(.expanded) .metal-monitor{left:27.539%;top:35.866%;width:45.117%;height:37.765%;border:0;box-shadow:none}
dialog.shocktro-session:not(.expanded) .metal-deck{left:17.578%;top:82.123%;width:64.941%;height:9.609%;z-index:2}
dialog.shocktro-session .metal-cabinet:after{display:none}
dialog.shocktro-session .metal-buttons{width:40%;gap:6px}
dialog.shocktro-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:20: moneda pequena de Snow accesible sin cubrir stick, acciones ni imagen del juego. */

/* @cpi 2026-10-16 20:55: geometria propia de NBA Jam. */
dialog.nbajam-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/815;width:min(127vw,calc(94dvh * 1024/815));background-size:100% auto;background-position:center top}
dialog.nbajam-session:not(.expanded) .metal-monitor{left:33.984%;top:42.945%;width:31.934%;height:29.939%;border:0;box-shadow:none}
dialog.nbajam-session:not(.expanded) .metal-deck{left:21.973%;top:81.718%;width:56.152%;height:9.325%;z-index:2}
dialog.nbajam-session .metal-cabinet:after{display:none}
dialog.nbajam-session .metal-buttons{width:40%;gap:6px}
dialog.nbajam-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 22:20: pad comun invisible, mandos por encima y lateral izquierdo libre en horizontal. */
dialog.arcade-touch-pad-enabled .arcade-touch-pad{position:absolute;left:-18%;top:-85%;width:61%;height:195%;z-index:1;touch-action:none;user-select:none}
dialog.arcade-touch-pad-enabled .metal-stick,dialog.arcade-touch-pad-enabled .metal-buttons{z-index:2}
dialog.arcade-touch-pad-enabled[data-arcade-landscape] .arcade-touch-pad{left:4px;top:76px;bottom:52px;width:calc((100vw - var(--landscape-width))/2 - 8px);height:auto}
dialog.arcade-touch-pad-enabled.spectator-cabinet .arcade-touch-pad{display:none!important}

/* @cpi 2026-10-16 20:55: geometria propia de Bomb Jack. */
dialog.bombjack-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/934;width:min(127vw,calc(94dvh * 1024/934));background-size:100% auto;background-position:center top}
dialog.bombjack-session:not(.expanded) .metal-monitor{left:30.469%;top:32.12%;width:39.258%;height:49.679%;border:0;box-shadow:none}
dialog.bombjack-session:not(.expanded) .metal-deck{left:18.555%;top:84.582%;width:62.891%;height:8.565%;z-index:2}
dialog.bombjack-session .metal-cabinet:after{display:none}
dialog.bombjack-session .metal-buttons{width:40%;gap:6px}
dialog.bombjack-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Kung-Fu Master. */
dialog.kungfum-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/835;width:min(127vw,calc(94dvh * 1024/835));background-size:100% auto;background-position:center top}
dialog.kungfum-session:not(.expanded) .metal-monitor{left:27.539%;top:43.114%;width:45.117%;height:39.042%;border:0;box-shadow:none}
dialog.kungfum-session:not(.expanded) .metal-deck{left:18.457%;top:88.024%;width:62.891%;height:8.743%;z-index:2}
dialog.kungfum-session .metal-cabinet:after{display:none}
dialog.kungfum-session .metal-buttons{width:40%;gap:6px}
dialog.kungfum-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Green Beret. */
dialog.gberet-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/880;width:min(127vw,calc(94dvh * 1024/880));background-size:100% auto;background-position:center top}
dialog.gberet-session:not(.expanded) .metal-monitor{left:26.855%;top:42.5%;width:46.289%;height:32.727%;border:0;box-shadow:none}
dialog.gberet-session:not(.expanded) .metal-deck{left:16.113%;top:81.023%;width:67.383%;height:11.591%;z-index:2}
dialog.gberet-session .metal-cabinet:after{display:none}
dialog.gberet-session .metal-buttons{width:40%;gap:6px}
dialog.gberet-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Rally-X. */
dialog.rallyx-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/830;width:min(127vw,calc(94dvh * 1024/830));background-size:100% auto;background-position:center top}
dialog.rallyx-session:not(.expanded) .metal-monitor{left:27.344%;top:40.361%;width:45.312%;height:37.229%;border:0;box-shadow:none}
dialog.rallyx-session:not(.expanded) .metal-deck{left:16.992%;top:81.566%;width:66.016%;height:9.639%;z-index:2}
dialog.rallyx-session .metal-cabinet:after{display:none}
dialog.rallyx-session .metal-buttons{width:40%;gap:6px}
dialog.rallyx-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Vigilante. */
dialog.vigilant-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/838;width:min(127vw,calc(94dvh * 1024/838));background-size:100% auto;background-position:center top}
dialog.vigilant-session:not(.expanded) .metal-monitor{left:27.734%;top:40.931%;width:44.727%;height:34.845%;border:0;box-shadow:none}
dialog.vigilant-session:not(.expanded) .metal-deck{left:12.305%;top:81.742%;width:75.391%;height:13.007%;z-index:2}
dialog.vigilant-session .metal-cabinet:after{display:none}
dialog.vigilant-session .metal-buttons{width:40%;gap:6px}
dialog.vigilant-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Astro Fighter. */
/* @cpi 2026-10-17 17:58: Astro Fighter vertical (ROT90): monitor 3:4 del nuevo mueble, recorte hasta y=850. */
dialog.astrof-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/850;width:min(138.9vw,calc(94dvh * 1024/850));background-size:100% auto;background-position:center top}
dialog.astrof-session:not(.expanded) .metal-monitor{left:35.645%;top:31.529%;width:28.906%;height:46.471%;border:0;box-shadow:none}
dialog.astrof-session:not(.expanded) .metal-deck{left:17.188%;top:82.353%;width:65.625%;height:11.765%;z-index:2}
dialog.astrof-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.astrof-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}
dialog.astrof-session .metal-cabinet:after{display:none}
dialog.astrof-session .metal-buttons{width:40%;gap:6px}
dialog.astrof-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Phoenix. */
dialog.phoenix-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/906;width:min(127vw,calc(94dvh * 1024/906));background-size:100% auto;background-position:center top}
dialog.phoenix-session:not(.expanded) .metal-monitor{left:28.809%;top:31.236%;width:42.969%;height:50.552%;border:0;box-shadow:none}
dialog.phoenix-session:not(.expanded) .metal-deck{left:15.625%;top:85.651%;width:68.75%;height:11.479%;z-index:2}
dialog.phoenix-session .metal-cabinet:after{display:none}
dialog.phoenix-session .metal-buttons{width:40%;gap:6px}
dialog.phoenix-session .metal-buttons i{width:min(80%,44px)}
/* @cpi 2026-10-17 18:14: Phoenix es ROT90 (3:4); el hueco del cabinet es casi cuadrado (440x458 de 1024x906), asi que el monitor se centra a 3:4 dentro de el. */
dialog.phoenix-session:not(.expanded) .metal-monitor{left:33.521%;width:33.545%}
dialog.phoenix-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.phoenix-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}

/* @cpi 2026-10-16 20:55: geometria propia de Wonder Boy. */
dialog.wboy-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/833;width:min(127vw,calc(94dvh * 1024/833));background-size:100% auto;background-position:center top}
dialog.wboy-session:not(.expanded) .metal-monitor{left:25.195%;top:44.898%;width:49.805%;height:33.613%;border:0;box-shadow:none}
dialog.wboy-session:not(.expanded) .metal-deck{left:14.258%;top:87.035%;width:71.289%;height:9.364%;z-index:2}
dialog.wboy-session .metal-cabinet:after{display:none}
dialog.wboy-session .metal-buttons{width:40%;gap:6px}
dialog.wboy-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Out Run. */
dialog.outrun-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/830;width:min(127vw,calc(94dvh * 1024/830));background-size:100% auto;background-position:center top}
dialog.outrun-session:not(.expanded) .metal-monitor{left:24.805%;top:37.229%;width:50.195%;height:41.446%;border:0;box-shadow:none}
dialog.outrun-session:not(.expanded) .metal-deck{left:14.258%;top:84.699%;width:71.289%;height:9.639%;z-index:2}
dialog.outrun-session .metal-cabinet:after{display:none}
dialog.outrun-session .metal-buttons{width:40%;gap:6px}
dialog.outrun-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Hang-On. */
dialog.hangon-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/881;width:min(127vw,calc(94dvh * 1024/881));background-size:100% auto;background-position:center top}
dialog.hangon-session:not(.expanded) .metal-monitor{left:23.633%;top:39.501%;width:52.734%;height:34.733%;border:0;box-shadow:none}
dialog.hangon-session:not(.expanded) .metal-deck{left:14.453%;top:82.179%;width:71.289%;height:11.918%;z-index:2}
dialog.hangon-session .metal-cabinet:after{display:none}
dialog.hangon-session .metal-buttons{width:40%;gap:6px}
dialog.hangon-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Ghosts ’n Goblins. */
dialog.gng-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/845;width:min(127vw,calc(94dvh * 1024/845));background-size:100% auto;background-position:center top}
dialog.gng-session:not(.expanded) .metal-monitor{left:27.539%;top:41.065%;width:44.922%;height:37.278%;border:0;box-shadow:none}
dialog.gng-session:not(.expanded) .metal-deck{left:15.039%;top:87.337%;width:69.922%;height:6.864%;z-index:2}
dialog.gng-session .metal-cabinet:after{display:none}
dialog.gng-session .metal-buttons{width:40%;gap:6px}
dialog.gng-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de Shinobi. */
dialog.shinobi-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/840;width:min(127vw,calc(94dvh * 1024/840));background-size:100% auto;background-position:center top}
dialog.shinobi-session:not(.expanded) .metal-monitor{left:25.391%;top:38.571%;width:49.219%;height:41.667%;border:0;box-shadow:none}
dialog.shinobi-session:not(.expanded) .metal-deck{left:15.137%;top:85.595%;width:70.117%;height:9.286%;z-index:2}
dialog.shinobi-session .metal-cabinet:after{display:none}
dialog.shinobi-session .metal-buttons{width:40%;gap:6px}
dialog.shinobi-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-16 20:55: geometria propia de E-SWAT: Cyber Police. */
dialog.eswat-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/830;width:min(127vw,calc(94dvh * 1024/830));background-size:100% auto;background-position:center top}
dialog.eswat-session:not(.expanded) .metal-monitor{left:25.391%;top:40.482%;width:49.609%;height:37.831%;border:0;box-shadow:none}
dialog.eswat-session:not(.expanded) .metal-deck{left:14.941%;top:86.988%;width:70.117%;height:7.831%;z-index:2}
dialog.eswat-session .metal-cabinet:after{display:none}
dialog.eswat-session .metal-buttons{width:40%;gap:6px}
dialog.eswat-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-17: geometria propia de Neo Turf Masters. */
dialog.turfmast-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/900;width:min(127vw,calc(94dvh * 1024/900));background-size:100% auto;background-position:center top}
dialog.turfmast-session:not(.expanded) .metal-monitor{left:25.977%;top:33.556%;width:48.828%;height:40.667%;border:0;box-shadow:none}
dialog.turfmast-session:not(.expanded) .metal-deck{left:13.672%;top:79.111%;width:72.656%;height:10.889%;z-index:2}
dialog.turfmast-session .metal-cabinet:after{display:none}
dialog.turfmast-session .metal-buttons{width:40%;gap:6px}
dialog.turfmast-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-17 05:13: geometria propia de Amidar (CRT vertical 3:4). */
dialog.amidar-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/870;width:min(127vw,calc(94dvh * 1024/870));background-size:100% auto;background-position:center top}
dialog.amidar-session:not(.expanded) .metal-monitor{left:36.523%;top:32.069%;width:27.148%;height:42.759%;border:0;box-shadow:none}
dialog.amidar-session:not(.expanded) .metal-deck{left:17.578%;top:78.851%;width:64.844%;height:10.345%;z-index:2}
dialog.amidar-session .metal-cabinet:after{display:none}
dialog.amidar-session .metal-buttons{width:40%;gap:6px}
dialog.amidar-session .metal-buttons i{width:min(80%,44px)}
/* @cpi 2026-10-17 18:14: Amidar es ROT90; al ampliar se mantiene el CRT 3:4 en lugar de la proporcion del canvas. */
dialog.amidar-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.amidar-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}

/* @cpi 2026-10-17 11:08: geometria propia de Commando (CRT vertical 3:4). */
dialog.commando-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/860;width:min(127vw,calc(94dvh * 1024/860));background-size:100% auto;background-position:center top}
dialog.commando-session:not(.expanded) .metal-monitor{left:35.352%;top:30.581%;width:29.492%;height:50.465%;border:0;box-shadow:none}
dialog.commando-session:not(.expanded) .metal-deck{left:17.09%;top:85.465%;width:65.918%;height:9.302%;z-index:2}
dialog.commando-session .metal-cabinet:after{display:none}
dialog.commando-session .metal-buttons{width:40%;gap:6px}
dialog.commando-session .metal-buttons i{width:min(80%,44px)}
/* @cpi 2026-10-17 18:24: turno nativo en la esquina superior izquierda del monitor. */
dialog.metal-session .metal-turn{position:absolute;top:4px;left:4px;z-index:6;margin:0;padding:2px 7px;max-width:45%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:1px solid #b39a61;border-radius:6px;background:#251b32d9;color:#f3e9d6;font:700 12px system-ui;pointer-events:none}
dialog.metal-session .metal-turn.own{background:#24451fd9;border-color:#9fd18a;color:#fff}
dialog.metal-session .metal-turn[hidden]{display:none}

/* @cpi 2026-10-17 18:56: geometria propia de Moon Cresta; hueco del monitor ya en 3:4. */
dialog.mooncrst-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/945;width:min(127vw,calc(94dvh * 1024/945));background-size:100% auto;background-position:center top}
dialog.mooncrst-session:not(.expanded) .metal-monitor{left:33.008%;top:30.37%;width:33.984%;height:49.206%;border:0;box-shadow:none}
dialog.mooncrst-session:not(.expanded) .metal-deck{left:17.578%;top:81.27%;width:65.43%;height:9.947%;z-index:2}
dialog.mooncrst-session .metal-cabinet:after{display:none}
dialog.mooncrst-session .metal-buttons{width:40%;gap:6px}
dialog.mooncrst-session .metal-buttons i{width:min(80%,44px)}
dialog.mooncrst-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.mooncrst-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}

/* @cpi 2026-10-17 20:15: geometria propia de Hyper Sports; hueco del monitor 4:3. */
dialog.hyperspt-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/850;width:min(127vw,calc(94dvh * 1024/850));background-size:100% auto;background-position:center top}
dialog.hyperspt-session:not(.expanded) .metal-monitor{left:27.148%;top:36.706%;width:46.289%;height:41.529%;border:0;box-shadow:none}
dialog.hyperspt-session:not(.expanded) .metal-deck{left:17.578%;top:82.353%;width:67.383%;height:11.176%;z-index:2}
dialog.hyperspt-session .metal-cabinet:after{display:none}
dialog.hyperspt-session .metal-buttons{width:60%;gap:6px}
dialog.hyperspt-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-17 20:46: geometria propia de Pole Position; monitor 4:3 centrado en el hueco. */
dialog.polepos-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/900;width:min(127vw,calc(94dvh * 1024/900));background-size:100% auto;background-position:center top}
dialog.polepos-session:not(.expanded) .metal-monitor{left:29.297%;top:41.667%;width:41.016%;height:35.0%;border:0;box-shadow:none}
dialog.polepos-session:not(.expanded) .metal-deck{left:17.578%;top:80.0%;width:65.43%;height:13.333%;z-index:2}
dialog.polepos-session .metal-cabinet:after{display:none}
dialog.polepos-session .metal-buttons{width:60%;gap:6px}
dialog.polepos-session .metal-buttons i{width:min(80%,44px)}

/* @cpi 2026-10-17 23:05: geometria propia de Scramble. */
dialog.scramble-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/870;width:min(127vw,calc(94dvh * 1024/870));background-size:100% auto;background-position:center top}
dialog.scramble-session:not(.expanded) .metal-monitor{left:35.938%;top:33.563%;width:28.32%;height:44.483%;border:0;box-shadow:none}
dialog.scramble-session:not(.expanded) .metal-deck{left:18.555%;top:87.356%;width:63.477%;height:11.494%;z-index:2}
dialog.scramble-session .metal-cabinet:after{display:none}
dialog.scramble-session .metal-buttons{width:40%;gap:6px}
dialog.scramble-session .metal-buttons i{width:min(80%,44px)}
dialog.scramble-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.scramble-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}

/* @cpi 2026-10-17 23:05: geometria propia de Pengo. */
dialog.pengo-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/860;width:min(127vw,calc(94dvh * 1024/860));background-size:100% auto;background-position:center top}
dialog.pengo-session:not(.expanded) .metal-monitor{left:35.156%;top:31.047%;width:30.078%;height:47.791%;border:0;box-shadow:none}
dialog.pengo-session:not(.expanded) .metal-deck{left:19.531%;top:86.047%;width:61.523%;height:11.047%;z-index:2}
dialog.pengo-session .metal-cabinet:after{display:none}
dialog.pengo-session .metal-buttons{width:40%;gap:6px}
dialog.pengo-session .metal-buttons i{width:min(80%,44px)}
dialog.pengo-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.pengo-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}

/* @cpi 2026-10-17 23:05: geometria propia de Bagman. */
dialog.bagman-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/830;width:min(127vw,calc(94dvh * 1024/830));background-size:100% auto;background-position:center top}
dialog.bagman-session:not(.expanded) .metal-monitor{left:36.133%;top:32.289%;width:27.539%;height:45.301%;border:0;box-shadow:none}
dialog.bagman-session:not(.expanded) .metal-deck{left:20.508%;top:84.94%;width:59.57%;height:10.241%;z-index:2}
dialog.bagman-session .metal-cabinet:after{display:none}
dialog.bagman-session .metal-buttons{width:40%;gap:6px}
dialog.bagman-session .metal-buttons i{width:min(80%,44px)}
dialog.bagman-session[data-screen-zoom].expanded .metal-monitor{aspect-ratio:3/4!important}
dialog.bagman-session[data-screen-zoom].expanded .metal-monitor canvas{height:100%!important;aspect-ratio:3/4!important;object-fit:fill!important}

/* @cpi 2026-10-17 23:05: geometria propia de Rygar. */
dialog.rygar-session:not(.expanded) .metal-cabinet{aspect-ratio:1024/830;width:min(127vw,calc(94dvh * 1024/830));background-size:100% auto;background-position:center top}
dialog.rygar-session:not(.expanded) .metal-monitor{left:33.203%;top:41.566%;width:33.203%;height:30.723%;border:0;box-shadow:none}
dialog.rygar-session:not(.expanded) .metal-deck{left:19.531%;top:87.711%;width:63.477%;height:10.602%;z-index:2}
dialog.rygar-session .metal-cabinet:after{display:none}
dialog.rygar-session .metal-buttons{width:40%;gap:6px}
dialog.rygar-session .metal-buttons i{width:min(80%,44px)}
