:root{--bg:#0b1020;--panel:#0f1426eb;--panel-soft:#181f38db;--border:#788cbe47;--text:#eef2ff;--text-dim:#a3aecb;--accent:#22d3ee;--accent-2:#fbbf24;--good:#34d399;--bad:#f87171;--pink:#f472b6;--radius:14px;--shadow:0 18px 48px #00000073;--font:system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;background:var(--bg);height:100dvh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;touch-action:manipulation;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}#game-canvas{touch-action:none;cursor:crosshair;width:100%;height:100%;display:block;position:fixed;inset:0}#ui-root{pointer-events:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0;overflow:hidden}#ui-root button,#ui-root input,#ui-root select,#ui-root .clickable{pointer-events:auto;font-family:inherit}.hud{pointer-events:none;transition:opacity .25s;position:absolute;inset:0}.hud[hidden]{display:none}.hud-top-left{top:max(14px, env(safe-area-inset-top));left:max(14px, env(safe-area-inset-left));flex-direction:column;gap:8px;display:flex;position:absolute}.hud-level{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:190px;padding:9px 14px}.hud-level-name{letter-spacing:.02em;font-size:15px;font-weight:650}.hud-level-sub{color:var(--text-dim);margin-top:2px;font-size:12px}.hud-timer{font-variant-numeric:tabular-nums;letter-spacing:.04em;text-shadow:0 2px 12px #0009;font-size:26px;font-weight:700}.hud-timer.warn{color:var(--accent-2)}.hud-timer.danger{color:var(--bad);animation:.8s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.5}}.hud-top-right{top:max(14px, env(safe-area-inset-top));right:max(14px, env(safe-area-inset-right));flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute}.hud-chip{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;padding:7px 15px;font-size:16px;font-weight:650;display:flex}.hud-chip .coin-dot{background:linear-gradient(150deg,#ffe27a,#f0a800);border-radius:50%;width:15px;height:15px;box-shadow:0 0 10px #fbbf248c}.hud-chip.small{color:var(--text-dim);padding:5px 12px;font-size:13px;font-weight:550}.hud-chip.flash{animation:.4s chip-flash}@keyframes chip-flash{0%{transform:scale(1)}40%{color:var(--accent-2);transform:scale(1.16)}to{transform:scale(1)}}.hud-coil{align-items:center;gap:7px;font-size:13px;display:flex}.toast-stack{pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;top:18%;left:50%;transform:translate(-50%)}.toast{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);white-space:nowrap;border-radius:999px;padding:9px 20px;font-size:15px;font-weight:600;animation:.28s cubic-bezier(.2,1.3,.5,1) toast-in}.toast.good{color:var(--good);border-color:#34d3998c}.toast.bad{color:var(--bad);border-color:#f871718c}.toast.big{padding:13px 30px;font-size:21px}.toast.fade{opacity:0;transition:opacity .35s,transform .35s;transform:translateY(-12px)}@keyframes toast-in{0%{opacity:0;transform:translateY(-14px)scale(.94)}}.checkpoint-banner{text-align:center;pointer-events:none;animation:.4s cubic-bezier(.2,1.3,.5,1) banner-in;position:absolute;top:30%;left:50%;transform:translate(-50%)}.checkpoint-banner .flag{font-size:40px}.checkpoint-banner .label{text-shadow:0 3px 16px #000000bf;margin-top:4px;font-size:22px;font-weight:700}.checkpoint-banner.fade{opacity:0;transition:opacity .4s}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,16px)}}.crosshair{pointer-events:none;background:#ffffffbf;border-radius:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;position:absolute;top:50%;left:50%;box-shadow:0 0 4px #000000e6}.touch-controls{pointer-events:none;position:absolute;inset:0}.touch-stick{background:#ffffff0f;border:2px solid #ffffff47;border-radius:50%;width:124px;height:124px;margin:-62px 0 0 -62px;position:absolute}.touch-stick .knob{background:#ffffff5c;border:2px solid #ffffff80;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%}.touch-jump{right:max(26px, env(safe-area-inset-right));bottom:max(40px, env(safe-area-inset-bottom));color:#fff;pointer-events:none;background:#22d3ee38;border:2px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;width:104px;height:104px;font-size:15px;font-weight:700;display:flex;position:absolute}.touch-jump.pressed{background:#22d3ee8c;border-color:#ffffffbf;transform:scale(.94)}.tutorial-hint{top:126px;left:max(14px, env(safe-area-inset-left));max-width:min(280px,42vw);color:var(--text);border-left:3px solid var(--accent);pointer-events:none;background:#0b1020e0;border-radius:8px;padding:10px 13px;font-size:13px;line-height:1.6;position:absolute}.level-grid.gentle-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.section-note{color:var(--text-dim);font-size:12px;font-weight:400}.challenge-list{margin-top:18px}.challenge-list summary{cursor:pointer;padding:12px 0;font-weight:600}.challenge-list summary span{color:var(--text-dim);margin-left:10px;font-size:12px}.save-failed{color:var(--bad)!important}.result-rule{color:var(--text-dim);font-size:13px;line-height:1.6}.rank-tabs{margin:12px 0}@media (max-width:620px){.level-grid.gentle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.touch-jump{transition:background 60ms,transform 60ms}.touch-actions{left:50%;bottom:max(18px, env(safe-area-inset-bottom));gap:8px;display:flex;position:absolute;transform:translate(-50%)}.touch-action{min-width:64px;min-height:44px;color:var(--text);font:inherit;white-space:nowrap;touch-action:manipulation;-webkit-user-select:none;user-select:none;pointer-events:auto;background:#0a1226db;border:1px solid #ffffff4d;border-radius:12px;padding:10px 14px;font-size:13px;font-weight:650}.touch-action[aria-pressed=true]{border-color:var(--accent);background:#22d3ee61}.touch-action:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (max-width:600px){.touch-actions{gap:5px}.touch-action{min-width:54px;padding:10px}}.overlay{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);pointer-events:auto;background:#060914b8;justify-content:center;align-items:center;padding:20px;animation:.22s overlay-in;display:flex;position:absolute;inset:0;overflow-y:auto}.overlay[hidden]{display:none}@keyframes overlay-in{0%{opacity:0}}.panel{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:22px;width:min(760px,100%);max-height:calc(100vh - 40px);padding:26px 28px;overflow-y:auto}.panel.narrow{width:min(460px,100%)}.panel.wide{width:min(940px,100%)}.menu-actions{margin-top:18px}.menu-actions .primary{min-width:148px}.continue-level{color:var(--accent);margin:10px 0 20px;font-size:13px}.continue-level span{color:var(--text-dim);margin-left:8px}.touch-help{color:var(--text-dim);font-size:13px;line-height:1.7}.panel h1{letter-spacing:.02em;background:linear-gradient(100deg, #fff, var(--accent) 55%, var(--pink));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:34px}.panel h2{margin:0 0 14px;font-size:19px;font-weight:650}.panel .tagline{color:var(--text-dim);margin:8px 0 22px;font-size:14px;line-height:1.6}.row{flex-wrap:wrap;gap:10px;display:flex}.row.end{justify-content:flex-end}.btn{appearance:none;border:1px solid var(--border);background:var(--panel-soft);color:var(--text);cursor:pointer;border-radius:11px;padding:11px 20px;font-size:15px;font-weight:620;transition:transform .12s,background .18s,border-color .18s}.btn:hover:not(:disabled){background:#2d3a64e6;border-color:#8ca5e180;transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn.primary{color:#fff;background:linear-gradient(135deg,#06b6d4,#3b82f6);border-color:#0000;box-shadow:0 10px 26px #0ea5e952}.btn.primary:hover:not(:disabled){background:linear-gradient(135deg,#22d3ee,#60a5fa)}.btn.gold{color:#3b2600;background:linear-gradient(135deg,#f59e0b,#fbbf24);border-color:#0000}.btn.ghost{background:0 0}.btn.danger{color:#fca5a5;border-color:#f8717180}.btn.small{border-radius:9px;padding:7px 13px;font-size:13px}.btn.block{justify-content:center;width:100%}.level-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:20px;display:grid}.level-card{border:1px solid var(--border);background:var(--panel-soft);color:var(--text);cursor:pointer;text-align:left;border-radius:14px;padding:14px 15px;transition:transform .14s,border-color .18s;position:relative}.level-card:hover:not(.locked){border-color:#22d3ee8c;transform:translateY(-2px)}.level-card.locked{opacity:.45;cursor:not-allowed}.level-card.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.level-card .idx{letter-spacing:.14em;color:var(--text-dim);text-transform:uppercase;font-size:11px}.level-card .name{margin:4px 0 3px;font-size:16px;font-weight:680}.level-card .sub{color:var(--text-dim);font-size:12px}.level-card .meta{color:var(--text-dim);font-variant-numeric:tabular-nums;gap:10px;margin-top:9px;font-size:11.5px;display:flex}.level-card .stars{color:var(--accent-2);letter-spacing:1px}.level-card .done-badge{font-size:15px;position:absolute;top:11px;right:12px}.shop-tabs{flex-wrap:wrap;gap:7px;margin-bottom:16px;display:flex}.shop-tab{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;padding:7px 15px;font-size:13.5px;font-weight:600}.shop-tab.active{border-color:var(--accent);color:var(--accent);background:#22d3ee29}.shop-grid{grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:12px;display:grid}.shop-item{border:1px solid var(--border);background:var(--panel-soft);border-radius:14px;flex-direction:column;gap:9px;padding:14px;display:flex}.shop-item.equipped{border-color:var(--good);box-shadow:inset 0 0 0 1px #34d39980}.shop-item .head{align-items:center;gap:10px;display:flex}.shop-item .icon{background:#ffffff12;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;font-size:22px;display:flex}.shop-item .title{font-size:15px;font-weight:660}.shop-item .price{color:var(--accent-2);align-items:center;gap:5px;font-size:12.5px;font-weight:640;display:flex}.shop-item .desc{color:var(--text-dim);flex:1;font-size:12.5px;line-height:1.55}.shop-item .actions{gap:7px;display:flex}.setting{border-bottom:1px solid #788cbe24;justify-content:space-between;align-items:center;gap:16px;padding:11px 0;display:flex}.setting:last-child{border-bottom:none}.setting .label{font-size:14px}.setting .hint{color:var(--text-dim);margin-top:2px;font-size:12px}.setting input[type=range]{width:168px;accent-color:var(--accent)}.setting select{background:var(--panel-soft);color:var(--text);border:1px solid var(--border);border-radius:9px;padding:7px 11px;font-size:13.5px}.result-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:18px 0;display:grid}.stat-box{background:var(--panel-soft);border:1px solid var(--border);text-align:center;border-radius:13px;padding:13px}.stat-box .v{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.stat-box .k{color:var(--text-dim);margin-top:3px;font-size:11.5px}.stat-box.gold .v{color:var(--accent-2)}.reward-line{border-bottom:1px dashed #788cbe33;justify-content:space-between;padding:7px 0;font-size:14px;display:flex}.reward-line.total{color:var(--accent-2);border-bottom:none;padding-top:11px;font-size:17px;font-weight:700}.rank-table{border-collapse:collapse;width:100%;font-size:13.5px}.rank-table th{text-align:left;color:var(--text-dim);letter-spacing:.08em;border-bottom:1px solid var(--border);padding:7px 9px;font-size:11.5px;font-weight:550}.rank-table td{font-variant-numeric:tabular-nums;border-bottom:1px solid #788cbe1f;padding:9px}.rank-table tr.me td{color:var(--accent);font-weight:640}.rank-table tr:last-child td{border-bottom:none}.empty-note{color:var(--text-dim);text-align:center;padding:22px 0;font-size:13.5px}.net-status{bottom:max(12px, env(safe-area-inset-bottom));left:max(14px, env(safe-area-inset-left));color:var(--text-dim);background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;align-items:center;gap:7px;padding:5px 12px;font-size:12px;display:flex;position:absolute}.net-dot{background:var(--bad);border-radius:50%;width:8px;height:8px}.net-dot.online{background:var(--good);box-shadow:0 0 8px #34d399cc}.net-dot.connecting{background:var(--accent-2);animation:1s ease-in-out infinite pulse}.perf-panel{top:max(14px, env(safe-area-inset-top));border:1px solid var(--border);color:var(--text);letter-spacing:.02em;white-space:pre;pointer-events:none;z-index:50;box-shadow:var(--shadow);background:#060914e6;border-radius:12px;margin:0;padding:11px 15px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.7;position:absolute;left:50%;transform:translate(-50%)}.keys{color:var(--text-dim);flex-wrap:wrap;gap:16px;margin-top:18px;font-size:12.5px;display:flex}.key{align-items:center;gap:6px;display:inline-flex}.kbd{border:1px solid var(--border);min-width:22px;color:var(--text);text-align:center;background:#ffffff12;border-bottom-width:2px;border-radius:6px;padding:3px 7px;font-size:11.5px;font-weight:620;display:inline-block}@media (max-width:720px){.panel{border-radius:18px;padding:20px 18px}.panel h1{font-size:27px}.hud-timer{font-size:21px}.level-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.shop-grid{grid-template-columns:1fr}}@media (max-height:520px){.hud-top-left{top:max(8px, env(safe-area-inset-top));left:max(8px, env(safe-area-inset-left));gap:5px}.hud-top-right{top:max(8px, env(safe-area-inset-top));right:max(8px, env(safe-area-inset-right));gap:5px}.hud-level{min-width:150px;padding:6px 10px}.hud-level-name{font-size:13px}.hud-level-sub,.hud-chip.small{font-size:10.5px}.hud-timer{font-size:19px}.hud-chip{padding:5px 11px;font-size:14px}.overlay{align-items:flex-start;padding:10px}.panel{border-radius:16px;max-height:calc(100dvh - 20px);padding:16px}.panel h1{font-size:23px}.panel h2{margin-bottom:10px;font-size:16px}.panel .tagline{margin:6px 0 14px;font-size:13px}.level-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}.level-card{padding:10px 11px}.level-card .name{font-size:14px}.level-card .sub{font-size:11px}.shop-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.btn{min-height:42px;padding:10px 16px;font-size:14px}.btn.small{min-height:36px;padding:8px 12px}.shop-tab{min-height:36px;padding:8px 14px}}@media (pointer:coarse){.btn{min-height:44px}.shop-tab{min-height:40px}.setting input[type=range]{height:32px}.btn:hover:not(:disabled),.level-card:hover:not(.locked){transform:none}}.rotate-hint{z-index:200;pointer-events:auto;text-align:center;background:#060914f0;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:none;position:absolute;inset:0}.rotate-hint .icon{font-size:54px;animation:2.4s ease-in-out infinite rotate-tip}@keyframes rotate-tip{0%,45%{transform:rotate(0)}55%,to{transform:rotate(90deg)}}.rotate-hint .title{font-size:18px;font-weight:650}.rotate-hint .sub{color:var(--text-dim);text-align:center;width:100%;max-width:280px;margin:0 auto;font-size:13.5px;line-height:1.7}.rotate-hint .title{text-align:center;width:100%}@media (orientation:portrait){.rotate-hint.armed{display:flex}}
