/* The lab scene (owner #48, #63, #70): our robot at the PC desk, holo panels, +BTC / +AIN pops; one look for the landing
   hero and the Lab's middle. Scene units x --u (set by scene-pixel.js). Sprites: 4 frames, rows work / boost / win. */
.px-room { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); pointer-events: none; --sp: 1; }
.px-wall { position: absolute; inset: 0 0 auto 0; height: calc(112 * var(--u));
  background: repeating-linear-gradient(90deg, var(--wall-a, #2e3b70) 0 calc(31 * var(--u)), var(--wall-b, #1f2850) 0 calc(32 * var(--u))); }
.px-wall::after { content: ""; position: absolute; inset: auto 0 0 0; height: calc(3 * var(--u)); background: #0b0d1a; }
.px-floor { position: absolute; inset: calc(112 * var(--u)) 0 0 0;
  background: repeating-linear-gradient(0deg, var(--floor-a, #4e2e1a) 0 calc(11 * var(--u)), var(--floor-b, #3d2414) 0 calc(12 * var(--u))); }
.px-win { position: absolute; left: calc(104 * var(--u)); top: calc(6 * var(--u)); width: calc(52 * var(--u)); height: calc(20 * var(--u));
  background: #0b1330; border: calc(2 * var(--u)) solid #0b0d1a; box-shadow: inset 0 0 0 calc(2 * var(--u)) #44569a; }
.px-win2 { display: none; }
.px-spr { position: absolute; width: calc(var(--z) * var(--u)); height: calc(var(--z) * var(--u)); background-repeat: no-repeat;
  background-size: 400% 100%; image-rendering: pixelated; image-rendering: crisp-edges;
  animation: px-run calc(0.4s * var(--sp, 1)) steps(4) infinite; }
@keyframes px-run { to { background-position-x: 133.333%; } }
.px-core { filter: drop-shadow(0 0 calc(6 * var(--u)) #2ed2ee88); transition: transform 0.12s; }
.px-core.is-hit { animation: px-run calc(0.4s * var(--sp, 1)) steps(4) infinite, px-hit 0.25s ease-out; }
@keyframes px-hit { 40% { transform: scale(1.08); } }
.px-bot, .px-agent { transition: opacity 0.3s, transform 0.3s; }
.px-bot.is-off, .px-agent.is-off { opacity: 0; transform: translateY(calc(6 * var(--u))); }
.px-rig { transition: filter 0.3s, opacity 0.3s; }
.px-rig.is-off { filter: grayscale(1) brightness(0.45); animation: none; opacity: 0.5; }
.px-room.is-dark .px-st, .px-room.is-dark .px-core { filter: grayscale(0.7) brightness(0.55); animation-play-state: paused; }
.px-room.is-paused .px-spr { animation-play-state: paused; }
.px-pop { position: absolute; font: 700 calc(9 * var(--u)) var(--font-display, var(--f-display)); color: #f0a01e; text-shadow: 0 2px 0 #0b0d1a; animation: px-pop 0.9s ease-out forwards; }
@keyframes px-pop { to { transform: translateY(calc(-26 * var(--u))); opacity: 0; } }
.px-spr[data-r] { background-size: 400% 300%; }
.px-room.is-boost .px-spr[data-r] { background-position-y: 50%; }
.px-room.is-win .px-spr[data-r] { background-position-y: 100%; }
.px-holo { position: absolute; border: calc(2 * var(--u)) solid #a970ff; background: #2a145066; box-shadow: 0 0 calc(6 * var(--u)) #a970ff66;
  animation: px-float 3.2s ease-in-out infinite; transition: opacity 0.3s; }
.px-holo svg { width: 100%; height: 100%; display: block; fill: none; stroke: #2ed2ee; stroke-width: 3; }
.px-holo.is-off { opacity: 0.15; }
@keyframes px-float { 50% { transform: translateY(calc(-3 * var(--u))); } }
.px-glow { position: absolute; left: calc(84 * var(--u)); top: calc(4 * var(--u)); width: calc(90 * var(--u)); height: calc(90 * var(--u));
  background: radial-gradient(circle, #2ed2ee40, transparent 65%); }
.px-room.is-dark .px-glow { opacity: 0; } .px-room.is-dark .px-holo { opacity: 0.1; }
.px-pop.is-btc { color: #f7931a; } .px-pop.is-ain { color: #2ed2ee; }
.px-pop { font-size: calc(11 * var(--u)); animation-duration: 1.4s; }
@media (prefers-reduced-motion: reduce) { .px-holo { animation: none; } }
@media (prefers-reduced-motion: reduce) { .px-spr { animation: none; } }
/* owner #71: the room tag (the Lab's room scene) */
.px-tag { position: absolute; left: calc(6 * var(--u)); top: calc(6 * var(--u)); padding: calc(2 * var(--u)) calc(5 * var(--u)); border-radius: calc(3 * var(--u));
  background: #0b0d1acc; border: calc(1.5 * var(--u)) solid #39405a; color: #e8edf8; font: 400 calc(8 * var(--u)) var(--font-display, var(--f-display)); letter-spacing: 0.08em; }
/* owner #72: the wide room pans inside its host; its layer (stations, rigs) takes taps, the art does not */
.px-room.is-wide { position: relative; left: 0; top: 0; transform: none; }
.px-layer { position: absolute; inset: 0; pointer-events: none; }
.px-layer [data-act] { pointer-events: auto; cursor: pointer; }
.px-in { position: absolute; left: 0; top: 0; width: 100%; }
.px-room.is-wide { background: repeating-linear-gradient(90deg, var(--wall-a, #2e3b70) 0 calc(31 * var(--u)), var(--wall-b, #1f2850) 0 calc(32 * var(--u))); }

.px-spr[hidden] { display: none; }
