*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{color:#e8eef2;background:#11161a;font-family:system-ui,-apple-system,Segoe UI,sans-serif}.app{width:100%;height:100%;position:relative}canvas{touch-action:none;display:block}.overlay{pointer-events:none;position:absolute;inset:0}.panel{pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10161bdb;border:1px solid #ffffff1f;border-radius:10px;position:absolute}.hud{gap:22px;padding:12px 18px;display:flex;top:16px;left:16px}.stat{flex-direction:column;gap:2px;display:flex}.stat-label{letter-spacing:.09em;text-transform:uppercase;color:#8fa3b0;font-size:10px}.stat-value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:650}.stat-value.money{color:#ffd85e}.stat-value.lives{color:#ff8172}.picker{grid-template-columns:repeat(3,150px);gap:10px;padding:12px;display:grid;bottom:16px;left:50%;transform:translate(-50%)}.tower-btn{color:#e8eef2;font:inherit;text-align:left;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff24;border-radius:8px;grid-template-columns:14px 1fr auto;grid-template-areas:"sw name cost""sw blurb blurb";align-items:center;gap:2px 8px;padding:10px 12px;transition:background .13s,border-color .13s,transform .13s;display:grid}.tower-btn:hover:not(:disabled){background:#ffffff1a;transform:translateY(-1px)}.tower-btn.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, transparent)}.tower-btn:disabled{opacity:.42;cursor:not-allowed}.swatch{background:var(--accent);border-radius:3px;grid-area:sw;align-self:center;width:12px;height:12px}.tower-name{grid-area:name;font-size:14px;font-weight:620}.tower-cost{color:#ffd85e;font-variant-numeric:tabular-nums;grid-area:cost;font-size:13px;font-weight:650}.tower-cost.broke{color:#ff8172}.tower-blurb{color:#93a5b2;grid-area:blurb;font-size:11px}.picker-hint{text-align:center;color:#7e91a0;grid-column:1/-1;margin:2px 0 0;font-size:11px}.inspector{width:208px;padding:14px 16px;top:16px;right:16px}.inspector-head{align-items:center;gap:8px;margin-bottom:12px;display:flex}.inspector-head .swatch{border-radius:3px;width:12px;height:12px}.inspector-head h2{flex:1;margin:0;font-size:15px;font-weight:650}.close{color:#8fa3b0;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:20px;line-height:1}.close:hover{color:#e8eef2}.stats{grid-template-columns:1fr 1fr;gap:8px 10px;margin:0 0 14px;display:grid}.stats div{flex-direction:column;gap:1px;display:flex}.stats dt{letter-spacing:.07em;text-transform:uppercase;color:#8fa3b0;font-size:10px}.stats dd{font-variant-numeric:tabular-nums;margin:0;font-size:14px;font-weight:600}.sell{color:#ffb4a9;width:100%;font:inherit;cursor:pointer;background:#ff817229;border:1px solid #ff817273;border-radius:7px;padding:9px;font-weight:620;transition:background .13s}.sell:hover{background:#ff817247}.stat-sub{color:#8fa3b0;font-size:13px;font-weight:500}.start-wave{color:#8ff0a4;font:inherit;cursor:pointer;background:#46d95d29;border:1px solid #70e08c80;border-radius:8px;flex-direction:column;align-self:center;gap:1px;padding:9px 16px;font-size:14px;font-weight:650;transition:background .13s,transform .13s;display:flex}.start-wave:hover{background:#46d95d47;transform:translateY(-1px)}.start-sub{letter-spacing:.05em;text-transform:uppercase;color:#6fbe83;font-size:10px;font-weight:500}.endscreen{pointer-events:auto;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080b0eb8;place-items:center;display:grid;position:absolute;inset:0}.end-card{text-align:center;background:#12181ef7;border:1px solid #ffffff24;border-radius:14px;min-width:300px;padding:28px 32px 24px;box-shadow:0 24px 60px #00000080}.end-card.won{border-color:#46d95d80}.end-card.lost{border-color:#ef444480}.end-kicker{letter-spacing:.12em;text-transform:uppercase;color:#8fa3b0;margin:0 0 4px;font-size:11px}.end-card h1{letter-spacing:-.01em;margin:0 0 20px;font-size:30px;font-weight:680}.end-card.won h1{color:#6ee787}.end-card.lost h1{color:#ff8172}.end-stats{grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 22px;display:grid}.end-stats div{flex-direction:column;gap:3px;display:flex}.end-stats dt{letter-spacing:.07em;text-transform:uppercase;color:#8fa3b0;font-size:10px}.end-stats dd{font-variant-numeric:tabular-nums;margin:0;font-size:17px;font-weight:650}.restart{color:#e8eef2;width:100%;font:inherit;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;padding:11px;font-size:15px;font-weight:650;transition:background .13s}.restart:hover{background:#ffffff2e}.level-row{align-items:center;gap:8px;margin-bottom:12px;display:flex}.level-pips{gap:3px;display:flex}.pip{background:#ffffff29;border-radius:2px;width:16px;height:4px}.pip.on{background:#ffd24a}.level-text{letter-spacing:.06em;text-transform:uppercase;color:#8fa3b0;font-size:11px}.delta{color:#6ee787;font-weight:650}.upgrade{color:#8ff0a4;width:100%;font:inherit;cursor:pointer;background:#46d95d29;border:1px solid #6ee78773;border-radius:7px;margin-bottom:8px;padding:10px;font-weight:650;transition:background .13s}.upgrade:hover:not(:disabled){background:#46d95d47}.upgrade:disabled{opacity:.45;cursor:not-allowed;color:#8fa3b0;background:#ffffff0d;border-color:#ffffff24}.invested{text-align:center;letter-spacing:.07em;text-transform:uppercase;color:#7e91a0;margin:0 0 8px;font-size:10px}.targeting{margin-bottom:12px}.targeting-label{letter-spacing:.07em;text-transform:uppercase;color:#8fa3b0;margin-bottom:5px;font-size:10px;display:block}.mode-row{grid-template-columns:repeat(4,1fr);gap:3px;display:grid}.mode{color:#9fb2bf;font:inherit;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:5px;padding:6px 2px;font-size:10px;font-weight:600;transition:background .12s,color .12s,border-color .12s}.mode:hover:not(.active){color:#e8eef2;background:#ffffff1a}.mode.active{color:#8ff0a4;background:#46d95d2e;border-color:#6ee78780}.dmg-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.dmg{will-change:transform, opacity;font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-shadow:0 1px 3px #000000d9,0 0 8px #00000080;margin:-9px 0 0 -8px;font-size:15px;font-weight:750;position:absolute;top:0;left:0;transform:translate(-999px,-999px)}.fxtoggle{color:#8fa3b0;font:inherit;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff24;border-radius:6px;align-self:center;padding:6px 10px;font-size:10px;font-weight:650}.fxtoggle.on{color:#ffd24a;background:#ffd24a29;border-color:#ffd24a80}.bossbar{pointer-events:none;width:min(520px,52vw);transition:opacity .25s;position:absolute;top:104px;left:50%;transform:translate(-50%)}.boss-head{justify-content:space-between;align-items:baseline;margin-bottom:5px;padding:0 2px;display:flex}.boss-name{letter-spacing:.16em;text-transform:uppercase;color:#e9a8ff;text-shadow:0 0 12px #b537e899;font-size:12px;font-weight:750}.boss-hp{font-variant-numeric:tabular-nums;color:#c6b2d4;font-size:11px;font-weight:650}.boss-track{background:#0a060ed9;border:1px solid #e9a8ff59;border-radius:7px;height:12px;overflow:hidden;box-shadow:0 0 22px #b537e84d}.boss-fill{background:linear-gradient(90deg,#7b1fa8,#b537e8 55%,#e9a8ff);width:100%;height:100%;transition:width .12s linear}.abilities{gap:8px;padding:10px;display:flex;bottom:16px;right:16px}.ability{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent);color:#e8eef2;min-width:108px;font:inherit;text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;padding:9px 12px;transition:background .13s,transform .13s;display:flex;position:relative;overflow:hidden}.ability:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 26%, transparent);transform:translateY(-1px)}.ability.armed{box-shadow:0 0 0 2px var(--accent)}.ability:disabled{cursor:not-allowed;color:#8fa3b0;background:#ffffff0a;border-color:#ffffff24}.ability-sweep{width:var(--pct);pointer-events:none;background:#ffffff17;position:absolute;inset:0}.ability-name{font-size:13px;font-weight:680;position:relative}.ability-sub{letter-spacing:.05em;text-transform:uppercase;color:#93a5b2;font-size:10px;position:relative}.ability.cooling .ability-sub{font-variant-numeric:tabular-nums}
