:root{color-scheme:dark;--bg: #14161f;--panel: #1f2230;--panel-border: #33384d;--text: #e8e9f0;--text-dim: #9aa0b4;--accent: #8fd16a;--accent-strong: #6cb84a;--danger: #e0544f;--gold: #e8c547;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media(prefers-color-scheme:light){:root{color-scheme:light;--bg: #f3f4f8;--panel: #ffffff;--panel-border: #d4d7e2;--text: #1d2030;--text-dim: #5d6378;--accent: #3f8a22;--accent-strong: #4d9c2c;--danger: #c7362f;--gold: #a87f00}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{font:inherit;color:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation}#app{min-height:100dvh;display:flex;justify-content:center}.screen{width:100%;max-width:560px;padding:24px 16px;display:flex;flex-direction:column;align-items:center;gap:16px}.screen-menu,.screen-wip{justify-content:center;min-height:100dvh}.logo{margin:0;font-size:clamp(2.6rem,12vw,4rem);letter-spacing:.08em;color:var(--accent)}.tagline{margin:-8px 0 8px;color:var(--text-dim)}.menu-actions{display:flex;flex-direction:column;gap:12px;width:min(100%,320px)}.btn{padding:14px 18px;border-radius:12px;border:1px solid var(--panel-border);background:var(--panel);font-size:1.05rem;cursor:pointer;transition:border-color .15s,background .15s}.btn:hover,.btn:focus-visible{border-color:var(--accent);outline:none}.btn-primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#0d1014;font-weight:600}.btn-ghost{background:transparent}.btn-small{padding:8px 12px;font-size:.9rem}.link-button{background:none;border:none;padding:0;color:var(--text-dim);text-decoration:underline;cursor:pointer;font-size:inherit}.how-to{width:min(100%,360px);color:var(--text-dim);font-size:.9rem}.how-to summary{cursor:pointer;text-align:center}.legal-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px;margin-top:16px;font-size:.85rem}.legal-links a{color:var(--text-dim)}.consent{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));max-width:560px;margin:0 auto;padding:16px;border-radius:12px;border:1px solid var(--panel-border);background:var(--panel);box-shadow:0 8px 32px #00000059;z-index:10}.consent-text{margin:0 0 12px;font-size:.85rem;line-height:1.4}.consent-text a{color:var(--accent)}.consent-actions{display:flex;gap:8px;justify-content:flex-end}.screen-game{max-width:980px;padding-top:12px;gap:12px}.game-header,.game-controls{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.hud{display:flex;flex-wrap:wrap;gap:4px 16px;font-variant-numeric:tabular-nums}.hud-gold strong{color:var(--gold)}.hud-lives strong{color:var(--danger)}.board-wrap{position:relative;width:100%}.board{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--panel-border);touch-action:manipulation;cursor:pointer}.game-hint{margin:0;min-height:1.4em;color:var(--text-dim);font-size:.9rem;text-align:center}.btn.active{border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}[data-action=next-wave]{position:relative;overflow:hidden}[data-action=next-wave]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0000004d;transform-origin:left;transform:scaleX(var(--cooldown, 0));pointer-events:none}.tower-menu{--menu-bg: #1a1d2a;--menu-raised: #262a39;--menu-border: #3a3f55;--caret-x: 50%;position:absolute;z-index:1;width:240px;padding:12px;border-radius:12px;border:1px solid var(--menu-border);background:var(--menu-bg);color:#e8e9f0;box-shadow:0 10px 28px #00000073;display:flex;flex-direction:column;gap:10px}.tower-menu[hidden]{display:none}.tower-menu:before{content:"";position:absolute;left:var(--caret-x);width:12px;height:12px;background:var(--menu-bg);border:1px solid var(--menu-border);transform:translate(-50%) rotate(45deg)}.tower-menu.below:before{top:-7px;border-right:none;border-bottom:none}.tower-menu.above:before{bottom:-7px;border-left:none;border-top:none}.tower-menu-head{display:flex;align-items:center;gap:10px}.tower-icon{flex:none;width:34px;height:34px;border-radius:6px;background:50% 100% / 150% no-repeat;image-rendering:pixelated}.tower-icon.arrow{background-image:url(/sprites/archer-tower.png)}.tower-icon.frost{background-image:url(/sprites/frost-tower.png)}.tower-icon.cannon{background-image:url(/sprites/cannon-tower/cannon-tower-s.png)}.tower-icon.poison{background-image:url(/sprites/poison-tower.png)}.tower-icon.lightning{background-image:url(/sprites/lightning-tower.png)}.tower-icon.antiAir{background-image:url(/sprites/antiair-tower.png)}.tower-icon.buff{background-image:url(/sprites/buff-tower.png)}.tower-menu-title{margin:0 0 3px;font-weight:600}.tower-menu-sub{display:flex;flex-direction:column;align-items:flex-start;gap:3px}.tower-menu-role{font-size:.72rem;color:#9aa0b4}.tower-menu-level{display:flex;gap:4px}.tower-menu-level i{width:7px;height:7px;border-radius:50%;background:var(--menu-border)}.tower-menu-level i.reached{background:#e8c547}.tower-menu-stats{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px}.tower-stat{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 2px;border-radius:8px;background:var(--menu-raised);font-size:.7rem;color:#9aa0b4}.tower-stat strong{color:#e8e9f0;font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap}.tower-stat-next{color:#8fd16a}.tower-stat-next:before{content:"→";margin:0 1px}.tower-stat-icon,.tower-menu-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tower-menu-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 14px;border-radius:8px;border:1px solid var(--menu-border);background:transparent;color:#e8e9f0;font-size:.95rem;cursor:pointer}.tower-menu-btn:hover:not(:disabled),.tower-menu-btn:focus-visible{background:var(--menu-raised);outline:none}.tower-menu-upgrade{justify-content:space-between;padding-block:12px;font-weight:600}.tower-menu-cost{display:flex;align-items:center;gap:6px}.tower-menu-upgrade.short .tower-menu-cost,.build-option.short .tower-menu-cost{color:#e0544f}.coin{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;border:1.5px solid #e8c547;color:#e8c547;font-size:.65rem;font-weight:700}.tower-menu-max{display:none;align-items:center;gap:6px}.tower-menu-upgrade.max{justify-content:center;border-color:#e8c547;color:#e8c547;cursor:default}.tower-menu-upgrade.max .tower-menu-max{display:flex}.tower-menu-upgrade.max .tower-menu-upgrade-label,.tower-menu-upgrade.max .tower-menu-cost{display:none}.build-menu{width:280px}.build-menu-list{display:flex;flex-direction:column;gap:4px;min-height:0;overflow-y:auto}.build-option .tower-icon{width:28px;height:28px;border-radius:5px}.build-option{display:flex;align-items:center;gap:10px;padding:5px 10px 5px 6px;border-radius:8px;border:1px solid var(--menu-border);background:transparent;color:#e8e9f0;text-align:left;cursor:pointer}.build-option:hover,.build-option:focus-visible{background:var(--menu-raised);outline:none}.build-option-text{flex:1;display:flex;flex-direction:column;gap:1px;font-size:.72rem;color:#9aa0b4}.build-option-text strong{font-size:.92rem;color:#e8e9f0}.build-option .tower-menu-cost{font-weight:600;font-variant-numeric:tabular-nums}.tower-menu-sell{padding-block:8px;font-size:.9rem}.game-over{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;border-radius:12px;background:color-mix(in srgb,var(--bg) 82%,transparent)}.game-over[hidden]{display:none}.game-over-title{margin:0;font-size:2.4rem;color:var(--danger)}.game-over-stats{display:grid;grid-template-columns:auto auto;gap:8px 24px;margin:0 0 8px;font-size:1.1rem}.game-over-stats dt{color:var(--text-dim)}.game-over-stats dd{margin:0;text-align:right;font-weight:600}.game-over-actions{display:flex;gap:8px}.wip-badge{margin:0;padding:4px 12px;border-radius:999px;border:1px solid var(--accent);color:var(--accent);font-size:.85rem;letter-spacing:.05em}.wip-text{margin:0;color:var(--text-dim);text-align:center}
