.pixel-world{--world-white:#dfe9e6;--world-dark:#222625;--world-platform:#2a302e;--world-accent:#2fd59b;--cycle-delay:7s;width:100%;color:var(--world-white);isolation:isolate;position:relative}.pixel-world--hero{--cycle-delay:8s}.pixel-world--coopanion{--cycle-delay:.6s}.pixel-world--cortina,.pixel-world--join{--cycle-delay:1s}.world-canvas{width:100%;max-width:none;height:auto;margin-inline:auto;display:block;overflow:visible}.pixel-world :is(.transient,.landing-light,.pulse-frame,.ripple-frame){opacity:0}html[data-journey=ready] .scene.is-active .pixel-world .assembly{animation:.5s both world-assemble;animation-delay:var(--reveal-delay,0s)}html[data-journey=ready] .scene.is-active .pixel-world .grow-in{animation-name:plant-emerge;animation-duration:calc(var(--rows,8) * 70ms)}html[data-journey=ready] .scene.is-active .pixel-world .friend-arrival{animation-name:friend-arrive}html[data-journey=ready] .scene.is-active .pixel-world .build-in{animation-name:block-arrive}html[data-journey=ready] .scene.is-active .pixel-world--hero .assembly{animation:none}html[data-journey=ready][data-intro=playing] .scene.is-active .pixel-world--hero .assembly{animation:.6s both world-assemble;animation-delay:var(--reveal-delay,0s)}html[data-journey=ready][data-intro=playing] .scene.is-active .pixel-world--hero .grow-in{animation-name:plant-emerge}html[data-journey=ready][data-intro=playing] .scene.is-active .pixel-world--hero .friend-arrival{animation-name:friend-arrive}html[data-journey=ready][data-intro=playing] .scene.is-active .pixel-world .intro-landing{animation:1.35s 2.4s both foothold-landing}html[data-journey=ready][data-intro=playing] .scene.is-active .pixel-world .landing-light{animation:.9s steps(6,end) 2.75s both foothold-light}html[data-journey=ready][data-intro=playing] .scene.is-active .pixel-world .pulse-frame{animation:.24s step-end forwards pulse-frame;animation-delay:calc(2.9s + var(--i) * .24s)}html[data-journey=ready] .scene.is-active .pixel-world :is(.garden-floor,.ripple-frame,.garden-sprout,.garden-firefly,.garden-crystal,.garden-friend,.garden-heart,.crystal-rays,.desktop-friend,.desktop-greeting,.desktop-reply,.desktop-cursor,.steam,.bridge-step,.builder-crystal,.builder-cursor,.builder-done,.join-friend,.portal-rim,.portal-light,.portal-sparks,.join-heart){animation-duration:14s;animation-timing-function:step-end;animation-delay:var(--cycle-delay);animation-iteration-count:infinite}html[data-journey=ready] .scene.is-active .pixel-world .garden-floor{animation-name:floor-awake}html[data-journey=ready] .scene.is-active .pixel-world .ripple-frame--one{animation-name:ripple-one}html[data-journey=ready] .scene.is-active .pixel-world .ripple-frame--two{animation-name:ripple-two}html[data-journey=ready] .scene.is-active .pixel-world .ripple-frame--three{animation-name:ripple-three}html[data-journey=ready] .scene.is-active .pixel-world .garden-sprout{animation-name:sprout-hop}html[data-journey=ready] .scene.is-active .pixel-world .garden-firefly{animation-name:garden-firefly}html[data-journey=ready] .scene.is-active .pixel-world .garden-crystal{animation-name:crystal-awake}html[data-journey=ready] .scene.is-active .pixel-world .crystal-rays{animation-name:crystal-rays}html[data-journey=ready] .scene.is-active .pixel-world .garden-friend{animation-name:friend-hop}html[data-journey=ready] .scene.is-active .pixel-world .garden-heart{animation-name:heart-reply}html[data-journey=ready] .scene.is-active .pixel-world :is(.engine-input,.engine-awake,.engine-status,.engine-output,.engine-response,.engine-growth){animation-duration:14s;animation-timing-function:step-end;animation-iteration-count:infinite;animation-delay:1s}html[data-journey=ready] .scene.is-active .pixel-world .engine-input{animation-name:signal-arrive}html[data-journey=ready] .scene.is-active .pixel-world .engine-awake{animation-name:engine-awake}html[data-journey=ready] .scene.is-active .pixel-world .engine-status{animation-name:engine-status}html[data-journey=ready] .scene.is-active .pixel-world .engine-output{animation-name:signal-response}html[data-journey=ready] .scene.is-active .pixel-world .engine-response{animation-name:response-spark}html[data-journey=ready] .scene.is-active .pixel-world .engine-growth{animation-name:sprout-hop-late}html[data-journey=ready] .scene.is-active .pixel-world .desktop-friend{animation-name:desktop-hop}html[data-journey=ready] .scene.is-active .pixel-world .desktop-greeting{animation-name:desktop-greeting}html[data-journey=ready] .scene.is-active .pixel-world .desktop-reply{animation-name:desktop-reply}html[data-journey=ready] .scene.is-active .pixel-world .desktop-cursor{animation-name:cursor-hello}html[data-journey=ready] .scene.is-active .pixel-world .steam{animation-name:steam-rise}html[data-journey=ready] .scene.is-active .pixel-world .builder-signal{animation:14s step-end 1s infinite builder-signal}html[data-journey=ready] .scene.is-active .pixel-world .builder-crystal{animation-name:builder-crystal}html[data-journey=ready] .scene.is-active .pixel-world .builder-cursor{animation-name:builder-cursor}html[data-journey=ready] .scene.is-active .pixel-world .bridge-step{animation-name:step-settle}html[data-journey=ready] .scene.is-active .pixel-world .bridge-step--two{animation-delay:calc(var(--cycle-delay) + .4s)}html[data-journey=ready] .scene.is-active .pixel-world .bridge-step--three{animation-delay:calc(var(--cycle-delay) + .8s)}html[data-journey=ready] .scene.is-active .pixel-world .builder-done{animation-name:builder-done}html[data-journey=ready] .scene.is-active .pixel-world .join-friend{animation-name:join-hop}html[data-journey=ready] .scene.is-active .pixel-world .join-friend--two{animation-delay:calc(var(--cycle-delay) + .6s)}html[data-journey=ready] .scene.is-active .pixel-world .portal-rim{animation-name:portal-open}html[data-journey=ready] .scene.is-active .pixel-world .portal-light{animation-name:portal-light}html[data-journey=ready] .scene.is-active .pixel-world .portal-sparks{animation-name:portal-sparks}html[data-journey=ready] .scene.is-active .pixel-world .join-heart{animation-name:join-heart}@keyframes world-assemble{0%{opacity:0;animation-timing-function:steps(8,end);transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes plant-emerge{0%{opacity:0;clip-path:inset(calc(var(--rows,8) * 3px) 0 0 0);animation-timing-function:step-end}1%{opacity:1;clip-path:inset(calc(var(--rows,8) * 3px) 0 0 0);animation-timing-function:steps(var(--rows,8), end)}to{opacity:1;clip-path:inset(0)}}@keyframes friend-arrive{0%{opacity:0;animation-timing-function:steps(3,end);transform:translate(-24px,-12px)}65%{opacity:1;animation-timing-function:step-end;transform:translate(-6px,-3px)}to{opacity:1;transform:translate(0)}}@keyframes block-arrive{0%{opacity:0;animation-timing-function:steps(7,end);transform:translateY(-39px)}70%{opacity:1;animation-timing-function:step-end;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@keyframes foothold-landing{0%{opacity:0;animation-timing-function:steps(3,end);transform:translateY(9px)}15%{opacity:.8;animation-timing-function:step-end;transform:translateY(0)}30%{opacity:1;transform:translateY(3px)}40%{transform:translateY(0)}75%{opacity:1;animation-timing-function:steps(3,end);transform:translateY(0)}to{opacity:0;transform:translateY(0)}}@keyframes foothold-light{0%{opacity:0}20%,45%{opacity:.32}to{opacity:0}}@keyframes pulse-frame{0%{opacity:.75}to{opacity:0}}@keyframes floor-awake{0%{opacity:0}2%{opacity:.4}4%{opacity:.7}7%{opacity:.4}11%,to{opacity:0}}@keyframes ripple-one{0%{opacity:0}7%{opacity:.75}9%,to{opacity:0}}@keyframes ripple-two{0%{opacity:0}9%{opacity:.65}11%,to{opacity:0}}@keyframes ripple-three{0%{opacity:0}11%{opacity:.5}14%,to{opacity:0}}@keyframes sprout-hop{0%{transform:translateY(0)}14%{transform:translateY(-3px)}20%{transform:translateY(-6px)}22%{transform:translateY(-3px)}24%,to{transform:translateY(0)}}@keyframes sprout-hop-late{0%{transform:translateY(0)}28%{transform:translateY(-3px)}31%{transform:translateY(-6px)}33%{transform:translateY(-3px)}36%,to{transform:translateY(0)}}@keyframes garden-firefly{0%{opacity:0;transform:translate(0)}22%{opacity:1;animation-timing-function:steps(12,end);transform:translate(0)}27%{opacity:1;animation-timing-function:steps(4,end);transform:translateY(-36px)}31%{opacity:1;transform:translate(36px,-60px)}32%,to{opacity:0;transform:translate(36px,-60px)}}@keyframes crystal-awake{0%{opacity:1;transform:translateY(0)}30%{opacity:.65;transform:translateY(-3px)}34%{opacity:1;transform:translateY(-3px)}40%,to{opacity:1;transform:translateY(0)}}@keyframes crystal-rays{0%{opacity:.15}34%{opacity:1}39%,to{opacity:.15}}@keyframes friend-hop{0%{transform:translateY(0)}40%{animation-timing-function:steps(3,end);transform:translateY(0)}43%{transform:translateY(-9px)}46%{animation-timing-function:steps(3,end);transform:translateY(-9px)}48%,to{transform:translateY(0)}}@keyframes heart-reply{0%{opacity:.45;transform:translateY(0)}47%{opacity:.45;animation-timing-function:steps(2,end);transform:translateY(0)}49%{opacity:1;transform:translateY(-6px)}55%{opacity:1;animation-timing-function:steps(2,end);transform:translateY(-6px)}62%,to{opacity:.45;transform:translateY(0)}}@keyframes signal-arrive{0%{opacity:0;transform:translate(0)}2%{opacity:1;animation-timing-function:steps(11,end);transform:translate(0)}5%{opacity:1;animation-timing-function:steps(10,end);transform:translateY(-66px)}8%{opacity:1;transform:translate(60px,-66px)}9%,to{opacity:0;transform:translate(60px,-66px)}}@keyframes engine-awake{0%{opacity:.4}11%{opacity:1}13%{opacity:.75}16%{opacity:1}19%{opacity:.75}25%,to{opacity:.4}}@keyframes engine-status{0%{opacity:.35}11%{opacity:1}24%,to{opacity:.35}}@keyframes signal-response{0%{opacity:0;transform:translate(0)}17%{opacity:1;animation-timing-function:steps(6,end);transform:translate(0)}20%{opacity:1;animation-timing-function:steps(11,end);transform:translate(36px)}23%{opacity:1;transform:translate(36px,66px)}24%,to{opacity:0;transform:translate(36px,66px)}}@keyframes response-spark{0%{opacity:0;transform:translateY(0)}24%{opacity:1;transform:translateY(-9px)}28%{opacity:1;transform:translateY(-6px)}32%,to{opacity:0;transform:translateY(0)}}@keyframes desktop-hop{0%{transform:translateY(0)}6%{animation-timing-function:steps(3,end);transform:translateY(0)}9%{transform:translateY(-9px)}13%{animation-timing-function:steps(3,end);transform:translateY(-9px)}16%,to{transform:translateY(0)}}@keyframes desktop-greeting{0%{opacity:.7;transform:translateY(0)}17%{opacity:.7;animation-timing-function:steps(2,end);transform:translateY(0)}20%{opacity:1;transform:translateY(-6px)}36%{opacity:1;animation-timing-function:steps(2,end);transform:translateY(-6px)}46%,to{opacity:.7;transform:translateY(0)}}@keyframes desktop-reply{0%{opacity:0;transform:translateY(3px)}30%{opacity:1;animation-timing-function:steps(4,end);transform:translateY(3px)}33%{opacity:1;transform:translateY(-9px)}43%{opacity:1;transform:translateY(-9px)}53%,to{opacity:0;transform:translateY(3px)}}@keyframes cursor-hello{0%{transform:translate(0)}4%{animation-timing-function:steps(3,end);transform:translate(0)}9%{transform:translate(-9px,9px)}15%{animation-timing-function:steps(3,end);transform:translate(-9px,9px)}24%,to{transform:translate(0)}}@keyframes steam-rise{0%{opacity:.1;transform:translateY(0)}55%{opacity:.1;animation-timing-function:steps(2,end);transform:translateY(0)}70%{opacity:.4;animation-timing-function:steps(2,end);transform:translateY(-6px)}85%,to{opacity:.1;transform:translateY(0)}}@keyframes builder-signal{0%{opacity:0;transform:translate(0)}2%{opacity:1;animation-timing-function:steps(12,end);transform:translate(0)}7%{opacity:1;animation-timing-function:steps(12,end);transform:translate(36px,-36px)}11%{opacity:1;transform:translate(108px)}12%,to{opacity:0;transform:translate(108px)}}@keyframes builder-crystal{0%{transform:translateY(0)}3%{transform:translateY(-3px)}6%{transform:translateY(-6px)}9%{transform:translateY(-3px)}12%,to{transform:translateY(0)}}@keyframes builder-cursor{0%{opacity:.8}13%{opacity:.1}16%{opacity:.8}18%{opacity:.1}21%,to{opacity:.8}}@keyframes step-settle{0%{transform:translateY(0)}23%{animation-timing-function:steps(3,end);transform:translateY(0)}26%{animation-timing-function:steps(4,end);transform:translateY(-9px)}29%{transform:translateY(3px)}32%,to{transform:translateY(0)}}@keyframes builder-done{0%{opacity:0}39%{opacity:1}43%,to{opacity:0}}@keyframes join-hop{0%{transform:translateY(0)}7%{animation-timing-function:steps(3,end);transform:translateY(0)}10%{transform:translateY(-9px)}14%{animation-timing-function:steps(3,end);transform:translateY(-9px)}17%,to{transform:translateY(0)}}@keyframes portal-open{0%{opacity:.65}23%{opacity:1}42%,to{opacity:.65}}@keyframes portal-light{0%{opacity:.04}27%{opacity:.22}43%,to{opacity:.04}}@keyframes portal-sparks{0%{opacity:0;transform:translateY(15px)}23%{opacity:.8;animation-timing-function:steps(16,end);transform:translateY(15px)}51%{opacity:.8;transform:translateY(-33px)}52%,to{opacity:0;transform:translateY(-33px)}}@keyframes join-heart{0%{opacity:.5;transform:translateY(0)}32%{opacity:.5;animation-timing-function:steps(2,end);transform:translateY(0)}38%{opacity:1;transform:translateY(-6px)}49%{opacity:1;animation-timing-function:steps(2,end);transform:translateY(-6px)}58%,to{opacity:.5;transform:translateY(0)}}html[data-paused=true] .pixel-world *{animation:none!important}html[data-paused=true] .pixel-world .assembly{opacity:1;clip-path:none;transform:none}html[data-paused=true] .pixel-world :is(.transient,.pulse-frame,.ripple-frame){opacity:0}@media (prefers-reduced-motion:reduce){.pixel-world *{animation:none!important}.pixel-world .assembly{opacity:1;clip-path:none;transform:none}.pixel-world :is(.transient,.pulse-frame,.ripple-frame){opacity:0}}
