:root{color-scheme:dark;font-family:JetBrains Mono,IBM Plex Mono,Fira Code,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;--fg: #ffffff;--bg: #000000;background:var(--bg);color:var(--fg)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg);color:var(--fg)}button{font-family:inherit;font-size:inherit;cursor:pointer}.app{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:16px}.game-layout{display:flex;gap:16px;align-items:flex-start;max-width:100%}.game-frame{position:relative;width:800px;flex:0 0 auto}.sidepanel{width:280px;flex:0 0 auto;display:flex;flex-direction:column;gap:10px;max-height:600px;overflow-y:auto;padding-right:4px}.panel-block{border:1px solid #fff;padding:8px 10px;background:#000;display:flex;flex-direction:column;gap:6px}.panel-title{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#ffffffb3;border-bottom:1px solid rgba(255,255,255,.3);padding-bottom:4px;display:flex;justify-content:space-between;align-items:center}.panel-body{display:flex;flex-direction:column;gap:6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.panel-hint{font-size:9px;color:#ffffff8c;letter-spacing:.03em;text-transform:none}.panel-actions{display:flex;flex-direction:column;gap:6px}.panel-relics,.panel-synergies,.panel-upcoming{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px;font-size:10px;text-transform:uppercase;letter-spacing:.04em}.panel-upcoming li{display:flex;flex-direction:column;gap:1px;border-bottom:1px dotted rgba(255,255,255,.15);padding-bottom:2px}.panel-upcoming li:last-child{border-bottom:none}.upcoming-name{font-weight:700}.upcoming-stats{font-size:9px;letter-spacing:.02em}.upcoming-tag{display:inline-block;margin-left:4px;padding:0 4px;font-size:8px;font-weight:700;letter-spacing:.05em;border:1px solid}.tag-air{color:#65d4ff;border-color:#65d4ff}.tag-mid{color:#ff9947;border-color:#ff9947}.enemy-hp{display:flex;align-items:center;gap:6px;font-size:10px}.enemy-hp-bar{flex:1;height:6px;border:1px solid rgba(255,255,255,.6);background:#ffffff1a}.enemy-hp-fill{height:100%;background:#fff;transition:width .08s linear}.enemy-line{font-size:10px;letter-spacing:.04em;text-transform:uppercase}.enemy-effect{font-size:9px;line-height:1.4;text-transform:none;color:#ffffff8c}.panel-relics li{display:flex;flex-direction:column;gap:1px}.panel-relics li span{font-size:9px;color:#ffffffa6;text-transform:none;letter-spacing:.02em}.panel-relics li span.relic-drawback{color:#ff9090}.card-drawback{font-size:9px;letter-spacing:.03em;color:#ff9090;text-transform:none;margin-top:4px}.card-hint{font-size:9px;letter-spacing:.02em;color:#ffd24a;text-transform:none;margin-top:4px;border-top:1px dotted rgba(255,255,255,.2);padding-top:4px}.panel-synergies li{display:flex;gap:4px;align-items:center}.tower-header{font-weight:700;font-size:12px}.tower-stats{display:flex;flex-wrap:wrap;gap:8px;font-size:10px;color:#ffffffd9}.tower-thermal{display:flex;flex-wrap:wrap;gap:8px;font-size:10px;color:#ffffffd9;margin-top:2px}.tower-modules{display:flex;flex-direction:column;gap:2px;margin-top:4px}.tower-module{display:flex;align-items:baseline;gap:6px;font-size:10px;letter-spacing:.04em}.module-star{color:#ffd24a;font-size:12px}.module-name{font-weight:700}.module-desc{font-size:9px}.tower-modes{display:flex;gap:4px}.tower-buttons{display:flex;flex-direction:column;gap:4px}.dim{color:#ffffff59}.game-canvas{display:block;width:100%;height:auto;image-rendering:pixelated;background:#000;border:1px solid #fff}.topbar{position:absolute;top:0;left:0;right:0;pointer-events:none;display:flex;flex-direction:column;gap:6px;padding:8px;text-transform:uppercase;letter-spacing:.05em}.topbar-row{display:flex;gap:10px;align-items:center}.topbar-message{align-self:flex-start;pointer-events:auto;background:#000000bf;border:1px solid #fff;padding:3px 8px;font-size:10px;max-width:70%}.wave-banner{position:absolute;top:34%;left:0;right:0;display:flex;justify-content:center;pointer-events:none;animation:wave-banner 1.6s ease-out forwards}.wave-banner-text{font-size:34px;letter-spacing:.32em;font-weight:700;color:#fff;text-shadow:0 0 18px rgba(255,255,255,.5)}@keyframes wave-banner{0%{opacity:0;transform:translateY(10px) scale(.96)}16%{opacity:1;transform:none}72%{opacity:1}to{opacity:0;transform:translateY(-6px)}}@media(prefers-reduced-motion:reduce){.wave-banner{animation:none;opacity:0}}.hud-top{display:flex;gap:16px;align-items:flex-start}.hud-spacer{flex:1}.hud-audio{display:flex;gap:6px;align-items:center;background:#0000008c;border:1px solid #fff;padding:3px 8px;pointer-events:auto}.hud-slider-label{display:flex;align-items:center;gap:4px;font-size:9px;color:#fff9}.hud-slider{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:60px;height:4px;background:#fff;outline:none;cursor:pointer}.hud-slider::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:10px;height:14px;background:#fff;border:1px solid #000;cursor:pointer}.hud-slider::-moz-range-thumb{width:10px;height:14px;background:#fff;border:1px solid #000;cursor:pointer}.hud-stat{display:flex;flex-direction:column;background:#0000008c;border:1px solid #fff;padding:4px 8px;pointer-events:auto}.hud-label{font-size:9px;color:#fff9}.hud-value{font-size:14px;font-weight:700}.hud-stat.light .hud-value{color:#ffd24a}.stab-bar{margin-top:3px;height:4px;width:100%;background:#ffffff1f;border:1px solid rgba(255,255,255,.25)}.stab-fill{height:100%;transition:width .12s linear,background .2s linear}.hud-stat.stab.ok .stab-fill{background:#7cff8a}.hud-stat.stab.warn .stab-fill{background:#ffd24a}.hud-stat.stab.crit .stab-fill{background:#ff5a5a}.hud-stat.stab.warn .hud-value{color:#ffd24a}.hud-stat.stab.crit .hud-value{color:#ff6a6a}.hud-stat.stab.crit{animation:stab-pulse .9s ease-in-out infinite}@keyframes stab-pulse{0%,to{box-shadow:0 0 #ff5a5a00;border-color:#fff}50%{box-shadow:0 0 10px 1px #ff5a5a80;border-color:#ff6a6a}}.hud-bottom{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.hud-message{background:#000000b3;border:1px solid #fff;padding:4px 8px;pointer-events:auto;font-size:11px}.hud-actions{display:flex;gap:8px;pointer-events:auto}.hud-btn{background:#000;color:#fff;border:1px solid #fff;padding:6px 12px;text-transform:uppercase;letter-spacing:.1em;font-size:11px;pointer-events:auto;transition:background 80ms linear,color 80ms linear}.hud-btn:hover,.hud-btn.primary{background:#fff;color:#000}.hud-btn.primary:hover{background:#000;color:#fff}.hud-btn.big{padding:10px 24px;font-size:14px}.hud-btn.small{padding:3px 6px;font-size:9px}.hud-btn.active{background:#fff;color:#000}.hud-btn.wide{width:100%;text-align:center}.hud-btn.ghost{border:1px solid rgba(255,255,255,.4);padding:2px 6px;background:transparent}.hud-btn.danger{border-color:#ff6a6a;color:#ff6a6a}.hud-btn.danger:hover{background:#ff6a6a;color:#000}.hud-btn.accent{border-color:#ffd24a;color:#ffd24a}.hud-btn.accent:hover{background:#ffd24a;color:#000}.hud-tower{background:#000000b3;border:1px solid #fff;padding:6px 10px;pointer-events:auto;font-size:11px;display:flex;flex-direction:column;gap:6px;min-width:240px}.hud-tower-title{font-weight:700}.hud-tower-stats{display:flex;gap:12px;font-size:10px;color:#ffffffd9}.hud-tower-actions{display:flex;flex-direction:column;gap:4px}.hud-target-modes{display:flex;gap:4px}.hud-relics{background:#0009;border:1px solid #fff;padding:4px 8px;pointer-events:auto;font-size:10px}.hud-relics ul{list-style:none;padding:0;margin:4px 0 0}.hud-relics li{padding:1px 0}.hud-legend{display:flex;gap:8px;background:#0009;border:1px solid #fff;padding:4px 8px;font-size:9px;pointer-events:auto;align-items:center;flex-wrap:wrap}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;pointer-events:auto;text-transform:uppercase;letter-spacing:.08em;animation:overlay-in .15s ease-out}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes panel-in{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@keyframes card-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.menu{animation:panel-in .22s cubic-bezier(.2,.7,.2,1)}.draft{animation:panel-in .2s cubic-bezier(.2,.7,.2,1)}.draft-card{animation:card-in .3s cubic-bezier(.2,.7,.2,1) backwards}.draft-card:nth-child(1){animation-delay:40ms}.draft-card:nth-child(2){animation-delay:95ms}.draft-card:nth-child(3){animation-delay:.15s}.draft-card:nth-child(4){animation-delay:205ms}@media(prefers-reduced-motion:reduce){.overlay,.menu,.draft,.draft-card{animation:none}}.guide-overlay{z-index:50;position:fixed;padding:16px}.guide-panel{width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 32px);border:1px solid #fff;background:#000;display:flex;flex-direction:column;min-height:0}.guide-panel .guide-header{flex:0 0 auto}.guide-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #fff;font-size:14px;font-weight:700}.guide-body{padding:12px 16px;overflow-y:auto;text-transform:none;letter-spacing:.02em;flex:1 1 auto;min-height:0;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.4) transparent}.guide-body::-webkit-scrollbar{width:6px}.guide-body::-webkit-scrollbar-track{background:transparent}.guide-body::-webkit-scrollbar-thumb{background:#fff6;border-radius:3px}.guide-body::-webkit-scrollbar-thumb:hover{background:#ffffffb3}.guide-intro{font-size:11px;margin:0 0 12px;color:#ffffffd9;line-height:1.5}.guide-section{margin-bottom:14px}.guide-section-title{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#fff9;border-bottom:1px solid rgba(255,255,255,.25);padding-bottom:3px;margin-bottom:6px}.guide-recipes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.guide-recipe{display:flex;flex-direction:column;gap:1px;font-size:10px}.recipe-name{font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase}.recipe-inputs{letter-spacing:.04em}.recipe-effect{letter-spacing:.03em;color:#ffffffd9}.recipe-role{font-style:italic}.guide-note{margin-top:14px;padding:10px 12px;border:1px dashed rgba(255,255,255,.3);font-size:10px;color:#ffffffd9;line-height:1.5;text-transform:none;letter-spacing:.02em}.guide-note>div+div{margin-top:6px}.guide-tabs{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px;border-bottom:1px solid #fff}.guide-tab{font:inherit;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:#fff9;background:#000;border:1px solid rgba(255,255,255,.3);padding:4px 8px;cursor:pointer}.guide-tab:hover{color:#fff;border-color:#fff9}.guide-tab.active{color:#000;background:#fff;border-color:#fff}.guide-entries{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.guide-entry{display:flex;flex-direction:column;gap:1px;font-size:10px}.guide-entry.row{flex-direction:row;justify-content:space-between;align-items:baseline}.guide-entries.compact{gap:3px}.entry-name{font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase}.entry-tag{font-weight:400;font-size:9px;letter-spacing:.08em;color:#fff9}.entry-primary{letter-spacing:.02em;color:#ffffffd9;line-height:1.45}.entry-secondary{letter-spacing:.03em;line-height:1.4}.entry-effects{list-style:none;margin:2px 0;padding:0;display:flex;flex-direction:column;gap:2px}.entry-effects li{font-size:10px;line-height:1.4;color:#fff9;padding-left:10px;position:relative}.entry-effects li:before{content:"·";position:absolute;left:2px}.menu{display:flex;flex-direction:column;gap:12px;align-items:center;border:1px solid #fff;padding:28px 36px;background:#000;min-width:380px}.menu-title{font-size:22px;letter-spacing:.3em;border-bottom:1px solid #fff;padding-bottom:6px;width:100%;text-align:center}.menu-sub{font-size:11px;color:#fff9}.prism-mark{display:block;margin:0 auto 2px}.title-screen .menu-title{border-bottom:none;padding-bottom:9px;background-image:linear-gradient(90deg,#ff4a4a,#4aa3ff,#ffd24a);background-repeat:no-repeat;background-position:bottom center;background-size:70% 2px}.run-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 18px;margin:6px 0 2px;padding:12px 16px;border:1px solid rgba(255,255,255,.3)}.run-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.run-stat-num{font-size:18px;font-weight:700;color:#fff}.run-stat-label{font-size:8px;letter-spacing:.15em;color:#ffffff80}.run-apex{color:#ffd24a}.run-end{position:relative;overflow:hidden;border-color:var(--outcome, #fff);box-shadow:0 0 36px var(--outcome-glow, transparent)}.run-end.is-victory{--outcome: #ffd24a;--outcome-glow: rgba(255, 210, 74, .32)}.run-end.is-defeat{--outcome: #ff6a6a;--outcome-glow: rgba(255, 106, 106, .26)}.run-end:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--outcome, #fff)}.run-end .menu-title{color:var(--outcome, #fff);border-bottom-color:var(--outcome, #fff);text-shadow:0 0 14px var(--outcome-glow, transparent)}.run-flavor{font-size:10px;letter-spacing:.28em;color:var(--outcome, #fff);opacity:.85}.run-daily{font-size:9px;letter-spacing:.18em;color:#8ad7ff;border:1px solid rgba(138,215,255,.4);padding:3px 10px}.run-end .run-summary{border:none;padding:0;gap:8px}.run-end .run-stat{border:1px solid rgba(255,255,255,.14);background:#ffffff08;padding:9px 6px}.run-end .run-stat.key{border-color:var(--outcome, #fff);background:var(--outcome-glow, rgba(255, 255, 255, .05))}.run-end .run-stat.key .run-stat-num{color:var(--outcome, #fff)}.menu-verify{display:flex;flex-direction:column;align-items:center;gap:6px;margin:4px 0}.menu-verify-row{display:flex;gap:8px}.menu-verify-result{font-size:9px;letter-spacing:.12em}.menu-verify-result.ok{color:#7cff8a}.menu-verify-result.bad{color:#ff6a6a}.menu-leaderboard{width:100%;margin-top:10px}.menu-leaderboard ol{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-direction:column;gap:3px;font-size:10px}.menu-leaderboard li{display:flex;align-items:center;gap:6px}.menu-daily{width:100%;display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:10px}.menu-daily-sub{font-size:9px;letter-spacing:.1em;color:#ffffffbf}.menu-medals{width:100%;margin-top:10px}.medal-row{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:4px;justify-content:center}.medal-chip{font-size:8px;letter-spacing:.08em;padding:2px 6px;border:1px solid rgba(255,210,74,.55);color:#ffd24a;cursor:default}.medal-chip.locked{border-color:#ffffff2e;color:#ffffff59}.run-medals{display:flex;flex-direction:column;align-items:center;gap:3px}.run-medal{font-size:10px;letter-spacing:.14em;color:#ffd24a;border:1px solid rgba(255,210,74,.5);padding:3px 10px;animation:panel-in .26s cubic-bezier(.2,.7,.2,1) backwards}.run-medal:nth-child(2){animation-delay:90ms}.run-medal:nth-child(3){animation-delay:.18s}.menu-view{width:100%;display:flex;flex-direction:column;align-items:center;gap:12px;animation:overlay-in .14s ease-out}.menu-view>.hud-btn,.menu-continue>.hud-btn,.menu-daily>.hud-btn{width:100%}.menu-nav{width:100%;display:flex;gap:8px;margin-top:2px}.menu-nav>*{flex:1}.menu-back-row{width:100%;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.2);padding-bottom:6px}.menu-view-title{font-size:12px;letter-spacing:.22em}.menu-view .menu-daily,.menu-view .menu-medals,.menu-view .menu-import,.menu-view .menu-leaderboard,.menu-view .menu-scores{margin-top:0}.menu-continue{width:100%;display:flex;flex-direction:column;align-items:center;gap:4px}.tutorial-panel{position:absolute;left:12px;bottom:12px;z-index:40;width:270px;background:#000;border:1px solid #8ad7ff;box-shadow:0 0 18px #8ad7ff40;padding:10px 12px;display:flex;flex-direction:column;gap:6px;text-transform:uppercase;letter-spacing:.06em;pointer-events:auto;animation:panel-in .2s cubic-bezier(.2,.7,.2,1)}.tutorial-head{display:flex;justify-content:space-between;align-items:center}.tutorial-tag{font-size:8px;letter-spacing:.2em;color:#8ad7ff}.tutorial-title{font-size:12px;font-weight:700}.tutorial-body{font-size:9px;line-height:1.5;color:#ffffffbf;text-transform:none;letter-spacing:.04em}.menu-assist{display:flex;flex-direction:column;align-items:center;gap:3px}.menu-assist-sub{font-size:8px;letter-spacing:.12em;color:#ffffff80}.menu-import{width:100%;margin-top:10px}.menu-import-row{display:flex;gap:6px;margin-top:4px}.seed-input.wide{flex:1 1 auto;min-width:0}.menu-import-err{font-size:9px;color:#ff6a6a;margin-top:3px}.menu-palettes{width:100%;margin-top:10px}.palette-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;justify-content:center}.palette-chip{display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 7px;background:transparent;border:1px solid rgba(255,255,255,.25);color:#ffffffb3;font-size:8px;letter-spacing:.08em;min-width:60px}.palette-chip:hover:not(:disabled){border-color:#fff9;color:#fff}.palette-chip.active{border-color:#fff;color:#fff}.palette-chip:disabled{opacity:.4;cursor:not-allowed}.palette-swatch{width:26px;height:18px;border:1px solid #fff;display:flex;align-items:center;justify-content:center}.palette-dot{width:8px;height:8px;border-radius:50%}.palette-name{white-space:nowrap}.palette-meta{color:#ffffff80}.palette-chip.active .palette-meta,.lb-badge.ok{color:#7cff8a}.lb-badge.bad{color:#ff6a6a}.replay-dock{position:absolute;bottom:10px;left:12px;right:12px;margin:0 auto;width:fit-content;max-width:calc(100% - 24px);display:flex;align-items:center;gap:8px;padding:6px 10px;background:#000000e0;border:1px solid #7cff8a;box-shadow:0 0 16px #7cff8a38;pointer-events:auto;z-index:30;font-size:10px;letter-spacing:.06em;animation:panel-in .18s cubic-bezier(.2,.7,.2,1)}.replay-controls{display:flex;align-items:center;gap:4px;flex:0 0 auto}.replay-label{color:#7cff8a;margin-right:2px;white-space:nowrap}.replay-stop{flex:0 0 auto}.replay-waves{display:flex;flex-wrap:nowrap;gap:3px;flex:1 1 auto;min-width:40px;overflow-x:auto;scrollbar-width:thin;padding-bottom:2px}.replay-wave{flex:0 0 auto;min-width:20px;padding:2px 4px;font-size:9px;font-family:inherit;background:transparent;color:#ffffff8c;border:1px solid rgba(255,255,255,.25);cursor:pointer}.replay-wave:hover{color:#fff;border-color:#fff9}.replay-wave.active{color:#000;background:#7cff8a;border-color:#7cff8a}.menu-hint{font-size:9px;color:#ffffff80;margin-top:12px}.menu-difficulty{width:100%;display:flex;flex-direction:column;gap:6px;align-items:center;border-top:1px solid rgba(255,255,255,.3);border-bottom:1px solid rgba(255,255,255,.3);padding:10px 0}.menu-diff-row{display:flex;gap:6px}.menu-diff-sub{font-size:9px;color:#ffffff8c;letter-spacing:.05em}.speed-controls{display:flex;gap:3px;pointer-events:auto;background:#0000008c;border:1px solid #fff;padding:2px}.menu-scores{width:100%;font-size:11px;border-top:1px solid rgba(255,255,255,.3);padding-top:10px}.menu-scores ol{padding-left:20px;margin:6px 0 0}.menu-seed-row{display:flex;gap:8px;align-items:center;width:100%}.seed-input{flex:1;background:#000;border:1px solid rgba(255,255,255,.5);color:#fff;font-family:inherit;font-size:11px;padding:6px 8px;letter-spacing:.05em}.seed-input::placeholder{color:#ffffff4d}.seed-link{background:none;border:none;color:#ffffffb3;font-family:inherit;font-size:inherit;cursor:pointer;text-decoration:underline;padding:0}.seed-link:hover{color:#fff}.draft{display:flex;flex-direction:column;align-items:center;gap:16px;padding:24px;border:1px solid #fff;background:#000}.draft-title{font-size:18px;letter-spacing:.2em}.draft-sub{font-size:10px;color:#fff9}.draft-cards{display:flex;gap:16px}.draft-card{position:relative;width:180px;height:240px;background:#000;color:#fff;border:1px solid var(--accent-dim, #fff);display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:16px 12px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;font-family:inherit;transition:background .12s linear,transform .12s linear,border-color .12s linear,box-shadow .12s linear}.draft-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent, #fff);opacity:.65;transition:opacity .12s linear}.draft-card:hover{background:#ffffff0f;transform:translateY(-3px);border-color:var(--accent, #fff);box-shadow:0 0 0 1px var(--accent, #fff) inset,0 6px 22px var(--accent-glow, rgba(255, 255, 255, .25))}.draft-card:hover:before{opacity:1}.draft-card.is-replay{cursor:default;opacity:.7}.draft-card.is-replay:hover{background:#000;transform:none;border-color:var(--accent-dim, #fff);box-shadow:none}.card-art{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:20px}.card-color{font-weight:700}.card-label{text-align:center;display:flex;flex-direction:column;gap:6px}.card-name{font-size:12px;font-weight:700}.card-desc{font-size:9px;letter-spacing:.03em;color:#ffffffb3}
