:root{--ink:#2b1d0e;--paper:#fff7e6;--paper-2:#ffe9c2;--accent:#ffb347;--accent-2:#6fd36f;--danger:#ff6b6b;--info:#7fd3ff;--sky:#9ad7ff;--radius:14px;--shadow:0 6px 0 #2b1d0e40;font-family:Trebuchet MS,Comic Sans MS,Segoe UI,sans-serif}html,body{background:var(--sky);height:100%;margin:0;overflow:hidden}#game{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;color:var(--ink);position:fixed;inset:0}[hidden]{display:none!important}h1,h2,h3{letter-spacing:.02em;margin:0}button{font:inherit;cursor:pointer}.btn{border:3px solid var(--ink);border-radius:var(--radius);background:var(--paper);color:var(--ink);box-shadow:var(--shadow);padding:.45rem .9rem;font-weight:700;transition:transform 80ms,box-shadow 80ms}.btn:hover:not(:disabled){transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px #2b1d0e40}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent)}.btn.danger{background:var(--danger)}.btn.small{padding:.25rem .6rem;font-size:.85rem}.btn.toggle[aria-pressed=true]{background:var(--accent-2)}#hud{flex-direction:column;align-items:center;gap:.5rem;padding:.6rem;display:flex;position:absolute;top:0;left:0;right:0}.hud-bar{pointer-events:auto;background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;padding:.4rem .8rem;display:flex}.stat{flex-direction:column;align-items:center;min-width:4.5rem;line-height:1.1;display:flex}.stat .label{text-transform:uppercase;opacity:.7;font-size:.7rem}.stat .value{font-size:1.25rem;font-weight:800}.stat.wave{font-size:1rem;font-weight:800}.toast{pointer-events:auto;background:var(--ink);color:var(--paper);border-radius:999px;padding:.4rem 1rem;font-weight:700;animation:.25s ease-out toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(-10px)scale(.9)}to{opacity:1;transform:none}}#build-panel{pointer-events:auto;background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius);width:min(22rem,100vw - 1.6rem);box-shadow:var(--shadow);max-height:calc(100vh - 8rem);padding:.8rem;position:absolute;bottom:.8rem;right:.8rem;overflow-y:auto}.panel-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.panel-header h2{align-items:center;gap:.4rem;font-size:1.05rem;display:flex}.castle-upgrade{border-top:2px dashed #2b1d0e33;margin-top:.5rem;padding-top:.5rem}.castle-upgrade h3{align-items:center;gap:.4rem;font-size:.95rem;display:flex}.castle-upgrade h3 .level{opacity:.75;margin-left:auto;font-size:.85rem;font-weight:400}.castle-upgrade .stats em{color:#2f7fbf;font-style:normal;font-weight:400}.castle-upgrade .btn{width:100%;margin-top:.35rem}.level-swatch{border:2px solid #2b1d0e;border-radius:50%;flex:none;width:.85em;height:.85em;display:inline-block}.tower-list{gap:.5rem;display:grid}.tower-choice{text-align:left;background:var(--paper-2);border:3px solid var(--ink);border-radius:var(--radius);color:var(--ink);gap:.15rem;padding:.5rem .7rem;display:grid}.tower-choice:hover:not(:disabled){background:var(--accent)}.tower-choice.too-expensive{opacity:.55}.tower-name{font-weight:800}.tower-blurb{opacity:.85;font-size:.85rem}.tower-cost{color:#7a4b23;font-weight:700}.stats{gap:.25rem;margin:.5rem 0;padding:0;list-style:none;display:grid}.stats li{border-bottom:2px dashed #2b1d0e33;justify-content:space-between;padding:.15rem 0;display:flex}.panel-actions{gap:.5rem;margin-top:.5rem;display:grid}.targeting{justify-content:space-between;align-items:center;gap:.5rem;margin:.5rem 0 .25rem;display:flex}.targeting .label{font-weight:700}.segmented{gap:.25rem;display:flex}.segmented .btn{padding:.25rem .5rem}#menu,#dialog{pointer-events:auto;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#2b1d0e59;place-items:center;padding:1rem;display:grid;position:absolute;inset:0}.card{background:var(--paper);border:4px solid var(--ink);box-shadow:var(--shadow);border-radius:22px;width:min(52rem,100%);max-height:calc(100vh - 2rem);padding:1.4rem;overflow-y:auto}.card h1{font-size:2.4rem}.card .subtitle{opacity:.8;margin:.2rem 0 1rem}.map-grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.8rem;display:grid}.map-card{border:3px solid var(--ink);border-radius:var(--radius);color:var(--ink);gap:.4rem;padding:.8rem;display:grid}.map-card[data-theme=green]{background:#bfe9a4}.map-card[data-theme=snow]{background:#e6f0ff}.map-card[data-theme=desert]{background:#ffe1a3}.map-card[data-theme=water]{background:#b3e5ea}.map-card[data-theme=vast]{background:#a9dd8f}.map-card[data-theme=dunes]{background:#f5d38a}.map-card.unavailable{opacity:.5}.map-card h3{font-size:1.15rem}.map-card p{margin:0;font-size:.9rem}.map-card .best{font-size:.85rem;font-weight:700}.map-card .actions{flex-wrap:wrap;gap:.4rem;display:flex}.howto{opacity:.8;margin-top:1rem;font-size:.9rem}.dialog-card{text-align:center;gap:.7rem;width:min(28rem,100%);display:grid}.dialog-card input{font:inherit;border:3px solid var(--ink);border-radius:var(--radius);text-align:center;padding:.5rem .8rem}.dialog-actions{gap:.5rem;display:grid}.status{min-height:1.3rem;font-weight:700}table.scores{border-collapse:collapse;width:100%;margin-top:.5rem}table.scores th,table.scores td{text-align:left;border-bottom:2px dashed #2b1d0e33;padding:.3rem .5rem}table.scores td.num,table.scores th.num{text-align:right}.offline-badge{background:var(--danger);color:var(--paper);border-radius:999px;padding:.1rem .6rem;font-size:.8rem;font-weight:700;display:inline-block}#fatal{pointer-events:auto;background:var(--paper);text-align:center;place-items:center;padding:2rem;font-size:1.3rem;display:grid;position:absolute;inset:0}@media (width<=640px){.stat{min-width:3.4rem}.stat .value{font-size:1rem}#build-panel{width:auto;bottom:.4rem;left:.4rem;right:.4rem}}table.scores .guest{opacity:.6;font-size:.85em}.dialog-card .muted{opacity:.75;margin:.3rem 0;font-size:.9em}.all-games{align-items:center;gap:.35rem;margin-bottom:.4rem;text-decoration:none;display:inline-flex}.all-games-icon{flex:none;width:1.2rem;height:1.2rem}
