*{box-sizing:border-box;margin:0;padding:0}:root{--panel-bg:#141826d1;--panel-border:#ffffff1f;--gold:#ffd166;--accent:#4cc9f0;--danger:#ef476f;--text:#f4f4f8;--text-dim:#a8adc4}html,body{width:100%;height:100%;color:var(--text);-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#111;font-family:Segoe UI,Helvetica Neue,system-ui,sans-serif;overflow:hidden}#app{width:100%;height:100%;position:relative}#game-canvas{display:block;position:absolute;inset:0}#ui-root{pointer-events:none;position:absolute;inset:0}#ui-root button,#ui-root .panel{pointer-events:auto}.hud-top{justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 16px;display:flex;position:absolute;top:0;left:0;right:0}.hud-gold{background:var(--panel-bg);border:1px solid var(--panel-border);text-align:center;border-radius:12px;padding:10px 18px}.hud-gold .amount{color:var(--gold);font-size:26px;font-weight:800;line-height:1.1}.hud-gold .rate,.hud-gold .label{color:var(--text-dim);font-size:12px}.hud-stats{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:12px;flex-direction:column;gap:2px;padding:8px 14px;font-size:13px;display:flex}.hud-stats b{color:var(--accent)}.level-bar{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:12px;align-items:center;gap:10px;padding:6px 10px;display:flex;position:absolute;top:86px;left:50%;transform:translate(-50%)}.level-bar button{width:34px;height:34px;color:var(--text);cursor:pointer;background:#ffffff1f;border:none;border-radius:8px;font-size:17px;font-weight:700}.level-bar button:disabled{opacity:.3;cursor:default}.level-bar .level-info{text-align:center;min-width:150px}.level-bar .world-name{color:var(--text-dim);font-size:13px}.level-bar .level-num{font-size:16px;font-weight:700}.round-pips{justify-content:center;gap:4px;margin-top:3px;display:flex}.round-pips span{background:#ffffff2e;border-radius:50%;width:8px;height:8px}.round-pips span.done{background:var(--gold)}.monster-panel{text-align:center;width:min(360px,84vw);position:absolute;top:165px;left:50%;transform:translate(-50%)}.monster-name{text-shadow:0 2px 6px #0009;margin-bottom:6px;font-size:17px;font-weight:800}.monster-name .shiny-tag{color:#ffe066;animation:1s infinite alternate sparkle}@keyframes sparkle{0%{opacity:.6}to{opacity:1;text-shadow:0 0 12px #ffe066}}.hp-bar{border:1px solid var(--panel-border);background:#00000073;border-radius:9px;height:18px;overflow:hidden}.hp-bar .fill{background:linear-gradient(#7be07b,#3fae3f);border-radius:9px;width:100%;height:100%;transition:width 80ms linear}.hp-bar.boss .fill{background:linear-gradient(#ff7096,#d81b60)}.hp-text{color:var(--text-dim);text-shadow:0 1px 3px #000c;margin-top:3px;font-size:12px}.boss-timer{color:var(--danger);text-shadow:0 2px 8px #000000b3;margin-top:6px;font-size:20px;font-weight:800;display:none}.upgrades-panel{background:var(--panel-bg);border-left:1px solid var(--panel-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-direction:column;width:320px;max-width:88vw;transition:transform .25s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(0)}.upgrades-panel.collapsed{transform:translate(100%)}.upgrades-toggle{border:1px solid var(--panel-border);background:var(--panel-bg);width:44px;height:72px;color:var(--gold);cursor:pointer;border-right:none;border-radius:12px 0 0 12px;font-size:22px;position:absolute;top:50%;left:-44px;transform:translateY(-50%)}.upgrades-header{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);padding:14px 16px 8px;font-size:15px;font-weight:800}.upgrades-list{flex-direction:column;flex:1;gap:8px;padding:0 10px 16px;display:flex;overflow-y:auto}.upgrade-card{text-align:left;border:1px solid var(--panel-border);width:100%;color:var(--text);cursor:pointer;font:inherit;background:#ffffff0f;border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;transition:background .15s;display:flex}.upgrade-card:hover:not(:disabled){background:#ffffff1f}.upgrade-card:disabled{opacity:.45;cursor:default}.upgrade-card .row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.upgrade-card .name{font-size:14px;font-weight:700}.upgrade-card .owned{color:var(--accent);font-size:13px;font-weight:700}.upgrade-card .desc{color:var(--text-dim);font-size:12px}.upgrade-card .cost{color:var(--gold);font-size:13px;font-weight:700}.upgrade-card .value{color:#9be09b;font-size:12px}.damage-number{color:#fff;text-shadow:0 2px 4px #000000b3;pointer-events:none;will-change:transform, opacity;font-size:22px;font-weight:900;position:absolute;transform:translate(-50%,-50%)}.damage-number.crit{color:#ffb703;text-shadow:0 0 14px #f53,0 2px 4px #000c;font-size:34px}.toast{background:var(--panel-bg);border:1px solid var(--panel-border);opacity:0;border-radius:12px;padding:10px 20px;font-size:14px;transition:opacity .3s;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.toast.visible{opacity:1}.modal-backdrop{pointer-events:auto;background:#0000008c;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal{border:1px solid var(--panel-border);text-align:center;background:#1d2233;border-radius:16px;max-width:min(420px,90vw);padding:28px 32px}.modal h2{color:var(--gold);margin-bottom:12px}.modal p{color:var(--text-dim);margin-bottom:18px;line-height:1.5}.modal .gain{color:var(--gold);margin-bottom:18px;font-size:26px;font-weight:900}.modal button{background:var(--gold);color:#222;cursor:pointer;border:none;border-radius:10px;padding:10px 26px;font-size:15px;font-weight:800}.prestige-button{background:var(--panel-bg);border:1px solid var(--panel-border);color:var(--text);font:inherit;cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:10px 16px;font-weight:700;display:flex;position:absolute;bottom:16px;right:16px}.prestige-button .gain{color:var(--text-dim);font-size:12px}.prestige-button.ready{border-color:var(--gold);box-shadow:0 0 18px #ffd16673}.prestige-button.ready .gain{color:var(--gold)}.prestige-modal{max-width:min(520px,92vw);max-height:86vh;overflow-y:auto}.prestige-owned{color:var(--text-dim);margin-bottom:14px;font-size:13px}.perk-list{text-align:left;flex-direction:column;gap:8px;margin-bottom:18px;display:flex}.perk-row{border:1px solid var(--panel-border);background:#ffffff0d;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.perk-name{font-size:14px;font-weight:700}.perk-rank{color:var(--accent);font-size:12px}.perk-desc{color:var(--text-dim);font-size:12px}.perk-buy{color:var(--accent);border:1px solid var(--accent);cursor:pointer;white-space:nowrap;background:#4cc9f02e;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:700}.perk-buy:disabled{opacity:.35;cursor:default}.modal-actions{justify-content:center;gap:10px;display:flex}.modal-actions .cancel{color:var(--text);background:#ffffff1f}.modal button:disabled{opacity:.4;cursor:default}.offline-buyable{color:#9be09b;margin-bottom:16px;font-size:13px}.skills-bar{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:14px;gap:8px;padding:8px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.skill-btn{border:1px solid var(--panel-border);min-width:64px;height:56px;color:var(--text);cursor:pointer;font:inherit;background:#ffffff14;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.skill-btn:disabled{cursor:default;opacity:.55}.skill-icon{font-size:20px}.skill-icon.dim{filter:grayscale();opacity:.5}.skill-cd{color:var(--danger);font-weight:700}.buffs-strip{flex-wrap:wrap;justify-content:center;gap:6px;max-width:90vw;display:flex;position:absolute;top:148px;left:50%;transform:translate(-50%)}.buff-chip{border:1px solid var(--gold);color:var(--gold);background:#ffd1662e;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.buff-chip.bad{border-color:var(--danger);color:var(--danger);background:#ef476f2e}.combo-meter{color:#ffb703;text-shadow:0 2px 8px #000000b3;font-size:18px;font-weight:900;display:none;position:absolute;top:258px;left:50%;transform:translate(-50%)}.combo-meter.visible{display:block}.combo-meter.warm{color:#ff9e00;font-size:21px}.combo-meter.hot{color:#ff6d00;font-size:24px;animation:.25s infinite combo-shake}.combo-meter.blazing{color:#ff2d00;font-size:28px;animation:.12s infinite combo-shake}@keyframes combo-shake{0%,to{transform:translate(-50%)rotate(-1deg)}50%{transform:translate(-50%)rotate(1.5deg)scale(1.05)}}.bonus-spawn{cursor:pointer;z-index:40;filter:drop-shadow(0 0 12px #ffd166e6);pointer-events:auto;background:0 0;border:none;width:64px;height:64px;font-size:44px;animation:2s ease-in-out infinite bonus-float;position:absolute}.bonus-spawn.evil{filter:drop-shadow(0 0 14px #9400d3f2);animation:1.1s ease-in-out infinite bonus-float,.7s infinite alternate evil-pulse}@keyframes bonus-float{0%,to{transform:translateY(0)rotate(-6deg)}50%{transform:translateY(-14px)rotate(6deg)}}@keyframes evil-pulse{0%{filter:drop-shadow(0 0 8px #9400d3b3)}to{filter:drop-shadow(0 0 22px #ff0050)}}.bonus-outcome{z-index:45;text-align:center;border-radius:14px;padding:12px 28px;font-size:26px;font-weight:900;animation:2.6s ease-out forwards outcome-pop;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)}.bonus-outcome.good{color:#ffd166;border:1px solid var(--gold);text-shadow:0 0 16px #ffd166cc;background:#3c2d00bf}.bonus-outcome.bad{color:#ef476f;border:1px solid var(--danger);background:#28000ccc}@keyframes outcome-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}12%{opacity:1;transform:translate(-50%,-50%)scale(1.1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-70%)scale(1)}}.panel-dock{flex-direction:column;gap:6px;display:flex;position:absolute;bottom:16px;left:16px}.dock-btn{background:var(--panel-bg);border:1px solid var(--panel-border);color:var(--text);font:inherit;cursor:pointer;pointer-events:auto;border-radius:10px;align-items:center;gap:8px;padding:7px 12px;font-size:12px;font-weight:700;display:flex}.dock-btn.locked{opacity:.5;cursor:default;color:var(--text-dim)}.panel-modal{text-align:left;max-width:min(620px,94vw);max-height:84vh;overflow-y:auto}.panel-modal h2{text-align:center}.panel-modal h3{color:var(--accent);margin:14px 0 8px;font-size:14px}.dim{color:var(--text-dim);font-size:12px}.loot-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;display:grid}.loot-card{border:1px solid var(--panel-border);background:#ffffff0d;border-radius:10px;padding:10px;font-size:12px}.loot-name{font-size:13px;font-weight:800}.loot-rarity{color:var(--text-dim);margin-bottom:6px}.loot-stat{color:#9be09b}.loot-actions{gap:6px;margin-top:8px;display:flex}.loot-actions button,.pet-card button{color:var(--accent);border:1px solid var(--accent);cursor:pointer;background:#4cc9f026;border-radius:6px;padding:4px 8px;font-size:11px}.beast-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.beast{text-align:center;border:1px solid var(--panel-border);background:#ffffff0d;border-radius:10px;padding:8px;font-size:11px}.beast img{object-fit:contain;width:56px;height:56px}.beast.unknown img{filter:brightness(0);opacity:.6}.beast-name{margin-top:4px;font-weight:700}.beast-kills{color:var(--text-dim)}.shiny-badge{color:#ffe066;font-weight:800}.quest{border:1px solid var(--panel-border);background:#ffffff0d;border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:8px;padding:10px 14px;font-size:14px;display:flex}.quest.done{border-color:#7be07b}.claim-btn{background:var(--gold);color:#222;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:8px;padding:12px;font-size:14px;font-weight:800}.claim-btn:disabled{opacity:.4;cursor:default}.pet-card{border:1px solid var(--panel-border);text-align:center;background:#ffffff0d;border-radius:10px;padding:10px;font-size:12px}.pet-card.active{border-color:var(--gold)}.pet-card img{width:52px;height:52px}.pet-card.unknown img{filter:brightness(0);opacity:.6}.pet-bonus{color:#9be09b;margin:4px 0;font-weight:700}.ach{border:1px solid var(--panel-border);background:#ffffff0d;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;padding:9px 12px;font-size:13px;display:flex}.ach.done{border-color:var(--gold)}.opt-row{justify-content:space-between;align-items:center;gap:10px;padding:10px 0;font-size:14px;display:flex}.opt-row.locked{opacity:.55}.opt-row button{color:var(--text);border:1px solid var(--panel-border);cursor:pointer;font:inherit;background:#ffffff1f;border-radius:8px;padding:8px 14px;font-size:13px}.opt-row button.danger{border-color:var(--danger);color:var(--danger)}.unlock-toast{border:2px solid var(--gold);text-align:center;z-index:60;background:linear-gradient(135deg,#2c2350,#1d2340);border-radius:14px;padding:16px 30px;font-size:17px;font-weight:800;animation:3.5s ease-out forwards outcome-pop;position:absolute;top:20%;left:50%;transform:translate(-50%);box-shadow:0 0 30px #ffd16666}@media (max-width:640px){.panel-dock{flex-flow:wrap;right:90px}.dock-btn span{display:none}.skills-bar{bottom:70px}.upgrades-panel{width:78vw}.hud-gold .amount{font-size:20px}.hud-stats{font-size:11px}.level-bar{top:78px}.monster-panel{top:150px}}
