
:root{
  --ink:#293042;--muted:#667085;--cream:#fff7e6;--paper:#fffdf8;--blue:#3679ca;
  --green:#2fa65a;--gold:#efb23b;--red:#d55252;--line:#d9cfb7;--panel:rgba(255,255,255,.96);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% 18%,#24150f 0%,#120a06 48%,#050302 100%);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
button,input,select{font:inherit}
button{border:0;border-radius:10px;padding:9px 12px;background:#e9edf4;color:var(--ink);font-weight:800;cursor:pointer;box-shadow:0 2px 0 rgba(0,0,0,.09)}
button:hover:not(:disabled){filter:brightness(1.035);transform:translateY(-1px)}
button:disabled{opacity:.42;cursor:not-allowed;transform:none}
button.primary{background:var(--green);color:#fff}.danger{background:var(--red);color:#fff}.wide{width:100%}

/* Home / setup */
.home-screen{min-height:100vh;display:grid;place-items:center;padding:12px 20px;background:radial-gradient(circle at 25% 10%,rgba(255,255,255,.07),transparent 34%),linear-gradient(135deg,#322219,#140d09)}
.home-card{width:min(1440px,97vw);display:grid;grid-template-columns:minmax(340px,420px) minmax(0,1fr);gap:22px;padding:18px;background:rgba(255,255,255,.94);border:3px solid rgba(255,255,255,.9);border-radius:26px;box-shadow:0 24px 70px rgba(45,54,75,.24)}
.home-hero{position:relative;border-radius:20px;padding:24px 22px 24px;min-height:760px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;background:linear-gradient(180deg,#9b6336 0%,#81522f 18%,#99683f 54%,#84512f 100%);box-shadow:inset 0 0 0 3px rgba(255,255,255,.16),inset 0 0 35px rgba(0,0,0,.15)}
.home-hero::before{content:"";position:absolute;inset:0;border-radius:20px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.055) 0 2px,transparent 2px 78px),repeating-linear-gradient(180deg,rgba(0,0,0,.04) 0 1px,transparent 1px 24px);opacity:.48;pointer-events:none}
.hero-brand{position:relative;z-index:1;display:flex;flex-direction:column;gap:18px}
.hero-board{position:relative;min-height:430px;padding:22px 18px;border-radius:18px;background:linear-gradient(180deg,rgba(124,76,40,.24),rgba(77,44,24,.16));box-shadow:inset 0 0 0 2px rgba(255,255,255,.1)}
.home-logo{position:relative;z-index:3;max-width:250px;line-height:.82;text-transform:uppercase;text-shadow:0 4px 0 rgba(86,50,25,.65),0 8px 20px rgba(0,0,0,.18)}
.home-logo span{display:block;font-weight:1000;letter-spacing:1.5px}.home-logo .l1{font-size:58px;color:#f7fbff}.home-logo .l2{font-size:79px;color:#ffd268}.home-logo .l3{font-size:57px;color:#f7fbff}
.hero-prop{position:absolute;z-index:2;filter:drop-shadow(0 7px 8px rgba(43,24,10,.26))}
.hero-watergun{top:6px;left:4px;width:118px;height:48px}.hero-watergun::before{content:"";position:absolute;left:0;top:8px;width:88px;height:24px;border-radius:18px;background:linear-gradient(180deg,#ffbf55,#ff8d2c);box-shadow:inset 0 3px 0 rgba(255,255,255,.45),0 0 0 4px #1ea8df}.hero-watergun::after{content:"";position:absolute;right:0;top:12px;width:46px;height:18px;border-radius:14px 12px 10px 14px;background:linear-gradient(180deg,#45d6ff,#1a8cc8);box-shadow:inset 0 2px 0 rgba(255,255,255,.35)}
.hero-plane{top:26px;right:18px;width:120px;height:76px}.hero-plane::before{content:"";position:absolute;right:0;top:12px;width:0;height:0;border-top:22px solid transparent;border-bottom:22px solid transparent;border-left:74px solid #eef5fb;transform:rotate(-10deg);filter:drop-shadow(0 0 0 4px #5d4836)}.hero-plane::after{content:"";position:absolute;right:26px;top:28px;width:40px;height:2px;background:#cad7e0;transform:rotate(26deg)}
.hero-slingshot{left:-2px;bottom:78px;width:96px;height:112px}.hero-slingshot::before,.hero-slingshot::after{content:"";position:absolute;bottom:24px;width:12px;height:70px;background:#e6c48b;border:4px solid #85542f;border-bottom:0;border-radius:14px 14px 0 0}.hero-slingshot::before{left:14px;transform:rotate(30deg);transform-origin:bottom center}.hero-slingshot::after{right:14px;transform:rotate(-30deg);transform-origin:bottom center}.hero-slingshot i{position:absolute;left:31px;bottom:12px;width:30px;height:54px;border-left:5px solid #ea5560;border-right:5px solid #ea5560;border-bottom:5px solid #ea5560;border-radius:0 0 17px 17px}
.hero-slime{left:34px;bottom:6px;width:116px;height:82px}.hero-slime::before{content:"";position:absolute;left:10px;bottom:12px;width:50px;height:38px;border-radius:10px;background:linear-gradient(180deg,#c6d2de,#8ca0b3);border:4px solid #6d7f90;transform:rotate(-10deg)}.hero-slime::after{content:"";position:absolute;left:48px;bottom:22px;width:50px;height:34px;border-radius:12px 12px 18px 18px;background:linear-gradient(180deg,#83f260,#22b84a);box-shadow:0 3px 0 rgba(0,0,0,.12)}
.hero-firecracker{left:122px;bottom:12px;width:98px;height:44px}.hero-firecracker::before{content:"";position:absolute;left:0;top:11px;width:78px;height:22px;border-radius:12px;background:linear-gradient(180deg,#ff7054,#cb2e2e);border:4px solid #f2c75d}.hero-firecracker::after{content:"";position:absolute;right:4px;top:2px;width:18px;height:18px;border-top:4px solid #f0d67a;border-right:4px solid #f0d67a;border-radius:0 16px 0 0;transform:rotate(18deg)}
.hero-pests{position:absolute;inset:0;pointer-events:none;z-index:1}.pest{position:absolute;display:block;filter:drop-shadow(0 3px 5px rgba(48,28,12,.18))}
.pest-ladybug{top:134px;left:242px;width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 45% 40%,#ff6d63 0 48%,#cb251f 49% 100%)}.pest-ladybug::before{content:"";position:absolute;left:12px;top:0;width:10px;height:34px;background:#1d2024}.pest-ladybug::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 34% 34%,#1c1d22 0 3px,transparent 4px),radial-gradient(circle at 67% 37%,#1c1d22 0 3px,transparent 4px),radial-gradient(circle at 35% 67%,#1c1d22 0 3px,transparent 4px),radial-gradient(circle at 67% 68%,#1c1d22 0 3px,transparent 4px)}
.pest-beetle{top:176px;left:285px;width:36px;height:28px;border-radius:50% 50% 45% 45%;background:linear-gradient(180deg,#584f49,#2c2521)}.pest-beetle::before{content:"";position:absolute;left:12px;top:-6px;width:12px;height:12px;border-radius:50%;background:#332b28}.pest-beetle::after{content:"";position:absolute;left:-6px;right:-6px;top:10px;height:2px;background:transparent;box-shadow:-2px -8px 0 0 #2c2521,38px -8px 0 0 #2c2521,-6px 0 0 0 #2c2521,42px 0 0 0 #2c2521,-2px 8px 0 0 #2c2521,38px 8px 0 0 #2c2521}
.pest-fly{top:224px;left:224px;width:38px;height:28px}.pest-fly::before{content:"";position:absolute;left:12px;top:7px;width:18px;height:14px;border-radius:55% 60% 50% 55%;background:#3a3047;box-shadow:-1px 0 0 1px #241d2d}.pest-fly::after{content:"";position:absolute;left:-2px;top:1px;width:42px;height:26px;background:linear-gradient(155deg,transparent 0 38%,#5d4d76 39% 58%,transparent 59%),linear-gradient(25deg,transparent 0 38%,#5d4d76 39% 58%,transparent 59%);border-radius:50%}
.pest-worm{bottom:118px;right:20px;width:78px;height:28px;border-radius:55% 45% 45% 55%;background:linear-gradient(90deg,#315d31 0 18%,#63a84a 19% 76%,#7abb58 77%);box-shadow:-22px 4px 0 -8px #6b4328}
.home-hero p{max-width:314px;margin:0;font-weight:800;line-height:1.45;color:#fff7e3;text-shadow:0 2px 7px rgba(59,32,10,.24)}
.version-tag{position:relative;z-index:1;font-size:12px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#fff3d4;text-shadow:0 1px 3px rgba(51,32,12,.35)}
.setup-panel{display:flex;flex-direction:column;gap:10px;padding:3px 2px}.setup-panel h1{margin:0;font-size:30px}.setup-panel>p{margin:-5px 0 1px;color:var(--muted)}
.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-card{min-height:84px;text-align:left;padding:14px;border:2px solid #d9e1ec;background:#f7f9fc}.mode-card.active{border-color:var(--blue);background:#ebf4ff;box-shadow:0 0 0 3px rgba(54,121,202,.12)}.mode-card strong,.mode-card span{display:block}.mode-card span{font-size:12px;color:var(--muted);margin-top:4px}.mode-card.coming{cursor:not-allowed}
.setup-options-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.setup-group{border:1px solid #e0e4eb;border-radius:14px;padding:10px;background:#fbfcfe}.setup-label{font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.8px;color:var(--blue);margin-bottom:7px}.choice-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.choice-button{position:relative}.choice-button input{position:absolute;opacity:0;pointer-events:none}.choice-button span{display:block;padding:10px;border:2px solid #d8dee9;border-radius:10px;text-align:center;font-weight:850;background:#fff}.choice-button input:checked+span{border-color:var(--green);background:#eaf9ef;box-shadow:0 0 0 3px rgba(47,166,90,.12)}
.setup-preview{height:184px;border-radius:15px;background:#d8c99f center/contain no-repeat;border:2px solid #fff;box-shadow:inset 0 0 0 1px rgba(50,60,80,.12)}
.setup-summary{text-align:center;font-size:13px;color:var(--muted);font-weight:750}
.setup-rules{margin-top:-6px;text-align:center;font-size:12px;line-height:1.35;color:#73552e;font-weight:800}
.setup-group.rules-group{padding:10px 12px}
.choice-button span small{display:block;margin-top:3px;color:var(--muted);font-size:10px;font-weight:750;line-height:1.25}
.choice-button input:checked+span small{color:#46664d}
.start-button{padding:13px;font-size:18px}

/* Gameplay */
.game-shell{min-height:100vh;padding:5px}
.game-layout{width:min(1590px,100%);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 388px;gap:10px;align-items:start}
.board-column{min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px}
.canvas-stage{position:relative;width:min(100%,1250px,calc((100vh - 116px)*1.25));aspect-ratio:5/4;border-radius:14px;overflow:hidden;background:#d9c89a;box-shadow:0 10px 28px rgba(44,49,64,.2);flex:0 0 auto}
canvas#gameCanvas{display:block;width:100%;height:100%;background:#d9c89a;cursor:crosshair;touch-action:none}
.canvas-controls{position:absolute;left:1.4%;bottom:1.35%;z-index:8;display:flex;align-items:center;gap:5px;padding:5px 7px;border-radius:12px;background:rgba(255,253,247,.88);border:1px solid rgba(85,66,42,.25);box-shadow:0 3px 12px rgba(0,0,0,.18);backdrop-filter:blur(3px)}
.canvas-controls button{width:34px;height:31px;padding:0;border-radius:8px}.canvas-controls input[type=range]{width:66px;accent-color:var(--blue)}
.pause-overlay,.end-dialog{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:rgba(25,29,38,.68);backdrop-filter:blur(2px)}
.confirm-dialog{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:rgba(25,18,13,.72);backdrop-filter:blur(2px)}
.confirm-card{width:min(430px,calc(100% - 44px));padding:24px 26px 22px;text-align:center;border:3px solid #764820;border-radius:18px;background:linear-gradient(rgba(255,250,236,.995),rgba(241,218,169,.995));box-shadow:0 22px 60px rgba(0,0,0,.46),inset 0 0 0 2px rgba(255,255,255,.58)}
.confirm-card h2{margin:0 0 8px;color:#4d2f1a;font-family:Georgia,serif;font-size:29px;letter-spacing:.5px;text-transform:uppercase}
.confirm-card p{margin:0 0 18px;color:#6d5138;font-size:15px;line-height:1.4;font-weight:800}
.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.confirm-actions button{padding:12px 10px;font-size:15px;font-weight:950}
#confirmPrimaryBtn{background:#b94f42;color:#fff;border:2px solid #783126}
#confirmCancelBtn{background:#fff5d4;color:#543b1f;border:2px solid #9a7223}
.pause-card,.end-card{width:min(390px,calc(100% - 44px));padding:25px 27px;text-align:center;background:rgba(255,255,255,.985);border-radius:18px;box-shadow:0 18px 55px rgba(0,0,0,.38)}
.pause-card h2,.end-card h2{margin:0 0 7px;font-size:35px}.pause-card p,.end-card p{margin:0 0 17px;color:var(--muted);font-weight:700}.pause-actions{display:grid;gap:8px}.pause-actions button{padding:12px;font-size:16px}
.end-card{width:min(560px,calc(100% - 40px));padding:24px 24px 20px;text-align:left;border:3px solid #7b4d22;background:linear-gradient(rgba(255,252,244,.99),rgba(248,235,203,.99));box-shadow:0 22px 60px rgba(0,0,0,.42),inset 0 0 0 2px rgba(255,255,255,.55)}
.end-card h2{margin:0 0 4px;text-align:center;color:#4d2f1a;font-family:Georgia,serif;font-size:36px;letter-spacing:.4px}.end-card p{margin:0 0 12px;text-align:center;color:#6d5a48;font-weight:800}.end-summary{font-size:15px;line-height:1.45;text-align:center;margin-bottom:12px;color:#5b4632}.end-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin:12px 0 14px}.end-grid div{background:rgba(255,255,255,.55);border:1px solid rgba(124,87,43,.22);border-radius:10px;padding:9px 10px}.end-grid dt{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#7a674f;font-weight:900}.end-grid dd{margin:3px 0 0;font-size:18px;font-weight:950;color:#2d241a}.end-tip{margin:12px 0 8px;padding:11px 12px;border-radius:10px;background:#eaf4ff;border:2px solid #6da2d5;color:#263e59;font-size:13px;line-height:1.4;font-weight:800}.end-tip strong{display:block;margin-bottom:3px;color:#1d568d;text-transform:uppercase;letter-spacing:.5px;font-size:11px}.end-hint{font-size:13px;line-height:1.4;color:#6f5d4a;text-align:center;margin:2px 0 0}.end-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:14px}.end-actions button{padding:11px 10px;font-size:15px;font-weight:900}.end-actions #endOkBtn{background:var(--green);color:#fff}.end-actions #endRestartBtn{background:#fff4cf;color:#5b4214;border:2px solid #9a7223}.end-actions #endHomeBtn{background:var(--red);color:#fff}

.wave-control-bar{width:min(100%,1250px,calc((100vh - 116px)*1.25));height:84px;display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:7px;padding:6px;background:rgba(255,255,255,.95);border-radius:13px;box-shadow:0 7px 20px rgba(44,49,64,.15)}
.wave-rail{display:flex;gap:6px;overflow-x:auto;padding:2px;scroll-behavior:smooth;scrollbar-width:thin}.wave-tick{--wave-color:#7c8597;flex:0 0 88px;height:67px;border:1px solid rgba(40,45,60,.23);border-top:5px solid var(--wave-color);border-radius:9px;background:#f3f5f8;position:relative;padding:3px 4px;text-align:center;transition:.15s ease}.wave-tick.done{opacity:.48;filter:saturate(.55)}.wave-tick.current{transform:translateY(-1px);outline:3px solid #f4b028;z-index:2;box-shadow:0 3px 12px rgba(244,176,40,.34)}.wave-tick.next{outline:2px dashed rgba(47,166,90,.78)}.wave-tick .badge{position:absolute;right:3px;top:2px;font-size:7px;font-weight:1000;text-transform:uppercase;background:rgba(255,255,255,.9);border-radius:5px;padding:1px 3px}.wave-icon{display:block;width:32px;height:28px;margin:0 auto}.wave-tick .c{display:block;font-size:10px;font-weight:950;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wave-tick .n{display:block;font-size:9px;font-weight:850;color:#4b5565;margin-top:2px}.send-wave{height:100%;font-size:15px;line-height:1.15;touch-action:manipulation;user-select:none;-webkit-user-select:none}.send-wave small{display:block;font-size:10px;margin-top:3px;opacity:.85}
.status-message{display:none !important}.status-message.good{display:none !important}.status-message.bad{display:none !important}

.side-panel{max-height:calc(100vh - 10px);overflow:auto;display:flex;flex-direction:column;gap:8px;padding-right:1px}.side-panel section,.side-panel details{background:var(--panel);border-radius:13px;padding:10px;box-shadow:0 7px 20px rgba(44,49,64,.14);border:1px solid rgba(255,255,255,.92)}
.section-title{text-transform:uppercase;letter-spacing:.8px;font-weight:950;color:var(--blue);font-size:11px;margin-bottom:7px}.tower-palette{padding-bottom:8px}.tower-toolbar{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.tower-button{position:relative;min-height:62px;padding:4px 2px 3px;background:#f5f1e7;border:2px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center}.tower-button.selected{border-color:var(--green);background:#eaffef;box-shadow:0 0 0 2px rgba(49,166,90,.16)}.tower-button.unaffordable{opacity:.5}.tower-button .icon{width:27px;height:27px;margin-bottom:1px}.tower-button .tname{font-size:9px;line-height:1.02;font-weight:900}.tower-button .cost{font-size:8px;color:#8b6200}.tower-button .key{position:absolute;left:4px;top:2px;font-size:8px;color:#667;font-weight:900}.tower-button.game-locked{filter:grayscale(.45)}
.context-panel{min-height:332px}.context-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}.context-name{font-size:21px;font-weight:950;line-height:1.05}.level-pill{font-size:10px;padding:4px 7px;border-radius:99px;background:#fff1bd;color:#8b6200;font-weight:900}.muted{color:var(--muted)}.small{font-size:11px}.empty-state{color:var(--muted);font-size:13px;line-height:1.45;padding:6px 0}.stat-list{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:9px 0}.stat-list div{background:#f3f6fa;border-radius:8px;padding:6px}.stat-list dt{font-size:9px;text-transform:uppercase;color:var(--muted);font-weight:850}.stat-list dd{margin:2px 0 0;font-weight:950;font-size:13px}.button-stack{display:grid;grid-template-columns:1fr 1fr;gap:5px}.button-stack .danger{grid-column:1/-1}.wave-context-name{font-size:22px;font-weight:950}.countdown-row{display:flex;justify-content:space-between;margin:8px 0;padding-top:7px;border-top:1px solid #e8e2d4}
.aux-panel{min-height:210px;display:flex;flex-direction:column}.preview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}.preview-card{background:#f6f7fb;border:1px solid #e3e7ef;border-radius:10px;padding:6px 4px;text-align:center}.preview-card canvas{display:block;width:34px;height:28px;margin:0 auto 2px}.preview-card .pname{display:block;font-size:9px;font-weight:900;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-card .pcount{display:block;font-size:10px;color:#4b5565;font-weight:850;margin-top:2px}.preview-empty{padding:12px 0;color:var(--muted);font-size:12px;text-align:center}.multiplayer-stub{margin-top:auto;border-top:1px dashed #d8dce7;padding-top:10px}.stub-box{margin-top:8px;border:2px dashed #d7dce5;border-radius:12px;padding:16px 10px;color:#a0a8b7;text-align:center;font-weight:800;background:#fbfcfe}.stub-small{font-size:11px;color:var(--muted);line-height:1.35}.control-note{font-size:11px;color:var(--muted);line-height:1.35;margin-top:8px}details summary{cursor:pointer;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.7px;color:var(--blue)}.help-card p{font-size:11px;line-height:1.4}.debug-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:7px 0}.help-card label{display:block;font-size:11px;margin:6px 0}.help-card input,.help-card select{width:100%;margin-top:3px;padding:5px;border:1px solid #ccd3df;border-radius:7px}

@media(max-width:1180px){.game-layout{grid-template-columns:minmax(0,1fr) 330px}.tower-button{min-height:58px}.context-panel{min-height:280px}}
@media(max-width:1100px){.home-card{grid-template-columns:minmax(300px,360px) minmax(0,1fr)}.setup-options-grid{grid-template-columns:1fr}.home-hero{min-height:720px}}
@media(max-width:900px){.game-layout{grid-template-columns:1fr}.side-panel{max-height:none;display:grid;grid-template-columns:1fr 1fr}.tower-palette{grid-column:1}.context-panel{grid-column:2}.help-card{grid-column:1/-1}.canvas-stage,.wave-control-bar,.status-message{width:min(100%,1000px)}.home-card{grid-template-columns:1fr}.home-hero{min-height:260px}.setup-options-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.side-panel{display:flex}.wave-control-bar{grid-template-columns:1fr 130px}.home-screen{padding:8px}.home-card{padding:10px}.choice-row,.mode-grid,.setup-options-grid{grid-template-columns:1fr}}

/* v0.2.9 wide illustrated interface */
#gameScreen.game-shell{min-height:100vh;padding:4px;display:grid;place-items:center;background:radial-gradient(circle at 50% 15%,#28170f,#120906 62%,#040201)}
#gameScreen .game-layout{position:relative;display:block;width:min(1500px,calc(100vw - 8px),calc((100vh - 8px)*1.875));aspect-ratio:15/8;margin:auto;background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png");background-size:100% 100%;background-repeat:no-repeat;overflow:hidden;border-radius:10px;box-shadow:0 18px 55px rgba(38,30,20,.35)}

#gameScreen .left-artwork{position:absolute;left:0;top:0;width:14.9%;height:100%;z-index:20;pointer-events:none;background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png");background-size:100% 100%;background-repeat:no-repeat;filter:drop-shadow(0 3px 8px rgba(0,0,0,.12));}
#gameScreen .board-column{position:absolute;left:14.6667%;top:0;width:60%;height:100%;display:block;min-width:0}
#gameScreen .canvas-stage{position:absolute;left:0;top:0;width:100%;height:90%;aspect-ratio:auto;border-radius:0;overflow:visible;background:transparent;box-shadow:none}
#gameScreen canvas#gameCanvas{width:100%;height:100%;border-radius:0;background:transparent}
#gameScreen .wave-control-bar{position:absolute;left:0;top:90%;width:100%;height:10%;display:grid;grid-template-columns:minmax(0,1fr) 132px;gap:5px;padding:5px 7px 6px;background:linear-gradient(#f7e7be,#e6c98c);border:3px solid #70431f;border-radius:12px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.35),0 3px 8px rgba(0,0,0,.25)}
#gameScreen .wave-rail{gap:4px;padding:1px;overflow:hidden}
#gameScreen .wave-tick{--wave-color:#7c8597;flex:0 0 73px;height:61px;padding:2px 3px;border:1px solid #9b7445;border-top:5px solid var(--wave-color);border-radius:8px;background:#f6e7c7;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
#gameScreen .wave-tick.current{outline:3px solid #278be0;box-shadow:0 0 0 2px #f8d36b,0 2px 8px rgba(0,0,0,.22)}
#gameScreen .wave-tick.next{outline:2px dashed #3dab63}
#gameScreen .wave-icon{width:29px;height:25px}
#gameScreen .wave-tick .c{font-size:8px}
#gameScreen .wave-tick .n{font-size:8px}
#gameScreen .wave-tick .badge{font-size:6px}
#gameScreen .send-wave{height:100%;border:3px solid #155d9e;border-radius:10px;background:linear-gradient(#2f98e6,#1f70be);color:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.35),0 2px 0 #124a7a;font-size:14px}
#gameScreen .status-message{display:none !important}
#gameScreen .canvas-controls{position:absolute;left:-23.2%;bottom:12%;z-index:30;width:20%;display:grid;grid-template-columns:1fr;gap:6px;padding:0;background:transparent;border:0;box-shadow:none;backdrop-filter:none}
#gameScreen .canvas-controls button{width:100%;height:42px;padding:7px 10px;border:2px solid #3c2516;border-radius:8px;background:linear-gradient(#76502e,#4e321d);color:#fff7df;text-align:left;font-size:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 2px 0 #24160d}
#gameScreen .canvas-controls button:hover:not(:disabled){filter:brightness(1.12)}
#gameScreen .canvas-controls input[type=range]{width:100%;accent-color:#78bd37;background:#5a3a21;border-radius:8px;padding:8px}
#gameScreen .side-panel{position:absolute;left:74.6667%;top:0;width:25.3333%;height:100%;max-height:none;overflow:hidden;display:grid;grid-template-rows:27% 39% 34%;gap:0;padding:0;background:transparent}
#gameScreen .side-panel section{margin:6px 7px 3px;border:3px solid #71451f;border-radius:13px;padding:8px;background:linear-gradient(rgba(255,248,226,.97),rgba(246,224,180,.97));box-shadow:inset 0 0 0 2px rgba(255,255,255,.45),0 2px 7px rgba(0,0,0,.24);overflow:hidden}
#gameScreen .side-panel .tower-palette{margin-top:7px;padding:6px}
#gameScreen .section-title{color:#71451f;font-family:Georgia,serif;font-size:11px;letter-spacing:.7px;text-align:center;margin-bottom:5px}
#gameScreen .tower-toolbar{grid-template-columns:repeat(3,1fr);gap:3px}
#gameScreen .tower-button{min-height:49px;padding:2px 1px;border:1px solid #9b7240;border-radius:7px;background:linear-gradient(#fff2ce,#efd5a0);box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)}
#gameScreen .tower-button.selected{border:2px solid #39a858;background:linear-gradient(#f5ffd9,#e2f8bd);box-shadow:0 0 0 2px rgba(57,168,88,.25)}
#gameScreen .tower-button .icon{width:22px;height:22px}
#gameScreen .tower-button .tname{font-size:7.5px;line-height:1;font-weight:950}
#gameScreen .tower-button .cost{font-size:7px}
#gameScreen .tower-button .key{font-size:7px;left:3px;top:1px}
#gameScreen .context-panel{min-height:0}
#gameScreen #sellBtn{background:linear-gradient(#e7b764,#b97828);color:#fff9e8;border:2px solid #71451f;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 0 #4b2e17}
#gameScreen #upgradeBtn{border:2px solid #386f39}
#gameScreen .context-name{font-family:Georgia,serif;color:#4b2f1d;font-size:22px}
#gameScreen .level-pill{background:#8dc34c;color:#fff;border:1px solid #58892b}
#gameScreen .stat-list div{background:rgba(255,255,255,.48);border:1px solid rgba(124,87,43,.2)}
#gameScreen .aux-panel{min-height:0}
#gameScreen .preview-grid{gap:4px}
#gameScreen .preview-card{padding:4px 2px;border:1px solid #b99158;background:rgba(255,255,255,.48)}
#gameScreen .preview-card canvas{width:28px;height:23px}
#gameScreen .stub-box{padding:12px 6px;border-color:#bda177;background:rgba(255,255,255,.32);color:#8f7658}
#gameScreen .help-card{position:absolute;right:8px;bottom:7px;width:110px;padding:4px!important;margin:0!important;z-index:40;background:rgba(255,249,232,.9)!important;border:1px solid #8d6134!important;border-radius:7px!important;overflow:visible!important}
#gameScreen .help-card summary{font-size:8px;text-align:center;color:#71451f}
#gameScreen .help-card[open]{width:320px;max-height:430px;overflow:auto!important}
#gameScreen .pause-overlay,#gameScreen .end-dialog,#gameScreen .confirm-dialog{border-radius:0}
@media(max-width:1000px){#gameScreen .game-layout{width:min(1500px,calc(100vw - 4px),calc((100vh - 4px)*1.875))}}

/* v0.2.10 stability pass: artwork is the visible control surface. */
#gameScreen .canvas-controls{
  left:-21.55%;top:57.9%;bottom:auto;width:17.4%;height:40.4%;
  display:block;padding:0;margin:0;background:transparent;border:0;box-shadow:none;
  pointer-events:none;z-index:35;
}
#gameScreen .canvas-controls button{
  position:absolute;left:3.8%;width:90.2%;height:14.8%;padding:0;margin:0;
  border:0;border-radius:10px;background:transparent;box-shadow:none;
  opacity:.02;pointer-events:auto;cursor:pointer;
}
#gameScreen .canvas-controls button:hover:not(:disabled),
#gameScreen .canvas-controls button:focus-visible{
  opacity:.14;background:#fff4c8;outline:2px solid rgba(255,221,120,.85);outline-offset:-1px;filter:none;transform:none;
}
#gameScreen #pauseBtn{top:1.1%}
#gameScreen #quickRestartBtn{top:21.6%}
#gameScreen #quickHomeBtn{top:42.2%}
#gameScreen #soundBtn{top:62.9%}
#gameScreen .canvas-controls input[type=range]{
  position:absolute;left:10.2%;top:86.1%;width:71.8%;height:8.8%;margin:0;padding:0;
  opacity:.045;pointer-events:auto;cursor:pointer;background:transparent;border:0;
}
#gameScreen .canvas-controls input[type=range]:focus-visible{opacity:.24;outline:2px solid #f4d27b}


/* v0.2.12 readability pass: preserve height, improve type and contrast. */
#gameScreen .side-panel section{
  background:linear-gradient(#fff8e5,#f5dfb3);
}
#gameScreen .section-title{
  font-size:13px;
  line-height:1.1;
  letter-spacing:.75px;
  margin-bottom:6px;
  color:#5a351d;
}
#gameScreen .tower-toolbar{gap:4px}
#gameScreen .tower-button{
  min-height:54px;
  padding:3px 2px 2px;
  color:#3c2a1d;
}
#gameScreen .tower-button .icon{width:24px;height:24px;margin-bottom:1px}
#gameScreen .tower-button .tname{font-size:9.5px;line-height:1.05;font-weight:950}
#gameScreen .tower-button .cost{font-size:8.5px;line-height:1.05;font-weight:900;color:#744915}
#gameScreen .tower-button .key{font-size:9px;left:4px;top:2px;color:#5f4c3a}
#gameScreen .tower-button.unaffordable{
  opacity:1;
  filter:none;
  color:#51483f;
  background:linear-gradient(#f1eadb,#ddd0b9);
}
#gameScreen .tower-button.unaffordable .icon{opacity:.43;filter:grayscale(1)}
#gameScreen .tower-button.unaffordable .tname{color:#554b42}
#gameScreen .tower-button.unaffordable .cost{color:#9a382e}
#gameScreen .context-panel{padding:10px 11px}
#gameScreen .context-name{font-size:25px;line-height:1.05;color:#402817}
#gameScreen .level-pill{font-size:11.5px;padding:4px 8px}
#gameScreen .small,#gameScreen .control-note{font-size:12.5px;line-height:1.42;color:#544b42}
#gameScreen .empty-state{font-size:12.5px;line-height:1.42;color:#5f554c}
#gameScreen .wave-context-name{font-size:25px;line-height:1.05}
#gameScreen .countdown-row{font-size:13px}
#gameScreen .stat-list{gap:6px;margin:10px 0}
#gameScreen .stat-list div{padding:7px;background:#fffaf0;border-color:#c9a877}
#gameScreen .stat-list dt{font-size:10.5px;line-height:1.1;color:#665a4c}
#gameScreen .stat-list dd{font-size:15px;line-height:1.15;color:#30271f}
#gameScreen .button-stack{gap:7px}
#gameScreen .button-stack button{font-size:14.5px;padding:10px 8px}
#gameScreen .firecracker-action{
  display:block;width:100%;margin:8px 0 7px;padding:12px 10px;
  border:3px solid #7c251d;border-radius:10px;
  background:linear-gradient(#f06a42,#c93627);color:#fff8df;
  font-size:16px;font-weight:1000;letter-spacing:.35px;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.28),0 3px 0 #7c251d;
}
#gameScreen .firecracker-action:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}
#gameScreen .firecracker-action:disabled{opacity:.45}
#gameScreen .preview-grid{gap:5px}
#gameScreen .preview-card{padding:6px 3px;background:#fff9ea;border-color:#a97943}
#gameScreen .preview-card canvas{width:32px;height:27px}
#gameScreen .preview-card .pname{font-size:10.5px;line-height:1.1;color:#3d3025}
#gameScreen .preview-card .pcount{font-size:10.5px;line-height:1.1;color:#51483f}
#gameScreen .stub-small{font-size:12.5px;line-height:1.38;color:#554b42}
#gameScreen .stub-box{font-size:13px;color:#705d49;background:#fff7e7}
#gameScreen .wave-control-bar{grid-template-columns:minmax(0,1fr) 142px}
#gameScreen .wave-rail{gap:5px}
#gameScreen .wave-tick{flex-basis:82px;height:62px;padding:2px 4px}
#gameScreen .wave-tick.done{opacity:.66;filter:saturate(.7)}
#gameScreen .wave-icon{width:31px;height:26px}
#gameScreen .wave-tick .c{font-size:9.5px;line-height:1.05;color:#30271f}
#gameScreen .wave-tick .n{font-size:9px;line-height:1.05;color:#4d443c}
#gameScreen .wave-tick .badge{font-size:7.5px;padding:1px 3px;color:#34281f}
#gameScreen .send-wave{font-size:15.5px;line-height:1.05}
#gameScreen .send-wave small{font-size:10.5px}
#gameScreen .status-message{font-size:12.5px;font-weight:750}
#gameScreen .help-card summary{font-size:9.5px;line-height:1.1}


/* v0.2.13 large-type pass: readable tower selector and wave strip. */
#gameScreen .side-panel{
  grid-template-rows:29% 38% 33%;
}
#gameScreen .tower-palette{
  padding:7px 8px 8px;
}
#gameScreen .tower-palette .section-title{
  font-size:14.5px;
  line-height:1.1;
  margin-bottom:7px;
  letter-spacing:.65px;
}
#gameScreen .tower-toolbar{
  gap:5px;
}
#gameScreen .tower-button{
  min-height:58px;
  padding:3px 3px 3px;
  border-width:1.5px;
}
#gameScreen .tower-button .icon{
  width:20px;
  height:20px;
  margin-bottom:1px;
}
#gameScreen .tower-button .tname{
  font-size:11.5px;
  line-height:1.08;
  font-weight:950;
  color:#2f2117;
  letter-spacing:-.1px;
}
#gameScreen .tower-button .cost{
  font-size:10.5px;
  line-height:1.08;
  font-weight:950;
  color:#6a4215;
  margin-top:1px;
}
#gameScreen .tower-button .key{
  font-size:10.5px;
  line-height:1;
  left:5px;
  top:4px;
  color:#4c3828;
  font-weight:1000;
}
#gameScreen .tower-button.unaffordable .tname{
  color:#3f3933;
}
#gameScreen .tower-button.unaffordable .cost{
  color:#8a2e27;
}
#gameScreen .wave-control-bar{
  grid-template-columns:88px minmax(0,1fr) 148px;
  gap:6px;
  padding-left:8px;
  box-sizing:border-box;
}
#gameScreen .wave-strip-label{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:4px;
  border:2px solid #3f2918;
  border-radius:9px;
  background:linear-gradient(#785234,#4e321f);
  color:#fff6dc;
  font-family:Georgia,serif;
  font-size:17px;
  line-height:1;
  font-weight:900;
  letter-spacing:.6px;
  text-shadow:0 1px 0 #2b1a10;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 2px 0 #2e1c11;
}
#gameScreen .wave-rail{
  gap:6px;
  padding:1px 2px;
}
#gameScreen .wave-tick{
  flex-basis:94px;
  height:63px;
  padding:2px 5px;
}
#gameScreen .wave-icon{
  width:30px;
  height:25px;
}
#gameScreen .wave-tick .c{
  font-size:11.5px;
  line-height:1.05;
  font-weight:950;
  color:#251c16;
}
#gameScreen .wave-tick .n{
  font-size:10.5px;
  line-height:1.05;
  font-weight:900;
  color:#453a31;
}
#gameScreen .wave-tick .badge{
  font-size:8.5px;
  line-height:1;
  padding:2px 4px;
  color:#2d2119;
}
#gameScreen .send-wave{
  font-size:16px;
  line-height:1.02;
  padding:6px 7px;
}
#gameScreen .send-wave small{
  font-size:11px;
  margin-top:4px;
}


/* v0.2.16 timer and wave-strip correction */
#gameScreen .wave-control-bar{left:-4%;width:104%;overflow:visible;}
#gameScreen .wave-control-bar::before{content:"";position:absolute;left:0;bottom:calc(100% - 2px);width:48px;height:58px;background:linear-gradient(90deg,#66401f,#86552b);border:3px solid #70431f;border-bottom:0;border-radius:10px 10px 0 0;box-shadow:inset 0 0 0 2px rgba(255,255,255,.12);z-index:0;}
#gameScreen .wave-control-bar>*{position:relative;z-index:1;}
#gameScreen .wave-strip-label{min-width:76px;}


/* v0.2.30 right-panel readability pass */
#gameScreen .side-panel{grid-template-rows:29% 43% 28%;}
#gameScreen .context-panel{overflow-y:auto;overflow-x:hidden;padding-right:4px;}
#gameScreen .context-panel .button-stack button{min-height:38px;line-height:1.12;}
#gameScreen #towerDetails .button-stack{position:sticky;bottom:0;padding-top:7px;padding-bottom:2px;background:linear-gradient(180deg,rgba(252,247,239,0),rgba(252,247,239,.96) 34%,rgba(252,247,239,.98));}
#gameScreen #towerDetails .button-stack button{font-weight:900;}
#gameScreen .aux-panel{padding-top:7px;padding-bottom:7px;}


/* v0.2.30 pending gameplay and preview pass */
#gameScreen .side-panel{grid-template-rows:28% 48% 24%;}
#gameScreen .context-tower-preview{display:block;width:100%;height:72px;margin:0 0 5px;border:2px solid #9b7240;border-radius:10px;background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.96),rgba(244,220,176,.82));box-shadow:inset 0 0 0 2px rgba(255,255,255,.42);}
#gameScreen .context-tower-preview[hidden]{display:none;}
#gameScreen .wave-tick{flex-basis:100px;height:64px;padding:1px 4px;}
#gameScreen .wave-icon{width:40px;height:31px;margin:-1px auto 0;}
#gameScreen .wave-tick .c{font-size:10px;line-height:1.0;min-height:20px;display:flex;align-items:center;justify-content:center;white-space:normal;overflow:visible;text-overflow:clip;}
#gameScreen .wave-tick .n{font-size:8.5px;line-height:1;margin-top:0;}
#gameScreen .wave-tick .badge{font-size:7px;padding:1px 3px;}



/* v0.2.31 UI expansion and firecracker visual pass */
#gameScreen .wave-control-bar{height:108px;grid-template-columns:88px minmax(0,1fr) 156px;padding:8px;left:-4%;width:104%;}
#gameScreen .wave-strip-label{font-size:19px;}
#gameScreen .wave-rail{gap:7px;padding:3px 3px;align-items:stretch;}
#gameScreen .wave-tick{flex-basis:108px;height:82px;padding:3px 5px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;}
#gameScreen .wave-icon{width:48px;height:38px;margin:-1px auto 1px;}
#gameScreen .wave-tick .c{font-size:10.5px;line-height:1.04;min-height:24px;}
#gameScreen .wave-tick .n{font-size:10px;line-height:1.05;margin-top:1px;}
#gameScreen .wave-tick .badge{font-size:7.5px;padding:2px 4px;max-width:calc(100% - 8px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#gameScreen .send-wave{font-size:17px;padding:8px 9px;}
#gameScreen .send-wave small{font-size:11.5px;}
#gameScreen .side-panel{grid-template-rows:26% 39% 35%;}
#gameScreen .tower-palette{padding:8px 9px 9px;}
#gameScreen .tower-palette .section-title{font-size:15px;}
#gameScreen .tower-toolbar{gap:6px;}
#gameScreen .tower-button{min-height:68px;padding:4px 3px;}
#gameScreen .tower-button .icon{width:28px;height:28px;margin-bottom:2px;}
#gameScreen .tower-button .tname{font-size:12px;line-height:1.04;}
#gameScreen .tower-button .cost{font-size:11px;line-height:1.06;}
#gameScreen .tower-button .key{font-size:11px;top:3px;left:5px;}
#gameScreen .context-panel{padding:10px 11px 11px;overflow:auto;}
#gameScreen .context-tower-preview{height:118px;margin:0 0 8px;}
#gameScreen .wave-context-name{font-size:28px;}
#gameScreen .countdown-row{font-size:16px;align-items:center;padding-top:8px;}
#gameScreen #countdown{font-size:24px;line-height:1;font-weight:1000;color:#184f89;}
#gameScreen .context-name{font-size:28px;}
#gameScreen .context-heading{margin-bottom:6px;}
#gameScreen .stat-list{gap:7px;margin:10px 0;}
#gameScreen .stat-list div{padding:8px;}
#gameScreen .stat-list dt{font-size:10.5px;}
#gameScreen .stat-list dd{font-size:15.5px;}
#gameScreen .button-stack button{min-height:40px;}
#gameScreen .aux-panel{padding-top:8px;padding-bottom:8px;}
#gameScreen .preview-grid{gap:6px;}
#gameScreen .preview-card{padding:7px 4px;}
#gameScreen .preview-card canvas{width:40px;height:32px;margin:0 auto 3px;}
#gameScreen .preview-card .pname{font-size:11px;line-height:1.08;white-space:normal;}
#gameScreen .preview-card .pcount{font-size:10.5px;}


/* v0.2.31a Firecracker and middle-pane polish */
#gameScreen .context-tower-preview{
  width:100%;
  height:auto;
  aspect-ratio:12 / 5;
  max-height:none;
  object-fit:contain;
  margin:0 0 6px;
}
#gameScreen .context-panel{
  padding-top:9px;
}
#gameScreen .context-panel .section-title{
  margin-bottom:5px;
}
#gameScreen .context-heading{
  margin-bottom:4px;
}
#gameScreen .small{
  line-height:1.28;
}
#gameScreen .stat-list{
  margin-top:8px;
  margin-bottom:8px;
}
#gameScreen .button-stack{
  gap:6px;
}


/* v0.2.31b HUD, bracket, clipping, and tower-palette correction */
#gameScreen .canvas-stage{
  height:88%;
}
#gameScreen .wave-control-bar{
  top:88%;
  height:12%;
  min-height:92px;
  max-height:none;
  padding:6px 8px 7px;
  overflow:visible;
}
#gameScreen .wave-control-bar::before{
  height:54px;
}
#gameScreen .wave-rail{
  overflow-x:auto;
  overflow-y:visible;
  padding:7px 12px 5px;
}
#gameScreen .wave-tick{
  height:76px;
  flex-basis:106px;
  overflow:visible;
}
#gameScreen .wave-tick.current{
  outline:2px solid #278be0;
  box-shadow:0 0 0 2px #f8d36b,0 2px 8px rgba(0,0,0,.22);
}
#gameScreen .wave-tick.current::before,
#gameScreen .wave-tick.current::after{
  content:"";
  position:absolute;
  top:-7px;
  bottom:-7px;
  width:9px;
  pointer-events:none;
  z-index:6;
}
#gameScreen .wave-tick.current::before{
  left:-8px;
  border-left:5px solid #4b2d19;
  border-top:5px solid #4b2d19;
  border-bottom:5px solid #4b2d19;
  border-radius:5px 0 0 5px;
}
#gameScreen .wave-tick.current::after{
  right:-8px;
  border-right:5px solid #4b2d19;
  border-top:5px solid #4b2d19;
  border-bottom:5px solid #4b2d19;
  border-radius:0 5px 5px 0;
}
#gameScreen .wave-tick.current .badge{
  top:-1px;
  font-size:7px;
}
#gameScreen .wave-icon{
  width:46px;
  height:35px;
}
#gameScreen .wave-tick .c{
  min-height:20px;
}
#gameScreen .side-panel{
  grid-template-rows:32% 40% 28%;
}
#gameScreen .side-panel .tower-palette{
  padding:8px 9px 9px;
  overflow:hidden;
}
#gameScreen .tower-toolbar{
  gap:5px;
}
#gameScreen .tower-button{
  min-height:66px;
  padding:3px 3px;
}
#gameScreen .tower-button .icon{
  width:32px;
  height:32px;
  margin-bottom:1px;
}
#gameScreen .tower-button .tname{
  font-size:11.5px;
}
#gameScreen .tower-button .cost{
  font-size:10.5px;
}
#gameScreen .context-panel{
  overflow:auto;
}


/* v0.2.32 compact right-panel layout, pest preview, urgent timer, and map-size consistency */
#gameScreen .side-panel{
  grid-template-rows:minmax(0,31fr) minmax(0,27fr) minmax(0,42fr);
}
#gameScreen .side-panel section{
  min-height:0;
  height:calc(100% - 8px);
  margin:4px 7px;
  position:relative;
  overflow:hidden;
  z-index:1;
}
#gameScreen .side-panel .tower-palette{
  padding:7px 8px 8px;
  z-index:3;
}
#gameScreen .tower-toolbar{gap:4px;}
#gameScreen .tower-button{min-height:58px;padding:2px 3px;overflow:hidden;}
#gameScreen .tower-button .icon{width:29px;height:29px;margin-bottom:0;}
#gameScreen .tower-button .tname{font-size:11px;line-height:1.02;}
#gameScreen .tower-button .cost{font-size:10px;line-height:1.02;}
#gameScreen .context-panel{
  padding:7px 9px 8px;
  overflow:hidden!important;
  z-index:2;
}
#gameScreen .context-panel .section-title{margin-bottom:4px;font-size:13px;}
#gameScreen .context-tower-preview{
  position:absolute;
  right:9px;
  top:34px;
  width:94px;
  height:94px;
  aspect-ratio:1/1;
  margin:0;
  border-width:2px;
  border-radius:9px;
  object-fit:contain;
  z-index:4;
}
#gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #buildDescription,
#gameScreen .context-panel.has-context-preview #towerDescription,
#gameScreen .context-panel.has-context-preview #creepDescription{
  width:calc(100% - 104px);
  max-width:calc(100% - 104px);
}
#gameScreen .context-name{font-size:23px;line-height:1.0;}
#gameScreen .level-pill{font-size:10px;padding:3px 6px;}
#gameScreen .small{font-size:11px;line-height:1.25;}
#gameScreen #buildDetails .stat-list,
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{margin-top:38px;margin-bottom:5px;gap:4px;}
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{grid-template-columns:repeat(3,minmax(0,1fr));}
#gameScreen .stat-list div{padding:5px 6px;min-width:0;}
#gameScreen .stat-list dt{font-size:8.5px;line-height:1.0;}
#gameScreen .stat-list dd{font-size:12.5px;line-height:1.05;overflow-wrap:anywhere;}
#gameScreen .button-stack{gap:5px;}
#gameScreen .button-stack button{min-height:31px;padding:6px 5px;font-size:12px;}
#gameScreen .firecracker-action{width:calc(100% - 104px);margin:5px 0 0;padding:7px 5px;font-size:12px;border-width:2px;}
#gameScreen #towerDetails:has(#detonateBtn:not([hidden])) .stat-list{margin-top:5px;}
#gameScreen .empty-state{font-size:10.5px;line-height:1.2;padding:2px 0;}
#gameScreen .aux-panel{padding:7px 8px 8px;z-index:1;}
#gameScreen .preview-grid{gap:5px;margin-bottom:7px;}
#gameScreen .preview-card{padding:6px 3px;}
#gameScreen .preview-card canvas{width:43px;height:34px;}
#gameScreen .preview-card .pname{font-size:10.5px;}
#gameScreen .preview-card .pcount{font-size:10px;}
#gameScreen .multiplayer-stub{padding-top:7px;}
#gameScreen .stub-box{padding:20px 8px;min-height:74px;}
#gameScreen #countdown.urgent-countdown{color:#d21f26!important;animation:urgentTimerPulse .72s ease-in-out infinite alternate;}
@keyframes urgentTimerPulse{from{transform:scale(1)}to{transform:scale(1.10)}}
#gameScreen .wave-rail{overflow-x:auto;overflow-y:visible;scrollbar-width:none;}
#gameScreen .wave-rail::-webkit-scrollbar{height:0;width:0;}
#gameScreen .wave-tick.current::before,
#gameScreen .wave-tick.current::after{
  top:1px;
  bottom:auto;
  height:70px;
  width:auto;
  border:0;
  border-radius:0;
  font-family:Georgia,serif;
  font-size:68px;
  line-height:68px;
  font-weight:900;
  color:#4b2d19;
  text-shadow:0 1px 0 #f8d36b;
}
#gameScreen .wave-tick.current::before{content:"[";left:-8px;}
#gameScreen .wave-tick.current::after{content:"]";right:-8px;}


/* v0.2.32 pane paint containment: prevent any label or control from bleeding across tracks */
#gameScreen .side-panel{background:#57351f;isolation:isolate;}
#gameScreen .side-panel section{contain:layout paint;clip-path:inset(0 round 12px);background:linear-gradient(#fff8e5,#f5dfb3);}


#gameScreen #buildDetails .empty-state,#gameScreen #creepDetails .empty-state{display:none;}



/* v0.2.32a final right-panel alignment */
#gameScreen .side-panel{
  grid-template-rows:minmax(0,31fr) minmax(0,26fr) minmax(0,43fr);
}
#gameScreen .context-panel{
  padding:6px 9px 7px;
}
#gameScreen .context-panel .section-title{
  margin-bottom:2px;
  line-height:1.05;
}
#gameScreen .context-tower-preview{
  top:22px;
  right:9px;
  width:76px;
  height:76px;
}
#gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #buildDescription,
#gameScreen .context-panel.has-context-preview #towerDescription,
#gameScreen .context-panel.has-context-preview #creepDescription{
  width:calc(100% - 86px);
  max-width:calc(100% - 86px);
}
#gameScreen .context-heading{
  gap:4px;
  margin-bottom:2px;
  align-items:flex-start;
}
#gameScreen .context-name{
  font-size:22px;
  line-height:.98;
}
#gameScreen .level-pill{
  font-size:9px;
  padding:3px 5px;
  white-space:nowrap;
}
#gameScreen .small{
  font-size:10.5px;
  line-height:1.16;
}
#gameScreen #buildDetails .stat-list,
#gameScreen #creepDetails .stat-list{
  margin-top:32px;
  margin-bottom:4px;
  gap:3px;
}
#gameScreen #towerDetails .stat-list{
  margin-top:38px;
  margin-bottom:4px;
  gap:3px;
  grid-template-columns:repeat(3,minmax(0,1fr));
}
#gameScreen #towerDetails:has(#detonateBtn:not([hidden])) .stat-list{
  margin-top:3px;
}
#gameScreen .stat-list div{
  padding:4px 5px;
  min-height:27px;
}
#gameScreen .stat-list dt{
  font-size:8px;
}
#gameScreen .stat-list dd{
  margin-top:1px;
  font-size:11.5px;
  line-height:1;
}
#gameScreen .button-stack{
  gap:4px;
}
#gameScreen .button-stack button{
  min-height:24px;
  padding:2px 4px;
  font-size:10.5px;
  line-height:1.05;
}
#gameScreen .firecracker-action{
  width:calc(100% - 86px);
  margin:3px 0 0;
  padding:5px 4px;
  font-size:11px;
}
#gameScreen .aux-panel{
  padding-top:7px;
}
#gameScreen .stub-box{
  min-height:82px;
  padding:23px 8px;
}



/* v0.2.32a specificity correction */
#gameScreen .side-panel .context-panel{
  padding:6px 9px 7px;
}
#gameScreen .context-panel .stat-list div{
  min-height:25px;
  padding:3px 5px;
}
#gameScreen .context-panel .button-stack button{
  min-height:24px;
  padding:2px 4px;
  font-size:10.5px;
  line-height:1.05;
}



/* v0.2.32b preview reliability and alignment */
#gameScreen .context-tower-preview{
  top:12px;
  right:9px;
  width:76px;
  height:76px;
}


/* v0.2.39 Easy and guided Demo */
.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.difficulty-row{grid-template-columns:repeat(3,minmax(0,1fr));}
.difficulty-group{grid-column:1/-1;order:-10;}
.demo-choice-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:9px;padding:8px 11px;border:1px solid #d8dee9;border-radius:10px;background:#fff;}
.demo-choice-copy{display:flex;flex-direction:column;gap:2px;min-width:0;}
.demo-choice-copy strong{font-size:13px;color:#27384f;}
.demo-choice-copy small{font-size:10.5px;line-height:1.25;color:var(--muted);font-weight:700;}
.demo-toggle{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:12px;font-weight:900;color:#315b3d;cursor:pointer;}
.demo-toggle input{width:19px;height:19px;accent-color:var(--green);cursor:pointer;}

.demo-overlay{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:center;padding-top:18px;background:rgba(22,31,40,.18);z-index:18;pointer-events:none;}
.demo-overlay[hidden]{display:none;}
.demo-card-panel{pointer-events:auto;width:min(680px,calc(100% - 36px));background:rgba(255,252,231,.97);border:3px solid #d39a25;border-radius:16px;box-shadow:0 12px 32px rgba(0,0,0,.34);padding:16px 18px;color:#2c3640;}
.demo-kicker{font-size:12px;font-weight:900;letter-spacing:.18em;color:#9a6510;}
.demo-card-panel h2{margin:4px 0 7px;font-size:25px;}
.demo-card-panel p{margin:0;line-height:1.35;font-size:15px;}
.demo-progress{margin-top:10px;font-weight:800;color:#6f5831;}
.demo-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;}
.demo-actions button{min-height:34px;padding:7px 12px;}
.demo-card-panel.demo-compact{width:min(560px,calc(100% - 36px));margin-left:auto;margin-right:18px;}
.demo-arrow{position:fixed;height:10px;background:#ef2020;border-radius:8px;transform-origin:0 50%;z-index:1200;pointer-events:none;filter:drop-shadow(0 2px 1px rgba(255,255,255,.9));animation:demoPulse .85s ease-in-out infinite alternate;}
.demo-arrow::after{content:"";position:absolute;right:-24px;top:-12px;border-left:28px solid #ef2020;border-top:17px solid transparent;border-bottom:17px solid transparent;}
.demo-target-ring{position:fixed;border:5px dashed #ef2020;border-radius:14px;z-index:1199;pointer-events:none;box-shadow:0 0 0 5px rgba(255,255,255,.75);animation:demoPulse .85s ease-in-out infinite alternate;}
.demo-target-label{position:fixed;z-index:1201;pointer-events:none;background:#ef2020;color:white;font-weight:900;padding:5px 9px;border-radius:8px;box-shadow:0 2px 6px rgba(0,0,0,.3);font-size:13px;}
@keyframes demoPulse{from{opacity:.72}to{opacity:1}}

@media(max-width:1100px){.mode-grid{grid-template-columns:1fr 1fr}.difficulty-row{grid-template-columns:1fr 1fr}.difficulty-row label:first-child{grid-column:1/-1}}


/* v0.2.53 left-side appearance and click-alignment repair */
#gameScreen .left-artwork{
  width:14.9%;
  border-right:0;
  box-shadow:none;
}
#gameScreen .wave-control-bar{left:0;width:100%;overflow:hidden;z-index:6;}
#gameScreen .wave-control-bar::before{display:none!important;content:none!important;}
#gameScreen .canvas-controls{
  left:-21.55%;top:0;bottom:auto;width:18.5%;height:100%;z-index:35;
  display:block;padding:0;margin:0;background:transparent;border:0;box-shadow:none;pointer-events:none;
}
#gameScreen .canvas-controls button{
  position:absolute;left:1%;width:101%;height:8.2%;padding:0;margin:0;border:0;border-radius:10px;
  background:transparent;box-shadow:none;opacity:.02;pointer-events:auto;cursor:pointer;
}
#gameScreen #pauseBtn{top:61.0%;}
#gameScreen #quickRestartBtn{top:70.1%;}
#gameScreen #quickHomeBtn{top:78.0%;}
#gameScreen #soundBtn{top:85.8%;}
#gameScreen .canvas-controls input[type=range]{
  position:absolute;left:8%;top:95.0%;width:82%;height:6.2%;margin:0;padding:0;
  opacity:.04;pointer-events:auto;cursor:pointer;background:transparent;border:0;
}


/* v0.2.54 breathing-room pass */
#gameScreen .context-tower-preview{
  top:28px;
  right:10px;
  width:66px;
  height:66px;
}
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveName,
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveMeta{
  width:calc(100% - 78px);
  max-width:calc(100% - 78px);
}
#gameScreen .context-panel.has-context-preview #waveContext .countdown-row{
  margin-top:12px;
}
#gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #buildDescription,
#gameScreen .context-panel.has-context-preview #towerDescription,
#gameScreen .context-panel.has-context-preview #creepDescription{
  width:calc(100% - 78px);
  max-width:calc(100% - 78px);
}


/* v0.3.3 polished 1500×800 homepage integration */
#homeScreen.home-screen{
  min-height:100vh;padding:0;background:#2d1a0f;overflow:auto;
}
#homeScreen .home-card{
  position:relative;display:block;width:min(1500px,100vw,calc(100vh * 1.875));
  aspect-ratio:15/8;margin:auto;padding:0;gap:0;border:0;border-radius:0;
  background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png");background-size:100% 100%;background-repeat:no-repeat;
  box-shadow:0 16px 60px rgba(0,0,0,.48);overflow:hidden;
}
#homeScreen .home-hero{display:none!important}
#homeScreen .setup-panel{position:absolute;inset:0;display:block;padding:0;background:transparent}
#homeScreen .setup-panel>h1,#homeScreen .setup-panel>p,#homeScreen #setupRules{display:none!important}
#homeScreen .mode-grid{position:absolute;inset:0;display:block}
#homeScreen .mode-card{position:absolute;margin:0;padding:0;border:0;background:transparent;box-shadow:none;opacity:0;transform:none!important}
#homeScreen #singlePlayerCard{left:46.0%;top:10.1%;width:26.4%;height:9.6%}
#homeScreen .mode-card.coming{left:72.7%;top:10.1%;width:25.0%;height:9.6%}
#homeScreen .setup-options-grid{position:absolute;inset:0;display:block}
#homeScreen .setup-group{position:absolute;margin:0;padding:0;border:0;background:transparent;border-radius:0}
#homeScreen .setup-label,#homeScreen .demo-choice-copy{opacity:0;pointer-events:none}
#homeScreen .difficulty-group{left:46.0%;top:20.5%;width:51.8%;height:17.8%}
#homeScreen .difficulty-group .difficulty-row{position:absolute;left:0;top:18%;width:100%;height:39%;display:grid;grid-template-columns:1fr 1fr 1fr;gap:.7%}
#homeScreen .difficulty-group .demo-choice-row{position:absolute;left:0;top:58%;width:100%;height:35%;display:block;margin:0;padding:0;border:0;background:transparent}
#homeScreen .demo-toggle{position:absolute;right:0;top:0;width:17%;height:100%;cursor:pointer}
#homeScreen .demo-toggle input{position:absolute;opacity:0}
#homeScreen .demo-toggle span{opacity:0}
#homeScreen .demo-toggle:has(input:checked)::after{content:"✓";position:absolute;left:2%;top:53%;width:16%;height:34%;display:grid;place-items:center;border-radius:5px;background:#58a53d;color:#fff;font-size:clamp(12px,1.5vw,24px);font-weight:1000;box-shadow:0 1px 2px rgba(0,0,0,.25)}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(2){left:46.0%;top:39.3%;width:24.7%;height:10.9%}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(3){left:71.4%;top:39.3%;width:26.3%;height:10.9%}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(4){left:46.0%;top:51.3%;width:24.7%;height:11.4%}
#homeScreen .setup-options-grid>.setup-group:not(.difficulty-group) .choice-row{position:absolute;inset:18% 0 0;display:grid;grid-template-columns:1fr 1fr;gap:2%}
#homeScreen .choice-button{position:relative;display:block;cursor:pointer}
#homeScreen .choice-button input{position:absolute;opacity:0;pointer-events:none}
#homeScreen .choice-button span{position:absolute;inset:0;padding:0;border:0;border-radius:10px;background:transparent;color:transparent;box-shadow:none;text-shadow:none}
#homeScreen .choice-button span small{color:transparent}
#homeScreen .choice-button input:checked+span{border:3px solid rgba(42,122,52,.95);background:rgba(99,186,83,.13);box-shadow:inset 0 0 0 2px rgba(255,255,255,.72),0 0 0 2px rgba(76,45,21,.18)}
#homeScreen .choice-button input:focus-visible+span{outline:3px solid #3a87d8;outline-offset:2px}
#homeScreen #startGameBtn{position:absolute;left:71.7%;top:51.3%;width:26.0%;height:16.0%;margin:0;padding:0 2%;border:3px solid rgba(117,63,24,.88);border-radius:16px;background:linear-gradient(#fff0c8,#f1c57f);color:#5d220c;box-shadow:inset 0 2px 0 rgba(255,255,255,.8),0 3px 0 rgba(92,49,21,.55),0 6px 14px rgba(0,0,0,.18);font-family:Georgia,serif;font-size:clamp(14px,1.6vw,27px);line-height:1.12;font-weight:1000;white-space:normal;z-index:4}
#homeScreen #startGameBtn:hover{filter:brightness(1.035);transform:translateY(-1px)}
#homeScreen #setupMapPreview{position:absolute;left:71.7%;top:69.4%;width:26.0%;height:26.6%;margin:0;border:3px solid rgba(87,47,24,.85);border-radius:14px;background-position:center;background-size:100% 100%;background-repeat:no-repeat;box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 3px 9px rgba(0,0,0,.22);z-index:3}
#homeScreen #setupSummary{position:absolute;left:47.0%;top:70.8%;width:22.8%;height:12.7%;margin:0;padding:0.4% 0.8%;display:flex;align-items:flex-start;justify-content:flex-start;background:rgba(245,218,166,.96);color:#5a2c13;border-radius:4px;text-align:left;font-family:Georgia,serif;font-size:clamp(9px,.9vw,15px);font-weight:800;line-height:1.42;white-space:normal;z-index:4}

/* v0.3.8 home-menu selection sizing correction */
#homeScreen .difficulty-group .difficulty-row{top:28%;height:39%;}
/* The artwork places the lower button rows at different vertical offsets. */
#homeScreen .setup-options-grid>.setup-group:nth-of-type(2){left:46.35%;width:24.0%;}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(3){left:72.25%;width:25.0%;}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(4){left:46.35%;width:24.0%;}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(2) .choice-row,
#homeScreen .setup-options-grid>.setup-group:nth-of-type(3) .choice-row{inset:42% 0 -2%;}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(4) .choice-row{inset:46% 0 -2%;}
#homeScreen .difficulty-group .choice-button input:checked+span{inset:2px 4px 1px;}
#homeScreen .setup-options-grid>.setup-group:not(.difficulty-group) .choice-button input:checked+span{inset:2px 3px 1px;}

@media(max-aspect-ratio:15/8){#homeScreen.home-screen{align-items:start}}


/* v0.3.9 final home-menu bracket sizing refinement */
/* Map Size and Map Configuration: slightly fuller outlines */
#homeScreen .setup-options-grid>.setup-group:nth-of-type(2) .choice-button input:checked+span,
#homeScreen .setup-options-grid>.setup-group:nth-of-type(3) .choice-button input:checked+span{
  inset:-1px 0 -2px;
}
/* Build Mode artwork has more internal padding, so use a noticeably larger bracket */
#homeScreen .setup-options-grid>.setup-group:nth-of-type(4) .choice-button input:checked+span{
  inset:-4px -4px -5px;
}


/* v0.4.2 demo checkbox and start-button hierarchy */
#homeScreen .demo-toggle:has(input:checked)::after{
  left:30%;top:43%;width:14%;height:45%;
  font-size:clamp(11px,1.25vw,21px);
  border-radius:4px;
}
#homeScreen #startGameBtn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1%;
  line-height:1.02;
}
#homeScreen #startGameBtn .start-kicker{
  display:block;font-size:clamp(22px,2.05vw,36px);font-weight:1000;line-height:.95;letter-spacing:.02em;
}
#homeScreen #startGameBtn .start-mode{
  display:block;font-size:clamp(15px,1.45vw,25px);font-weight:900;line-height:1.02;
}
#homeScreen #startGameBtn .start-meta{
  display:block;font-size:clamp(10px,.9vw,16px);font-weight:900;line-height:1.05;
}


/* v0.4.2 checkbox alignment and single-layer GO button */
#homeScreen .demo-toggle:has(input:checked)::after{
  left:1.5%;top:49%;width:15%;height:36%;
  font-size:clamp(11px,1.18vw,20px);
  border-radius:4px;
}
#homeScreen #startGameBtn{
  background:transparent;
  border:4px solid rgba(47,151,62,.96);
  border-radius:16px;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.7),0 0 0 2px rgba(34,100,42,.2),0 3px 10px rgba(0,0,0,.16);
}
#homeScreen #startGameBtn:hover{
  background:rgba(87,190,88,.08);
  border-color:#2eab45;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.78),0 0 0 3px rgba(46,171,69,.18),0 4px 12px rgba(0,0,0,.18);
}


/* v0.4.2 left-control hitbox alignment and anti-air tuning */
#gameScreen .canvas-controls{
  left:-12.1%; top:0; width:17.2%; height:100%;
}
#gameScreen .canvas-controls button{
  left:0; width:100%; height:7.7%;
  font-size:0; color:transparent; text-shadow:none;
  border-radius:9px;
}
#gameScreen .canvas-controls button:hover:not(:disabled),
#gameScreen .canvas-controls button:focus-visible{
  opacity:.12; background:rgba(255,244,200,.8);
  outline:2px solid rgba(255,221,120,.9); outline-offset:-2px;
}
#gameScreen #pauseBtn{top:58.0%;}
#gameScreen #quickRestartBtn{top:66.9%;}
#gameScreen #quickHomeBtn{top:76.0%;}
#gameScreen #soundBtn{top:84.9%;}
#gameScreen .canvas-controls input[type=range]{left:7%;top:94.2%;width:86%;height:5.8%;}



/* v0.4.3 readability and button-alignment pass */
#gameScreen .side-panel{
  grid-template-rows:30% 33% 37%;
}
#gameScreen .tower-palette{
  padding:8px 9px 10px;
}
#gameScreen .tower-palette .section-title,
#gameScreen .context-panel .section-title,
#gameScreen .aux-panel .section-title{
  font-size:15px;
  letter-spacing:.85px;
  margin-bottom:6px;
}
#gameScreen .tower-toolbar{
  gap:6px;
}
#gameScreen .tower-button{
  min-height:72px;
  padding:5px 4px 4px;
  border-radius:8px;
}
#gameScreen .tower-button .icon{
  width:33px;
  height:33px;
  margin-bottom:2px;
}
#gameScreen .tower-button .tname{
  font-size:11.5px;
  line-height:1.04;
}
#gameScreen .tower-button .cost{
  font-size:10px;
  line-height:1.08;
}
#gameScreen .tower-button .key{
  font-size:10px;
  left:5px;
  top:3px;
}
#gameScreen .context-panel{
  padding:10px 11px 11px;
  overflow:auto;
}
#gameScreen .context-heading{
  margin-bottom:6px;
}
#gameScreen .context-name,
#gameScreen .wave-context-name{
  font-size:28px;
  line-height:1.02;
}
#gameScreen .level-pill{
  font-size:11.5px;
  padding:4px 8px;
}
#gameScreen .small,
#gameScreen #waveContext,
#gameScreen #buildDescription,
#gameScreen #towerDescription,
#gameScreen #creepDescription,
#gameScreen #futureMultiplayerNote,
#gameScreen .stub-small{
  font-size:12px;
  line-height:1.25;
}
#gameScreen .context-tower-preview{
  top:24px;
  right:10px;
  width:82px;
  height:82px;
}
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveName,
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveMeta,
#gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #buildDescription,
#gameScreen .context-panel.has-context-preview #towerDescription,
#gameScreen .context-panel.has-context-preview #creepDescription{
  width:calc(100% - 94px);
  max-width:calc(100% - 94px);
}
#gameScreen #buildDetails .stat-list,
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{
  margin-top:42px;
  margin-bottom:7px;
  gap:5px;
}
#gameScreen #towerDetails:has(#detonateBtn:not([hidden])) .stat-list{
  margin-top:7px;
}
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
#gameScreen .stat-list div{
  padding:6px 7px;
}
#gameScreen .stat-list dt{
  font-size:8.8px;
  line-height:1.02;
}
#gameScreen .stat-list dd{
  font-size:13px;
  line-height:1.08;
}
#gameScreen .button-stack button{
  min-height:35px;
  padding:7px 8px;
  font-size:13px;
  line-height:1.08;
}
#gameScreen .countdown-row{
  font-size:16px;
  align-items:center;
  padding-top:8px;
}
#gameScreen #countdown{
  font-size:25px;
  line-height:1;
}
#gameScreen .aux-panel{
  padding-top:8px;
  padding-bottom:8px;
}
#gameScreen .preview-grid{
  gap:6px;
}
#gameScreen .preview-card{
  padding:7px 4px;
}
#gameScreen .preview-card canvas{
  width:48px;
  height:38px;
  margin:0 auto 3px;
}
#gameScreen .preview-card .pname{
  font-size:11px;
  line-height:1.08;
  white-space:normal;
}
#gameScreen .preview-card .pcount{
  font-size:10.5px;
  line-height:1.08;
}
#gameScreen .wave-control-bar{
  left:0;
  width:100%;
  height:110px;
  grid-template-columns:90px minmax(0,1fr) 160px;
  padding:8px;
  overflow:hidden;
}
#gameScreen .wave-control-bar::before{
  display:none!important;
  content:none!important;
}
#gameScreen .wave-strip-label{
  min-width:78px;
  font-size:20px;
}
#gameScreen .wave-rail{
  gap:7px;
  padding:3px;
  align-items:stretch;
}
#gameScreen .wave-tick{
  flex-basis:110px;
  height:84px;
  padding:3px 5px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
}
#gameScreen .wave-icon{
  width:48px;
  height:38px;
  margin:-1px auto 1px;
}
#gameScreen .wave-tick .c{
  font-size:10.5px;
  line-height:1.04;
  min-height:24px;
  display:flex;
  align-items:center;
  justify-content:center;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
}
#gameScreen .wave-tick .n{
  font-size:10px;
  line-height:1.05;
  margin-top:1px;
}
#gameScreen .wave-tick .badge{
  font-size:7.5px;
  padding:2px 4px;
  max-width:calc(100% - 8px);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
#gameScreen .send-wave{
  font-size:17px;
  line-height:1.04;
  padding:8px 9px;
}
#gameScreen .send-wave small{
  font-size:11.5px;
  margin-top:4px;
}
#gameScreen .canvas-controls{
  left:-11.65%;
  top:0;
  width:16.6%;
  height:100%;
}
#gameScreen .canvas-controls button{
  left:.4%;
  width:99.2%;
  height:7.55%;
  border-radius:10px;
}
#gameScreen #pauseBtn{top:58.15%;}
#gameScreen #quickRestartBtn{top:67.05%;}
#gameScreen #quickHomeBtn{top:75.95%;}
#gameScreen #soundBtn{top:84.85%;}
#gameScreen .canvas-controls input[type=range]{
  left:8.2%;
  top:94.05%;
  width:81.5%;
  height:5.55%;
}



/* v0.4.5 home-screen cleanup: single start button and cleaner selection outlines */
#homeScreen #startGameBtn{
  left:71.55%;
  top:51.05%;
  width:26.25%;
  height:16.45%;
  padding:1.15% 1.3% 1.0%;
  background:#f8dda7;
  border:4px solid #3e9e4c;
  border-radius:16px;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.68),0 2px 0 rgba(93,56,25,.45);
  color:#5a210d;
  overflow:hidden;
  gap:4%;
  transform:none!important;
}
#homeScreen #startGameBtn:hover{
  background:#f9e3b4;
  border-color:#2f9f43;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.75),0 2px 0 rgba(93,56,25,.45),0 0 0 3px rgba(47,159,67,.15);
  transform:none!important;
}
#homeScreen #startGameBtn .start-kicker{
  font-size:clamp(24px,2.15vw,38px);
  line-height:.88;
  letter-spacing:.015em;
}
#homeScreen #startGameBtn .start-mode{
  font-size:clamp(14px,1.28vw,23px);
  line-height:1.0;
  max-width:100%;
}
#homeScreen #startGameBtn .start-meta{
  font-size:clamp(10px,.93vw,16px);
  line-height:1.0;
}
#homeScreen .choice-button input:checked+span{
  background:transparent;
  border:3px solid #3d984b;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.58),0 0 0 1px rgba(55,93,45,.15);
  border-radius:11px;
}
#homeScreen .difficulty-group .choice-button input:checked+span{
  inset:1px 3px 0;
}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(2) .choice-button input:checked+span,
#homeScreen .setup-options-grid>.setup-group:nth-of-type(3) .choice-button input:checked+span{
  inset:0 1px -1px;
}
#homeScreen .setup-options-grid>.setup-group:nth-of-type(4) .choice-button input:checked+span{
  inset:-2px -2px -3px;
}



/* v0.4.6 right-panel fit and overlap correction */
#gameScreen .side-panel{
  grid-template-rows:34% 29% 37%;
}
#gameScreen .side-panel .tower-palette{
  padding:7px 8px 8px;
}
#gameScreen .tower-toolbar{
  gap:5px;
}
#gameScreen .tower-button{
  min-height:66px;
  padding:4px 3px 3px;
}
#gameScreen .tower-button .icon{
  width:31px;
  height:31px;
}
#gameScreen .tower-button .tname{
  font-size:11px;
}
#gameScreen .tower-button .cost{
  font-size:9.8px;
}
#gameScreen .context-panel{
  padding-top:8px;
}
#gameScreen .context-tower-preview{
  top:28px;
  right:10px;
  width:78px;
  height:78px;
}
#gameScreen .context-panel.has-context-preview #waveContext .countdown-row{
  width:calc(100% - 92px);
  margin-top:10px;
}
#gameScreen .context-panel.has-context-preview #waveContext #remainingText,
#gameScreen .context-panel.has-context-preview #waveContext .control-note{
  width:100%;
  max-width:100%;
}
#gameScreen .aux-panel{
  padding-top:7px;
}
#gameScreen .preview-card canvas{
  width:46px;
  height:36px;
}



/* v0.5.0 deliberate gameplay-page redesign */
#gameScreen .game-layout{
  background:#56341f;
  overflow:visible;
  border-radius:14px;
  box-shadow:0 18px 55px rgba(38,30,20,.35);
}
#gameScreen .left-artwork{
  left:0;
  top:0;
  width:17.6%;
  height:100%;
  overflow:visible;
  z-index:20;
}
#gameScreen .left-artwork::after{
  content:"";
  position:absolute;
  left:57%;
  top:6.7%;
  width:56%;
  aspect-ratio:304/240;
  background:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png") center/contain no-repeat;
  pointer-events:none;
  z-index:45;
  filter:drop-shadow(0 6px 5px rgba(43,28,19,.35));
}
#gameScreen .board-column{
  left:17.6%;
  top:0;
  width:56.4%;
  height:100%;
}
#gameScreen .canvas-stage{
  left:0;
  top:0;
  width:100%;
  height:86.5%;
  overflow:visible;
}
#gameScreen .wave-control-bar{
  left:0;
  top:86.5%;
  width:100%;
  height:13.5%;
  min-height:0;
  grid-template-columns:90px minmax(0,1fr) 166px;
  gap:7px;
  padding:7px 8px;
  overflow:hidden;
  border-radius:11px;
}
#gameScreen .wave-control-bar::before{display:none!important;content:none!important}
#gameScreen .side-panel{
  left:74%;
  top:0;
  width:26%;
  height:100%;
  grid-template-rows:32.5% 30.5% 37%;
  background:#57351f;
  z-index:30;
}
#gameScreen .side-panel section{
  margin:5px 7px 4px;
  height:calc(100% - 9px);
  border-radius:12px;
}
#gameScreen .side-panel .tower-palette{
  padding:7px 8px 9px;
}
#gameScreen .tower-palette .section-title,
#gameScreen .context-panel .section-title,
#gameScreen .aux-panel .section-title{
  font-size:15px;
  line-height:1.05;
  letter-spacing:.8px;
  margin-bottom:6px;
}
#gameScreen .tower-toolbar{gap:5px}
#gameScreen .tower-button{
  min-height:67px;
  padding:4px 3px 3px;
  border-radius:8px;
}
#gameScreen .tower-button .icon{
  width:38px;
  height:38px;
  margin-bottom:1px;
}
#gameScreen .tower-button .tname{
  font-size:12.5px;
  line-height:1.02;
  font-weight:950;
}
#gameScreen .tower-button .cost{
  font-size:10.5px;
  line-height:1.05;
  margin-top:1px;
}
#gameScreen .tower-button .key{
  font-size:10.5px;
  left:5px;
  top:3px;
}
#gameScreen .context-panel{
  padding:8px 10px 9px;
  overflow:hidden!important;
}
#gameScreen .context-panel .section-title{margin-bottom:4px}
#gameScreen .context-heading{
  margin-bottom:4px;
  gap:7px;
}
#gameScreen .context-name,
#gameScreen .wave-context-name{
  font-size:29px;
  line-height:1;
}
#gameScreen .level-pill{
  font-size:13px;
  line-height:1;
  padding:6px 9px;
  border-width:2px;
  box-shadow:0 2px 0 rgba(0,0,0,.12);
}
#gameScreen .small,
#gameScreen #waveContext,
#gameScreen #buildDescription,
#gameScreen #towerDescription,
#gameScreen #creepDescription,
#gameScreen .control-note{
  font-size:12.5px;
  line-height:1.28;
}
#gameScreen .context-tower-preview{
  top:29px;
  right:10px;
  width:82px;
  height:82px;
  border-width:2px;
}
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveName,
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveMeta,
#gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #buildDescription,
#gameScreen .context-panel.has-context-preview #towerDescription,
#gameScreen .context-panel.has-context-preview #creepDescription{
  width:calc(100% - 96px);
  max-width:calc(100% - 96px);
}
#gameScreen #buildDetails .stat-list,
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{
  margin-top:36px;
  margin-bottom:6px;
  gap:5px;
}
#gameScreen #buildDetails .stat-list{grid-template-columns:repeat(2,minmax(0,1fr))}
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{grid-template-columns:repeat(3,minmax(0,1fr))}
#gameScreen #towerDetails:has(#detonateBtn:not([hidden])) .stat-list{margin-top:5px}
#gameScreen .stat-list div{
  padding:6px 7px;
  min-height:34px;
  border-radius:8px;
}
#gameScreen .stat-list dt{
  font-size:9px;
  line-height:1;
}
#gameScreen .stat-list dd{
  font-size:13.5px;
  line-height:1.05;
  margin-top:2px;
}
#gameScreen .button-stack{gap:5px}
#gameScreen .button-stack button{
  min-height:34px;
  padding:6px 7px;
  font-size:13px;
  line-height:1.05;
}
#gameScreen .countdown-row{
  margin:7px 0;
  padding-top:7px;
  font-size:16px;
}
#gameScreen #countdown{font-size:25px}
#gameScreen .aux-panel{
  padding:7px 8px 8px;
}
#gameScreen .preview-grid{gap:6px;margin-bottom:8px}
#gameScreen .preview-card{
  padding:7px 3px 6px;
  border-radius:9px;
}
#gameScreen .preview-card canvas{
  width:52px;
  height:42px;
  margin:0 auto 3px;
}
#gameScreen .preview-card .pname{
  font-size:11.5px;
  line-height:1.05;
  white-space:normal;
}
#gameScreen .preview-card .pcount{
  font-size:10.5px;
  line-height:1.05;
}
#gameScreen .multiplayer-stub{padding-top:8px}
#gameScreen .stub-small{font-size:12px;line-height:1.3}
#gameScreen .stub-box{
  min-height:78px;
  padding:21px 8px;
  font-size:13px;
}
#gameScreen .wave-strip-label{
  min-width:76px;
  font-size:20px;
}
#gameScreen .wave-rail{
  gap:7px;
  padding:2px 3px;
  align-items:stretch;
}
#gameScreen .wave-tick{
  flex-basis:110px;
  height:88px;
  padding:3px 5px;
}
#gameScreen .wave-icon{
  width:52px;
  height:41px;
  margin:-1px auto 1px;
}
#gameScreen .wave-tick .c{
  font-size:12px;
  line-height:1.02;
  min-height:25px;
}
#gameScreen .wave-tick .n{
  font-size:10.5px;
  line-height:1.03;
  margin-top:1px;
}
#gameScreen .wave-tick .badge{
  font-size:7.5px;
  padding:2px 4px;
}
#gameScreen .send-wave{
  font-size:17px;
  line-height:1.04;
  padding:8px 9px;
}
#gameScreen .send-wave small{font-size:11.5px;margin-top:4px}
/* Exact click geometry from the 724 × 2172 left-panel artwork. */
#gameScreen .canvas-controls{
  position:absolute;
  left:0;
  top:0;
  width:17.6%;
  height:100%;
  z-index:60;
  display:block;
  padding:0;
  margin:0;
  background:transparent;
  border:0;
  box-shadow:none;
  pointer-events:none;
}
#gameScreen .canvas-controls button{
  position:absolute;
  left:15.2%;
  width:69.0%;
  height:7.05%;
  padding:0;
  margin:0;
  border:0;
  border-radius:12px;
  background:transparent;
  box-shadow:none;
  opacity:.01;
  font-size:0;
  color:transparent;
  pointer-events:auto;
  cursor:pointer;
}
#gameScreen .canvas-controls button:hover:not(:disabled),
#gameScreen .canvas-controls button:focus-visible{
  opacity:.13;
  background:rgba(255,244,200,.74);
  outline:2px solid rgba(255,221,120,.92);
  outline-offset:-3px;
  filter:none;
  transform:none;
}
#gameScreen #pauseBtn{top:48.55%}
#gameScreen #quickRestartBtn{top:56.45%}
#gameScreen #quickHomeBtn{top:64.25%}
#gameScreen #soundBtn{top:71.85%}
#gameScreen .canvas-controls input[type=range]{
  position:absolute;
  left:21.6%;
  top:83.55%;
  width:59.2%;
  height:3.8%;
  margin:0;
  padding:0;
  opacity:.035;
  pointer-events:auto;
  cursor:pointer;
  background:transparent;
  border:0;
}
#gameScreen .canvas-controls input[type=range]:focus-visible{
  opacity:.20;
  outline:2px solid #f4d27b;
}



/* v0.5.0b exact left-console artwork and fit correction */
#gameScreen .left-artwork{
  left:0;
  top:0;
  width:20.5%;
  height:100%;
  background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png");
  background-size:100% 100%;
  background-repeat:no-repeat;
  overflow:visible;
  z-index:40;
  filter:none;
}
#gameScreen .left-artwork::after{display:none!important;content:none!important}
#gameScreen .board-column{left:17.2%;width:56.8%}
#gameScreen .side-panel{left:74%;width:26%;grid-template-rows:34% 30% 36%}
#gameScreen .canvas-controls{left:0;top:0;width:17.2%;height:100%;z-index:60}
#gameScreen .canvas-controls button{left:14.4%;width:77.0%;height:8.35%;border-radius:10px}
#gameScreen #pauseBtn{top:52.15%}
#gameScreen #quickRestartBtn{top:61.80%}
#gameScreen #quickHomeBtn{top:71.15%}
#gameScreen #soundBtn{top:80.65%}
#gameScreen .canvas-controls input[type=range]{left:20.2%;top:94.1%;width:62.5%;height:3.0%}



/* v0.5.0c clean seam plane without covering the wave strip */
#gameScreen .left-artwork{
  width:17.2%;
  background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png");
  background-size:100% 100%;
  z-index:40;
}
#gameScreen .left-artwork::after{
  display:block!important;
  content:""!important;
  position:absolute;
  left:59.6%;
  top:7.0%;
  width:56.0%;
  aspect-ratio:122/155;
  background:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png") center/100% 100% no-repeat;
  pointer-events:none;
  z-index:45;
  filter:drop-shadow(0 4px 4px rgba(43,28,19,.30));
}



/* v0.5.0d measured left-console hitboxes from the 218 × 788 panel crop */
#gameScreen .canvas-controls button{left:12.8%;width:77.0%}
#gameScreen #pauseBtn{top:53.4%;height:7.7%}
#gameScreen #quickRestartBtn{top:61.7%;height:6.9%}
#gameScreen #quickHomeBtn{top:68.9%;height:7.0%}
#gameScreen #soundBtn{top:76.25%;height:6.8%}
#gameScreen .canvas-controls input[type=range]{left:19.4%;top:85.85%;width:63.6%;height:3.5%}



/* v0.5.0e responsive tower-grid fit */
#gameScreen .side-panel .tower-palette{display:flex;flex-direction:column;min-height:0}
#gameScreen .tower-toolbar{flex:1;min-height:0;grid-template-rows:repeat(3,minmax(0,1fr))}
#gameScreen .tower-button{min-height:0;height:100%}
#gameScreen .tower-button .icon{width:clamp(31px,4.2vh,38px);height:clamp(31px,4.2vh,38px)}
#gameScreen .tower-button .tname{font-size:clamp(10.5px,1.4vh,12.5px)}
#gameScreen .tower-button .cost{font-size:clamp(9px,1.18vh,10.5px)}



/* v0.5.1 locked gameplay-page layout based on the approved visual target */
#gameScreen .game-layout{
  overflow:visible;
  border-radius:12px;
}
#gameScreen .left-artwork{
  left:0;
  top:0;
  width:17.65%;
  height:100%;
  background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png");
  background-size:100% 100%;
  background-repeat:no-repeat;
  overflow:visible;
  z-index:45;
  filter:none;
}
#gameScreen .left-artwork::after{
  display:block!important;
  content:""!important;
  position:absolute;
  left:67.0%;
  top:7.0%;
  width:53%;
  aspect-ratio:120/86;
  background:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png") center/contain no-repeat;
  pointer-events:none;
  z-index:46;
  filter:drop-shadow(0 5px 4px rgba(43,28,19,.34));
}
#gameScreen .board-column{
  left:17.65%;
  top:0;
  width:54.75%;
  height:100%;
}
#gameScreen .side-panel{
  left:72.40%;
  top:0;
  width:27.60%;
  height:100%;
  grid-template-rows:34% 30% 36%;
  background:#57351f;
  z-index:30;
}
#gameScreen .canvas-stage{
  height:85.35%;
}
#gameScreen .wave-control-bar{
  top:85.35%;
  height:14.65%;
  grid-template-columns:88px minmax(0,1fr) 172px;
  gap:7px;
  padding:7px 8px;
}
#gameScreen .side-panel section{
  margin:5px 7px 4px;
  height:calc(100% - 9px);
}
#gameScreen .side-panel .tower-palette{
  display:flex;
  flex-direction:column;
  min-height:0;
  padding:7px 8px 8px;
}
#gameScreen .tower-palette .section-title,
#gameScreen .context-panel .section-title,
#gameScreen .aux-panel .section-title{
  font-size:16px;
  line-height:1.04;
  letter-spacing:.8px;
  margin-bottom:6px;
}
#gameScreen .tower-toolbar{
  flex:1;
  min-height:0;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  grid-template-rows:repeat(3,minmax(0,1fr));
  gap:5px;
}
#gameScreen .tower-button{
  position:relative;
  display:block;
  min-height:0;
  height:100%;
  overflow:hidden;
  padding:7px 43% 6px 8px;
  text-align:left;
  border-radius:9px;
}
#gameScreen .tower-button .icon{
  position:absolute;
  right:4px;
  top:50%;
  transform:translateY(-50%);
  width:clamp(44px,5.7vh,52px);
  height:clamp(44px,5.7vh,52px);
  margin:0;
}
#gameScreen .tower-button .tname{
  display:block;
  font-size:clamp(12px,1.55vh,14px);
  line-height:1.02;
  font-weight:950;
  text-align:left;
  white-space:normal;
}
#gameScreen .tower-button .cost{
  display:block;
  font-size:clamp(10px,1.25vh,11.5px);
  line-height:1.05;
  margin-top:4px;
  text-align:left;
  white-space:normal;
}
#gameScreen .tower-button .key{
  font-size:10px;
  left:5px;
  top:3px;
}
#gameScreen .context-panel{
  padding:8px 10px 9px;
  overflow:hidden!important;
}
#gameScreen .context-name,
#gameScreen .wave-context-name{
  font-size:30px;
  line-height:1;
}
#gameScreen .level-pill{
  font-size:13px;
  padding:6px 10px;
}
#gameScreen .small,
#gameScreen #waveContext,
#gameScreen #buildDescription,
#gameScreen #towerDescription,
#gameScreen #creepDescription,
#gameScreen .control-note{
  font-size:12.75px;
  line-height:1.28;
}
#gameScreen .context-tower-preview{
  top:29px;
  right:10px;
  width:88px;
  height:88px;
}
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveName,
#gameScreen .context-panel.has-context-preview #waveContext #nextWaveMeta,
#gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
#gameScreen .context-panel.has-context-preview #buildDescription,
#gameScreen .context-panel.has-context-preview #towerDescription,
#gameScreen .context-panel.has-context-preview #creepDescription{
  width:calc(100% - 102px);
  max-width:calc(100% - 102px);
}
#gameScreen #buildDetails .stat-list,
#gameScreen #towerDetails .stat-list,
#gameScreen #creepDetails .stat-list{
  margin-top:38px;
  margin-bottom:6px;
  gap:5px;
}
#gameScreen .stat-list div{
  padding:6px 7px;
  min-height:34px;
}
#gameScreen .stat-list dt{font-size:9.2px}
#gameScreen .stat-list dd{font-size:13.8px}
#gameScreen .button-stack button{
  min-height:34px;
  font-size:13px;
}
#gameScreen .countdown-row{
  font-size:16.5px;
}
#gameScreen #countdown{font-size:26px}
#gameScreen .aux-panel{
  padding:7px 8px 8px;
}
#gameScreen .preview-grid{
  gap:6px;
  margin-bottom:8px;
}
#gameScreen .preview-card{
  padding:7px 3px 6px;
}
#gameScreen .preview-card canvas{
  width:58px;
  height:46px;
  margin:0 auto 3px;
}
#gameScreen .preview-card .pname{
  font-size:12px;
  line-height:1.05;
  white-space:normal;
}
#gameScreen .preview-card .pcount{
  font-size:11px;
  line-height:1.05;
}
#gameScreen .multiplayer-stub{padding-top:7px}
#gameScreen .stub-small{font-size:12.25px;line-height:1.27}
#gameScreen .stub-box{
  min-height:72px;
  padding:18px 8px;
  font-size:13px;
}
#gameScreen .wave-strip-label{
  min-width:76px;
  font-size:21px;
}
#gameScreen .wave-rail{
  gap:7px;
  padding:2px 3px;
  align-items:stretch;
}
#gameScreen .wave-tick{
  flex-basis:112px;
  height:98px;
  padding:3px 5px;
}
#gameScreen .wave-icon{
  width:60px;
  height:47px;
  margin:-1px auto 2px;
}
#gameScreen .wave-tick .c{
  font-size:14px;
  line-height:1.0;
  min-height:28px;
}
#gameScreen .wave-tick .n{
  font-size:11px;
  line-height:1.02;
  margin-top:1px;
}
#gameScreen .wave-tick .badge{
  font-size:8px;
  padding:2px 4px;
}
#gameScreen .send-wave{
  font-size:18px;
  line-height:1.04;
  padding:8px 9px;
}
#gameScreen .send-wave small{font-size:12px;margin-top:4px}
/* Measured hitboxes for the approved 303 × 916 left-console artwork. */
#gameScreen .canvas-controls{
  left:0;
  top:0;
  width:17.65%;
  height:100%;
  z-index:60;
}
#gameScreen .canvas-controls button{
  left:14.8%;
  width:74.5%;
  border-radius:11px;
}
#gameScreen #pauseBtn{top:53.9%;height:6.4%}
#gameScreen #quickRestartBtn{top:60.55%;height:6.25%}
#gameScreen #quickHomeBtn{top:67.25%;height:6.15%}
#gameScreen #soundBtn{top:73.65%;height:6.15%}
#gameScreen .canvas-controls input[type=range]{
  left:19.7%;
  top:84.25%;
  width:65.0%;
  height:3.7%;
}


/* v0.5.1 final visual-fit refinement */
#gameScreen .tower-button .icon{width:clamp(50px,6.2vh,57px);height:clamp(50px,6.2vh,57px)}
#gameScreen .wave-tick{flex-basis:99px}
#gameScreen .wave-icon{width:58px;height:46px}


/* v0.5.1 selected-tower fit correction */
#gameScreen .side-panel{grid-template-rows:34% 32% 34%}


/* v0.5.1 panel containment and compact lower-right reserve */
#gameScreen .stub-small{font-size:11.5px;line-height:1.24}
#gameScreen .stub-box{min-height:55px;padding:13px 6px;font-size:12.5px}
#gameScreen .multiplayer-stub{padding-top:6px}
#gameScreen .context-panel{overflow:hidden!important}
@media (max-width:1450px), (max-height:850px){
  #gameScreen .context-name,#gameScreen .wave-context-name{font-size:27px}
  #gameScreen .level-pill{font-size:11.5px;padding:5px 8px}
  #gameScreen .context-tower-preview{width:78px;height:78px;top:27px}
  #gameScreen .context-panel.has-context-preview #waveContext #nextWaveName,
  #gameScreen .context-panel.has-context-preview #waveContext #nextWaveMeta,
  #gameScreen .context-panel.has-context-preview #buildDetails>.context-heading,
  #gameScreen .context-panel.has-context-preview #towerDetails>.context-heading,
  #gameScreen .context-panel.has-context-preview #creepDetails>.context-heading,
  #gameScreen .context-panel.has-context-preview #buildDescription,
  #gameScreen .context-panel.has-context-preview #towerDescription,
  #gameScreen .context-panel.has-context-preview #creepDescription{width:calc(100% - 90px);max-width:calc(100% - 90px)}
  #gameScreen .small,#gameScreen #waveContext,#gameScreen #buildDescription,#gameScreen #towerDescription,#gameScreen #creepDescription,#gameScreen .control-note{font-size:11.5px;line-height:1.18}
  #gameScreen #buildDetails .stat-list,#gameScreen #towerDetails .stat-list,#gameScreen #creepDetails .stat-list{margin-top:28px;margin-bottom:4px;gap:4px}
  #gameScreen .stat-list div{padding:4px 5px;min-height:29px}
  #gameScreen .stat-list dt{font-size:8px}
  #gameScreen .stat-list dd{font-size:12px;margin-top:1px}
  #gameScreen .button-stack{gap:4px}
  #gameScreen .button-stack button{min-height:29px;padding:4px 5px;font-size:11.5px}
  #gameScreen .preview-card canvas{width:52px;height:42px}
  #gameScreen .preview-card .pname{font-size:10.8px}
  #gameScreen .preview-card .pcount{font-size:9.8px}
  #gameScreen .stub-small{font-size:10.5px}
  #gameScreen .stub-box{min-height:44px;padding:9px 5px;font-size:11.5px}
}


/* v0.5.1 final two-pixel containment trim */
#gameScreen .button-stack button{min-height:32px}
#gameScreen .stub-box{min-height:53px;padding-top:12px;padding-bottom:12px}


/* v0.5.1 small-screen reserve fit */
#gameScreen .context-panel{padding-bottom:6px}
@media (max-width:1450px), (max-height:850px){
  #gameScreen .multiplayer-stub .stub-small{display:none}
  #gameScreen .stub-box{min-height:38px;padding:8px 104px 8px 5px;text-align:left}
}


/* v0.5.2 restore full-height current-wave brackets */
#gameScreen .wave-tick.current::before,
#gameScreen .wave-tick.current::after{
  top:-2px;
  bottom:auto;
  height:100px;
  width:auto;
  border:0;
  border-radius:0;
  font-family:Georgia,serif;
  font-size:96px;
  line-height:96px;
  font-weight:900;
  color:#4b2d19;
  text-shadow:0 1px 0 #f8d36b;
  pointer-events:none;
  z-index:8;
}
#gameScreen .wave-tick.current::before{content:"[";left:-10px;}
#gameScreen .wave-tick.current::after{content:"]";right:-10px;}



/* v0.5.6 — permanent Home-page navigation for Challenges and Bonus Modes */











#homeScreen .secondary-home-btn{
  height:64%;padding:0;border:2px solid #835024;border-radius:10px;background:linear-gradient(#fff0c2,#e6b15f);
  color:#54270f;font-family:Georgia,serif;font-size:clamp(11px,1vw,17px);font-weight:1000;box-shadow:0 2px 0 rgba(90,48,20,.42);
}































/* v0.5.7 — current-wave bracket, disabled-cost readability, and cleaner Home navigation */
#gameScreen .wave-tick.current::before,
#gameScreen .wave-tick.current::after{
  content:"";
  top:-6px;
  bottom:-6px;
  height:auto;
  width:18px;
  font-size:0;
  line-height:0;
  transform:none;
  text-shadow:none;
  border-radius:4px;
}
#gameScreen .wave-tick.current::before{
  left:-8px;
  border-left:3px solid #4b2d19;
  border-top:3px solid #4b2d19;
  border-bottom:3px solid #4b2d19;
}
#gameScreen .wave-tick.current::after{
  right:-8px;
  border-right:3px solid #4b2d19;
  border-top:3px solid #4b2d19;
  border-bottom:3px solid #4b2d19;
}
#gameScreen #upgradeBtn:disabled{
  opacity:1;
  color:#203015;
  background:linear-gradient(#d9e5c8,#b9cb9f);
  border:2px solid rgba(58,82,41,.72);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72),0 1px 0 rgba(72,52,31,.12);
  filter:saturate(.88);
  text-shadow:0 1px 0 rgba(255,255,255,.55);
  font-weight:950;
}







/* v0.6.0 — The Reckoning: four playable Bonus Modes */
#gameScreen .wave-tick.current::before,
#gameScreen .wave-tick.current::after{
  top:-5px;
  bottom:-5px;
  width:32px;
  border-radius:3px;
}
#gameScreen .wave-tick.current::before{
  left:-6px;
  border-left-width:2px;
  border-top-width:2px;
  border-bottom-width:2px;
}
#gameScreen .wave-tick.current::after{
  right:-6px;
  border-right-width:2px;
  border-top-width:2px;
  border-bottom-width:2px;
}
#homeScreen #setupSummary{
  top:68.9%;
  height:16.3%;
  padding:1.3% .9% .45%;
  align-items:center;
  line-height:1.24;
  background:#f5daa6;
}
#homeScreen #startGameBtn{
  left:71.55%;
  top:51.0%;
  width:26.35%;
  height:16.7%;
  border:2px solid rgba(104,58,26,.86);
  border-radius:13px;
  box-shadow:0 2px 5px rgba(54,29,13,.24);
}
#homeScreen #setupMapPreview{
  left:71.55%;
  top:68.9%;
  width:26.35%;
  height:27.4%;
  border:2px solid rgba(87,47,24,.82);
  border-radius:12px;
  box-shadow:0 2px 6px rgba(54,29,13,.22);
}








#gameScreen .tower-button.challenge-locked{
  opacity:.34;
  filter:grayscale(.8) saturate(.35);
}



/* v0.6.14 — cleaned home artwork with no baked-in selection borders */
#homeScreen .home-card{background-image:url("../images/2a7890b4c7ec201031b0ffbf023cbf24a9b4c999783da72e74a91fea572ff319.png")!important;background-size:100% 100%!important;background-repeat:no-repeat!important}
#homeScreen .choice-button span{color:transparent!important;background:transparent!important;border:0!important;box-shadow:none!important;text-shadow:none!important}
#homeScreen .choice-button span small{color:transparent!important}
#homeScreen .choice-button input:checked+span{inset:0!important;border:0!important;border-radius:12px!important;background:rgba(75,170,74,.08)!important;box-shadow:inset 0 0 0 3px #3c9d4c,inset 0 0 0 5px rgba(255,255,255,.72)!important}
#homeScreen .choice-button input:focus-visible+span{outline:3px solid #3a87d8!important;outline-offset:-3px!important;border-radius:12px!important}
#homeScreen #startGameBtn{background:transparent!important;border:0!important;box-shadow:none!important;color:#5a2c13!important;text-shadow:0 1px 0 rgba(255,255,255,.58)!important;transform:none!important}
#homeScreen #startGameBtn:hover{background:transparent!important;border:0!important;box-shadow:none!important;filter:none!important;transform:none!important}
#homeScreen #setupSummary{background:transparent!important;border:0!important;box-shadow:none!important;padding:.55% .85%!important;top:69.5%!important}



#homeScreen .home-card::after{content:"PLAYABLE ALPHA v0.6.31 · THE RECKONING";position:absolute;left:3.55%;bottom:2.75%;z-index:6;color:#f7efdc;font-family:Arial,sans-serif;font-size:clamp(9px,.9vw,14px);font-weight:900;letter-spacing:.015em;text-shadow:0 1px 2px rgba(31,17,10,.82);pointer-events:none}


/* v0.6.16 final home-menu calibration: selection outlines are anchored to the native 1500×800 artwork rather than inherited grid boxes. */
#homeScreen .choice-button input:checked+span{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#homeScreen .home-selection-outline{
  position:absolute;
  z-index:8;
  pointer-events:none;
  border-radius:11px;
  background:rgba(75,170,74,.07);
  box-shadow:inset 0 0 0 3px #3c9d4c,inset 0 0 0 5px rgba(255,255,255,.72);
}



/* v0.6.22 — Challenges and Bonus Modes now share the Home screen's parchment, button, and selection language. */


#homeScreen .secondary-home-btn{
  height:62%;
  border:2px solid #815026;
  border-radius:10px;
  background:linear-gradient(180deg,#fff2ca,#e9b96b);
  color:#54290f;
  font-family:Georgia,Cambria,serif;
  font-size:clamp(12px,1.08vw,18px);
  font-weight:1000;
  text-shadow:0 1px 0 rgba(255,255,255,.72);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.78),0 3px 0 rgba(106,59,25,.45),0 5px 8px rgba(76,41,18,.16);
}
#homeScreen .secondary-home-btn:hover,
#homeScreen .secondary-home-btn:focus-visible{
  filter:brightness(1.045);
  outline:3px solid rgba(58,135,216,.34);
  outline-offset:2px;
}
























#homeScreen .the100-digits{
  display:inline-block;
  font-size:1.08em;
  line-height:.86;
  letter-spacing:-.045em;
  font-variant-numeric:lining-nums;
  font-feature-settings:"lnum" 1;
  transform:translateY(.015em);
}



/* v0.6.22 — full playable Challenges/Bonus visual rebuild.
   This supersedes the lighter v0.6.17 CSS pass and follows the approved parchment mockups. */





#homeScreen .secondary-home-btn{
  height:58%;
  min-height:42px;
  align-self:start;
  padding:0 8%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9%;
  border:2px solid #8a5729;
  border-radius:11px;
  background:linear-gradient(180deg,#fff4d2 0%,#efc77e 72%,#e3ae58 100%);
  color:#542b15;
  font-family:Georgia,Cambria,"Times New Roman",serif;
  font-size:clamp(13px,1.16vw,20px);
  font-weight:1000;
  text-shadow:0 1px 0 rgba(255,255,255,.78);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.86),0 3px 0 rgba(103,57,24,.48),0 5px 10px rgba(74,39,16,.16);
}
#homeScreen .secondary-home-icon{
  position:relative;
  width:18px;
  height:15px;
  flex:none;
  margin-top:3px;
  background:#754018;
  border-radius:1px 1px 2px 2px;
}
#homeScreen .secondary-home-icon::before{
  content:"";
  position:absolute;
  left:-3px;
  top:-8px;
  width:24px;
  height:16px;
  background:#754018;
  clip-path:polygon(50% 0,100% 58%,82% 58%,82% 100%,18% 100%,18% 58%,0 58%);
}
#homeScreen .secondary-home-icon::after{
  content:"";
  position:absolute;
  left:7px;
  bottom:0;
  width:5px;
  height:8px;
  background:#efc77e;
}















/* Large illustrated Bonus cards, matching the approved mockup. */





/* Challenge cards receive visible new hierarchy and subtle mode watermarks. */






















#homeScreen .the100-digits{
  display:inline-block;
  font-family:inherit;
  font-size:1.13em;
  line-height:.78;
  font-weight:inherit;
  letter-spacing:-.045em;
  font-variant-numeric:lining-nums tabular-nums;
  font-feature-settings:"lnum" 1,"tnum" 1;
  transform:translateY(.025em);
}
/* Keep the compact 15:8 composition readable on shorter browser windows. */




/* v0.6.22 — retone Challenges and Bonus Modes to the warmer tan vellum used on Home. */










/* v0.6.28 — smaller opening cue with a darker, heavier cartoon outline */
.get-ready-cue{
  position:absolute;inset:0;z-index:19;display:grid;place-items:center;
  pointer-events:none;overflow:hidden;visibility:hidden;
}
.get-ready-cue.is-playing{visibility:visible}
.get-ready-text{
  max-width:82%;padding:.08em .12em .18em;text-align:center;white-space:nowrap;
  font-family:"Arial Rounded MT Bold","Marker Felt","Cooper Black","Trebuchet MS","Comic Sans MS",ui-rounded,system-ui,sans-serif;
  font-size:clamp(48px,6.8vw,108px);font-weight:1000;line-height:.9;letter-spacing:-.035em;
  color:#e2b07d;-webkit-text-stroke:clamp(4px,.48vw,8px) #2f1b16;
  paint-order:stroke fill;
  text-shadow:
    0 .035em 0 #cf9561,
    0 .075em 0 #9d633f,
    0 .115em 0 #5e3929,
    0 .155em .14em rgba(25,12,8,.5),
    0 0 .018em rgba(255,255,255,.92);
  transform-origin:center;opacity:0;
}
.get-ready-cue.is-playing .get-ready-text{animation:htdReadyText var(--ready-cue-ms,2200ms) cubic-bezier(.18,.82,.26,1) both}
@keyframes htdReadyText{
  0%{transform:scale(.56);filter:blur(4px);opacity:0}
  12%{transform:scale(1.1);filter:blur(0);opacity:1}
  22%{transform:scale(1);opacity:1}
  86%{transform:scale(1);opacity:1}
  100%{transform:scale(.9);filter:blur(1.4px);opacity:0}
}
@media (prefers-reduced-motion:reduce){
  .get-ready-cue.is-playing .get-ready-text{animation:htdReadyTextReduced var(--ready-cue-ms,2200ms) ease both}
  @keyframes htdReadyTextReduced{0%{opacity:0}10%,90%{opacity:1}100%{opacity:0}}
}
