/* Mechanical motion layered over the established illustrated world. */
.world-motion{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.scene-illustration{position:absolute;inset:0;overflow:hidden}
.turning-gear{position:absolute;width:100px;aspect-ratio:1;filter:drop-shadow(0 4px 3px #30220c88);animation:gear-turn 14s linear infinite;transform-origin:center}
.gear-main{left:-18px;bottom:18px;width:118px}.gear-small{left:74px;bottom:72px;width:70px;animation-direction:reverse;animation-duration:8.3s}
.light-mote{position:absolute;left:var(--mx);top:var(--my);width:5px;height:5px;border-radius:50%;background:#fff1b2;box-shadow:0 0 7px 3px #ffca5d70;opacity:.4;animation:drifting-light calc(5s + var(--i)*.35s) ease-in-out infinite;animation-delay:calc(var(--i)*-.8s)}
.home-scene .welcome,.home-scene .pip-invite,.home-scene .spark-button,.home-scene .home-title-plank,.room-guide,.room-action,#room-surprise{z-index:2}
.pip-invite>.portrait{animation:inviting-pip 3.6s ease-in-out infinite}.pip-invite .speech{animation:invitation-nod 5s ease-in-out infinite}
.friend-tile .portrait{animation:friend-breathe 5s ease-in-out infinite}.friend-tile:nth-child(2n) .portrait{animation-delay:-1.7s}.friend-tile:nth-child(3n) .portrait{animation-delay:-3.4s}
.rival-teaser img{animation:rival-watch 8s ease-in-out infinite;transform-origin:center 25%}.rival-teaser{isolation:isolate}.rival-teaser>div{position:relative;z-index:1}
.roll-test .fixed-wheel,.roll-test .fitted-wheel{animation:wheel-turn .55s linear infinite}.rolling .fixed-wheel,.rolling .fitted-wheel{animation:wheel-turn 4s linear infinite}
.room-pop .step-note,.room-pop .idea-star{animation:idea-pop .6s ease-out both}.room-pop .piece.bow{animation:flourish .8s ease-in-out both}
.quest-guide,.story-layout{animation:chapter-arrive .3s ease-out both}
.still .light-mote{opacity:0}.tab-away *,.tab-away *::before,.tab-away *::after{animation-play-state:paused!important}
@keyframes gear-turn{to{transform:rotate(360deg)}}
@keyframes wheel-turn{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes drifting-light{0%,100%{transform:translate(0,6px);opacity:.15}50%{transform:translate(13px,-23px);opacity:.65}}
@keyframes inviting-pip{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-13px) rotate(4deg)}}
@keyframes invitation-nod{0%,100%{transform:rotate(1deg)}50%{transform:rotate(-2deg) translateY(-3px)}}
@keyframes friend-breathe{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5px) rotate(1.5deg)}}
@keyframes rival-watch{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
@keyframes idea-pop{from{transform:scale(.65) rotate(-10deg);opacity:.2}70%{transform:scale(1.08) rotate(3deg)}to{transform:scale(1);opacity:1}}
@keyframes flourish{0%{transform:rotate(-15deg) scale(.7)}60%{transform:rotate(12deg) scale(1.1)}100%{transform:rotate(0) scale(1)}}
@keyframes chapter-arrive{from{opacity:.4;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){.home-scene .scene-illustration,.room-scene .scene-illustration{position:relative;inset:auto;order:2;width:100%;aspect-ratio:3/2}.scene-illustration>.scene-bg{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:contain!important}.home-scene .world-motion,.room-scene .world-motion{inset:0}.gear-main{width:82px;left:-12px;bottom:0}.gear-small{width:49px;left:52px;bottom:39px}.light-mote{width:4px;height:4px}.pip-invite .speech{animation-name:invitation-nod}}
