/* Motion is decorative: collision positions are always provided by physics. */
body #menu .level-map{height:3600px!important}
.journey-land.ocean{background:linear-gradient(#98eef61a,#003d631a),url('/assets/ocean-world.webp') center/cover}
.journey-land.autumn:after{background:linear-gradient(transparent,#52c6d3)}
.journey-land.ocean:before{content:'';position:absolute;inset:0 0 auto;height:130px;background:linear-gradient(#52c6d3,transparent)}
.journey-land.ocean:after{background:linear-gradient(transparent,#aaddeb)}
.land-label.ocean{background:#d7fbf7ee;border-color:#327e9b;color:#245a76}.land-label.ocean h3{color:#245a76}.land-label.ocean p{color:#397a89}
.ocean-portal{background:#caf9f0f5;border-color:#5296a7;color:#276a81}.ocean-portal.open{animation:ocean-gate 3s infinite}
.land-scenery{animation:scenery-sway 5s ease-in-out infinite;transform-origin:bottom center}.land-scenery span{animation:scenery-bob 4s ease-in-out infinite alternate}.land-scenery b{animation:scenery-bob 6s ease-in-out infinite alternate-reverse}
.ambient-clouds{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.6}.ambient-clouds i{position:absolute;width:115px;height:30px;background:#ffffffb3;border-radius:100%;filter:blur(3px);animation:cloud-drift 38s linear infinite}.ambient-clouds i:before{content:'';position:absolute;width:55px;height:45px;border-radius:50%;background:inherit;left:25px;top:-17px}.ambient-clouds i:nth-child(1){top:16%;animation-delay:-8s}.ambient-clouds i:nth-child(2){top:55%;animation-delay:-23s;opacity:.55;animation-duration:52s}.ambient-clouds i:nth-child(3){top:80%;animation-delay:-33s;opacity:.4;animation-duration:44s}.ocean .ambient-clouds{display:none}
.ambient-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none}.ambient-particles i{position:absolute;top:25%;height:7px;width:7px;background:#fffbc0;border-radius:50%;box-shadow:0 0 9px #fff7b2;animation:firefly-drift calc(9s + var(--i)*.5s) ease-in-out infinite}.autumn .ambient-particles i{top:-30px;height:14px;width:9px;background:#e38435;border-radius:70% 10% 70% 10%;box-shadow:none;animation:leaf-fall calc(15s + var(--i)*.6s) linear infinite}.ocean .ambient-particles i{top:auto;bottom:-25px;width:calc(6px + var(--i)*1px);height:calc(6px + var(--i)*1px);background:#b1fbff17;border:1.5px solid #d1ffffa6;box-shadow:inset 2px 2px 3px #fff8;border-radius:50%;animation:bubble-rise calc(12s + var(--i)*.6s) linear infinite}
.journey-mascot{position:absolute;left:calc(var(--x) + 42px);top:calc(var(--y) - 52px);width:44px;height:50px;z-index:4;pointer-events:none;transform:translate(-50%,-50%);filter:drop-shadow(0 4px 1px #285d5540)}.journey-mascot img{width:100%;height:100%;object-fit:contain;animation:mascot-bounce 2s ease-in-out infinite}.mascot-travel{animation:map-travel 1.4s ease-in-out both}.journey-node.completed .node-stars .earned{animation:star-shimmer 4s infinite}.journey-node.completed .node-stars i:nth-child(2){animation-delay:.25s}.journey-node.completed .node-stars i:nth-child(3){animation-delay:.5s}.journey-node.newly-unlocked .node-stars{animation:star-arrive 1s 1.3s both}.journey-node .node-orb img{transition:transform .25s}.journey-node:hover:not(:disabled) .node-orb img{transform:rotate(-8deg) scale(1.08)}
#title-screen{animation:menu-reveal .6s ease-out both}#title-screen:before{content:'';position:absolute;inset:-15%;pointer-events:none;background:radial-gradient(ellipse at 30% 10%,#fffbc64d,transparent 55%);animation:menu-rays 8s ease-in-out infinite;z-index:0}#title-screen .hero-copy .eyebrow{animation:menu-reveal .7s .1s both}#title-screen .hero h1{animation:logo-float 4s ease-in-out infinite}#title-screen .hero .primary.large{animation:play-glow 2s infinite,menu-reveal .8s .2s both}#title-screen .float-tag{animation:badge-wiggle 4s ease-in-out infinite}dialog[open]{animation:dialog-reveal .24s ease-out}.mission-card .mission-goals>div{animation:menu-reveal .4s ease-out both}.mission-card .mission-goals>div:nth-child(2){animation-delay:.1s}.mission-card .mission-goals>div:nth-child(3){animation-delay:.2s}#menu{animation:menu-reveal .4s ease-out}.game-top{animation:menu-reveal .3s ease-out}
body[data-world=ocean]{background:linear-gradient(#9de7ea,#c7f8ef);color:#245a76}body[data-world=ocean] #play-screen{background:linear-gradient(#144f7430,#144f7430),url('/assets/ocean-world.webp') center/cover}body[data-world=ocean] .game-top{background:linear-gradient(#ddffff,#9ce5e9);border-color:#498ca1}body[data-world=ocean] .mobile-controls{background:linear-gradient(#e2fffb,#9fdee3);border-color:#498ca1}body[data-world=ocean] .hud-goal{background:#ecfff5ed;border-color:#62b4b3;color:#286d7b}body[data-world=ocean] .hud-score,body[data-world=ocean] .hud-shots{background:#e4fffc;border-color:#408ca5;color:#30657b}
.loadout{grid-template-columns:repeat(3,1fr)}
@keyframes scenery-sway{50%{transform:rotate(5deg) translateY(-6px)}}@keyframes scenery-bob{to{transform:translateY(-16px) rotate(-8deg)}}
@keyframes cloud-drift{from{left:-150px}to{left:110%}}
@keyframes firefly-drift{0%,100%{transform:translateY(0);opacity:.15}35%{opacity:1}50%{transform:translate(15px,180px)}75%{transform:translate(-12px,100px);opacity:.4}}
@keyframes leaf-fall{0%{transform:translate(0,0) rotate(0)}50%{transform:translate(28px,600px) rotate(180deg)}100%{transform:translate(-15px,1230px) rotate(360deg)}}
@keyframes bubble-rise{from{transform:translateY(0);opacity:0}10%,85%{opacity:.8}to{transform:translate(25px,-1240px);opacity:0}}
@keyframes mascot-bounce{0%,100%{transform:translateY(0) rotate(3deg) scale(1.02,.98)}50%{transform:translateY(-12px) rotate(-4deg) scale(.98,1.02)}}
@keyframes map-travel{from{left:calc(var(--prev-x) + 42px);top:calc(var(--prev-y) - 52px);opacity:.7}to{left:calc(var(--x) + 42px);top:calc(var(--y) - 52px);opacity:1}}
@keyframes star-shimmer{0%,75%,100%{filter:none}83%{filter:drop-shadow(0 0 5px #fff4b0);transform:scale(1.15)}}
@keyframes star-arrive{from{opacity:0;transform:scale(.3) translateY(-25px)}to{opacity:1;transform:scale(1)}}
@keyframes menu-reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes logo-float{50%{transform:translateY(-7px) rotate(-1deg)}}@keyframes menu-rays{50%{transform:translateX(6%) rotate(5deg);opacity:.6}}@keyframes badge-wiggle{50%{transform:translateY(-8px) rotate(-7deg)}}@keyframes dialog-reveal{from{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes ocean-gate{50%{box-shadow:0 6px 0 #34859533,0 0 35px #b2ffff}}
@media(max-width:700px){.journey-mascot{width:36px;height:42px;left:calc(var(--x) + 34px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
body.reduce-motion *,body.reduce-motion *:before,body.reduce-motion *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}

@keyframes menu-reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}body[data-world=ocean] #title-screen{background:linear-gradient(90deg,#dffff4d9,#a5eaff55),url('/assets/ocean-world.webp') center/cover;border-color:#397f91}body[data-world=ocean] #title-screen:after{content:'🫧'}
