#scene-art{isolation:isolate}
.cutscene-effects{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.cutscene-effects-plane{position:absolute;pointer-events:none}
.cutscene-accent{position:absolute;display:block;transform:translate(-50%,-50%);pointer-events:none;opacity:0}
.cutscene-accent.glint{background:radial-gradient(ellipse,#fffdebc9 0,#fff9bf40 18%,transparent 64%);animation:disco-accent 4.8s ease-in-out infinite}
.cutscene-accent.glint::after{content:'';position:absolute;inset:28%;background:#fff9d5a8;clip-path:polygon(50% 0,59% 41%,100% 50%,59% 59%,50% 100%,41% 59%,0 50%,41% 41%)}
.cutscene-accent.flash{background:radial-gradient(ellipse,#fffefad9 0,#fff6c777 10%,#eaf7ff24 30%,transparent 68%);animation:camera-accent 7.5s linear infinite}
.cutscene-effects[data-external-cues="true"] .flash{animation:none}
.cutscene-accent.sound{border:2px solid transparent;border-left-color:#ffe9b954;border-right-color:#ffe9b954;border-radius:50%;animation:speaker-accent 1.15s ease-out infinite}
.cutscene-accent.steam{filter:blur(1px);mask-image:linear-gradient(transparent,#000 20%,#000 80%,transparent);animation:steam-accent 5.8s ease-in-out infinite}
.cutscene-accent.steam::before,.cutscene-accent.steam::after{content:'';position:absolute;width:70%;height:58%;border-radius:50%;border:3px solid transparent}
.cutscene-accent.steam::before{left:0;top:0;border-left-color:#eee9dc;transform:rotate(10deg)}
.cutscene-accent.steam::after{right:0;bottom:0;border-right-color:#eee9dc;transform:rotate(10deg)}
@keyframes disco-accent{0%,100%{opacity:.05}35%{opacity:.65}70%{opacity:.12}}
@keyframes camera-accent{0%,18%,24%,100%{opacity:0}20%{opacity:.9}22%{opacity:.2}}
@keyframes external-camera-accent{0%{opacity:.9}38%{opacity:.2}100%{opacity:0}}
@keyframes speaker-accent{0%,100%{opacity:.05}40%{opacity:.55}75%{opacity:.1}}
@keyframes steam-accent{0%,100%{opacity:.03}45%{opacity:.2}75%{opacity:.09}}
.cutscene-effects[hidden] .cutscene-accent{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.cutscene-effects{display:none!important}}
/* Build48: local atmospheric motion; the underlying scene never moves. */
.cutscene-accent.steam::before,.cutscene-accent.steam::after{content:none}
.cutscene-accent.steam,.cutscene-accent.smoke{color:#eeeee8;filter:none;transform-origin:50% 100%;mask-image:linear-gradient(transparent,#000 25%,#000 90%,transparent);animation:scene-vapor 3.8s ease-in-out infinite}
.cutscene-accent.smoke{color:#d8e0e4;animation-duration:4.8s}
.cutscene-accent svg{display:block;width:100%;height:100%}
.cutscene-accent.note{font-family:Georgia,serif;font-style:normal;font-weight:bold;font-size:clamp(24px,5vw,70px);line-height:1;color:#111;text-shadow:2px 0 #fff,-2px 0 #fff,0 2px #fff,0 -2px #fff;animation:scene-note 3s ease-in-out infinite}
.cutscene-accent.drop{background:#caefff;border:1px solid #244457;border-radius:70% 35% 65% 50%;animation:scene-drop 2.7s ease-in infinite}
.cutscene-accent.strain{animation:scene-strain .6s ease-in-out infinite}
.cutscene-accent.disco{border-radius:50%;background:conic-gradient(from 0deg,transparent,#fff3a733,transparent,#97dfff45,transparent,#f69add33,transparent);mix-blend-mode:screen;animation:scene-disco 6s linear infinite}
@keyframes scene-vapor{0%{opacity:0;transform:translate(-50%,-30%) scale(.8,.75)}25%{opacity:.48}65%{opacity:.3}100%{opacity:0;transform:translate(-25%,-65%) scale(1.2,1.08)}}
@keyframes scene-note{0%,100%{opacity:.85;transform:translate(-50%,-50%) rotate(-7deg)}50%{opacity:1;transform:translate(-35%,-72%) rotate(8deg)}}
@keyframes scene-drop{0%,12%{opacity:0;transform:translate(-50%,-90%) scale(.5)}25%{opacity:.9}80%{opacity:.75}100%{opacity:0;transform:translate(-30%,180%) scale(.8)}}
@keyframes scene-strain{0%,100%{opacity:.35;transform:translate(-50%,-50%) rotate(-4deg)}50%{opacity:.9;transform:translate(-38%,-56%) rotate(4deg)}}
@keyframes scene-disco{0%{opacity:.35;transform:translate(-50%,-50%) rotate(0)}50%{opacity:.7}100%{opacity:.35;transform:translate(-50%,-50%) rotate(360deg)}}
#scene-art:not([data-motion-ready="Mika"]) .cutscene-accent.note{visibility:hidden}
#scene-art:not([data-motion-ready="Harold"]) .cutscene-accent.smoke{visibility:hidden}
.cutscene-effects[data-paused="true"] .cutscene-accent{animation-play-state:paused!important}
