/* COREBOUND 0.3 — functional game UI. Flat surfaces, explicit hierarchy, no decorative dashboard chrome. */
:root{color-scheme:dark;--base:#111315;--surface:#1b1d20;--raised:#25282b;--line:#383d41;--muted:#8b949a;--text:#e9edea;--accent:#c6e478;--danger:#fd8e85;--coin:#f6bf76;--mono:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',monospace;font-family:Inter,'Segoe UI',Arial,sans-serif;font-synthesis:none}
*{box-sizing:border-box}html{background:var(--base)}body{background:var(--base);color:var(--text);margin:0;min-width:290px;min-height:100dvh}button{font:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{cursor:not-allowed}.app{max-width:1460px;margin:0 auto;padding:0 14px}.topbar{height:64px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:10px}.identity,.header-tools{display:flex;align-items:center;gap:12px}.identity{min-width:0}.wordmark{font-size:21px;font-weight:850;letter-spacing:-1.35px;white-space:nowrap}.wordmark>span,.menu-brand>span{color:var(--accent)}.build-id{font:10px var(--mono);color:#879087;border:1px solid var(--line);padding:5px 7px;margin-left:4px}.header-tools{gap:18px}.session-indicator{font-size:11px;color:#9ca89e;white-space:nowrap}.session-indicator>span,.status-led{display:inline-block;background:#94c980;width:6px;height:6px;border-radius:50%;vertical-align:middle;margin-right:5px}.header-button{border:1px solid #3a3e41;background:#222629;color:#ddd;width:36px;height:36px;font-size:21px}.header-button:hover{background:#303639}
/* A mark that behaves like a small mechanism rather than a spinner GIF. */
.emblem{display:inline-block;position:relative;flex:none;width:32px;height:32px;vertical-align:middle;color:var(--accent)}.emblem-outer{display:block;position:absolute;inset:16%;border:2px solid currentColor;animation:outer-turn 16s linear infinite;will-change:transform}.emblem-inner{display:block;position:absolute;inset:17%;border:2px solid currentColor;animation:inner-turn 6.8s linear infinite;will-change:transform}.emblem-core{display:block;position:absolute;inset:23%;background:currentColor}.emblem--hero{width:86px;height:86px;margin:0 auto 22px}.emblem--hero .emblem-outer{border-width:3px}.emblem--hero .emblem-inner{border-width:3px}.emblem:hover .emblem-outer{animation-duration:4s}.emblem:hover .emblem-inner{animation-duration:2.3s}@keyframes outer-turn{to{transform:rotate(360deg)}}@keyframes inner-turn{to{transform:rotate(-360deg)}}
.gamebox{margin-top:12px;background:#12171a;border:1px solid #303438}.hud{display:flex;background:#202326;min-height:66px;border-bottom:1px solid #3b3f41}.hud-cell{min-width:0;flex:1;padding:11px 20px;border-right:1px solid #383d41;display:flex;flex-direction:column;justify-content:center;gap:5px}.hud-cell:last-child{border-right:0}.hud-label{font-size:10px;line-height:1;color:#a0a9a7;letter-spacing:.15px}.hud-cell strong{font:700 21px var(--mono);color:#f3f4ed;letter-spacing:-.5px;white-space:nowrap}.hud-money strong{color:var(--coin)}.money-symbol{font-size:13px;vertical-align:1px;margin-right:0}.health-track{height:3px;background:#41464a;margin-top:1px;max-width:165px}.health-track>span{display:block;height:100%;background:#9ad9b1;transition:width .3s ease}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 278px;min-height:0}.field{position:relative;min-width:0;overflow:hidden;background:#07131d}.field canvas{width:100%;height:auto;aspect-ratio:16/9;display:block;touch-action:manipulation;cursor:crosshair}.field-topline{position:absolute;top:11px;left:11px;right:51px;display:flex;justify-content:space-between;align-items:center;gap:10px;pointer-events:none}.map-name,.game-status{background:#0b141dc7;border:1px solid #44617375;color:#adbec5;font-size:10px;font-weight:600;padding:6px 8px;white-space:nowrap}.map-name b{color:#8baabd}.game-status{color:#c0c9c9}.fullscreen-btn{position:absolute;right:11px;top:11px;display:grid;place-items:center;border:1px solid #44617392;background:#0b141de6;color:#d2e1df;width:30px;height:29px}.fullscreen-btn svg{height:15px;width:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:square}.fullscreen-btn:hover{background:#283e42}.toast{position:absolute;top:52px;left:50%;transform:translate(-50%,-4px);opacity:0;pointer-events:none;z-index:4;white-space:nowrap;max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis;background:#e3e9dc;color:#22292a;padding:8px 12px;font-weight:650;font-size:12px;transition:opacity .15s,transform .15s}.toast.show{opacity:1;transform:translate(-50%,0)}
/* Actual gameplay actions, not decorative information panels. */
.sidepanel{background:#202326;border-left:1px solid #383d41;display:flex;flex-direction:column;min-width:0}.side-top{display:flex;align-items:center;justify-content:space-between;padding:15px 16px 11px}.side-top strong{font-size:16px;letter-spacing:-.35px}.side-counter{font:11px var(--mono);color:#8e9898}.selection{display:flex;gap:10px;margin:0 13px 10px;padding:10px;background:#181c1e;min-height:62px;border-left:2px solid var(--accent);align-items:center}.selection-indicator{color:var(--accent);font-size:24px;width:26px;text-align:center;flex:none}.selection-copy{min-width:0}.selection b{display:block;font-size:12px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px}.selection small{display:block;color:#9da9aa;font-size:10px;line-height:1.35}.build-controls{display:flex;flex-direction:column;gap:5px;padding:0 13px 14px}.tower-card,.toolbtn{position:relative;display:flex;align-items:center;gap:11px;min-height:65px;width:100%;padding:9px 11px;background:#292c30;color:#e8ebe9;border:1px solid #3a4044;text-align:left;transition:background .12s,border-color .12s}.tower-card:hover:not(:disabled),.toolbtn:hover:not(:disabled){background:#35393d;border-color:#778282}.tower-card:active:not(:disabled),.toolbtn:active:not(:disabled){background:#444b4e}.tower-card:disabled,.toolbtn:disabled{opacity:.38}.tower-card.is-armed{border-color:var(--accent);background:#323b2c}.tower-card.is-armed:after{position:absolute;content:'';right:0;top:0;bottom:0;width:4px;background:var(--accent)}.tower-glyph,.toolbtn .icon{width:44px;height:44px;display:grid;place-items:center;flex:none;color:var(--tower-accent,var(--tool-accent,#a6bbc4));background:#1c2024;font-size:26px;border:1px solid #40474b}.tower-glyph{border-bottom:3px solid var(--tower-accent);line-height:1}.tower-detail,.toolcopy{min-width:0;flex:1}.tower-detail b,.toolcopy b{display:block;font-size:13px;font-weight:700;margin-bottom:6px}.tower-detail small,.toolcopy small{color:#aab3b1;font:11px var(--mono)}.tower-price{font:700 13px var(--mono);color:var(--coin);padding:4px 0 4px 4px}.toolbtn{min-height:58px}.toolbtn .icon{width:36px;height:36px;font-size:24px}.tool-arrow{font-size:20px;color:#889492}.panel-bottom{margin-top:auto;border-top:1px solid #3b3f41;padding:14px 13px 13px}.phase-line{display:flex;justify-content:space-between;gap:7px;font-size:10px;color:#929d9d;margin-bottom:11px}.phase-line strong{font-weight:600;color:#c7d3bc}.wave-actions{display:flex;gap:6px}.primary,.secondary{min-height:45px;border:0;font-size:12px;font-weight:750;border-radius:0;padding:0 13px;transition:background .12s}.primary{background:var(--accent);color:#1c261a}.primary:hover:not(:disabled){background:#dcf69a}.primary:disabled{background:#4a5350;color:#a5b0a7}.secondary{background:#353a3d;color:#eef1eb;border:1px solid #535b5d}.secondary:hover{background:#454d50}.speed{min-width:56px;padding:0 8px;font:700 12px var(--mono)}.wave-button{display:flex;align-items:center;justify-content:space-between;flex:1;text-align:left;gap:8px;font-size:12px}.wave-button span{font-size:19px}.helpbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 3px;font-size:11px;color:#9fa7a6}.help-key{display:inline-grid;place-items:center;font:700 10px var(--mono);background:#32383a;color:#d8e2d4;width:17px;height:17px;margin-right:4px}.help-arrow{color:#666e70;padding:0 6px}.help-version{color:#686f71;font:10px var(--mono);white-space:nowrap}
/* Menus live above the entire interface: never squeezed inside the 16:9 canvas. */
.modal{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;min-height:0}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:#090c0eeb;backdrop-filter:blur(5px)}.menu-pane{position:relative;z-index:1;text-align:center;width:min(100%,410px);padding:23px 12px 16px}.menu-brand{font-size:clamp(34px,8vw,53px);font-weight:850;line-height:1.06;letter-spacing:-3.5px;margin-bottom:14px}.menu-description{color:#aeb9b7;line-height:1.55;font-size:13px;margin:0 auto 26px}.begin-button{min-height:52px;width:100%;display:flex;justify-content:space-between;align-items:center;font-size:15px;padding:0 18px}.begin-button span{font-size:25px;font-weight:400}.meta-bar{display:flex;align-items:center;text-align:left;gap:12px;margin-top:21px;border-top:1px solid #363d3d;border-bottom:1px solid #363d3d;padding:13px 0}.meta-icon{font-size:17px;color:var(--coin)}.meta-count{flex:1;min-width:0}.meta-count small{display:block;font-size:10px;color:#8b9795;margin-bottom:3px}.meta-count strong{display:block;font:600 13px var(--mono);color:#e4eae3}.meta-buy{color:#bcd7a0;border:1px solid #495147;background:#222922;padding:9px 10px;font-size:11px}.meta-buy:hover:not(:disabled){background:#333f33}.meta-buy:disabled{opacity:.4}.menu-footnote{color:#666f70;font-size:10px;margin-top:16px}
.dialog-pane{z-index:1;position:relative;background:#1d2023;border:1px solid #454b4d;width:min(100%,650px);padding:24px}.dialog-top{display:flex;justify-content:space-between;gap:10px;color:#a5afaa;font:12px var(--mono);padding-bottom:14px;border-bottom:1px solid #3b4142}.dialog-index{color:var(--accent)}.dialog-pane h2{font-size:clamp(23px,5vw,32px);letter-spacing:-1px;font-weight:790;margin:21px 0 8px}.dialog-pane p{font-size:12px;color:#a7b2b0;line-height:1.45;margin:0}.upgrade-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:24px 0 13px}.upgrade-card{position:relative;min-width:0;min-height:190px;border:1px solid #495051;background:#2a3032;padding:14px;color:#e8ede8;text-align:left}.upgrade-card:hover{border-color:var(--accent);background:#35403b}.upgrade-card>span{display:block;font-size:32px;color:var(--accent);margin:0 0 20px}.upgrade-card b{display:block;font-size:13px;margin-bottom:9px}.upgrade-card small{display:block;color:#b1bdb8;font-size:11px;line-height:1.45}.upgrade-card i{display:block;color:var(--accent);font:10px var(--mono);font-style:normal;margin-top:19px}.wave-next{font-size:10px;color:#828d8b}.result-pane{max-width:500px}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#485051;margin:22px 0}.result-grid>div{background:#252b2d;padding:16px 11px}.result-grid small{display:block;color:#94a09b;font-size:11px;margin-bottom:10px}.result-grid b{font:700 24px var(--mono);color:var(--text)}.result-grid>div:last-child b{color:var(--coin)}
/* Desktop fullscreen remains playable, while on phone side panel stays under arena. */
.gamebox:fullscreen{height:100dvh;margin:0;display:flex;flex-direction:column;background:#13181c}.gamebox:fullscreen .play-layout{min-height:0;flex:1}.gamebox:fullscreen .field{display:flex;justify-content:center;align-items:center;min-height:0}.gamebox:fullscreen .field canvas{max-height:100%;object-fit:contain}.gamebox:fullscreen .sidepanel{min-height:0;overflow-y:auto}
@media(min-width:1240px){.play-layout{grid-template-columns:minmax(0,1fr) 296px}.field{align-self:stretch;display:flex;align-items:center}.field canvas{max-height:calc(100dvh - 165px);object-fit:contain}.sidepanel{min-height:550px}.build-controls{gap:7px}}
@media(max-width:800px){.app{padding:0 8px}.topbar{height:54px}.wordmark{font-size:19px}.build-id{font-size:9px}.hud{min-height:60px}.hud-cell{padding:9px 12px}.hud-cell strong{font-size:17px}.play-layout{display:flex;flex-direction:column}.sidepanel{border-left:0;border-top:1px solid #3b4042}.side-top{padding:13px 13px 8px}.selection{min-height:54px;margin-bottom:9px}.build-controls{flex-direction:row;padding:0 12px 11px;gap:6px}.tower-card{flex:1;min-width:0;padding:7px;gap:6px;min-height:62px}.tower-glyph{width:36px;height:40px;font-size:23px}.tower-detail b{font-size:12px}.tower-detail small{display:none}.tower-price{font-size:12px}.toolbtn{flex:1;min-width:0}.panel-bottom{padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.phase-line{margin:0;display:block;min-width:91px}.phase-line span,.phase-line strong{display:block}.phase-line strong{margin-top:3px}.wave-actions{flex:1;max-width:380px}.helpbar{font-size:10px}}
@media(max-width:510px){.topbar{height:49px}.emblem--small{width:28px;height:28px}.wordmark{font-size:19px;letter-spacing:-1.2px}.build-id{font-size:9px;margin-left:0;padding:4px}.identity{gap:7px}.header-tools{gap:7px}.session-indicator{font-size:0}.session-indicator>span{margin:0}.header-button{height:32px;width:32px}.gamebox{margin-top:6px}.hud{min-height:58px}.hud-cell{padding:9px 9px;gap:5px}.hud-label{font-size:10px}.hud-cell strong{font-size:15px}.hud-money .money-symbol{display:none}.hud-kills{display:none}.field-topline{top:6px;left:6px;right:42px}.map-name,.game-status{font-size:9px;padding:5px 6px}.fullscreen-btn{top:6px;right:6px;width:27px;height:26px}.side-top{padding:12px 11px 7px}.side-top strong{font-size:15px}.selection{margin:0 9px 9px;padding:9px 10px}.selection b{font-size:12px}.selection small{font-size:10px}.build-controls{padding:0 9px 10px;gap:5px}.tower-card{display:grid;grid-template-columns:29px 1fr;grid-template-rows:1fr 1fr;column-gap:6px;row-gap:0;padding:5px 6px;min-height:63px}.tower-glyph{width:28px;height:40px;font-size:21px;grid-column:1;grid-row:1/3}.tower-detail{grid-row:1;grid-column:2;align-self:end}.tower-detail b{font-size:11px;margin:0;white-space:nowrap}.tower-price{grid-row:2;grid-column:2;padding:2px 0 0;font-size:11px;align-self:start}.toolbtn{gap:5px;padding:6px 7px;min-height:59px}.toolbtn .icon{width:28px;height:32px;font-size:20px}.toolcopy b{font-size:11px}.toolcopy small{font-size:10px}.tool-arrow{display:none}.panel-bottom{gap:7px;padding:10px 9px}.phase-line{display:none}.wave-actions{max-width:none}.wave-button{font-size:12px}.helpbar{padding:13px 2px;line-height:1.6;display:block}.help-version{display:none}.help-arrow{padding:0 2px}.modal{padding:20px}.emblem--hero{width:76px;height:76px;margin-bottom:19px}.menu-brand{font-size:43px;letter-spacing:-2.9px}.menu-description{font-size:12px;margin-bottom:20px}.dialog-pane{padding:16px}.upgrade-cards{gap:5px}.upgrade-card{min-height:148px;padding:9px}.upgrade-card>span{font-size:24px;margin-bottom:12px}.upgrade-card b{font-size:11px}.upgrade-card small{font-size:10px}.upgrade-card i{font-size:9px;margin-top:10px}}
@media(max-width:350px){.wordmark{font-size:16px}.build-id{display:none}.hud-cell strong{font-size:13px}.map-name{display:none}.tower-glyph{display:none}.tower-card{display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.tower-detail b{font-size:11px}.meta-bar{gap:7px}.meta-buy{padding:8px 5px}}
@media(max-height:640px) and (orientation:landscape){.modal{padding:8px}.emblem--hero{width:48px;height:48px;margin-bottom:8px}.menu-brand{font-size:33px;margin-bottom:6px}.menu-description{font-size:11px;margin-bottom:9px}.begin-button{min-height:38px}.meta-bar{margin-top:8px;padding:7px 0}.menu-footnote{margin-top:8px}.dialog-pane{padding:12px}.dialog-pane h2{margin:9px 0 4px}.upgrade-cards{margin:10px 0}.upgrade-card{min-height:100px}}
@media(prefers-reduced-motion:reduce){.emblem-outer,.emblem-inner{animation:none}.toast,.tower-card,.primary,.secondary{transition:none}}
/* Feedback never covers the center of the arena. */
.toast{top:auto;bottom:16px;background:#222d32;color:#eff6ef;border-left:3px solid var(--accent);box-shadow:0 7px 22px #0006;padding:8px 11px}
@media(max-width:510px){.toast{bottom:8px;max-width:calc(100% - 20px);font-size:11px}}


/* Main menu, settings and research — utilitarian, compact game UI. */
.menu-actions{display:grid;gap:8px}
.menu-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.menu-nav-button{color:var(--text);border:1px solid #4b5350;background:#242927;min-height:49px;display:flex;align-items:center;gap:9px;padding:0 12px;font:650 13px inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.menu-nav-button:hover,.menu-nav-button:focus-visible{border-color:var(--accent);background:#303a31}
.menu-nav-button>span:nth-child(2){flex:1}
.menu-nav-button>span:last-child{font-size:19px;color:#a4b0aa}
.menu-nav-glyph{font:22px/1 var(--mono);color:var(--accent)}
.meta-helper{max-width:130px;text-align:right;font-size:10px;color:#77817e;line-height:1.4}
.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-bottom:1px solid #414844;padding-bottom:14px}
.panel-kicker{font:10px var(--mono);letter-spacing:1.2px;color:var(--accent)}
.panel-header h2{font-size:25px;line-height:1.1;margin:6px 0 0;letter-spacing:-.7px}
.close-panel{height:36px;width:38px;flex-shrink:0;background:#292e2c;border:1px solid #545c55;color:#cbd3ca;font-size:18px;cursor:pointer}
.close-panel:hover,.close-panel:focus-visible{border-color:var(--accent)}
.prefs-pane,.research-pane{text-align:left;max-height:min(88dvh,850px);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#4c5950 #202522}
.prefs-pane{max-width:540px}.research-pane{width:min(100%,980px);max-width:980px}
.prefs-section{margin-top:20px}.prefs-section h3{color:#abb5af;margin:0 0 4px;font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.7px}
.pref-row{display:grid;grid-template-columns:1fr auto;column-gap:15px;row-gap:13px;padding:14px 0;border-bottom:1px solid #3b423e}
.pref-copy strong,.pref-copy small{display:block}.pref-copy strong{font-weight:650;font-size:13px}.pref-copy small{color:#99a49e;font-size:11px;margin-top:5px;line-height:1.45}
.pref-value{min-width:40px;text-align:right;font:600 14px var(--mono);color:var(--accent);align-self:center}
.pref-row input[type=range]{grid-column:1/-1;width:100%;height:19px;accent-color:var(--accent);cursor:pointer;touch-action:pan-y}
.panel-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:20px}
.panel-footer small{font-size:10px;line-height:1.4;color:#87938a}
.panel-action{padding:0 22px;min-height:41px}
.research-currency{display:flex;align-items:center;justify-content:space-between;margin:17px 0 0;background:#292f2b;border:1px solid #485146;padding:12px 15px;font:12px var(--mono)}
.research-currency span span{color:#ecbc79}.research-currency strong{font-size:20px;color:#f4d197}
.research-intro{margin:12px 0 18px!important;font-size:12px!important;max-width:760px;line-height:1.5!important}
.research-tree{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.research-branch{min-width:0}.branch-label{font:600 12px var(--mono);color:var(--accent);padding:8px 0 12px;border-bottom:2px solid #6f8362}
.branch-nodes{display:flex;flex-direction:column;gap:16px;padding-top:13px}
.research-node{position:relative;min-height:142px;display:flex;flex-direction:column;background:#292e2b;border:1px solid #505a50;padding:12px;gap:8px}
.research-node:not(:first-child)::before{content:'';position:absolute;top:-17px;height:16px;width:1px;left:24px;background:#67766a}
.research-node.is-locked{border-color:#3e4441;opacity:.63;background:#242726}
.research-node.is-maxed{border-color:#91ba71}
.research-node-top{display:flex;align-items:center;gap:9px}.research-symbol{font:24px var(--mono);color:var(--accent);width:27px}
.research-node-name{min-width:0;flex:1;font-weight:700;font-size:12px}.research-level{font:600 11px var(--mono);white-space:nowrap;color:#c6d8bd}
.research-node-desc{font-size:11px;line-height:1.4;color:#abb7ad;flex:1}
.research-purchase{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:1px solid #5b6e51;background:#354634;color:#ddecce;padding:8px 9px;cursor:pointer;font:650 11px var(--mono);text-align:left}
.research-purchase:hover:not(:disabled){border-color:var(--accent);background:#475b41}
.research-purchase:disabled{cursor:not-allowed;opacity:.5}
.research-node.is-maxed .research-purchase{border:1px solid #4c6748;color:#c5e6b1;background:#313f30;opacity:1}
@media(max-width:720px){.research-tree{grid-template-columns:1fr;gap:15px}.branch-nodes{gap:8px}.research-node{min-height:0}.research-node:not(:first-child)::before{display:none}.research-branch{border-bottom:1px solid #383f3b;padding-bottom:11px}.research-node-desc{flex:auto}}
@media(max-width:510px){.menu-nav-button{font-size:12px;min-height:45px;padding:0 10px}.panel-header h2{font-size:23px}.prefs-pane,.research-pane{padding:16px!important;max-height:90dvh}.pref-row{padding:11px 0;row-gap:9px}.prefs-section{margin-top:14px}.research-intro{font-size:11px!important}.research-currency{margin-top:11px}.research-tree{gap:10px}.research-node{padding:10px}.research-node-desc{font-size:10px}}
@media(max-height:550px) and (orientation:landscape){.prefs-pane,.research-pane{max-height:96dvh}.panel-header{padding-bottom:8px}.panel-header h2{font-size:20px}.prefs-section{margin-top:6px}.pref-row{padding:7px 0;row-gap:4px}.pref-copy small{margin-top:2px}.research-tree{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Permanent research workbench: large scrollable canvas, fixed compact category rail. */
.research-pane{display:flex;flex-direction:column;overflow:hidden!important;max-height:min(92dvh,920px)!important;min-height:min(670px,92dvh);padding-bottom:15px!important}
.research-pane .panel-header,.research-pane .research-currency,.research-pane .panel-footer{flex:none}
.research-body{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#505d50 transparent;min-height:0;flex:1;padding:0 3px 10px 0}
.research-body .research-tree{margin-top:4px}
.research-navigation{display:flex;flex:none;gap:5px;padding:10px 0 6px;margin-top:6px;border-top:1px solid #46504b;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#53634e #252825;scroll-snap-type:x proximity;overscroll-behavior-x:contain}
.research-tab{position:relative;display:flex;align-items:center;gap:8px;flex:0 0 auto;min-width:122px;min-height:60px;background:#292f2b;color:#bec7c0;border:1px solid #475148;padding:8px 11px;font-family:inherit;text-align:left;cursor:pointer;scroll-snap-align:start}
.research-tab.is-current{color:#e9f4e0;border-color:#badd82;background:#384333;box-shadow:inset 0 -3px 0 #bddf89}
.research-tab:hover:not(.is-current),.research-tab:focus-visible{border-color:#92aa7b}
.research-tab.is-unavailable{opacity:.76}
.research-tab .tab-symbol{font-size:23px;color:var(--accent);min-width:27px;text-align:center}
.research-tab .tab-copy{display:flex;flex-direction:column;gap:4px}.research-tab b{font-size:11px;font-weight:730}.research-tab small{font-size:10px;color:#a1a99e}
.research-tab .tab-lock{position:absolute;top:4px;right:6px;font-size:13px;color:#c0a786}
.research-pane .panel-footer{margin-top:8px;min-height:40px}
.research-unlock{display:flex;align-items:center;gap:16px;grid-column:1/-1;background:#262b28;border:1px solid #4a5448;padding:20px;min-height:165px}
.unlock-icon,.tower-summary-icon{display:grid;place-items:center;flex:0 0 80px;width:80px;height:80px;font-size:48px;background:#242926;border:1px solid var(--tower-color);color:var(--tower-color)}
.unlock-description{flex:1}.unlock-description small,.tower-research-summary small{color:#a7b49d;font:11px var(--mono)}.unlock-description h3,.tower-research-summary h3{margin:6px 0;font-size:21px}.unlock-description p,.tower-research-summary p{font-size:12px;line-height:1.5;color:#aab5a9;margin:0;max-width:490px}
.research-unlock-button{flex:0 0 170px;min-height:51px;border:1px solid #b8db87;background:#bddd8d;color:#1c2518;font:700 12px var(--mono);cursor:pointer}
.research-unlock-button:disabled{color:#8b9687;background:#343935;border-color:#536151;cursor:not-allowed}
.research-tree.tower-research-tree{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.tower-research-summary{grid-column:1/-1;display:flex;align-items:center;gap:16px;background:#232825;border-bottom:1px solid #435149;padding:13px}
.tower-summary-icon{width:54px;height:54px;flex-basis:54px;font-size:30px}
.tower-research-summary h3{font-size:16px}.research-tree.tower-research-tree .research-branch{grid-row:2}
@media(max-width:720px){.research-pane{width:100%;min-height:0;max-height:95dvh!important}.research-tree.tower-research-tree{grid-template-columns:1fr}.research-tree.tower-research-tree .research-branch{grid-row:auto}.research-unlock{flex-wrap:wrap;gap:9px;padding:12px}.unlock-icon{width:62px;height:62px;flex-basis:62px;font-size:37px}.unlock-description{flex-basis:calc(100% - 75px)}.research-unlock-button{flex:1 1 100%;min-height:43px}}
@media(max-width:510px){.research-pane{padding:13px!important}.research-currency{padding:9px 11px}.research-intro{margin:8px 0 10px!important}.research-tab{min-width:110px;padding:6px 7px;min-height:54px;gap:5px}.research-tab .tab-symbol{min-width:24px;font-size:20px}.research-tab b{font-size:10px}.research-tab small{font-size:9px}.research-navigation{margin-top:2px}.research-pane .panel-footer{min-height:32px}}
@media(max-height:540px) and (orientation:landscape){.research-pane{max-height:97dvh!important;min-height:0}.research-navigation{padding:5px 0}.research-tab{min-height:42px}.research-intro{margin:7px 0!important}.tower-research-summary{padding:5px}}
/* Extra unlocked towers stay accessible on narrow devices; no clipping to three slots. */
@media(max-width:800px){.build-controls{overflow-x:auto;justify-content:flex-start}.tower-card{flex:0 0 122px;min-width:122px}}
@media(max-width:510px){.tower-card{flex:0 0 108px;min-width:108px}}