:root{color:#ecf5eb;background:#17212b;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;min-width:320px;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.mobile-orientation{display:none}button,summary{font:inherit}button{min-height:2.75rem;border:0;border-radius:.55rem;padding:.7rem .9rem;color:#182112;background:#e9c46a;font-weight:800;cursor:pointer}button:hover{background:#f2d37d}button:focus-visible,summary:focus-visible,#game-canvas:focus-visible{outline:3px solid #fff1b8;outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.5}button.secondary{color:#e8f0e9;background:#405b57}button.secondary:hover{background:#526f6a}button.danger{width:100%;margin-top:.75rem;color:#ffe9df;background:#7a4138}button.danger:hover{background:#955045}.game-shell{width:min(100% - 2rem,900px);margin:1rem auto 2rem}.game-shell:before{content:"";position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;opacity:.22;background-image:radial-gradient(circle at 20% 15%,#405b57 0,transparent 32%),radial-gradient(circle at 80% 85%,#303654 0,transparent 30%)}.game-header{margin-bottom:.75rem}.eyebrow,.palette-label,.menu-label{color:#91c4b4;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.eyebrow{margin:0}h1{margin:.1rem 0 0;font-size:clamp(1.75rem,5vw,2.5rem)}h2{margin:0;color:#fff9dd;font-size:clamp(1.5rem,4vw,2rem)}.tactical-hud{position:absolute;z-index:4;top:.7rem;right:.7rem;left:.7rem;display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;pointer-events:none}.tactical-hud>*{pointer-events:auto}.hud{display:flex;gap:.35rem;margin:0;color:#d8f3e8}.hud>span{padding:.4rem .6rem;border:1px solid rgba(255,249,221,.35);border-radius:.45rem;background:#17212beb;box-shadow:0 3px 10px #00000047;font-size:.88rem;white-space:nowrap}.hud strong{color:#fff9dd}.time-controls{display:flex;gap:.2rem}.time-controls button{min-width:3rem;min-height:2.5rem;padding:.4rem .55rem;font-size:.72rem}.time-controls button.selected{color:#fff;filter:brightness(1.2) drop-shadow(0 0 6px var(--faction-accent))}.game-menu{position:relative}.game-menu>summary{min-height:2.75rem;padding:.7rem .9rem;border-radius:.55rem;color:#e8f0e9;background:#405b57;font-weight:800;cursor:pointer;list-style:none}.game-menu>summary::-webkit-details-marker{display:none}.game-menu>summary:after{content:"⌄";margin-left:.45rem}.game-menu[open]>summary{background:#526f6a}.menu-panel{position:absolute;z-index:5;top:calc(100% + .45rem);right:0;width:min(20rem,calc(100vw - 2rem));padding:.85rem;border:1px solid #718a91;border-radius:.65rem;background:#22343a;box-shadow:0 12px 28px #00000059}.menu-note{margin:0 0 .75rem;color:#b9d9d0;font-size:.78rem}.menu-group{margin-top:.75rem}.relic-summary{display:grid;gap:.25rem;margin-top:.75rem;padding:.65rem;border-left:3px solid #e9c46a;color:#c9dbcf;background:#17212b;font-size:.8rem}.relic-summary p{margin:0}.menu-group>summary{color:#fff1b8;font-weight:800;cursor:pointer}.menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;margin-top:.4rem}.menu-actions button{min-height:2.45rem;padding:.5rem;font-size:.82rem}.menu-exit-actions{margin-top:.75rem}.menu-exit-actions .danger{width:100%;margin-top:0}.audio-settings{display:flex;align-items:center;gap:.5rem;margin:.65rem 0 0;color:#c9dbcf;font-size:.82rem}.audio-settings input{accent-color:#e9c46a}.landing-panel,.tutorial-panel,.setup-panel,.outcome-panel,.relic-choice-panel,.merchant-panel{margin-bottom:.75rem;padding:.9rem;border:1px solid #526f6a;border-radius:.65rem;color:#d8f3e8;background:#22343a}.landing-panel{display:grid;min-height:min(58vh,30rem);align-content:center;justify-items:start;gap:.85rem;padding:clamp(1.25rem,6vw,3rem);background:linear-gradient(145deg,#31454bfa,#22343afa)}.landing-panel h2{max-width:13ch}.landing-panel p{max-width:34rem;margin:0;color:#c9dbcf}.landing-panel button{margin-top:.35rem}.tutorial-panel[hidden],.setup-panel[hidden],.outcome-panel[hidden],.landing-panel[hidden],.relic-choice-panel[hidden],.merchant-panel[hidden],.board-stage[hidden],.tactical-hud[hidden],.tower-inspector[hidden],.developer-overlay[hidden],.fps-overlay[hidden],.tower-palette[hidden],.wave-briefing[hidden],.command-action[hidden]{display:none}.tutorial-panel summary{color:#fff1b8;font-weight:800;cursor:pointer}.tutorial-panel ol{margin:.75rem 0;padding-left:1.25rem}.tutorial-panel dl{display:grid;grid-template-columns:max-content 1fr;gap:.35rem .75rem;margin:.75rem 0 0}.tutorial-panel dt{color:#fff9dd;font-weight:700}.tutorial-panel dd{margin:0}.tutorial-panel button{margin-top:.75rem}.setup-panel{display:grid;gap:.8rem}.setup-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.campaign-progress{color:#91c4b4;font-size:.78rem;font-weight:800}.campaign-milestone{margin:-.35rem 0 0;padding-left:.65rem;border-left:3px solid #e9c46a;color:#b9d9d0;font-size:.86rem;line-height:1.4}.mission-cards,.selection-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.mission-card{display:grid;align-content:start;gap:.2rem;min-height:9rem;padding:.8rem;text-align:left;color:#c9dbcf;background:#31454b}.mission-card strong{color:#fff9dd;font-size:1.05rem}.mission-card small{margin-top:auto;color:#b9d9d0;font-weight:600}.mission-card-kicker{color:#91c4b4;font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.mission-card.selected{color:#182112;background:#e9c46a;box-shadow:inset 0 0 0 2px #fff1b8}.mission-card.selected strong{color:#182112}.mission-card.selected .mission-card-kicker,.mission-card.selected small{color:#4e4a2c}.mission-card:disabled{color:#8ca29a;background:#273b40}.selection-card{display:grid;min-height:9.25rem;align-content:start;gap:.45rem;padding:.9rem;text-align:left;color:#c9dbcf;background:#31454b}.selection-card strong{color:#fff9dd;font-size:1.05rem}.selection-card span{color:#b9d9d0;font-size:.82rem;font-weight:600;line-height:1.38}.selection-card.selected{color:#182112;background:#e9c46a;box-shadow:inset 0 0 0 2px #fff1b8}.selection-card.selected strong{color:#182112}.selection-card.selected span{color:#4e4a2c}.setup-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem}.setup-actions button:last-child{margin-left:auto}.difficulty-palette{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem}.difficulty-palette .palette-label{flex-basis:100%}.difficulty-choice{min-height:2.5rem;padding:.45rem .7rem;color:#c9dbcf;background:#31454b;font-size:.84rem}.difficulty-choice.selected{color:#182112;background:#91c4b4;box-shadow:inset 0 0 0 2px #d8f3e8}#game-canvas{display:block;width:100%;height:auto;border:4px solid #56746c;border-radius:.75rem;background:#6a9f58;box-shadow:0 14px 28px #0000003d;image-rendering:pixelated;touch-action:none;-webkit-tap-highlight-color:transparent}.board-stage{position:relative}.build-confirm-controls{position:absolute;z-index:6;display:flex;gap:2.5rem;transform:translate(-50%,-50%);pointer-events:none}.build-confirm-controls[hidden]{display:none}.build-confirm-controls button{pointer-events:auto;display:grid;width:2.65rem;min-height:2.65rem;padding:0;border:2px solid #fff9dd;border-radius:999px;place-items:center;font-size:1.5rem;line-height:1;box-shadow:0 3px 10px #0006}.placement-cancel{color:#ffe9df;background:#8f423e}.placement-cancel:hover{background:#ab514b}.placement-confirm{color:#142414;background:#9fd66b}.placement-confirm:hover{background:#b7e982}.tower-inspector{display:grid;align-content:start;gap:.55rem;margin-top:.75rem;padding:.75rem 1rem;border:1px solid #526f6a;border-radius:.65rem;color:#c9dbcf;background:#22343a}.inspector-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.15rem .5rem}.inspector-heading-copy{display:grid;min-width:0;gap:.15rem}.hide-tower-inspector{align-self:start;min-width:3.6rem}.show-tower-inspector{display:grid;place-items:center}.show-tower-inspector[hidden]{display:none}.tower-inspector strong{color:#fff9dd}.inspector-description{margin:0;color:#ddd4c1;font-size:.78rem;line-height:1.4}.inspector-stats{color:#f3e4bd;font-size:.74rem;font-weight:700;line-height:1.35}.tower-actions{display:grid;gap:.5rem;padding-top:.55rem;border-top:1px solid rgba(209,168,84,.35)}.tower-actions[hidden]{display:none}.tower-inspector button{padding:.55rem .8rem}.target-policy{display:flex;align-items:center;gap:.35rem;color:#c9dbcf;font-size:.85rem}.target-policy select{border:1px solid #718a91;border-radius:.35rem;padding:.35rem;color:#ecf5eb;background:#17212b;font:inherit}.specialisation-preview{flex-basis:100%;color:#b9d9d0;font-size:.8rem;line-height:1.35}.developer-overlay{margin-top:.75rem;padding:.75rem;border:1px solid #718a91;border-radius:.65rem;color:#d8f3e8;background:#10191e}.developer-overlay pre{margin:.5rem 0 0;overflow-x:auto;color:#b9d9d0;font:.75rem/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap}.fps-overlay{display:inline-flex;align-items:center;padding:.4rem .6rem;border:1px solid rgba(205,236,218,.45);border-radius:.45rem;color:#d8f3e8;background:#070c0bd1;box-shadow:0 3px 10px #00000047;font:700 .75rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;pointer-events:none;white-space:nowrap}.command-dock{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.65rem;margin-top:.75rem;padding:.7rem;border:1px solid #526f6a;border-radius:.75rem;background:#22343a;box-shadow:0 10px 22px #0003}.wave-briefing{grid-column:1 / -1;display:grid;gap:.15rem;padding-left:.65rem;border-left:3px solid #e9c46a;color:#c9dbcf}.wave-briefing strong{color:#fff9dd}.tower-palette{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.15rem;touch-action:pan-x}.tower-choice{display:grid;gap:.1rem;min-width:8.8rem;padding:.5rem .7rem;text-align:left;color:#c9dbcf;background:#31454b;touch-action:none;-webkit-user-select:none;user-select:none}.tower-choice.dragging{opacity:.58;cursor:grabbing}.tower-palette.is-dragging{cursor:grabbing}.tower-choice span{color:#91c4b4;font-size:.72rem;font-weight:600}.tower-choice.selected{color:#182112;background:#e9c46a;box-shadow:inset 0 0 0 2px #fff1b8}.tower-choice.selected span{color:#4e4a2c}.tower-choice.unaffordable:not(.selected){box-shadow:inset 0 0 0 1px #a77a65}.command-action{justify-self:end}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.outcome-panel{display:grid;gap:.65rem;border-color:#e9c46a}.outcome-panel p{margin:0;color:#c9dbcf}.outcome-actions{display:flex;flex-wrap:wrap;gap:.5rem}.outcome-panel.defeat{border-color:#bd6258;background:linear-gradient(145deg,#451818fa,#0d0c0efa 72%);box-shadow:inset 0 0 0 2px #000000b8,0 16px 42px #00000094,0 0 28px #ae393033}.outcome-panel.defeat .palette-label{color:#ef8a72}.outcome-panel.defeat h2{color:#ffe0c7;text-shadow:0 2px #351212,0 0 14px rgba(221,77,62,.3)}.outcome-panel.defeat .outcome-actions button:first-child{border-color:#cf725e;background:linear-gradient(180deg,#7a342d,#351617 70%)}.relic-choice-panel{display:grid;gap:.55rem;border-color:#e9c46a}.relic-choice-panel p{margin:0;color:#c9dbcf}.relic-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.relic-choice{display:grid;min-height:6rem;align-content:start;gap:.25rem;text-align:left}.relic-choice span{color:#4e4a2c;font-size:.78rem;font-weight:600}.merchant-panel{display:grid;gap:.55rem;border-color:#91c4b4}.merchant-panel p{margin:0;color:#c9dbcf}.merchant-offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.merchant-offer{display:grid;min-height:6rem;align-content:start;gap:.25rem;text-align:left}.merchant-offer span{color:#4e4a2c;font-size:.78rem;font-weight:600}@media(max-width:720px){.game-shell{width:min(100% - 1rem,900px);margin:0 auto;padding-bottom:calc(8.75rem + env(safe-area-inset-bottom))}.game-header{margin:0;padding:.65rem 0 .5rem}.tactical-hud{top:.45rem;right:.45rem;left:.45rem;gap:.35rem}.hud{gap:.2rem}.hud>span{padding:.3rem .4rem;font-size:.76rem}.game-menu>summary{min-height:2.25rem;padding:.45rem .6rem;font-size:.78rem}.menu-panel{position:fixed;z-index:6;top:auto;right:.5rem;bottom:calc(.5rem + env(safe-area-inset-bottom));left:.5rem;width:auto;max-height:min(78vh,38rem);overflow-y:auto}.mission-cards,.selection-cards,.relic-choices,.merchant-offers{grid-template-columns:1fr}.mission-card{min-height:6.8rem}.setup-heading{align-items:flex-start;flex-direction:column;gap:.2rem}.setup-actions{display:grid;grid-template-columns:1fr 1.5fr}.setup-actions button:last-child{margin-left:0}.difficulty-choice{flex:1 1 0;min-width:0;padding-inline:.35rem}.tower-inspector{align-items:stretch}.tower-inspector button{margin-left:0}.target-policy{justify-content:space-between}.target-policy select{min-height:2.5rem}.command-dock{position:fixed;z-index:3;right:.5rem;bottom:env(safe-area-inset-bottom);left:.5rem;grid-template-columns:1fr;gap:.45rem;margin:0;padding:.5rem;border-radius:.75rem .75rem 0 0}.wave-briefing{font-size:.82rem}.tower-palette{width:100%}.tower-choice{flex:1 1 30%;min-width:0;min-height:3.5rem;padding:.4rem;font-size:.82rem}.tower-choice span{font-size:.66rem}.command-action{justify-self:stretch}.command-action button{width:100%}}@media(max-width:390px){h1{font-size:1.65rem}.hud>span{padding-inline:.3rem;font-size:.68rem}.menu-actions{grid-template-columns:1fr}.command-action button{padding-inline:.55rem;font-size:.85rem}}.game-shell{--faction-accent: #b97aff;--faction-bright: #ead7ff;--faction-deep: #26193c;--crest-position: 0% 50%}.game-shell[data-faction=book-of-blessings]{--faction-accent: #f5c85b;--faction-bright: #fff3bd;--faction-deep: #3d2f12;--crest-position: 33.333% 50%}.game-shell[data-faction=druids-fieldbook]{--faction-accent: #91d96b;--faction-bright: #e7ffd4;--faction-deep: #163524;--crest-position: 66.667% 50%}.game-shell[data-faction=goblin-explosions]{--faction-accent: #ff9258;--faction-bright: #ffe0a1;--faction-deep: #452117;--crest-position: 100% 50%}.game-shell:before{opacity:.58;background-color:#090e13;background-image:radial-gradient(circle at 18% 12%,var(--faction-deep) 0,transparent 34%),radial-gradient(circle at 82% 88%,#17262b 0,transparent 32%),linear-gradient(rgba(255,255,255,.012) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.012) 1px,transparent 1px);background-size:auto,auto,24px 24px,24px 24px}.game-header{position:relative;overflow:hidden;padding:.7rem 1rem;border:1px solid color-mix(in srgb,var(--faction-accent) 58%,#171d20);border-radius:.3rem;background:linear-gradient(180deg,#171d21,#080c0f);box-shadow:inset 0 0 0 2px #000000b8,0 6px 18px #0006}.game-header:after{content:"";position:absolute;inset:auto 0 0;height:2px;background:linear-gradient(90deg,transparent,var(--faction-accent),transparent);opacity:.8}.game-header h1{color:#f7ecd3;font-family:Georgia,ui-serif,serif;font-size:clamp(1.35rem,3vw,2rem);letter-spacing:.045em;text-shadow:0 2px #000,0 0 12px color-mix(in srgb,var(--faction-accent) 55%,transparent)}.eyebrow,.palette-label,.menu-label{color:var(--faction-accent)}button{border:1px solid color-mix(in srgb,var(--faction-accent) 55%,#5c4d30);border-radius:.25rem;color:#fff1cf;background:linear-gradient(180deg,#30383b,#121719 70%);box-shadow:inset 0 0 0 1px #000000b8,0 2px 4px #0000008c;text-shadow:0 1px #000}button:hover{color:#fff;border-color:var(--faction-bright);background:linear-gradient(180deg,#414b4e,#1a2022 70%)}button.secondary,.game-menu>summary{color:#d6dce0;border:1px solid #485459;border-radius:.25rem;background:linear-gradient(180deg,#242b2e,#0d1214)}button.secondary:hover,.game-menu[open]>summary{border-color:var(--faction-accent);background:linear-gradient(180deg,#303a3d,#13191b)}button.danger{border-color:#9e4f47;background:linear-gradient(180deg,#542424,#271010)}.landing-panel,.tutorial-panel,.setup-panel,.outcome-panel,.relic-choice-panel,.merchant-panel{position:relative;overflow:hidden;border-color:color-mix(in srgb,var(--faction-accent) 46%,#252f33);background:linear-gradient(145deg,color-mix(in srgb,var(--faction-deep) 34%,#11181b),#0b1012 72%);box-shadow:inset 0 0 0 2px #0009,0 10px 26px #0000005c}.landing-panel:after{content:"";position:absolute;top:50%;right:clamp(1rem,7vw,4rem);width:9rem;height:12rem;opacity:.22;background:url(/assets/faction-ui-crests.png) var(--crest-position) 50% / 400% 100% no-repeat;filter:saturate(1.2) drop-shadow(0 0 18px var(--faction-accent));transform:translateY(-50%);pointer-events:none}.landing-panel>*{position:relative;z-index:1}.selection-card,.mission-card,.tower-choice,.relic-choice,.merchant-offer{border:1px solid #405055;border-radius:.25rem;color:#d9e3df;background:linear-gradient(135deg,#172023,#0e1416);box-shadow:inset 0 0 0 1px #000000b3}.selection-card{position:relative;isolation:isolate;min-height:7.8rem;gap:.35rem;padding:.9rem 1rem}.selection-card[data-faction]{padding-right:6.2rem}.selection-card[data-faction]:after{content:"";position:absolute;z-index:-1;top:.8rem;right:.85rem;width:4.2rem;height:5.6rem;opacity:.4;background:url(/assets/faction-ui-crests.png) var(--card-crest-position, 0%) 50% / 400% 100% no-repeat;filter:saturate(1.2) drop-shadow(0 0 8px var(--card-accent, var(--faction-accent)))}.selection-card[data-faction=grimoire-of-gloom]{--card-accent: #b97aff;--card-crest-position: 0%}.selection-card[data-faction=book-of-blessings]{--card-accent: #f5c85b;--card-crest-position: 33.333%}.selection-card[data-faction=druids-fieldbook]{--card-accent: #91d96b;--card-crest-position: 66.667%}.selection-card[data-faction=goblin-explosions]{--card-accent: #ff9258;--card-crest-position: 100%}.selection-card[data-faction]:hover{border-color:var(--card-accent)}.selection-card[data-biome=gate]{background:radial-gradient(circle at 90% 20%,rgba(145,217,107,.18),transparent 36%),linear-gradient(135deg,#17231c,#0d1512)}.selection-card[data-biome=crossroads]{background:radial-gradient(circle at 90% 20%,rgba(255,146,88,.2),transparent 36%),linear-gradient(135deg,#251b16,#14100e)}.selection-card[data-biome=ruins]{background:radial-gradient(circle at 90% 20%,rgba(185,122,255,.2),transparent 36%),linear-gradient(135deg,#1d1827,#100d16)}.selection-card-description{max-width:34rem}.selection-card-meta{margin-top:auto;color:color-mix(in srgb,var(--card-accent, var(--faction-accent)) 72%,#d8e0dc);font-size:.72rem;font-weight:800;letter-spacing:.025em;line-height:1.35}.selection-card:hover,.tower-choice:hover{border-color:var(--faction-accent)}.selection-card.selected,.mission-card.selected,.tower-choice.selected{color:#fff9e5;border-color:var(--card-accent, var(--faction-accent));background-color:color-mix(in srgb,var(--faction-deep) 78%,#131b1e);box-shadow:inset 0 0 0 2px var(--card-accent, var(--faction-accent)),0 0 12px color-mix(in srgb,var(--card-accent, var(--faction-accent)) 30%,transparent)}.selection-card.selected strong,.mission-card.selected strong,.tower-choice.selected{color:var(--faction-bright)}.selection-card.selected span,.mission-card.selected .mission-card-kicker,.mission-card.selected small,.tower-choice.selected span{color:#e2e8dd}.game-shell.defense-active{width:min(calc(100% - 2rem),1280px,calc((100dvh - 19rem)*1.5 + 19rem));display:grid;grid-template-columns:minmax(0,1fr) 18rem;grid-template-areas:"header header" "board side" "dock side";gap:.65rem;align-items:start}.game-shell.defense-active .game-header{grid-area:header;width:100%;margin:0}.game-shell.defense-active .board-stage{grid-area:board;width:100%}.game-shell.defense-active #command-dock{grid-area:dock;width:100%;margin:0}.game-shell.defense-active .tower-inspector{grid-column:2}.game-shell.defense-active .relic-choice-panel,.game-shell.defense-active .merchant-panel,.game-shell.defense-active .developer-overlay{grid-column:1 / -1}#game-canvas{border:3px solid #070b0d;border-radius:.2rem;box-shadow:inset 0 0 0 2px var(--faction-accent),0 12px 28px #00000073}.board-stage:after{content:"";pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;border:2px solid color-mix(in srgb,var(--faction-accent) 70%,#192125);box-shadow:inset 0 0 22px #0000007a}.tactical-hud{top:.45rem;right:.45rem;left:.45rem;padding:.26rem .45rem;border:1px solid #3b4548;border-radius:.25rem;background:#070a0ceb;box-shadow:inset 0 0 0 1px #000c}.hud>span{border-color:#3b4548;border-radius:.2rem;background:#11171af5;color:#c6d1cb;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud strong{color:var(--faction-bright)}.combat-status{display:flex;align-items:center;gap:.28rem;min-width:0}.combat-status-chip,.combat-callout{display:inline-flex;align-items:center;gap:.25rem;min-height:1.75rem;padding:.28rem .45rem;border:1px solid rgba(185,122,255,.48);border-radius:.2rem;color:#e7d7ff;background:#180d22e6;font:700 .68rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap}.vitality-status{border-color:#ff81af8c;color:#ffc2d7}.vitality-status strong{color:#ffe2ec}.vitality-meter{display:inline-block;width:2.5rem;height:.28rem;overflow:hidden;border:1px solid rgba(255,194,215,.45);background:#21141b}.vitality-meter i{display:block;width:0;height:100%;background:linear-gradient(90deg,#a94f80,#ff9fc4);transition:width .18s ease-out}.combat-callout{border-color:#ffe58aad;color:#ffe58a;background:#2d1e0beb}.combat-callout[data-feedback-kind=life-recovery]{border-color:#ff9ac0b3;color:#ffb8d2}.combat-callout[data-feedback-kind=vitality]{border-color:#d7b9ffa6;color:#d7b9ff}.game-menu>summary{border-radius:.2rem}.menu-panel{border-color:var(--faction-accent);border-radius:.25rem;background:#101619}.run-info{grid-area:side;position:relative;isolation:isolate;align-self:stretch;min-height:0;overflow:hidden;padding:1rem;border:1px solid color-mix(in srgb,var(--faction-accent) 70%,#273033);border-radius:.25rem;background:linear-gradient(180deg,color-mix(in srgb,var(--faction-deep) 25%,#11191d),#080c0e);box-shadow:inset 0 0 0 2px #000000bf,0 10px 22px #00000057}.run-info:before{content:"";position:absolute;z-index:0;top:.65rem;right:.45rem;width:6.75rem;height:9rem;opacity:.4;background:url(/assets/faction-ui-crests.png) var(--crest-position) 50% / 400% 100% no-repeat;filter:saturate(1.25) drop-shadow(0 0 12px var(--faction-accent));pointer-events:none}.run-info>*{position:relative;z-index:1}.run-info-heading{display:grid;gap:.25rem;min-height:4.8rem;padding-right:5rem}.run-info-heading strong{color:var(--faction-bright);font:700 1.05rem/1.2 Georgia,ui-serif,serif}.run-biome,.run-hint{color:#b8c7c0;font-size:.82rem;line-height:1.42}.run-divider{height:1px;margin:.75rem 0;background:linear-gradient(90deg,var(--faction-accent),transparent)}.run-threat{display:block;margin-top:.25rem;color:#f8edcf;font-size:.88rem;line-height:1.35}.tower-inspector{border-color:color-mix(in srgb,var(--faction-accent) 50%,#293237);border-radius:.25rem;background:#101619;box-shadow:inset 0 0 0 2px #0009}.tower-inspector strong{color:var(--faction-bright)}.target-policy select{border-color:#4b5a5d;border-radius:.2rem;background:#0c1113}.command-dock{border-color:color-mix(in srgb,var(--faction-accent) 48%,#293237);border-radius:.25rem;background:linear-gradient(180deg,color-mix(in srgb,var(--faction-deep) 18%,#111719),#070b0d);box-shadow:inset 0 0 0 2px #000000b3,0 8px 18px #0000004d}.wave-briefing{border-color:var(--faction-accent);font-size:.8rem}.tower-choice{flex:0 0 9rem;min-width:9rem;min-height:3.75rem}.tower-choice span{color:#aac2b5}.command-action button{min-width:9rem}@media(max-width:980px){.game-shell.defense-active{width:min(100% - 1rem,900px);display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"header" "side" "board" "dock"}.game-shell.defense-active .run-info{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(10rem,1fr) minmax(16rem,2fr);align-items:center;gap:.65rem 1rem;padding:.7rem .9rem}.run-info:before{width:4rem;height:5.3rem;opacity:.2}.run-info-heading{min-height:0;padding-right:3.25rem}.run-info .run-biome{margin:0}.run-info .run-divider,.run-info .run-hint{display:none}.run-info .run-threat{margin:0}.game-shell.defense-active .tower-inspector{grid-column:1}}@media(max-width:720px){.landing-panel:after{right:.4rem;width:6rem;height:8rem;opacity:.15}.landing-panel{min-height:24rem}.selection-card[data-faction]{padding-right:4.7rem}.selection-card[data-faction]:after{right:.55rem;width:3.4rem;height:4.55rem}.game-shell.defense-active .run-info{grid-template-columns:1fr 1fr}.run-info .run-threat{grid-column:1 / -1}.command-dock{max-height:min(13.5rem,46dvh);overflow:hidden}.tower-palette{overscroll-behavior-inline:contain}.tower-choice{flex:0 0 8.25rem;min-width:8.25rem}}@media(max-width:430px){.game-shell.defense-active .run-info{grid-template-columns:1fr}.run-info .run-threat{grid-column:auto}.run-info-heading{padding-right:3.5rem}.setup-actions{grid-template-columns:1fr}}.game-shell.defense-active{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;display:block;width:100%;height:100dvh;margin:0;padding:0}.game-shell.defense-active .game-header{display:none}.game-shell.defense-active .board-stage{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.game-shell.defense-active #game-canvas{width:100%;height:100%;border:0;border-radius:0;box-shadow:none}.game-shell.defense-active .board-stage:after{border:0;box-shadow:inset 0 0 5rem #0000009e}.game-shell.defense-active .game-header{position:absolute;z-index:10;top:.75rem;left:50%;width:min(43rem,calc(100% - 28rem));margin:0;transform:translate(-50%);background:#080a0af0}.game-shell.defense-active .game-header h1{font-size:clamp(1.1rem,2vw,1.55rem)}.game-shell.defense-active .tactical-hud{z-index:9;top:.75rem;right:1rem;left:1rem;padding:.25rem .4rem;background:#050808f0}.game-shell.defense-active .game-menu{margin-left:auto}.game-shell.defense-active .run-info{position:absolute;z-index:7;top:5.1rem;right:1rem;width:16.5rem;min-height:13rem;padding:.85rem;background:#070c0bf5}.game-shell.defense-active .tower-inspector{position:absolute;z-index:7;right:1rem;bottom:8.9rem;width:16.5rem;max-height:calc(100dvh - 23rem);margin:0;padding:.8rem;overflow-y:auto;background:#070c0bf5}.game-shell.defense-active .show-tower-inspector{position:absolute;z-index:11;top:5.1rem;right:1rem;min-height:2.4rem;padding:.4rem .7rem;font-size:.7rem}.game-shell.defense-active #command-dock{position:absolute;z-index:7;right:17.5rem;bottom:1rem;left:1rem;width:auto;margin:0;padding:.6rem .75rem;border:1px solid color-mix(in srgb,var(--faction-accent) 70%,#836931);background:#050909f7}.game-shell.defense-active .wave-briefing{padding-left:.5rem}.game-shell.defense-active .tower-palette{gap:.35rem;scrollbar-width:thin}.game-shell.defense-active .tower-choice{flex:0 0 7.1rem;min-width:7.1rem;min-height:3.65rem;padding:.4rem .55rem;font-size:.78rem}.game-shell.defense-active .tower-choice span{font-size:.62rem}.game-shell.defense-active .command-action button{min-width:9.5rem}.game-shell.defense-active.outcome-active:after{content:"";position:fixed;z-index:15;top:0;right:0;bottom:0;left:0;background:#020405e0;pointer-events:auto}.game-shell.defense-active.outcome-active>.outcome-panel{position:fixed;z-index:20;top:50%;left:50%;width:min(34rem,calc(100% - 2rem));margin:0;transform:translate(-50%,-50%)}.game-shell button,.game-shell .game-menu>summary{border:0;border-radius:0;color:#fff4d2;background-color:transparent;background-image:url(/assets/ui-button-plate.png);background-position:center;background-size:100% 100%;background-repeat:no-repeat;box-shadow:none;text-shadow:0 2px 2px #000;filter:drop-shadow(0 2px 2px rgba(0,0,0,.72))}.game-shell button:hover,.game-shell .game-menu>summary:hover{color:#fff;background-color:transparent;filter:brightness(1.2) drop-shadow(0 0 8px var(--faction-accent))}.game-shell button:disabled{filter:grayscale(.8) brightness(.6);opacity:.72}.game-shell .selection-card{border-radius:.2rem;background-image:linear-gradient(135deg,#0e1312f5,#030707f5)}.game-shell .selection-card,.game-shell .selection-card:hover{filter:none}.game-shell.defense-active .tower-choice{min-height:3.9rem;padding:.55rem .7rem;color:#fff1cf;background-image:url(/assets/ui-button-plate.png);background-size:100% 100%}.game-shell.defense-active .tower-choice span,.game-shell.defense-active .tower-choice.selected span{color:color-mix(in srgb,var(--faction-bright) 78%,#fff)}.game-shell.defense-active .tower-choice.selected{color:#fffdf1;box-shadow:inset 0 0 0 2px var(--faction-bright),0 0 10px var(--faction-accent)}@media(max-width:900px){.game-shell.defense-active .game-header{top:.45rem;width:calc(100% - 11rem)}.game-shell.defense-active .run-info{top:4.2rem;right:.45rem;width:13rem}.game-shell.defense-active #command-dock{right:.45rem;bottom:.45rem;left:.45rem}.game-shell.defense-active .tower-inspector{right:.45rem;bottom:8rem;width:13rem}}@media(max-width:620px){.game-shell.defense-active .game-header{left:.45rem;width:auto;right:4.2rem;transform:none}.game-shell.defense-active .run-info{display:none}.game-shell.defense-active #command-dock{max-height:9.75rem}.game-shell.defense-active .tower-inspector{bottom:10.25rem;width:calc(100% - .9rem)}}.main-menu{position:relative;display:grid;gap:.7rem;margin-bottom:.75rem}.main-menu[hidden]{display:none}.menu-scene-viewport{position:relative;isolation:isolate;height:min(72dvh,760px);min-height:500px;overflow:hidden;border:1px solid #8b6330;border-radius:.3rem;background:#0a0d10;box-shadow:inset 0 0 0 3px #000000c7,0 14px 34px #0000007a}.menu-scene-viewport:after{content:"";position:absolute;z-index:6;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid rgba(242,193,95,.42);box-shadow:inset 0 0 72px #000000a8,inset 0 0 0 8px #00000040}.menu-scene-track{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:#11100f center / cover no-repeat;transition:background-position .85s cubic-bezier(.22,.8,.28,1)}.main-menu[data-menu-screen=book-select] .menu-scene-track,.main-menu[data-menu-screen=biome-select] .menu-scene-track{background-position:center;background-size:cover}.main-menu[data-menu-screen=landing] .menu-scene-track{background-position:center;background-size:100% 100%}.main-menu[data-menu-screen=landing] .menu-landing-copy{display:none}.menu-screen{position:absolute;top:0!important;right:0;left:0;display:block;width:100%;height:100%;margin:0;padding:0;overflow:hidden;border:0;border-radius:0;color:#f9e9c1;background:transparent!important;box-shadow:none!important}.menu-screen[hidden]{display:none!important;visibility:hidden;pointer-events:none}.menu-screen>*{position:absolute;z-index:2}.menu-landing-screen,.menu-book-screen,.menu-biome-screen{top:0}.menu-landing-copy{top:4%;left:5%;max-width:min(27rem,58%);padding:.65rem .9rem .7rem;border-left:3px solid #e8b95b;background:linear-gradient(90deg,#07090adb,#07090a33);text-shadow:0 2px 2px #000}.menu-landing-copy h2{margin:.12rem 0 .2rem;color:#fff0bf;font:700 clamp(1.4rem,3.5vw,2.25rem)/1.05 Georgia,ui-serif,serif}.menu-landing-copy p{margin:0;color:#e6d3ab;font-size:.82rem}.menu-tarot-actions{position:absolute!important;z-index:3!important;top:0;right:0;bottom:0;left:0;pointer-events:none}.game-shell .menu-tarot-card{position:absolute;top:57.386%;height:34.006%;padding:0;border:0;border-radius:.4rem;color:transparent;background:var(--menu-card-image) center / 100% 100% no-repeat;box-shadow:none;pointer-events:auto;transition:transform .18s ease,filter .18s ease}.game-shell .menu-tarot-card:hover,.game-shell .menu-tarot-card:focus-visible,.game-shell .menu-tarot-card.selected,.game-shell .menu-tarot-card:active{transform:translateY(-.55rem) scale(1.025);filter:brightness(1.16) saturate(1.14) drop-shadow(0 0 .45rem rgba(255,207,92,.88)) drop-shadow(0 0 1.25rem rgba(183,98,255,.38));outline:none}.menu-tarot-card:before{content:"";position:absolute;top:-.28rem;right:-.28rem;bottom:-.28rem;left:-.28rem;border:1px solid transparent;border-radius:.55rem;pointer-events:none;transition:border-color .18s ease,box-shadow .18s ease}.menu-tarot-card:hover:before,.menu-tarot-card:focus-visible:before,.menu-tarot-card.selected:before{border-color:#ffed9afa;box-shadow:inset 0 0 0 2px #ffee9f4d,0 0 1rem #ffcf5cb3}.menu-tarot-card:focus-visible:after{content:"";position:absolute;top:-.55rem;right:-.55rem;bottom:-.55rem;left:-.55rem;border:2px solid #fff0b6;border-radius:.72rem;pointer-events:none}.menu-tarot-card.selected:after{content:"";position:absolute;top:-1rem;right:-1rem;bottom:-1rem;left:-1rem;border:1px solid rgba(255,215,109,.62);border-radius:.9rem;box-shadow:0 0 1rem #ffc0444d;animation:menu-card-selection-pulse 1.7s ease-in-out infinite;pointer-events:none}.menu-tarot-new{left:18.182%;width:16.029%}.menu-tarot-load{left:34.629%;width:14.952%}.menu-tarot-options{left:50.239%;width:15.311%}.menu-tarot-leaderboard{left:65.49%;width:15.371%}@keyframes menu-card-selection-pulse{0%,to{opacity:.55;transform:scale(.985)}50%{opacity:1;transform:scale(1.01)}}.main-menu.menu-cards-departing .menu-tarot-card{animation:menu-card-sweep-right .72s cubic-bezier(.66,0,.94,.38) forwards;pointer-events:none}.main-menu.menu-cards-departing .menu-tarot-card:nth-child(2){animation-delay:.04s}.main-menu.menu-cards-departing .menu-tarot-card:nth-child(3){animation-delay:.08s}.main-menu.menu-cards-departing .menu-tarot-card:nth-child(4){animation-delay:.12s}@keyframes menu-card-sweep-right{0%{opacity:1;transform:translateZ(0) rotate(0)}to{opacity:0;transform:translate3d(125vw,-4vh,0) rotate(14deg)}}.main-menu.menu-books-arriving .menu-book-cards .selection-card{animation:menu-book-drop-in .72s cubic-bezier(.16,.86,.28,1.08) both}.main-menu.menu-books-arriving .menu-book-cards .selection-card:nth-child(2){animation-delay:.1s}.main-menu.menu-books-arriving .menu-book-cards .selection-card:nth-child(3){animation-delay:.19s}.main-menu.menu-books-arriving .menu-book-cards .selection-card:nth-child(4){animation-delay:.28s}@keyframes menu-book-drop-in{0%{opacity:0;transform:translate3d(0,-120vh,0) rotate(-7deg) scale(.92);filter:brightness(1.25) blur(2px)}72%{opacity:1;transform:translate3d(0,1.25rem,0) rotate(1deg) scale(1.02);filter:brightness(1.1) blur(0)}88%{transform:translate3d(0,-.45rem,0) rotate(-.35deg) scale(1)}to{opacity:1;transform:translateZ(0) rotate(0) scale(1);filter:none}}.menu-step-heading{top:4%;right:5%;left:5%;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.42rem .7rem;border-bottom:1px solid rgba(223,170,75,.62);background:#070a0ab3;text-shadow:0 2px 2px #000}.menu-step-hint{color:#d4c39a;font-size:.72rem}.menu-book-screen .campaign-milestone,.menu-biome-screen .campaign-milestone{top:12%;right:7%;left:7%;margin:0;padding:.3rem .55rem;border-left-color:#dca84e;color:#e7d4a9;background:#080a0a94;font-size:.72rem;text-shadow:0 1px 2px #000}.menu-leaderboard-screen{top:0}.leaderboard-intro{top:12%;right:7%;left:7%;margin:0;padding:.35rem .55rem;color:#e7d4a9;background:#080a0a94;font-size:.74rem;line-height:1.35;text-shadow:0 1px 2px #000}.leaderboard-toolbar{top:22%;right:7%;left:7%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;color:#e7d4a9;font-size:.7rem}.leaderboard-toolbar button{min-height:2rem;padding:.3rem .65rem;font-size:.68rem}.leaderboard-list{top:28%;right:7%;bottom:13%;left:7%;overflow-y:auto;padding:.35rem;border:1px solid rgba(191,135,65,.68);background:#070909c7}.leaderboard-header{display:grid;grid-template-columns:2rem minmax(0,1fr) auto auto minmax(8rem,auto);gap:.45rem;padding:.15rem .45rem .35rem;color:#bd9b61;font-size:.56rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.leaderboard-header span:first-child{text-align:center}.leaderboard-header span:nth-child(3),.leaderboard-header span:nth-child(4),.leaderboard-header span:last-child{text-align:right}.leaderboard-rows{display:grid;gap:.28rem;margin:0;padding:0;list-style:none}.leaderboard-row{display:grid;grid-template-columns:2rem minmax(0,1fr) auto auto minmax(8rem,auto);align-items:center;gap:.45rem;min-height:2.35rem;padding:.35rem .45rem;color:#e6d3ab;background:#281a13cc;font-size:.67rem}.leaderboard-row:first-child{color:#fff0bf;background:#734b1fad;box-shadow:inset 0 0 0 1px #e8b95b}.leaderboard-rank{color:#d7a348;font:700 .85rem/1 Georgia,ui-serif,serif;text-align:center}.leaderboard-player,.leaderboard-kills{color:#fff0bf;overflow-wrap:anywhere}.leaderboard-wave{color:#d7bf8d;white-space:nowrap}.leaderboard-date{color:#bfa77b;font-size:.61rem;text-align:right;white-space:nowrap}.leaderboard-empty{margin:1rem;color:#d7bf8d;font-size:.75rem;text-align:center}.leaderboard-form{right:7%;bottom:3%;left:7%;display:grid;grid-template-columns:minmax(0,1fr) minmax(8rem,13rem) auto;align-items:end;gap:.4rem .65rem;padding:.45rem .55rem;border:1px solid #d7a348;background:#130c09f2}.leaderboard-form>div{display:grid;gap:.12rem;min-width:0}.leaderboard-form>div strong{color:#fff0bf;font-size:.72rem}.leaderboard-form label{display:grid;gap:.14rem;color:#d7bf8d;font-size:.64rem}.leaderboard-form input{min-width:0;min-height:2rem;padding:.35rem .45rem;border:1px solid #927044;color:#fff0bf;background:#17100d;font:inherit}.leaderboard-form-message{grid-column:1 / -1;margin:0;color:#e2bd71;font-size:.64rem}.leaderboard-form button{min-height:2rem;padding:.3rem .65rem;font-size:.66rem}.menu-book-cards{top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;pointer-events:none}.game-shell .menu-book-cards .selection-card{position:absolute;top:57.386%;left:18.182%;width:16.029%;height:34.006%;pointer-events:auto;z-index:1;min-height:0;padding:0;align-content:stretch;justify-items:center;text-align:center;border:0;border-radius:0;background:transparent;box-shadow:none;text-shadow:0 2px 2px #000}.game-shell .menu-book-cards .selection-card:nth-child(2){left:34.091%}.game-shell .menu-book-cards .selection-card:nth-child(3){left:49.821%}.game-shell .menu-book-cards .selection-card:nth-child(4){left:65.191%}.game-shell .menu-book-cards .selection-card{overflow:visible}.game-shell .menu-book-cards .selection-card:after{display:none}.game-shell .menu-book-cards .book-cover{display:block;width:100%;height:100%;margin:0;background-image:var(--book-cover);background-position:center;background-size:100% 100%;background-repeat:no-repeat;filter:saturate(1.04) contrast(1.04) drop-shadow(0 .35rem .35rem rgba(0,0,0,.7));transition:transform .18s ease,filter .18s ease}.game-shell .menu-book-cards .selection-card:hover .book-cover,.game-shell .menu-book-cards .selection-card:focus-visible .book-cover{transform:translateY(-.35rem) scale(1.035);filter:saturate(1.1) contrast(1.08) drop-shadow(0 .55rem .5rem color-mix(in srgb,var(--card-accent) 55%,transparent))}.game-shell .menu-book-cards .selection-card.selected{z-index:8;background:transparent;border:0;box-shadow:none}.game-shell .menu-book-cards .selection-card.selected .book-cover{transform:translateY(-1.15rem) scale(1.1);filter:saturate(1.14) contrast(1.1) drop-shadow(0 .8rem .7rem color-mix(in srgb,var(--card-accent) 72%,transparent))}.game-shell .menu-book-cards .book-details{position:absolute;top:auto;bottom:calc(100% + .35rem);left:50%;display:grid;gap:.18rem;width:min(100%,14rem);min-height:3.7rem;padding:.42rem .55rem;border:1px solid color-mix(in srgb,var(--card-accent) 72%,#f3c76a);border-radius:.2rem;background:linear-gradient(180deg,#150d0af0,#070607f0);box-shadow:inset 0 0 0 1px #ffefb91f,0 .28rem .5rem #00000080;transform:translate(-50%)}.game-shell .menu-book-cards .selection-card strong{color:#fff0bf;font:700 clamp(.76rem,1.5vw,1.05rem)/1.1 Georgia,ui-serif,serif}.game-shell .menu-book-cards .selection-card .selection-card-description{color:#ddc79d;font-size:.65rem;line-height:1.25}.game-shell .menu-book-cards .book-roster{display:none;color:#f0d89d;font-size:.58rem;line-height:1.25;overflow-wrap:anywhere}.game-shell .menu-book-cards .selection-card.selected .book-roster{display:block}.game-shell .menu-book-cards .selection-card.selected .book-details{box-shadow:inset 0 0 0 2px var(--card-accent),0 0 18px color-mix(in srgb,var(--card-accent) 45%,transparent)}.menu-scene-actions{right:6%;bottom:3%;left:6%;justify-content:space-between}.menu-scene-actions button{min-height:2.2rem;padding:.45rem .85rem}.menu-book-actions{flex-direction:column;align-items:flex-end;justify-content:flex-end;gap:.35rem}.menu-book-actions button{margin-left:0!important}.menu-biome-cards{top:20%;right:7%;left:7%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(.55rem,1.5vw,1rem);height:44%}.game-shell .menu-biome-cards .selection-card{min-height:0;align-content:end;padding:.75rem .7rem;overflow:hidden;color:#fff0bf;border:2px solid #8c5c2e;background-color:#d9ac68;background-image:linear-gradient(180deg,#140a0508 0,#140a0508 28%,#1b0c0652 49%,#120805ed),var(--biome-map);background-position:center;background-size:cover;box-shadow:inset 0 0 0 3px #70401947,0 4px #221009b8,0 0 12px #ecb04a3d;text-shadow:0 2px 2px rgba(0,0,0,.9);transform:rotate(-1deg)}.game-shell .menu-biome-cards .selection-card:nth-child(2){transform:rotate(1deg)}.game-shell .menu-biome-cards .selection-card:nth-child(3){transform:rotate(-.5deg)}.game-shell .menu-biome-cards .selection-card strong{color:#fff0bf;font:700 clamp(.85rem,1.7vw,1.15rem)/1.1 Georgia,ui-serif,serif}.game-shell .menu-biome-cards .selection-card span{color:#f0d6a2;font-size:.66rem;line-height:1.25}.game-shell .menu-biome-cards .selection-card small{margin-top:auto;color:#f5c975;font-size:.58rem;line-height:1.2}.game-shell .menu-biome-cards .selection-card.selected{box-shadow:inset 0 0 0 3px #fff1a1,0 0 18px #ffd56fb3}.game-shell .menu-biome-cards .selection-card:hover,.game-shell .menu-biome-cards .selection-card:focus-visible{border-color:#fff0a8;box-shadow:inset 0 0 0 3px #fff1a1,0 0 22px #ffd56fd9;transform:translateY(-.35rem) rotate(-1deg)}.game-shell .menu-biome-cards .selection-card:disabled{cursor:wait}.main-menu.menu-books-departing .menu-book-cards .selection-card{animation:menu-book-sweep-right .72s cubic-bezier(.66,0,.94,.38) forwards;pointer-events:none}.main-menu.menu-books-departing .menu-book-cards .selection-card:nth-child(2){animation-delay:.04s}.main-menu.menu-books-departing .menu-book-cards .selection-card:nth-child(3){animation-delay:.08s}.main-menu.menu-books-departing .menu-book-cards .selection-card:nth-child(4){animation-delay:.12s}@keyframes menu-book-sweep-right{0%{opacity:1;transform:translateZ(0) rotate(0)}to{opacity:0;transform:translate3d(125vw,-4vh,0) rotate(14deg)}}.main-menu.menu-maps-arriving .menu-biome-cards .selection-card{animation:menu-map-drop-in .72s cubic-bezier(.16,.86,.28,1.08) both}.main-menu.menu-maps-arriving .menu-biome-cards .selection-card:nth-child(2){animation-delay:.1s}.main-menu.menu-maps-arriving .menu-biome-cards .selection-card:nth-child(3){animation-delay:.19s}@keyframes menu-map-drop-in{0%{opacity:0;transform:translate3d(0,-120vh,0) rotate(-7deg) scale(.92);filter:brightness(1.25) blur(2px)}72%{opacity:1;transform:translate3d(0,1.25rem,0) rotate(1deg) scale(1.02);filter:brightness(1.1) blur(0)}88%{transform:translate3d(0,-.45rem,0) rotate(-.35deg) scale(1)}to{opacity:1;transform:translateZ(0) rotate(0) scale(1);filter:none}}.main-menu.menu-diving .menu-scene-track{animation:menu-map-dive .95s cubic-bezier(.62,0,.96,.5) forwards}.main-menu.menu-diving .menu-biome-screen{animation:menu-dive-fade .95s ease-in forwards}@keyframes menu-map-dive{0%{transform:scale(1);filter:brightness(1)}55%{transform:scale(1.65);filter:brightness(1.08) saturate(1.15)}to{transform:scale(7);filter:brightness(1.35) saturate(1.25)}}@keyframes menu-dive-fade{0%,58%{opacity:1}to{opacity:0}}.menu-config-row{right:7%;bottom:10%;left:7%;display:grid;grid-template-columns:minmax(12rem,1fr);gap:.65rem;align-items:end}.menu-config-row .difficulty-palette{display:flex;flex-wrap:wrap;gap:.3rem;padding:.3rem .45rem;background:#0a0a09b3}.menu-config-row .difficulty-palette .palette-label{flex-basis:100%;font-size:.6rem}.menu-config-row .difficulty-choice{min-height:1.85rem;padding:.25rem .5rem;font-size:.68rem}.menu-shortcuts{display:flex;align-items:center;gap:.5rem;padding:.45rem .65rem;border:1px solid #86602f;background:linear-gradient(180deg,#171817,#080b0b);box-shadow:inset 0 0 0 2px #000000bf,0 5px 14px #00000061}.menu-shortcuts-label{margin-right:auto;color:#bd9b61;font:700 .66rem/1 Georgia,ui-serif,serif;letter-spacing:.12em;text-transform:uppercase}.game-shell .menu-shortcuts button{min-height:2.35rem;padding:.45rem .95rem;font-size:.78rem}.menu-options-panel{position:absolute;z-index:12;top:2.2rem;right:1rem;width:min(31rem,calc(100% - 2rem));display:grid;gap:.8rem;padding:1rem;border:2px solid #bf8741;background:linear-gradient(145deg,#1f140ffa,#070a0afa);box-shadow:0 14px 32px #000000a6,inset 0 0 0 2px #000000b8}.menu-options-panel h2{margin:.15rem 0 0;color:#ffedb2;font:700 1.2rem/1.1 Georgia,ui-serif,serif}.menu-options-controls{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.menu-options-controls label{display:flex;align-items:center;gap:.45rem;min-height:2.2rem;padding:.3rem .45rem;color:#e0d0ad;font-size:.72rem;background:#0000004d}.menu-options-controls input[type=range]{min-width:0;width:100%;accent-color:#d7a348}.menu-options-controls label:last-child{grid-column:1 / -1}.menu-options-panel>button{justify-self:end}.menu-tutorial-panel{position:absolute;z-index:14;top:0;right:0;bottom:3.55rem;left:0;display:grid;align-content:start;gap:.65rem;padding:clamp(1rem,2.5vw,1.7rem);overflow-y:auto;isolation:isolate;border:2px solid #bf8741;background:linear-gradient(145deg,#1f140ffa,#070a0afa 72%);box-shadow:0 14px 32px #000000b8,inset 0 0 0 2px #000000b8}.menu-tutorial-panel[hidden]{display:none}.menu-tutorial-heading{display:flex;align-items:start;justify-content:space-between;gap:1rem}.menu-tutorial-heading h2{margin:.12rem 0 0;color:#ffedb2;font:700 clamp(1.35rem,3vw,2rem)/1.05 Georgia,ui-serif,serif}.menu-tutorial-heading button{flex:0 0 auto;min-height:2.25rem;padding:.4rem .75rem;font-size:.7rem}.menu-tutorial-intro,.menu-tutorial-tip{margin:0;color:#e1d0aa;font-size:.75rem;line-height:1.4}.menu-tutorial-tip{padding:.55rem .7rem;border-left:3px solid #d7a348;background:#0000004d}.menu-tutorial-tip strong{color:#fff0bf}.tutorial-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;min-height:0}.tutorial-guide-card{display:grid;grid-template-rows:minmax(8rem,1fr) auto;gap:.45rem;min-width:0;margin:0;padding:.45rem;border:1px solid #76542f;background:#0f0d0bc2}.tutorial-shot{position:relative;isolation:isolate;min-height:8.5rem;overflow:hidden;border:1px solid #936b37;background:#17221e;box-shadow:inset 0 0 0 2px #0009}.tutorial-shot img{display:block;width:100%;height:100%;object-fit:cover;opacity:.7;filter:saturate(.82) brightness(.72)}.tutorial-shot:after{content:"";position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#04070714,#040606b8);pointer-events:none}.tutorial-shot-label{position:absolute;z-index:2;top:.4rem;left:.45rem;color:#fff1be;font:700 .62rem/1 Georgia,ui-serif,serif;letter-spacing:.04em;text-shadow:0 1px 2px #000}.tutorial-shot-label-top{right:.45rem}.tutorial-shot-dock{position:absolute;z-index:2;right:.45rem;bottom:.45rem;left:.45rem;padding:.45rem .35rem;color:#ffe7a7;text-align:center;font:700 .56rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;background:#080a09e6;border:1px solid #bd8742}.tutorial-shot-confirm{background:radial-gradient(circle at 67% 48%,rgba(130,190,92,.5) 0 9%,transparent 10%),repeating-linear-gradient(0deg,transparent 0 1.7rem,rgba(138,185,113,.16) 1.7rem 1.78rem),repeating-linear-gradient(90deg,transparent 0 1.7rem,rgba(138,185,113,.16) 1.7rem 1.78rem),linear-gradient(145deg,#263c2c,#101914)}.tutorial-shot-confirm:before{content:"";position:absolute;z-index:0;top:43%;right:-5%;left:-5%;height:1.6rem;background:#483524e0;box-shadow:0 0 0 .45rem #281d1659;transform:rotate(-10deg)}.tutorial-grid-cell{position:absolute;z-index:1;width:1.8rem;height:1.8rem;border:2px solid #d8e9a4;border-radius:999px;transform:translate(-50%,-50%)}.tutorial-grid-cell-path{top:42%;left:51%;border-color:#d06a5c;background:#cf504333}.tutorial-grid-cell-valid{top:69%;left:68%;border-color:#d7f08c;background:#75c24d47;box-shadow:0 0 12px #b8eb71b3}.tutorial-confirm-buttons{position:absolute;z-index:2;right:8%;bottom:9%;display:flex;gap:1rem}.tutorial-confirm-buttons b{display:grid;width:1.9rem;height:1.9rem;place-items:center;border:2px solid #fff9dd;border-radius:999px;color:#fff9dd;font-size:1.15rem;line-height:1;background:#71332c;box-shadow:0 2px 6px #0000008c}.tutorial-confirm-buttons b:last-child{background:#3c7437}.tutorial-shot-wave{display:grid;grid-template-columns:repeat(3,1fr);align-content:start;gap:.3rem;padding:2rem .45rem .45rem;background:linear-gradient(145deg,#17282a,#101617 70%)}.tutorial-hud-chip{padding:.3rem .2rem;color:#ffe9a4;text-align:center;font:700 .52rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;background:#0a0e0e;border:1px solid #856737}.tutorial-threat{grid-column:1 / -1;margin-top:.7rem;padding:.6rem .45rem;color:#d9ddc6;text-align:center;font-size:.58rem;line-height:1.4;background:#1a2d22cc;border:1px solid #658454}.tutorial-threat strong{color:#fff0b2;font:700 .7rem/1.1 Georgia,ui-serif,serif}.tutorial-start-button{grid-column:1 / -1;justify-self:center;margin-top:auto;padding:.55rem .8rem;color:#fff0b6;font:700 .62rem/1 Georgia,ui-serif,serif;background:linear-gradient(180deg,#754c28,#3f251a);border:1px solid #dfae56;box-shadow:0 2px 5px #0009}.tutorial-guide-card figcaption{display:grid;gap:.22rem;min-width:0}.tutorial-guide-card figcaption strong{color:#fff0bf;font:700 .78rem/1.1 Georgia,ui-serif,serif}.tutorial-guide-card figcaption span{color:#cfbd99;font-size:.65rem;line-height:1.35}.menu-step-heading,.menu-step-heading>*,.menu-options-panel,.menu-options-panel label,.menu-shortcuts,.menu-panel{min-width:0}.menu-step-heading .palette-label,.menu-step-hint,.campaign-milestone,.menu-options-panel h2,.menu-shortcuts-label{overflow-wrap:anywhere}@media(max-width:720px){.menu-scene-viewport{height:min(67dvh,760px);min-height:0}.menu-landing-copy{left:4%;max-width:75%}.menu-tarot-actions{top:0;right:0;bottom:0;left:0}.menu-step-heading{right:4%;left:4%}.menu-step-hint{display:none}.menu-book-cards{right:4%;left:4%;gap:.3rem}.game-shell .menu-book-cards .selection-card{padding-inline:.25rem}.game-shell .menu-book-cards .selection-card strong{font-size:.68rem}.game-shell .menu-book-cards .selection-card span{font-size:.55rem}.menu-biome-cards{right:4%;left:4%;gap:.35rem}.game-shell .menu-biome-cards .selection-card{padding-inline:.35rem}.game-shell .menu-biome-cards .selection-card strong{font-size:.74rem}.game-shell .menu-biome-cards .selection-card span{font-size:.56rem}.menu-config-row{right:4%;bottom:10%;left:4%;grid-template-columns:1fr;gap:.3rem}.menu-shortcuts{flex-wrap:wrap}.menu-shortcuts-label{flex-basis:100%;margin:0 0 .1rem}.game-shell .menu-shortcuts button{flex:1 1 30%;padding-inline:.45rem;font-size:.68rem}.menu-tutorial-panel{top:0;right:0;bottom:6.4rem;left:0;padding:.8rem}.tutorial-guide-grid{grid-template-columns:1fr}.tutorial-guide-card{grid-template-columns:minmax(8rem,.8fr) minmax(0,1.2fr);grid-template-rows:1fr;align-items:center}.tutorial-shot{min-height:6.6rem}.leaderboard-row{grid-template-columns:1.45rem minmax(0,1fr) auto;gap:.25rem .35rem;font-size:.58rem}.leaderboard-header{grid-template-columns:1.45rem minmax(0,1fr) auto;gap:.25rem .35rem;font-size:.48rem}.leaderboard-header span:nth-child(4){grid-column:2;grid-row:2;text-align:left}.leaderboard-header span:last-child{grid-column:3;grid-row:2}.leaderboard-header span:nth-child(3){grid-column:3;grid-row:1}.leaderboard-wave{grid-column:2;grid-row:2}.leaderboard-date{grid-column:3;grid-row:2;font-size:.52rem}.leaderboard-kills{grid-column:3;grid-row:1}.leaderboard-form{grid-template-columns:minmax(0,1fr) auto}.leaderboard-form>div{grid-column:1 / -1}.leaderboard-form label{min-width:0}}@media(max-width:1024px)and (max-height:600px)and (orientation:landscape){.game-shell:not(.defense-active) .menu-scene-viewport{height:max(0px,calc(100dvh - 8rem));min-height:0}}.game-shell.defense-active #command-dock{top:0;right:0;bottom:0;width:var(--tower-rail-width);border-radius:0;border-right:0}@media(max-width:1100px)and (pointer:coarse){.game-shell:not(.defense-active) .menu-book-cards{top:19%;right:5%;bottom:auto;left:5%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:.55rem;width:auto;height:67%;pointer-events:auto}.game-shell:not(.defense-active) .menu-book-cards .selection-card,.game-shell:not(.defense-active) .menu-book-cards .selection-card:nth-child(2),.game-shell:not(.defense-active) .menu-book-cards .selection-card:nth-child(3),.game-shell:not(.defense-active) .menu-book-cards .selection-card:nth-child(4){position:relative;top:auto;right:auto;bottom:auto;left:auto;width:auto;height:auto;min-height:0}.game-shell:not(.defense-active) .menu-book-cards .book-cover{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0}.game-shell:not(.defense-active) .menu-book-cards .book-details{top:auto;right:.2rem;bottom:.2rem;left:.2rem;width:auto;min-height:0;max-height:62%;overflow-y:auto;padding:.3rem .35rem;transform:none;background:#080707e6}.game-shell:not(.defense-active) .menu-book-cards .selection-card strong{font-size:clamp(.62rem,1.5vw,.92rem)}.game-shell:not(.defense-active) .menu-book-cards .selection-card .selection-card-description{font-size:clamp(.5rem,1.05vw,.66rem)}.game-shell:not(.defense-active) .menu-book-cards .book-roster{font-size:clamp(.46rem,.9vw,.58rem)}}@media(prefers-reduced-motion:reduce){.menu-scene-track{transition:none}.main-menu.menu-cards-departing .menu-tarot-card,.main-menu.menu-books-arriving .menu-book-cards .selection-card,.main-menu.menu-books-departing .menu-book-cards .selection-card,.main-menu.menu-maps-arriving .menu-biome-cards .selection-card{animation:none}}.game-shell.defense-active .tactical-hud,.game-shell.defense-active .run-info,.game-shell.defense-active .tower-inspector,.game-shell.defense-active #command-dock{isolation:isolate}.game-shell.defense-active .tactical-hud:after,.game-shell.defense-active .run-info:after,.game-shell.defense-active .tower-inspector:after,.game-shell.defense-active #command-dock:after{content:"";position:absolute;z-index:12;top:-5px;right:-5px;bottom:-5px;left:-5px;border:18px solid transparent;border-image:url(/assets/hud-panel-frame.png) 82 stretch;pointer-events:none;filter:drop-shadow(0 5px 7px rgba(0,0,0,.72))}.game-shell.defense-active .tactical-hud{padding:.45rem .7rem;background:linear-gradient(180deg,#090b0df7,#030507f0)}.game-shell.defense-active .time-controls{position:absolute;top:3.35rem;left:0;padding:.3rem;border:1px solid rgba(209,168,84,.4);background:#040809e0;box-shadow:inset 0 0 0 1px #000}.game-shell.defense-active .hud{gap:.55rem}.game-shell.defense-active .hud>span{display:flex;align-items:center;gap:.4rem;min-width:6.2rem;border:0;background:linear-gradient(90deg,#251d16eb,#090d10f0);box-shadow:inset 0 0 0 1px #d5af5b4d}.game-shell.defense-active .hud>span:nth-child(1):before{content:"●";color:#f4c45c;text-shadow:3px 2px 0 #8f5d1e}.game-shell.defense-active .hud>span:nth-child(2):before{content:"♥";color:#e96762;font-size:1rem}.game-shell.defense-active .hud>span:nth-child(3):before{content:"☠";color:#d6c5a5;font-size:1rem}.game-shell.defense-active .run-info,.game-shell.defense-active .tower-inspector,.game-shell.defense-active #command-dock{border-color:#191716;background-color:#05080af0;background-image:linear-gradient(155deg,rgba(62,47,34,.16),transparent 42%),radial-gradient(circle at 80% 10%,color-mix(in srgb,var(--faction-accent) 16%,transparent),transparent 34%);box-shadow:inset 0 0 0 1px #d9b15b3d,0 12px 32px #00000085}.game-shell.defense-active #command-dock{grid-template-columns:minmax(0,1fr) auto;padding:.8rem 1rem .75rem}.game-shell.defense-active .wave-briefing{display:grid;grid-template-columns:minmax(12rem,1fr) auto;align-items:center;gap:.25rem 1rem;padding:0 .25rem .65rem;border:0;border-bottom:1px solid rgba(204,160,75,.42)}.game-shell.defense-active .wave-briefing>.palette-label{color:#d5a64e}.game-shell.defense-active .wave-briefing>strong{font-size:.76rem;font-weight:600;line-height:1.35}.next-wave-enemies{grid-row:1 / span 2;grid-column:2;display:flex;min-width:0;max-width:min(34rem,48vw);justify-content:flex-start;gap:.35rem;padding:.35rem 0 .15rem;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-width:thin}.next-wave-enemy{position:relative;display:grid;flex:0 0 3.55rem;width:3.55rem;height:3.35rem;place-items:center;border:1px solid #50432f;background:radial-gradient(circle,#57412861,#07090af5 72%);box-shadow:inset 0 0 8px #000}.next-wave-enemy-sprite{width:2.65rem;height:2.65rem;background-image:url(/assets/enemies.png);background-repeat:no-repeat;background-size:calc(var(--enemy-columns, 3) * 100%) calc(var(--enemy-rows, 2) * 100%);background-position:var(--enemy-x, 0) var(--enemy-y, 0);image-rendering:pixelated;filter:drop-shadow(0 2px 2px #000);animation:enemy-card-hover 1.8s ease-in-out infinite alternate}.next-wave-enemy[data-enemy-atlas=gate] .next-wave-enemy-sprite{background-image:url(/assets/endless-grove-enemies.png)}.next-wave-enemy[data-enemy-atlas=crossroads] .next-wave-enemy-sprite{background-image:url(/assets/endless-cinder-enemies.png)}.next-wave-enemy[data-enemy-atlas=ruins] .next-wave-enemy-sprite{background-image:url(/assets/endless-ruins-enemies.png)}.next-wave-enemy[data-enemy-atlas=dragons] .next-wave-enemy-sprite{background-image:url(/assets/endless-dragons.png);width:3rem;height:3rem}.next-wave-enemy[data-enemy-atlas=starspawn] .next-wave-enemy-sprite{background-image:url(/assets/endless-abyssal-starspawn.png);width:3rem;height:3rem}.next-wave-enemy[data-enemy-atlas=skyroot] .next-wave-enemy-sprite{background-image:url(/assets/endless-skyroot-titans.png);width:3rem;height:3rem}.next-wave-enemy[data-enemy-atlas=moonfang] .next-wave-enemy-sprite{background-image:url(/assets/endless-moonfang-chimeras.png);width:3rem;height:3rem}.next-wave-enemy[data-enemy-kind=slime] .next-wave-enemy-sprite{background-position:0 0}.next-wave-enemy[data-enemy-kind=beetle] .next-wave-enemy-sprite{background-position:50% 0}.next-wave-enemy[data-enemy-kind=wisp] .next-wave-enemy-sprite{background-position:100% 0}.next-wave-enemy[data-enemy-kind=splitter] .next-wave-enemy-sprite{background-position:0 100%}.next-wave-enemy[data-enemy-kind=shaman] .next-wave-enemy-sprite{background-position:50% 100%}.next-wave-enemy[data-enemy-kind=goblin] .next-wave-enemy-sprite{background-position:100% 100%}.next-wave-enemy-count{position:absolute;right:.15rem;bottom:.05rem;padding:0 .2rem;color:#ffe3a0;background:#000000d1;font:800 .7rem/1.25 ui-monospace,monospace}.next-wave-enemy-tag{position:absolute;top:-.3rem;left:-.25rem;padding:.08rem .22rem;color:#211706;background:#f1c35f;font-size:.48rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.next-wave-enemy-tag.boss{color:#fff;background:#9e3e35}.game-shell.defense-active .tower-palette{gap:.45rem;padding:.2rem .1rem .35rem}.game-shell.defense-active .tower-choice{display:grid;grid-template-columns:2.65rem minmax(0,1fr);align-items:center;gap:.4rem;min-width:9.7rem;min-height:4.5rem;padding:.45rem .55rem}.tower-choice-sprite{display:block;width:2.65rem;height:3rem;background-image:var(--tower-sprite-image);background-position:var(--tower-sprite-x) var(--tower-sprite-y);background-repeat:no-repeat;background-size:var(--tower-sprite-size, 400% 200%);image-rendering:pixelated;filter:drop-shadow(0 3px 2px rgba(0,0,0,.8));animation:tower-card-idle 1.7s ease-in-out infinite alternate}[data-faction=grimoire-of-gloom] .tower-choice-sprite{background-image:var(--tower-sprite-image, url(/assets/grimoire-towers.png))}[data-faction=book-of-blessings] .tower-choice-sprite{background-image:var(--tower-sprite-image, url(/assets/blessings-towers.png))}[data-faction=druids-fieldbook] .tower-choice-sprite{background-image:var(--tower-sprite-image, url(/assets/druid-towers.png))}[data-faction=goblin-explosions] .tower-choice-sprite{background-image:var(--tower-sprite-image, url(/assets/goblin-towers.png))}.tower-choice-copy{display:grid;min-width:0;gap:.12rem}.game-shell.defense-active .tower-choice-purpose{overflow:hidden;color:color-mix(in srgb,var(--faction-bright) 84%,#fff);font-size:.58rem;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.game-shell.defense-active .tower-choice-cost{color:#b8aa8f;font-size:.56rem;line-height:1.15}.game-shell.defense-active .tower-choice strong{font-size:.72rem;line-height:1.15}@keyframes tower-card-idle{0%{transform:translateY(1px) scaleX(-.98) scaleY(.98)}to{transform:translateY(-2px) scaleX(-1.03) scaleY(1.03)}}@keyframes enemy-card-hover{0%{transform:translateY(1px) scaleX(-.96) scaleY(.96)}to{transform:translateY(-2px) scaleX(-1.04) scaleY(1.04)}}@media(prefers-reduced-motion:reduce){.tower-choice-sprite,.next-wave-enemy-sprite{animation:none}}@media(max-width:760px){.game-shell.defense-active .wave-briefing{grid-template-columns:1fr}.next-wave-enemies{grid-row:auto;grid-column:1;justify-content:flex-start;overflow-x:auto}.next-wave-enemy{flex:0 0 3.3rem}.game-shell.defense-active .tower-choice{min-width:8.7rem}}.game-shell.defense-active .board-stage{overflow:hidden;background:#050807}.game-shell.defense-active #game-canvas{cursor:crosshair}.game-shell.defense-active #game-canvas.camera-panning{cursor:grabbing}.camera-controls{position:absolute;z-index:11;bottom:13.25rem;left:1rem;display:flex;align-items:center;gap:.3rem;max-width:calc(100% - 2rem);padding:.42rem .5rem;color:#d8c59e;border:1px solid rgba(209,168,84,.5);background:#040809e0;box-shadow:inset 0 0 0 1px #000,0 5px 18px #0000008c}.camera-controls[hidden],.show-command-dock[hidden],.command-dock[hidden]{display:none!important}.camera-controls button{min-width:2.35rem;min-height:2.15rem;padding:.35rem .55rem;font-size:.72rem}.camera-controls button[aria-label="Zoom in"],.camera-controls button[aria-label="Zoom out"]{font-size:1.15rem;font-weight:900}.camera-controls output{min-width:3.1rem;color:#fff0ba;text-align:center;font:800 .72rem/1 ui-monospace,monospace}.camera-hint{margin-left:.25rem;color:#9eaa9f;font-size:.64rem;white-space:nowrap}.hide-command-dock{position:absolute;z-index:14;top:-.75rem;right:.65rem;min-height:1.8rem;padding:.25rem .65rem!important;font-size:.62rem}.show-command-dock{position:absolute;z-index:11;right:1rem;bottom:1rem;min-height:2.4rem;padding:.45rem .8rem}.game-shell.defense-active.dock-collapsed .camera-controls,.game-shell.defense-active.hud-hidden .camera-controls{bottom:1rem}.game-shell.defense-active.hud-hidden .tactical-hud,.game-shell.defense-active.hud-hidden .game-header,.game-shell.defense-active.hud-hidden .run-info,.game-shell.defense-active.hud-hidden .tower-inspector,.game-shell.defense-active.hud-hidden #command-dock,.game-shell.defense-active.hud-hidden .show-command-dock{display:none!important}@media(max-width:900px){.camera-controls{right:.45rem;bottom:10.65rem;left:.45rem;width:fit-content;max-width:calc(100% - .9rem);overflow-x:auto}.camera-hint{display:none}.show-command-dock{right:.45rem;bottom:.45rem}}@media(max-width:520px){.camera-controls{gap:.18rem;padding:.3rem}.camera-controls button{padding-inline:.38rem}}@media(max-width:1024px)and (max-height:600px)and (orientation:landscape){body{min-width:0;overflow:hidden;padding:0}.game-shell.defense-active .game-header,.game-shell.defense-active .run-info{display:none}.game-shell.defense-active .tactical-hud{top:max(.3rem,env(safe-area-inset-top));right:max(.45rem,env(safe-area-inset-right));left:max(.45rem,env(safe-area-inset-left));min-height:2.75rem;align-items:center;padding:.28rem .45rem}.game-shell.defense-active .hud{min-width:0;gap:.2rem}.game-shell.defense-active .hud>span{min-width:0;min-height:2.2rem;gap:.24rem;padding:.35rem .48rem;font-size:0}.game-shell.defense-active .hud strong{font-size:.75rem}.game-shell.defense-active .time-controls{position:static;align-self:center;margin-left:auto;padding:0;border:0;background:none;box-shadow:none}.game-shell.defense-active .time-controls button{min-width:2.55rem;min-height:2.5rem;padding:.35rem .42rem;font-size:.62rem}.game-shell.defense-active .time-controls #pause-game{min-width:3.6rem}.game-shell.defense-active .game-menu>summary{min-width:4.6rem;min-height:2.5rem;padding:.45rem .65rem;font-size:.74rem;text-align:center}.game-shell.defense-active .menu-panel{top:calc(100% + .35rem);right:0;bottom:auto;left:auto;width:min(19rem,calc(100vw - 1rem));max-height:calc(100dvh - 3.5rem - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.game-shell.defense-active #command-dock{right:max(.45rem,env(safe-area-inset-right));bottom:max(.4rem,env(safe-area-inset-bottom));left:max(.45rem,env(safe-area-inset-left));display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:2.15rem 3.35rem;gap:.25rem .45rem;max-height:none;padding:.48rem .55rem .42rem}.game-shell.defense-active .wave-briefing{grid-column:1 / -1;grid-template-columns:auto minmax(0,1fr) minmax(0,12rem);min-height:0;gap:.35rem;padding:0 .2rem .25rem;overflow:hidden}.game-shell.defense-active .wave-briefing>.palette-label{font-size:.56rem;white-space:nowrap}.game-shell.defense-active .wave-briefing>strong{overflow:hidden;font-size:.58rem;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.game-shell.defense-active .next-wave-enemies{grid-row:auto;grid-column:auto;width:100%;max-width:12rem;gap:.2rem;padding:.3rem 0 .12rem;overflow-x:auto;overflow-y:hidden}.game-shell.defense-active .next-wave-enemy{flex:none;width:1.9rem;height:1.75rem}.game-shell.defense-active .next-wave-enemy-sprite{width:1.45rem;height:1.45rem}.game-shell.defense-active .next-wave-enemy-count{right:0;bottom:0;font-size:.5rem}.game-shell.defense-active .tower-palette{align-self:stretch;gap:.28rem;min-width:0;height:3.35rem;padding:0 .05rem .12rem;scroll-snap-type:x proximity}.game-shell.defense-active .tower-choice{grid-template-columns:1.8rem minmax(0,1fr);flex:0 0 6.9rem;min-width:6.9rem;min-height:3.1rem;gap:.22rem;padding:.3rem .38rem;scroll-snap-align:start}.game-shell.defense-active .tower-choice-sprite{width:1.8rem;height:2.15rem}.game-shell.defense-active .tower-choice strong{font-size:.59rem}.game-shell.defense-active .tower-choice-purpose{font-size:.47rem}.game-shell.defense-active .tower-choice-cost{font-size:.46rem}.game-shell.defense-active .command-action{align-self:stretch}.game-shell.defense-active .command-action button{width:7.8rem;min-width:7.8rem;min-height:3.1rem;padding:.45rem .6rem;font-size:.72rem}.game-shell.defense-active .hide-command-dock{top:-1rem;right:.45rem;min-height:2.15rem}.game-shell.defense-active .camera-controls{right:auto;bottom:calc(max(.4rem,env(safe-area-inset-bottom)) + 6.65rem);left:max(.45rem,env(safe-area-inset-left));width:auto;max-width:calc(100% - 5.5rem);gap:.15rem;padding:.22rem .28rem;overflow:visible}.game-shell.defense-active .camera-controls button{min-width:2.65rem;min-height:2.65rem;padding:.35rem .45rem;font-size:.62rem}.game-shell.defense-active .camera-controls button[aria-label="Zoom in"],.game-shell.defense-active .camera-controls button[aria-label="Zoom out"]{font-size:1.05rem}.game-shell.defense-active .camera-controls output{min-width:2.5rem;font-size:.62rem}.game-shell.defense-active .camera-hint{display:none}.game-shell.defense-active.dock-collapsed .camera-controls,.game-shell.defense-active.hud-hidden .camera-controls{bottom:max(.4rem,env(safe-area-inset-bottom))}.game-shell.defense-active .show-command-dock{right:max(.45rem,env(safe-area-inset-right));bottom:max(.4rem,env(safe-area-inset-bottom));min-height:2.75rem}.game-shell.defense-active .tower-inspector{top:calc(max(.3rem,env(safe-area-inset-top)) + 3.15rem);right:max(.45rem,env(safe-area-inset-right));bottom:auto;left:auto;width:min(11.75rem,28vw);max-height:min(12.75rem,calc(100dvh - 11rem));padding:.48rem .55rem;overflow-y:auto;overscroll-behavior:contain}.game-shell.defense-active .show-tower-inspector{top:calc(max(.3rem,env(safe-area-inset-top)) + 3.15rem);right:max(.45rem,env(safe-area-inset-right));min-height:2.15rem;padding:.32rem .48rem;font-size:.58rem}.game-shell.defense-active .tower-inspector strong{font-size:.74rem}.game-shell.defense-active .hide-tower-inspector{min-width:2.8rem;min-height:1.8rem;padding:.22rem .35rem;font-size:.53rem}.game-shell.defense-active .inspector-description{display:-webkit-box;overflow:hidden;font-size:.59rem;line-height:1.25;-webkit-box-orient:vertical;-webkit-line-clamp:2}.game-shell.defense-active .inspector-stats{font-size:.6rem}.game-shell.defense-active .tower-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem;padding-top:.35rem}.game-shell.defense-active #upgrade-tower{order:-3;grid-column:1}.game-shell.defense-active #sell-tower{order:-2;grid-column:2}.game-shell.defense-active .target-policy,.game-shell.defense-active .specialisation-preview,.game-shell.defense-active #specialise-tower{grid-column:1 / -1}.game-shell.defense-active .target-policy{justify-content:space-between;min-width:0;font-size:.58rem}.game-shell.defense-active .target-policy select{min-width:0;max-width:72%;min-height:2rem;padding:.24rem;font-size:.58rem}.game-shell.defense-active .specialisation-preview{display:-webkit-box;overflow:hidden;font-size:.56rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:2}.game-shell.defense-active .tower-actions button{min-height:2.35rem;padding:.3rem .45rem;font-size:.58rem}}@media(max-width:620px)and (orientation:portrait){body:has(.game-shell.defense-active){overflow:hidden;padding:0;background:#050807}.game-shell.defense-active>:not(.mobile-orientation){visibility:hidden;pointer-events:none}.game-shell.defense-active.outcome-active>.outcome-panel{visibility:visible;pointer-events:auto}.game-shell.defense-active .mobile-orientation{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:.65rem;padding:calc(2rem + env(safe-area-inset-top)) calc(2rem + env(safe-area-inset-right)) calc(2rem + env(safe-area-inset-bottom)) calc(2rem + env(safe-area-inset-left));color:#d7c9b0;text-align:center;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--faction-deep) 70%,#101517),#050708 70%)}.mobile-orientation:after{content:"";position:absolute;top:1rem;right:1rem;bottom:1rem;left:1rem;border:18px solid transparent;border-image:url(/assets/hud-panel-frame.png) 82 stretch;pointer-events:none}.mobile-orientation-icon{color:var(--faction-bright);font-size:3rem;filter:drop-shadow(0 0 10px var(--faction-accent))}.mobile-orientation strong{color:#f7ecd3;font:700 1.55rem/1.1 Georgia,ui-serif,serif;letter-spacing:.04em}.mobile-orientation span:last-child{max-width:18rem;font-size:.88rem;line-height:1.45}}.game-shell.defense-active{--combat-rail-width: clamp(16.5rem, 22vw, 19.5rem);--combat-rail-gap: .85rem}.game-shell.defense-active .tower-inspector{box-sizing:border-box;right:1rem;width:var(--combat-rail-width)}.inspector-resize-handle{display:none}.game-shell.defense-active .tower-inspector{top:5.1rem;bottom:8.9rem;max-height:none;overflow-y:auto;overscroll-behavior:contain}.game-shell.defense-active #command-dock{right:calc(var(--combat-rail-width) + var(--combat-rail-gap) + 1rem)}@media(max-width:1024px)and (max-height:600px)and (orientation:landscape){.game-shell.defense-active .tower-inspector{top:calc(max(.3rem,env(safe-area-inset-top)) + 3.15rem);right:max(.45rem,env(safe-area-inset-right));bottom:calc(max(.4rem,env(safe-area-inset-bottom)) + 7rem);width:var(--mobile-inspector-width, min(9rem, calc(50vw - 1rem) ));min-width:0;max-height:none;padding:.65rem .75rem}.game-shell.defense-active #command-dock{right:max(.45rem,env(safe-area-inset-right));left:max(.45rem,env(safe-area-inset-left))}.game-shell.defense-active .tower-inspector strong{font-size:.86rem}.game-shell.defense-active .inspector-description{display:block;overflow-wrap:anywhere;font-size:.68rem;line-height:1.3}.game-shell.defense-active .inspector-resize-handle{display:block;position:absolute;z-index:14;top:.9rem;bottom:.9rem;left:-.7rem;width:1.25rem;cursor:ew-resize;touch-action:none}.game-shell.defense-active .inspector-resize-handle:before{content:"";position:absolute;top:45%;bottom:45%;left:.5rem;width:.2rem;border-radius:999px;background:var(--faction-bright);box-shadow:0 0 .5rem var(--faction-accent);transition:top .16s ease,bottom .16s ease}.game-shell.defense-active .inspector-resize-handle:hover:before,.game-shell.defense-active .inspector-resize-handle:focus-visible:before{top:28%;bottom:28%}.game-shell.defense-active .inspector-stats{font-size:.68rem;line-height:1.3}.game-shell.defense-active .hide-tower-inspector{min-width:3.4rem;min-height:2rem;padding:.28rem .45rem;font-size:.6rem}.game-shell.defense-active .tower-actions{gap:.4rem}.game-shell.defense-active .tower-actions button{min-height:2.5rem;font-size:.62rem}.game-shell.defense-active .target-policy{font-size:.62rem}.game-shell.defense-active .target-policy select{min-height:2.1rem;font-size:.62rem}}.game-shell.defense-active .tactical-hud{border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.game-shell.defense-active .tactical-hud:after{display:none}@media(max-width:720px)and (orientation:portrait){.game-shell:not(.defense-active) .menu-scene-viewport{height:min(68dvh,42rem)}.game-shell:not(.defense-active) .menu-landing-copy{top:3%;right:5%;max-width:none}.game-shell:not(.defense-active) .menu-landing-copy h2{max-width:14ch;font-size:clamp(1.35rem,7vw,2rem)}.game-shell:not(.defense-active) .menu-step-heading{flex-direction:column;align-items:flex-start;gap:.15rem;line-height:1.2}.game-shell:not(.defense-active) .menu-step-heading .palette-label{font-size:.64rem}.game-shell:not(.defense-active) .menu-book-screen .campaign-milestone,.game-shell:not(.defense-active) .menu-biome-screen .campaign-milestone{top:14%;font-size:.66rem;line-height:1.25}.game-shell:not(.defense-active) .menu-book-cards{position:absolute;top:22%;right:4%;left:4%;inset-block-end:auto;height:63%;width:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:.35rem .55rem;pointer-events:auto}.game-shell:not(.defense-active) .menu-book-cards .selection-card{top:auto;left:auto;width:auto;height:auto;position:relative}.game-shell:not(.defense-active) .menu-book-cards .book-cover{height:clamp(5.5rem,17dvh,8rem);width:min(100%,13rem);margin:0 0 -.35rem}.game-shell:not(.defense-active) .menu-book-cards .book-details{position:absolute;top:auto;right:auto;bottom:calc(100% + .2rem);left:50%;min-height:3.25rem;padding:.3rem .35rem;transform:translate(-50%)}.game-shell:not(.defense-active) .menu-book-cards .selection-card strong{line-height:1.05}.game-shell:not(.defense-active) .menu-book-cards .selection-card .selection-card-description{overflow-wrap:anywhere}.game-shell:not(.defense-active) .menu-biome-cards{top:23%;height:43%}.game-shell:not(.defense-active) .menu-biome-screen .menu-config-row{bottom:18%}.game-shell:not(.defense-active) .menu-biome-cards .selection-card strong,.game-shell:not(.defense-active) .menu-biome-cards .selection-card span,.game-shell:not(.defense-active) .menu-biome-cards .selection-card small{overflow-wrap:anywhere}.game-shell:not(.defense-active) .menu-options-panel{position:fixed;top:max(.5rem,env(safe-area-inset-top));right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));width:auto;max-height:calc(100dvh - 1rem);overflow-y:auto}.game-shell:not(.defense-active) .menu-options-controls{grid-template-columns:1fr}.game-shell:not(.defense-active) .menu-options-controls label:last-child{grid-column:auto}.game-shell:not(.defense-active) .menu-options-panel>button{justify-self:stretch}}@media(max-width:1024px)and (max-height:600px)and (orientation:landscape){.game-shell:not(.defense-active){width:min(calc(100% - .5rem),1200px);margin-top:0;margin-bottom:.35rem}.game-shell:not(.defense-active) .game-header{display:none}.game-shell:not(.defense-active) .menu-scene-viewport{height:max(0px,calc(100dvh - 3.85rem))}.game-shell:not(.defense-active) .menu-landing-copy{top:3%;left:3%;max-width:44%;padding:.35rem .55rem .4rem}.game-shell:not(.defense-active) .menu-landing-copy h2{font-size:clamp(1.1rem,3.4vw,1.75rem)}.game-shell:not(.defense-active) .menu-landing-copy p{font-size:.68rem;line-height:1.25}.game-shell:not(.defense-active) .menu-tarot-actions{top:0;right:0;bottom:0;left:0}.game-shell:not(.defense-active) .menu-step-heading{top:3%;right:4%;left:4%;padding:.28rem .45rem;font-size:.64rem}.game-shell:not(.defense-active) .menu-step-hint{font-size:.58rem}.game-shell:not(.defense-active) .menu-book-screen .campaign-milestone,.game-shell:not(.defense-active) .menu-biome-screen .campaign-milestone{top:14%;font-size:.6rem;line-height:1.2}.game-shell:not(.defense-active) .menu-book-cards{position:absolute;top:23%;right:4%;left:4%;inset-block-end:auto;height:63%;width:auto;display:grid;gap:.25rem;pointer-events:auto}.game-shell:not(.defense-active) .menu-book-cards .selection-card{top:auto;height:auto;position:relative}.game-shell:not(.defense-active) .menu-book-cards .book-cover{height:clamp(4.5rem,23dvh,7rem);width:min(100%,11rem);margin:0 0 -.25rem}.game-shell:not(.defense-active) .menu-book-cards .book-details{position:absolute;top:auto;right:auto;bottom:calc(100% + .15rem);left:50%;min-height:3rem;padding:.25rem .3rem;transform:translate(-50%)}.game-shell:not(.defense-active) .menu-book-cards .selection-card strong{font-size:.62rem}.game-shell:not(.defense-active) .menu-book-cards .selection-card .selection-card-description{font-size:.52rem}.game-shell:not(.defense-active) .menu-biome-cards{top:22%;height:47%}.game-shell:not(.defense-active) .menu-biome-cards .selection-card{padding:.4rem .35rem}.game-shell:not(.defense-active) .menu-biome-cards .selection-card strong{font-size:.7rem}.game-shell:not(.defense-active) .menu-biome-cards .selection-card span{font-size:.55rem}.game-shell:not(.defense-active) .menu-biome-cards .selection-card small{font-size:.5rem}.game-shell:not(.defense-active) .menu-biome-screen .menu-config-row{bottom:14%}.game-shell:not(.defense-active) .menu-shortcuts{gap:.25rem;padding:.25rem .4rem}.game-shell:not(.defense-active) .menu-shortcuts-label{font-size:.54rem}.game-shell:not(.defense-active) .menu-shortcuts button{min-height:2rem;padding:.3rem .55rem;font-size:.62rem}.game-shell:not(.defense-active) .menu-options-panel{top:.35rem;right:.35rem;width:min(25rem,calc(100% - .7rem));max-height:calc(100dvh - .7rem);overflow-y:auto;padding:.65rem}.game-shell:not(.defense-active) .menu-options-panel h2{font-size:.95rem}.game-shell:not(.defense-active) .menu-options-controls label{min-height:1.8rem;font-size:.62rem}}.game-shell.defense-active{--tower-rail-width: 10.75rem}.game-shell.defense-active #command-dock{top:5rem;right:.75rem;bottom:.75rem;left:auto;width:var(--tower-rail-width);max-height:none;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;align-items:stretch;gap:.55rem;padding:.65rem;overflow:hidden}.game-shell.defense-active .hide-command-dock,.game-shell.defense-active .show-command-dock{display:none!important}.game-shell.defense-active .tower-palette{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(4.8rem,auto);align-content:start;gap:.42rem;min-width:0;height:auto;padding:.1rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin;touch-action:pan-y}.game-shell.defense-active .tower-choice{position:relative;display:grid;grid-template-columns:1fr;place-items:center;flex:none;width:100%;min-width:0;min-height:4.8rem;padding:.25rem .2rem 1.35rem;overflow:hidden}.game-shell.defense-active .tower-choice-sprite{width:3.35rem;height:3.7rem}.game-shell.defense-active .tower-choice-cost,.game-shell.defense-active .tower-choice.selected .tower-choice-cost{position:absolute;right:.15rem;bottom:.18rem;left:.15rem;color:#fff8dd;font:900 .78rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center;text-shadow:0 2px 0 #000,1px 0 0 #000,-1px 0 0 #000}.game-shell.defense-active .tower-choice.unaffordable .tower-choice-cost{color:#ff746b}.game-shell.defense-active .command-action{width:100%;justify-self:stretch}.game-shell.defense-active .command-action button{width:100%;min-width:0;min-height:3.15rem;padding:.45rem .35rem;font-size:.76rem}.game-shell.defense-active .tower-inspector{top:auto;right:auto;bottom:4.55rem;left:.75rem;width:min(24rem,calc(100vw - var(--tower-rail-width) - 2.5rem));max-height:min(25rem,calc(100dvh - 10rem));padding:.85rem 1rem;overflow-y:auto}.game-shell.defense-active .show-tower-inspector{top:auto;right:auto;bottom:.75rem;left:.75rem;width:3.25rem;min-width:3.25rem;min-height:3.25rem;padding:0;place-items:center;border-radius:999px;font-size:1.65rem;line-height:1}.game-shell.defense-active .hide-tower-inspector{width:2.25rem;min-width:2.25rem;min-height:2.25rem;padding:0;border-radius:999px;font-size:1.25rem;line-height:1}.game-shell.defense-active .camera-controls{right:auto;bottom:.75rem;left:4.65rem;max-width:calc(100% - var(--tower-rail-width) - 6.25rem)}.game-shell.defense-active.dock-collapsed .camera-controls,.game-shell.defense-active.hud-hidden .camera-controls{bottom:.75rem}@media(max-width:900px){.game-shell.defense-active{--tower-rail-width: 8.75rem}.game-shell.defense-active #command-dock{top:4.5rem;right:.45rem;bottom:.45rem;left:auto;padding:.5rem}.game-shell.defense-active .tower-palette{grid-auto-rows:minmax(4.1rem,auto);gap:.3rem}.game-shell.defense-active .tower-choice{min-height:4.1rem;padding-bottom:1.15rem}.game-shell.defense-active .tower-choice-sprite{width:2.75rem;height:3.05rem}.game-shell.defense-active .tower-choice-cost,.game-shell.defense-active .tower-choice.selected .tower-choice-cost{font-size:.66rem}.game-shell.defense-active .tower-inspector{top:auto;right:auto;bottom:4.25rem;left:.45rem;width:min(22rem,calc(100vw - var(--tower-rail-width) - 1.8rem))}.game-shell.defense-active .show-tower-inspector{top:auto;right:auto;bottom:.45rem;left:.45rem}.game-shell.defense-active .camera-controls{right:auto;bottom:.45rem;left:4.35rem;max-width:calc(100% - var(--tower-rail-width) - 5.35rem)}}@media(max-width:1024px)and (max-height:600px)and (orientation:landscape){.game-shell.defense-active{--tower-rail-width: 8.25rem}.game-shell.defense-active #command-dock{top:calc(max(.3rem,env(safe-area-inset-top)) + 3.05rem);right:max(.35rem,env(safe-area-inset-right));bottom:max(.35rem,env(safe-area-inset-bottom));left:auto;width:var(--tower-rail-width);grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;gap:.3rem;padding:.42rem}.game-shell.defense-active .tower-palette{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(3.55rem,auto);height:auto;gap:.25rem;padding:.05rem}.game-shell.defense-active .tower-choice{grid-template-columns:1fr;min-width:0;min-height:3.55rem;padding:.12rem .12rem 1rem}.game-shell.defense-active .tower-choice-sprite{width:2.25rem;height:2.55rem}.game-shell.defense-active .tower-choice-cost,.game-shell.defense-active .tower-choice.selected .tower-choice-cost{font-size:.58rem}.game-shell.defense-active .command-action button{width:100%;min-width:0;min-height:2.65rem;padding:.3rem .2rem;font-size:.62rem}.game-shell.defense-active .tower-inspector{top:auto;right:auto;bottom:calc(max(.35rem,env(safe-area-inset-bottom)) + 3.55rem);left:max(.35rem,env(safe-area-inset-left));width:min(20rem,calc(100vw - var(--tower-rail-width) - 1.5rem));max-height:calc(100dvh - 7.25rem);padding:.6rem .7rem}.game-shell.defense-active .show-tower-inspector{top:auto;right:auto;bottom:max(.35rem,env(safe-area-inset-bottom));left:max(.35rem,env(safe-area-inset-left));width:2.85rem;min-width:2.85rem;min-height:2.85rem;font-size:1.35rem}.game-shell.defense-active .camera-controls{right:auto;bottom:max(.35rem,env(safe-area-inset-bottom));left:calc(max(.35rem,env(safe-area-inset-left)) + 3.35rem);max-width:calc(100% - var(--tower-rail-width) - 4.5rem)}}.game-shell.defense-active .board-stage{position:absolute;top:0;right:calc(var(--tower-rail-width) + .5rem);bottom:0;left:0;width:auto;height:auto}.game-shell.defense-active #command-dock{top:0;right:0;bottom:0;left:auto;width:var(--tower-rail-width);border-radius:0;border-right:0}
