.mobile-console-effects{display:none;position:absolute;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none}
:is(.mobile-portrait,.mobile-landscape) .mobile-console-effects{display:block}
.mobile-console-bubble{opacity:0;animation:mobile-console-bubble-rise var(--bubble-duration) var(--bubble-delay) linear infinite;animation-play-state:paused}
.mobile-console-liquid-current{opacity:.65;animation:mobile-console-liquid-flow var(--current-duration) var(--current-delay) linear infinite;animation-play-state:paused}
.mobile-console-glass-sheen{opacity:0;animation:mobile-console-glass-sweep 7.4s var(--sheen-delay) ease-in-out infinite;animation-play-state:paused}
:is(.mobile-portrait,.mobile-landscape) .mobile-console-effects[data-paused="false"] :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current){animation-play-state:running}
@keyframes mobile-console-bubble-rise{
 0%{transform:translate(0,0);opacity:0}
 12%{opacity:.9}
 75%{opacity:.78}
 100%{transform:translate(var(--bubble-x),var(--bubble-y));opacity:0}
}
@keyframes mobile-console-liquid-flow{from{transform:translate(0,0)}to{transform:translate(var(--current-x),var(--current-y))}}
@keyframes mobile-console-glass-sweep{
 0%,55%{transform:translateX(0);opacity:0}
 64%{opacity:.4}
 88%,100%{transform:translateX(var(--sheen-travel));opacity:0}
}
/* The console can live outside #game on phones. Pause from the shared shell
   when its controls disappear, without an observer or per-frame DOM reads. */
body.native-transitioning .mobile-console-effects :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current),
#mobile-shell[inert] .mobile-console-effects :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current),
#mobile-shell:is(.mobile-room,.mobile-bonus-cinematic,:has(#start-screen:not([hidden]):not(.revealing-game)),:has(.floor-comic:not([hidden])),:has(#pick-rewards:not([hidden])),:has(#free-spin-total:not([hidden])),:has(.floor-entry-canvas:not([hidden])),:has(#pick-jumpscare[data-scare-stage="monster"]),:has(#pick-jumpscare[data-scare-stage="eyes"]),:has(dialog[open])) .mobile-console-effects :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current),
body:has(#game.reduced-motion) .mobile-console-effects :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current),
.mobile-console-effects[data-paused="true"] :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current){animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.mobile-console-effects{display:none}.mobile-console-effects :is(.mobile-console-bubble,.mobile-console-glass-sheen,.mobile-console-liquid-current){animation:none}}
