.arcade-space-scene{display:none;z-index:0}
body[data-ambient-event="pacman"] .arcade-space-scene{display:block}
.arcade-pursuit{position:absolute;inset:0;width:100%;height:100%}
.arcade-pacman{position:absolute;left:0;top:0;width:48px;height:48px;animation:arcade-star-grow 20s ease-in-out both;transform-origin:center;filter:drop-shadow(0 0 7px rgba(255,232,100,.55))}
.arcade-pacman svg,.arcade-ghost svg{display:block;width:100%;height:auto;overflow:visible}
.arcade-pacman-mouth{animation:arcade-chomp .28s ease-in-out 3s infinite alternate,arcade-star-color 3s linear both}
.arcade-pacman-eye{animation:arcade-eye-appear 20s linear both}
/* Each actor's independent route and actual mouth-contact capture are controlled by app.js. */
.arcade-ghost{position:absolute;left:0;top:0;width:32px;height:38px;opacity:0;transform-origin:center;filter:drop-shadow(0 0 4px rgba(120,180,240,.2))}
.arcade-ghost-body{animation:arcade-ghost-frightened 20s linear both}
@keyframes arcade-star-grow{0%{transform:scale(.06);opacity:0}3%{opacity:1}15%,90%{transform:scale(1);opacity:1}100%{transform:scale(1);opacity:0}}
@keyframes arcade-star-color{0%{fill:#fffce9}50%{fill:#fff5a0}100%{fill:#ffe500}}
@keyframes arcade-chomp{from{clip-path:polygon(100% 0,100% 45%,50% 50%,100% 55%,100% 100%,0 100%,0 0)}to{clip-path:polygon(100% 0,100% 12%,50% 50%,100% 88%,100% 100%,0 100%,0 0)}}
@keyframes arcade-eye-appear{0%,14%{opacity:0}15%,100%{opacity:1}}
@keyframes arcade-ghost-frightened{0%,35%{fill:var(--ghost-color)}37%,100%{fill:#2345dd}}
.ambient-paused .arcade-space-scene *{animation-play-state:paused}
.effects-calm .arcade-space-scene{display:none!important}
@media(max-width:620px){.arcade-pacman{width:34px;height:34px}.arcade-ghost{width:24px;height:29px}}
@media(prefers-reduced-motion:reduce){.arcade-space-scene{display:none!important}}
