/* Finite atmosphere and action feedback. Never alters the fixed screen geometry. */
.screen-enter{animation:none}
#motion-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:110;contain:strict}
#motion-layer *{pointer-events:none!important;user-select:none}
.motion-ghost{position:absolute!important;max-width:none!important;transform-origin:center;box-shadow:0 10px 30px #0006;overflow:hidden;will-change:transform,opacity}
.motion-ghost.player-card{display:flex;flex-direction:column}.motion-ghost.player-card>.portrait-wrap{flex:1;min-height:0;height:auto}.motion-ghost.player-card>.player-info{flex:0 0 auto}.motion-ghost.player-card .candidate-footer,.motion-ghost.player-card .star{display:none}
.motion-ghost.portrait{object-fit:contain;background:transparent;box-shadow:none}
.motion-authorization{display:grid;place-items:center;border:2px solid #d9ae54;border-radius:3px;background:#252329ed;color:#ffdc90;font-size:11px;font-weight:800;letter-spacing:.06em;text-align:center}
html[data-motion="on"] button{transition:background-color .16s,border-color .16s,box-shadow .16s}
html[data-motion="on"] button:active:not(:disabled){filter:brightness(1.12)}
html[data-motion="on"] .landing .story-scene[data-scene-ready="true"]:after,
html[data-motion="on"] .intro-picture[data-scene-ready="true"]:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:2;background:linear-gradient(115deg,transparent 20%,#ffd98b10 45%,transparent 70%);background-size:230% 100%;animation:office-light 8s ease-out 1 both;mix-blend-mode:screen}
@keyframes office-light{from{background-position:100% 0;opacity:0}20%{opacity:1}to{background-position:0 0;opacity:0}}
html[data-motion="on"] .intro-picture-1[data-scene-ready="true"]:after{background-image:radial-gradient(ellipse at 60% 20%,#ffdf9130,transparent 55%);animation:scene-atmosphere 7s ease-in-out 1 both}
@keyframes scene-atmosphere{0%,100%{opacity:.1;transform:translateY(0)}50%{opacity:.6;transform:translateY(-7px)}}
/* A departed player's named card remains available to undo the decision. */
html[data-motion="on"] .departure-carousel .departed .portrait{opacity:.38;transform:translateY(5px) scale(.96)}
.donor.used-donor{opacity:.55;border-style:dashed}
.donor.donor-closing{position:relative;overflow:hidden}
html[data-motion="on"] .donor.donor-closing:after{content:'';position:absolute;inset:0;background:linear-gradient(#5e4b2f77,#171824aa);border-top:1px solid #f3bd5488;pointer-events:none;animation:donor-shutter .5s ease-in both}
@keyframes donor-shutter{from{transform:translateY(-100%)}to{transform:translateY(0)}}
#game-dialog .protected-player{position:relative;overflow:hidden}
#game-dialog .protected-player:before{content:'';position:absolute;right:7px;top:7px;width:20px;height:20px;border:1px solid #b99a5b;border-radius:3px;background:#171824dd;z-index:2;pointer-events:none}
#game-dialog .protected-player:after{content:'';position:absolute;right:13px;top:2px;width:8px;height:9px;border:2px solid #b99a5b;border-bottom:0;border-radius:7px 7px 0 0;z-index:2;pointer-events:none}
html[data-motion="on"] #game-dialog .protection-reveal:before{animation:lock-settle .35s ease-out both}
@keyframes lock-settle{from{transform:translateY(-5px);opacity:0}to{transform:translateY(0);opacity:1}}
html[data-motion="on"] .game-frame.is-simulating .court{overflow:hidden}
html[data-motion="on"] .game-frame.is-simulating .court:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 25%,#fff2b426 48%,transparent 70%);transform:translateX(-100%);animation:court-lights 1.3s ease-out 1}
@keyframes court-lights{to{transform:translateX(100%)}}
html[data-motion="on"] .glory-stage .big-record{position:relative}
html[data-motion="on"] .glory-stage .big-record:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 35%,#ffe1a52b 50%,transparent 65%);clip-path:inset(0 round 4px);animation:score-light .85s ease-out 1 both}
@keyframes score-light{from{opacity:0;transform:translateX(-25%)}40%{opacity:1}to{opacity:0;transform:translateX(25%)}}
/* JS owns intentional entries; a filter rerender must not restart the old entrance. */
.absence-slots svg{animation:none;opacity:.12}
html[data-motion="off"] *,html[data-motion="off"] *:before,html[data-motion="off"] *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html[data-motion="off"]::view-transition-group(*){animation-duration:0s!important}
@media(prefers-reduced-motion:reduce){#motion-layer{display:none}.screen-enter,.absence-slots svg,.donor-closing:after,.protection-reveal:before{animation:none!important}}

[data-motion-device]{display:block;margin-top:4px}[data-motion-device][hidden]{display:none}

.landing-actions{display:flex;align-items:center;gap:10px}.landing-actions .quiet{white-space:nowrap}.intro-footer-tools>.scene-replay{font-size:10px;white-space:nowrap;padding-left:5px}.scene-load-status{position:absolute;top:12px;right:12px;z-index:4;font-size:11px;padding:6px 9px;border-radius:3px;background:#151723e8;color:#e1c897;pointer-events:none}.scene-load-status[hidden]{display:none}
@media(max-width:350px){.landing-edition{font-size:8px;letter-spacing:0}.landing-actions{gap:2px}.landing-actions .quiet{font-size:10px;padding-left:7px}}
