/* Space camera and world environments */
main{height:100svh;min-height:620px;display:flex;flex-direction:column}header{flex-shrink:0}#universe{width:100%;height:auto;min-height:480px;flex:1;max-height:none;overflow:hidden;touch-action:none;user-select:none;cursor:grab}#universe.dragging{cursor:grabbing}.camera-scene{position:absolute;inset:0;transform-origin:0 0;will-change:transform}.camera-controls{position:absolute;right:24px;bottom:18px;display:flex;gap:6px;z-index:4}.camera-controls button{min-width:44px;min-height:44px;border:1px solid #ffffff24;border-radius:24px;background:#080c16ca;font-size:13px;padding:10px 14px}.gesture-hint{position:absolute;bottom:30px;left:5vw;color:#68758c;font-size:10px;letter-spacing:.5px;pointer-events:none;transition:opacity .5s}footer{padding-top:8px;flex-shrink:0}.world .name{font-size:12px}.world .genre{font-size:10px}.rocket-cursor{position:fixed;left:0;top:0;z-index:80;pointer-events:none;width:0;height:0;display:none}.rocket-cursor .pilot{position:absolute;width:5px;height:5px;border-radius:50%;background:#d5f6ff;box-shadow:0 0 9px #74cfff;transform:translate(-50%,-50%)}.rocket-cursor.engaged .pilot{width:12px;height:18px;border-radius:0;clip-path:polygon(50% 0,78% 48%,100% 90%,64% 78%,50% 100%,36% 78%,0 90%,22% 48%);background:#d4f5ff;transform:translate(-50%,0) rotate(180deg);transform-origin:50% 0}.rocket-cursor .exhaust{position:absolute;left:-1px;top:-13px;width:2px;height:13px;background:linear-gradient(transparent,#7fcaffaa);opacity:.6}.rocket-cursor.engaged .exhaust{height:23px;top:-23px}.touch-ignition{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border:1px solid #c7ecff;border-radius:50%;box-shadow:0 0 12px #6ac4ff66;pointer-events:none;z-index:5;animation:ignite .55s ease-out forwards}@keyframes ignite{to{transform:scale(3);opacity:0}}@media(hover:hover) and (pointer:fine){#universe.rocket-ready,#universe.rocket-ready button{cursor:none}}dialog{--world-rgb:180,190,210;background:#05070f;isolation:isolate}dialog[data-world] .environment{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 50% 38%,rgba(var(--world-rgb),.11),transparent 65%)}.environment span{position:absolute;display:block;pointer-events:none}.environment .haze{width:70vw;height:70vw;left:10%;top:5%;background:radial-gradient(ellipse,rgba(var(--world-rgb),.1),transparent 65%);filter:blur(30px);animation:atmosphere 16s ease-in-out infinite alternate}.environment .field{inset:0;opacity:.3}.environment .dust{inset:0;background-image:radial-gradient(circle,rgba(var(--world-rgb),.7) .7px,transparent 1px);background-size:71px 83px;opacity:.14;animation:dust 30s linear infinite}.environment .veil{inset:0;background:linear-gradient(0deg,#05070f77,transparent)}@keyframes atmosphere{to{transform:translate(12%,8%) scale(1.3)}}@keyframes dust{to{transform:translate(20px,35px)}}dialog[data-world=SUN]{--world-rgb:255,95,32}.environment.sun .field{background:repeating-conic-gradient(from 0deg at 50% 40%,transparent 0deg 15deg,#ff692016 16deg 18deg,transparent 20deg 36deg);animation:solar-turn 80s linear infinite;scale:1.8}.environment.sun .haze{left:5%;top:-15%;background:radial-gradient(ellipse,#ff4b1735,#ae19000a 45%,transparent 65%)}@keyframes solar-turn{to{rotate:360deg}}dialog[data-world=AI]{--world-rgb:170,210,245}.environment.ai .field{background-image:linear-gradient(#aac9e819 1px,transparent 1px),linear-gradient(90deg,#aac9e819 1px,transparent 1px);background-size:65px 65px;transform:perspective(650px) rotateX(45deg) scale(1.5);transform-origin:50% 100%}.environment.ai .haze{background:linear-gradient(transparent,#bddcff14,transparent);width:100%;height:20%;left:0;animation:scan 12s linear infinite;filter:none}@keyframes scan{from{top:-20%}to{top:110%}}dialog[data-world=SAT]{--world-rgb:64,224,208}.environment.sat .field{inset:10% -20%;border:1px solid #40e0d02b;border-radius:50%;transform:rotate(-18deg) scaleY(.5);box-shadow:0 0 0 25px #40e0d005,0 0 0 60px #40e0d008,0 0 0 110px #90744f08}.environment.sat .haze{animation-duration:24s}.environment.sat .dust{background-size:103px 71px}dialog[data-world=VEN]{--world-rgb:160,75,190}dialog[data-world=MAR]{--world-rgb:255,105,180}dialog[data-world=MER]{--world-rgb:0,191,255}dialog[data-world=EAR]{--world-rgb:34,197,94}dialog[data-world=JUP]{--world-rgb:255,215,0}dialog[data-world=COS]{--world-rgb:50,100,170}dialog[data-world=YOU]{--world-rgb:138,3,3}.world-stage{position:relative;max-width:1250px;margin:auto;height:790px;isolation:isolate}.stage-core{position:absolute;top:41%;left:50%;transform:translate(-50%,-50%);opacity:.7;pointer-events:none;z-index:-1}.stage-core .art{--size:310px}.world-stage .album{position:absolute;width:138px;text-align:center;transform:translate(-50%,-50%);transition:filter .4s}.world-stage .album img{width:92px;aspect-ratio:2/3;box-shadow:0 18px 35px #0008;border-radius:2px}.world-stage .album span{margin:9px 0 5px;font-size:9px}.world-stage .album strong{font-size:12px;min-height:36px}.world-stage .album:hover img{filter:brightness(1.15)}.scene-links{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}.scene-links line,.scene-links path,.scene-links ellipse{fill:none;stroke:rgba(var(--world-rgb),.23);stroke-width:1}.scene-links .pulse{stroke-dasharray:3 13;animation:signal-flow 12s linear infinite}@keyframes signal-flow{to{stroke-dashoffset:-160}}.world-stage.ai-stage{height:690px}.ai-stage .album img{outline:1px solid #c7dfff35;outline-offset:7px}.sun-stage .album img{box-shadow:0 15px 35px #000a,0 0 20px #ff450011}.sat-stage .album img{border-radius:45% 45% 2px 2px;outline:1px solid #40e0d025;outline-offset:5px}.world-stage~.world-hint{padding-top:15px}.world-arrival .world-intro{animation:arrival .7s ease-out}.world-arrival[data-world=AI] .world-intro{animation:signal-arrival .5s steps(5,end)}.world-arrival[data-world=SAT] .world-intro{animation:arrival 1.1s ease-out}@keyframes arrival{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}@keyframes signal-arrival{from{opacity:.2;filter:brightness(2);transform:translateY(7px)}to{opacity:1;filter:none;transform:none}}dialog[data-world=SUN] .play-actions button{background:#ffc095}dialog[data-world=AI] .play-actions button{background:#d8e5f2;border-radius:5px}dialog[data-world=SAT] .play-actions button{background:#b4e7db}dialog[data-world=SAT] .world-intro h2{font-family:Georgia,serif}dialog[data-world=AI] .world-intro h2{font-family:monospace;letter-spacing:5px}dialog[data-world=SUN] .world-intro h2{font-weight:700}.stage-description{font-size:10px;color:#8691a2;text-align:center;letter-spacing:1.2px;margin:0 20px 15px}.detail .portrait{position:relative;box-shadow:0 20px 70px #0008}.dialog-top{background:#050710dd;backdrop-filter:blur(12px)}.world-arrival .detail{animation:arrival .5s ease-out}.camera-key-hint{font-size:10px;color:#777;display:none}
@media(max-width:900px){main{min-height:580px}#universe{height:auto;min-height:430px;max-height:none}header{padding-top:20px}nav{margin-top:12px}.gesture-hint{bottom:78px;left:6vw;font-size:9px}.camera-controls{right:6vw;bottom:15px}.world-stage,.world-stage.ai-stage{height:auto;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 18px;padding:15px 7vw 75px;max-width:600px}.world-stage .album{position:relative!important;left:auto!important;top:auto!important;transform:none;width:auto;align-self:start}.world-stage .album img{width:100%;max-width:175px}.world-stage .album strong{font-size:12px}.world-stage .album:nth-of-type(even){margin-top:42px}.world-stage .stage-core{top:42%;left:50%;opacity:.18}.world-stage .stage-core .art{--size:400px}.scene-links{height:100%;opacity:.45}.ai-stage .album:nth-of-type(even){margin-top:25px}.sat-stage .album:nth-of-type(even){margin-top:60px}.world-intro{gap:15px}.environment.sun .field{scale:2}.world-stage .album span{font-size:10px}.world-stage .album strong{min-height:36px}.stage-description{font-size:9px}.rocket-cursor{display:none!important}}
@media(prefers-reduced-motion:reduce){.environment *, .world-arrival *, .scene-links *, .touch-ignition{animation:none!important}.touch-ignition{display:none}}
