.controls{background:0 0;border:none;flex-wrap:nowrap;flex:none;align-items:center;gap:.5rem;height:2.2rem;padding:0;display:flex}.controls__group{flex-wrap:nowrap;gap:.5rem;display:flex}.controls__button{box-sizing:border-box;border-radius:var(--radius);background:var(--c-surface-raised);min-width:2.6rem;height:2.2rem;color:var(--c-text-dim);letter-spacing:.01em;white-space:nowrap;border:1px solid #0000;flex:none;padding:0 .62rem;font-size:.7rem;font-weight:600;transition:background .12s,color .12s,border-color .12s}.controls__button:hover{background:color-mix(in srgb, var(--c-surface-raised) 70%, var(--c-accent) 30%);color:var(--c-text)}.controls__button:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.controls__button.is-active{border-color:color-mix(in srgb, var(--c-accent) 60%, transparent);background:color-mix(in srgb, var(--c-accent) 22%, var(--c-surface-raised));color:var(--c-text)}.controls__button--primary{min-width:4.6rem;color:var(--c-text)}.panel{border:1px solid var(--c-border);border-radius:calc(var(--radius) + 2px);background:color-mix(in srgb, var(--c-surface) 90%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 24px #00000059}.panel__title{letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-dim);font-size:.62rem;font-weight:700}.shop{flex-wrap:nowrap;flex:auto;gap:.3rem;min-width:0;max-width:54rem;padding:.3rem;display:flex}.shop__card{border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface-raised);text-align:left;flex:9.6rem;grid-template-rows:auto auto;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.08rem .32rem;min-width:0;padding:.38rem .36rem;transition:border-color .12s,background .12s;display:grid;overflow:hidden}.shop__card:hover:not(:disabled){border-color:color-mix(in srgb, var(--c-accent) 55%, transparent)}.shop__card:disabled{opacity:.42;cursor:not-allowed}.shop__card.is-active{border-color:var(--c-accent);background:color-mix(in srgb, var(--c-accent) 18%, var(--c-surface-raised))}.shop__swatch{border-radius:4px;grid-row:1/-1;align-self:center;width:.95rem;height:.95rem}.shop__label,.shop__role{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.shop__label{font-size:.72rem;font-weight:600}.shop__hotkey{border:1px solid var(--c-border);font-family:var(--font-mono);color:var(--c-text-dim);border-radius:3px;padding:0 .22rem;font-size:.58rem}.shop__role{color:var(--c-text-dim);font-size:.58rem}.shop__cost{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--c-gold);font-size:.68rem;font-weight:700}.tower-panel{width:16rem;padding:.7rem .8rem}.tower-panel__header{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.tower-panel__swatch{border-radius:3px;width:.9rem;height:.9rem}.tower-panel__name{font-size:.85rem;font-weight:700}.tower-panel__level{font-family:var(--font-mono);color:var(--c-text-dim);margin-left:auto;font-size:.65rem}.tower-panel__blurb,.tower-panel__tip{color:var(--c-text-dim);margin:0 0 .35rem;font-size:.68rem;line-height:1.4}.tower-panel__tip{color:var(--c-text);margin-bottom:.55rem}.tower-panel__stats{font-family:var(--font-mono);grid-template-columns:1fr 1fr;gap:1px .6rem;margin:0 0 .6rem;font-size:.68rem;display:grid}.tower-panel__stat{justify-content:space-between;gap:.3rem;display:flex}.tower-panel__stat dt{color:var(--c-text-dim)}.tower-panel__stat dd{margin:0}.tower-panel__actions{flex-wrap:wrap;gap:.4rem;display:flex}.action{border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface-raised);color:var(--c-text);flex:1;padding:.42rem .6rem;font-size:.72rem;font-weight:600;transition:background .12s,border-color .12s}.action:hover:not(:disabled){border-color:color-mix(in srgb, var(--c-accent) 60%, transparent)}.action:disabled{opacity:.4;cursor:not-allowed}.action--primary{border-color:color-mix(in srgb, var(--c-good) 45%, transparent);background:color-mix(in srgb, var(--c-good) 22%, var(--c-surface-raised))}.action--danger{border-color:color-mix(in srgb, var(--c-health) 40%, transparent);color:color-mix(in srgb, var(--c-health) 80%, var(--c-text))}.action__cost{font-family:var(--font-mono);color:var(--c-gold);margin-left:.3rem}.stress{width:17.5rem;padding:.65rem .75rem}.stress__note{color:var(--c-text-dim);margin:.35rem 0 .5rem;font-size:.62rem;line-height:1.45}.stress__buttons{flex-direction:column;gap:.3rem;display:flex}.stress__preset{justify-content:space-between;align-items:baseline;gap:.5rem;width:100%;display:flex}.stress__preset-detail{font-family:var(--font-mono);color:var(--c-text-dim);font-size:.62rem;font-weight:400}.engine{width:17.5rem;padding:.65rem .75rem}.engine__options{gap:.3rem;margin-top:.35rem;display:flex}.engine__option{text-align:left;flex-direction:column;gap:.15rem;display:flex}.engine__option.is-active{border-color:var(--c-accent);background:color-mix(in srgb, var(--c-accent) 18%, var(--c-surface-raised))}.engine__detail{color:var(--c-text-dim);font-size:.55rem;font-weight:400;line-height:1.3}.engine__note{color:var(--c-text-dim);margin:.45rem 0 0;font-size:.6rem;line-height:1.4}.modal-backdrop{z-index:30;background:color-mix(in srgb, var(--c-bg) 72%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal{text-align:center;width:22rem;padding:1.6rem}.modal__eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--c-text-dim);margin:0;font-size:.65rem;font-weight:700}.modal__title{letter-spacing:-.01em;margin:.3rem 0 1rem;font-size:2rem;font-weight:700}.modal__title--victory{color:var(--c-good)}.modal__title--defeat{color:var(--c-health)}.modal__stats{grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1.3rem;display:grid}.modal__stat{border:1px solid var(--c-border);border-radius:var(--radius);padding:.5rem}.modal__stat-value{font-family:var(--font-mono);font-size:1.25rem;font-weight:700;display:block}.modal__stat-label{letter-spacing:.14em;text-transform:uppercase;color:var(--c-text-dim);font-size:.6rem}.modal__best{letter-spacing:.14em;text-transform:uppercase;color:var(--c-gold);margin:0 0 .9rem;font-size:.7rem;font-weight:700}.hud{border-bottom:1px solid var(--c-border);background:linear-gradient(to bottom, color-mix(in srgb, var(--c-surface) 94%, transparent), color-mix(in srgb, var(--c-bg) 70%, transparent));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);align-items:center;gap:.85rem;width:100%;min-width:0;padding:.4rem .9rem;display:flex;overflow:hidden}.hud__group{align-items:center;gap:1.1rem;display:flex}.hud__group--stats{flex-wrap:wrap;flex:1;min-width:0}.hud__brand{letter-spacing:.04em;color:var(--c-accent);font-size:.95rem;font-weight:700}.hud__stat{grid-template-columns:auto auto;align-items:baseline;gap:0 .4rem;min-width:5.5rem;display:grid}.hud__label{letter-spacing:.14em;text-transform:uppercase;color:var(--c-text-dim);font-size:.6rem;font-weight:700}.hud__value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:700;line-height:1.1}.hud__value em{color:var(--c-text-dim);font-size:.7rem;font-style:normal}.hud__sub{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--c-text-dim);grid-column:1/-1;font-size:.58rem}.hud__stat--gold .hud__value{color:var(--c-gold)}.hud__stat--marked .hud__label{color:var(--c-warn)}.hud__stat--critical .hud__value{color:var(--c-health)}.hud__bar{background:#ffffff17;border-radius:2px;grid-column:1/-1;height:3px;margin-top:2px;overflow:hidden}.hud__bar-fill{background:var(--c-accent);transform-origin:0;border-radius:2px;height:100%;transition:scale .18s ease-out}.hud__bar-fill--health{background:var(--c-health)}.hud__counters{gap:.85rem}.hud__counter{flex-direction:column;align-items:flex-end;line-height:1.15;display:flex}.hud__counter-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.85rem}.hud__counter-label{letter-spacing:.12em;text-transform:uppercase;color:var(--c-text-dim);font-size:.56rem}.perf{border:1px solid var(--c-border);border-radius:calc(var(--radius) + 2px);background:color-mix(in srgb, var(--c-surface) 90%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:17.5rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:.65rem .75rem .55rem;font-size:.7rem}.perf__header{justify-content:space-between;align-items:center;margin-bottom:.4rem;display:flex}.perf__title{font-family:var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-dim);font-size:.65rem;font-weight:700}.perf__reset{border:1px solid var(--c-border);color:var(--c-text-dim);font-family:var(--font-ui);background:0 0;border-radius:5px;padding:.1rem .35rem;font-size:.6rem}.perf__reset:hover{border-color:var(--c-accent);color:var(--c-accent)}.perf__fps{align-items:baseline;gap:.35rem;display:flex}.perf__fps strong{color:var(--c-accent);font-size:1.6rem;font-weight:700;line-height:1}.perf__fps span{color:var(--c-text-dim);font-size:.65rem}.perf__fps em{color:var(--c-text-dim);margin-left:auto;font-style:normal}.perf__graph{background:#00000059;border-radius:4px;width:100%;height:46px;margin:.45rem 0;display:block}.perf__stats{grid-template-columns:1fr 1fr;gap:1px .7rem;margin:0;font-size:.66rem;display:grid}.perf__stat{white-space:nowrap;justify-content:space-between;align-items:baseline;gap:.3rem;display:flex}.perf__stat dt{color:var(--c-text-dim)}.perf__stat dd{color:var(--c-text);margin:0}.perf__stat--bad dd{color:var(--c-health);font-weight:700}.perf__window{border-top:1px solid var(--c-border);color:var(--c-text-dim);margin-top:.45rem;padding-top:.35rem;font-size:.62rem}.perf__stalls{color:var(--c-warn)}.start{z-index:40;background:radial-gradient(circle at 18% 12%, color-mix(in srgb, var(--c-accent) 22%, transparent), transparent 42%), radial-gradient(circle at 82% 88%, color-mix(in srgb, var(--c-gold) 12%, transparent), transparent 46%), color-mix(in srgb, var(--c-bg) 78%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);place-items:center;padding:1rem;display:grid;position:absolute;inset:0;overflow:auto}.start__panel{border:1px solid color-mix(in srgb, var(--c-accent) 28%, var(--c-border));background:linear-gradient(180deg, color-mix(in srgb, var(--c-surface) 96%, var(--c-accent) 4%), color-mix(in srgb, var(--c-surface) 94%, transparent));border-radius:16px;width:min(58rem,100%);padding:1.4rem 1.6rem 1.15rem;box-shadow:inset 0 0 0 1px #ffffff0a,0 1.8rem 5rem #0000008c}.start__hero{margin-bottom:.95rem}.start__eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--c-accent);margin:0;font-size:.65rem;font-weight:700}.start__title{letter-spacing:-.03em;margin:.15rem 0 .45rem;font-size:2.55rem;line-height:1}.start__lede{max-width:68ch;color:var(--c-text-dim);margin:0;font-size:.86rem;line-height:1.5}.start__steps{gap:.4rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.start__steps li{color:var(--c-text-dim);grid-template-columns:1.4rem 1fr;align-items:start;gap:.55rem;font-size:.78rem;line-height:1.45;display:grid}.start__step-n{background:color-mix(in srgb, var(--c-accent) 22%, transparent);width:1.35rem;height:1.35rem;color:var(--c-accent);border-radius:999px;place-items:center;font-size:.68rem;font-weight:700;display:grid}.start__columns{grid-template-columns:repeat(auto-fit,minmax(16.5rem,1fr));gap:1rem;margin-bottom:1.1rem;display:grid}.start__subtitle{letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-dim);margin:0 0 .55rem;font-size:.62rem;font-weight:700}.start__cards{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.start__card{border:1px solid var(--c-border);background:color-mix(in srgb, var(--c-surface-raised) 70%, transparent);border-radius:10px;grid-template-columns:.7rem minmax(0,1fr);gap:.55rem;padding:.5rem .6rem;display:grid;overflow:hidden}.start__card strong{justify-content:space-between;align-items:baseline;gap:.4rem;font-size:.8rem;display:flex}.start__card strong em{font-family:var(--font-mono);color:var(--c-text-dim);font-size:.62rem;font-style:normal}.start__card p{color:var(--c-text-dim);overflow-wrap:anywhere;margin:.18rem 0 0;font-size:.7rem;line-height:1.4}.start__tip{opacity:.88;color:var(--c-text)!important}.start__swatch{border-radius:99px;width:.7rem;min-height:100%}.start__footer{border-top:1px solid var(--c-border);flex-wrap:wrap;align-items:center;gap:.9rem;padding-top:.95rem;display:flex}.start__play{flex:none;padding:.7rem 2.3rem;font-size:.95rem}.start__best{font-family:var(--font-mono);color:var(--c-gold);font-weight:700}.start__hint{color:var(--c-text-dim);margin-left:auto;font-size:.65rem}.start kbd{border:1px solid var(--c-border);background:color-mix(in srgb, var(--c-text) 8%, transparent);font-family:var(--font-mono);border-radius:3px;padding:0 .25rem;font-size:.62rem}.game{background:var(--c-bg);width:100%;height:100%;position:relative;overflow:hidden}.game__canvas{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.game__canvas--gl{z-index:0}.game__canvas--overlay{z-index:1}.game__top,.game__side,.game__inspector,.game__bottom,.game__mode-badge,.game__banner,.game__paused{z-index:10}.game__top{position:absolute;top:0;left:0;right:0}.game__side{flex-direction:column;align-items:flex-end;gap:.6rem;display:flex;position:absolute;top:4.2rem;right:.85rem}.game__inspector{position:absolute;top:4.2rem;left:.85rem}.game__bottom{pointer-events:none;flex-wrap:nowrap;justify-content:space-between;align-items:stretch;gap:.55rem;display:flex;position:absolute;bottom:.7rem;left:.7rem;right:.7rem}.game__bottom>*{pointer-events:auto}.game__bottom-right{border:1px solid var(--c-border);border-radius:calc(var(--radius) + 2px);background:color-mix(in srgb, var(--c-surface) 90%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-wrap:nowrap;flex:none;align-items:center;gap:.5rem;padding:.35rem;display:flex}.game__bottom .action{flex:none}.game__start,.game__stress-toggle{box-sizing:border-box;font-variant-numeric:tabular-nums;white-space:nowrap;height:2.2rem;padding:0 .62rem;font-size:.7rem}.game__start{width:7.6rem}.game__stress-toggle{min-width:4.2rem;color:var(--c-text-dim)}.game__stress-toggle.is-active{border-color:color-mix(in srgb, var(--c-warn) 60%, transparent);background:color-mix(in srgb, var(--c-warn) 20%, var(--c-surface-raised));color:var(--c-text)}.game__mode-badge{border:1px solid color-mix(in srgb, var(--c-warn) 55%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--c-warn) 18%, var(--c-surface));letter-spacing:.14em;text-transform:uppercase;pointer-events:none;padding:.3rem .8rem;font-size:.66rem;font-weight:700;position:absolute;top:4.2rem;left:50%;transform:translate(-50%)}.game__banner{letter-spacing:.06em;text-transform:uppercase;color:var(--c-text);text-shadow:0 0 1.6rem #000000d9;pointer-events:none;font-size:2.4rem;font-weight:800;animation:1.7s ease-out forwards banner-sweep;position:absolute;top:32%;left:50%}@keyframes banner-sweep{0%{opacity:0;transform:translate(-50%,.6rem)scale(.94)}18%{opacity:1;transform:translate(-50%)scale(1)}72%{opacity:1}to{opacity:0;transform:translate(-50%,-.8rem)scale(1.02)}}.game__paused{border:1px solid var(--c-border);border-radius:var(--radius);background:color-mix(in srgb, var(--c-surface) 80%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.22em;text-transform:uppercase;color:var(--c-text-dim);pointer-events:none;padding:.5rem 1.4rem;font-size:.9rem;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:root{--c-bg:#0b0f17;--c-surface:#121927;--c-surface-raised:#1a2334;--c-border:#263449;--c-text:#e6ecf5;--c-text-dim:#8fa0b8;--c-accent:#4cc9f0;--c-gold:#ffc94d;--c-health:#ff5d5d;--c-good:#5ddf8f;--c-warn:#ffa94d;--radius:8px;--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"SF Mono", ui-monospace, "JetBrains Mono", Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font-ui);font-synthesis-weight:none;-webkit-font-smoothing:antialiased;overflow:hidden}canvas{display:block}button{font:inherit;color:inherit;cursor:pointer}
