*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0b0f1d;--panel: rgba(10, 14, 30, .74);--card: #121a33;--line: rgba(255, 255, 255, .1);--text: #e5e7eb;--muted: #94a3b8;--gold: #ffd23f;--accent: #f59e0b;--danger: #ef4444}html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:Kanit,system-ui,-apple-system,Segoe UI,sans-serif;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}#game{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}.hidden{display:none!important}.muted{color:var(--muted);font-size:.85em}#fx{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:2}.ft{position:absolute;left:0;top:0;font-weight:800;font-size:16px;color:#fff;white-space:nowrap;text-shadow:0 2px 0 #000,0 0 6px rgba(0,0,0,.7);will-change:transform,opacity}.ft.crit{color:var(--gold);font-size:22px}.ft.hurt{color:#ff4d6d;font-size:20px}.ft.gain{color:#86efac;font-size:15px}.ft.coin{color:var(--gold);font-size:14px}#hurt{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3;opacity:0;box-shadow:inset 0 0 140px 40px #ff0028d9}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:4}#hud button{pointer-events:auto}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:10px 12px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.top-left{position:absolute;top:12px;left:12px;width:250px}.hp{position:relative;height:22px;background:#2a1020;border-radius:11px;overflow:hidden}.hp-fill{height:100%;width:100%;background:linear-gradient(90deg,#ef4444,#f97316);transition:width .12s}.hp span{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:12px;font-weight:600;text-shadow:0 1px 2px #000}.row{display:flex;gap:12px;margin-top:8px;font-size:15px;align-items:center}.coin b{color:var(--gold)}.dashcd{font-size:12px;color:#7dd3fc;margin-left:auto}.buffs{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.buffs:empty{display:none}.buff{font-size:12px;background:#ffffff1a;padding:2px 8px;border-radius:999px}.top-center{position:absolute;top:12px;left:50%;transform:translate(-50%);text-align:center;min-width:210px}.wave-title{font-size:22px;font-weight:800;line-height:1.1}.wave-title b{color:var(--accent)}.wave-next,.wave-alive{font-size:13px;color:#cbd5e1}.wave-next b{color:#fbbf24;font-variant-numeric:tabular-nums}.top-right{position:absolute;top:12px;right:12px;display:flex;gap:8px}.bossbar{position:absolute;top:132px;left:50%;transform:translate(-50%);width:min(520px,86vw);text-align:center}.bb-label{font-weight:800;color:#fca5a5;text-shadow:0 2px 0 #000;margin-bottom:4px}.bb{height:14px;background:#2a1020;border:1px solid #7f1d1d;border-radius:7px;overflow:hidden}#boss-fill{height:100%;width:100%;background:linear-gradient(90deg,#b91c1c,#ef4444,#f97316);transition:width .12s}.inventory{position:absolute;bottom:14px;left:50%;transform:translate(-50%);display:flex;gap:8px}.slot{position:relative;width:60px;height:60px;border-radius:12px;background:var(--panel);border:1px solid var(--line);color:#fff;font:inherit;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.slot:hover:not(:disabled){border-color:var(--accent)}.slot:disabled{opacity:.4;cursor:default}.slot .ic{font-size:26px;line-height:60px}.slot .key{position:absolute;top:2px;left:6px;font-size:11px;color:var(--muted)}.slot .cnt{position:absolute;bottom:2px;right:6px;font-size:13px;font-weight:800}.btn{font:inherit;color:#fff;font-weight:600;cursor:pointer;background:#1f2a48;border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:8px 14px}.btn:hover:not(:disabled){background:#2b3a63}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,#fbbf24,#d97706);border-color:#fcd34d;color:#1a1205}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,#fcd34d,#f59e0b)}.btn.big{font-size:20px;padding:12px 34px}.btn.small{font-size:12px;padding:4px 10px;margin-top:6px}.btn.icon{width:42px;padding:8px 0}kbd{font-family:inherit;font-size:.78em;background:#ffffff24;border-radius:4px;padding:0 5px;border-bottom:2px solid rgba(0,0,0,.4)}.dash{position:absolute;right:18px;bottom:96px;width:84px;height:84px;border-radius:50%;font-size:14px;line-height:1.1;background:#0e7490a6;border-color:#67e8f9}.dash.cooling{opacity:.4}.joy{position:fixed;width:120px;height:120px;border-radius:50%;border:2px solid rgba(255,255,255,.25);background:#ffffff0f;transform:translate(-50%,-50%);pointer-events:none}#joy-knob{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background:#ffffff59}.banner{position:fixed;top:26%;left:0;right:0;text-align:center;pointer-events:none;opacity:0;z-index:6;padding:0 16px}.banner.show{animation:banner 2.8s ease forwards}@keyframes banner{0%{opacity:0;transform:scale(1.5)}12%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.b-title{font-size:clamp(36px,9vw,64px);font-weight:800;color:#fbbf24;text-shadow:0 4px 0 #7c2d12,0 0 30px rgba(251,191,36,.5)}.b-sub{font-size:clamp(16px,4vw,22px);font-weight:600;text-shadow:0 2px 0 #000}.toast{position:fixed;bottom:92px;left:50%;transform:translate(-50%,10px);background:#0a0e1ee6;border:1px solid var(--line);border-radius:999px;padding:8px 18px;font-size:15px;opacity:0;pointer-events:none;z-index:7;transition:opacity .2s,transform .2s;white-space:nowrap;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translate(-50%)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:16px;background:radial-gradient(ellipse at center,#0f142db3,#03050ce6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px;width:100%;max-width:480px;max-height:100%;overflow:auto;text-align:center;box-shadow:0 30px 80px #00000080}.card.wide{max-width:900px;text-align:left}h1{font-size:clamp(40px,10vw,56px);font-weight:800;letter-spacing:1px;line-height:1.1;background:linear-gradient(180deg,#fde68a,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent}h2{font-size:30px;font-weight:800}h2.danger{color:var(--danger)}h3{font-size:17px;margin:18px 0 10px;color:#cbd5e1}.sub{color:#cbd5e1;margin:10px 0 16px}.howto{list-style:none;text-align:left;display:grid;gap:6px;margin:0 auto 18px;max-width:360px;font-size:15px}.howto li:before{content:"▸ ";color:var(--accent)}.best{color:var(--gold);margin-bottom:16px;min-height:1em}.actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:8px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.stat{background:#ffffff0d;border-radius:12px;padding:10px}.stat b{display:block;font-size:26px;color:var(--gold)}.stat span{font-size:13px;color:var(--muted)}.shop-head{display:flex;align-items:center;gap:16px}.shop-head h2{margin-right:auto}.coin.big{font-size:22px;font-weight:800}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.shop-card{background:#ffffff0a;border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}.sc-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.sc-top .lv{font-size:12px;color:var(--muted);white-space:nowrap}.sc-desc{font-size:13px;color:#cbd5e1}.sc-cur{font-size:12px;color:#7dd3fc}.shop-card .btn{margin-top:auto}.lvbar{display:flex;gap:2px;margin:2px 0 4px}.lvbar i{flex:1;height:4px;border-radius:2px;background:#ffffff1a}.lvbar i.on{background:var(--accent)}.hint{margin-top:16px;font-size:13px;color:var(--muted);text-align:center}.touch-only{display:none}@media (pointer: coarse){.touch-only{display:block}.desk-only{display:none}}@media (max-width: 720px){.top-left{width:180px;padding:8px 10px}.row{font-size:13px;gap:8px}.dashcd{display:none}.top-center{top:62px;left:auto;right:12px;transform:none;min-width:0;padding:6px 10px}.wave-title{font-size:17px}.top-right .lbl{display:none}.bossbar{top:168px}.slot{width:50px;height:50px}.slot .ic{font-size:22px;line-height:50px}.inventory{gap:6px}.card{padding:18px}.shop-head{gap:10px}.shop-head h2{font-size:24px}}.wave-next b.warn{color:#f87171}.select-card{text-align:center}.select-card h3{text-align:left}.char-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:6px}.char-card{font:inherit;color:var(--text);text-align:left;cursor:pointer;background:#ffffff0a;border:2px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,transform .15s}.char-card:hover,.char-card:focus-visible{border-color:var(--accent);transform:translateY(-2px);outline:none}.char-card canvas{width:120px;height:160px;align-self:center;image-rendering:pixelated;background:radial-gradient(ellipse at 50% 85%,rgba(127,214,200,.18),transparent 60%)}.cc-name{font-size:20px;font-weight:800}.cc-role{font-size:13px;color:var(--muted);margin-top:-4px}.cc-stats{display:grid;gap:4px;margin:4px 0}.cc-stat{display:grid;grid-template-columns:74px 1fr;align-items:center;gap:8px;font-size:12px;color:#cbd5e1}.cc-stat i{height:6px;border-radius:3px;background:#ffffff14;overflow:hidden}.cc-stat b{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24);border-radius:3px}.cc-perk{font-size:13px;color:#7dd3fc;min-height:2.6em}.cc-pick{text-align:center;margin-top:auto}.enemy-roster{display:flex;flex-wrap:wrap;gap:8px}.er{display:flex;flex-direction:column;align-items:center;width:72px;padding:6px 4px;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:10px}.er canvas{width:48px;height:64px;image-rendering:pixelated}.er span{font-size:12px;font-weight:600}.er small{font-size:10px;color:var(--muted)}.charname{font-size:12px;color:#fbbf24}@media (max-width: 720px){.char-cards{grid-template-columns:1fr}.char-card{display:grid;grid-template-columns:84px 1fr;grid-template-areas:"pic name" "pic role" "pic stats" "perk perk" "pick pick";column-gap:12px;row-gap:2px}.char-card canvas{grid-area:pic;width:84px;height:112px}.cc-name{grid-area:name}.cc-role{grid-area:role;margin-top:0}.cc-stats{grid-area:stats}.cc-perk{grid-area:perk;min-height:0}.cc-pick{grid-area:pick}.er{width:62px}.charname{display:none}}
