@font-face {
  font-family: 'Silkscreen';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/silkscreen-400.ttf) format('truetype');
}
@font-face {
  font-family: 'Silkscreen';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/silkscreen-700.ttf) format('truetype');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/space-grotesk-400.ttf) format('truetype');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/space-grotesk-500.ttf) format('truetype');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/space-grotesk-600.ttf) format('truetype');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/space-grotesk-700.ttf) format('truetype');
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/space-mono-400.ttf) format('truetype');
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/space-mono-700.ttf) format('truetype');
}
:root{color-scheme:dark;--bg:#171526;--surface:#211e33;--raised:#2b2740;--border:#3a354e;--muted:#aaa4bc;--ink:#faf6ec;--lime:#d5fa79;--pink:#f493c4;--cyan:#87e2de;--mono:'Space Mono',monospace;--pixel:'Silkscreen',monospace;--body:'Space Grotesk',system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;-webkit-font-smoothing:antialiased}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0;touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.42}button:focus-visible,a:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid var(--lime);outline-offset:4px}a{color:inherit;text-decoration:none}button{transition:background .14s,border-color .14s,transform .14s}button:active:not(:disabled){transform:translateY(2px)}.app-shell{max-width:1440px;margin:auto;padding:env(safe-area-inset-top) 48px env(safe-area-inset-bottom)}.topbar{height:99px;display:flex;align-items:center;gap:22px;border-bottom:1px solid var(--border)}.wordmark{font-family:var(--pixel);font-weight:700;font-size:32px;letter-spacing:-2px;position:relative;line-height:1}.brand-spark{color:var(--lime);font-size:24px;margin-left:8px;display:inline-block;vertical-align:top}.edition{color:var(--muted);font-size:12px;font-family:var(--mono);letter-spacing:1px;margin-top:4px}.top-actions{margin-left:auto;display:flex;gap:10px}.icon-button{position:relative;display:grid;place-items:center;background:var(--raised);border:1px solid var(--border);border-radius:9px;width:42px;height:42px;font:700 21px var(--body)}.icon-button:hover{background:#403850}.sound-slash{position:absolute;font-size:27px;transform:rotate(20deg);color:var(--pink);left:21px;top:4px}.mission-heading{display:flex;align-items:center;justify-content:space-between;padding:30px 0 26px}.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:1.6px;color:var(--muted);font-weight:400}.mission-heading .eyebrow{margin-bottom:7px;color:var(--pink)}h1{font-size:32px;line-height:1.15;letter-spacing:-1px;margin:0;font-weight:700}h1>span,.arsenal-heading h2>span{color:var(--lime);margin-left:2px}.text-button{background:none;font-size:14px;color:var(--muted);padding:12px 0}.text-button:hover{color:var(--lime)}.text-button span{margin-left:8px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 338px;gap:26px;align-items:start}.battle-section{overflow:hidden;border-radius:14px;background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 40px #07050f26}.statusbar{height:78px;display:flex;align-items:center;gap:30px;padding:0 24px;background:#252138}.stat{display:flex;gap:12px;align-items:center}.stat-label{font:400 12px var(--mono);color:var(--muted);display:block;line-height:1.8;letter-spacing:1px}.stat strong{font-family:var(--mono);font-size:22px;line-height:1.2}.stat-icon{font-size:27px}.heart{color:#ff8ca5}.coin{color:#f7d072}.wave{color:#bda4ff}.stat-total{color:#8d859f;font-size:15px}.mode-badge{margin-left:auto;font:400 11px var(--mono);letter-spacing:.6px;padding:6px 9px;background:#3b364d;color:var(--lime);border-radius:4px;white-space:nowrap}.board-frame{position:relative;width:100%;background:#203b37;isolation:isolate;overflow:hidden}.board-frame:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 50px #0d102845}canvas{display:block;width:100%;height:auto;aspect-ratio:8/7;touch-action:none;user-select:none;cursor:crosshair;image-rendering:pixelated}.board-label{position:absolute;font:700 9px var(--mono);background:#141d2cde;color:#f9dcc1;padding:5px 8px;letter-spacing:.8px;border:1px solid #ffffff30;pointer-events:none}.entrance{top:2.5%;left:9%;display:flex;gap:8px;align-items:center}.exit-label{bottom:2.5%;right:3%}.battle-controls{display:flex;gap:10px;align-items:center;padding:17px 18px 14px}.primary{background:var(--lime);color:#202328;min-height:48px;border-radius:8px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:20px;padding:12px 20px;box-shadow:0 3px 0 #8aab47}.primary:hover{background:#e1ff9b}.start-wave{min-width:200px}.start-wave>span{font-size:15px}.secondary{background:var(--raised);border:1px solid #494159;border-radius:8px;padding:12px 16px;min-height:48px;font-weight:600}.secondary:hover{background:#3a324c}.speed{white-space:nowrap;min-width:75px;display:flex;gap:9px;align-items:center;font-family:var(--mono);font-size:14px}.speed span{font-size:12px;color:var(--muted)}.auto-label{margin-left:4px;display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--muted);font-size:13px}.auto-label input{appearance:none;flex:none;width:17px;height:17px;margin:0;border:1px solid #635971;border-radius:4px;background:#30283f;cursor:pointer}.auto-label input:checked{background:var(--lime);border-color:var(--lime);box-shadow:inset 0 0 0 4px #30283f}.ability{margin-left:auto;align-self:stretch;min-width:67px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1px;color:var(--cyan);border:1px solid #5b6b75;border-radius:8px;background:#2a3947;font:700 10px var(--mono)}.ability>span:first-child{font-size:20px}.wave-intel{border-top:1px solid #ffffff09;padding:12px 20px 15px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;color:var(--muted)}.wave-intel>div{display:flex;gap:10px;align-items:center}.wave-intel strong{font-size:13px;font-weight:500;color:#ddd6e8}.intel-label{font:11px var(--mono);color:var(--pink);white-space:nowrap}.arsenal{padding-top:3px}.arsenal-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:8px}.arsenal-heading h2{font-size:21px;letter-spacing:-.7px;margin:6px 0 0}.arsenal-heading .eyebrow{font-size:11px;letter-spacing:1.2px}.small-chip{font:10px var(--mono);padding:6px 7px;border:1px solid var(--border);border-radius:5px;color:var(--muted);white-space:nowrap}.tower-shop{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tower-card{position:relative;min-width:0;display:flex;flex-direction:column;align-items:center;padding:7px 4px 9px;border-radius:9px;background:var(--surface);border:1px solid var(--border);min-height:132px}.tower-card.selected{border-color:var(--lime);background:#303b35;box-shadow:inset 0 0 0 1px var(--lime)}.tower-card:not(.locked):hover{border-color:#a5bc72}.sprite-icon{display:block;width:65px;height:62px;background-image:url('/assets/towers.png');background-size:300% 200%;background-repeat:no-repeat;image-rendering:pixelated;flex:none}.tower-name{font-size:12px;font-weight:600;margin-top:2px;white-space:nowrap}.tower-price{color:#ecd080;font:12px var(--mono);margin-top:5px}.tower-key{position:absolute;top:6px;left:7px;font:10px var(--mono);color:#8c859d}.tower-card.locked{opacity:.56}.tower-card.locked .sprite-icon{filter:grayscale(.75)}.tower-card.locked .tower-price{color:#b0a7c2;font-size:10px}.tower-detail{border:1px solid var(--border);border-radius:11px;background:var(--surface);margin-top:16px;padding:18px;min-height:258px}.detail-heading{display:flex;align-items:center;gap:10px}.detail-heading .sprite-icon{width:60px;height:60px;margin-left:-8px}.detail-title{font-size:19px;font-weight:700;margin:0 0 4px;letter-spacing:-.4px}.type-label{font:11px var(--mono);color:var(--cyan);letter-spacing:.6px}.detail-description{font-size:14px;line-height:1.5;color:var(--muted);margin:12px 0 16px}.detail-stats{display:flex;justify-content:space-between;padding:12px 0;border-top:1px solid var(--border);gap:10px}.detail-stats>div{font-size:12px;color:var(--muted)}.detail-stats strong{display:block;color:var(--ink);font:15px var(--mono);margin-top:3px}.build-prompt{font-size:13px;line-height:1.5;color:var(--lime);margin:10px 0 0}.build-actions{display:flex;gap:8px;margin-top:12px}.build-actions .primary{flex:1;min-height:43px;font-size:14px;padding:10px}.build-actions .secondary{min-height:43px;font-size:14px;padding:10px}.upgrade-options{display:grid;gap:9px;margin-top:8px}.upgrade-button{text-align:left;padding:11px 12px;background:#322c43;border:1px solid #574965;border-radius:7px;display:grid;grid-template-columns:1fr auto;gap:5px}.upgrade-button:hover{border-color:var(--lime)}.upgrade-button strong{font-size:13px;color:#faf6ec}.upgrade-button span{font:12px var(--mono);color:#f5d077}.upgrade-button small{grid-column:1/-1;color:var(--muted);font-size:12px;line-height:1.4}.detail-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:8px}.target-button{padding:8px;background:#2d293d;border-radius:5px;font-size:12px;border:1px solid var(--border)}.sell-button{background:none;padding:8px 0;color:var(--pink);font-size:12px}.pro-tip{display:flex;gap:10px;padding:18px 5px 0;color:var(--muted)}.pro-tip>span{font-size:24px;color:var(--pink);margin-top:2px}.pro-tip p{margin:0;font-size:13px;line-height:1.7}.pro-tip strong{display:block;color:#d1c9df;font-weight:500}.game-footer{display:flex;gap:24px;align-items:center;padding:25px 0 28px;color:var(--muted);font-size:12px}.player-progress{display:flex;align-items:center;text-align:left;background:none;gap:10px;padding:0;min-height:44px}.level-badge{display:grid;place-items:center;width:37px;height:37px;background:#342c48;border:1px solid #51445d;border-radius:7px;color:var(--pink);font:15px var(--pixel)}.player-copy{display:flex;flex-direction:column;gap:7px;min-width:150px}.player-copy strong{font:10px var(--mono);letter-spacing:.4px}.xp-track{height:4px;background:#3e354e;display:block;border-radius:2px;overflow:hidden}.xp-track>span{display:block;height:100%;width:0;background:var(--pink)}#xp-label{font:11px var(--mono);margin-left:5px}.footer-motto{font:10px var(--mono);letter-spacing:1px;margin-left:auto}.wave-banner{position:absolute;left:12%;right:12%;top:40%;text-align:center;padding:16px;background:#1b1736e8;box-shadow:0 4px 0 #0c102e77;border-block:2px solid #e9edc377;pointer-events:none;opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s}.wave-banner.show{opacity:1;transform:translateY(0)}.wave-banner strong{font:700 23px var(--pixel);color:var(--lime);display:block;line-height:1.5}.wave-banner span{display:block;font-size:14px;color:var(--ink);margin-top:4px}.pause-cover{position:absolute;inset:0;background:#161428dd;backdrop-filter:blur(7px);z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px}.pause-cover[hidden]{display:none}.pause-cover h2{font:700 36px var(--pixel);margin:18px 0}.pause-cover h2 span{color:var(--lime);margin-left:12px}.pause-cover p{color:var(--muted);font-size:15px;margin:0 0 25px}.pause-cover .text-button{margin-top:16px}.toast{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,20px);background:#e3fac4;color:#1b2424;border:1px solid #d5fa79;border-radius:9px;padding:14px 20px;z-index:20;max-width:calc(100vw - 30px);width:max-content;font-size:14px;box-shadow:0 8px 25px #0004;opacity:0;pointer-events:none;transition:all .2s}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{color:var(--ink);background:var(--surface);border:1px solid #605075;border-radius:18px;padding:30px;width:calc(100% - 30px);max-width:570px;max-height:85dvh;overflow:auto;box-shadow:0 25px 100px #0008}dialog::backdrop{background:#0d0a19ba;backdrop-filter:blur(5px)}.modal-close{position:absolute;top:15px;right:15px;width:34px;height:34px}.modal-title{font-size:30px;letter-spacing:-1px;margin:10px 25px 12px 0}.modal-description{color:var(--muted);line-height:1.6;font-size:15px;margin:0 0 22px}.map-list{display:grid;gap:12px}.map-card{text-align:left;display:flex;gap:15px;padding:15px;background:#2c273e;border:1px solid #4b405b;border-radius:10px;width:100%;align-items:center}.map-card.current{border-color:var(--lime)}.map-card.locked{opacity:.6}.map-number{font:24px var(--pixel);color:var(--lime)}.map-card strong{display:block;font-size:17px;margin-bottom:5px}.map-card p{font-size:13px;color:var(--muted);line-height:1.5;margin:0}.map-card small{display:block;font:11px var(--mono);color:var(--pink);margin-top:8px}.help-steps{display:grid;gap:18px;margin:20px 0}.help-step{display:flex;gap:14px}.help-step>span{font:20px var(--pixel);color:var(--lime);padding-top:2px}.help-step p{margin:4px 0 0;font-size:14px;line-height:1.6;color:var(--muted)}.help-step strong{font-size:16px}.enemy-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.enemy-guide>div{text-align:center;background:#2b263e;padding:10px 6px;border-radius:8px;font-size:12px}.enemy-icon{display:block;width:65px;height:65px;margin:0 auto 8px;background:url('/assets/enemies.png') no-repeat;background-size:300% 200%;image-rendering:pixelated}.enemy-guide strong{display:block;margin-bottom:5px}.enemy-guide span:last-child{color:var(--muted);font-size:11px;line-height:1.4;display:block}.result-title{font:700 32px var(--pixel);color:var(--lime);line-height:1.4;margin:20px 0 15px}.result-stats{display:flex;justify-content:space-around;background:#30293e;border-radius:10px;padding:20px;margin-bottom:20px;text-align:center;gap:8px}.result-stats strong{display:block;font:24px var(--mono);color:var(--lime)}.result-stats span{font-size:12px;color:var(--muted);line-height:2}.result-actions{display:flex;flex-wrap:wrap;gap:10px}.unlock-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);padding:14px 0}.unlock-row strong{font-size:15px}.unlock-row small{display:block;color:var(--muted);margin-top:3px;font-size:12px}.unlock-row .level-badge{margin-left:auto;flex:none}.unlock-row.achieved .level-badge{color:var(--lime)}.saved-note{font-size:12px;color:var(--muted);line-height:1.6;margin-top:22px}.warning-note{color:#ffd59d!important}.branch-badge{color:var(--lime);font:11px var(--mono);margin-top:4px}.path-max{color:var(--lime);font:13px var(--mono);padding:15px 0}.keyboard-note{font:12px var(--mono);color:var(--muted);line-height:1.8}
@media(min-width:1450px){.app-shell{max-width:1340px}.game-layout{grid-template-columns:minmax(0,1fr) 338px}}
@media(max-width:1150px){.app-shell{padding-inline:25px}.game-layout{gap:20px;grid-template-columns:minmax(0,1fr) 306px}.statusbar{padding:0 18px;gap:24px}.mode-badge{display:none}.battle-controls{gap:8px;padding:14px}.start-wave{min-width:170px;padding-inline:14px}.auto-label{font-size:12px;gap:5px}.ability{min-width:58px}.footer-motto{display:none}.arsenal-heading h2{font-size:19px}.small-chip{display:none}.tower-card{min-height:124px}.tower-name{font-size:11px}.sprite-icon{width:60px;height:58px}}
@media(max-width:900px){.app-shell{max-width:730px;padding-inline:24px}.topbar{height:80px}.edition{font-size:10px;letter-spacing:.3px}.game-layout{grid-template-columns:minmax(0,1fr);gap:25px}.arsenal{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.arsenal-heading{grid-column:1/-1;margin:0}.arsenal-heading h2{font-size:21px}.small-chip{display:inline}.tower-detail{margin:0;grid-column:2;grid-row:2/4;min-height:270px}.pro-tip{padding:0 3px;grid-column:1}.tower-shop{grid-template-columns:repeat(3,minmax(0,1fr))}.tower-card{min-height:121px}.tower-name{font-size:11px}.battle-controls{padding:16px;gap:12px}.auto-label{font-size:14px;gap:8px}.ability{min-width:70px}.start-wave{min-width:210px}.statusbar{gap:38px;height:76px}.mode-badge{display:inline}.game-footer{justify-content:space-between;gap:10px}.mission-heading{padding-block:26px}.wave-intel{padding-inline:18px}}
@media(max-width:560px){.app-shell{padding-inline:16px}.topbar{height:73px;gap:8px}.wordmark{font-size:28px;letter-spacing:-2px}.brand-spark{font-size:18px;margin-left:5px}.edition{display:none}.top-actions{gap:8px}.icon-button{width:38px;height:38px;border-radius:7px;font-size:19px}.sound-slash{left:18px;top:2px}.mission-heading{padding:23px 0 19px;align-items:flex-end;gap:8px}.mission-heading .eyebrow{font-size:10px;letter-spacing:1px;margin-bottom:7px}h1{font-size:24px;letter-spacing:-.8px}.mission-heading>.text-button{font-size:12px;white-space:nowrap;padding-bottom:2px}.mission-heading>.text-button span{margin-left:3px}.game-layout{gap:22px}.battle-section{border-radius:10px}.statusbar{height:66px;padding:0 15px;justify-content:space-between;gap:10px}.stat{gap:8px}.stat strong{font-size:20px}.stat-label{font-size:10px;letter-spacing:.6px}.stat-icon{font-size:23px}.stat-total{font-size:12px}.mode-badge{display:none}.battle-controls{padding:12px;gap:8px;flex-wrap:wrap}.primary{min-height:45px}.start-wave{min-width:0;flex:1;font-size:14px;padding:12px 10px;gap:14px}.speed{min-width:64px;min-height:45px;padding:10px;font-size:13px;gap:7px}.ability{min-width:57px;font-size:9px;min-height:45px}.auto-label{order:5;width:100%;margin-top:4px;justify-content:flex-end;font-size:12px;gap:6px}.auto-label input{width:15px;height:15px}.wave-intel{padding:10px 12px 13px;font-size:11px}.wave-intel>div{gap:7px}.wave-intel strong{font-size:12px}.intel-label{font-size:9px;letter-spacing:.4px}.arsenal{display:flex;flex-direction:column;gap:13px}.arsenal-heading{width:100%;margin:0 0 1px}.arsenal-heading h2{font-size:21px;margin-top:4px}.arsenal-heading .eyebrow{font-size:10px}.small-chip{font-size:9px}.tower-shop{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tower-card{min-height:115px;display:grid;grid-template-columns:1fr;justify-items:center;padding:4px 4px 8px}.sprite-icon{width:64px;height:63px}.tower-name{font-size:12px;margin:0}.tower-price{font-size:12px;margin-top:4px}.tower-detail{width:100%;min-height:0;padding:16px}.detail-description{margin:8px 0 12px}.detail-heading .sprite-icon{height:52px;width:54px}.detail-title{font-size:20px}.detail-stats{padding:10px 0}.detail-stats>div{font-size:12px}.build-prompt{margin:7px 0 0}.pro-tip{padding:2px 1px}.pro-tip p{font-size:12px;line-height:1.6}.game-footer{padding-top:23px;padding-bottom:24px;flex-wrap:wrap}.player-copy{min-width:135px}.player-copy strong{font-size:9px}#xp-label{font-size:10px}.game-footer>#save-status{font-size:11px;margin-left:47px;margin-top:-5px}.level-badge{width:36px;height:36px}.board-label{font-size:6px;padding:3px 5px}.entrance{top:2%;left:8%}.exit-label{bottom:2%;right:2%}.wave-banner{left:7%;right:7%;padding:12px}.wave-banner strong{font-size:18px}.wave-banner span{font-size:12px}.pause-cover .eyebrow{font-size:10px}.pause-cover h2{font-size:27px;margin:15px 0}.pause-cover p{font-size:13px;margin-bottom:18px}.pause-cover .primary{font-size:14px}.pause-cover .text-button{font-size:12px;margin-top:7px}.pause-cover{padding:16px}.modal-title{font-size:27px}dialog{padding:25px 20px}.result-title{font-size:26px}.result-stats strong{font-size:22px}.result-actions button{flex:1;font-size:14px;padding-inline:12px}.keyboard-note{display:none}}
@media(max-width:355px){.app-shell{padding-inline:10px}h1{font-size:21px}.top-actions{gap:5px}.tower-name{font-size:11px}.wave-intel>span{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.placement-tray{position:absolute;left:12px;right:12px;bottom:12px;z-index:3;display:flex;align-items:center;gap:8px;padding:9px 10px;background:#211d35f2;border:1px solid #778961;border-radius:8px;box-shadow:0 4px 20px #0004}.placement-tray[hidden]{display:none}.placement-tray>span{font-size:12px;color:var(--lime);margin-right:auto;line-height:1.4}.placement-tray>span.invalid{color:#ff9baf}.placement-tray button{min-height:38px;border-radius:5px;white-space:nowrap;font-size:13px;font-weight:700;padding:8px 12px;background:var(--lime);color:var(--bg)}.placement-tray #cancel-place{background:#37304b;color:var(--ink);font-size:20px;padding:4px 12px}.detail-close{margin-left:auto;align-self:flex-start;font-size:23px;min-width:32px;min-height:32px;background:none;color:var(--muted)}.branch-hint{font-size:11px;line-height:1.5;color:var(--muted);margin:9px 0 0}.sprite-icon svg,.enemy-icon svg{display:block;pointer-events:none}
@media(max-width:560px){.tower-detail.inspecting{position:fixed;bottom:0;left:0;right:0;z-index:9;width:100%;border-radius:15px 15px 0 0;border-color:#76618d;box-shadow:0 -15px 50px #0005;padding:16px 20px;padding-bottom:calc(18px + env(safe-area-inset-bottom));max-height:60dvh;overflow:auto}.tower-detail.inspecting .detail-description{font-size:13px;margin-block:8px}.tower-detail.inspecting .detail-stats{padding:9px 0}.placement-tray{padding:7px;gap:5px;bottom:8px;left:8px;right:8px}.placement-tray>span{font-size:10px}.placement-tray button{padding:6px 9px;font-size:12px;min-height:36px}.placement-tray #cancel-place{padding:4px 9px}.upgrade-button{min-height:58px}.detail-close{min-height:38px;min-width:38px}}
.tower-name{font-size:14px;white-space:normal;line-height:1.2;text-align:center}.tower-card{min-height:137px}.tower-price{font-size:13px}.detail-stats>div{font-size:12px}.upgrade-button strong{font-size:14px}.target-button,.sell-button{font-size:14px}.type-label{font-size:12px}.build-prompt{font-size:14px}
@media(max-width:560px){.app-shell{padding-bottom:calc(120px + env(safe-area-inset-bottom))}.topbar{height:62px}.mission-heading{padding-block:17px}.statusbar{height:58px}.battle-section{position:relative}.battle-controls{flex-wrap:nowrap;padding:11px 12px}.auto-label{position:absolute;bottom:11px;right:12px;width:auto;margin:0;font-size:11px}.wave-intel{min-height:38px;padding-right:98px}.wave-intel>span{display:none}.wave-intel strong{font-size:11px}.arsenal-heading{display:none}.tower-shop{position:fixed;bottom:0;left:0;right:0;z-index:6;display:flex;gap:8px;width:100%;padding:10px 13px;padding-bottom:calc(10px + env(safe-area-inset-bottom));background:#211d35f5;border-top:1px solid #554561;backdrop-filter:blur(12px);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.tower-shop::-webkit-scrollbar{display:none}.tower-card{flex:0 0 99px;min-height:94px;padding:4px 4px 7px;display:flex;justify-content:center;gap:1px;border-radius:8px}.tower-card .sprite-icon{width:47px;height:47px}.tower-card .tower-name{font-size:12px;white-space:nowrap;line-height:1.2}.tower-card .tower-price{font-size:12px;margin-top:3px}.tower-card .tower-key{display:none}.tower-detail:not(.inspecting){display:none}.arsenal{gap:0}.game-layout{gap:16px}.pro-tip{padding-top:0}.game-footer{padding-top:15px}.toast{bottom:calc(126px + env(safe-area-inset-bottom))}.wave-intel>div{gap:6px}.tower-card.locked .tower-price{font-size:10px}}
/* Tower guide stays available beside the touch picker. */
.tower-dock{min-width:0;width:100%}.tower-guide-button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;padding:10px 12px;margin-bottom:9px;background:#312b44;border:1px solid #594b6c;border-radius:8px;text-align:left}.tower-guide-button>span:first-child{font-size:14px;font-weight:600;color:var(--lime)}.tower-guide-button>span:last-child{font-size:12px;color:var(--muted)}.tower-guide-button:hover{border-color:var(--lime)}.guide-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0 20px}.guide-picker button{display:flex;flex-direction:column;align-items:center;gap:5px;background:#302a40;border:1px solid var(--border);border-radius:8px;padding:9px 4px;min-height:80px}.guide-picker button.active{border-color:var(--lime);background:#334138}.guide-picker .sprite-icon{height:42px;width:42px}.guide-picker button>span:last-child{font-size:14px;line-height:1.25}.guide-hero{display:flex;align-items:center;gap:15px}.guide-hero>.sprite-icon{width:74px;height:86px}.guide-hero h3{font-size:23px;letter-spacing:-.6px;margin:0 0 5px}.guide-hero p{font-size:13px;color:var(--muted);margin:7px 0 0}.guide-description{font-size:15px;line-height:1.65;color:var(--muted);margin:15px 0}.guide-stats{border-bottom:1px solid var(--border)}.guide-stats>div{font-size:12px}.guide-stats strong{font-size:14px}.guide-tip{font-size:14px;line-height:1.6;background:#303c38;border:1px solid #50624c;padding:14px;border-radius:8px;color:#d9e7c9}.guide-tip strong{color:var(--lime)}.guide-upgrades-title{font-size:19px;margin:23px 0 0}.guide-paths{display:grid;gap:10px}.guide-paths details{border:1px solid #554663;border-radius:8px;background:#2d273e;overflow:hidden}.guide-paths summary{padding:15px 13px;font-size:14px;font-weight:600;cursor:pointer;min-height:48px}.guide-paths summary:focus-visible{outline:2px solid var(--lime);outline-offset:-3px}.guide-paths ol{margin:0;padding:0 15px 0 35px}.guide-paths li{padding:10px 0;border-top:1px solid var(--border);font-size:14px}.guide-paths li>div{display:flex;justify-content:space-between;gap:10px}.guide-paths li span{color:#f5d077;white-space:nowrap}.guide-paths li p{color:var(--muted);font-size:14px;line-height:1.6;margin:6px 0}.guide-done{width:100%;margin-top:22px}
@media(max-width:560px){.tower-dock{position:fixed;bottom:0;left:0;right:0;z-index:6;background:#211d35f5;backdrop-filter:blur(12px);border-top:1px solid #554561}.tower-guide-button{margin:0;border:0;border-bottom:1px solid #42384f;border-radius:0;background:transparent;padding:8px 16px;min-height:44px}.tower-dock .tower-shop{position:static;border-top:0;backdrop-filter:none;background:transparent}.app-shell{padding-bottom:calc(164px + env(safe-area-inset-bottom))}.toast{bottom:calc(170px + env(safe-area-inset-bottom))}.guide-picker button>span:last-child{font-size:13px}.guide-stats{gap:6px}.guide-stats strong{font-size:13px}}

/* Keep the field and controls in one mobile play surface. */
.board-stage{min-width:0;min-height:0;background:#151e2b}
.dock-heading{display:flex;align-items:center;gap:8px}.dock-heading .tower-guide-button{flex:1}.mobile-progress{display:none}
#detail-home{min-width:0}#tower-sheet{padding:0}#tower-sheet .tower-detail{display:block;position:static;width:100%;max-height:none;margin:0;border:0;box-shadow:none;border-radius:0;padding:22px}
.detail-close,.modal-close{min-width:44px;min-height:44px}.target-button,.sell-button{min-height:44px}.placement-tray button{min-height:44px}
.action-zone{position:relative}.action-zone .placement-tray{position:static;margin:10px 12px}.action-zone:has(.placement-tray:not([hidden])) .battle-controls{display:none}
.auto-label{position:static;width:auto;margin:0;order:initial;flex:none;min-height:44px;font-size:14px}.auto-label input{width:20px;height:20px}.wave-intel{padding-block:0}.wave-intel>div{min-width:0}.wave-intel strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tower-card.unaffordable .tower-price{color:#e7a4b5}.tower-card:active:not(:disabled){background:#455443;transform:scale(.96)}
@media(min-width:561px) and (max-width:900px){#detail-home{grid-column:2;grid-row:2/4}}
@media(max-width:600px), (max-width:950px) and (max-height:600px) and (pointer:coarse){
 html{overscroll-behavior-y:none}body{overscroll-behavior-y:none}
 .app-shell{width:100%;max-width:none;height:100vh;height:100dvh;min-height:600px;padding:env(safe-area-inset-top) max(8px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(8px,env(safe-area-inset-left));display:flex;flex-direction:column}
 .topbar{height:52px;min-height:52px;gap:8px;border:0}.wordmark{font-size:25px;letter-spacing:-1.5px}.brand-spark{font-size:16px}.edition{display:none}.top-actions{gap:6px}.icon-button{width:44px;height:44px;border-radius:11px}.sound-slash{left:21px;top:4px}
 main{display:flex;flex-direction:column;flex:1;min-height:0}.mission-heading{padding:0 2px;min-height:44px;gap:8px;align-items:center}.mission-heading>div{min-width:0}.mission-heading .eyebrow{display:none}h1{font-size:18px;letter-spacing:-.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mission-heading>.text-button{font-size:14px;min-height:44px;flex:none;padding:8px 4px}.mission-heading>.text-button span{margin-left:2px}
 .game-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;flex:1;min-height:0;gap:6px;align-items:stretch}
 .battle-section{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;min-height:0;border-radius:12px;box-shadow:none}
 .statusbar{height:46px;padding:0 12px;gap:8px;justify-content:space-between}.stat{gap:6px}.stat>div{display:flex;align-items:baseline;gap:5px}.stat-label{font-size:12px;letter-spacing:0}.stat strong{font-size:18px;font-variant-numeric:tabular-nums}.stat-icon{font-size:19px}.stat-total{font-size:12px}.mode-badge{display:none}
 .board-stage{display:grid;place-items:center;container-type:size;overflow:hidden}.board-frame{width:min(100cqw,114.285714cqh);aspect-ratio:8/7;max-width:100%}canvas{width:100%;height:auto;aspect-ratio:8/7}.board-label{display:none}
 .battle-controls{padding:8px;gap:8px;flex-wrap:nowrap}.start-wave{min-width:0;flex:1;font-size:14px;min-height:44px;padding:10px 6px;gap:8px}.speed{min-width:60px;min-height:44px;justify-content:center;padding:8px;font-size:14px}.ability{min-width:58px;min-height:44px;font-size:12px}.ability>span:first-child{font-size:16px}.primary{box-shadow:0 2px 0 #8aab47}
 .wave-intel{min-height:44px;padding:0 8px;gap:8px}.wave-intel>div{gap:5px;overflow:hidden}.intel-label{font-size:12px}.wave-intel strong{font-size:12px}.wave-intel>span{display:none}.auto-label{font-size:14px;gap:6px;justify-content:flex-end}.auto-label input{width:20px;height:20px}
 .arsenal{display:block;min-height:0;padding:0}.arsenal-heading,.pro-tip,#detail-home,.game-footer{display:none}.tower-dock{position:static;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:12px 12px 0 0;backdrop-filter:none;overflow:hidden}.dock-heading{padding:0 8px;gap:4px}.tower-guide-button{min-height:44px;padding:4px 2px;margin:0;border:0;border-radius:0;background:none}.tower-guide-button>span:first-child{font-size:14px}.tower-guide-button>span:last-child{display:none}.mobile-progress{display:block;min-height:44px;min-width:64px;padding:4px 8px;color:var(--pink);background:none;font:12px var(--mono);border-left:1px solid var(--border)}
 .tower-dock .tower-shop{position:static;display:flex;gap:7px;padding:0 8px 8px;background:transparent;backdrop-filter:none;border:0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-inline:8px;scrollbar-width:none}.tower-shop::-webkit-scrollbar{display:none}.tower-card{flex:0 0 104px;min-height:84px;padding:4px;display:grid;grid-template-columns:1fr;grid-template-rows:36px auto auto;justify-items:center;gap:2px;scroll-snap-align:start;border-radius:9px}.tower-card .sprite-icon{width:36px;height:36px}.tower-card .tower-name{font-size:14px;line-height:1.15;white-space:normal}.tower-card .tower-price{font-size:12px;margin:0}.tower-card.locked .tower-price{font-size:12px}.tower-card .tower-key{display:none}
 /* Both control states reserve the same height so placement cannot resize the field. */
 .action-zone{height:68px;min-height:68px}.action-zone .battle-controls{height:100%}
 .action-zone .placement-tray{margin:6px 8px;padding:5px;height:56px;min-height:56px;gap:6px}.action-zone .placement-tray>span{min-width:0;max-height:100%;overflow:auto}.action-zone .placement-tray button{flex-shrink:0;height:44px;line-height:20px}.placement-tray>span{font-size:12px}.placement-tray button{min-height:44px;font-size:14px;padding:8px}.placement-tray #cancel-place{min-width:44px;padding:4px}
 dialog{position:fixed;inset:auto 0 0;margin:0 auto;width:100%;max-width:600px;max-height:calc(100dvh - env(safe-area-inset-top) - 16px);border-radius:22px 22px 0 0;padding:28px 20px max(20px,env(safe-area-inset-bottom));overscroll-behavior:contain;scroll-padding-top:60px}
 dialog[open]{animation:sheet-in .2s ease-out}dialog::backdrop{backdrop-filter:blur(3px)}#tower-sheet{max-height:min(72dvh,560px);padding:0}#tower-sheet .tower-detail{padding:24px 18px max(20px,env(safe-area-inset-bottom))}.detail-description{font-size:14px}.upgrade-button small,.branch-hint{font-size:13px}.upgrade-button{min-height:64px}.detail-heading{position:relative}.detail-close{border-radius:50%;background:var(--raised)}.modal-close{position:sticky;float:right;top:0;right:0;z-index:2;margin:0 0 8px 8px;background:var(--raised)}
 .toast{bottom:auto;top:calc(env(safe-area-inset-top) + 100px);font-size:14px;padding:10px 14px}.wave-banner{left:5%;right:5%}.wave-banner strong{font-size:18px}.wave-banner span{font-size:12px}.pause-cover{padding:12px}.pause-cover h2{font-size:25px;margin:8px 0}.pause-cover p{font-size:14px;margin:0 0 10px}.pause-cover .text-button{min-height:44px;margin:0}.pause-cover .eyebrow{font-size:12px}.pause-cover .primary{min-height:44px}.guide-picker button>span:last-child{font-size:14px}
}
@media(max-width:360px){.stat-label{display:none}.mission-heading h1{font-size:16px}.mission-heading>.text-button{font-size:12px}.wave-intel .intel-label{display:none}.topbar .wordmark{font-size:23px}}
@media(max-width:950px) and (max-height:600px) and (pointer:coarse) and (orientation:landscape){
 .app-shell{min-height:340px}.topbar{height:46px;min-height:46px}.mission-heading{min-height:36px}.mission-heading>.text-button{min-height:36px}.game-layout{grid-template-columns:minmax(0,1fr) 190px;grid-template-rows:minmax(0,1fr);gap:8px}.statusbar{height:36px}.arsenal{overflow:hidden}.tower-dock{height:100%;display:flex;flex-direction:column}.tower-dock .tower-shop{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow-y:auto;overflow-x:hidden;scroll-snap-type:y proximity}.tower-card{min-height:90px}.tower-card .tower-name{font-size:12px}.wave-intel{min-height:36px}.auto-label{min-height:36px}.battle-controls{padding:6px}.pause-cover .eyebrow,.pause-cover p{display:none}#tower-sheet{max-height:90dvh}
}
@keyframes sheet-in{from{transform:translateY(24px);opacity:.3}to{transform:translateY(0);opacity:1}}

@media(max-width:600px) and (max-height:720px){.pause-cover .eyebrow,.pause-cover p{display:none}.pause-cover h2{font-size:22px;margin:4px 0 8px}}

/* Portrait phones get the full screen width; controls keep their own gutters. */
@media(max-width:600px) and (orientation:portrait){
 .app-shell{padding-inline:env(safe-area-inset-left) env(safe-area-inset-right);min-height:calc((100vw - env(safe-area-inset-left) - env(safe-area-inset-right)) * .875 + 374px + env(safe-area-inset-top) + env(safe-area-inset-bottom))}
 .topbar{height:48px;min-height:48px;padding-inline:10px}
 .mission-heading{padding-inline:12px}
 .game-layout{gap:0}
 .battle-section{border:0;border-radius:0}
 .statusbar{height:40px;padding-inline:12px}
 .board-stage{container-type:normal;min-height:calc((100vw - env(safe-area-inset-left) - env(safe-area-inset-right)) * .875)}
 .board-frame{width:100%;max-width:none}
 .tower-dock{border-inline:0;border-bottom:0;border-radius:0}
 .dock-heading{padding-inline:12px}
 .tower-dock .tower-shop{padding:0 10px 8px;gap:8px}
 .tower-card{flex-basis:140px;min-height:64px;grid-template-columns:38px minmax(0,1fr);grid-template-rows:1fr 1fr;column-gap:6px;padding:6px;align-items:center}
 .tower-card .sprite-icon{grid-row:1/3;width:38px;height:46px}
 .tower-card .tower-name{justify-self:start;text-align:left;font-size:14px;align-self:end}
 .tower-card .tower-price{justify-self:start;align-self:start}
}

/* Reserve touch drags for precision placement; dialogs stay independently scrollable. */
.app-shell.placing-tower{touch-action:none;-webkit-user-select:none;user-select:none}
.app-shell.placing-tower #game{cursor:move}
.result-actions .endless-continue{flex:1 0 100%;width:100%}

/* Ten-world selector: actual routes, themed terrain, and readable campaign records. */
.map-card{gap:14px;padding:12px;align-items:flex-start;min-width:0}
.map-card.current{border-color:var(--map-accent,var(--lime))}
.map-card.locked{opacity:.8}
.map-preview{position:relative;flex:0 0 88px;overflow:hidden;border-radius:7px;border:1px solid var(--map-accent);background:#253e41}
.map-preview canvas{width:88px;height:77px;cursor:inherit;pointer-events:none}
.map-number{position:absolute;top:4px;left:4px;font:14px var(--pixel);line-height:1.3;padding:3px 5px;border-radius:3px;background:#171526e8;color:var(--map-accent)}
.map-copy{display:block;min-width:0}
.map-card strong{font-size:17px;line-height:1.25;overflow-wrap:anywhere}
.map-route{display:block;color:var(--map-accent);font-size:13px;line-height:1.4;margin:4px 0}
.map-tag{display:block;color:var(--muted);font-size:13px;line-height:1.4}
.map-card small{font:12px var(--mono);line-height:1.5;color:#d4c9df;margin-top:7px}
@media(max-width:380px){.map-card{gap:10px;padding:10px}.map-preview{flex-basis:72px}.map-preview canvas{width:72px;height:63px}.map-card strong{font-size:16px}}

/* The high-score cabinet shares the existing pause-safe, scrollable game dialog. */
.dock-heading .tower-guide-button>span:last-child{display:none}
.dock-heading .mobile-progress{display:flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0;min-height:44px;min-width:94px;margin:0;padding:6px 10px;border-left:1px solid var(--border);background:transparent;color:var(--pink);font:600 14px var(--body)}
.records-trophy{display:inline-block;font-size:16px;line-height:1;filter:saturate(.85);transform:translateY(-1px)}
.records-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0 16px;clear:both}
.records-summary>div{padding:16px 12px;border:1px solid #584b6b;border-radius:10px;background:#2d273f;min-width:0}
.records-summary>div>span{font:12px var(--mono);color:var(--muted);display:block;line-height:1.5}
.records-summary strong{display:block;margin-top:7px;color:var(--lime);font:700 23px var(--mono);line-height:1.3;overflow-wrap:anywhere}
.records-summary strong small{font-size:16px;color:var(--muted)}
.records-nav{display:flex;gap:6px;padding:4px;border-radius:9px;background:#1e1a2d;margin-bottom:22px}
.records-nav button{flex:1;min-width:0;min-height:44px;border-radius:6px;background:transparent;padding:8px;color:var(--muted);font-size:14px;line-height:1.4}
.records-nav button[aria-pressed=true]{background:#493854;color:#ffe3a0}
.records-heading{margin:0 0 8px;font-size:19px;line-height:1.3}
.records-note{margin:0 0 16px;color:var(--muted);font-size:14px;line-height:1.6}
.records-list{display:grid;gap:12px}
.record-card{padding:12px;border:1px solid #4b405b;background:#2b263b;border-radius:10px;min-width:0}
.record-map{display:flex;align-items:center;gap:12px;min-width:0}
.record-map-copy{min-width:0}.record-map h4{font-size:16px;line-height:1.35;margin:0 0 6px;overflow-wrap:anywhere}
.record-map p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
.record-current{display:block;margin-top:4px;color:var(--map-accent);font-size:13px;line-height:1.5}
.record-score{display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #ffffff14}
.record-score-label{font:12px var(--mono);color:var(--muted);line-height:1.5}
.record-score strong{color:var(--muted);font:700 20px var(--mono);line-height:1.3}
.record-score.has-record strong{color:var(--map-accent)}
.record-score>span:last-child{grid-column:1/-1;font-size:13px;line-height:1.5;color:var(--muted)}
.achievement-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.achievement-card{display:flex;flex-direction:column;min-width:0;background:#2b263b;border:1px solid #4b405b;border-radius:10px;padding:15px}
.achievement-card.earned{border-color:#7d9155;background:#303a31}
.achievement-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.achievement-mark{color:var(--muted);font-size:25px;line-height:1}.earned .achievement-mark{color:#f9d27e}
.achievement-status{font:12px var(--mono);color:var(--muted)}.earned .achievement-status{color:var(--lime)}
.achievement-card h4{font-size:16px;line-height:1.4;margin:0 0 6px}
.achievement-card p{font-size:14px;line-height:1.5;margin:0 0 15px;color:var(--muted);flex:1}
.achievement-card progress{display:block;width:100%;height:7px;border:0;appearance:none;border-radius:4px;background:#171526;overflow:hidden}
.achievement-card progress::-webkit-progress-bar{background:#171526;border-radius:4px}
.achievement-card progress::-webkit-progress-value{background:#c8a3ff;border-radius:4px}.achievement-card progress::-moz-progress-bar{background:#c8a3ff;border-radius:4px}
.achievement-card.earned progress::-webkit-progress-value{background:var(--lime)}.achievement-card.earned progress::-moz-progress-bar{background:var(--lime)}
.achievement-count{font:12px var(--mono);color:var(--muted);margin-top:9px;line-height:1.5}
.records-actions{display:flex;flex-wrap:wrap;gap:10px}.records-actions button{flex:1;min-height:44px;font-size:14px;padding:12px}
.result-record-link{width:100%;min-height:44px;margin-top:12px;text-align:center;color:var(--pink)}
@media(max-width:420px){.achievement-list{grid-template-columns:1fr}.records-summary strong{font-size:21px}.record-score{grid-template-columns:1fr}.record-score strong{grid-row:2}.record-map .map-preview{flex-basis:72px}.record-map .map-preview canvas{width:72px;height:63px}.records-actions{flex-direction:column}}

.stat-bonus{display:block;color:var(--lime);font-size:12px;margin-top:5px}.support-note,.tower-traits{font-size:14px;line-height:1.5;color:var(--muted);margin:8px 0 12px}.support-note{color:var(--lime)}.tower-deletes{font:12px var(--mono);color:var(--muted);margin:0 0 12px}.tower-deletes span{color:var(--ink)}
#tower-sheet::backdrop{backdrop-filter:none;background:#0d0a194d}

.current-stats-label{font-size:12px;line-height:1.5;color:var(--muted);margin:12px 0 4px}.upgrade-button .upgrade-result{color:var(--lime);font-size:13px;line-height:1.5}.detail-stats{flex-wrap:wrap;row-gap:14px}
.speed{min-width:82px;height:48px;min-height:48px;justify-content:center;gap:7px;line-height:1;border-width:1px}.speed span{display:inline-block;min-width:25px;font-size:11px;line-height:1;letter-spacing:-2px}
/* All three controls share the row's height, including the two-line Panic button. */
.battle-controls{align-items:stretch}
.battle-controls>button{height:auto;min-height:48px;align-self:stretch;margin-block:0;padding-block:6px;box-shadow:none;line-height:1.2;box-sizing:border-box}
.battle-controls>.primary{border:1px solid transparent}
@media(max-width:600px), (max-width:950px) and (max-height:600px) and (pointer:coarse){.battle-controls>button{min-height:44px}}

/* Keep all four tower metrics readable on narrow screens. */
.detail-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}.dps-note{font-size:13px;line-height:1.5;color:var(--muted);margin:8px 0 12px}

.start-wave{font-variant-numeric:tabular-nums}

/* Balanced metrics and top-layer help keep the tower panel compact and steady. */
.current-stats-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:14px 0 6px}
.current-stats-heading .current-stats-label,.current-stats-heading .tower-deletes{margin:0;font-size:.875rem;line-height:1.5}
.current-stats-heading .tower-deletes{text-align:right;margin-left:auto;font-family:var(--body);font-variant-numeric:tabular-nums}
.tower-deletes span{font-family:var(--mono);margin-left:4px;overflow-wrap:anywhere}
#current-tower-stats .detail-stats{gap:12px 10px;padding:12px 0;align-items:start}
.stat-item{display:block;width:100%;min-width:0;min-height:44px;padding:2px;background:none;border:0;border-radius:5px;text-align:center;color:var(--muted)}
.stat-item:active:not(:disabled){transform:none}
.stat-item:hover .stat-label,.stat-item[aria-expanded="true"] .stat-label{color:var(--lime)}
.stat-item .stat-label{display:block;font:.875rem var(--body);letter-spacing:0;color:var(--muted);line-height:1.5;text-decoration:underline dotted;text-underline-offset:3px}
.stat-item .stat-label i{font-style:normal;font-size:.8125rem;color:var(--pink);margin-left:4px;text-decoration:none}
.stat-item strong{display:block;color:var(--ink);font:1.125rem var(--mono);line-height:1.4;margin-top:4px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.stat-item .stat-bonus{font-size:.875rem;line-height:1.4;margin-top:3px}
.tower-traits{text-align:center;border-top:1px solid #ffffff10;padding-top:10px;margin:0 0 12px;font-size:.875rem;line-height:1.5}
.stat-help{position:fixed;inset:auto;margin:0;width:18rem;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:14px 16px;border:1px solid #807091;border-radius:10px;background:#30283f;color:var(--ink);box-shadow:0 8px 28px #08061180;font:1rem/1.5 var(--body);text-align:left}
.stat-help::backdrop{background:transparent}
.stat-help>strong{display:block;color:var(--lime);font-size:.875rem;line-height:1.4}
.stat-help>p{margin:7px 0 0}
.detail-heading>div{min-width:0;flex:1}.detail-heading .sprite-icon{margin-left:0}
.tower-detail .detail-title{font-size:1.25rem;line-height:1.3}
.tower-detail .type-label{font-size:.875rem;line-height:1.5;letter-spacing:0}
.tower-detail .branch-badge{font-size:.875rem;line-height:1.5}
.tower-detail .path-max{text-align:center;margin:12px 0;padding:12px 0;font-size:.875rem;line-height:1.5}
.detail-bottom{position:sticky;bottom:0;margin-inline:-2px;margin-top:12px;padding:10px 2px 2px;background:var(--surface);border-top:1px solid #ffffff12;z-index:2;flex-wrap:wrap}
.target-button,.sell-button{min-height:44px;padding:9px 12px;background:var(--raised);border:1px solid #5a506c;border-radius:7px;font-size:.875rem;line-height:1.3}
.target-button:hover,.sell-button:hover{border-color:var(--lime);background:#3a324c}.sell-button{display:flex;align-items:center;gap:8px;color:var(--pink);margin-left:auto}.sell-button strong{font:.875rem var(--mono);color:var(--ink)}

/* Profile extends the existing arcade dialog without adding a gate to play. */
.profile-button svg{display:block}.profile-button.signed-in{color:var(--lime);border-color:var(--lime)}.profile-button.sync-warning{border-color:#ffd59d}
.profile-content{clear:both}.profile-intro{font-size:20px;line-height:1.4;margin:16px 0 10px;color:var(--lime)}.profile-copy{font-size:14px;line-height:1.65;color:var(--muted);margin:10px 0}.profile-identity{display:flex;gap:14px;align-items:center;margin:20px 0}.profile-avatar{display:grid;place-items:center;flex:none;width:48px;height:48px;border:1px solid var(--lime);border-radius:12px;color:var(--lime);background:var(--raised);font:24px var(--pixel)}.profile-identity>div{min-width:0}.profile-identity h3{font-size:18px;line-height:1.4;margin:0;overflow-wrap:anywhere}.profile-identity p{font-size:14px;margin:3px 0;overflow-wrap:anywhere}.profile-identity span:last-child{font-size:14px;color:var(--muted)}.profile-status{font-size:14px;line-height:1.6;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--raised);min-height:48px}.profile-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.profile-actions .primary,.profile-actions .secondary{min-height:46px;font-size:15px;justify-content:center}.chatgpt-signin{display:flex;align-items:center;text-align:center}.merge-explanation{margin-top:18px}.profile-battles{border-top:1px solid var(--border);margin-top:20px;padding-top:14px}.profile-battles h3{font-size:17px;margin:0 0 5px}.saved-battle{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;border:1px solid var(--border);border-radius:10px;padding:14px;background:var(--raised);margin:10px 0;min-height:64px}.saved-battle strong{display:block;font-size:15px}.saved-battle small{display:block;font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5}.saved-battle>span:last-child{color:var(--lime)}.profile-signout{min-height:44px;margin-top:10px}.profile-pause-note{font-size:13px;margin-bottom:0}
@media(max-width:400px){.profile-actions>*{flex:1 1 100%}.profile-intro{font-size:18px}}
