@font-face{font-family:"WS WARBLER";src:url("assets/fonts/wabi-sabi-type-shop/WS_WARBLER.otf") format("opentype");font-style:normal;font-weight:400;font-display:block}
@font-face{font-family:"WS BLACK COPAL";src:url("assets/fonts/wabi-sabi-type-shop/WS_BLACKCOPAL.otf") format("opentype");font-style:normal;font-weight:400;font-display:block}
@font-face{font-family:"WS BROTHER WIND";src:url("assets/fonts/wabi-sabi-type-shop/WS_BROTHERWIND.otf") format("opentype");font-style:normal;font-weight:400;font-display:block}
:root{--font-ui:"WS WARBLER";--font-event:"WS BLACK COPAL";--font-nature:"WS BROTHER WIND";--type-ui-micro:9px;--type-ui-body:11px;--type-ui-control:11px;--type-ui-emphasis:16px;--type-display-event:24px;--type-display-hero:38px;--type-narrative-accent:17px;--type-narrative-title:26px;font-synthesis:none}
*,*::before,*::after{font-synthesis:none}b,strong,h1,h2,h3,h4,button,em,i{font-weight:400;font-style:normal}
:root{color-scheme:dark;--bg:#101b19;--panel:#182723;--border:#32423a;--text:#ececd9;--muted:#afbcad;--accent:#dbeb99;--gold:#f3c97f}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:9px}button,input,select{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:var(--text);background:#23352e;border:1px solid #445548;border-radius:7px;padding:10px 13px;transition:background .15s,border-color .15s}button:hover{background:#354a39;border-color:#a7b580}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}.masthead{max-width:1500px;margin:auto;padding:26px 42px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:24px}.wordmark{font-size:10px;letter-spacing:2px;font-weight:400;display:flex;align-items:center;gap:8px}.wordmark i{font-family:var(--font-ui);font-size:11px;color:#b6c3a0}.mark{color:var(--accent);font-size:17px;margin-right:5px}.version{font-size:9px;letter-spacing:2px;color:var(--muted);border-left:1px solid var(--border);padding-left:22px}.version b{font-weight:400;color:var(--accent);margin-left:6px}nav{display:flex;gap:23px;margin-left:auto;font-size:9px;color:var(--muted)}main{max-width:1500px;margin:auto;padding:35px 42px 22px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.eyebrow{font-size:9px;letter-spacing:2.3px;color:var(--accent);margin:0 0 12px}h1{font-family:var(--font-ui);font-size:24px;font-weight:400;letter-spacing:-1.1px;margin:0 0 10px}.intro p:last-child{color:var(--muted);margin:0}.intro-note{text-align:right;font-size:9px;letter-spacing:1.4px;line-height:2.4;color:var(--accent)}.intro-note small{font-size:9px;color:var(--muted);letter-spacing:0}.green-dot{width:6px;height:6px;background:var(--accent);display:inline-block;border-radius:100%;margin-right:6px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 294px;gap:24px;align-items:start}.game-panel{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--panel)}.game-top{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:19px 23px}.tiny{display:block;font-size:9px;letter-spacing:1.8px;color:var(--muted);margin-bottom:6px}.game-top strong{font-family:var(--font-ui);font-size:11px;font-weight:400}.counters{display:flex;gap:26px}.counters small{display:block;font-size:9px;letter-spacing:1.4px;margin-bottom:4px;color:var(--muted)}.counters b{font-size:14px;font-weight:400}.counters em{font-style:normal;font-size:9px;color:var(--muted);margin-left:5px}.gold{color:var(--gold)}.board-wrap{position:relative;background:#1c3835}canvas{display:block;width:100%;height:auto;touch-action:none}.map-tag{position:absolute;bottom:14px;left:18px;background:#152921e8;color:#e0e8c5;padding:8px 12px;border-radius:5px;font-size:9px;pointer-events:none}.wave-bar{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid var(--border);gap:12px}.wave-bar .tiny{margin-bottom:4px}.wave-bar strong{font-size:9px;font-weight:400}.wave-buttons{display:flex;gap:7px}.primary{background:var(--accent);color:#1f3025;border-color:var(--accent);min-width:153px;font-weight:400}.primary:hover{background:#eafaad}.primary span{margin-left:12px}.quiet{background:transparent;padding:9px 11px;color:#c9d2bf}.build-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:17px 20px 13px}.build-choice{text-align:left;padding:12px 10px;position:relative;min-width:0;background:#1d3028}.build-choice .key{position:absolute;top:7px;right:8px;font-size:9px;color:#9aa98e}.build-icon{display:inline-block;font-size:12px;color:var(--accent);margin:0 7px 5px 0}.build-choice strong{font-size:9px;font-weight:400}.build-choice small{display:block;color:#bdc8b0;font-size:9px;line-height:1.6}.build-choice b{font-weight:400;color:var(--gold)}.tower-detail{padding:9px 22px 18px;display:flex;justify-content:space-between;gap:14px;min-height:90px}.tower-detail p{font-size:9px;line-height:1.65;color:#c0ccb5;margin:0;max-width:550px}.tower-actions{display:flex;gap:6px;flex-wrap:wrap;align-content:flex-start;justify-content:flex-end;min-width:105px}.tower-actions button{font-size:9px;padding:8px}.controls{background:#12221d;border-top:1px solid var(--border);display:flex;gap:13px;flex-wrap:wrap;padding:14px 20px;font-size:9px;color:#a9b69f}kbd{font-family:var(--font-ui);color:#deebcb;border:1px solid #485641;border-radius:3px;padding:2px 4px;font-size:9px;margin-right:3px}.lab{border:1px solid var(--border);border-radius:12px;background:#15231f;overflow:hidden}.lab-section{padding:19px 19px;border-bottom:1px solid var(--border)}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.section-heading h2{font-family:var(--font-ui);font-size:11px;font-weight:400;margin:0}.section-heading>span{font-size:9px;color:#8d9e85}.lab label{font-size:9px;display:block;margin:15px 0 8px;color:#d2dec5}.lab label small{font-size:9px;color:#a4b29a;float:right}.style-switch{display:flex;gap:5px}.style-switch button{font-size:9px;flex:1;padding:9px 5px;background:transparent}.style-switch button.active{border-color:#c7d88b;background:#2a3a2b;color:var(--accent)}.swatch{display:block;width:28px;height:21px;border-radius:4px;margin:0 auto 7px}.garden{background:linear-gradient(140deg,#4d7052 50%,#dbc293 50%)}.ink{background:repeating-linear-gradient(45deg,#d0c6a7 0px,#d0c6a7 3px,#343b34 4px,#343b34 5px)}.arcade{background:linear-gradient(140deg,#213b51 50%,#a2b0eb 50%)}.muted{font-size:9px;line-height:1.7;color:var(--muted);margin:10px 0 0}select,input[type=text]{width:100%;border:1px solid #43503f;background:#1e3027;color:var(--text);padding:10px 8px;border-radius:6px;font-size:9px}.wagers{display:grid;gap:7px;margin-top:13px}.wagers button{text-align:left;background:transparent;padding:11px 12px}.wagers button.active{border-color:#c3d591;background:#273627}.wagers button>span{display:block;font-size:9px;margin-bottom:5px}.wagers button b{float:right;color:var(--gold);font-size:9px;font-weight:400}.wagers small{font-size:9px;line-height:1.6;color:#b0c0a5}.lucky{margin-top:16px}.lucky button{width:100%;border-style:dashed;font-size:9px;color:var(--gold)}.lucky p{font-size:9px;text-align:center;color:#afbcad;line-height:1.7;margin-bottom:0}.charm{display:flex;gap:10px;border-top:1px solid var(--border);padding:11px 0}.charm:first-child{border-top:0;padding-top:0}.charm-icon{color:var(--gold);font-size:14px;min-width:22px}.charm strong{font-size:9px;font-weight:400}.charm p{font-size:9px;line-height:1.6;color:var(--muted);margin:4px 0 0}summary{cursor:pointer;font-size:9px;list-style:none}summary span{float:right}.lab input[type=range]{width:100%;accent-color:var(--accent)}output{float:right;color:var(--accent)}.checkbox{display:flex!important;align-items:center;gap:8px;line-height:1.7}.checkbox input{accent-color:var(--accent)}#export{margin-top:14px;width:100%;font-size:9px}.restart{margin:15px 19px;width:calc(100% - 38px);background:transparent;font-size:9px}.journal{border-top:1px solid var(--border);margin-top:26px;padding:20px 0;display:flex;align-items:center;justify-content:space-between;gap:15px}.journal p{margin:0;font-size:9px;color:#d2dec5}.journal>span{font-size:9px;letter-spacing:1.4px;color:#a0b194}footer{font-size:9px;color:#8f9f86;display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--border);padding-top:18px}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#10231ce8;padding:24px;backdrop-filter:blur(6px)}[hidden]{display:none!important}.overlay-inner{max-width:700px;width:100%;text-align:center}.overlay .eyebrow{font-size:9px}.overlay h2{font-family:var(--font-ui);font-size:19px;font-weight:400;margin:10px 0}.overlay p{font-size:9px;color:var(--muted);line-height:1.7}.draft-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:22px}.draft-card{padding:18px 13px;text-align:left;min-height:190px;background:#22362b}.draft-card .charm-icon{display:block;font-size:19px;margin-bottom:18px}.draft-card strong{display:block;font-family:var(--font-ui);font-size:10px;font-weight:400}.draft-card p{font-size:9px;min-height:53px}.draft-card small{font-size:9px;letter-spacing:1px;color:var(--accent)}.xp-track{margin-top:9px;background:#42543a;width:150px;height:4px;border-radius:2px}.xp-track div{background:#ddeb98;height:4px;width:0}.result-stats{font-size:9px!important;color:var(--accent)!important;margin:18px 0}.overlay button.primary{margin-top:10px}
@media(min-width:1600px){main{padding-top:45px}}@media(max-width:1100px){.masthead{padding:22px}.workspace{grid-template-columns:minmax(0,1fr) 260px;gap:16px}main{padding:28px 22px}.game-top{padding:16px}.counters{gap:15px}.build-icon{display:block;margin-bottom:3px}.build-bar{padding:13px;gap:5px}.lab-section{padding:17px 14px}.wave-bar{padding:14px}.primary{min-width:120px}.tower-detail{padding:12px 15px}.controls{gap:10px}.draft-card{padding:12px 9px;min-height:180px}.draft-card strong{font-size:9px}}@media(max-width:850px){.workspace{grid-template-columns:1fr}.lab{display:grid;grid-template-columns:1fr 1fr}.lab-section{border-right:1px solid var(--border)}.intro-note{display:none}.masthead{gap:15px}.version{display:none}h1{font-size:20px}.game-panel{max-width:100%}.restart{align-self:start}.build-icon{display:inline-block}.draft-card{min-height:180px}.draft-card strong{font-size:10px}}@media(max-width:520px){main{padding:24px 12px}.masthead{padding:15px 12px}.wordmark{font-size:9px;letter-spacing:1px;gap:5px}.mark{font-size:13px}nav{gap:12px;font-size:9px}.intro p:last-child{font-size:9px}.lab{grid-template-columns:1fr}.game-top{padding:13px 12px}.game-top strong{font-size:9px}.counters{gap:12px}.counters b{font-size:11px}.counters em{font-size:9px;margin-left:2px}.tiny{font-size:9px;letter-spacing:1px}.map-tag{font-size:9px;padding:5px;bottom:7px;left:8px}.wave-bar{padding:12px 10px}.wave-buttons{gap:4px}.wave-buttons button{font-size:9px;padding:9px}.primary{min-width:108px}.primary span{margin-left:4px}.build-choice{padding:9px 6px}.build-choice strong{font-size:9px}.build-choice small{font-size:9px}.build-icon{display:block;font-size:11px}.build-bar{padding:10px;gap:5px}.tower-detail{display:block;min-height:102px}.tower-actions{justify-content:flex-start;margin-top:8px}.controls{font-size:9px}.overlay{padding:10px}.overlay h2{font-size:12px}.overlay .eyebrow{margin-bottom:6px;font-size:9px}.overlay p{font-size:9px}.draft-cards{gap:5px;margin-top:8px}.draft-card{padding:9px 7px;min-height:143px}.draft-card .charm-icon{font-size:13px;margin-bottom:7px}.draft-card strong{font-size:9px}.draft-card p{font-size:9px;line-height:1.4;min-height:50px}.draft-card small{font-size:9px;letter-spacing:0}.journal>span{display:none}footer{display:block;line-height:1.8}footer span{display:block}.result-stats{font-size:9px!important;margin:8px 0}.overlay button.primary{margin-top:3px}}
/* Forest-first layout and contextual tower wheel. */
main{max-width:1600px;padding:14px 18px 20px}.workspace{grid-template-columns:minmax(0,1fr) 270px;gap:16px}.game-panel{overflow:visible;border-radius:10px}.game-top{padding:12px 18px;border-radius:10px 10px 0 0;background:#182723}#phase-label{font-size:9px;color:#bac8ae}.counters{gap:26px}.counters b{font-size:13px}.board-wrap{background:#63815b;isolation:isolate}canvas{clip-path:inset(0);border-radius:0}.map-tag{z-index:1;bottom:10px;padding:6px 9px}.wave-bar{position:relative;z-index:0}.controls{border-radius:0 0 10px 10px}.journal{margin-top:16px;padding:13px 0}.lab-section>label:first-child{margin-top:0}.tower-menu{position:absolute;z-index:5;width:0;height:0;pointer-events:none}.tower-ring{position:absolute;inset:0;width:0;height:0;pointer-events:none}.tower-orbit{position:absolute;left:0;top:0;width:44px;height:44px;min-width:0;border-radius:50%;padding:5px;background:#263f30f5;border:1px solid #bac992;box-shadow:0 4px 9px #0b1c2244;pointer-events:auto;transition:transform .23s ease,border-color .16s,background .16s;transform-origin:center}.tower-orbit svg{display:block;width:100%;height:100%;overflow:visible}.tower-orbit.active{background:#405c3b;border:2px solid #ecdfa0;z-index:2}.tower-orbit:hover{background:#506d45}.tower-card{position:absolute;transform:translateX(-50%);pointer-events:auto;padding:12px 13px 10px;background:#142b23f7;border:1px solid #b7c68b88;border-radius:10px;box-shadow:0 7px 22px #071e2655;backdrop-filter:blur(8px);text-align:center}.card-heading{display:flex;align-items:center;justify-content:center;gap:12px}.card-heading strong{font-family:var(--font-ui);font-size:10px;font-weight:400}.card-heading b{font-size:9px;color:var(--gold);font-weight:400}.tower-card #tower-stats{font-size:9px;color:#c9dba9;margin:7px 0}.tower-card #selection-text{font-size:9px;line-height:1.5;color:#b9c9b0;margin:6px 0 10px}.tower-card .primary{width:100%;font-size:9px;padding:8px;min-width:0}.tower-card .tower-actions{justify-content:center;min-width:0;gap:4px}.tower-card .tower-actions button{font-size:9px;padding:6px}.tower-card .tower-actions:has(button:not([hidden])){margin-top:10px}#ring-help{display:block;margin-top:8px;font-size:9px;color:#b7c6a5}.tower-card .xp-track{margin:9px auto}.overlay{z-index:10}.lab-section{padding:16px}.lab-section .section-heading{margin-bottom:10px}.lab-section .muted{margin-top:0}
@media(max-width:1000px){.workspace{grid-template-columns:1fr}.lab{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.lab-section{border-right:1px solid var(--border)}.restart{align-self:start}.game-panel{width:100%}}
@media(max-width:620px){main{padding:8px}.lab{grid-template-columns:1fr}.tower-orbit{width:36px;height:36px;padding:4px}.tower-card{padding:9px 10px 8px}.tower-card #selection-text{font-size:9px;line-height:1.4;margin:5px 0 7px}.card-heading strong{font-size:9px}.tower-card #tower-stats{margin:5px 0;font-size:9px}.tower-card .primary{padding:6px}.tower-card .tower-actions{margin-top:4px}.game-top{padding:10px 13px}.map-tag{font-size:9px;padding:5px 7px;left:8px}.controls{padding:11px;gap:10px}.wave-bar{padding:12px}.tower-menu{z-index:6}}
@media(prefers-reduced-motion:reduce){.tower-orbit{transition:none}}
/* Status lives on the map; labels remain available to assistive tech and tooltips. */
.board-wrap{border-radius:10px 10px 0 0}.board-wrap canvas{border-radius:10px 10px 0 0}.map-hud{position:absolute;top:13px;left:13px;right:13px;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;pointer-events:none}.hud-resources{display:flex;gap:7px;align-items:center}.hud-phase,.hud-pill{display:flex;align-items:center;justify-content:center;gap:7px;background:#172f27e6;border:1px solid #b0c29850;box-shadow:0 3px 9px #17352b33;backdrop-filter:blur(8px);border-radius:9px;padding:9px 11px;min-height:42px;pointer-events:auto}.hud-phase{padding:9px;width:43px}.map-hud svg{display:block;width:22px;height:22px;flex:none}.hud-pill b{font-size:10px;font-weight:400;color:#f1edcd}.hud-pill em{font-size:9px;font-style:normal;color:#b9c8aa;margin-left:-4px}.hud-pill #gold{color:#f2d78f}#token-hud{border-left:1px solid #93ab7555;padding-left:8px;margin-left:2px;white-space:nowrap;color:#dbedb2}#token-hud b{font-size:9px;color:#dbedb2}.tower-card{overflow:auto;scrollbar-width:thin}.tower-card.above{box-shadow:0 -5px 22px #071e2655}.tower-card .tower-actions:empty{display:none}
@media(max-width:520px){.map-hud{top:8px;left:8px;right:8px}.hud-resources{gap:4px}.hud-pill{padding:6px 7px;gap:4px;min-height:34px}.hud-phase{min-height:34px;width:34px;padding:7px}.map-hud svg{width:18px;height:18px}.hud-pill b{font-size:9px}.hud-pill em{font-size:9px;margin-left:-1px}#token-hud{padding-left:5px;margin-left:0}.map-tag{max-width:calc(100% - 16px)}}

/* Controls and forecast share the map's upper-left corner. */
.hud-left{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0}.hud-actions{display:flex;gap:7px;align-items:center}.map-hud .wave-buttons{pointer-events:auto;gap:5px}.map-hud .wave-buttons button{min-height:42px;padding:9px 11px;border-radius:9px;box-shadow:0 3px 9px #17352b33}.map-hud .wave-buttons .quiet{background:#172f27ed}.map-hud .wave-buttons .primary{min-width:0;white-space:nowrap}.wave-forecast{display:flex;gap:8px;align-items:center;max-width:290px;padding:7px 10px;background:#172f27e6;border:1px solid #b0c29850;border-radius:8px;backdrop-filter:blur(8px);pointer-events:auto}.wave-forecast .tiny{font-size:9px;white-space:nowrap}.wave-forecast strong{font-size:9px;font-weight:400}.proximity-overlay{opacity:var(--overlay-opacity,1);transition:opacity .2s ease}.proximity-overlay:hover,.proximity-overlay:focus-within{opacity:1}.controls{border-top:1px solid var(--border)}
@media(max-width:700px){.map-hud{flex-wrap:wrap}.hud-left{order:2;flex-basis:100%}.hud-resources{margin-left:auto}.map-hud .wave-buttons button{min-height:34px;font-size:9px;padding:7px 9px}.hud-actions .hud-phase{min-height:34px;width:34px;padding:7px}.wave-forecast{padding:5px 8px;max-width:260px}}
@media(prefers-reduced-motion:reduce){.proximity-overlay{transition:none}}

/* Independent layers blend with the map; tower controls remain above both. */
#selection-vignette{position:fixed;inset:0;pointer-events:none;border-radius:0}
#selection-vignette::before,#selection-vignette::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:inherit;opacity:0;transition:opacity .32s ease}
#selection-vignette::before{mix-blend-mode:multiply;background:radial-gradient(circle at var(--focus-x,50%) var(--focus-y,50%),transparent 0,transparent var(--focus-clear,88px),rgba(30,42,33,.055) var(--focus-soft,158px),rgba(30,42,33,.15) var(--focus-edge,255px))}
#selection-vignette::after{mix-blend-mode:screen;background:radial-gradient(ellipse at var(--focus-x,50%) var(--focus-y,50%),rgba(231,218,167,.035) 0,rgba(231,218,167,.015) var(--focus-clear,88px),transparent var(--focus-soft,158px))}
#selection-vignette.visible::before,#selection-vignette.visible::after{opacity:1}
@media(prefers-reduced-motion:reduce){#selection-vignette::before,#selection-vignette::after{transition:none}}

/* Keep the default below-ring card compact enough for the middle of the map. */
.tower-card{padding:9px 12px 8px}.tower-card .card-heading{line-height:1.2}.tower-card #tower-stats{margin:5px 0;line-height:1.3}.tower-card #selection-text{margin:4px 0 7px;line-height:1.35}.tower-card .primary{padding:7px;line-height:1.3}.tower-card #ring-help{margin-top:5px;line-height:1.2}
/* Continuous run clock and pre-run inventory, contained inside the map. */
.run-clock{display:flex;align-items:center;min-height:42px;padding:9px 12px;border:1px solid #bdca8b66;border-radius:9px;background:#243d2eea;color:#e9edbe;font-size:9px;white-space:nowrap;font-variant-numeric:tabular-nums}
.wager-orbit span{display:block;font-size:16px;line-height:1;color:#eddda9}.loadout-overlay{padding:14px;background:#10241eea;backdrop-filter:blur(4px);overflow:auto;align-items:stretch}.loadout-inner{width:min(100%,790px);margin:auto;display:flex;flex-direction:column;max-height:100%;min-height:0}.loadout-inner header{text-align:center;flex:none}.loadout-overlay h2{font-size:15px;margin:3px 0 5px}.loadout-overlay .eyebrow{margin:0;font-size:9px}.loadout-overlay header p:last-child{margin:0 0 12px;font-size:9px}.loadout-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;overflow:auto;min-height:0;padding:2px}.loadout-charm{text-align:left;padding:9px 11px;background:#253c30;border:1px solid #a0b78238;border-radius:8px;position:relative;white-space:normal}.loadout-charm .charm-icon{float:left;margin:0 8px 4px 0;font-size:13px}.loadout-charm strong{font-family:var(--font-ui);font-size:9px}.loadout-charm p{font-size:9px;line-height:1.4;margin:6px 0;clear:both}.loadout-charm small{font-size:9px;letter-spacing:.65px;color:#b8c893}.loadout-charm.selected{background:#43593a;border-color:#e2d992;box-shadow:inset 0 0 0 1px #e2d99266}.loadout-charm:disabled{opacity:.43}.loadout-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 2px 0;border-top:1px solid #aabb8255;flex:none}.loadout-footer strong{font-size:9px;color:#e8dfac}.loadout-inventory{font-size:9px;line-height:1.4;color:#cedab7;margin:3px 0}.loadout-footer small{font-size:9px;color:#a8b7a0}.loadout-footer button.primary{margin:0;font-size:9px;padding:11px 12px;min-width:165px;white-space:normal}.lab{align-self:start}.lab .section-heading{margin-top:0}
@media(max-width:700px){.run-clock{min-height:34px;padding:7px 9px;font-size:9px}.loadout-overlay{padding:9px}.loadout-overlay h2{font-size:12px}.loadout-options{grid-template-columns:repeat(2,minmax(0,1fr))}.loadout-footer{gap:7px}.loadout-footer button.primary{min-width:110px;padding:8px;font-size:9px}.loadout-charm{padding:8px}.loadout-charm p{font-size:9px}.loadout-footer small{font-size:9px}}

/* Compact inventory on the map; unfold upwards without interrupting the run. */
.charm-bag{position:absolute;right:13px;bottom:13px;z-index:7;max-width:calc(100% - 26px);pointer-events:none}.bag-toggle{display:flex;align-items:center;gap:9px;margin-left:auto;padding:7px 11px;background:#1a342bed;border:1px solid #b4c18b77;border-radius:11px;box-shadow:0 3px 12px #10281c44;pointer-events:auto;backdrop-filter:blur(7px)}.bag-toggle svg{width:30px;height:30px;flex:none}.bag-icons{font-size:11px;letter-spacing:4px;color:#e5d9a8}.bag-toggle b{font-size:9px;color:#dce6be;background:#9bb87822;border-radius:5px;padding:3px 5px}.charm-bag-panel{width:280px;max-width:100%;max-height:var(--bag-max-height,330px);overflow:auto;overscroll-behavior:contain;margin-bottom:8px;padding:12px;background:#182f27fa;border:1px solid #b4c18b77;border-radius:11px;box-shadow:0 5px 20px #10281c66;pointer-events:auto;backdrop-filter:blur(8px)}.bag-heading{display:flex;align-items:center;gap:10px;color:#e6dfb6}.bag-heading strong{font-family:var(--font-ui);font-size:9px}.bag-heading #charm-count{font-size:9px;color:#b6c79d;margin-left:auto}.bag-close{border:0;background:transparent;font-size:12px;padding:0 4px;line-height:1;color:#d0dcb7}.charm-bag-panel .charm{padding:10px 0;gap:10px}.charm-bag-panel .charm:last-child{padding-bottom:0;border-bottom:0}.charm-bag-panel .charm-icon{font-size:13px}.charm-bag-panel .charm strong{font-size:9px}.charm-bag-panel .charm p{font-size:9px;line-height:1.5;margin:4px 0 0}.tower-orbit.active{box-shadow:0 3px 10px #132d2466,0 0 12px #e5d29133}
@media(max-width:620px){.charm-bag{right:8px;bottom:8px;max-width:calc(100% - 16px)}.bag-toggle{padding:5px 8px;gap:6px}.bag-toggle svg{width:25px;height:25px}.bag-icons{font-size:10px}.charm-bag-panel{width:260px;padding:10px}}

/* Ground rewards stay in the forest; pickup trails fly above the map HUD. */
#pickup-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:8;border-radius:inherit}#token-hud{border:1px solid #8ccac366;margin:0;padding:9px 11px;gap:7px;color:#c5f4ee}#token-hud b{font-size:10px;color:#c5f4ee}.resource-arrived{animation:resource-arrival .35s ease-out}@keyframes resource-arrival{0%{box-shadow:0 0 0 0 #f1e3a999;filter:brightness(1.3)}100%{box-shadow:0 0 0 9px #f1e3a900;filter:brightness(1)}}@media(max-width:520px){#token-hud{padding:6px 7px;gap:4px}#token-hud b{font-size:9px}.hud-resources{gap:4px}}@media(prefers-reduced-motion:reduce){.resource-arrived{animation:none;outline:1px solid #dce9be}}

/* Carved charms on a cloth: the inventory is a small spatial puzzle. */
.loadout-overlay{background:#14291deb;padding:15px;overflow:auto}.loadout-inner{width:100%;max-width:910px;max-height:none}.loadout-overlay h2{font-family:var(--font-ui);font-weight:400;font-size:14px}.loadout-overlay header p:last-child{color:#c2cbb0;margin-bottom:13px}.packing-workbench{display:grid;grid-template-columns:minmax(155px,1fr) minmax(220px,1.38fr) minmax(142px,.82fr);gap:17px;align-items:start}.packing-caption{font-size:9px;letter-spacing:1.5px;color:#d6dab7;margin:0 0 9px;display:flex;justify-content:space-between;gap:3px}.packing-caption span{font-size:9px;letter-spacing:0;color:#a5b197}.charm-tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:5px;background:#b0b78a0a;border-radius:10px}.tray-charm{display:flex;flex-direction:column;align-items:center;justify-content:end;min-width:0;padding:3px 1px 5px;border:1px solid transparent;background:transparent;border-radius:7px;touch-action:none;user-select:none}.tray-charm:hover,.tray-charm.chosen{background:#9aaa7422;border-color:#c3c99866}.tray-charm.in-bag .tray-art{opacity:.3}.tray-charm.in-bag strong{color:#a2b294}.tray-art{display:flex;align-items:center;justify-content:center;width:100%;height:56px;filter:drop-shadow(1px 3px 2px #07160d88);pointer-events:none}.tray-art svg{display:block;max-width:100%;max-height:100%}.tray-charm strong{font-size:9px;font-weight:400;line-height:1.25;margin:3px 0 2px;white-space:nowrap}.tray-charm small{font-size:9px;color:#b3bea1;white-space:nowrap}.packing-grid,.bag-read-grid{position:relative;aspect-ratio:1;width:100%;background-color:#566048;background-image:repeating-linear-gradient(4deg,#f5e5ae04 0 1px,transparent 1px 4px),repeating-linear-gradient(94deg,#18291412 0 1px,transparent 1px 4px);border:7px solid #776e4e;border-radius:13px;box-shadow:0 7px 13px #081a1544,inset 0 0 18px #11241677;outline:1px dashed #d4bc8277;outline-offset:-4px;touch-action:none}.packing-grid::after,.bag-read-grid::after{content:'';position:absolute;inset:-11px -7px auto;height:8px;border-radius:50%;border-top:3px solid #b7a172;filter:drop-shadow(0 2px 1px #15201699);pointer-events:none}#pack-cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr)}.pack-cell{padding:0;min-width:0;border:0;border-right:1px solid #d5d7a32c;border-bottom:1px solid #d5d7a32c;border-radius:0;background:transparent}.pack-cell:hover{background:#dce5a01c}.pack-cell.preview-good{background:#dceca957;box-shadow:inset 0 0 0 1px #dceca988}.pack-cell.preview-bad{background:#c776635c;box-shadow:inset 0 0 0 1px #eea18b77}.pack-cell:focus-visible{outline-offset:-3px;z-index:2}#pack-pieces{position:absolute;inset:0;pointer-events:none}.packed-charm{position:absolute;pointer-events:auto;border:0;border-radius:6px;padding:1px;background:transparent;touch-action:none;user-select:none;filter:drop-shadow(1px 4px 2px #142219aa)}.packed-charm:hover{background:#f1e3a014}.packed-charm.chosen{background:#f4edb722;outline:1px solid #efe3a887;outline-offset:-2px}.packed-charm svg{width:100%;height:100%;display:block;pointer-events:none}.packed-charm.linked{filter:drop-shadow(1px 3px 2px #12221299) drop-shadow(0 0 2px #f0d08b55)}.bag-knot{position:absolute;transform:translate(-50%,-50%);z-index:3;pointer-events:none;color:#ffe2a6;text-shadow:0 1px 2px #182615;font-family:var(--font-ui);font-size:9px;font-weight:400;line-height:1}.packing-tools{display:flex;gap:5px;margin-top:10px}.packing-tools button{font-size:9px;padding:6px 7px;flex:1;white-space:nowrap;background:#354632}#pack-status{font-size:9px;line-height:1.45;min-height:28px;color:#c6cfad;margin:7px 1px 0}.packing-inspect{padding:3px 0}.packing-inspect h3{font-family:var(--font-ui);font-size:11px;font-weight:400;margin:8px 0 4px}.packing-inspect>small{font-size:9px;color:#b7c39b}#selected-charm-art{height:70px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(1px 5px 3px #0c1d1599)}#selected-charm-art:empty{display:none}#selected-charm-art svg{height:100%;max-width:100%}.packing-inspect p{font-size:9px;line-height:1.5;margin:10px 0}#selected-charm-effect{color:#eef0cc}#selected-charm-link{color:#d7d69a;font-size:9px}#selected-charm-lore{font-family:var(--font-ui);font-style:normal;color:#a8b59b;font-size:9px}.packing-rule{margin-top:14px;padding-top:11px;border-top:1px solid #acb58b33;font-size:9px;line-height:1.6;color:#aebd9d}.packing-rule b{font-weight:400;color:#e5d8a0}.packing-rule span{display:inline-block;margin-top:5px}.loadout-footer{margin-top:10px;padding-top:9px}.loadout-footer strong{font-size:9px}.loadout-footer small{font-size:9px}.loadout-footer button.primary{font-size:9px;min-width:145px}#loadout-inventory{font-size:9px;color:#c5d0ac;margin:4px 0}.packing-meter-track{height:3px;background:#6e785d66;border-radius:3px;margin:5px 0;width:170px;overflow:hidden}#packing-meter{height:100%;background:#d9df9a;transition:width .2s}#pack-drag-preview{position:fixed;z-index:100;pointer-events:none;filter:drop-shadow(0 8px 5px #0c1e1599);opacity:.94}#pack-drag-preview svg{width:100%;height:100%}.bag-read-grid{margin:14px 0 12px;background-image:linear-gradient(#d5d7a327 1px,transparent 1px),linear-gradient(90deg,#d5d7a327 1px,transparent 1px);background-size:calc(100% / 6) calc(100% / 6)}.bag-read-effect strong{font-family:var(--font-ui);font-size:9px}.bag-read-effect p{font-size:9px;line-height:1.5;margin:5px 0}.bag-read-effect small{font-size:9px;color:#dccb94}.bag-locked-note{font-size:9px;color:#aabb9e;line-height:1.4;margin:10px 0 0}.bag-icons{display:flex;gap:1px;letter-spacing:0}.bag-charm-mini{display:block;width:19px;height:28px}.bag-toggle .bag-charm-mini svg{width:100%;height:100%}
@media(max-width:1100px) and (min-width:1001px){.packing-workbench{gap:10px;grid-template-columns:1fr 1.35fr .8fr}.loadout-overlay{padding:10px}.tray-charm strong{font-size:9px}.tray-art{height:45px}.packing-inspect h3{font-size:9px}.packing-inspect p{font-size:9px}.packing-rule{display:none}}
@media(max-width:740px){.packing-workbench{grid-template-columns:minmax(130px,.8fr) minmax(180px,1fr);gap:12px}.packing-inspect{grid-column:1/-1;display:grid;grid-template-columns:55px 1fr;column-gap:12px;border-top:1px solid #acb58b33;padding-top:9px}#selected-charm-art{grid-row:1/5;height:70px}.packing-inspect h3{font-size:9px;margin:0}.packing-inspect>small,.packing-inspect p{grid-column:2;margin:3px 0}.packing-rule,#selected-charm-lore{display:none}.loadout-inner{margin:0 auto}.loadout-overlay{padding:12px}.loadout-overlay h2{font-size:12px}.loadout-overlay header p:last-child{font-size:9px}.tray-art{height:49px}.tray-charm strong{font-size:9px}.tray-charm small{font-size:9px}.loadout-footer small{font-size:9px}.loadout-footer button.primary{min-width:110px;font-size:9px}}
@media(prefers-reduced-motion:reduce){#packing-meter{transition:none}}
.tray-art svg{width:calc(var(--cw) * 19px);height:calc(var(--ch) * 19px)}
.board-wrap{container-type:inline-size}.packing-workbench{grid-template-columns:minmax(155px,1fr) clamp(220px,32cqw,300px) minmax(142px,.82fr)}.tray-art{height:43px}.tray-art svg{width:calc(var(--cw) * 15px);height:calc(var(--ch) * 15px)}.loadout-overlay .tray-charm{padding:3px 1px 4px;min-height:0}.loadout-overlay .tray-charm small{display:block;line-height:1.25}.loadout-overlay .tray-charm strong{line-height:1.2}.loadout-inner{max-width:850px}.loadout-overlay .loadout-footer small{display:block}.loadout-overlay .loadout-footer{line-height:1.3}.loadout-overlay header .eyebrow{line-height:1.3}
@container(max-width:680px){.packing-workbench{grid-template-columns:minmax(130px,.8fr) minmax(180px,1fr)}.packing-inspect{grid-column:1/-1;display:grid;grid-template-columns:55px 1fr;column-gap:12px}.packing-rule,#selected-charm-lore{display:none}#selected-charm-art{grid-row:1/5;height:60px}.packing-inspect>small,.packing-inspect p{grid-column:2;margin:3px 0}}
.charm-bag-panel{max-height:min(390px,calc(62.5cqw - 90px))}.bag-read-grid{max-width:190px;margin-left:auto;margin-right:auto}
/* Keep the entire packing round and confirmation visible on a laptop map. */
@container(min-width:681px) and (max-width:900px){
.loadout-overlay{padding:12px}.packing-workbench{grid-template-columns:minmax(155px,1fr) clamp(220px,30cqw,270px) minmax(142px,.82fr);gap:13px}.loadout-overlay header .eyebrow{font-size:9px;margin:0;line-height:1.2}.loadout-overlay header h2{font-size:13px;line-height:1.2;margin:4px 0}.loadout-overlay header #loadout-intro{font-size:9px;line-height:1.4;margin:0 0 10px}.packing-caption{line-height:1.2;margin-bottom:8px}.loadout-overlay .tray-charm{height:65px}.tray-art{height:35px}.packing-inspect h3{font-size:10px}.packing-inspect p{font-size:9px}.packing-rule{margin-top:10px;padding-top:8px}.loadout-footer{margin-top:7px;padding-top:7px}#pack-status{font-size:9px;min-height:23px}
}
/* The break reads at a glance: a draining clock bar in the existing HUD. */
.run-clock{flex-direction:column;justify-content:center;gap:5px}.run-clock.counting{min-width:145px}.countdown-track{display:block;width:100%;height:5px;border-radius:3px;background:#0e211ca8;box-shadow:inset 0 0 0 1px #b7c98b26;overflow:hidden}#countdown-fill{display:block;width:100%;height:100%;background:#dbe99b;border-radius:3px;transform-origin:left center;transition:transform .13s linear,background .3s}.run-clock.urgent #countdown-fill{background:#f3c97f}.run-clock.urgent{border-color:#f3c97faa}@media(max-width:700px){.run-clock.counting{min-width:124px}}@media(prefers-reduced-motion:reduce){#countdown-fill{transition:none}}
/* Both reward layers use the same rounded mask as the game surface. */
#board,#pickup-canvas{clip-path:inset(0 round 10px 10px 0 0)}
/* Minimal packing: carvings, twelve pockets, and one decision. */
.minimal-packing{align-items:center;padding:20px;background:#10251dd9;backdrop-filter:blur(5px)}.minimal-packing .loadout-inner{width:min(100%,600px);margin:auto;gap:0}.minimal-packing header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;text-align:left}.minimal-packing header h2{font-family:var(--font-ui);font-size:13px;line-height:1.2;margin:0;font-weight:400}.minimal-packing #loadout-count{font-size:9px;color:#c0c8ac;font-variant-numeric:tabular-nums}.minimal-packing .packing-workbench{display:grid;grid-template-columns:1fr 1.2fr;gap:28px;align-items:center}.minimal-packing .charm-tray{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:0;background:none}.minimal-packing .tray-charm{height:58px;padding:3px;border:1px solid transparent;justify-content:center}.minimal-packing .tray-art{height:52px}.minimal-packing .tray-art svg{width:calc(var(--cw)*17px);height:calc(var(--ch)*17px)}.minimal-packing .tray-charm.in-bag .tray-art{opacity:.18}.minimal-packing .tray-charm.chosen{border-color:#d9de9b66;background:#d6dc9d12}.minimal-packing .packing-grid,.bag-read-grid{aspect-ratio:4/3}.minimal-packing .packing-grid{border-width:5px;border-radius:10px;background-color:#535e48;box-shadow:0 5px 15px #071a1540,inset 0 0 18px #11241655}.minimal-packing #pack-cells{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr)}.minimal-packing .pack-cell{border-color:#d5d7a32a}.minimal-packing .packing-grid::after{inset:-9px -5px auto}.packing-detail{display:flex;align-items:center;gap:12px;min-height:68px;margin-top:16px}.charm-detail-copy{flex:1;min-width:0}.charm-detail-copy strong{font-size:9px;font-weight:400;color:#e6e8c9}.charm-detail-copy small{font-size:9px;color:#b2c09f;margin-left:9px}.minimal-packing #selected-charm-effect{font-size:9px;line-height:1.45;margin:5px 0 0;color:#c3cfb4}.minimal-packing #selected-charm-link{font-size:9px;color:#e0ce93}.minimal-packing #packing-actions{display:flex;gap:4px}.minimal-packing #packing-actions button{width:30px;height:30px;min-width:0;padding:0;border:1px solid #a5b78938;background:#8aa06f0d;font-size:11px;border-radius:50%}.minimal-packing .loadout-footer{border:0;padding:0;margin:5px 0 0;display:flex;align-items:center;justify-content:space-between}.minimal-packing #pack-status{font-size:9px;line-height:1.4;color:#a8b89a;margin:0;min-height:0;max-width:65%}.minimal-packing .loadout-footer .primary{min-width:98px;font-size:9px;padding:10px 16px;margin:0}.bag-read-grid{background-size:25% 33.333333%}
@container(max-width:680px){.minimal-packing{padding:13px;align-items:flex-start}.minimal-packing .loadout-inner{max-width:500px;margin:auto}.minimal-packing header{margin-bottom:12px}.minimal-packing header h2{font-size:11px}.minimal-packing .packing-workbench{grid-template-columns:1fr 1.25fr;gap:14px}.minimal-packing .charm-tray{gap:3px}.minimal-packing .tray-charm{height:43px}.minimal-packing .tray-art{height:37px}.minimal-packing .tray-art svg{width:calc(var(--cw)*12px);height:calc(var(--ch)*12px)}.minimal-packing .packing-detail{margin-top:7px;min-height:56px}.minimal-packing .loadout-footer{margin-top:3px}}
/* One physical scale: a pocket on the cloth equals a pocket inside the bag. */
.minimal-packing{--charm-cell:clamp(23px,4cqw,38px)}
.minimal-packing .loadout-inner{width:calc(var(--charm-cell)*10 + 42px);max-width:100%}
.minimal-packing .packing-workbench{grid-template-columns:calc(var(--charm-cell)*6) calc(var(--charm-cell)*4 + 10px);gap:32px;align-items:center}
.minimal-packing .charm-tray{grid-template-columns:repeat(6,var(--charm-cell));grid-auto-rows:var(--charm-cell);grid-auto-flow:row dense;gap:0;align-items:stretch}
.minimal-packing .tray-charm{grid-column:span var(--cw);grid-row:span var(--ch);width:100%;height:100%;padding:0;border:0;border-radius:2px;position:relative;min-height:0;overflow:visible;background:transparent}
.minimal-packing .tray-charm.chosen{outline:1px solid #d9de9b55;outline-offset:-1px;background:#d6dc9d0c}
.minimal-packing .tray-art,.minimal-packing .tray-art svg{display:block;width:100%;height:100%;max-width:none;max-height:none}
.minimal-packing .packing-grid{width:calc(var(--charm-cell)*4 + 10px);height:calc(var(--charm-cell)*3 + 10px);aspect-ratio:auto}
.packed-charm{padding:0}
.charm-footprint{opacity:0;transition:opacity .12s;stroke-opacity:.65}
.charm-footprint path,.charm-footprint rect{vector-effect:non-scaling-stroke;shape-rendering:crispEdges}
.tray-charm:hover .charm-footprint,.tray-charm:focus-visible .charm-footprint,.tray-charm.chosen .charm-footprint,.packed-charm:hover .charm-footprint,.packed-charm:focus-visible .charm-footprint,.packed-charm.chosen .charm-footprint,#pack-drag-preview .charm-footprint{opacity:1}
@container(max-width:680px){.minimal-packing .packing-workbench{gap:18px}.minimal-packing .loadout-inner{width:calc(var(--charm-cell)*10 + 28px)}}
@media(prefers-reduced-motion:reduce){.charm-footprint{transition:none}}
/* The stash holds loose charms; the carried inventory is a gathered cloth sack. */
.minimal-packing .loadout-inner{width:calc(var(--charm-cell)*10 + 80px)}
.minimal-packing .packing-workbench{grid-template-columns:calc(var(--charm-cell)*6) calc(var(--charm-cell)*4 + 48px);gap:32px}
.charm-bag-station{position:relative;align-self:center}
.charm-sack{position:relative;width:calc(var(--charm-cell)*4 + 48px);padding:72px 22px 24px;filter:drop-shadow(0 7px 5px #06170f66)}
.sack-art{position:absolute;inset:0;pointer-events:none;z-index:0}.sack-art svg{display:block;width:100%;height:100%}
.minimal-packing .packing-grid,.compact-sack .bag-read-grid{position:relative;z-index:1;width:calc(var(--charm-cell)*4 + 4px);height:calc(var(--charm-cell)*3 + 4px);border:2px solid #786747;border-radius:3px;outline:1px solid #c5b07b55;outline-offset:1px;background-color:#5d6146;box-shadow:inset 0 1px 8px #25351b99}
.minimal-packing .packing-grid::after,.compact-sack .bag-read-grid::after{display:none}
.sack-caption{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:9px;font-family:var(--font-ui);font-size:9px;color:#dbd4aa}
.minimal-packing .sack-caption #loadout-count{font-family:var(--font-ui);font-size:9px;color:#adb997}
.minimal-packing #packing-actions{position:absolute;bottom:-39px;left:0;right:0;justify-content:center}
.minimal-packing .loadout-footer{margin-top:46px}
.compact-sack{--charm-cell:clamp(23px,4cqw,38px);margin:0 auto}
.compact-sack .bag-read-grid{max-width:none;aspect-ratio:auto;margin:0}
.charm-tooltip{position:fixed;z-index:120;width:255px;pointer-events:none;padding:13px 15px 11px;background:linear-gradient(#101510f7,#080d0af7);border:1px solid #91866b;outline:1px solid #111b13;box-shadow:inset 0 0 0 2px #0008,0 5px 16px #0009;text-align:center;font-family:var(--font-ui);color:#c8c9b1;overflow:hidden}
.charm-tooltip strong{display:block;color:#d7bb77;font-size:10px;font-weight:normal;line-height:1.2;text-shadow:0 1px #000;letter-spacing:.4px}.charm-tooltip .item-type{font-size:9px;color:#b5b8a4;margin:6px 0 9px}.charm-tooltip .item-rule{height:1px;margin:0 20px 10px;background:linear-gradient(90deg,transparent,#8b8060,transparent)}.charm-tooltip p{font-size:9px;line-height:1.4;margin:7px 0}.charm-tooltip .item-power{color:#91b2e2}.charm-tooltip .item-bonus{color:#a9c780}.charm-tooltip .item-lore{font-size:9px;font-style:normal;color:#918f77;margin-top:12px}.charm-tooltip small{display:block;font-size:9px;line-height:1.4;color:#bebda2;margin-top:10px}
@container(max-width:680px){.minimal-packing .loadout-inner{width:calc(var(--charm-cell)*10 + 66px)}.minimal-packing .packing-workbench{gap:18px}.charm-sack{padding-top:58px;padding-bottom:20px}.minimal-packing .loadout-footer{margin-top:39px}}
.minimal-packing .loadout-inner{width:calc(var(--charm-cell)*10 + 96px)}.minimal-packing .packing-workbench{grid-template-columns:calc(var(--charm-cell)*6) calc(var(--charm-cell)*4 + 64px)}
.charm-sack{width:calc(var(--charm-cell)*4 + 64px);padding-left:30px;padding-right:30px}
.minimal-packing .packing-grid,.compact-sack .bag-read-grid{background-color:#615e3ec9;border-color:#74633f;outline-color:#c5b07b33}
@container(max-width:680px){.minimal-packing .loadout-inner{width:calc(var(--charm-cell)*10 + 82px)}}
/* Three voices, all supplied Regular: readable information and short expressive headings. */
body{font-family:var(--font-ui);font-size:var(--type-ui-body);line-height:1.4}
button,input,select,textarea,kbd,output{font-family:var(--font-ui);font-weight:400;font-style:normal}
.wordmark,.event-moment h2{font-family:var(--font-event);font-size:var(--type-display-event);line-height:1.15;letter-spacing:0}
.minimal-packing header h2,.nature-moment h2{font-family:var(--font-nature);font-size:var(--type-narrative-title);line-height:1.15;letter-spacing:0}
.charm-tooltip strong,.bag-heading strong,.sack-caption>span:first-child{font-family:var(--font-nature);font-size:var(--type-narrative-accent);line-height:1.2;letter-spacing:0}
.charm-tooltip{font-family:var(--font-ui);width:305px;padding:14px 16px;background:#0c130efc;color:#d4d9c4}
.charm-tooltip .item-type,.charm-tooltip .item-lore,.charm-tooltip small{font-family:var(--font-ui);font-size:9px;line-height:1.4;font-style:normal;color:#c0c5ae}
.charm-tooltip p{font-size:10px;line-height:1.45}.charm-tooltip .item-power{color:#aacafa}.charm-tooltip .item-bonus{color:#c2dda4}
.charm-tooltip .item-type{margin:5px 0 7px}.charm-tooltip .item-lore{margin-top:9px}.charm-tooltip small{margin-top:8px}
.card-heading strong{font-family:var(--font-ui);font-size:13px;line-height:1.2}.card-heading b{font-size:11px}
.tower-card #tower-stats{font-size:9px;line-height:1.35;margin:6px 0}.tower-card #selection-text{font-size:10px;line-height:1.4;margin:6px 0 9px;color:#d0dec0}
.tower-card .primary,.tower-card .tower-actions button{font-size:10px;padding:8px 10px;line-height:1.25}.tower-card #ring-help{font-size:9px;line-height:1.3;color:#c7d5b7}
.hud-pill b,#token-hud b{font-size:13px;line-height:1}.hud-pill em{font-size:9px}.run-clock{font-size:10px;line-height:1.15;padding:8px 10px}.run-clock.counting{min-width:140px}
.map-hud .wave-buttons button{font-size:10px;padding:8px 10px}.wave-forecast .tiny,.wave-forecast strong{font-size:9px;letter-spacing:0;line-height:1.25}.wave-forecast{max-width:360px}
.tiny,.eyebrow{font-size:9px;letter-spacing:.6px}.controls{font-size:9px;gap:12px}.controls kbd{font-size:9px}
.lab label,.lab label small,.lab input[type=text],.lab select,.lab summary,.lab button,.lab .muted,.lab output{font-size:10px;line-height:1.4}.lab label small{font-size:9px}.lab label small{float:none;display:block}.lab-section{padding:16px}
.lab summary{display:flex;align-items:center;justify-content:space-between;gap:8px}.restart{display:flex;align-items:center;justify-content:center;gap:8px}.ui-icon{width:20px;height:20px;display:inline-block;vertical-align:middle;flex:none}
.bag-close{display:flex;padding:4px}.bag-knot .ui-icon{width:12px;height:12px;display:block}.bag-toggle b,.bag-heading #charm-count{font-family:var(--font-ui);font-size:9px}.bag-heading{gap:8px}
.minimal-packing #pack-status,.minimal-packing .sack-caption #loadout-count,.minimal-packing #loadout-count{font-family:var(--font-ui);font-size:9px;line-height:1.4;color:#c4d0b6}
.minimal-packing .loadout-footer .primary{font-size:11px;min-width:100px;padding:10px 16px}.minimal-packing #packing-actions button{width:34px;height:34px}.minimal-packing #packing-actions .ui-icon{width:18px;height:18px}.minimal-packing #packing-actions{bottom:-43px}
.minimal-packing header{margin-bottom:16px}.minimal-packing .loadout-footer{margin-top:50px}.sack-caption{gap:10px;flex-wrap:wrap}
.journal p{font-size:10px;line-height:1.4}.journal>span{font-size:9px;letter-spacing:0}.result-stats{font-family:var(--font-ui);font-size:13px!important}.overlay-inner p{font-size:11px;line-height:1.4}.overlay-inner .eyebrow{font-size:9px}.overlay-inner .primary{font-size:11px}.event-moment{max-width:580px}.event-moment h2{font-size:29px}.nature-moment h2{font-size:29px}
@media(max-width:700px){
  .map-hud .wave-buttons button{font-size:10px;padding:7px 9px}.run-clock{font-size:10px;padding:7px 9px}.run-clock.counting{min-width:133px}.wave-forecast{max-width:calc(100cqw - 20px)}
  .hud-pill b,#token-hud b{font-size:12px}.hud-pill em{font-size:9px}.controls{gap:9px;padding:12px}.lab{grid-template-columns:1fr}
  .tower-card{padding:10px;max-height:calc(100% - 16px)}.tower-card #tower-stats{font-size:9px}.tower-card #selection-text{font-size:10px;line-height:1.4}.tower-card .primary,.tower-card .tower-actions button{font-size:10px;padding:8px}.card-heading strong{font-size:13px}
  .charm-tooltip strong{font-size:17px}.event-moment h2,.nature-moment h2{font-size:22px}.overlay-inner p{font-size:10px}.result-stats{font-size:11px!important}
}
/* A short phone viewport scrolls the stash instead of shrinking live text. */
@container(max-width:680px){.minimal-packing{padding:14px;align-items:flex-start}.minimal-packing .loadout-inner{margin:0 auto}.minimal-packing header h2{font-size:22px}.minimal-packing .packing-workbench{gap:18px}.minimal-packing .loadout-footer{margin-top:48px}.minimal-packing #pack-status{font-size:9px;max-width:58%}.sack-caption>span:first-child{font-size:16px}}

/* The forest fills the page; playtest tools only appear on request. */
main{max-width:none;width:100%;margin:0;padding:0}
.workspace{display:block}.game-panel{width:100%;max-width:none;border:0;border-radius:0}
.board-wrap,.board-wrap canvas{border-radius:0}
.dev-backdrop{position:fixed;inset:0;z-index:199;background:#08150c55}
.dev-drawer{position:fixed;z-index:200;inset:0 0 0 auto;width:min(380px,100%);height:100dvh;overflow:auto;overscroll-behavior:contain;display:block;border:0;border-left:1px solid #647452;border-radius:0;background:#17271ffb;box-shadow:-12px 0 40px #06110e66;animation:tools-in .2s ease-out}
.dev-header{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px;background:#17271f;border-bottom:1px solid var(--border)}
.dev-header h2{font:400 14px/1.2 var(--font-ui);margin:0}.dev-header button{padding:9px;display:flex;background:transparent}
.dev-controls{padding:18px;border-bottom:1px solid var(--border)}.dev-controls h3{font-size:11px;margin:0 0 14px}.dev-controls .controls{display:grid;gap:12px;padding:0;border:0;border-radius:0;background:none;line-height:1.5}.dev-controls p{font-size:9px;margin:16px 0 0;color:var(--muted)}.dev-controls p span{display:block;margin-top:8px}
.dev-drawer .lab-section{border-right:0}.dev-drawer .journal{margin:0;padding:18px;display:block}.dev-drawer .journal>span{display:block;margin-top:12px}.dev-drawer .journal p{font-size:9px}.dev-drawer .restart{margin:18px;width:calc(100% - 36px)}
@keyframes tools-in{from{transform:translateX(100%)}to{transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.dev-drawer{animation:none}}
/* Locked tower blueprints stay visible in the ring but are visually unavailable. */
.tower-orbit.locked{filter:grayscale(1);opacity:.38;border-color:#87927d;background:#26312b;cursor:not-allowed}.tower-orbit.locked:hover{background:#26312b;border-color:#87927d}

/* Snail delivery is a brief, non-blocking milestone during the run. */
#snail-arrival{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;pointer-events:none}
#snail-arrival[hidden]{display:none}

/* Audio mixer: scroll inside the menu on smaller displays. */
.sound-menu{max-height:calc(100dvh - 48px);overflow-y:auto;}
.audio-mixer{display:grid;gap:10px;margin-top:14px;text-align:left;}
.mixer-row{display:grid!important;grid-template-columns:1fr auto;gap:4px 12px;align-items:center;font-size:13px;}
.mixer-row output{font-variant-numeric:tabular-nums;opacity:.75;}
.mixer-row input{grid-column:1/-1;width:100%;min-height:20px;margin:0;accent-color:#88ad70;}
.mixer-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px;}
.mixer-actions button{flex:1;padding:8px 12px;}
.mixer-save{font-size:11px;opacity:.75;margin:0;}
.sound-menu .sound-menu-controls{max-width:360px;margin-top:12px;padding:12px 16px;}
.sound-menu .mixer-row{font-size:13px;margin:0;}
.sound-menu .audio-mixer{gap:6px;}
.sound-menu .mixer-row input{min-height:16px;}

#pack-drag-preview.placement-blocked { filter: grayscale(.65) drop-shadow(0 0 5px #d85858); opacity: .65; }

/* Rescue controls stay above the forest and remain usable while incapacitated. */
#rescue-panel{position:absolute;z-index:35;left:50%;bottom:22px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);padding:12px 18px;border:1px solid #b5eed1;border-radius:14px;background:#132b29ee;color:#edfff3;text-align:center;box-shadow:0 6px 24px #07191788;pointer-events:auto}
#rescue-panel[hidden],#rescue-calls[hidden]{display:none}
#rescue-calls{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:9px}
#rescue-calls button{padding:7px 10px;font-size:12px}
#rescue-feed{font-size:13px;color:#ffe3a3;margin:6px 0 0}
#rescue-feed:empty{display:none}
