:root{--void: #05060d;--ink: #0a0d18;--panel: rgba(11, 16, 30, .72);--panel-solid: #0b1220;--line: rgba(46, 255, 213, .16);--line-strong: rgba(46, 255, 213, .44);--arcane: #2effd5;--arcane-dim: #178f79;--rift: #ff2e88;--gold: #ffc857;--essence: #9d7bff;--player: #ffb648;--danger: #ff4d4d;--text: #dbe6f5;--text-dim: #7f8da3;--radius: 12px;--hud-pad: 12px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--void);color:var(--text);font-family:var(--sans);overscroll-behavior:none;touch-action:none;user-select:none;-webkit-user-select:none}#app{position:fixed;inset:0;overflow:hidden}.stage,.game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.fx-layer,.sticks,.banner,.toasts{position:absolute;inset:0;pointer-events:none;z-index:5}.hud{position:absolute;inset:0;pointer-events:none;z-index:6;opacity:0;transition:opacity .35s ease}.hud.visible{opacity:1}.screens{position:absolute;inset:0;z-index:20;pointer-events:none}.boot{position:absolute;inset:0;z-index:50;display:grid;place-content:center;gap:18px;justify-items:center;background:radial-gradient(120% 100% at 50% 40%,#0d1426,#05060d 70%);transition:opacity .6s ease}.boot.done{opacity:0;pointer-events:none}.boot-mark{width:54px;height:74px;background:linear-gradient(180deg,var(--rift),var(--arcane));clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);animation:bootPulse 1.4s ease-in-out infinite;filter:drop-shadow(0 0 18px rgba(255,46,136,.6))}.boot-label{font:600 11px/1 var(--mono);letter-spacing:.42em;color:var(--arcane);opacity:.75}@keyframes bootPulse{0%,to{transform:scale(1) rotate(0);opacity:.85}50%{transform:scale(1.14) rotate(6deg);opacity:1}}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:0 10px 34px #00000080,inset 0 1px #ffffff0b}.clip{clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);border-radius:0}.label{font:600 9.5px/1 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--text-dim)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700}.hud-top{position:absolute;top:calc(var(--safe-t) + var(--hud-pad));left:calc(var(--safe-l) + var(--hud-pad));right:calc(var(--safe-r) + var(--hud-pad));display:flex;align-items:flex-start;gap:10px;pointer-events:none}.rift-card{pointer-events:auto;padding:9px 14px 10px;min-width:190px;display:grid;gap:7px}.rift-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.rift-head .num{font-size:15px;color:var(--rift);text-shadow:0 0 14px rgba(255,46,136,.5)}.bar{position:relative;height:7px;border-radius:4px;background:#ffffff12;overflow:hidden}.bar>i{position:absolute;inset:0 auto 0 0;display:block;width:100%;border-radius:4px;transition:width .24s cubic-bezier(.22,1,.36,1)}.bar.rift>i{background:linear-gradient(90deg,#ff2e88,#ff8ac0);box-shadow:0 0 14px #ff2e88a6}.bar.hp>i{background:linear-gradient(90deg,#ffb648,#ffe3ac);box-shadow:0 0 12px #ffb6488c}.bar.wave>i{background:linear-gradient(90deg,var(--arcane),#9dfff0);box-shadow:0 0 12px #2effd580}.wave-card{pointer-events:none;flex:1;max-width:260px;margin:0 auto;padding:8px 14px 10px;display:grid;gap:6px;text-align:center}.wave-title{font:800 14px/1.1 var(--sans);letter-spacing:.12em;text-transform:uppercase}.wave-sub{font:600 10px/1 var(--mono);letter-spacing:.16em;color:var(--text-dim)}.wave-sub b{color:var(--arcane)}.roster{display:flex;flex-wrap:wrap;gap:4px;justify-content:center}.roster:empty{display:none}.roster .chip{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:999px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);font:600 9px/1 var(--sans);letter-spacing:.04em;color:var(--text-dim);white-space:nowrap}.roster .chip i{width:6px;height:6px;border-radius:50%;flex:none}.roster .chip b{font:700 10px/1 var(--mono);color:var(--text)}.roster .chip.air{border-color:#ffd1668c;background:#ffd1661f;color:#ffd166}.roster .chip.boss{border-color:#ff5a3c99;background:#ff5a3c24;color:#ff9a80}.roster .chip.warn{border-color:#ffd16666;color:#ffd166;font-style:italic;letter-spacing:.06em}.res-stack{display:grid;gap:6px;justify-items:end}.res{pointer-events:auto;display:flex;align-items:center;gap:8px;padding:6px 12px;min-width:118px;justify-content:flex-end}.res .num{font-size:14px}.res .dot{width:8px;height:8px;border-radius:50%;flex:none}.res.gold .num{color:var(--gold)}.res.gold .dot{background:var(--gold);box-shadow:0 0 10px var(--gold)}.res.essence .num{color:var(--essence)}.res.essence .dot{background:var(--essence);box-shadow:0 0 10px var(--essence)}.top-buttons{display:flex;gap:6px;margin-top:2px}.icon-btn{pointer-events:auto;width:38px;height:38px;display:grid;place-items:center;font-size:15px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:10px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);cursor:pointer;transition:transform .12s ease,border-color .18s ease,background .18s ease}.icon-btn:hover{border-color:var(--line-strong)}.icon-btn:active{transform:scale(.92)}.icon-btn.on{border-color:var(--arcane);color:var(--arcane);background:#2effd51f}.icon-btn .badge{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--essence);color:#100f1c;font:800 9px/16px var(--mono);text-align:center;box-shadow:0 0 12px #9d7bffd9;display:none}.icon-btn.has-offers{border-color:#9d7bff99;animation:offerGlow 2.4s ease-in-out infinite}.icon-btn.has-offers .badge{display:block}@keyframes offerGlow{0%,to{box-shadow:0 0 #9d7bff00}50%{box-shadow:0 0 16px 1px #9d7bff73}}@media (prefers-reduced-motion: reduce){.icon-btn.has-offers{animation:none}}.hud-bottom{position:absolute;left:calc(var(--safe-l) + var(--hud-pad));right:calc(var(--safe-r) + var(--hud-pad));bottom:calc(var(--safe-b) + var(--hud-pad));display:flex;align-items:flex-end;gap:10px;pointer-events:none}.vitals{pointer-events:auto;width:168px;padding:9px 12px 10px;display:grid;gap:7px;flex:none}.vitals-row{display:flex;align-items:baseline;justify-content:space-between}.dash-pips{display:flex;gap:4px;align-items:center}.dash-pips i{width:22px;height:4px;border-radius:2px;background:#ffffff1f}.dash-pips i.ready{background:var(--arcane);box-shadow:0 0 10px #2effd5b3}.tray{pointer-events:auto;flex:1;display:flex;gap:7px;justify-content:center;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding:2px}.tray::-webkit-scrollbar{display:none}.trap-btn{position:relative;flex:none;width:66px;padding:7px 4px 6px;display:grid;gap:3px;justify-items:center;background:var(--panel);border:1px solid var(--line);border-radius:11px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);cursor:pointer;color:var(--text);transition:transform .12s ease,border-color .18s ease,background .18s ease}.trap-btn:active{transform:scale(.94)}.trap-btn .glyph{font-size:17px;line-height:1;filter:drop-shadow(0 0 8px currentColor)}.trap-btn .tname{font:700 8px/1.1 var(--sans);letter-spacing:.06em;text-transform:uppercase;text-align:center;color:var(--text-dim)}.trap-btn .tcost{font:700 10px/1 var(--mono);color:var(--gold)}.trap-btn .key{position:absolute;top:3px;left:5px;font:700 8px/1 var(--mono);color:#ffffff47}.trap-btn.selected{border-color:var(--arcane);background:#2effd524;box-shadow:0 0 0 1px #2effd559,0 0 22px #2effd540}.trap-btn.selected .tname{color:var(--arcane)}.trap-btn.poor{opacity:.45}.trap-btn.poor .tcost{color:var(--danger)}.trap-btn.locked{opacity:.55;border-style:dashed}.trap-btn.locked .tcost{color:var(--essence)}.action-stack{display:grid;gap:7px;justify-items:end;flex:none}.big-btn{pointer-events:auto;padding:11px 18px;font:800 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--void);background:linear-gradient(135deg,var(--arcane),#7dffe4);border:none;border-radius:11px;cursor:pointer;box-shadow:0 6px 22px #2effd559;transition:transform .12s ease,filter .18s ease}.big-btn:active{transform:scale(.95)}.big-btn.warn{background:linear-gradient(135deg,var(--rift),#ff7ab5);box-shadow:0 6px 22px #ff2e8859;color:#fff}.big-btn.ghost{background:var(--panel);color:var(--text);border:1px solid var(--line);box-shadow:none;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.big-btn[disabled]{opacity:.4;pointer-events:none}.trap-panel{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--safe-b) + 108px);width:min(320px,calc(100vw - 32px));padding:11px 14px 12px;pointer-events:auto;display:none;gap:9px}.trap-panel.open{display:grid}.tp-head{display:flex;align-items:center;gap:9px}.tp-glyph{font-size:19px;filter:drop-shadow(0 0 10px currentColor)}.tp-name{font:800 12px/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;flex:1}.tp-lv{font:700 10px/1 var(--mono);color:var(--arcane);padding:4px 8px;border:1px solid var(--line-strong);border-radius:6px}.tp-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tp-stat{display:grid;gap:3px}.tp-stat .num{font-size:12px;color:var(--text)}.tp-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tp-actions .big-btn{width:100%;padding:10px 8px;font-size:11px}.stick{position:absolute;width:124px;height:124px;margin:-62px 0 0 -62px;border-radius:50%;border:1.5px solid rgba(46,255,213,.22);background:radial-gradient(circle,#2effd512,#2effd500 68%);opacity:0;transition:opacity .18s ease}.stick.on{opacity:1}.stick>i{position:absolute;left:50%;top:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;background:radial-gradient(circle,#2effd58c,#2effd524);border:1px solid rgba(46,255,213,.5);box-shadow:0 0 20px #2effd559}.stick.aim{border-color:#ffb64847;background:radial-gradient(circle,#ffb64814,#ffb64800 68%)}.stick.aim>i{background:radial-gradient(circle,#ffb64899,#ffb64829);border-color:#ffb6488c;box-shadow:0 0 20px #ffb64866}.dmg{position:absolute;font:800 15px/1 var(--mono);color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.85);will-change:transform,opacity;transform:translate(-50%,-50%);white-space:nowrap}.dmg.crit{font-size:22px;color:var(--player);text-shadow:0 0 14px rgba(255,182,72,.9),0 2px 8px rgba(0,0,0,.9)}.dmg.float{font-size:14px;font-weight:800;letter-spacing:.06em}.banner-card{position:absolute;left:50%;top:27%;transform:translate(-50%,-50%);text-align:center;padding:0 20px;opacity:0}.banner-title{font:900 clamp(26px,7vw,52px)/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;background:linear-gradient(180deg,#fff,var(--arcane));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 26px rgba(46,255,213,.45))}.banner-sub{margin-top:8px;font:600 11px/1 var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--text-dim)}.banner-card.boss .banner-title{background:linear-gradient(180deg,#fff,var(--rift));-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 0 26px rgba(255,46,136,.55))}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.86);filter:blur(8px)}16%{opacity:1;transform:translate(-50%,-50%) scale(1);filter:blur(0)}78%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-56%) scale(1.04)}}.toasts{display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:calc(var(--safe-t) + 86px)}.toast{padding:7px 14px;font:700 11px/1 var(--sans);letter-spacing:.08em;border-radius:999px;background:#0a0e1ae6;border:1px solid var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:toastIn 2.6s ease forwards}.toast.good{border-color:#2effd580;color:var(--arcane)}.toast.bad{border-color:#ff4d4d80;color:#ff9d9d}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px)}10%,82%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}.screen{position:absolute;inset:0;display:none;pointer-events:auto;background:radial-gradient(130% 90% at 50% 0%,rgba(255,46,136,.12),transparent 60%),radial-gradient(120% 100% at 50% 100%,rgba(46,255,213,.1),transparent 62%),#04060cdb;backdrop-filter:blur(18px) saturate(1.1);-webkit-backdrop-filter:blur(18px) saturate(1.1);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.screen.open{display:block;animation:screenIn .3s cubic-bezier(.22,1,.36,1)}@keyframes screenIn{0%{opacity:0;transform:scale(1.015)}to{opacity:1;transform:scale(1)}}.screen-inner{width:min(760px,100%);margin:0 auto;padding:calc(var(--safe-t) + 26px) calc(var(--safe-r) + 18px) calc(var(--safe-b) + 30px) calc(var(--safe-l) + 18px);display:grid;gap:16px}.title-mark{display:grid;justify-items:center;gap:10px;text-align:center;margin-top:4vh}.title-mark h1{margin:0;font:900 clamp(38px,12vw,76px)/.92 var(--sans);letter-spacing:.1em;text-transform:uppercase;background:linear-gradient(170deg,#ffffff 5%,var(--arcane) 48%,var(--rift) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 34px rgba(46,255,213,.3))}.title-mark .tag{font:600 10px/1 var(--mono);letter-spacing:.42em;text-transform:uppercase;color:var(--text-dim)}.diamond{width:44px;height:60px;background:linear-gradient(180deg,var(--rift),var(--arcane));clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);filter:drop-shadow(0 0 22px rgba(255,46,136,.55));animation:bootPulse 3.4s ease-in-out infinite}.stat-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}.stat-cell{padding:10px 12px;display:grid;gap:4px;text-align:center}.stat-cell .num{font-size:17px}.stat-cell.gold .num{color:var(--gold)}.stat-cell.essence .num{color:var(--essence)}.stat-cell.shard .num{color:var(--rift)}.stat-cell.wave .num{color:var(--arcane)}.menu-actions{display:grid;gap:9px;margin-top:4px}.menu-actions .big-btn{padding:15px 18px;font-size:13px;letter-spacing:.2em}.section{display:grid;gap:10px}.section-head{display:flex;align-items:center;gap:10px}.section-head h2{margin:0;font:800 12px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--text)}.section-head .rule{flex:1;height:1px;background:linear-gradient(90deg,var(--line-strong),transparent)}.tabs{display:flex;gap:6px;flex-wrap:wrap}.tab{padding:8px 14px;font:700 10px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim);background:var(--panel);border:1px solid var(--line);border-radius:9px;cursor:pointer}.tab.on{color:var(--arcane);border-color:var(--arcane);background:#2effd51f}.upgrade-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:8px}.upgrade{padding:11px 12px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;cursor:pointer;transition:transform .12s ease,border-color .18s ease}.upgrade:active{transform:scale(.985)}.upgrade.afford{border-color:#9d7bff80}.upgrade.maxed{opacity:.55;pointer-events:none}.upgrade .u-icon{font-size:17px;width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#ffffff0d}.upgrade .u-body{display:grid;gap:3px;min-width:0}.upgrade .u-name{font:800 11px/1.15 var(--sans);letter-spacing:.06em;text-transform:uppercase}.upgrade .u-desc{font:500 10px/1.25 var(--sans);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upgrade .u-buy{display:grid;gap:3px;justify-items:end}.upgrade .u-cost{font:700 12px/1 var(--mono);color:var(--essence)}.upgrade .u-lv{font:700 9px/1 var(--mono);color:var(--text-dim)}.upgrade.afford .u-cost{color:#c6b3ff;text-shadow:0 0 12px rgba(157,123,255,.6)}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.level-card{padding:12px 14px;display:grid;gap:5px;cursor:pointer}.level-card.on{border-color:var(--arcane);background:#2effd51a}.level-card.locked{opacity:.45;pointer-events:none}.level-card .lname{font:800 12px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase}.level-card .lsub{font:500 10px/1.3 var(--sans);color:var(--text-dim)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px}.setting-row .sname{font:700 11px/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase}.seg{display:flex;gap:4px;background:#ffffff0d;padding:3px;border-radius:9px}.seg button{padding:7px 11px;font:700 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);background:transparent;border:none;border-radius:7px;cursor:pointer}.seg button.on{background:#2effd52e;color:var(--arcane)}.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;border:1px solid var(--line);font:700 10px/1 var(--mono);letter-spacing:.1em;color:var(--arcane)}.pill.rift{border-color:#ff2e8873;color:var(--rift)}.note{font:500 11px/1.5 var(--sans);color:var(--text-dim)}.note b{color:var(--text)}.close-x{position:absolute;top:calc(var(--safe-t) + 12px);right:calc(var(--safe-r) + 12px);z-index:3}.offline-card{padding:12px 14px;display:grid;gap:5px;border-color:#9d7bff66}@media (max-width: 620px){:root{--hud-pad: 9px}.rift-card{min-width:148px;padding:8px 11px 9px}.wave-card{display:none}.wave-card.has-roster{display:block;position:absolute;top:calc(var(--safe-t) + 78px);left:50%;transform:translate(-50%);width:max-content;max-width:92vw;margin:0;padding:6px 10px}.wave-card.has-roster .wave-title,.wave-card.has-roster .wave-sub{display:none}.res{min-width:96px;padding:5px 10px}.res .num{font-size:12.5px}.trap-btn{width:58px}.trap-btn .key{display:none}.big-btn{padding:10px 13px;font-size:11px}.hud-bottom{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"tray tray" "vitals actions";align-items:end;gap:7px}.vitals{grid-area:vitals;width:140px}.tray{grid-area:tray;justify-content:flex-start}.action-stack{grid-area:actions;grid-auto-flow:column;justify-self:end;align-items:end}.trap-panel{bottom:calc(var(--safe-b) + 152px)}}@media (max-width: 420px){.vitals{width:124px}.trap-btn{width:54px}}@media (hover: none){.trap-btn:hover{border-color:var(--line)}}@media (prefers-reduced-motion: reduce){.boot-mark,.diamond,.screen.open{animation:none}}
