:root{--bg:#05060f;--panel:#0a0e22d1;--panel-2:#101634e6;--line:#5a8cff47;--cyan:#41e9ff;--magenta:#ff3ea5;--amber:#ffb13b;--lime:#7dffb0;--violet:#a97bff;--text:#dce9ff;--muted:#7f93b8;--danger:#ff4d6d;--radius:14px;--font:"Inter", "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-user-select:none;user-select:none;margin:0;padding:0;overflow:hidden}#app{position:fixed;inset:0}#stage{width:100%;height:100%;display:block;position:absolute;inset:0}#ui-root{pointer-events:none;z-index:10;position:absolute;inset:0}#ui-root .overlay,#ui-root .btn,#ui-root .card,#ui-root .char-card,#ui-root .shop-item,#ui-root .diff-chip,#ui-root .weapon-bar,#ui-root .hud-top{pointer-events:auto}.screen-flash{pointer-events:none;opacity:0;z-index:6;mix-blend-mode:screen;position:fixed;inset:0}.hurt-vignette{pointer-events:none;opacity:0;z-index:7;background:radial-gradient(#ff002800 42%,#ff00288c 100%);position:fixed;inset:0}.floater-layer{pointer-events:none;z-index:8;position:fixed;inset:0;overflow:hidden}.floater{letter-spacing:.02em;white-space:nowrap;text-shadow:0 2px 6px #000000d9;will-change:transform, opacity, left, top;font-size:15px;font-weight:800;position:absolute;transform:translate(-50%,-50%)}.floater.dmg{color:#fff}.floater.crit{color:var(--amber);text-shadow:0 0 12px #ffb13bd9,0 2px 6px #000;font-size:24px}.floater.hurt{color:var(--danger);font-size:21px}.floater.heal{color:var(--lime);font-size:18px}.floater.xp{color:var(--cyan);font-size:13px}.floater.coin{color:var(--amber);font-size:15px}.floater.dodge{color:#9ad6ff;font-size:15px}.hud{opacity:0;grid-template-rows:auto 1fr auto;padding:14px 16px;transition:opacity .25s;display:grid;position:absolute;inset:0}.hud.on{opacity:1}.hud-top{align-items:flex-start;gap:14px;display:flex}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 32px #00000073,inset 0 1px #ffffff0d}.stat-block{min-width:236px;padding:10px 12px}.bar{background:#ffffff12;border:1px solid #ffffff14;border-radius:999px;height:14px;position:relative;overflow:hidden}.bar>i{border-radius:999px;transition:width .16s ease-out;display:block;position:absolute;inset:0 auto 0 0}.bar.hp>i{background:linear-gradient(90deg,#ff2d55,#ff7a3b 55%,#ffd166);box-shadow:0 0 14px #ff3c5a99}.bar.xp>i{background:linear-gradient(90deg,#1ad0ff,#7dffb0);box-shadow:0 0 14px #3cdcff99}.bar.shield>i{background:linear-gradient(90deg,#6ea8ff,#b78bff)}.bar-label{letter-spacing:.08em;text-shadow:0 1px 3px #000000e6;place-items:center;font-size:10px;font-weight:700;display:grid;position:absolute;inset:0}.row{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex}.row+.row{margin-top:7px}.tag{color:var(--text);background:#ffffff12;border:1px solid #ffffff14;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:600}.char-chip{align-items:center;gap:10px;padding:8px 12px;display:flex}.char-dot{background:currentColor;border-radius:9px;width:30px;height:30px;box-shadow:0 0 16px}.char-name{font-size:13px;font-weight:700}.char-sub{color:var(--muted);font-size:11px}.wave-block{text-align:right;min-width:168px;margin-left:auto;padding:8px 14px}.wave-num{letter-spacing:.04em;font-size:20px;font-weight:800}.wave-timer{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px}.phase-chip{letter-spacing:.1em;color:var(--cyan);background:#41e9ff26;border:1px solid #41e9ff59;border-radius:999px;margin-top:4px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.phase-chip.boss{color:#ff8fa8;background:#ff3c6e2e;border-color:#ff3c6e80}.ability-slot{align-items:center;gap:10px;padding:8px 12px;display:flex}.cd-ring{background:conic-gradient(var(--cyan) var(--p,0%), #ffffff14 0);border-radius:50%;place-items:center;width:40px;height:40px;display:grid;position:relative}.cd-ring:after{content:"";background:#080c1cf2;border-radius:50%;position:absolute;inset:4px}.cd-ring span{z-index:1;font-variant-numeric:tabular-nums;font-size:12px;font-weight:800;position:relative}.weapon-bar{gap:8px;padding:8px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.wslot{border:1px solid var(--line);background:#080c1ed9;border-radius:11px;place-items:center;width:56px;height:56px;display:grid;position:relative;overflow:hidden}.wslot .glyph{filter:drop-shadow(0 0 8px);font-size:22px}.wslot .lv{color:#fff;text-shadow:0 1px 3px #000;font-size:10px;font-weight:800;position:absolute;bottom:2px;right:3px}.wslot .cd{background:currentColor;height:3px;position:absolute;bottom:0;left:0;box-shadow:0 0 8px}.wslot.empty{opacity:.3}.boss-hud{text-align:center;width:min(680px,76vw);padding:8px 12px 10px;display:none;position:absolute;top:86px;left:50%;transform:translate(-50%)}.boss-hud.on{display:block}.boss-name{letter-spacing:.16em;color:#ffd7e6;text-shadow:0 0 12px #ff5082cc;font-size:12px;font-weight:800}.boss-hud .bar{height:10px;margin-top:6px}.boss-hud .bar>i{background:linear-gradient(90deg,#ff2d6b,#ff9f43);box-shadow:0 0 16px #ff466eb3}.banner{text-align:center;pointer-events:none;opacity:0;position:absolute;top:26%;left:50%;transform:translate(-50%,-50%)}.banner.show{animation:2.4s ease-out forwards bannerIn}.banner .big{letter-spacing:.14em;background:linear-gradient(#fff,#41e9ff 60%,#ff3ea5);color:#0000;filter:drop-shadow(0 6px 24px #41e9ff8c);-webkit-background-clip:text;background-clip:text;font-size:46px;font-weight:900}.banner .sub{letter-spacing:.32em;color:var(--muted);margin-top:4px;font-size:13px}@keyframes bannerIn{0%{opacity:0;filter:blur(8px);transform:translate(-50%,-50%)scale(.86)}14%{opacity:1;filter:blur();transform:translate(-50%,-50%)scale(1)}74%{opacity:1}to{opacity:0;transform:translate(-50%,-56%)scale(1.03)}}.overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto;background:radial-gradient(#060918b8,#03040cf0);justify-content:center;align-items:center;padding:24px;display:none;position:absolute;inset:0;overflow:auto}.overlay.on{display:flex}.overlay-inner{width:min(980px,96vw);animation:.3s cubic-bezier(.2,.9,.2,1) rise}@keyframes rise{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:none}}.title{letter-spacing:.06em;background:linear-gradient(120deg,#fff 10%,#41e9ff 45%,#ff3ea5 90%);color:#0000;filter:drop-shadow(0 8px 30px #41e9ff59);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(38px,7vw,76px);font-weight:900;line-height:1}.subtitle{color:var(--muted);letter-spacing:.34em;text-transform:uppercase;margin:8px 0 26px;font-size:12px}.btn{pointer-events:auto;appearance:none;border:1px solid var(--line);color:var(--text);letter-spacing:.08em;cursor:pointer;background:linear-gradient(#1e2c60d9,#0c122ae6);border-radius:12px;padding:13px 26px;font-family:inherit;font-size:14px;font-weight:700;transition:transform .12s,box-shadow .18s,border-color .18s,background .18s}.btn:hover{border-color:#41e9ff99;transform:translateY(-2px);box-shadow:0 10px 28px #00000080,0 0 0 1px #41e9ff40}.btn:active{transform:translateY(0)scale(.98)}.btn.primary{background:linear-gradient(#41e9ff47,#ff3ea547);border-color:#78e6ff8c;box-shadow:0 8px 26px #41e9ff33}.btn.ghost{background:#ffffff0a}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.char-grid{grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:14px;margin:20px 0;display:grid}.char-card{pointer-events:auto;border:1px solid var(--line);cursor:pointer;background:linear-gradient(165deg,#12183af0,#090c1ef5);border-radius:16px;padding:16px;transition:transform .15s,border-color .18s,box-shadow .2s;position:relative;overflow:hidden}.char-card:before{content:"";background:radial-gradient(circle, var(--glow), transparent 70%);opacity:.5;pointer-events:none;border-radius:50%;width:180px;height:180px;position:absolute;inset:-40% -60% auto auto}.char-card:hover{border-color:var(--glow);transform:translateY(-4px);box-shadow:0 16px 40px #00000080}.char-card.sel{border-color:var(--glow);box-shadow:0 0 0 1px var(--glow), 0 16px 44px #0000008c}.char-card h3{letter-spacing:.04em;color:var(--glow);margin:0 0 2px;font-size:19px;font-weight:800}.char-card .en{letter-spacing:.24em;color:var(--muted);text-transform:uppercase;font-size:10px}.char-card .blurb{color:#b6c8e6;margin-top:10px;font-size:12px;line-height:1.65}.char-card .tags{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.diff-row{flex-wrap:wrap;gap:8px;display:flex}.diff-chip{pointer-events:auto;border:1px solid var(--line);cursor:pointer;letter-spacing:.06em;background:#0a0e22b3;border-radius:10px;padding:8px 14px;font-size:12px;font-weight:700;transition:all .15s}.diff-chip.sel{border-color:var(--magenta);color:#ffd0e8;background:#ff3ea52e}.cards{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:18px 0;display:grid}.card{pointer-events:auto;border:1px solid var(--line);cursor:pointer;background:linear-gradient(170deg,#101634f5,#080b1afa);border-radius:18px;flex-direction:column;min-height:210px;padding:20px 18px;transition:transform .14s cubic-bezier(.2,.9,.2,1),box-shadow .2s,border-color .2s;display:flex;position:relative;overflow:hidden}.card:after{content:"";background:radial-gradient(circle, var(--rc), transparent 68%);opacity:.42;pointer-events:none;border-radius:50%;width:220px;height:220px;position:absolute;inset:auto -30% -60% auto}.card:hover{border-color:var(--rc);box-shadow:0 22px 54px #0009, 0 0 0 1px var(--rc);transform:translateY(-8px)scale(1.02)}.card .icon{color:var(--rc);filter:drop-shadow(0 0 12px var(--rc));font-size:30px}.card .rar{letter-spacing:.18em;color:var(--rc);font-size:10px;font-weight:800;position:absolute;top:14px;right:14px}.card h4{margin:10px 0 8px;font-size:17px;font-weight:800;line-height:1.3}.card p{color:#a9bcd8;white-space:pre-line;flex:1;margin:0;font-size:12.5px;line-height:1.7}.card .key{color:var(--muted);letter-spacing:.16em;margin-top:14px;font-size:10px}.shop-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin:16px 0;display:grid}.shop-item{pointer-events:auto;border:1px solid var(--line);cursor:pointer;background:linear-gradient(170deg,#101634f5,#080b1afa);border-radius:15px;flex-direction:column;gap:8px;padding:16px;transition:transform .14s,border-color .18s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.shop-item:hover:not(.sold):not(.locked){border-color:var(--rc);transform:translateY(-5px);box-shadow:0 18px 44px #0000008c}.shop-item .top{align-items:center;gap:8px;display:flex}.shop-item .icon{color:var(--rc);font-size:22px}.shop-item h5{margin:0;font-size:15px;font-weight:800}.shop-item p{color:#a2b6d2;white-space:pre-line;flex:1;margin:0;font-size:12px;line-height:1.6}.price{color:var(--amber);align-items:center;gap:5px;font-size:14px;font-weight:800;display:inline-flex}.shop-item.sold{opacity:.35;cursor:default}.shop-item.locked{opacity:.5;cursor:not-allowed}.shop-item .sold-tag{letter-spacing:.2em;color:var(--muted);background:#04061099;place-items:center;font-weight:900;display:grid;position:absolute;inset:0}.result-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:20px 0;display:grid}.result-cell{border:1px solid var(--line);background:#0a0e22bf;border-radius:13px;padding:14px}.result-cell .v{font-variant-numeric:tabular-nums;color:var(--cyan);font-size:26px;font-weight:900}.result-cell .k{letter-spacing:.14em;color:var(--muted);margin-top:2px;font-size:11px}.build-list{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.build-chip{background:#ffffff0a;border:1px solid;border-radius:9px;padding:7px 12px;font-size:12px;font-weight:700}.help-grid{color:var(--muted);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:14px;font-size:12px;display:grid}.help-grid kbd{text-align:center;min-width:22px;color:var(--text);background:#ffffff14;border:1px solid #ffffff24;border-radius:6px;margin-right:6px;padding:2px 7px;font-family:inherit;font-size:11px;font-weight:700;display:inline-block}.muted-note{color:var(--muted);margin-top:10px;font-size:12px}.sect-title{letter-spacing:.24em;color:var(--muted);text-transform:uppercase;margin:22px 0 6px;font-size:12px}.victory h1{background:linear-gradient(120deg,#fff,#ffd166 50%,#ff3ea5);color:#0000;-webkit-background-clip:text;background-clip:text}.death h1{background:linear-gradient(120deg,#fff,#ff4d6d 60%,#8b1030);color:#0000;-webkit-background-clip:text;background-clip:text}
