:root{color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",sans-serif;background:#050b1d;color:#f7f9ff;--navy:#07152f;--panel:#0b1b38;--gold:#ffd36a;--coral:#ff735e;--cyan:#7bd9ff}*{box-sizing:border-box}html,body{margin:0;min-width:320px;min-height:100%;background:#050b1d}body{overflow:hidden}button{font:inherit}.app{position:relative;width:min(100%,480px);height:100svh;min-height:0;margin:0 auto;overflow:hidden;background:var(--navy)}.screen[hidden]{display:none!important}.screen{position:absolute;inset:0;overflow:hidden}.eyebrow{color:var(--gold);font-size:10px;font-weight:900;letter-spacing:.18em}.start-screen{display:flex;flex-direction:column;align-items:center;padding:calc(22px + env(safe-area-inset-top)) 24px calc(20px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#07152f44,#07152fc9),url('./public/assets/rebuild/space/space-journey.png') center 70%/cover no-repeat}.start-header,.game-top,.quiz-header{position:relative;z-index:8;display:flex;align-items:center;justify-content:space-between;width:100%}.best-chip,.stat-chip,.timer-chip{padding:7px 10px;border:1px solid #ffffff2c;border-radius:999px;background:#07142dcc;color:#b8c5df;font-size:10px;font-weight:800;letter-spacing:.05em}.best-chip b,.stat-chip b{margin-left:4px;color:#fff;font-size:15px}.start-visual{position:relative;display:grid;place-items:center;width:100%;height:39%;min-height:230px}.start-visual img{position:relative;z-index:1;width:min(68%,270px);transform:rotate(-6deg);transform-origin:50% 78%;filter:drop-shadow(0 16px 24px #020817aa)}.start-orbit{position:absolute;bottom:18%;width:74%;height:28px;border:1px solid #7bd9ff66;border-radius:50%;box-shadow:0 0 26px #7bd9ff44;transform:rotate(-8deg)}.start-orbit:after{position:absolute;right:14%;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 14px var(--gold);content:""}.start-copy{position:relative;z-index:3;text-align:center}.kicker{color:var(--cyan);font-size:10px;font-weight:900;letter-spacing:.16em}.start-copy h1{margin:8px 0 4px;font-size:48px;line-height:1;font-weight:900;letter-spacing:-.08em}.start-copy h1 em{color:var(--gold);font-style:normal}.start-copy p{margin:12px 0 0;color:#c8d5ec;font-size:13px;line-height:1.7}.primary-button,.secondary-button{border:0;cursor:pointer}.primary-button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(100%,300px);min-height:64px;margin-top:auto;margin-bottom:18px;border-radius:18px;background:linear-gradient(180deg,#ff9675,#ff6c59);color:#fff;box-shadow:0 6px 0 #a94538,0 14px 28px #02081788}.primary-button strong{font-size:18px}.primary-button small{margin-top:3px;font-size:9px;font-weight:900;letter-spacing:.15em;opacity:.82}.start-note{margin:14px 0 0;color:#9eafcb;font-size:10px}.game-screen{background:#050b1d}.playfield{position:relative;height:57%;min-height:270px;overflow:hidden;background:linear-gradient(#050b1d22,#07152f66),url('./public/assets/rebuild/space/space-journey.png') center 100%/auto 420% no-repeat;transition:background-position .7s cubic-bezier(.16,.75,.22,1)}.world-layer{position:absolute;inset:0;background:radial-gradient(circle at 72% 18%,#7bd9ff20 0 1px,transparent 2px),radial-gradient(circle at 18% 38%,#fff5c422 0 1px,transparent 2px);background-size:90px 80px,120px 110px;pointer-events:none}.cloud-layer{position:absolute;inset:-20% 0;background:radial-gradient(ellipse at 25% 58%,#d5e7ef22 0 9%,transparent 20%),radial-gradient(ellipse at 76% 42%,#f4fbff20 0 11%,transparent 23%);transform:translateY(0);transition:transform .7s ease;pointer-events:none}.game-top{padding:calc(14px + env(safe-area-inset-top)) 16px 0}.altitude-block{display:flex;flex-direction:column;gap:4px}.altitude{font-size:30px;line-height:1;font-weight:900;letter-spacing:-.06em;text-shadow:0 2px 12px #020817}.fuel-panel{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.fuel-panel>span{color:#b8c5df;font-size:10px;font-weight:800}.fuel-panel small{color:#7bd9ff;font-size:9px}.fuel-row{display:flex;gap:3px;height:24px}.fuel-slot{display:block;width:13px;height:24px;overflow:hidden}.fuel-slot img{width:100%;height:100%;object-fit:cover;object-position:50% 12%;}.fuel-panel>b{color:var(--gold);font-size:11px}.game-rocket{position:absolute;z-index:5;left:50%;bottom:-3%;width:min(34%,150px);height:auto;filter:drop-shadow(0 13px 15px #020817cc);transition:bottom .75s cubic-bezier(.16,.75,.22,1),transform .75s cubic-bezier(.16,.75,.22,1);will-change:bottom,transform}.launch-ring{position:absolute;z-index:2;left:50%;bottom:0;width:31%;height:18px;border:2px solid #ffd36a88;border-radius:50%;background:#ffb34222;box-shadow:0 0 20px #ffb34255;transform:translateX(-50%)}.flight-smoke{position:absolute;z-index:4;left:50%;bottom:0;width:min(25%,112px);height:42%;object-fit:contain;object-position:center bottom;opacity:0;filter:drop-shadow(0 0 12px #ffd36a);transform:translateX(-50%) scale(.7,.82);transform-origin:center bottom;pointer-events:none}.flight-smoke[data-active="true"]{opacity:.98;animation:flame-pulse .16s ease-in-out infinite alternate}@keyframes flame-pulse{from{transform:translateX(-50%) scale(.88,.9);filter:drop-shadow(0 0 8px #ff8b3b)}to{transform:translateX(-50%) scale(1.06,1.12);filter:drop-shadow(0 0 18px #ffd36a)}}.generated-smoke{position:absolute;z-index:2;left:50%;bottom:-10%;width:48%;height:68%;opacity:0;object-fit:contain;object-position:center bottom;filter:blur(3px) saturate(.72) brightness(1.02);mix-blend-mode:screen;transform:translateX(-50%) scale(.75);pointer-events:none;transition:opacity .2s ease,transform .6s ease}.generated-smoke[data-active="true"]{opacity:.38;transform:translateX(-50%) scale(1);animation:generated-breathe 1.2s ease-in-out infinite alternate}@keyframes generated-breathe{from{filter:blur(4px) saturate(.6) brightness(.9)}to{filter:blur(2px) saturate(.9) brightness(1.1)}}.particle-field{position:absolute;z-index:6;left:50%;bottom:0;width:42%;height:52%;opacity:0;transform:translateX(-50%);pointer-events:none}.particle-field[data-active="true"]{opacity:1}.particle-field i{position:absolute;left:var(--x);bottom:7%;width:var(--size);height:var(--size);border-radius:50%;background:#fff6d1;box-shadow:0 0 8px 2px #ffd36a;opacity:0}.particle-field[data-active="true"] i{animation:particle 1s ease-out var(--delay) infinite}@keyframes particle{0%{opacity:0;transform:translate(0,0) scale(.3)}16%{opacity:1}100%{opacity:0;transform:translate(calc((var(--x) - 50%)*.3),-92px) scale(1.1)}}.fuel-toast{position:absolute;z-index:9;left:50%;bottom:16%;padding:7px 10px;border:1px solid #ffd36a88;border-radius:999px;background:#07142df0;color:#ffe3a0;font-size:10px;font-weight:900;opacity:0;transform:translate(-50%,8px);pointer-events:none}.playfield.fuel-in .fuel-toast{animation:toast .9s ease-out both}@keyframes toast{20%,75%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-12px)}}.quiz-panel{position:relative;z-index:10;display:flex;flex-direction:column;height:43%;padding:14px 16px calc(14px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:linear-gradient(180deg,#0d2142,#091832);box-shadow:0 -12px 30px #02081766}.quiz-hud{display:flex;gap:6px}.timer-chip{color:#fff}.timer-chip.urgent{border-color:var(--coral);color:#ffb0a3}.timer-row{display:flex;align-items:center;gap:10px;margin-top:12px;color:#91a4c5;font-size:10px}.time-track{height:4px;flex:1;overflow:hidden;border-radius:99px;background:#ffffff18}.time-track i{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--cyan),var(--gold));transition:width .3s linear}.time-track i.urgent{background:var(--coral)}.question{margin-top:14px}.question>span{color:var(--cyan);font-size:11px;font-weight:900}.question h2{margin:5px 0 0;font-size:21px;line-height:1.35;letter-spacing:-.03em}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.choice{display:flex;align-items:center;gap:8px;min-height:56px;padding:9px 10px;border:1px solid #ffffff18;border-radius:13px;background:#132c51;color:#f7f9ff;text-align:left;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}.choice:hover{border-color:#7bd9ff99}.choice:active{transform:scale(.98)}.choice:disabled{cursor:default}.choice b{display:grid;place-items:center;flex:0 0 24px;width:24px;height:24px;border-radius:8px;background:#ffffff12;color:var(--gold);font-size:12px}.choice span{font-size:12px;line-height:1.25}.choice.correct{border-color:#ffd36a;background:#5a4520}.choice.wrong{border-color:var(--coral);background:#482635}.feedback,.quiz-meta{display:none!important}.game-result #resultTip{display:none}.game-result{position:absolute;z-index:30;inset:50% 20px auto;padding:26px 20px 20px;border:1px solid #ffffff22;border-radius:22px;background:#0b1b38f5;box-shadow:0 20px 55px #020817cc;text-align:center;transform:translateY(-50%)}.game-result>span{color:var(--gold);font-size:11px;font-weight:900;letter-spacing:.18em}.game-result>small{display:block;margin-top:13px;color:#9eafcb;font-size:10px}.game-result>strong{display:block;margin-top:2px;color:#fff;font-size:54px;line-height:1;font-weight:900;letter-spacing:-.08em}.game-result p{margin:12px 0 0;color:#c8d5ec;font-size:13px}.game-result #resultTip,.game-result #resultBest{margin-top:8px}.secondary-button{width:100%;min-height:50px;margin-top:20px;border-radius:14px;background:var(--coral);color:#fff;font-weight:900;box-shadow:0 5px 0 #a94538}.is-resetting *{transition:none!important}@media(max-height:700px){.playfield{height:58%;min-height:250px}.quiz-panel{height:42%;padding-top:10px}.question{margin-top:9px}.question h2{font-size:18px}.choices{margin-top:12px;gap:6px}.choice{min-height:49px;padding:7px 8px}.feedback{margin-top:6px}.quiz-meta{margin-top:4px}.start-copy h1{font-size:42px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.speed-readout{display:block;margin-top:4px;color:#8fb6d9;font-size:10px;font-weight:800}.speed-readout b{color:var(--gold);font-size:13px}.countdown-overlay{position:absolute;z-index:40;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#050b1dd9;backdrop-filter:blur(5px);text-align:center}.countdown-overlay[hidden]{display:none}.countdown-overlay span{color:var(--cyan);font-size:11px;font-weight:900;letter-spacing:.2em}.countdown-overlay strong{margin:10px 0;color:#fff;font-size:96px;line-height:1;font-weight:900;text-shadow:0 0 26px #7bd9ff99}.countdown-overlay small{color:#b8c5df;font-size:12px}.space-stream{position:absolute;z-index:3;inset:-15% 0 -45%;pointer-events:none;transition:transform .3s linear}.stream-object{position:absolute;display:block;opacity:0;transform:translateY(0);transition:opacity .6s ease}.stream-object::after{content:'';display:block}.stream-cloud{left:8%;top:12%;width:96px;height:42px;border-radius:50%;background:#e9f7ff66;filter:blur(2px);opacity:.7}.stream-atmosphere{right:8%;top:23%;width:86px;height:86px;border-radius:50%;background:radial-gradient(circle,#8ce1ff88 0 28%,#4ea7dd33 55%,transparent 72%);filter:blur(1px)}.stream-satellite{left:72%;top:35%;width:42px;height:7px;border:2px solid #c9e8ff;border-left:0;border-right:0;transform:rotate(-16deg)}.stream-satellite::after{position:absolute;left:10px;top:-8px;width:5px;height:20px;background:#f8d67c;content:''}.stream-shooting-star{right:18%;top:45%;width:62px;height:3px;background:linear-gradient(90deg,transparent,#fff,var(--gold));transform:rotate(-28deg);box-shadow:0 0 8px #fff}.stream-planet{left:7%;top:55%;width:48px;height:48px;border-radius:50%;background:radial-gradient(circle at 34% 30%,#ffcf8a,#d76a62 58%,#693b7d);box-shadow:0 0 16px #ff9a7c88}.stream-planet::after{position:absolute;left:-12px;top:18px;width:72px;height:10px;border:2px solid #ffdaaa99;border-radius:50%;transform:rotate(-18deg);content:''}.stream-comet{right:10%;top:64%;width:52px;height:14px;border-radius:50%;background:linear-gradient(90deg,transparent,#79dfff,#fff);filter:blur(.4px);transform:rotate(-25deg)}.stream-meteor-shower{left:28%;top:73%;width:110px;height:48px;background:repeating-linear-gradient(125deg,transparent 0 12px,#fff8c9 13px 15px,transparent 16px 25px);opacity:.65;transform:rotate(-10deg)}.stream-star{right:28%;top:82%;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 12px 4px #fff4a8}.stream-galaxy{left:42%;top:88%;width:76px;height:30px;border-radius:50%;background:radial-gradient(ellipse,#fff,#a98cff 22%,#5b6eea55 52%,transparent 72%);transform:rotate(-18deg);filter:blur(.5px)}.stream-white-dwarf{left:18%;top:91%;width:15px;height:15px;border-radius:50%;background:#fff;box-shadow:0 0 18px 7px #9edbff,0 0 32px 12px #fff8d4}.stream-binary{right:36%;top:94%;width:34px;height:18px}.stream-binary::before,.stream-binary::after{position:absolute;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 12px 4px #88c7ff;content:''}.stream-binary::before{left:0;top:2px}.stream-binary::after{right:0;top:2px;background:#ffd889;box-shadow:0 0 12px 4px #ff9c65}.stream-black-hole{right:8%;top:96%;width:62px;height:62px;border-radius:50%;background:radial-gradient(circle,#02030b 0 34%,#6f4bff 37% 42%,#ff9d53 47% 52%,transparent 64%);box-shadow:0 0 18px #8e62ff88}/* Continuous stream: objects enter above the viewport and leave below it. */
.playfield[data-grounded="true"] .space-stream .stream-object{opacity:0!important;animation-play-state:paused!important;transition:none!important}
.playfield[data-grounded="false"] .space-stream .stream-object{opacity:1!important;animation-play-state:running!important;transition:none!important}
.space-stream .stream-object{animation:stream-fall-continuous 3.8s linear infinite!important}
@keyframes stream-fall-continuous{0%{translate:0 -145%}100%{translate:0 145%}}
/* Hard bounds: every active asset starts above the playfield and exits below it. */
.playfield[data-grounded="false"] .space-stream .stream-object{top:-180px!important;bottom:auto!important;translate:none!important;animation:stream-fall-from-top 2.4s linear infinite!important}
@keyframes stream-fall-from-top{from{top:-180px}to{top:calc(100% + 180px)}}
/* One stage, one falling asset. It starts above the viewport and exits below it. */
.playfield[data-grounded="false"] .space-stream .stream-object{opacity:0!important}
.playfield[data-grounded="false"][data-stage="雲の中"] .stream-cloud,.playfield[data-grounded="false"][data-stage="大気圏上昇"] .stream-atmosphere,.playfield[data-grounded="false"][data-stage="成層圏"] .stream-atmosphere,.playfield[data-grounded="false"][data-stage="衛星軌道へ"] .stream-satellite,.playfield[data-grounded="false"][data-stage="流星帯"] .stream-meteor-shower,.playfield[data-grounded="false"][data-stage="惑星圏"] .stream-planet,.playfield[data-grounded="false"][data-stage="彗星帯"] .stream-comet,.playfield[data-grounded="false"][data-stage="星間空間"] .stream-star,.playfield[data-grounded="false"][data-stage="銀河の入口"] .stream-galaxy,.playfield[data-grounded="false"][data-stage="銀河群"] .stream-galaxy,.playfield[data-grounded="false"][data-stage="白色矮星"] .stream-white-dwarf,.playfield[data-grounded="false"][data-stage="連星"] .stream-binary,.playfield[data-grounded="false"][data-stage="宇宙圏"] .stream-black-hole{opacity:1!important}.playfield[data-stage="宇宙圏"]{background-image:linear-gradient(#02051a44,#02051acc),url('./public/assets/rebuild/parallax/distant-space.png')}.playfield[data-stage="銀河群"],.playfield[data-stage="銀河団"]{background-image:linear-gradient(#07152f33,#02051acc),url('./public/assets/rebuild/parallax/distant-space.png')}.space-stream{display:none!important}.space-stream .stream-object{animation:stream-fall calc(2.4s / max(1,var(--journey) * 4 + .7)) linear infinite}@keyframes stream-fall{from{translate:0 -8px}to{translate:0 170px}}@media(max-height:700px){.countdown-overlay strong{font-size:82px}.speed-readout{font-size:9px}.speed-readout b{font-size:12px}.space-stream{inset:-10% 0 -55%}}
/* Generated space-object artwork: replaces the temporary CSS silhouettes. */
.space-stream .stream-object{background-color:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;filter:drop-shadow(0 7px 12px #02081766)!important;transform:translateY(0)!important;opacity:0;overflow:visible;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important}
.space-stream .stream-object::after,.space-stream .stream-binary::before{display:none!important;content:none!important}
.space-stream .stream-cloud{left:4%;top:9%;width:132px;height:86px;background-image:url('./public/assets/rebuild/space-generated/cloud-generated.png')!important;opacity:.88}
.space-stream .stream-atmosphere{right:3%;top:21%;width:110px;height:118px;background-image:url('./public/assets/rebuild/space-generated/atmosphere-generated.png')!important;opacity:.86}
.space-stream .stream-satellite{left:68%;top:34%;width:92px;height:70px;background-image:url('./public/assets/rebuild/space-generated/satellite-generated.png')!important;transform:rotate(-12deg)!important}
.space-stream .stream-shooting-star{right:12%;top:44%;width:112px;height:82px;background-image:url('./public/assets/rebuild/space-generated/shooting-star-generated.png')!important;transform:rotate(-18deg)!important}
.space-stream .stream-planet{left:2%;top:53%;width:100px;height:100px;background-image:url('./public/assets/rebuild/space-generated/planet-generated.png')!important}
.space-stream .stream-comet{right:2%;top:63%;width:126px;height:100px;background-image:url('./public/assets/rebuild/space-generated/comet-generated.png')!important;transform:rotate(-18deg)!important}
.space-stream .stream-meteor-shower{left:23%;top:71%;width:156px;height:112px;background-image:url('./public/assets/rebuild/space-generated/meteor-shower-generated.png')!important;transform:rotate(-8deg)!important;opacity:.78}
.space-stream .stream-star{right:24%;top:80%;width:62px;height:62px;background-image:none!important}
.space-stream .stream-galaxy{left:36%;top:86%;width:132px;height:96px;background-image:url('./public/assets/rebuild/space-generated/galaxy-generated.png')!important;transform:rotate(-12deg)!important}
.space-stream .stream-white-dwarf{left:12%;top:89%;width:100px;height:82px;background-image:url('./public/assets/rebuild/space-generated/white-dwarf-generated.png?v=2')!important}
.space-stream .stream-binary{left:44%;top:93%;width:144px;height:86px;background-image:url('./public/assets/rebuild/space-generated/binary-star-generated.png?v=2')!important}
.space-stream .stream-black-hole{right:2%;top:95%;width:126px;height:92px;background-image:url('./public/assets/rebuild/space-generated/black-hole-generated.png')!important}
/* Continuous stream: objects enter above the viewport and leave below it. */
.playfield[data-grounded="true"] .space-stream .stream-object{opacity:0!important;animation-play-state:paused!important;transition:none!important}
.playfield[data-grounded="false"] .space-stream .stream-object{opacity:1!important;animation-play-state:running!important;transition:none!important}
.space-stream .stream-object{animation:stream-fall-continuous 3.8s linear infinite!important}
@keyframes stream-fall-continuous{0%{translate:0 -145%}100%{translate:0 145%}}
/* Hard bounds: every active asset starts above the playfield and exits below it. */
.playfield[data-grounded="false"] .space-stream .stream-object{top:-180px!important;bottom:auto!important;translate:none!important;animation:stream-fall-from-top 2.4s linear infinite!important}
@keyframes stream-fall-from-top{from{top:-180px}to{top:calc(100% + 180px)}}
/* One stage, one falling asset. It starts above the viewport and exits below it. */
.playfield[data-grounded="false"] .space-stream .stream-object{opacity:0!important}
.playfield[data-grounded="false"][data-stage="雲の中"] .stream-cloud,.playfield[data-grounded="false"][data-stage="大気圏上昇"] .stream-atmosphere,.playfield[data-grounded="false"][data-stage="成層圏"] .stream-atmosphere,.playfield[data-grounded="false"][data-stage="衛星軌道へ"] .stream-satellite,.playfield[data-grounded="false"][data-stage="流星帯"] .stream-meteor-shower,.playfield[data-grounded="false"][data-stage="惑星圏"] .stream-planet,.playfield[data-grounded="false"][data-stage="彗星帯"] .stream-comet,.playfield[data-grounded="false"][data-stage="星間空間"] .stream-star,.playfield[data-grounded="false"][data-stage="銀河の入口"] .stream-galaxy,.playfield[data-grounded="false"][data-stage="銀河群"] .stream-galaxy,.playfield[data-grounded="false"][data-stage="白色矮星"] .stream-white-dwarf,.playfield[data-grounded="false"][data-stage="連星"] .stream-binary,.playfield[data-grounded="false"][data-stage="宇宙圏"] .stream-black-hole{opacity:1!important}
/* Flight flame follows the rocket's measured lower edge; never pin it to the playfield bottom. */
.flight-smoke{bottom:auto!important}
/* The active space asset is always visible shortly after a stage starts. */
.playfield[data-grounded="false"] .space-stream .stream-object{top:5%!important;animation:stream-fall-margin 5s linear infinite!important}
@keyframes stream-fall-margin{from{margin-top:0}to{margin-top:calc(100vh + 220px)}}
.game-home-button{position:absolute;top:calc(12px + env(safe-area-inset-top));right:14px;z-index:20;min-height:44px;padding:8px 11px;border:1px solid #9edfff66;border-radius:999px;background:#07152fcc;color:#dff7ff;font-size:11px;font-weight:900;box-shadow:0 5px 14px #02081755}.game-home-button:active{transform:scale(.96)}
/* Rocket and exhaust share one moving rig so their relationship cannot drift. */
.launch-pad{position:absolute;z-index:4;left:50%;bottom:-7%;width:min(94%,430px);height:auto;transform:translateX(-50%);opacity:0;pointer-events:none;filter:drop-shadow(0 18px 22px rgba(0,8,24,.55));transition:opacity .65s ease,transform .85s cubic-bezier(.16,.75,.22,1)}
.playfield[data-grounded="true"] .launch-pad{opacity:.98;transform:translateX(-50%) translateY(0) scale(1)}
.playfield[data-grounded="false"] .launch-pad{opacity:0;transform:translateX(-50%) translateY(28px) scale(.92)}
.rocket-rig{position:absolute;z-index:5;left:50%;bottom:-3%;width:min(34%,150px);aspect-ratio:1;transform:translateX(-50%);transition:bottom .75s cubic-bezier(.16,.75,.22,1),transform .75s cubic-bezier(.16,.75,.22,1);will-change:bottom,transform}
.launch-clamp{position:absolute;z-index:0;left:50%;top:82%;width:62%;height:16%;transform:translateX(-50%);border:2px solid #7bd9ffdd;border-radius:999px;background:linear-gradient(180deg,#7bd9ff55,#143d64dd);box-shadow:0 0 0 3px #07152f99,0 0 18px #45caff99;opacity:0;transition:opacity .35s ease;pointer-events:none}
.playfield[data-grounded="true"] .launch-clamp{opacity:1}
.playfield[data-grounded="false"] .launch-clamp{opacity:0}
.rocket-rig .game-rocket{position:relative;left:auto;bottom:auto;width:100%;height:100%;object-fit:contain;transform:rotate(0deg)!important;filter:drop-shadow(0 13px 15px #020817cc)}
.rocket-rig .flight-smoke{position:absolute;z-index:-1;left:50%;top:64%;bottom:auto!important;width:82%;height:78%;object-fit:contain;object-position:center top;transform:translateX(-50%) scale(.9);transform-origin:center top}
.rocket-rig .generated-smoke{position:absolute;z-index:-2;left:50%;top:76%;bottom:auto!important;width:140%;height:100%;object-fit:contain;object-position:center top;transform:translateX(-50%);}
.playfield[data-grounded="false"] .space-stream .stream-object{opacity:.86!important;animation:stream-fall-margin 5s linear infinite!important}
.playfield[data-grounded="false"] .space-stream .stream-object:nth-child(2n){animation-delay:-2.5s!important}
/* Clean flight scene: self-contained asset stream and rocket rig. */
.clean-space-stream{position:absolute!important;z-index:3!important;inset:0!important;overflow:hidden!important;pointer-events:none!important;transform:none!important}
.clean-stream-object{position:absolute!important;display:block!important;top:-110px!important;width:92px!important;height:92px!important;margin:0;opacity:0!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important;border:0!important;box-shadow:none!important;transform:none!important;translate:none!important}
.playfield[data-grounded="false"] .clean-stream-object{opacity:.92!important;animation:clean-asset-fall 7s linear infinite!important}
.clean-cloud{left:5%!important;top:8%!important;width:128px!important;height:82px!important;background-image:url('./public/assets/rebuild/space-generated/cloud-generated.png')!important;animation-delay:-1s!important}
.clean-planet-jupiter{left:-22%!important;top:13%!important;width:1800px!important;height:1800px!important;background-image:url('./public/assets/rebuild/space-generated/jupiter-generated.png')!important;animation-delay:-3.2s!important}.clean-planet-saturn{right:-82%!important;top:25%!important;width:2050px!important;height:1525px!important;background-image:url('./public/assets/rebuild/space-generated/saturn-generated-v2.png?v=1')!important;animation-delay:-4.4s!important}.clean-planet-neptune{left:-42%!important;top:21%!important;width:1300px!important;height:1300px!important;background-image:url('./public/assets/rebuild/space-generated/neptune-generated.png')!important;animation-delay:-2.8s!important}
.clean-satellite{right:8%!important;top:28%!important;width:116px!important;height:86px!important;background-image:url('./public/assets/rebuild/space-generated/satellite-generated.png')!important;animation-delay:-4.6s!important}
.clean-comet{right:4%!important;top:38%!important;width:190px!important;height:148px!important;background-image:url('./public/assets/rebuild/space-generated/comet-generated.png')!important;animation-delay:-2.2s!important}
.clean-galaxy{left:-72%!important;top:-40px!important;width:2100px!important;height:1675px!important;background-image:url('./public/assets/rebuild/space-generated/galaxy-generated.png')!important;animation-delay:-5.3s!important}
.playfield[data-stage="銀河群"] .clean-galaxy{left:auto!important;right:-36%!important;top:-120px!important;width:920px!important;height:1150px!important;background-image:url('./public/assets/rebuild/space-generated/nebula-generated-v2.png?v=1')!important;transform:rotate(7deg)!important;animation-delay:-3.8s!important}
.clean-star{right:8%!important;top:-90px!important;width:280px!important;height:280px!important;background-image:url('./public/assets/rebuild/space-generated/star-generated-v2.png?v=1')!important;animation-delay:-1.6s!important}
@keyframes clean-asset-fall{from{margin-top:0}to{margin-top:calc(100% + 760px)}}
@keyframes clean-cloud-fall{0%{margin-top:var(--cloud-start,0px);margin-left:0}42%{margin-left:var(--cloud-drift,0px)}72%{margin-left:calc(var(--cloud-drift,0px) * -.55)}100%{margin-top:calc(100% + 760px);margin-left:calc(var(--cloud-drift,0px) * .35)}}
.rocket-rig{position:absolute!important;z-index:5!important;left:50%!important;bottom:-3%;width:min(34%,150px)!important;aspect-ratio:1!important;transform:translateX(-50%);transition:bottom .75s cubic-bezier(.16,.75,.22,1),transform .75s cubic-bezier(.16,.75,.22,1)!important}
.rocket-rig .game-rocket{position:relative!important;left:auto!important;bottom:auto!important;width:100%!important;height:100%!important;object-fit:contain!important;transform:rotate(0deg)!important}

.rocket-rig .generated-smoke{position:absolute!important;z-index:-1!important;left:50%!important;top:62%!important;bottom:auto!important;width:132%!important;height:122%!important;object-fit:contain!important;object-position:center top!important;transform:translateX(-50%)!important;opacity:0!important;filter:blur(.2px) drop-shadow(0 5px 10px rgba(190,235,255,.2))!important;mix-blend-mode:screen}
.rocket-rig .generated-smoke[data-active="true"]{opacity:.56!important;animation:smoke-breathe 1.1s ease-in-out infinite alternate!important}
@keyframes smoke-breathe{from{transform:translateX(-50%) scale(.94);filter:blur(.5px) drop-shadow(0 4px 8px rgba(190,235,255,.14))}to{transform:translateX(-50%) scale(1.04);filter:blur(1.2px) drop-shadow(0 7px 14px rgba(190,235,255,.28))}}
/* The current rocket cutout already excludes the baked-in exhaust. */
.rocket-rig .game-rocket[data-rocket="orion"],
.rocket-rig .game-rocket[data-rocket="tenkuu"],
.rocket-rig .game-rocket[data-rocket="ibuki"],
.rocket-rig .game-rocket[data-rocket="hoshiakari"],
.rocket-rig .game-rocket[data-rocket="kaguya"]{transform:rotate(0deg)!important}
.rocket-rig .game-rocket[data-rocket="nova"]{transform:rotate(-20deg)!important}
.rocket-rig .game-rocket[data-rocket="atlas"]{transform:rotate(-22deg)!important}
.rocket-rig .game-rocket[data-rocket="bouken-go"]{transform:rotate(-18deg)!important}
.rocket-rig .game-rocket[data-rocket="suisei"]{transform:rotate(-20deg)!important}
.rocket-rig .game-rocket[data-rocket="starter"]{transform:rotate(-24deg)!important}
/* One stage = one asset. Hidden assets stay paused above the scene. */
.clean-stream-object{top:5%!important;margin:0;display:none!important;opacity:0!important;animation:clean-asset-fall 7s linear 0s infinite!important;animation-play-state:paused!important}
.playfield[data-grounded="false"] .clean-stream-object[data-revealed="true"]{display:block!important;opacity:.94!important;animation-play-state:running!important}.playfield[data-grounded="false"][data-stage="惑星圏"][data-planet-variant="jupiter"] .clean-planet-saturn,.playfield[data-grounded="false"][data-stage="惑星圏"][data-planet-variant="jupiter"] .clean-planet-neptune,.playfield[data-grounded="false"][data-stage="惑星圏"][data-planet-variant="saturn"] .clean-planet-jupiter,.playfield[data-grounded="false"][data-stage="惑星圏"][data-planet-variant="saturn"] .clean-planet-neptune,.playfield[data-grounded="false"][data-stage="惑星圏"][data-planet-variant="neptune"] .clean-planet-jupiter,.playfield[data-grounded="false"][data-stage="惑星圏"][data-planet-variant="neptune"] .clean-planet-saturn{display:none!important}
.clean-atmosphere{right:5%!important;width:160px!important;height:170px!important;background-image:url('./public/assets/rebuild/space-generated/atmosphere-generated.png')!important}
.clean-moon{left:-30%!important;width:890px!important;height:890px!important;background-image:url('./public/assets/rebuild/space-generated/moon-generated-v2.png?v=1')!important}
.clean-shooting-star{right:12%!important;width:155px!important;height:108px!important;background-image:url('./public/assets/rebuild/space-generated/shooting-star-generated.png')!important}
.clean-meteor-shower{left:24%!important;width:210px!important;height:150px!important;background-image:url('./public/assets/rebuild/space-generated/meteor-shower-generated.png')!important}
.clean-white-dwarf{left:-18%!important;width:750px!important;height:610px!important;background-image:url('./public/assets/rebuild/space-generated/white-dwarf-generated.png?v=2')!important}
.clean-binary{left:-56%!important;width:1025px!important;height:620px!important;background-image:url('./public/assets/rebuild/space-generated/binary-star-generated.png?v=2')!important}
.clean-black-hole{right:-42%!important;width:1050px!important;height:750px!important;background-image:url('./public/assets/rebuild/space-generated/black-hole-generated-v2.png?v=1')!important}
.clean-piko-ufo{left:110%!important;top:31%!important;width:300px!important;height:267px!important;background-image:url('./public/assets/rebuild/space-generated/piko-ufo-generated-v4.png?v=1')!important;background-size:contain!important;animation-name:piko-ufo-drift!important;z-index:4!important}
/* Every scene asset enters from above the viewport; per-asset top offsets must not override this. */
.playfield[data-grounded="false"] .clean-stream-object{top:-40px!important;animation-delay:0s!important}
/* Dense cloud bank: several differently sized silhouettes pass together during launch. */
.clean-cloud.cloud-a{left:-10%!important;width:174px!important;height:96px!important;opacity:.98!important}
.clean-cloud.cloud-b{left:24%!important;width:142px!important;height:78px!important;opacity:.9!important}
.clean-cloud.cloud-c{left:56%!important;width:188px!important;height:104px!important;opacity:.96!important}
.clean-cloud.cloud-d{left:80%!important;width:150px!important;height:84px!important;opacity:.88!important}
@keyframes piko-ufo-drift{0%{margin-left:0;margin-top:0;rotate:8deg}18%{margin-left:-12vw;margin-top:-18px;rotate:4deg}38%{margin-left:-42vw;margin-top:14px;rotate:-6deg}58%{margin-left:-76vw;margin-top:-12px;rotate:5deg}78%{margin-left:-112vw;margin-top:16px;rotate:-5deg}100%{margin-left:calc(-100vw - 420px);margin-top:-4px;rotate:-10deg}}
/* Keep the flame aligned under the nozzle while the rocket body tilts; only a small side-to-side wobble remains. */
.rocket-rig .flight-smoke{left:50%!important;transform:translateX(calc(-50% + var(--flame-wobble, 0px))) rotate(var(--flame-counter-rotate, 0deg))!important;transform-origin:50% 0!important}
/* Once the rocket reaches orbital altitude, the cloud layer is left below. */
.playfield[data-stage="衛星軌道へ"] .cloud-layer,
.playfield[data-stage="流星帯"] .cloud-layer,
.playfield[data-stage="惑星圏"] .cloud-layer,
.playfield[data-stage="彗星帯"] .cloud-layer,
.playfield[data-stage="星間空間"] .cloud-layer,
.playfield[data-stage="銀河の入口"] .cloud-layer,
.playfield[data-stage="銀河群"] .cloud-layer,
.playfield[data-stage="白色矮星"] .cloud-layer,
.playfield[data-stage="連星"] .cloud-layer,
.playfield[data-stage="宇宙圏"] .cloud-layer,
.playfield[data-stage="衛星軌道へ"] .clean-cloud,
.playfield[data-stage="流星帯"] .clean-cloud,
.playfield[data-stage="惑星圏"] .clean-cloud,
.playfield[data-stage="彗星帯"] .clean-cloud,
.playfield[data-stage="星間空間"] .clean-cloud,
.playfield[data-stage="銀河の入口"] .clean-cloud,
.playfield[data-stage="銀河群"] .clean-cloud,
.playfield[data-stage="白色矮星"] .clean-cloud,
.playfield[data-stage="連星"] .clean-cloud,
.playfield[data-stage="宇宙圏"] .clean-cloud{display:none!important;opacity:0!important;animation-play-state:paused!important}
.home-ranking-button{display:flex;align-items:center;justify-content:center;gap:9px;width:min(100%,180px);min-height:44px;margin:4px 0 10px;padding:7px 14px;border:1px solid #4e6f99;border-radius:999px;background:#0e2749;color:#fff;text-align:center;box-shadow:0 6px 16px #02081755}.home-ranking-button img{width:28px;height:28px;border-radius:50%;object-fit:cover}.home-ranking-button span{font-size:13px;font-weight:900}.home-ranking-button:active{transform:translateY(2px)}.home-learning-card{display:flex;align-items:center;position:relative;width:min(100%,300px);min-height:74px;margin:4px 0 10px;padding:0 12px 0 0;overflow:hidden;border:1px solid #8fe7ff99;border-radius:16px;background:linear-gradient(110deg,#123b68,#155b7b 58%,#1c6b85);color:#fff;text-align:left;box-shadow:0 7px 16px #02081755}.home-learning-card:active{transform:translateY(2px)}.home-learning-image{display:block;width:92px;height:74px;overflow:hidden;flex:0 0 92px;background:#09264b}.home-learning-image img{width:185px;height:92px;object-fit:cover;object-position:68% 50%;transform:translateX(-42px)}.home-learning-copy{display:grid;gap:3px;min-width:0;padding-left:10px}.home-learning-copy small{color:#bcefff;font-size:8px;font-weight:900;letter-spacing:.16em}.home-learning-copy strong{font-size:14px;line-height:1.15}.home-learning-copy em{color:#d0f4ff;font-size:10px;font-style:normal;font-weight:700}.home-learning-arrow{margin-left:auto;color:#d8f7ff;font-size:28px;font-weight:300}.leaderboard-screen{display:flex;flex-direction:column;overflow:auto;padding:calc(18px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#07152f,#0a2040)}.leaderboard-screen-header{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%}.leaderboard-screen-header .back-button{min-height:44px}.leaderboard-screen-title{margin:42px 0 22px;text-align:center}.leaderboard-screen-title h2{margin:6px 0 8px;color:#fff;font-size:25px;line-height:1.2}.leaderboard-screen-title p{margin:0;color:#9dbcdc;font-size:12px}.leaderboard-table-card{width:100%;padding:12px;border:1px solid #2d527d;border-radius:20px;background:#091a35dd;box-shadow:0 16px 34px #02081766}.leaderboard-table-heading{display:grid;grid-template-columns:42px 1fr auto;gap:8px;padding:5px 10px 9px;color:#7fa7cd;font-size:11px;font-weight:800}.leaderboard-table-heading span:last-child{text-align:right}.leaderboard-screen .leaderboard-list{margin-top:0}.leaderboard-screen .leaderboard-list li{min-height:48px;background:#102d52}.leaderboard-note{margin:16px 0;color:#83a8cc;text-align:center;font-size:11px}
.leaderboard-panel{width:min(100%,420px);margin:18px auto 0;padding:16px;border:1px solid #24436a;border-radius:20px;background:#091a35cc;box-shadow:0 12px 30px #02071366}.leaderboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.leaderboard-header h2{margin:3px 0 0;font-size:20px}.leaderboard-list{display:grid;gap:7px;margin:12px 0 0;padding:0;list-style:none}.leaderboard-list li{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;min-height:38px;padding:7px 9px;border-radius:10px;background:#10294b;color:#e9f5ff;font-size:13px}.leaderboard-list li.is-me{outline:1px solid var(--gold);background:#26365a}.leaderboard-list li.is-outside-top{margin-top:10px;border-top:1px solid #ffd36a66;background:#26365a}.leaderboard-rank{color:var(--gold);font-weight:900}.leaderboard-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-score{color:#fff;font-weight:900;font-variant-numeric:tabular-nums}.leaderboard-empty{display:block!important;text-align:center;color:#91b5d5!important}.learning-link{position:relative;display:flex;align-items:flex-start;flex-direction:column;gap:4px;min-height:96px;margin-top:12px;padding:13px 72px 12px 16px;overflow:hidden;border:1px solid #8fe7ff99;background:linear-gradient(135deg,#1b6b8b 0%,#155079 48%,#193e70 100%);text-align:left;box-shadow:0 7px 0 #9b493f,0 12px 24px #02081766}.learning-link::after{position:absolute;right:-24px;bottom:-38px;width:118px;height:118px;border:1px solid #ffffff33;border-radius:50%;box-shadow:0 0 0 13px #ffffff0b,0 0 0 27px #ffffff08;content:""}.learning-link:active{transform:translateY(3px);box-shadow:0 4px 0 #9b493f,0 8px 16px #02081766}.learning-link-kicker{position:relative;z-index:2;color:#bcefff;font-size:9px;font-weight:900;letter-spacing:.18em}.learning-link-copy{position:relative;z-index:2;display:grid;gap:4px}.learning-link strong{color:#fff;font-size:16px;line-height:1.2;text-shadow:0 1px 2px #061b33}.learning-link small{color:#d2f4ff;font-size:10px;font-weight:700;line-height:1.3}.learning-link-piko{position:absolute;z-index:1;right:4px;bottom:4px;width:78px;height:64px;object-fit:contain;filter:drop-shadow(0 5px 5px #061b3388);transform:rotate(-5deg)}.score-submit{display:grid;gap:7px;margin:14px 0 10px;padding:12px;border:1px solid #31547e;border-radius:14px;background:#0a1e3d}.score-submit label{color:#b8d6ef;font-size:12px;font-weight:800}.score-submit-row{display:flex;align-items:stretch;gap:8px}.score-submit input{min-width:0;flex:1;width:1%;padding:10px 11px;border:1px solid #52749d;border-radius:10px;background:#06132a;color:#fff;font:inherit}.score-submit-row .secondary-button{width:auto;min-width:120px;min-height:50px;margin-top:0;flex:0 0 auto}.score-submit input:focus{outline:2px solid var(--cyan);outline-offset:1px}.score-submit-status{min-height:18px;margin:0;color:#a7c9e5;font-size:12px}.score-submit-status.is-error{color:#ff9d8e}.score-submit-status.is-success{color:#a9edc6}@media (max-width:420px){.leaderboard-panel{margin-top:14px;padding:13px}.score-submit-row{align-items:stretch}.score-submit-row button{padding-inline:12px}}