.game-towerdefense{--td-accent: #6ee7a0;--td-accent-soft: rgba(110, 231, 160, .14);--td-accent-line: rgba(110, 231, 160, .45);--td-surface: rgba(18, 22, 20, .82);--td-surface-raised: rgba(255, 255, 255, .06);--td-surface-hover: rgba(255, 255, 255, .1);--td-border: rgba(255, 255, 255, .12);--td-border-strong: rgba(255, 255, 255, .22);--td-text: #eef3ee;--td-text-dim: #9fada4;--td-danger: #f0736a;--td-warning: #f0b453;--td-info: #6fc7e8;--td-success: #6ee7a0;--td-shadow: 0 .75rem 2rem rgba(0, 0, 0, .35);display:flex;flex-direction:column;gap:.75rem;color:var(--td-text);font-size:var(--fs-body)}.game-towerdefense .td-breadcrumb{padding:.25rem 0 0}.game-towerdefense .td-breadcrumb .breadcrumb-item,.game-towerdefense .td-breadcrumb .breadcrumb-item a{color:var(--td-text-dim);text-decoration:none;font-size:var(--fs-sm)}.game-towerdefense .td-breadcrumb .breadcrumb-item a:hover{color:var(--td-accent)}.game-towerdefense .td-breadcrumb .breadcrumb-item.active{color:var(--td-text)}.game-towerdefense .td-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;padding:.875rem 1.125rem;background:var(--td-surface);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border:.0625rem solid var(--td-border);border-radius:var(--radius-lg)}.game-towerdefense .td-title h1{margin:0;font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.01em;color:var(--td-text)}.game-towerdefense .td-title p{margin:.125rem 0 0;font-size:var(--fs-sm);color:var(--td-text-dim)}.game-towerdefense .td-stats{display:flex;flex-wrap:wrap;gap:.5rem;margin:0}.game-towerdefense .td-stat{min-width:5.5rem;padding:.4rem .7rem;background:var(--td-surface-raised);border:.0625rem solid var(--td-border);border-radius:var(--radius-md)}.game-towerdefense .td-stat dt{display:flex;align-items:center;gap:.25rem;font-size:var(--fs-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--td-text-dim)}.game-towerdefense .td-stat dd{margin:.125rem 0 0;font-size:var(--fs-lg);font-weight:700;font-variant-numeric:tabular-nums;color:var(--td-accent)}.game-towerdefense #tdLives.is-critical{color:var(--td-danger)}.game-towerdefense .td-layout{display:grid;grid-template-columns:minmax(0,1fr) 21.5rem;gap:.75rem;align-items:start}.game-towerdefense .td-viewport{position:relative;height:clamp(24rem,64vh,46rem);background:#2c3a44;border:.0625rem solid var(--td-border);border-radius:var(--radius-lg);overflow:hidden}.game-towerdefense #tdCanvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.game-towerdefense #tdCanvas:active{cursor:grabbing}.game-towerdefense .td-hint{position:absolute;top:.75rem;left:50%;transform:translate(-50%);margin:0;max-width:min(90%,28rem);padding:.4rem .8rem;font-size:var(--fs-sm);text-align:center;background:#0a0e0cc7;backdrop-filter:blur(.5rem);-webkit-backdrop-filter:blur(.5rem);border:.0625rem solid var(--td-accent-line);border-radius:var(--radius-full);pointer-events:none}.game-towerdefense .td-perf{position:absolute;top:.75rem;right:.75rem;display:flex;gap:.35rem;padding:.2rem .55rem;font-size:var(--fs-2xs);font-variant-numeric:tabular-nums;color:var(--td-text-dim);background:#0a0e0c99;border:.0625rem solid var(--td-border);border-radius:var(--radius-sm);pointer-events:none}.game-towerdefense .td-perf-sep{opacity:.5}.game-towerdefense .td-controls{position:absolute;bottom:.875rem;left:50%;transform:translate(-50%);display:flex;gap:.4rem;padding:.4rem;background:#0a0e0cc7;backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border:.0625rem solid var(--td-border);border-radius:var(--radius-2xl);box-shadow:var(--td-shadow);max-width:calc(100% - 1.5rem)}.game-towerdefense .td-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.5rem;padding:0 .9rem;font-family:inherit;font-size:var(--fs-body-sm);font-weight:600;white-space:nowrap;color:var(--td-text);background:var(--td-surface-raised);border:.0625rem solid var(--td-border);border-radius:var(--radius-lg);cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}.game-towerdefense .td-btn i{font-size:1.05rem;line-height:1}.game-towerdefense .td-btn:hover:not(:disabled){background:var(--td-surface-hover);border-color:var(--td-border-strong)}.game-towerdefense .td-btn:focus-visible{outline:.125rem solid var(--td-accent);outline-offset:.125rem}.game-towerdefense .td-btn:disabled{opacity:.45;cursor:not-allowed}.game-towerdefense .td-btn-primary{color:#0d1512;background:var(--td-accent);border-color:var(--td-accent)}.game-towerdefense .td-btn-primary:hover:not(:disabled){background:#86efb2;border-color:#86efb2}.game-towerdefense .td-btn-success{color:var(--td-success);border-color:var(--td-accent-line);background:var(--td-accent-soft)}.game-towerdefense .td-btn-danger{color:var(--td-danger);border-color:#f0736a66;background:#f0736a1f}.game-towerdefense .td-flash{position:absolute;inset:0;pointer-events:none;opacity:0;box-shadow:inset 0 0 6rem 1.5rem #f03c32a6}.game-towerdefense .td-flash.is-active{animation:td-flash .55s ease-out}@keyframes td-flash{0%{opacity:1}to{opacity:0}}.game-towerdefense .td-overlay,.game-towerdefense .td-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#080c0ab8;backdrop-filter:blur(.5rem);-webkit-backdrop-filter:blur(.5rem);z-index:5}.game-towerdefense .td-overlay[hidden],.game-towerdefense .td-loading[hidden]{display:none}.game-towerdefense .td-loading{transition:opacity .4s ease}.game-towerdefense .td-loading.is-hidden{opacity:0;pointer-events:none}.game-towerdefense .td-overlay-card,.game-towerdefense .td-loading-card{width:min(100%,24rem);padding:1.5rem;text-align:center;background:var(--td-surface);border:.0625rem solid var(--td-border);border-radius:var(--radius-xl);box-shadow:var(--td-shadow)}.game-towerdefense .td-overlay-card h2,.game-towerdefense .td-loading-card h2{margin:0 0 .75rem;font-size:var(--fs-xl);font-weight:700}.game-towerdefense .td-overlay-card p,.game-towerdefense .td-loading-card p{margin:0;font-size:var(--fs-body-sm);color:var(--td-text-dim)}.game-towerdefense .td-loading-error{color:var(--td-danger);word-break:break-word}.game-towerdefense .td-loading-track{height:.5rem;margin-bottom:.75rem;background:#0006;border-radius:var(--radius-full);overflow:hidden}.game-towerdefense .td-loading-bar{width:0;height:100%;background:var(--td-accent);border-radius:var(--radius-full);transition:width .3s ease}.game-towerdefense .td-final-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin:1rem 0 0}.game-towerdefense .td-final-stats>div{padding:.5rem;background:var(--td-surface-raised);border:.0625rem solid var(--td-border);border-radius:var(--radius-md)}.game-towerdefense .td-final-stats dt{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.05em;color:var(--td-text-dim)}.game-towerdefense .td-final-stats dd{margin:.125rem 0 0;font-size:var(--fs-lg);font-weight:700;font-variant-numeric:tabular-nums;color:var(--td-accent)}.game-towerdefense .td-overlay-actions{display:flex;justify-content:center;gap:.5rem;margin-top:1.25rem}.game-towerdefense .td-panel{display:flex;flex-direction:column;gap:.625rem;max-height:clamp(24rem,64vh,46rem);padding-right:.25rem;overflow-y:auto;overscroll-behavior:contain}.game-towerdefense .td-section{flex:0 0 auto;padding:.75rem;background:var(--td-surface);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border:.0625rem solid var(--td-border);border-radius:var(--radius-lg)}.game-towerdefense .td-section-title{display:flex;align-items:center;gap:.4rem;margin:0 0 .625rem;font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--td-text-dim)}.game-towerdefense .td-section-title i{font-size:1rem;color:var(--td-accent)}.game-towerdefense .td-tower-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.game-towerdefense .td-tower-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.6rem .4rem .45rem;font-family:inherit;text-align:center;color:var(--td-text);background:var(--td-surface-raised);border:.0625rem solid var(--td-border);border-radius:var(--radius-md);cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .18s ease}.game-towerdefense .td-tower-card:hover:not(.is-unaffordable){background:var(--td-surface-hover);border-color:var(--td-border-strong);transform:translateY(-.0625rem)}.game-towerdefense .td-tower-card:focus-visible{outline:.125rem solid var(--td-accent);outline-offset:.125rem}.game-towerdefense .td-tower-card.is-selected{background:var(--td-accent-soft);border-color:var(--td-accent)}.game-towerdefense .td-tower-card.is-unaffordable{opacity:.5}.game-towerdefense .td-hotkey{position:absolute;top:.3rem;left:.35rem;min-width:.95rem;padding:0 .2rem;font-size:var(--fs-2xs);font-weight:700;line-height:1.15;color:var(--td-text-dim);background:#00000059;border-radius:var(--radius-xs)}.game-towerdefense .td-card-icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-full);border:.0625rem solid var(--td-border)}.game-towerdefense .td-card-icon i{font-size:1.2rem}.game-towerdefense .td-icon-machinegun{background:#6f8f5a38;color:#b6d49a}.game-towerdefense .td-icon-flamethrower{background:#b0603a38;color:#f0a878}.game-towerdefense .td-icon-sniper{background:#4a6a523d;color:#a6d4b4}.game-towerdefense .td-icon-mortar{background:#8a8a5838;color:#dcd897}.game-towerdefense .td-icon-gatling{background:#5f6f8f3d;color:#a8bde0}.game-towerdefense .td-icon-rocket{background:#8a5a8a38;color:#dda8dd}.game-towerdefense .td-card-body{display:flex;flex-direction:column;gap:.05rem}.game-towerdefense .td-card-name{font-size:var(--fs-sm);font-weight:700;line-height:1.15}.game-towerdefense .td-card-cost{font-size:var(--fs-body-sm);font-weight:700;font-variant-numeric:tabular-nums;color:var(--td-accent)}.game-towerdefense .td-card-blurb{font-size:var(--fs-2xs);color:var(--td-text-dim)}.game-towerdefense .td-card-stats{display:flex;gap:.4rem;padding-top:.35rem;width:100%;justify-content:center;border-top:.0625rem solid var(--td-border);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums;color:var(--td-text-dim)}.game-towerdefense .td-card-stats>span{display:inline-flex;align-items:center;gap:.15rem}.game-towerdefense .td-card-stats i{font-size:.75rem;opacity:.75}.game-towerdefense .td-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.game-towerdefense .td-panel-name{font-size:var(--fs-body-lg);font-weight:700}.game-towerdefense .td-level-pill{padding:.1rem .45rem;font-size:var(--fs-2xs);font-weight:600;color:var(--td-accent);background:var(--td-accent-soft);border:.0625rem solid var(--td-accent-line);border-radius:var(--radius-full);white-space:nowrap}.game-towerdefense .td-stat-rows{margin:0;display:flex;flex-direction:column;gap:.15rem}.game-towerdefense .td-stat-row{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;padding:.2rem .35rem;border-radius:var(--radius-xs);background:#00000029}.game-towerdefense .td-stat-row dt{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.05em;color:var(--td-text-dim)}.game-towerdefense .td-stat-row dd{margin:0;font-size:var(--fs-body-sm);font-weight:600;font-variant-numeric:tabular-nums}.game-towerdefense .td-stat-next{margin-left:.35rem;font-size:var(--fs-2xs);font-weight:600;color:var(--td-accent)}.game-towerdefense .td-kill-summary{display:flex;justify-content:space-between;gap:.5rem;margin-top:.5rem;font-size:var(--fs-2xs);color:var(--td-text-dim)}.game-towerdefense .td-panel-actions{display:flex;gap:.4rem;margin-top:.625rem}.game-towerdefense .td-panel-actions .td-btn{flex:1;min-width:0;padding:0 .5rem;font-size:var(--fs-xs)}.game-towerdefense .td-preview{display:flex;flex-wrap:wrap;gap:.3rem;min-height:1.75rem}.game-towerdefense .td-preview-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .45rem;font-size:var(--fs-2xs);font-weight:500;border-radius:var(--radius-full);border:.0625rem solid var(--td-border);background:#0003}.game-towerdefense .td-chip-count{font-weight:700;font-variant-numeric:tabular-nums}.game-towerdefense .td-enemy-walker{color:#a8c98a;border-color:#7ba05b80}.game-towerdefense .td-enemy-runner{color:#ecd88a;border-color:#e0c04a80}.game-towerdefense .td-enemy-brute{color:#e0a077;border-color:#c0603080}.game-towerdefense .td-enemy-crawler{color:#8fd4e0;border-color:#50b0c080}.game-towerdefense .td-enemy-boss{color:#f08a8a;border-color:#c020208c}.game-towerdefense .td-preview-empty{font-size:var(--fs-2xs);color:var(--td-text-dim)}.game-towerdefense .td-progress{height:.3rem;margin:.625rem 0 .35rem;background:#00000059;border-radius:var(--radius-full);overflow:hidden}.game-towerdefense .td-progress-bar{width:0;height:100%;background:var(--td-accent);border-radius:var(--radius-full);transition:width .25s ease}.game-towerdefense .td-remaining{margin:0;font-size:var(--fs-2xs);color:var(--td-text-dim);font-variant-numeric:tabular-nums}.game-towerdefense .td-toggle{display:flex;align-items:center;gap:.4rem;margin:.625rem 0 0;font-size:var(--fs-xs);color:var(--td-text-dim);cursor:pointer}.game-towerdefense .td-toggle input{width:1rem;height:1rem;accent-color:var(--td-accent);cursor:pointer}.game-towerdefense .td-section-grow{flex:1 0 auto}.game-towerdefense .td-log{display:flex;flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;max-height:9rem;overflow-y:auto}.game-towerdefense .td-msg{display:flex;align-items:flex-start;gap:.4rem;padding:.3rem .45rem;font-size:var(--fs-2xs);line-height:1.35;border-left:.15rem solid var(--td-border);border-radius:var(--radius-xs);background:#0003;animation:td-slide-in .28s ease}.game-towerdefense .td-msg i{font-size:.85rem;line-height:1.35}.game-towerdefense .td-msg-info{border-left-color:var(--td-info);color:var(--td-text)}.game-towerdefense .td-msg-info i{color:var(--td-info)}.game-towerdefense .td-msg-success{border-left-color:var(--td-success)}.game-towerdefense .td-msg-success i{color:var(--td-success)}.game-towerdefense .td-msg-warning{border-left-color:var(--td-warning)}.game-towerdefense .td-msg-warning i{color:var(--td-warning)}.game-towerdefense .td-msg-error{border-left-color:var(--td-danger)}.game-towerdefense .td-msg-error i{color:var(--td-danger)}@keyframes td-slide-in{0%{opacity:0;transform:translateY(-.3rem)}to{opacity:1;transform:translateY(0)}}.game-towerdefense .td-keys ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.2rem;font-size:var(--fs-2xs);color:var(--td-text-dim)}.game-towerdefense .td-keys kbd{display:inline-block;min-width:1.1rem;padding:0 .25rem;font-family:inherit;font-size:var(--fs-2xs);font-weight:600;text-align:center;color:var(--td-text);background:#ffffff1a;border:.0625rem solid var(--td-border);border-radius:var(--radius-xs);box-shadow:none}.game-towerdefense .td-panel::-webkit-scrollbar,.game-towerdefense .td-log::-webkit-scrollbar{width:.35rem}.game-towerdefense .td-panel::-webkit-scrollbar-thumb,.game-towerdefense .td-log::-webkit-scrollbar-thumb{background:var(--td-border-strong);border-radius:var(--radius-full)}.game-towerdefense .td-panel,.game-towerdefense .td-log{scrollbar-width:thin;scrollbar-color:var(--td-border-strong) transparent}@media(max-width:75rem){.game-towerdefense .td-layout{grid-template-columns:minmax(0,1fr) 18rem}}@media(max-width:62rem){.game-towerdefense .td-layout{grid-template-columns:minmax(0,1fr)}.game-towerdefense .td-viewport{height:clamp(20rem,52vh,32rem)}.game-towerdefense .td-panel{max-height:none;overflow:visible;padding-right:0}.game-towerdefense .td-tower-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.game-towerdefense .td-log{max-height:7rem}}@media(max-width:48rem){.game-towerdefense .td-header{align-items:stretch;flex-direction:column;gap:.75rem;padding:.75rem}.game-towerdefense .td-title h1{font-size:var(--fs-xl)}.game-towerdefense .td-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.game-towerdefense .td-stat{min-width:0;padding:.35rem .4rem}.game-towerdefense .td-stat dd{font-size:var(--fs-body-lg)}.game-towerdefense .td-controls{bottom:.5rem;gap:.3rem}.game-towerdefense #tdPause .td-btn-label{display:none}.game-towerdefense #tdPause,.game-towerdefense #tdSpeed{padding:0 .7rem}.game-towerdefense .td-tower-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-towerdefense .td-card-stats{gap:.3rem}}@media(max-width:30rem){.game-towerdefense .td-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.game-towerdefense .td-viewport{height:clamp(17rem,46vh,24rem)}.game-towerdefense .td-btn{min-height:2.75rem}}@media(prefers-reduced-motion:reduce){.game-towerdefense .td-msg,.game-towerdefense .td-flash.is-active{animation:none}.game-towerdefense .td-btn,.game-towerdefense .td-tower-card,.game-towerdefense .td-progress-bar,.game-towerdefense .td-loading-bar,.game-towerdefense .td-loading{transition:none}.game-towerdefense .td-tower-card:hover:not(.is-unaffordable){transform:none}}@media(forced-colors:active){.game-towerdefense .td-tower-card.is-selected{outline:.125rem solid CanvasText}}body.td-immersive-lock{overflow:hidden;position:fixed;inset:0;width:100%}body.td-immersive-lock #floatingIsland{display:none}.game-towerdefense.is-immersive{position:fixed;inset:0;z-index:1080;gap:0;height:100dvh;background:#2c3a44}.game-towerdefense.is-immersive .td-breadcrumb,.game-towerdefense.is-immersive .td-title,.game-towerdefense.is-immersive .td-section-wave,.game-towerdefense.is-immersive .td-section-grow,.game-towerdefense.is-immersive .td-keys,.game-towerdefense.is-immersive .td-section-title{display:none}.game-towerdefense.is-immersive .td-header{position:absolute;top:0;left:0;right:0;z-index:3;flex-direction:row;align-items:center;padding:max(.35rem,env(safe-area-inset-top)) max(.6rem,env(safe-area-inset-right)) .35rem max(.6rem,env(safe-area-inset-left));background:#0a0e0c9e;border:0;border-radius:0}.game-towerdefense.is-immersive .td-stats{display:flex;flex-wrap:nowrap;justify-content:center;gap:.35rem;width:100%}.game-towerdefense.is-immersive .td-stat{flex:1 1 0;min-width:0;max-width:9rem;padding:.15rem .4rem;text-align:center}.game-towerdefense.is-immersive .td-stat dt{justify-content:center}.game-towerdefense.is-immersive .td-stat dd{font-size:var(--fs-body-lg)}.game-towerdefense.is-immersive .td-layout{display:block;position:absolute;inset:0}.game-towerdefense.is-immersive .td-viewport{position:absolute;inset:0;height:100%;border:0;border-radius:0}.game-towerdefense.is-immersive .td-hint{top:4.25rem}.game-towerdefense.is-immersive .td-perf{top:auto;right:auto;bottom:.5rem;left:max(.5rem,env(safe-area-inset-left))}.game-towerdefense.is-immersive .td-controls{top:3.9rem;bottom:auto;left:auto;right:max(.5rem,env(safe-area-inset-right));transform:none;padding:.3rem}.game-towerdefense.is-immersive .td-panel{position:absolute;left:0;right:0;bottom:0;z-index:3;gap:.4rem;max-height:none;padding:0 max(.5rem,env(safe-area-inset-right)) max(.5rem,env(safe-area-inset-bottom)) max(.5rem,env(safe-area-inset-left));overflow:visible;pointer-events:none}.game-towerdefense.is-immersive .td-panel>*{pointer-events:auto}.game-towerdefense.is-immersive .td-section{padding:.4rem;background:#0a0e0cd1}.game-towerdefense.is-immersive .td-tower-grid{display:flex;gap:.4rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none}.game-towerdefense.is-immersive .td-tower-grid::-webkit-scrollbar{display:none}.game-towerdefense.is-immersive .td-tower-card{flex:0 0 auto;width:4.75rem;padding:.4rem .25rem .35rem;scroll-snap-align:start}.game-towerdefense.is-immersive .td-card-blurb,.game-towerdefense.is-immersive .td-card-stats,.game-towerdefense.is-immersive .td-hotkey{display:none}.game-towerdefense.is-immersive .td-card-name{font-size:var(--fs-2xs)}.game-towerdefense.is-immersive .td-tower-panel{max-height:40vh;overflow-y:auto;overscroll-behavior:contain}@media(max-height:30rem){.game-towerdefense.is-immersive .td-stat dt{display:none}.game-towerdefense.is-immersive .td-tower-card{width:3.9rem}.game-towerdefense.is-immersive .td-card-icon{width:1.75rem;height:1.75rem}.game-towerdefense.is-immersive .td-controls{top:3rem}}
