/* Small performance-safe accents. Artwork keeps its original proportions;
   desk sprites and the camera never receive independent transforms. */
.primary,.secondary,.bet-control button,.tools button{transition:background-color .16s,filter .16s,box-shadow .16s}
.primary:active:not(:disabled),.secondary:active:not(:disabled){box-shadow:1px 1px 0 #101719;filter:brightness(.94)}
.wallet strong,.return strong{font-variant-numeric:tabular-nums}
.return strong{transition:color .25s}
.return strong.reward-changed{animation:studio-reward .62s ease-out}
@keyframes studio-reward{0%{color:#fff4c4;text-shadow:0 0 16px #e5bb6277}100%{color:inherit;text-shadow:none}}

/* The room stays still. Only the light's intensity gently changes. */
.foreground-lamp{animation:studio-lamplight 7.4s ease-in-out infinite alternate}
.foreground-lamp:nth-of-type(2n){animation-delay:-3.1s;animation-duration:8.7s}
@keyframes studio-lamplight{from{filter:brightness(.985)}to{filter:brightness(1.045)}}

/* A modest cutout walk, not a pretend skeletal animation. No stretching. */
#player.walking img{animation:studio-footfall .28s ease-in-out infinite;transform-origin:50% 94%}
@keyframes studio-footfall{0%,100%{transform:translateY(0) rotate(-.25deg)}50%{transform:translateY(-2px) rotate(.25deg)}}
.step-point.current .medallion{filter:brightness(1.17) saturate(1.14)}
.step-point.just-arrived .medallion{animation:studio-arrival .5s ease-out}
@keyframes studio-arrival{0%{filter:brightness(1.9) saturate(.6)}100%{filter:brightness(1.17) saturate(1.14)}}
.step-point.current b{background:#34412b;color:#e4eeac;border-color:#a7bc70}
.scene.is-travelling #next-label{opacity:.65}
#next-label{transition:opacity .2s}

/* The attention cue is brief and readable, without sliding the seated art. */
.station.noticed{filter:none}
.notice{border-radius:5px;box-shadow:2px 3px 0 #171c21;animation:studio-notice .28s cubic-bezier(.2,.9,.3,1.25) both}
@keyframes studio-notice{0%{opacity:0;transform:translateY(7px) rotate(-8deg) scale(.65)}100%{opacity:1;transform:translateY(0) rotate(8deg) scale(1)}}
#caught-scene{animation:studio-cut .22s ease-out}
@keyframes studio-cut{from{opacity:0}to{opacity:1}}
.scene-copy h2{line-height:1.04;text-wrap:balance}
.scene-copy p{max-width:740px;margin-left:auto;margin-right:auto;text-wrap:balance}
#caught-scene[data-outcome="escape"] .scene-copy>span{color:#d8e99a}
#caught-scene[data-outcome="escape"] .scene-copy h2{color:#e0eca3}
#caught-scene[data-outcome="caught"] .scene-copy>span{color:#e7b7a2}

@media(prefers-reduced-motion:reduce){
 .foreground-lamp,#player.walking img,.step-point.just-arrived .medallion,.notice,#caught-scene,.return strong.reward-changed{animation:none!important}
 .primary,.secondary,.bet-control button,.tools button,.return strong,#next-label{transition:none!important}
}

body:has(dialog[open]) .foreground-lamp,.scene.ambient-hidden .foreground-lamp,body:has(#caught-scene:not([hidden])) .foreground-lamp{animation-play-state:paused}
