*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;background:#0c1016;color:#e8edf4;font-family:system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden;touch-action:manipulation;-webkit-user-select:none;user-select:none}#app{height:100%;display:flex;flex-direction:column}#topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 14px;background:#141a22;border-bottom:1px solid #232e3b;font-weight:600;font-size:14px;flex:0 0 auto}.app-title{font-size:15px;font-weight:800;letter-spacing:.04em;color:#ffd93b;white-space:nowrap}#stats{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.stat-chip{background:#1d2733;border:1px solid #2a3542;border-radius:999px;padding:3px 12px;white-space:nowrap}#game-container{flex:1 1 auto;min-height:0;position:relative;overflow:hidden}#game-container canvas{display:block}#hud{flex:0 0 auto;width:min(920px,100%);margin:0 auto;padding:8px;background:#141a22;border-top:1px solid #232e3b;display:flex;flex-direction:column;gap:8px;box-sizing:border-box}#wave-preview{font-size:12px;line-height:1.45;background:#10161f;border:1px solid #2a3542;border-left:4px solid #ffd93b;border-radius:8px;padding:6px 10px}#wave-preview b{color:#ffd93b}#tower-buttons{display:flex;flex-wrap:wrap;gap:6px;max-height:96px;overflow-y:auto}button{border:1px solid #2a3542;background:#1d2733;color:#e8edf4;border-radius:8px;padding:8px 10px;font-size:13px;cursor:pointer;white-space:nowrap}button:disabled{opacity:.45;cursor:default}.tower-btn{display:flex;align-items:center;gap:6px;flex:0 1 auto;min-width:104px;justify-content:center;border-left-width:4px;border-left-style:solid}.tower-btn .dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto}.tower-btn .tcost{opacity:.7;font-size:12px}.tower-btn .tgrade{font-size:10px;background:#24405c;border-radius:5px;padding:0 4px;opacity:.9}.tower-btn.unaffordable .tcost{color:#ff6b6b;opacity:1}button.active{border-color:#4aa8ff;background:#24405c}#action-buttons{display:flex;gap:8px}#btn-sell{flex:0 0 auto}#btn-sell.active{border-color:#ff6b6b;background:#542525}#btn-wave{flex:1 1 auto;font-weight:700;background:#1f4d33;border-color:#37d67a}#btn-wave:disabled{background:#1d2733;border-color:#2a3542}#toast{position:fixed;left:50%;top:56px;transform:translate(-50%);background:#24405c;border:1px solid #4aa8ff;padding:8px 16px;border-radius:8px;font-size:14px;opacity:0;transition:opacity .25s;pointer-events:none;z-index:10;max-width:90vw;text-align:center}#toast.show{opacity:1}#info-panel{position:fixed;left:50%;bottom:96px;transform:translate(-50%);width:min(440px,94vw);background:#182230;border:1px solid #2a3542;border-radius:12px;padding:12px;z-index:15;box-shadow:0 8px 24px #00000080}@media(min-width:900px){#info-panel{left:16px;top:64px;bottom:auto;transform:none;width:300px}#info-body{flex-direction:column}.info-art{align-self:center}}#info-panel.hidden{display:none}#info-close{position:absolute;top:6px;right:6px;padding:2px 8px;font-size:12px}#info-body{display:flex;gap:12px;align-items:flex-start}.info-art{flex:0 0 72px;height:72px;border-radius:10px;background:#0c1016;border:1px solid var(--tower-color);display:flex;align-items:center;justify-content:center}.info-shape{width:36px;height:36px;background:var(--tower-color)}.shape-circle{border-radius:50%}.shape-diamond{transform:rotate(45deg);width:30px;height:30px}.shape-triangle{clip-path:polygon(50% 0,0 100%,100% 100%)}.shape-hex{clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0 50%)}.shape-star{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.info-text{flex:1 1 auto;min-width:0}.info-title{font-weight:700;font-size:16px;margin-bottom:2px}.info-element{font-size:12px;text-transform:uppercase;letter-spacing:.06em;margin-left:6px}.info-specials{margin-bottom:4px}.special-badge{font-size:10px;background:#4a3b12;border:1px solid #ffd93b;border-radius:6px;padding:1px 6px}.info-desc{font-size:12px;opacity:.8;margin-bottom:8px}.info-stats{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;font-size:12px}.info-stats span:last-child{grid-column:1 / -1}.info-sell-btn{margin-top:10px;width:100%;background:#542525;border-color:#ff6b6b;font-weight:600}.info-grade{font-size:11px;background:#24405c;border:1px solid #4aa8ff;border-radius:6px;padding:1px 6px;margin-left:6px;vertical-align:middle}.info-upgrade-btn{margin-top:10px;width:100%;background:#1f4d33;border-color:#37d67a;font-weight:600}.gift-card small{opacity:.75}#topbar #btn-import{padding:4px 10px;font-size:13px}#import-panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,94vw);background:#182230;border:2px solid #37d67a;border-radius:14px;padding:16px;z-index:18;box-shadow:0 12px 40px #0009}#import-panel.hidden{display:none}#import-panel h2{font-size:17px;margin-bottom:4px}#import-close{position:absolute;top:8px;right:8px;padding:2px 8px;font-size:12px}.import-hint{font-size:12px;opacity:.8;margin-bottom:10px}.import-row{display:flex;gap:8px;margin-bottom:10px}#import-cert{flex:1 1 auto;background:#0c1016;border:1px solid #2a3542;border-radius:8px;color:#e8edf4;padding:8px 10px;font-size:14px}#import-result{font-size:13px;line-height:1.5}#import-result .cell-preview{border:1px solid #2a3542;border-radius:10px;padding:10px;margin-bottom:8px}#gift-panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,94vw);background:#182230;border:2px solid #ffd93b;border-radius:14px;padding:16px;z-index:18;box-shadow:0 12px 40px #0009}#gift-panel.hidden{display:none}#gift-panel h2{font-size:18px;margin-bottom:4px}#gift-subtitle{font-size:12px;opacity:.8;margin-bottom:12px}#gift-options{display:flex;flex-direction:column;gap:8px}.gift-option{text-align:left;padding:10px 12px;line-height:1.4;white-space:normal;overflow-wrap:break-word;min-width:0}.gift-option b{color:#ffd93b}.gift-cards{display:grid;grid-template-columns:1fr 1fr;gap:6px}.gift-card{padding:8px;font-size:12px;white-space:normal;overflow-wrap:break-word;text-align:left;min-width:0;line-height:1.35}.gift-card.picked{border-color:#37d67a;background:#1f4d33}#overlay{position:fixed;inset:0;background:#06090dd9;display:flex;align-items:center;justify-content:center;z-index:20}#overlay.hidden{display:none}#overlay-content{text-align:center;padding:32px}#overlay-content h1{font-size:40px;margin-bottom:12px}#overlay-content p{margin-bottom:24px;opacity:.85}#btn-restart{font-size:16px;padding:12px 28px;background:#1f4d33;border-color:#37d67a}
