:root{--cyan: #4df3ff;--gold: #ffd36a;--red: #ff4d7a;--ink: rgba(6, 9, 20, .86);--font: "Rajdhani", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:#04050a;color:#e6ecff;font-family:var(--font);overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:none;-webkit-touch-callout:none;overscroll-behavior:none}#stage{position:fixed;left:0;top:0;width:100%;height:100%}html.ios-browser{height:140%;overflow:auto;touch-action:pan-y}html.ios-browser body{height:140%;overflow:visible;touch-action:pan-y}html.ios-browser #stage{touch-action:none}#swipe{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;background:#04050ae6;touch-action:auto;color:var(--cyan)}#swipe .inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}#swipe.rot .inner{transform:rotate(90deg)}#swipe.rot .chev{transform:rotate(-90deg);animation-name:swipeleft}#swipe-through{margin-top:22px;font-size:12px;padding:8px 14px;opacity:.75;letter-spacing:.08em}@keyframes swipeleft{0%{transform:rotate(-90deg) translateY(14px);opacity:.3}50%{transform:rotate(-90deg) translateY(-6px);opacity:1}to{transform:rotate(-90deg) translateY(-14px);opacity:0}}#swipe .chev{width:64px;height:64px;animation:swipeup 1.2s ease-in-out infinite}#swipe .chev svg{width:100%;height:100%}@keyframes swipeup{0%{transform:translateY(14px);opacity:.3}50%{transform:translateY(-6px);opacity:1}to{transform:translateY(-14px);opacity:0}}.swipe-text{font-size:20px;font-weight:700;letter-spacing:.18em;color:#fff}.swipe-sub{font-size:13px;letter-spacing:.1em;color:#9fb1d8}#stage.rot{transform-origin:0 0;transform:rotate(90deg) translateY(-100%)}canvas#game{position:fixed;top:0;right:0;bottom:0;left:0;display:block;cursor:none}#ios-hint{position:fixed;left:50%;bottom:10px;transform:translate(-50%);padding:6px 12px;font-size:12px;letter-spacing:.08em;color:#9fb1d8;background:#060914cc;border:1px solid rgba(77,243,255,.25);border-radius:4px;z-index:30;pointer-events:none}.hidden{display:none!important}button{font-family:var(--font);font-weight:700;letter-spacing:.12em;font-size:18px;padding:12px 26px;background:transparent;color:var(--cyan);border:2px solid rgba(77,243,255,.55);border-radius:4px;cursor:pointer;transition:.12s;text-transform:uppercase}button:hover,button.focus{background:#4df3ff24;border-color:var(--cyan);transform:translateY(-1px);box-shadow:0 0 22px #4df3ff40}button.primary{background:#4df3ff2e;border-color:var(--cyan)}input[type=text],input:not([type]){font-family:var(--font);font-size:18px;background:#00000059;border:1px solid rgba(77,243,255,.4);color:#fff;padding:6px 10px;border-radius:3px;width:190px;text-transform:uppercase}h1{font-size:clamp(64px,12vw,132px);margin:0;letter-spacing:.22em;color:#fff;text-shadow:0 0 22px rgba(77,243,255,.8),0 0 60px rgba(77,243,255,.35);font-weight:700}h2{letter-spacing:.2em;font-weight:700;color:var(--cyan);margin:0 0 18px;font-size:30px}.screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;z-index:10}#menu{background:radial-gradient(ellipse at center,#06091459,#04050acc)}.title-block{text-align:center}.menu-buttons{display:flex;flex-direction:column;gap:10px;min-width:300px}.menu-buttons.row-buttons{flex-direction:row}.menu-foot{display:flex;gap:26px;align-items:center;color:#9fb1d8;letter-spacing:.1em}.modal{background:var(--ink);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal .row{display:flex;justify-content:space-between;width:360px;font-size:20px;letter-spacing:.06em;align-items:center}.modal .row .slider{display:flex;align-items:center;gap:10px}.modal .row .slider input{width:110px}.modal .row .slider b{width:120px;text-align:right;color:var(--gold);letter-spacing:.12em;font-size:15px}.howto-grid{display:grid;gap:10px;max-width:640px;font-size:18px}.howto-grid b{color:var(--cyan);letter-spacing:.06em}.howto-grid div>b:first-child{display:inline-block;width:130px;letter-spacing:.1em}.modal.scroll{justify-content:flex-start;padding:28px 0 40px;overflow-y:auto;gap:14px;touch-action:pan-y;overscroll-behavior:contain}ol{touch-action:pan-y;overscroll-behavior:contain}.howto-sub{margin:6px 0 0;color:var(--gold);letter-spacing:.3em;font-size:15px;font-weight:700}#bestiary{display:grid;grid-template-columns:repeat(4,150px);gap:10px 14px}#bestiary div{display:flex;flex-direction:column;align-items:center;text-align:center;font-size:12px;color:#9fb1d8;line-height:1.3}#bestiary canvas{width:72px;height:72px;border-radius:6px;border:1px solid rgba(77,243,255,.15);background:#070a16;margin-bottom:4px}#bestiary b{color:#e6ecff;letter-spacing:.12em;font-size:13px}#stage.narrow #bestiary{grid-template-columns:repeat(2,150px)}.howto-notes{max-width:640px;color:#c3cdea;font-size:17px;line-height:1.45}.howto-notes b{color:#fff}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;font-weight:600;letter-spacing:.08em}.hp-wrap{position:absolute;left:24px;bottom:24px;width:300px}.hp-bar{height:14px;border:2px solid rgba(77,243,255,.6);background:#00000080;border-radius:3px;overflow:hidden}#hp-fill{height:100%;width:100%;background:linear-gradient(90deg,#35d6e8,var(--cyan));box-shadow:0 0 14px #4df3ffb3;transition:width .12s}#hp-fill.low{background:linear-gradient(90deg,#ff2d5e,#ff6b8b);box-shadow:0 0 14px #ff4d7acc}.hp-row{display:flex;justify-content:space-between;margin-top:4px;font-size:17px}.weapon-row{display:flex;gap:10px;align-items:center;margin-top:6px;font-size:14px;letter-spacing:.2em}.wpn{color:#4b5878;padding:2px 8px;border:1px solid rgba(77,243,255,.15);border-radius:3px}.wpn.active{color:var(--cyan);border-color:var(--cyan);text-shadow:0 0 8px rgba(77,243,255,.7)}#ammo-pips{display:flex;gap:4px}#ammo-pips i{display:block;width:8px;height:14px;border:1px solid rgba(255,211,106,.5);border-radius:2px}#ammo-pips i.full{background:var(--gold);box-shadow:0 0 8px #ffd36ab3;border-color:var(--gold)}.dash{color:#6f7ea6}.dash.ready{color:var(--cyan);text-shadow:0 0 10px rgba(77,243,255,.8)}.top-center{position:absolute;top:18px;left:50%;transform:translate(-50%);text-align:center}#wave-label{font-size:30px;font-weight:700;color:#fff;letter-spacing:.2em}#sector-label{font-size:14px;color:#9fb1d8;letter-spacing:.3em}.score-wrap{position:absolute;right:24px;top:18px;text-align:right}#score{font-size:34px;font-weight:700;color:var(--gold);text-shadow:0 0 14px rgba(255,211,106,.5)}#best{font-size:14px;color:#9fb1d8;letter-spacing:.2em}#boss-bar{position:absolute;bottom:30px;left:50%;transform:translate(-50%);width:min(620px,70vw);text-align:center}.boss-name{color:#d68cff;letter-spacing:.35em;font-weight:700;margin-bottom:4px}.boss-track{height:12px;border:2px solid rgba(214,140,255,.7);background:#0009}#boss-fill{height:100%;width:100%;background:linear-gradient(90deg,#8a2be2,#d68cff);box-shadow:0 0 14px #d68cffcc;transition:width .15s}#fps{position:absolute;left:12px;top:10px;font-size:13px;color:#6f7ea6}#banner{position:fixed;top:32%;left:0;right:0;text-align:center;pointer-events:none;z-index:6;animation:banner 2.2s ease-out forwards}#banner-title{font-size:clamp(40px,7vw,84px);font-weight:700;letter-spacing:.3em;color:#fff;text-shadow:0 0 30px rgba(77,243,255,.9)}#banner-sub{font-size:20px;letter-spacing:.25em;color:#9fb1d8}#banner.boss #banner-title,#banner.phase #banner-title{color:#e9c4ff;text-shadow:0 0 30px rgba(180,80,255,.9)}#banner.clear #banner-title{color:var(--gold);text-shadow:0 0 30px rgba(255,211,106,.8)}@keyframes banner{0%{opacity:0;transform:scale(1.25);letter-spacing:.6em}12%{opacity:1;transform:scale(1)}75%{opacity:1}to{opacity:0;transform:translateY(-20px)}}.menu-buttons button{position:relative}.badge{position:absolute;top:-10px;right:-10px;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#1a1200;font-size:16px;line-height:24px;letter-spacing:0;text-align:center;box-shadow:0 0 14px #ffd36acc;animation:badge 1.4s ease-in-out infinite}@keyframes badge{0%,to{transform:scale(1)}50%{transform:scale(1.18);box-shadow:0 0 22px #ffd36a}}#tut{position:fixed;bottom:34px;left:50%;transform:translate(-50%);width:min(560px,90vw);padding:12px 18px 14px;text-align:center;background:#060914b8;border:1px solid rgba(255,211,106,.45);border-radius:6px;pointer-events:none;z-index:6;animation:tutin .35s ease-out}@keyframes tutin{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}#tut-step{font-size:12px;letter-spacing:.35em;color:var(--gold)}#tut-title{font-size:26px;font-weight:700;letter-spacing:.18em;color:#fff;margin-top:2px}#tut-body{font-size:16px;line-height:1.4;color:#c3cdea;margin-top:4px}#tut-body b{color:var(--cyan);letter-spacing:.08em}#tut-keys{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:10px}#tut-keys i{display:inline-block;width:34px;height:34px;line-height:32px;border:2px solid rgba(77,243,255,.4);border-radius:5px;font-style:normal;font-weight:700;font-size:17px;color:#6f7ea6;transition:.15s}#tut-keys i.hit{color:#1a1200;background:var(--gold);border-color:var(--gold);box-shadow:0 0 14px #ffd36acc}#tut-keys span{font-size:12px;letter-spacing:.25em;color:#6f7ea6;margin-left:8px}.tut-outro{max-width:440px;text-align:center;color:#c3cdea;font-size:18px;line-height:1.4;margin:-6px 0 0}#offer-cards{display:flex;gap:18px}.card{width:230px;min-height:200px;padding:20px 18px;border:2px solid rgba(255,255,255,.25);border-radius:6px;background:#0a0e1ee6;cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:10px}.card:hover,.card.focus{transform:translateY(-6px);box-shadow:0 10px 40px #00000080}.card .rarity{font-size:12px;letter-spacing:.35em}.card .name{font-size:26px;font-weight:700;color:#fff;letter-spacing:.06em}.card .desc{color:#c3cdea;font-size:17px;line-height:1.35;flex:1}.card .key{font-size:13px;color:#6f7ea6;letter-spacing:.3em}.card .tree{font-size:12px;letter-spacing:.35em;display:flex;align-items:center;gap:10px;color:var(--tree)}.card .pips{display:inline-flex;gap:4px}.card .pips i{width:9px;height:9px;border:1.5px solid var(--tree);border-radius:2px;opacity:.5}.card .pips i.on{background:var(--tree);opacity:1}.card .note{font-size:13px;color:var(--tree);letter-spacing:.06em;opacity:.9}.card{--tree: #a0b4dc;border-color:color-mix(in srgb,var(--tree) 70%,transparent)}.card.t2{box-shadow:0 0 22px color-mix(in srgb,var(--tree) 25%,transparent)}.card.t3{box-shadow:0 0 32px color-mix(in srgb,var(--tree) 40%,transparent)}.card.launch{--tree: #ff9a4d}.card.spread{--tree: #5aa9ff}.card.knock{--tree: #a98bff}.card.damage{--tree: #ff6b6b}.card.reach{--tree: #c58bff}.card.tempo{--tree: #3ddc97}.card.brawl{--tree: #ffc857}.card.armor{--tree: #8fd18f}.card.reload{--tree: #c6e05a}.card.landing{--tree: #5ed2e6}.card.ability{--tree: #ff6fb1;background:#1e0a18eb}.ability-row{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:13px;letter-spacing:.2em;color:#8fa0c8}.ability-track{width:120px;height:6px;border:1px solid rgba(255,255,255,.25);border-radius:3px;overflow:hidden}#ability-fill{height:100%;width:0;background:#ff6fb1;transition:width .15s}.ability-row.ready{color:#ff9ccb;text-shadow:0 0 10px rgba(255,111,177,.8)}.ability-row.ready #ability-fill{background:#fff;box-shadow:0 0 12px #ff6fb1}#ability-key{border:1px solid currentColor;border-radius:3px;padding:0 5px;font-size:11px}#t-ability{right:30px;bottom:132px;width:62px;height:62px;color:#ff9ccb;border-color:#ff6fb1b3;background:#1e081499}#t-ability b{font-size:11px;letter-spacing:.1em}#t-ability.down{background:#ff6fb159}.empower{color:var(--gold);font-size:12px;letter-spacing:.2em;margin-left:10px}.hint{color:#6f7ea6;letter-spacing:.2em;font-size:14px}ol{list-style:none;padding:0;margin:0;width:420px;max-height:44vh;overflow-y:auto;font-size:18px}ol li{display:grid;grid-template-columns:34px 1fr 90px 60px 86px;padding:5px 8px;border-bottom:1px solid rgba(255,255,255,.06)}ol li.me{color:var(--gold)}ol li span:nth-child(3){text-align:right;font-weight:700}ol li span:nth-child(4){text-align:right;color:#9fb1d8;font-size:14px}ol li span:nth-child(5){text-align:right;color:#9fb1d8;font-size:12px;letter-spacing:.1em}.stats{display:grid;grid-template-columns:repeat(4,130px);gap:10px 20px;text-align:center}.stats div b{display:block;font-size:30px;color:#fff;font-weight:700}.stats div{font-size:13px;letter-spacing:.2em;color:#9fb1d8}#won h2{color:var(--gold);text-shadow:0 0 30px rgba(255,211,106,.6);font-size:44px}#go-title{font-size:64px;color:var(--red);text-shadow:0 0 30px rgba(255,77,122,.6);margin:0}#go-sub{margin:-10px 0 0;color:#9fb1d8;letter-spacing:.15em}#go-rank{color:var(--gold);letter-spacing:.2em;font-weight:700;min-height:22px}#stage.narrow .stats{grid-template-columns:repeat(2,130px)}#stage.narrow #offer-cards{flex-direction:column}#stage.narrow .card{width:300px;min-height:0}#touch{position:fixed;top:0;right:0;bottom:0;left:0;z-index:7;touch-action:none}#zone-l,#zone-r{position:absolute;top:0;bottom:0}#zone-l{left:0;width:45%}#zone-r{right:0;width:55%}.zone-hint{position:absolute;top:58%;left:50%;transform:translate(-50%,-50%);font-size:11px;letter-spacing:.3em;color:#9fb1d866;pointer-events:none}#zone-r .zone-hint{left:42%}.stick{position:absolute;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;border:2px solid rgba(77,243,255,.35);background:#4df3ff0f;pointer-events:none}.stick .knob{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background:#4df3ff59;border:2px solid var(--cyan)}.tbtn{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:50%;border:2px solid rgba(77,243,255,.6);background:#0a141e8c;color:var(--cyan);font-weight:700;letter-spacing:.15em;font-size:15px;touch-action:none}.tbtn:active,.tbtn.down{background:#4df3ff59}.tbtn canvas{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%}.tbtn span{position:absolute;bottom:9px;left:0;right:0;text-align:center;font-size:9px;letter-spacing:.25em;opacity:.8;pointer-events:none}.tbtn.dim{opacity:.45}#t-attack{right:22px;bottom:24px;width:92px;height:92px;color:#ffe9a8;border-color:#ffd36ab3;background:#18140a99}#t-attack:active,#t-attack.down{background:#ffd36a59}#t-attack.melee{color:var(--cyan);border-color:#4df3ffb3;background:#08141e99}#t-attack.melee:active,#t-attack.melee.down{background:#4df3ff59}#t-dash{right:120px;bottom:74px;width:66px;height:66px;background:#08141e99}#t-pause{left:10px;top:8px;width:34px;height:34px;border-radius:8px;font-size:13px}#stage.narrow #tut{bottom:130px}#stage.narrow .hp-wrap{width:180px;left:14px;bottom:14px}#stage.narrow #wave-label{font-size:22px}#stage.narrow #score{font-size:26px}#stage.narrow .modal .row{width:300px}#stage.narrow ol{width:320px}#stage.narrow h2{font-size:24px}#stage.short .screen{justify-content:flex-start;padding:12px 0 24px;gap:10px;overflow-y:auto}#stage.short h1{font-size:44px;letter-spacing:.18em}#stage.short .menu-buttons{flex-direction:row;flex-wrap:wrap;justify-content:center;min-width:0;max-width:90vw}#stage.short button{font-size:14px;padding:8px 14px}#stage.short h2{font-size:20px;margin-bottom:8px}#stage.short .howto-grid,#stage.short .howto-notes{font-size:13px;max-width:90vw}#stage.short .howto-grid b{width:90px}#stage.short .stats{grid-template-columns:repeat(4,90px)}#stage.short .stats div b{font-size:22px}#stage.short #go-title{font-size:36px}#stage.short ol{max-height:22vh}#stage.short .card{min-height:0;padding:10px 12px;gap:4px;width:200px}#stage.short .card .name{font-size:18px}#stage.short .card .desc{font-size:13px}#stage.short #banner{top:22%}#stage.short #tut{bottom:8px;padding:8px 12px}#stage.short #tut-title{font-size:18px}#stage.short #tut-body{font-size:13px}#stage.short #t-pause{left:8px;top:8px}#stage.short .hp-wrap{left:50px;top:8px;bottom:auto;width:150px}#stage.short .hp-bar{height:8px;border-width:1.5px}#stage.short .hp-row{font-size:11px;margin-top:2px}#stage.short .ability-row{font-size:9px;gap:6px;margin-top:3px}#stage.short .ability-track{width:70px;height:4px}#stage.short .weapon-row{font-size:9px;gap:6px;margin-top:3px;letter-spacing:.15em}#stage.short .wpn{padding:1px 5px}#stage.short #ammo-pips i{width:5px;height:9px}#stage.short .top-center{top:6px}#stage.short #wave-label{font-size:17px;letter-spacing:.25em}#stage.short #sector-label{font-size:9px;letter-spacing:.3em}#stage.short .score-wrap{top:6px;right:10px}#stage.short #score{font-size:19px}#stage.short #best{font-size:9px;letter-spacing:.2em}#stage.short #boss-bar{top:46px;bottom:auto;width:42vw}#stage.short .boss-name{font-size:10px;letter-spacing:.3em;margin-bottom:2px}#stage.short .boss-track{height:6px;border-width:1.5px}#stage.short #banner{top:26%}#stage.short #banner-title{font-size:34px}#stage.short #banner-sub{font-size:12px}#stage.short #tut{bottom:8px;width:min(360px,42%);padding:5px 10px 7px}#stage.short #tut-step{font-size:9px}#stage.short #tut-title{font-size:13px;letter-spacing:.14em;margin-top:0}#stage.short #tut-body{font-size:10.5px;line-height:1.3;margin-top:2px}#stage.short #tut-keys{margin-top:5px;gap:5px}#stage.short #tut-keys i{width:22px;height:22px;line-height:20px;font-size:12px}#stage.short #tut-keys span{font-size:9px}#stage.short .zone-hint{top:auto;bottom:14px;left:22%;transform:none;font-size:10px}#stage.short #fps{top:auto;bottom:6px;left:8px}#stage.short #menu{flex-direction:row;justify-content:center;align-items:center;gap:34px;padding:0 24px}#stage.short .title-block{text-align:left}#stage.short h1{font-size:46px;letter-spacing:.2em}#stage.short .menu-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0;width:320px}#stage.short .menu-buttons #btn-play{grid-column:1 / -1;font-size:18px;padding:12px}#stage.short .menu-buttons button{font-size:12px;padding:9px 8px;letter-spacing:.1em}#stage.short .menu-foot{position:absolute;left:24px;bottom:14px;gap:14px;font-size:12px}#stage.short .menu-foot input{width:130px;font-size:14px;padding:4px 8px}#stage.short #menu-best{font-size:11px}#stage.short #offers{gap:10px}#stage.short #offers h2{margin-bottom:4px}#stage.short #offer-cards{gap:12px}#stage.short .card{width:200px;min-height:0;padding:12px 12px 10px;gap:4px}#stage.short .card .name{font-size:20px}#stage.short .card .desc{font-size:14px}#stage.short .card .key{display:none}#stage.short .hint{font-size:11px}#stage.short #gameover,#stage.short #won,#stage.short #pause,#stage.short #tutdone{gap:8px}#stage.short #go-title{font-size:30px}#stage.short #gameover .stats,#stage.short #won .stats{grid-template-columns:repeat(4,96px);gap:4px 12px}#stage.short .stats div b{font-size:20px}#stage.short #go-list{display:none}#stage.short .row-buttons button{font-size:13px;padding:9px 18px}
