:root{--bg:#070b1a;--bg-2:#0e1430;--panel:#141b3a;--panel-2:#1b234a;--text:#eaf0ff;--muted:#8a95c9;--accent:#5b8cff;--accent-2:#9b6bff;--good:#46e0a8;--shadow:0 8px 30px #00000073;--radius:18px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}.tap,.turtle,.upgrade,.comet,.overlay-btn,.icon-btn{touch-action:manipulation;-webkit-user-select:none;user-select:none}html,body{height:100%;margin:0;overflow:hidden}body{color:var(--text);background:radial-gradient(1200px 600px at 50% -10%, #1a2350 0%, transparent 60%), radial-gradient(900px 500px at 80% 110%, #2a1a52 0%, transparent 55%), var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{max-width:520px;height:100dvh;padding:12px 14px calc(12px + env(safe-area-inset-bottom));flex-direction:column;gap:12px;margin:0 auto;display:flex}.topbar{justify-content:space-between;align-items:center;min-height:44px;display:flex}.icon-btn{background:var(--panel);width:44px;height:44px;color:var(--text);cursor:pointer;box-shadow:var(--shadow);border:none;border-radius:14px;font-size:20px}.topbar .title{letter-spacing:.5px;color:var(--muted);text-transform:uppercase;font-size:14px;font-weight:700}.comet-timer{color:var(--accent);white-space:nowrap;margin-left:auto;padding:0 8px;font-size:13px;font-weight:700}.stage{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;display:flex}.turtle{background:radial-gradient(circle at 35% 30%, var(--panel-2), var(--panel));width:120px;height:120px;box-shadow:var(--shadow), inset 0 0 30px #5b8cff40;border-radius:50%;place-items:center;font-size:64px;display:grid}.speed{letter-spacing:-1px;font-size:clamp(40px,12vw,72px);font-weight:800;line-height:1}.speed-unit{color:var(--muted);margin-top:-2px;font-size:16px}.persec{color:var(--good);font-size:15px;font-weight:700}.anchor{color:var(--accent);font-size:15px;font-weight:600}.evo-progress{width:86%;margin-top:8px}.evo-next{color:var(--muted);text-align:center;margin-bottom:4px;font-size:12px;font-weight:600}.progress{background:var(--panel);border-radius:999px;width:100%;height:22px;position:relative;overflow:hidden}.progress-ghost{background:#5b8cff4d;border-radius:999px;width:0;height:100%;transition:width .15s ease-out;position:absolute;top:0;left:0}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:999px;width:0;height:100%;transition:width .15s ease-out;position:absolute;top:0;left:0}.progress-pct{color:var(--text);text-shadow:0 1px 3px #000000b3;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex;position:absolute;inset:0}.upgrades{flex-direction:column;gap:8px;max-height:38vh;padding-right:2px;display:flex;overflow-y:auto}.upgrade{border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.upgrade .info{text-align:left;flex-direction:column;gap:2px;display:flex}.upgrade .name{font-weight:700}.upgrade .effect{color:var(--muted);font-size:12px}.upgrade .price{color:var(--good);white-space:nowrap;font-weight:700}.tap{letter-spacing:1px;color:#fff;cursor:pointer;background:linear-gradient(90deg, var(--accent), var(--accent-2));border:none;border-radius:22px;padding:20px;font-size:20px;font-weight:800;box-shadow:0 10px 30px #5b8cff66}.tap:active{transform:translateY(2px)}@keyframes flash{0%{opacity:.6}to{opacity:0}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes microBounce{0%{transform:scale(1)}45%{transform:scale(1.14)}to{transform:scale(1)}}.fx-flash{animation:.25s ease-out flash}.fx-shake{animation:.3s shake}.fx-bounce{animation:.18s microBounce}.turtle{cursor:pointer;-webkit-user-select:none;user-select:none}.plus-fly{letter-spacing:-.5px;color:var(--good);text-shadow:0 2px 8px #0000008c,0 0 14px #46e0a8e6,0 0 26px #46e0a88c;pointer-events:none;z-index:50;will-change:transform, opacity;font-size:40px;font-style:italic;font-weight:900;animation:.85s cubic-bezier(.2,.7,.3,1) forwards plusFly;position:fixed;transform:translate(-50%,-50%)}@keyframes plusFly{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}18%{opacity:1;transform:translate(-50%,-70%)scale(1.18)}40%{transform:translate(-50%,-95%)scale(1)}to{opacity:0;transform:translate(-50%,-190%)scale(1)}}@keyframes tapPulse{0%,to{transform:scale(1);box-shadow:0 10px 30px #5b8cff66}50%{transform:scale(1.04);box-shadow:0 14px 44px #5b8cffbf}}.tap.pulse{animation:1.2s ease-in-out infinite tapPulse}@keyframes evolveGlow{0%,to{transform:scale(1);box-shadow:0 10px 30px #46e0a880}50%{transform:scale(1.05);box-shadow:0 14px 48px #46e0a8e6}}.tap.evolve{background:linear-gradient(90deg, var(--good), #46e0c0);color:#04210f;animation:.9s ease-in-out infinite evolveGlow}@keyframes boostGlow{0%,to{box-shadow:0 10px 30px #ff8c2899}50%{box-shadow:0 14px 48px #ff5a1ef2}}.tap.boost{color:#2a1000;background:linear-gradient(90deg,#ff8c28,#ff5a1e);animation:.7s ease-in-out infinite boostGlow}.comet{cursor:pointer;z-index:60;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 0 12px #78c8ffe6);pointer-events:auto;font-size:48px;position:fixed;top:22%;left:0}.comet.hidden{display:none}@keyframes cometFly{0%{transform:translate(-15vw)rotate(-12deg)}to{transform:translate(112vw)rotate(-12deg)}}.comet.flying{animation:3.5s linear cometFly;display:block}.stage-label{color:var(--accent-2);letter-spacing:.4px;font-size:13px;font-weight:700}.evo-mult{color:var(--good);margin-top:2px;font-size:13px;font-weight:700}.turtle.stage-1{box-shadow:var(--shadow), inset 0 0 30px #ffb4504d}.turtle.stage-2{box-shadow:var(--shadow), inset 0 0 30px #ff787859}.turtle.stage-3{box-shadow:var(--shadow), inset 0 0 32px #78c8ff66}.turtle.stage-4{box-shadow:var(--shadow), inset 0 0 34px #a078ff73}.turtle.stage-5{box-shadow:var(--shadow), inset 0 0 40px #9b6bffb3, 0 0 30px #5b8cff99}.fx-flash-overlay{z-index:90;pointer-events:none;background:#fff;animation:.35s ease-out forwards flash;position:fixed;inset:0}.evolve-toast{z-index:110;border-radius:var(--radius);background:var(--panel-2);box-shadow:var(--shadow), 0 0 30px #46e0a880;text-align:center;pointer-events:auto;padding:16px 22px;animation:.3s ease-out evolvePop;position:fixed;top:28%;left:50%;transform:translate(-50%,-50%)}.evolve-toast.hidden{display:none}.evolve-toast .evolve-title{color:var(--good);font-size:22px;font-weight:800}.evolve-toast .evolve-name{color:var(--text);margin-top:4px;font-size:15px}@keyframes evolvePop{0%{opacity:0;transform:translate(-50%,-50%)scale(.8)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.light-culmination{background:radial-gradient(circle at 50% 40%,#9b6bff66,#040712eb)}.light-panel{width:min(420px,92vw);box-shadow:var(--shadow), 0 0 60px #5b8cff99;border:1px solid #9b6bff80;gap:16px;padding:30px 26px}.light-burst{font-size:64px;animation:.5s microBounce}.light-title{letter-spacing:.5px;background:linear-gradient(90deg, var(--accent), var(--accent-2), var(--good));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:26px;font-weight:900}.light-sub{color:var(--muted);margin:0 0 6px;font-size:14px}.overlay{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#040712b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay.hidden{display:none}.overlay-panel{border-radius:var(--radius);background:var(--panel);width:min(360px,86vw);box-shadow:var(--shadow);text-align:center;flex-direction:column;gap:12px;padding:22px;display:flex}.overlay-panel h2{margin:0 0 4px}.overlay-btn{color:var(--text);background:var(--panel-2);cursor:pointer;border:none;border-radius:14px;padding:14px;font-size:16px;font-weight:700}.overlay-btn:active{transform:translateY(2px)}.overlay-btn.danger{background:#b33}.overlay-btn.accent{background:linear-gradient(90deg, var(--accent), var(--accent-2))}.offline-sub{color:var(--muted);margin:0;font-size:14px}.offline-earned{color:var(--good);margin:2px 0 6px;font-size:28px;font-weight:800}.upgrade .level{color:var(--muted);font-size:12px;font-weight:600}.upgrade .lock-note{color:var(--muted);font-size:12px}.upgrade.locked{opacity:.45;filter:grayscale(.7);cursor:not-allowed}.upgrade.too-expensive{cursor:default}.upgrade.too-expensive .price{opacity:.4}.upgrade.affordable{cursor:pointer;outline:1px solid #46e0a859}.upgrade.affordable:active{transform:translateY(2px)}.upgrade.affordable .price{color:var(--good)}
