:root{--ink:#24201C;--teal:#1C6E70;--danger:#B94C38;--cream:#FFF8EA;--floor:#E7D6B4;--path:#806044;--honey:#F2B84A;--muted:#73675B;--sm:8px;--md:16px;--lg:24px;--gap-sm:8px;--gap-md:16px;--gap-lg:24px}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:var(--floor);color:var(--ink);font:600 1rem/1.45 system-ui,sans-serif;overflow:hidden;user-select:none}#app{position:fixed;inset:0}#game{display:block;width:100%;height:100%;touch-action:none}#hud{position:absolute;inset:0;pointer-events:none}button{font:inherit;cursor:pointer}button:focus-visible{outline:3px solid var(--teal);outline-offset:3px}button:active{transform:scale(.97)}.brand{position:absolute;top:max(16px,env(safe-area-inset-top));left:24px;font-size:.875rem;font-weight:800;letter-spacing:.09em;z-index:1}.brand-mark{color:var(--teal);font-size:1.5rem}.brand small{display:block;margin-left:29px;color:var(--muted);font-size:.625rem;letter-spacing:.13em}.hud-bar{position:absolute;top:max(16px,env(safe-area-inset-top));right:24px;display:flex;gap:var(--gap-md);align-items:start}.hud-stats,.hud-actions{display:flex;gap:var(--gap-sm)}.chip{display:grid;min-width:84px;background:var(--cream);border:1px solid var(--path);border-radius:var(--md);padding:8px 14px;box-shadow:0 4px #24201c1f;font-variant-numeric:tabular-nums}.chip small,.tray-copy small,.tower-card small{font-size:.75rem;letter-spacing:.07em;color:var(--muted)}.chip b{font-size:1.15rem;white-space:nowrap}.btn{pointer-events:auto;min-height:48px;min-width:48px;padding:10px 16px;border:1px solid var(--ink);border-radius:var(--md);background:var(--cream);color:var(--ink);transition:transform .15s ease-out,background .15s ease-out;box-shadow:0 4px #24201c24}.btn:hover{background:var(--honey)}.icon-btn{font-size:1.3rem}.center{position:absolute;inset:0;display:grid;place-items:center;background:#24201c8c;pointer-events:auto;transition:opacity .25s ease-out}.center.hidden{opacity:0;pointer-events:none}.panel{width:min(92vw,530px);max-height:calc(100dvh - 32px);overflow:auto;text-align:center;background:var(--cream);border:2px solid var(--ink);border-radius:var(--lg);padding:clamp(24px,5vh,48px);box-shadow:10px 12px #24201c47;animation:rise .25s ease-out}.panel-symbol{color:var(--teal);font-size:2.5rem;line-height:1.1;margin:12px}.eyebrow{display:inline-block;padding:8px 12px;background:var(--honey);border-radius:var(--sm);font-size:.75rem;font-weight:800;letter-spacing:.09em}.panel h1{font:700 clamp(2.3rem,6vw,3.7rem)/1.07 Georgia,serif;letter-spacing:-.04em;margin:14px 0}.panel h1 em{color:var(--teal);font-style:italic}.panel p{margin:0 auto 22px;max-width:33ch;font-size:1rem;color:var(--muted)}.panel .primary{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 auto 16px;min-width:min(100%,280px);background:var(--ink);color:var(--cream);font-weight:800}.panel .primary:hover{background:var(--teal)}.panel>small{display:block;font-size:.7rem;letter-spacing:.08em;color:var(--muted)}.subtle{border:0;box-shadow:none}.tray{position:absolute;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:min(960px,calc(100vw - 32px));display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;background:var(--cream);border:1px solid var(--ink);border-radius:var(--lg);box-shadow:0 8px #24201c24;pointer-events:auto}.tray.hidden{display:none}.tray-copy{display:grid;min-width:135px}.tray-copy strong{font:700 1.2rem Georgia,serif}.tray-items{display:flex;align-items:center;gap:8px}.tower-card{display:flex;align-items:center;gap:12px;min-height:64px;padding:8px 12px;background:var(--cream);border:2px solid var(--path);border-radius:var(--md);text-align:left;transition:transform .12s ease-out,background .12s ease-out}.tower-card:hover,.tower-card[aria-pressed=true]{background:var(--honey);border-color:var(--teal)}.tower-card span:nth-child(2){display:grid}.tower-icon{display:grid;place-items:center;min-width:40px;height:40px;border-radius:var(--sm);background:var(--honey);font-size:1.7rem}.price{font-weight:800;font-variant-numeric:tabular-nums}.cancel{display:none}.selecting .cancel{display:block}.notice{position:absolute;top:100px;left:50%;transform:translate(-50%);max-width:min(90vw,450px);padding:9px 14px;background:var(--ink);color:var(--cream);border-radius:var(--sm);font-size:.875rem;text-align:center;opacity:0;transition:opacity .15s}.notice.visible{opacity:1}.perf{position:absolute;left:16px;bottom:112px;padding:8px;background:var(--cream);font:12px/1.35 monospace;white-space:pre;border-radius:var(--sm)}@keyframes rise{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:760px){.brand{top:auto;bottom:calc(118px + env(safe-area-inset-bottom));left:16px;font-size:.75rem}.brand small{display:none}.hud-bar{top:max(8px,env(safe-area-inset-top));left:8px;right:8px;justify-content:space-between;gap:4px}.hud-stats,.hud-actions{gap:4px}.chip{min-width:0;padding:6px 8px;border-radius:var(--sm)}.chip small{font-size:.625rem}.chip b{font-size:.875rem}.icon-btn{padding:5px}.tray{bottom:max(8px,env(safe-area-inset-bottom));padding:8px 10px;gap:8px}.tray-copy{display:none}.tray-items{width:100%;justify-content:space-between}.tower-card{flex:1;min-width:0;padding:7px}.tower-card strong{font-size:.875rem}.tower-card small{font-size:.68rem;letter-spacing:0}.tower-icon{min-width:34px;height:34px;font-size:1.3rem}.price{display:none}.notice{top:78px}.perf{bottom:100px}}@media(max-width:390px){.tower-icon{display:none}.chip b{font-size:.8rem}.tower-card,.chip{padding:5px}.panel{padding:20px}}.tray-items{flex:1;display:grid;align-items:stretch;grid-template-columns:repeat(4,minmax(0,1fr))}.tower-card{position:relative;min-width:0}.tower-copy{display:grid;min-width:0}.tower-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tower-card .price{margin-left:auto;font-size:.875rem}.tower-card.cant-afford{opacity:.55}.tower-card.cant-afford .price{color:var(--danger)}.tray.inspecting .tray-items,.tray.inspecting .cancel{display:none}.sheet{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:var(--gap-sm)}.sheet.hidden{display:none}.sheet-copy{display:grid;margin-right:auto}.sheet-copy small{font-size:.75rem;letter-spacing:.07em;color:var(--muted)}.sheet-copy strong{font:700 1.2rem Georgia,serif}.primary-sm{background:var(--ink);color:var(--cream);font-weight:800}.primary-sm:hover{background:var(--teal)}.primary-sm.cant-afford{opacity:.55}.wave-call{position:absolute;left:50%;bottom:calc(max(20px,env(safe-area-inset-bottom)) + 124px);transform:translate(-50%);background:var(--honey);font-weight:800;border-radius:999px;padding:10px 20px;white-space:nowrap;animation:rise .25s ease-out}.wave-call:hover{background:var(--cream)}.wave-call.hidden{display:none}.boss{position:absolute;top:calc(max(16px,env(safe-area-inset-top)) + 72px);right:24px;display:flex;align-items:center;gap:var(--gap-sm);padding:8px 14px;background:var(--ink);color:var(--cream);border-radius:var(--md);font-size:.75rem;letter-spacing:.07em;font-weight:800;animation:rise .25s ease-out}.boss.hidden{display:none}.boss-track{width:140px;height:10px;background:#fff8ea33;border-radius:var(--sm);overflow:hidden}.boss-track i{display:block;height:100%;background:var(--danger);transition:width .15s ease-out}.boss b{font-variant-numeric:tabular-nums}@media(max-width:1499px){.tray-copy{display:none}}@media(max-width:760px){.tray-items{gap:4px}.tower-card{flex-direction:column;gap:2px;padding:6px 4px;min-height:64px;text-align:center}.tower-copy small{display:none}.tower-copy strong{font-size:.75rem}.tower-card .price{display:block;margin:0;font-size:.75rem}.tower-icon{min-width:28px;height:28px;font-size:1.1rem}.sheet-copy strong{font-size:1rem}.sheet{gap:4px}.wave-call{bottom:calc(max(8px,env(safe-area-inset-bottom)) + 112px);padding:8px 14px;font-size:.875rem}.boss{top:calc(max(8px,env(safe-area-inset-top)) + 60px);left:8px;right:8px;justify-content:space-between}.boss-track{flex:1}.brand{bottom:calc(176px + env(safe-area-inset-bottom))}}@media(max-width:390px){.tower-icon{display:grid}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.zoom-controls{position:absolute;right:max(24px,env(safe-area-inset-right));top:50%;transform:translateY(-50%);display:grid;gap:var(--gap-sm);pointer-events:auto}.zoom-controls .btn{font-size:1.5rem;font-weight:700;padding:0;width:48px;height:48px}.pad-picker{position:absolute;left:50%;bottom:calc(max(20px,env(safe-area-inset-bottom)) + 118px);transform:translate(-50%);width:min(960px,calc(100vw - 32px));padding:var(--gap-sm);display:flex;align-items:center;gap:var(--gap-sm);overflow-x:auto;overscroll-behavior-x:contain;background:var(--cream);border:1px solid var(--path);border-radius:var(--md);box-shadow:0 4px #24201c24;pointer-events:auto;scrollbar-width:thin}.pad-picker.hidden{display:none}.pad-picker span{position:sticky;left:0;background:var(--cream);padding:0 var(--gap-sm);font-size:.875rem;font-weight:700;z-index:1}.pad-picker .btn{flex:0 0 48px;height:48px;padding:0;font-variant-numeric:tabular-nums}.pad-picker .btn:disabled{opacity:.5;cursor:not-allowed}.tray.selecting~.center{z-index:0}@media(max-width:760px){.brand{display:none}.hud-bar{z-index:2;align-items:center}.hud-stats{flex:1;justify-content:space-between}.chip{flex:1;padding:6px;min-width:0}.chip small{font-size:.75rem;letter-spacing:0}.chip b{font-size:.875rem}.icon-btn{padding:0;width:48px;height:48px}.zoom-controls{right:max(8px,env(safe-area-inset-right));top:48%;z-index:1}.tray{width:calc(100vw - 16px);left:8px;transform:none;max-height:calc(100dvh - 160px)}.tray-items{min-width:0}.tower-card{min-width:48px;min-height:72px}.tower-card strong,.tower-card .price{font-size:.875rem}.tray.selecting .cancel{display:block;position:absolute;right:8px;bottom:calc(100% + 72px);z-index:2}.pad-picker{width:calc(100vw - 16px);left:8px;transform:none;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 102px)}.pad-picker span{font-size:.75rem}.wave-call{bottom:calc(max(8px,env(safe-area-inset-bottom)) + 184px)}.tray.selecting~.center{z-index:auto}.notice{top:calc(max(8px,env(safe-area-inset-top)) + 102px);z-index:2}.perf{left:8px;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 102px);max-width:calc(100vw - 80px);overflow:hidden;pointer-events:none}}@media(max-width:390px){.tower-icon{display:none}.tower-card{padding:4px 2px}.tower-card strong,.tower-card .price,.chip b{font-size:.75rem}}@media(max-height:520px)and (orientation:landscape){.hud-bar{left:8px;right:auto;max-width:calc(100vw - 140px)}.brand{display:none}.tray{left:auto;right:max(8px,env(safe-area-inset-right));top:calc(max(8px,env(safe-area-inset-top)) + 64px);bottom:8px;transform:none;width:120px;max-height:none;flex-direction:column;overflow-y:auto;padding:8px}.tray-items{width:100%;display:flex;flex-direction:column}.tower-card{width:100%;min-height:48px;flex-direction:row}.tower-card .price{display:none}.tray .cancel{width:100%}.pad-picker{left:8px;right:140px;bottom:max(8px,env(safe-area-inset-bottom));width:auto;transform:none}.wave-call{bottom:72px;left:24px;transform:none}.zoom-controls{right:142px;top:50%}.boss{top:64px;left:8px;right:142px}.tray.selecting .cancel{position:static}.notice{top:64px;left:8px;transform:none}.sheet{flex-direction:column}.sheet-copy{margin:0}}.entity-badges{position:absolute;inset:0;pointer-events:none;overflow:hidden}.entity-badge{position:absolute;display:flex;align-items:center;gap:var(--gap-sm);transform:translate(-50%,-100%);padding:2px 5px;border:1px solid var(--ink);border-radius:var(--sm);background:var(--cream);color:var(--ink);box-shadow:0 2px 0 var(--path);white-space:nowrap;line-height:1}.entity-badge small{font-size:14px;font-weight:800;letter-spacing:.03em}.entity-badge.is-tower{background:var(--honey)}.entity-badge.is-enemy{background:var(--ink);color:var(--cream);border:2px solid var(--cream)}.entity-badge svg{width:32px;height:32px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;flex:none}.entity-badge.is-enemy svg{width:36px;height:36px;stroke-width:3.5}.boss-track{background:var(--cream)}.boss-track i{border-right:3px solid var(--ink)}.pad-picker .pad-occupied{border:2px dashed var(--danger);background:var(--floor)}.pad-picker .btn[aria-current=true]{outline:3px solid var(--teal);outline-offset:-4px}.tray.selecting~.center.hidden{pointer-events:none}.tray.selecting~.center{z-index:auto}@media(min-width:761px){.wave-call{bottom:calc(max(20px,env(safe-area-inset-bottom)) + 200px)}}@media(max-width:760px)and (orientation:portrait){.tower-icon{display:none!important}.tray{bottom:max(8px,env(safe-area-inset-bottom));padding:var(--gap-sm);align-items:stretch}.tray-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-sm)}.tower-card{min-height:68px;display:grid;grid-template-columns:1fr auto;align-content:center;text-align:left;padding:var(--gap-sm);gap:0 var(--gap-sm)}.tower-copy{grid-column:1;display:grid}.tower-copy strong{font-size:14px;overflow:visible;white-space:normal;line-height:1.1}.tower-copy small{display:block;font-size:14px;line-height:1.1;letter-spacing:0;color:var(--ink)}.tower-card .price{grid-column:2;grid-row:1;font-size:14px;white-space:nowrap;align-self:start}.tray.selecting{display:grid;grid-template-columns:1fr}.tray.selecting .tray-items{grid-column:1}.tray.selecting .cancel{position:static;grid-column:1;display:block;width:100%}.pad-picker{bottom:calc(max(8px,env(safe-area-inset-bottom)) + 218px)}.wave-call{bottom:calc(max(8px,env(safe-area-inset-bottom)) + 326px);left:8px;right:8px;transform:none;white-space:normal;padding:var(--gap-sm);text-align:center;min-height:48px}.zoom-controls{top:auto;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 440px);right:8px;transform:none}.zoom-controls{right:max(16px,env(safe-area-inset-right))}.pad-picker span{flex:0 0 auto;white-space:nowrap;font-size:14px}.center:not(.hidden){z-index:4}.center:not(.hidden)~.entity-badges{display:none}.chip b,.chip small{font-size:14px}.hud-bar{gap:var(--gap-sm)}.hud-actions{gap:4px}.icon-btn{width:48px}}.wave-call{left:max(16px,env(safe-area-inset-left));right:auto;transform:none;max-width:240px;text-align:left;white-space:normal}@media(max-width:760px)and (orientation:portrait){.wave-call{left:max(8px,env(safe-area-inset-left));right:auto;width:160px;max-width:160px;text-align:left}}
