/* XSCAPE: shared interface tokens and screen layouts. */
:root{--ink:oklch(16% .014 190);--panel:oklch(21% .017 185);--surface-raised:oklch(25% .019 185);--border:oklch(37% .024 175);--text:oklch(92% .026 90);--muted:oklch(73% .026 165);--gold:oklch(80% .091 88);--green:oklch(80% .086 155);--red:oklch(77% .095 35);--space:8px;--nav-height:80px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,input,select{font-family:inherit;font-size:14px;letter-spacing:.015em}
button{min-height:44px;border-radius:3px;transition:background 160ms ease-out,border-color 160ms ease-out,color 160ms ease-out,transform 160ms ease-out}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
button:disabled{opacity:.62;cursor:not-allowed}
button:disabled small{color:var(--muted)}
small,.eyebrow,.muted{color:var(--muted)}
.eyebrow{font:600 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.12em}
p{max-width:68ch}
.game-nav{height:var(--nav-height);padding:0 4vw;position:relative;z-index:15;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--border);background:var(--ink)}
.nav-brand{display:flex;flex-direction:column;align-items:flex-start;background:none;border:0;font:30px/.95 var(--font-ui);letter-spacing:-.055em;color:var(--gold);padding:8px 0}
.nav-brand span{font:9px/1.5 monospace;letter-spacing:.12em;color:var(--muted);margin-top:6px}
.nav-destinations{display:flex;gap:8px;height:100%;align-items:center}
.nav-destinations :is(button,a){background:transparent;border-color:transparent;color:var(--muted);padding:12px 24px;font-size:14px}
.nav-destinations :is(button,a)[aria-current]{color:var(--text);background:var(--surface-raised);border-color:var(--border)}
.nav-guide{color:var(--muted);font-size:13px;text-decoration:none;padding:14px 0}
.nav-guide:hover{color:var(--gold)}
.camp-shell{padding:24px 4vw;min-height:calc(100svh - var(--nav-height));max-width:1680px;margin:auto}
.camp-top{min-height:44px;align-items:center;margin-bottom:32px}
.camp-top .edition{margin:0;font-size:11px;letter-spacing:.1em}
.camp-top .text-button{font-family:inherit;font-size:13px;min-height:44px}
.camp-vignette{background:linear-gradient(90deg,oklch(14% .018 190 / .98),oklch(14% .018 190 / .78) 48%,oklch(14% .018 190 / .28)),linear-gradient(0deg,oklch(14% .018 190),transparent 70%)}
.camp-layout{display:grid;grid-template-columns:minmax(0,600px) minmax(260px,340px);align-items:center;justify-content:space-between;gap:8vw;flex:1;padding-bottom:40px}
.camp-main{width:auto;max-width:none;margin:0;padding:0}
.camp-main h1{font-size:clamp(52px,5.8vw,88px);line-height:1.01;letter-spacing:-.055em;margin:18px 0 0;text-shadow:none}
.tagline{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);margin:22px 0 34px}
.loadout-label{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 12px}
.loadout-label>span:last-child{font-size:12px;color:var(--muted)}
.weapon-picker{width:100%;gap:8px}
.weapon-choice{display:grid;grid-template-columns:1fr auto;align-items:start;gap:12px;padding:16px 12px;min-height:128px;background:oklch(18% .016 185 / .94);color:var(--text);border-color:var(--border)}
.weapon-choice>svg{width:30px;height:30px;grid-column:1}
.weapon-choice>span:not(.weapon-check){grid-row:2;grid-column:1 / -1;min-width:0}
.weapon-choice b{display:block;font-size:13px;font-weight:600;line-height:1.3}
.weapon-choice small{font:11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;white-space:normal;margin-top:6px;color:var(--muted)}
.weapon-check{grid-column:2;grid-row:1;font-size:16px;color:var(--muted)}
.weapon-choice.chosen{background:oklch(29% .032 110);border-color:var(--gold);color:var(--text)}
.weapon-choice.chosen .weapon-check{color:var(--gold)}
.weapon-detail{font-size:13px;color:var(--text);min-height:24px;line-height:1.5;margin:12px 0 24px}
.camp-actions{position:static;width:100%;max-width:100%}
.large{min-height:60px;font-size:14px;padding:18px 24px}
.entry-note{font-size:12px;line-height:1.6;margin-top:10px;color:var(--muted);display:flex;gap:12px;justify-content:space-between}
.camp-note{position:static;width:auto;text-shadow:none;padding:28px;background:oklch(17% .017 185 / .95);border:1px solid var(--border);border-radius:4px}
.camp-note h2{font-size:30px;line-height:1.17;margin:16px 0;color:var(--text)}
.camp-note p{font-size:14px;color:var(--muted)}
.camp-loadout{margin-top:28px}
.camp-loadout>button{display:flex;align-items:center;justify-content:space-between;text-align:left;width:100%;padding:14px 0;border:0;border-bottom:1px solid var(--border);background:none;letter-spacing:0}
.camp-loadout>button>span:first-child{display:flex;gap:12px;align-items:center;min-width:0}
.camp-loadout svg{width:24px;height:24px;color:var(--gold)}
.camp-loadout button span span{font-size:11px;text-transform:capitalize;color:var(--muted)}
.camp-loadout b{display:block;font-size:13px;font-weight:500;color:var(--text);text-transform:none;line-height:1.4;margin-top:3px;overflow-wrap:anywhere}
.camp-character{display:flex;gap:18px;font-size:12px;margin-top:20px;color:var(--muted)}
.camp-character b{font-weight:600;color:var(--text)}
.camp-bottom{min-height:64px;gap:20px;margin-top:auto;padding-top:20px;border-color:var(--border)}
.resources{gap:24px;font-family:inherit;font-size:11px}
.resources b{font:500 18px/1 monospace}
.local-label{font:12px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--muted)}
.forge-backdrop{background:var(--ink)}
.workshop{padding:0 4vw 24px;min-height:calc(100svh - var(--nav-height));max-width:1520px}
.workshop>header{min-height:124px;gap:24px;border:0;padding:28px 0}
.workshop h2{font-size:36px;color:var(--text);line-height:1.2;margin-top:6px;letter-spacing:-.025em}
.workshop>header .close-button{display:none}
.vault .workshop>header{position:relative;padding-right:56px}
.vault .workshop>header .close-button{display:inline-flex;position:absolute;right:0;top:24px}
.tabs{gap:8px;overflow-x:auto;align-items:center;border-color:var(--border);min-height:58px}
.tabs button{font-family:inherit;font-size:14px;min-height:48px;letter-spacing:0;padding:12px 20px;white-space:nowrap}
.tabs button.active{color:var(--gold);background:var(--surface-raised);border-bottom-color:var(--gold)}
.tabs>span{font-size:11px;margin-left:auto;white-space:nowrap}
.workshop-body{padding:28px 0;flex:1;min-width:0}
.section-line{font-family:inherit;font-size:12px;gap:16px;flex-wrap:wrap;line-height:1.6;margin-bottom:20px}
.forge-layout{grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:32px}
.item-list{gap:10px}
.item-card{padding:18px;min-width:0;border:1px solid var(--border);background:var(--panel);border-radius:3px;gap:16px}
.item-card.selected{border-color:var(--gold);background:var(--surface-raised)}
.item-card h3{font:600 16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow-wrap:anywhere}
.item-info{min-width:0}
.item-rarity{font-size:11px;line-height:1.5;letter-spacing:.045em}
.item-card p{font-size:13px;margin-top:6px}
.item-symbol{width:40px;flex-shrink:0}
.small-button{min-height:44px;font:500 12px/1.3 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;padding:10px 14px}
.item-detail{padding:24px;border:1px solid var(--border);background:var(--panel);border-radius:4px;align-self:start;min-width:0}
.item-detail h3{font-size:26px;line-height:1.2;overflow-wrap:anywhere}
.item-detail p{font-size:14px;line-height:1.5}
.detail-actions{gap:10px;display:flex;flex-direction:column}
.detail-actions button{font-size:12px;min-height:48px;line-height:1.5;padding:14px 12px}
.detail-actions .primary{order:-1}
.detail-actions .danger{margin-top:14px;background:none}
.detail-actions small{font-size:11px;line-height:1.6;margin-top:6px;white-space:normal}
.gear-comparison{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:18px 0;margin:20px 0}
.gear-comparison>.eyebrow{display:block;font-size:10px;margin-bottom:12px;overflow-wrap:anywhere}
.gear-comparison>div{display:flex;justify-content:space-between;font-size:13px;line-height:1.9;gap:20px}
.gain,.equipped-note{color:var(--green)!important}.loss{color:var(--red)}.unchanged{color:var(--muted)}
.mobile-detail-back{display:none}
.empty{padding:48px 24px;text-align:center;grid-column:1/-1;border:1px dashed var(--border);background:none;min-width:0}
.empty p{margin:12px auto 24px;font-size:15px;max-width:40ch}
.empty h3{font-size:26px;line-height:1.2;color:var(--text)}
.empty-symbol{font:48px/1 var(--font-ui);color:var(--gold);display:block;margin-bottom:20px}
.upgrades{gap:24px}
.upgrades article{background:var(--panel);padding:24px;border:1px solid var(--border);min-width:0}
.upgrades h3{font-size:23px;line-height:1.25;margin:12px 0}
.upgrades p{font-size:14px;line-height:1.6}
.upgrades button{font-size:12px;line-height:1.5;white-space:normal}
.workshop>footer{padding:24px 0;gap:24px;align-items:center;border-color:var(--border)}
.workshop>footer>span{font:12px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--muted)}
.market-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.market-card{padding:20px;border:1px solid var(--border);background:var(--panel);border-radius:4px}
.market-card .item-card{border:0;background:none;padding:0}
.market-card>button{min-height:48px}
.market-owner{font-size:12px;margin-top:16px}
.market-price{align-items:baseline;margin:20px 0}
.market-price b{font-size:26px}.market-price span{font-size:11px}
.economy-stats{margin-top:32px;padding:24px 0;border-top:1px solid var(--border);gap:24px}
.economy-stats b{font-size:20px}.economy-stats span{font-size:11px}
.profile-page{max-width:1040px}
.profile-list>div{display:flex;align-items:center;justify-content:space-between;gap:32px;padding:28px 0;border-bottom:1px solid var(--border)}
.profile-list h3{font:600 18px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.profile-list p{font-size:14px;line-height:1.6;margin-top:4px;max-width:48ch}
.profile-list button{flex-shrink:0;min-width:170px}
.profile-note{font-size:13px;color:var(--muted);margin:28px 0}
.panel{border:1px solid var(--border);background:var(--ink);border-radius:6px}
.panel p{font-size:15px;line-height:1.65}.panel h2{font-size:32px}
.panel-footer{gap:12px}.panel-footer button{min-height:48px;font-size:12px}
.close-button,.pause-button{min-width:44px;min-height:44px;width:44px;height:44px}
.control-row{padding:12px 0;gap:16px}.control-row>span{font-size:14px}.control-row button{min-width:52px;min-height:44px;font-size:13px}
#binding-status{font-size:13px;line-height:1.5}
.price-label{font-size:12px}#listing-price{font-size:22px;min-height:56px;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:3px;padding:12px}
.run-resources{font-size:11px;gap:12px;line-height:1.5;flex-wrap:wrap}
.vital-label{font-size:12px}.health-track{height:12px}.mission span,.mission small{font-size:12px}
.abilities button{min-height:58px}.abilities b,.abilities small{font-size:11px}
.interact-prompt{min-height:48px;max-width:calc(100% - 32px);white-space:normal;font-size:12px;line-height:1.4}
.notice{font-size:13px;line-height:1.5;border-radius:3px}
/* Only live gameplay owns browser gestures; menus retain selection, zoom and scrolling. */
body.gameplay-active,body.gameplay-active *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}
body.gameplay-active,body.gameplay-active #game{touch-action:none;overscroll-behavior:none}
body.gameplay-active #game{-webkit-tap-highlight-color:transparent}
/* Keep touch targets separate in portrait, landscape, and wallet browsers. */
body.touch-input.playing #touch{display:block}
body.touch-input .keybinds,body.touch-input .abilities,body.touch-input .interact-prompt kbd{display:none}
.touch-actions{display:grid;grid-template-columns:64px 80px;grid-template-rows:64px 80px;gap:12px;width:156px;height:156px;pointer-events:none}
.touch-actions button{position:static;pointer-events:auto;justify-self:center;align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:0;min-width:0}
.touch-actions #touch-heal{grid-area:1 / 2;width:64px;height:64px}
.touch-actions #touch-dodge{grid-area:2 / 1;width:64px;height:64px}
.touch-actions #touch-hit{grid-area:2 / 2;width:80px;height:80px}
.touch-actions b{font:inherit}.touch-actions small{font:9px/1.2 monospace;color:inherit;letter-spacing:0}
.touch-actions button:disabled{opacity:.55}
body.touch-input #joystick{left:max(16px,env(safe-area-inset-left));bottom:max(24px,env(safe-area-inset-bottom));width:104px;height:104px}
body.touch-input .touch-actions{right:max(16px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom))}
body.touch-input .interact-prompt{bottom:calc(200px + env(safe-area-inset-bottom));min-height:52px;font-size:14px;touch-action:manipulation}
body.touch-input .boss-vitals{bottom:calc(268px + env(safe-area-inset-bottom))}
@media(orientation:portrait){body.touch-input .boss-vitals{top:calc(208px + env(safe-area-inset-top));bottom:auto;width:min(300px,calc(100% - 32px))}}
#hud [hidden]{display:none!important}
.panel>header,.panel-footer{flex-shrink:0}
.panel-body{min-height:0}
@media(pointer:coarse){.interact-prompt kbd{display:none}}
@media(max-height:550px) and (orientation:landscape){
 body.touch-input .interact-prompt{bottom:max(28px,env(safe-area-inset-bottom));max-width:calc(100% - 350px);min-width:120px}
 body.touch-input .boss-vitals{bottom:100px;width:220px}
}
@media(min-width:1500px){.camp-shell{padding-left:4vw;padding-right:4vw}}
@media(max-width:1000px){.game-nav{padding:0 24px}.nav-guide,.nav-brand span{display:none}.camp-shell{padding:20px 24px}.camp-layout{grid-template-columns:minmax(0,1fr) 280px;gap:32px}.camp-note{padding:22px}.camp-note h2{font-size:26px}.entry-note{display:block}.entry-note span{display:block}.forge-layout{grid-template-columns:minmax(0,1fr) 300px;gap:20px}.item-card{padding:14px;gap:10px}.resources{gap:16px}}
@media(max-width:760px){
 :root{--nav-height:68px}
 .game-nav{position:fixed;bottom:0;left:0;right:0;height:auto;min-height:68px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));border-bottom:0;border-top:1px solid var(--border)}
 .nav-brand{display:none}.nav-destinations{width:100%;gap:4px;justify-content:space-between}.nav-destinations :is(button,a){padding:12px 8px;flex:1;font-size:13px;min-height:48px}
 #overlay.camp,#overlay.forge,#overlay.market,#overlay.profile{padding-bottom:calc(80px + env(safe-area-inset-bottom))}
 .camp-shell{min-height:calc(100svh - 80px);padding:16px 20px 24px}.camp-top{margin-bottom:24px}.camp-top .text-button{font-size:12px}
 .camp-layout{display:block;padding-bottom:24px}.camp-main{max-width:none;width:auto}.camp-main h1{font-size:56px;margin-top:14px;line-height:1}.tagline{font-size:16px;margin:18px 0 28px;max-width:30ch}
 .weapon-picker{width:100%;gap:8px}.weapon-choice{min-height:125px;padding:12px 10px}.weapon-choice b{font-size:12px}.weapon-choice small{font-size:11px}.weapon-choice>svg{width:26px;height:26px}.weapon-check{font-size:14px}
 .loadout-label{gap:8px}.loadout-label .eyebrow{font-size:10px}.loadout-label>span:last-child{font-size:11px}.weapon-detail{font-size:13px;margin-bottom:20px}
 .camp-note{display:block;margin-top:32px;padding:20px}.camp-note>h2,.camp-note>p,.camp-note>.eyebrow{display:none}.camp-loadout{margin:0}.camp-character{gap:24px}.camp-loadout b{font-size:14px}
 .entry-note{font-size:12px}.entry-note span{display:none}.camp-bottom{flex-direction:column;align-items:flex-start;gap:16px}.camp-bottom .resources{width:100%;justify-content:space-between;gap:12px}.local-label{text-align:left;font-size:12px}
 .workshop{padding:0 20px 20px;min-height:calc(100svh - 80px)}.workshop>header{min-height:auto;padding:28px 0 22px;flex-wrap:wrap;gap:20px}.workshop>header .resources{width:100%;gap:20px}.workshop h2{font-size:32px}.workshop-body{padding:22px 0}
 .tabs{gap:2px}.tabs button{font-size:13px;padding:12px 14px}.tabs>span{display:none}.forge-layout{display:flex;flex-direction:column;gap:24px}.forge-layout>div{width:100%}.forge-layout>.item-detail{display:none;width:100%}.forge-layout.has-selection>.item-detail{display:block;order:-1}.forge-layout.has-selection>div{display:none}.mobile-detail-back{display:block;margin:0 0 24px;background:none;padding:10px 0;border:0;color:var(--gold)}
 .item-card{padding:16px 12px;gap:12px}.item-card h3{font-size:15px}.item-card p{font-size:13px}.item-rarity{font-size:10px}.item-symbol{width:28px}.item-symbol svg{width:26px}.small-button{font-size:11px;padding:10px}.item-detail{padding:22px}.detail-actions button{font-size:13px}.detail-actions small{font-size:12px}
 .empty{padding:38px 18px}.empty h3{font-size:25px}.empty p{font-size:15px}.market-grid{grid-template-columns:1fr}.market-card{padding:20px}.market-card .item-card{padding:0}.market-price b{font-size:28px}.market-card>button{min-height:48px}.workshop>footer{flex-direction:column;align-items:stretch;gap:16px}.workshop>footer>button{width:100%}.upgrades{grid-template-columns:1fr}.upgrades p{font-size:15px}
 .profile-list>div{align-items:flex-start;gap:16px;flex-direction:column;padding:24px 0}.profile-list button{width:100%;font-size:14px}.profile-list p{font-size:15px}.profile-note{font-size:13px}
 .panel{margin:12px auto;width:calc(100% - 24px);max-height:calc(100svh - 24px);border-radius:5px}.panel header{padding:20px;gap:16px}.panel h2{font-size:28px}.panel-body{padding:20px}.panel-footer{padding:20px;flex-wrap:wrap}.panel-footer button{flex:1 1 140px;font-size:12px}.control-row{gap:12px}.control-row>span{font-size:13px}.control-row>div{gap:6px}.control-row button{min-width:44px;padding:8px;font-size:12px}.summary-grid{gap:12px}.summary-grid strong{font-size:26px}.summary-grid span{font-size:10px}
 .hud-top{top:max(16px,env(safe-area-inset-top));left:16px;right:16px;gap:12px}.vitals{width:180px}.depth span{font-size:20px}.depth b{font-size:9px}.run-resources{font-size:10px;gap:6px 12px}.mission{top:116px;left:16px}.mission small{font-size:11px;max-width:240px}.mission span{font-size:11px}
}
@media(max-width:380px){.camp-shell,.workshop{padding-left:16px;padding-right:16px}.camp-main h1{font-size:48px}.weapon-picker{flex-direction:column}.weapon-choice{grid-template-columns:32px 1fr auto;min-height:68px;align-items:center;padding:12px}.weapon-choice>span:not(.weapon-check){grid-column:2;grid-row:1}.weapon-choice .weapon-check{grid-column:3}.weapon-choice b{font-size:14px}.weapon-choice small{font-size:12px;margin-top:3px}.loadout-label>span:last-child{display:none}.resources{font-size:10px}.resources b{font-size:16px}.control-row{align-items:flex-start;flex-direction:column}.vitals{width:158px}.depth b{max-width:90px}}
@media(max-height:550px) and (orientation:landscape){
 .camp-shell{padding:16px 24px}.camp-main{max-width:none;padding:0}.camp-layout{display:grid;grid-template-columns:1fr;gap:0}.camp-main h1{font-size:44px}.camp-top{margin-bottom:12px}.tagline{margin:14px 0 22px}.camp-actions{position:static;width:100%}.weapon-picker{width:100%}.weapon-detail{display:block}.camp-note{display:none}.camp-bottom{margin-top:0}.hud-top{top:12px}.mission{top:96px}.mission small{display:none}.interact-prompt{bottom:30px;max-width:280px}.boss-vitals{bottom:92px}.panel{max-height:calc(100svh - 20px)}
}
@media(pointer:coarse){#touch-hit{min-width:76px;min-height:76px;font-size:12px}#touch-dodge,#touch-heal{min-width:52px;min-height:52px;font-size:11px}.touch-actions{right:max(22px,env(safe-area-inset-right));bottom:max(28px,env(safe-area-inset-bottom))}.pause-button{min-width:48px;min-height:48px}.interact-prompt{bottom:180px}.abilities{display:none}}
@media(pointer:coarse) and (max-height:550px){.interact-prompt{bottom:28px;max-width:280px}.touch-actions{bottom:max(20px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
@media(min-width:761px) and (max-height:820px){.camp-shell{padding-top:12px;padding-bottom:16px}.camp-top{margin-bottom:16px}.camp-layout{padding-bottom:20px;gap:7vw}.camp-main h1{font-size:60px;margin-top:12px}.tagline{margin:16px 0 22px;font-size:16px}.weapon-choice{min-height:104px;padding:12px;gap:8px}.weapon-choice>svg{width:24px;height:24px}.weapon-detail{margin:10px 0 16px}.entry-note{margin-top:8px}.camp-note{padding:22px}.camp-note h2{font-size:26px;margin:12px 0}.camp-loadout{margin-top:20px}.camp-loadout>button{padding:10px 0}.camp-character{margin-top:16px}.camp-bottom{min-height:56px;padding-top:16px}.large{min-height:56px;padding:14px 22px}}
.market-toolbar{display:flex;align-items:flex-end;gap:16px;margin-bottom:24px}.market-toolbar label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--muted)}.market-toolbar select{min-height:44px;padding:10px 36px 10px 12px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:3px}.market-toolbar>span{margin-left:auto;font-size:13px;color:var(--muted);padding-bottom:12px}.listing-quote{padding:16px 0;color:var(--gold);font-size:15px!important}
@media(max-width:550px){.weapon-picker{flex-direction:column}.weapon-choice{grid-template-columns:32px 1fr auto;min-height:68px;align-items:center;padding:12px 14px;gap:10px}.weapon-choice>span:not(.weapon-check){grid-column:2;grid-row:1}.weapon-choice .weapon-check{grid-column:3}.weapon-choice b{font-size:14px}.weapon-choice small{font-size:12px;margin-top:3px}.camp-main h1{font-size:48px}.tagline{margin:16px 0 24px}.market-toolbar{flex-wrap:wrap;gap:12px}.market-toolbar label{flex:1;min-width:0}.market-toolbar select{width:100%;font-size:13px;padding-right:18px}.market-toolbar>span{width:100%;margin:0;padding:0;font-size:12px}}
@media(max-height:550px) and (orientation:landscape) and (min-width:600px){
 :root{--nav-height:56px}.game-nav{height:56px;min-height:56px}.nav-brand{font-size:25px}.nav-destinations :is(button,a){min-height:44px;padding:10px 18px}.camp-top{display:none}.camp-shell{padding:18px 24px}.camp-main{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(0,1.2fr);grid-template-areas:"intro label" "heading weapons" "tagline detail" ". actions";column-gap:32px;row-gap:10px}.camp-main>.eyebrow{grid-area:intro;font-size:9px}.camp-main h1{grid-area:heading;font-size:42px;line-height:1.04;margin:0;align-self:center}.tagline{grid-area:tagline;font-size:13px;line-height:1.5;margin:0;max-width:28ch}.loadout-label{grid-area:label;margin:0}.loadout-label>span:last-child{display:none}.weapon-picker{grid-area:weapons;flex-direction:row;gap:6px}.weapon-choice{min-height:90px;padding:10px;gap:5px}.weapon-choice>svg{width:22px;height:22px}.weapon-choice b{font-size:11px}.weapon-choice small{font-size:10px;margin-top:3px}.weapon-detail{grid-area:detail;margin:0;font-size:11px;min-height:0;line-height:1.5}.camp-actions{grid-area:actions}.large{min-height:48px;font-size:12px;padding:10px 16px}.entry-note{font-size:10px;margin-top:6px}.entry-note span{display:none}.camp-layout{padding-bottom:20px}.camp-bottom{min-height:48px;padding-top:12px}.local-label{font-size:10px}
}
.mobile-wordmark{display:none}@media(max-width:760px){.mobile-wordmark{display:inline;font:22px/1 var(--font-ui);letter-spacing:-.055em;color:var(--gold)}.camp-top .edition{gap:8px;font-size:9px}.camp-top .edition>span{width:12px}}
/* The facility entry surface keeps weapon previews and entry held until activation. */
.launch>.camp-vignette{background:linear-gradient(90deg,oklch(14% .018 190 / .9),oklch(14% .018 190 / .55) 38%,oklch(14% .018 190 / .04) 70%),linear-gradient(0deg,oklch(14% .018 190 / .96),transparent 58%,transparent 85%,oklch(14% .018 190 / .45))}
.launch-shell{position:relative;min-height:100svh;display:flex;flex-direction:column;padding:24px clamp(28px,5vw,88px) 32px}
.launch-header{display:flex;justify-content:flex-end}
.launch-header a{display:inline-flex;align-items:center;gap:16px;min-height:44px;color:var(--text);font-size:13px;text-decoration:none}
.launch-header a:hover{color:var(--gold)}
.launch-layout{display:grid;grid-template-columns:minmax(0,600px) minmax(220px,260px);gap:5vw;align-items:end;justify-content:space-between;margin-block:auto;padding-block:32px}
.launch-gate{min-width:0}
.launch-gate h1{font:400 clamp(88px,10vw,144px)/.9 var(--font-ui);letter-spacing:-.075em;color:var(--gold);text-shadow:0 4px 28px oklch(10% .015 190 / .5)}
.launch-tagline{font:20px/1.5 var(--font-ui);color:var(--text);margin-top:24px}
.launch-entry{width:365px;max-width:100%;margin-top:28px}
.launch-entry>button{display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%;min-height:60px;text-align:left}
.launch-entry>button:disabled{opacity:.72}
.launch-entry>button>span{font-size:24px;font-weight:400}
.launch-entry>p{margin-top:10px;font-size:13px;line-height:1.5;color:var(--text)}
.launch-weapons{margin-top:32px;max-width:560px}
.launch-weapons .weapon-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;width:100%}
.launch-weapons .weapon-choice{display:flex;align-items:center;gap:10px;min-height:76px;padding:12px;text-align:left;background:oklch(18% .016 185 / .8)}
.launch-weapons .weapon-choice.chosen{background:oklch(29% .032 110 / .9)}
.launch-weapons .weapon-choice>svg{width:24px;height:24px}
.launch-weapons .weapon-choice b{font-size:12px;line-height:1.4}
.launch-weapons .weapon-choice small{font-size:11px;line-height:1.5;margin-top:4px}
#launch-weapon-detail{font-size:13px;line-height:1.5;color:var(--text);margin-top:12px;min-height:39px}
.launch-hints{padding-bottom:4px;text-shadow:0 2px 12px oklch(10% .015 190)}
.launch-hints h2{font-size:30px;line-height:1.2;color:var(--text);margin:14px 0 16px}
.launch-hints p{font-size:14px;line-height:1.8;color:var(--text)}
@media(max-width:1000px){.launch-layout{grid-template-columns:minmax(0,1fr);gap:28px;max-width:600px;margin-inline:0}.launch-hints{max-width:100%;padding-top:24px;border-top:1px solid oklch(60% .025 175 / .3)}.launch-hints h2{font-size:26px}.launch-hints h2 br{display:none}}
@media(max-width:550px){.launch-shell{padding:16px 28px 32px}.launch>.camp-art{background-position:58% center}.launch>.camp-vignette{background:linear-gradient(90deg,oklch(14% .018 190 / .88),oklch(14% .018 190 / .45)),linear-gradient(0deg,oklch(14% .018 190 / .96),transparent 75%)}.launch-layout{padding-block:28px}.launch-gate h1{font-size:clamp(76px,22vw,116px)}.launch-tagline{font-size:18px;max-width:25ch;margin-top:24px}.launch-entry{margin-top:28px}.launch-weapons .weapon-choice{flex-direction:column;align-items:flex-start;padding:12px 10px;min-height:106px;gap:8px}.launch-weapons .weapon-choice b{font-size:11px}.launch-weapons .weapon-choice small{font-size:10px}.launch-hints p{font-size:13px}}
@media(max-height:550px) and (orientation:landscape){.launch-shell{padding:12px 5vw 24px}.launch-layout{max-width:none;padding-block:24px}.launch-gate{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"title weapons" "tagline weapons" "entry weapons";gap:16px 32px}.launch-gate h1{grid-area:title;font-size:88px}.launch-tagline{grid-area:tagline;font-size:18px;margin:0}.launch-entry{grid-area:entry;margin:8px 0 0}.launch-entry>button{min-height:54px}.launch-weapons{grid-area:weapons;margin:0;align-self:center}.launch-weapons .weapon-choice{flex-direction:column;align-items:flex-start;gap:8px;padding:10px;min-height:104px}.launch-weapons .weapon-choice b{font-size:11px}.launch-weapons .weapon-choice small{font-size:10px}.launch-hints{padding-top:20px}.launch-hints h2{font-size:24px;margin:10px 0}.launch-hints p{font-size:13px}}

@media(max-height:550px) and (orientation:landscape){
 .camp-top{display:flex}
 .camp-note{display:block;margin-top:16px;padding:16px}
 .camp-note>h2,.camp-note>p,.camp-note>.eyebrow{display:none}
 .camp-loadout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0}
 .camp-loadout>.eyebrow{grid-column:1 / -1}
}

/* Release typography, transaction summaries, and shared interaction states. */
:root{--font-ui:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--text-body:1rem;--text-secondary:.875rem;--text-caption:.75rem;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--ease-out:cubic-bezier(.22,1,.36,1);--action-ink:oklch(23% .023 165);--gold-hover:oklch(87% .085 88);--warning-surface:oklch(25% .035 85)}
button,input,select{font-size:var(--text-secondary);letter-spacing:0;font-weight:600}
button{background:var(--panel);border-color:var(--border);transition:transform 160ms var(--ease-out),background-color 160ms var(--ease-out),border-color 160ms var(--ease-out),color 160ms var(--ease-out)}
button:hover:not(:disabled){background:var(--surface-raised);border-color:var(--gold)}
.primary{background:var(--gold);color:var(--action-ink);border-color:var(--gold)}
.primary:hover:not(:disabled){background:var(--gold-hover);border-color:var(--gold-hover)}
.danger{color:var(--red)}
p{color:var(--muted)}
.eyebrow{font-size:var(--text-caption);letter-spacing:.06em}
.nav-brand,.text-button,.close-button,.mobile-detail-back{background:none}
.nav-brand:hover:not(:disabled),.text-button:hover:not(:disabled){background:none;border-color:transparent}
.loadout-label .eyebrow,.camp-loadout>.eyebrow{letter-spacing:0;font-size:var(--text-secondary)}
.camp-top .edition{font-family:inherit;font-size:var(--text-caption);letter-spacing:.05em}
.weapon-choice b,.launch-weapons .weapon-choice b{font-size:var(--text-secondary);line-height:1.4}
.weapon-choice small,.launch-weapons .weapon-choice small{font-size:var(--text-caption);line-height:1.5}
.weapon-detail,#launch-weapon-detail{font-size:var(--text-secondary)}
.weapon-choice.chosen svg{color:var(--gold)}
.camp-note>.eyebrow{display:none}.camp-note h2{margin-top:0}
.camp-note p,.camp-loadout b{font-size:var(--text-secondary)}
.entry-note,.camp-character,.local-label{font-size:var(--text-caption)}
.resources b,.market-price b,.transaction-summary dd{font-variant-numeric:tabular-nums}
.resources b{font-family:inherit}
.workshop p,.panel p{font-size:var(--text-body);line-height:1.65}
.item-card{border:1px solid var(--border)}
.item-symbol{background:none;border:0}
.item-card p,.item-detail p{font-size:var(--text-secondary);color:var(--muted)}
.item-rarity{font:500 var(--text-caption)/1.5 var(--font-ui);letter-spacing:.01em}
.item-detail h3{font-size:1.75rem}
.detail-actions button,.detail-actions small{font-family:inherit;font-size:var(--text-secondary);letter-spacing:0}
.detail-actions small{font-weight:400;color:var(--muted)}
.empty{border:0;padding:var(--space-lg) var(--space-sm)}
.empty p{margin:var(--space-sm) auto var(--space-md);max-width:42ch}
.empty h3{margin:0;font-size:1.5rem}
.panel{width:min(760px,calc(100% - 32px));border-color:var(--border);box-shadow:0 20px 60px oklch(8% .015 190 / .45)}
.panel-body{overscroll-behavior:contain}
.panel-body>p+p{margin-top:var(--space-sm)}
.panel-footer{background:var(--ink);border-color:var(--border)}
.panel-footer button{font-size:var(--text-secondary)}
.modal-shade{backdrop-filter:none;background:oklch(10% .015 190 / .85)}
.wallet-address{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;color:var(--text)}
.wallet-note{border:0;border-top:1px solid var(--border);background:none;padding:var(--space-md) 0 0}
.wallet-note p,.records small{font-size:var(--text-secondary)}
.records article>div{min-width:0}.records b{font-weight:600;overflow-wrap:anywhere}
.record-status{font:500 var(--text-caption)/1.5 var(--font-ui);min-width:82px;color:var(--muted)}
.record-status.success{color:var(--green)}
.summary-grid span{font:500 var(--text-caption)/1.5 var(--font-ui);letter-spacing:.015em}
.guide-grid article>span,.blessings b{font:600 var(--text-caption)/1.5 var(--font-ui);letter-spacing:.03em;color:var(--gold)}
.guide-grid h3,.blessings strong{font-size:1.5rem}
.blessings span{color:var(--muted)}
.controls-table p{font-size:var(--text-secondary)}
.control-row button{font-size:var(--text-secondary);min-width:56px}
.notice{font:500 var(--text-secondary)/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--panel);color:var(--text);border-color:var(--border);animation-timing-function:var(--ease-out)}
.notice.gold{color:var(--gold)}.notice.warn{color:var(--red)}
.vault-account{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-sm);margin-left:auto;min-width:0}
.vault-account .resources{gap:var(--space-sm);flex-wrap:wrap}
.vault-refresh{background:none;font-size:var(--text-caption);padding:10px 12px}
.vault-banner{background:var(--warning-surface);color:var(--gold);padding:var(--space-sm);gap:var(--space-sm);border:1px solid var(--border);font-size:var(--text-secondary)}
.vault-banner b{font-weight:600}.vault-banner span{max-width:65ch}
.vault-pending{background:var(--surface-raised);padding:var(--space-sm);border:1px solid var(--border);gap:var(--space-sm)}
.vault-pending p{font-size:var(--text-secondary)}
.vault .tabs{gap:4px;min-height:64px}
.vault .tabs button{font-size:var(--text-secondary);min-height:48px;padding:12px 20px;margin:0}
.vault .tabs button.active{color:var(--gold);background:var(--surface-raised)}
.vault-description{max-width:65ch;margin-bottom:var(--space-md)}
.vault-rules{margin-bottom:var(--space-md);max-width:65ch;border-block:1px solid var(--border)}
.vault-rules summary{cursor:pointer;min-height:48px;padding:12px 0;color:var(--text);font-size:var(--text-secondary)}
.vault-rules summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.vault-rules p{padding-bottom:var(--space-sm);font-size:var(--text-secondary)}
.vault .workshop footer{font-size:var(--text-caption);color:var(--muted);line-height:1.8}
.vault-link{color:var(--gold);font-size:var(--text-secondary)}
.vault-link:hover{color:var(--text)}
.vault .workshop footer .vault-link{display:inline-flex;align-items:center;min-height:44px}
.vault-entry{font-size:var(--text-secondary);letter-spacing:0}
.transaction-summary{margin:0 0 var(--space-md);border-block:1px solid var(--border)}
.transaction-summary>div{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-md);padding:14px 0;border-bottom:1px solid var(--border)}
.transaction-summary>div:last-child{border-bottom:0}
.transaction-summary dt{font-size:var(--text-secondary);color:var(--muted)}
.transaction-summary dd{margin:0;text-align:right;font-size:var(--text-body);font-weight:600;color:var(--text)}
#vault-recipient{width:100%;min-height:48px;padding:12px;background:var(--panel);border:1px solid var(--border);color:var(--text);font:inherit}
#vault-price{width:100%;margin-top:8px;padding:14px 16px;min-height:56px;font-size:1.25rem;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:3px}
#vault-price[aria-invalid="true"]{border-color:var(--red)}
#vault-price-status{margin-top:12px;font-size:var(--text-secondary);color:var(--red)}
#vault-price-status:empty{display:none}
.price-label{display:block;margin-top:var(--space-md);font-size:var(--text-secondary);letter-spacing:0}
.launch-entry>button:disabled{background:var(--panel);border-color:var(--border);color:var(--muted);opacity:1;cursor:default}
.launch-entry>p{font-size:var(--text-secondary);color:var(--muted)}
.launch-hints p{font-size:var(--text-body)}
.launch-weapons .weapon-choice{min-height:92px}
.result-content h1{font-size:clamp(3.25rem,7vw,6.25rem);line-height:1.02}
.result-content>small{font:500 var(--text-caption)/1.6 var(--font-ui);letter-spacing:.03em}
@media(max-width:760px){
 .panel{width:calc(100% - 24px)}
 .vault .workshop>header{padding:24px 0;gap:20px}.vault .workshop>header>div:first-child{padding-right:52px;width:100%}.vault .workshop>header h2{font-size:2rem}
 .vault-account{margin:0;width:100%;justify-content:space-between}.vault-account .resources{width:auto;flex:1;font-size:var(--text-caption)}
 .vault .tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;overflow:visible}
 .vault .tabs button{padding:12px 4px;font-size:var(--text-caption);white-space:normal;line-height:1.4;min-width:0}
 .vault .workshop footer{align-items:stretch}
 .vault-pending>button{width:100%}
 .records article{flex-wrap:wrap;gap:12px}.records article>div{flex:1;min-width:130px}
 .wallet-note button{font-size:var(--text-secondary)}
 .guide-grid{gap:24px}.guide-grid p{font-size:var(--text-body)}
 .camp-main .weapon-choice{min-height:76px}
 .launch-weapons .weapon-choice{min-height:128px}
 .camp-character{gap:16px;flex-wrap:wrap}
 .transaction-summary>div{gap:16px}.transaction-summary dd{max-width:60%}
 .result-content{padding:40px 24px;box-sizing:border-box}.result-actions{flex-wrap:wrap}.result-actions button{flex:1 1 150px}
}
@media(max-height:550px) and (orientation:landscape){.launch-weapons .weapon-choice{min-height:128px}.camp-main .weapon-choice{min-height:108px}.weapon-detail{font-size:var(--text-caption)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
#hud-link:empty{display:none}
.touch-guide{display:none}
body.touch-input .touch-guide{display:block}
body.touch-input .keyboard-guide{display:none}
@media(pointer:coarse){.touch-guide{display:block}.keyboard-guide{display:none}}
.vault .exchange .tabs button:last-child{margin-left:0}
.forge-ingredients{margin:12px 0 24px;padding-left:20px;color:var(--text);font-size:var(--text-secondary);line-height:1.8}
@media(max-width:760px){.vault .exchange .tabs button{width:100%}}

.upgrades.permanent-upgrades{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){.upgrades.permanent-upgrades{grid-template-columns:1fr}}

/* The satchel stays on one screen: slots, ground tray and a persistent inspector. */
.inventory-tools{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:0 0 20px}
.inventory-tools label{display:flex;flex-direction:column;gap:7px;min-width:140px;font-size:12px;color:var(--muted)}
.inventory-tools select{appearance:auto;background:var(--ink);color:var(--text);border:1px solid var(--border);border-radius:2px;min-height:44px;padding:9px 28px 9px 10px;font-weight:400;max-width:100%}
#overlay.satchel{display:flex;align-items:center;justify-content:center;padding:24px;overflow:hidden}
.satchel-panel{position:relative;z-index:1;width:min(1120px,100%);height:min(730px,calc(100svh - 48px));display:flex;flex-direction:column;background:oklch(17% .017 177);border:1px solid oklch(39% .025 150);box-shadow:inset 0 0 0 3px oklch(12% .013 177),0 24px 70px oklch(8% .015 190 / .6);min-height:0}
.satchel-panel>header{display:flex;align-items:center;gap:18px;padding:15px 22px;border-bottom:1px solid var(--border);flex:none}
.satchel-title{display:flex;align-items:center;gap:18px}
.satchel-panel h2{font:30px/1 var(--font-ui);margin:0}
.satchel-count{font:500 13px/1.3 var(--font-ui);font-variant-numeric:tabular-nums;color:var(--gold);white-space:nowrap}
.satchel-count.full,.satchel-space.full{color:var(--red)}
.satchel-floor{font-size:12px;color:var(--muted);margin-left:auto}
.satchel-panel .close-button{position:static;flex:none;background:none;border-color:transparent}
.satchel-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;min-height:0;flex:1}
.satchel-bag{display:flex;flex-direction:column;min-height:0;min-width:0;padding:16px 20px 0}
.satchel-kit{display:flex;justify-content:space-between;align-items:center;gap:14px;flex:none;padding-bottom:14px}
.satchel-equipment{display:flex;gap:10px}
.equipped-slot{display:flex;align-items:center;gap:6px}
.equipped-slot>span:last-child{font-size:11px;color:var(--muted);text-transform:capitalize}
.equipped-slot .relic-slot,.empty-equipment{width:44px;height:44px;flex:none;min-height:44px}
.empty-equipment{display:grid;place-items:center;border:1px solid var(--border);background:var(--ink);color:oklch(40% .022 166)}
.empty-equipment svg{width:24px;height:24px}
.equipped-slot .relic-sprite{width:32px;height:32px}
.equipped-slot .relic-grade{display:none}
.satchel-materials{display:flex;flex-direction:column;gap:7px;font-size:11px;white-space:nowrap;color:var(--muted)}
.satchel-materials>span{display:flex;align-items:center;gap:5px}
.satchel-materials b{color:var(--text);font-weight:500;font-variant-numeric:tabular-nums}
.satchel-toolbar{display:flex;align-items:end;gap:10px;padding-bottom:13px;flex:none}
.satchel-toolbar .inventory-tools{gap:8px;margin:0;flex-wrap:nowrap;min-width:0}
.satchel-toolbar .inventory-tools label{min-width:0;gap:0}
.satchel-toolbar .inventory-tools label{font-size:0}
.satchel-toolbar .inventory-tools select{font-size:12px;min-width:120px;background:oklch(15% .015 178)}
.satchel-space{font-size:11px;color:var(--muted);margin-left:auto;align-self:center;white-space:nowrap}
.satchel-grid-scroll{flex:1;overflow-y:auto;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent;padding:2px 4px 16px 2px}
.relic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px;align-content:start}
.relic-slot{--rarity:var(--border);position:relative;display:grid;place-items:center;aspect-ratio:1;min-width:0;min-height:44px;padding:0;background:oklch(12.5% .014 176);border:1px solid color-mix(in oklch,var(--rarity) 40%,oklch(27% .02 175));border-radius:1px;box-shadow:inset 2px 2px oklch(7% .012 175 / .65),inset -1px -1px oklch(33% .02 175 / .35);transition:border-color .12s,background-color .12s;isolation:isolate}
.relic-slot:not(.empty-slot):hover{background:oklch(23% .024 174);border-color:var(--rarity)}
.relic-slot[aria-pressed=true]{background:oklch(26% .027 140);border-color:var(--gold);outline:1px solid var(--gold);outline-offset:0}
.relic-slot:focus-visible{outline:2px solid var(--text);outline-offset:2px;z-index:1}
.relic-sprite{display:block;width:48px;height:48px;max-width:calc(100% - 8px);image-rendering:pixelated;pointer-events:none;filter:drop-shadow(1px 3px 0 oklch(5% .01 170 / .6))}
.relic-grade,.relic-rank{position:absolute;font:500 9px/1 ui-monospace,monospace;pointer-events:none}
.relic-grade{right:5px;bottom:5px;color:var(--rarity)}
.relic-rank{left:5px;top:5px;color:var(--text)}
.slot-selected{position:absolute;left:4px;bottom:4px;width:4px;height:4px;background:var(--gold);opacity:0}
[aria-pressed=true]>.slot-selected{opacity:1}
.empty-slot{border-color:oklch(28% .02 171);background:oklch(14% .015 174);opacity:.65;box-shadow:inset 1px 1px 2px oklch(7% .01 175 / .6)}
.empty-slot>span{font:16px var(--font-ui);color:oklch(29% .022 171);pointer-events:none}
.satchel-storage-note{font-size:11px;color:var(--gold);padding-bottom:10px;line-height:1.4}
.satchel-no-match{font-size:13px;color:var(--muted);padding:18px 0}
.satchel-ground{display:flex;align-items:center;gap:18px;flex:none;min-height:54px;border-top:1px solid var(--border);padding:9px 0}
.satchel-ground-label{display:flex;flex-direction:column;gap:4px;flex:none}
.satchel-ground-label b{font-size:12px;font-weight:500;color:var(--text)}
.satchel-ground-label span{font-size:10px;color:var(--muted)}
.ground-slots{display:flex;gap:6px;overflow-x:auto;padding:2px;scrollbar-width:thin;min-width:0}
.ground-slots .relic-slot{width:50px;height:50px;flex:none}
.ground-slots .relic-sprite{width:40px;height:40px}
.satchel-detail{display:flex;flex-direction:column;min-height:0;min-width:0;border-left:1px solid var(--border);padding:22px 22px 18px;background:oklch(14.5% .015 176)}
.satchel-detail-content{overflow-y:auto;min-height:0;flex:1;scrollbar-width:thin}
.satchel-item-heading{display:flex;flex-direction:column;align-items:start;gap:21px}
.inspected-sprite{display:grid;place-items:center;width:96px;height:96px;border:1px solid color-mix(in oklch,var(--rarity) 40%,var(--border));background:oklch(12% .013 176);box-shadow:inset 2px 2px 0 oklch(7% .01 176 / .5)}
.inspected-sprite .relic-sprite{width:80px;height:80px}
.satchel-item-heading .item-rarity{font-size:11px;line-height:1.5;display:block}
.satchel-detail h3{font:26px/1.2 var(--font-ui);margin:9px 0 0;overflow-wrap:anywhere}
.satchel-detail .bag-comparison{padding:0;margin:22px 0 0;border:0}
.bag-comparison>p{color:var(--muted);font-size:11px;line-height:1.45;margin-bottom:12px}
.bag-comparison>div{display:grid;grid-template-columns:1fr auto 52px;gap:12px;align-items:center;padding:7px 0;font-size:12px;border-bottom:1px solid oklch(28% .02 175)}
.bag-comparison b{font-size:13px;font-weight:500;color:var(--text);font-variant-numeric:tabular-nums}
.bag-comparison small{font-size:11px;text-align:right;font-variant-numeric:tabular-nums}
.bag-comparison .gain{color:var(--green)}.bag-comparison .loss{color:var(--red)}.bag-comparison .unchanged{color:var(--muted)}
.satchel-detail-action{padding-top:20px;flex:none;display:flex;flex-direction:column;gap:10px}
.satchel-detail-action p{font-size:11px;line-height:1.5;color:var(--muted)}
.satchel-item-action{width:100%;min-height:44px;font-size:13px}
.satchel-idle{margin:auto;display:flex;flex-direction:column;gap:18px;align-items:center;text-align:center}
.satchel-idle>span{color:var(--muted)}.satchel-idle svg{width:34px;height:34px}
.satchel-idle h3{font-size:23px;margin:0 0 10px}.satchel-idle p{font-size:13px;line-height:1.6}
.satchel-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--border);padding:8px 20px;flex:none;min-height:60px}
.satchel-status{font-size:12px;line-height:1.4;color:var(--gold)}
.satchel-footer button{flex:none;min-height:44px;font-size:12px;background:none;border-color:var(--border)}
.inventory-key-hint{font-size:10px;color:var(--muted);margin-left:14px}
.camp-storage{border-top:1px solid var(--border);margin-top:18px;padding-top:16px;display:flex;flex-wrap:wrap;gap:10px 18px;font-size:12px;color:var(--muted)}
.camp-storage b{color:var(--text);font-weight:500;margin-left:5px}
.camp-storage p{font-size:12px;width:100%;line-height:1.6}
@media(max-width:950px){
 .equipped-slot>span:last-child{display:none}
 .satchel-layout{grid-template-columns:minmax(0,1fr) 260px}
 .satchel-detail{padding:18px}
}
@media(max-width:640px){
 #overlay.satchel{padding:0}
 .satchel-panel{height:100svh;width:100%;border-width:0;box-shadow:none;padding-top:env(safe-area-inset-top)}
 .satchel-panel>header{padding:10px 14px;gap:12px;min-height:62px}
 .satchel-panel h2{font-size:27px}.satchel-title{gap:12px}.satchel-count{font-size:12px}
 .satchel-floor{font-size:10px;max-width:42px;text-align:right;line-height:1.4}
 .satchel-layout{display:flex;flex-direction:column;min-height:0}
 .satchel-bag{flex:1;padding:10px 14px 0;min-height:135px}
 .satchel-kit{padding-bottom:9px;gap:8px}.satchel-equipment{gap:6px}
 .satchel-materials{flex-direction:row;gap:12px;font-size:11px}
 .satchel-toolbar{gap:8px;padding-bottom:10px}
 .satchel-toolbar .inventory-tools{flex:1}
 .satchel-toolbar .inventory-tools label{flex:1;min-width:0}
 .satchel-toolbar .inventory-tools select{width:100%;min-width:0;max-width:100%;font-size:12px;padding-right:20px}
 .satchel-space{font-size:10px}
 .satchel-grid-scroll{padding-bottom:10px}
 .relic-grid{gap:5px;grid-template-columns:repeat(auto-fill,minmax(54px,1fr))}
 .satchel-ground{min-height:38px;padding:5px 0;gap:12px}
 .satchel-ground-label{flex-direction:row;align-items:center;gap:8px}
 .satchel-ground-label b{font-size:11px}.satchel-ground-label span{font-size:10px}
 .satchel-ground.has-drops .satchel-ground-label{flex-direction:column;align-items:start;gap:3px}
 .ground-slots .relic-slot{width:44px;height:44px}.ground-slots .relic-sprite{width:32px;height:32px}
 .satchel-detail{border-left:0;border-top:1px solid var(--border);padding:12px 16px;flex:none;max-height:min(255px,36svh)}
 .satchel-item-heading{flex-direction:row;gap:12px;align-items:center}
 .inspected-sprite{width:48px;height:48px;flex:none}.inspected-sprite .relic-sprite{width:40px;height:40px}
 .satchel-item-heading .item-rarity{font-size:10px;line-height:1.4}
 .satchel-detail h3{font-size:21px;line-height:1.15;margin:4px 0 0}
 .satchel-detail .bag-comparison{margin-top:9px}
 .bag-comparison>p{font-size:10px;margin:0 0 5px}
 .bag-comparison>div{padding:3px 0;font-size:11px;border:0}
 .bag-comparison b{font-size:12px}.bag-comparison small{font-size:11px}
 .satchel-detail-action{flex-direction:row;align-items:center;gap:12px;padding-top:9px}
 .satchel-detail-action p{font-size:10px;flex:1;line-height:1.4}
 .satchel-item-action{width:116px;flex:none;font-size:12px}
 .satchel-idle{flex-direction:row;text-align:left;gap:12px;margin:0}.satchel-idle h3{font-size:19px;margin:0 0 4px}.satchel-idle p{font-size:12px}
 .satchel-footer{gap:12px;min-height:52px;padding:4px 14px max(4px,env(safe-area-inset-bottom))}
 .satchel-status{font-size:11px}.satchel-footer button{padding:8px 12px;font-size:11px}.inventory-key-hint{display:none}
 .inventory-tools{gap:10px;flex-wrap:nowrap}.inventory-tools label{min-width:0;flex:1}.inventory-tools select{width:100%;font-size:13px}
}
@media(max-height:550px) and (min-width:641px){
 #overlay.satchel{padding:6px}
 .satchel-panel{height:calc(100svh - 12px)}
 .satchel-panel>header{padding:4px 16px}.satchel-panel h2{font-size:25px}
 .satchel-bag{padding:10px 14px 0}.satchel-kit{padding-bottom:8px}.satchel-toolbar{padding-bottom:8px}
 .satchel-layout{grid-template-columns:minmax(0,1fr) 280px}
 .satchel-detail{padding:12px 16px}.satchel-item-heading{flex-direction:row;align-items:center;gap:12px}
 .inspected-sprite{width:48px;height:48px;flex:none}.inspected-sprite .relic-sprite{width:40px;height:40px}
 .satchel-item-heading .item-rarity{font-size:10px}.satchel-detail h3{font-size:19px;margin-top:4px}
 .satchel-detail .bag-comparison{margin-top:10px}.bag-comparison>p{margin-bottom:5px;font-size:10px}
 .bag-comparison>div{padding:4px 0}.satchel-detail-action{padding-top:10px;gap:7px}
 .satchel-ground{min-height:36px;padding:4px 0}.satchel-ground-label{flex-direction:row;gap:8px}
 .ground-slots .relic-slot{width:44px;height:44px}.ground-slots .relic-sprite{width:32px;height:32px}
 .satchel-footer{min-height:50px;padding:3px 14px}.satchel-status{font-size:11px}
}
@media(prefers-reduced-motion:reduce){.relic-slot{transition:none}}

/* Inventory and pause are utilities, clear of the two-thumb combat controls. */
.hud-utilities{display:flex;align-items:flex-start;gap:8px;flex-shrink:0}
#touch-satchel,.touch-life-label{display:none}
body.touch-input .hud-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;top:max(16px,env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right))}
body.touch-input .vitals{grid-area:1 / 1;min-width:0;width:100%;max-width:245px}
body.touch-input .vital-label{line-height:14px;margin-bottom:6px}
body.touch-input .prospector-label,body.touch-input #hud-relics{display:none}
body.touch-input .touch-life-label{display:inline}
body.touch-input .run-resources{margin-top:6px;font-size:10px;line-height:15px;gap:4px 10px}
body.touch-input #hud-link:empty{display:none}
body.touch-input .hud-utilities{grid-area:1 / 2}
body.touch-input #touch-satchel{display:flex;align-items:center;justify-content:center;gap:8px;min-width:104px;height:52px;padding:6px 10px;background:#0d1b1df2;border-color:#5f7264;touch-action:manipulation;letter-spacing:0;text-align:left}
#touch-satchel svg{width:24px;height:24px;color:var(--gold)}
#touch-satchel b{display:block;font-size:12px;line-height:16px;font-weight:600}
#touch-satchel small{display:block;font:11px/16px monospace;color:var(--muted);white-space:nowrap}
#touch-satchel.is-full{border-color:var(--gold)}
#touch-satchel.is-full small{color:var(--gold)}
body.touch-input .pause-button{width:48px;min-width:48px;height:52px;min-height:52px;touch-action:manipulation}
body.touch-input .depth{grid-area:2 / 1 / 3 / 3;display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;text-align:left}
body.touch-input .depth span{font-size:16px;line-height:18px;white-space:nowrap}
body.touch-input .depth b{font-size:9px;line-height:14px;margin:0;max-width:none;text-align:right}

/* Mobile hierarchy: survival and the next action first; details live in Satchel. */
#hud-touch-objective{display:none}
body.touch-input .run-resources{margin-top:5px}
body.touch-input #hud-ash,body.touch-input #hud-iron{display:none}
body.touch-input .vital-label{font:12px/16px var(--font-ui);letter-spacing:0;margin-bottom:8px}
body.touch-input .vital-label b{font-weight:500}
body.touch-input .vital-label span{font-variant-numeric:tabular-nums}
body.touch-input .health-track{height:11px}
body.touch-input #hud-objective,body.touch-input .mission small{display:none}
body.touch-input #hud-touch-objective{display:block;font:500 13px/1.4 var(--font-ui);letter-spacing:0;color:var(--text)}
body.touch-input .mission{top:max(110px,calc(env(safe-area-inset-top) + 94px));left:max(16px,env(safe-area-inset-left));max-width:calc(100% - 148px)}
.touch-actions button{gap:1px;background:oklch(19% .02 177 / .9);border-color:oklch(53% .03 160);color:var(--text);font-family:var(--font-ui);letter-spacing:0;touch-action:none;-webkit-user-select:none;user-select:none}
.touch-actions svg{width:20px;height:20px;pointer-events:none}
.touch-actions b{font:600 12px/15px var(--font-ui)}
.touch-actions small{font:10px/12px var(--font-ui);font-variant-numeric:tabular-nums}
.touch-actions #touch-hit{background:oklch(31% .045 88 / .94);border-color:var(--gold);color:var(--gold);gap:3px}
.touch-actions #touch-hit svg{width:28px;height:28px}
.touch-actions #touch-hit b{font-size:13px}
.touch-actions button:active:not(:disabled){background:var(--surface-raised);transform:scale(.96)}
.touch-actions #touch-hit:active{background:oklch(41% .06 88)}
.touch-actions button:disabled{opacity:.6}
#joystick{border-color:oklch(60% .024 167 / .5);background:oklch(22% .021 177 / .65)}
/* Pause offers a clear way back before profile or abandoning a run. */
.paused .panel{width:min(420px,calc(100% - 24px));margin:max(12px,env(safe-area-inset-top)) auto;max-height:calc(100svh - 24px - env(safe-area-inset-bottom))}
.paused .panel>header{padding:20px 22px}
.paused .panel .eyebrow{display:none}
.paused .panel h2{font-size:28px;margin:0}
.paused .panel-body{padding:0 22px 16px}
.pause-run{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 0;font-size:12px;color:var(--muted)}
.pause-run b{font-weight:500;color:var(--text);font-variant-numeric:tabular-nums}
.pause-primary{display:flex;flex-direction:column;gap:10px}
.pause-primary button{min-height:52px;font-size:14px;letter-spacing:0}
.pause-primary [data-action=satchel]{display:flex;align-items:center;justify-content:space-between}
.pause-primary [data-action=satchel] span{font-size:12px;font-weight:400;color:var(--muted)}
.pause-primary [data-action=savequit]{background:none;border-color:var(--border);font-weight:500}
.pause-primary small{display:block;font-size:12px;line-height:1.5;font-weight:400;margin-top:4px}
.pause-options{display:flex;gap:10px;margin-top:16px}
.pause-options button{flex:1;min-height:44px;padding:8px;font-size:12px;background:none;border-color:transparent;color:var(--muted);letter-spacing:0}
.paused .panel-footer{padding:10px 22px;border-color:var(--border)}
.paused .pause-abandon{width:100%;background:none;border:0;font-size:12px;font-weight:400;letter-spacing:0;min-height:44px}
.satchel-equipment{align-items:center}
.satchel-kit-label{font-size:11px;color:var(--muted)}
body.touch-input .satchel-ground:not(.has-drops),body.touch-input .inventory-key-hint{display:none}
@media(max-width:640px){
 .satchel-toolbar .inventory-tools select{font-size:16px;padding:8px 22px 8px 10px}
 .satchel-space{display:none}
 .satchel-item-heading .item-rarity,.bag-comparison>p{font-size:12px}
 .bag-comparison>div{font-size:13px;line-height:1.6}
 .bag-comparison b,.bag-comparison small{font-size:12px}
 .satchel-detail{max-height:min(280px,40svh)}
 .satchel-detail-action p{font-size:12px;line-height:1.4}
 .satchel-item-action{font-size:13px}
 .satchel-footer button{font-size:13px;min-width:92px}
 .satchel-materials{flex-direction:column;gap:5px;font-size:11px}
 .satchel-status{font-size:12px}
}
@media(max-height:550px) and (orientation:landscape){
 .paused .panel{width:min(620px,calc(100% - 24px))}
 .paused .panel>header{padding:10px 20px}
 .paused .panel h2{font-size:24px}
 .paused .panel-body{padding:0 20px 8px}
 .pause-run{padding:10px 0}
 .pause-primary{display:grid;grid-template-columns:1fr 1fr;gap:8px}
 .pause-primary [data-action=savequit]{grid-column:1/-1;min-height:44px;padding:8px}
 .pause-primary small{display:inline;margin:0 0 0 12px}
 .pause-options{margin-top:4px}
 .paused .panel-footer{padding:0 20px}
}

#world{--game-safe-top:env(safe-area-inset-top);--game-safe-right:env(safe-area-inset-right)}
@media(max-height:550px) and (orientation:landscape){
 body.touch-input .vitals{max-width:min(245px,calc(50vw - 80px))}
 body.touch-input .depth b{max-width:160px}
}

@media(max-width:760px){
 .camp-top{margin-bottom:16px}
 .camp-main h1{font-size:36px;line-height:1.15;margin-top:10px}
 .camp-main h1 br{display:none}
 .camp-main .tagline{display:none}
 .camp-main .loadout-label{margin-top:24px}
 .camp-main .weapon-detail{font-size:13px;margin:10px 0 20px}
 .camp-main.has-active-run .weapon-choice:not(.chosen){display:none}
 .camp-main.has-active-run .weapon-choice.chosen{width:100%;min-height:64px;display:flex;align-items:center;gap:14px}
 .camp-main.has-active-run .weapon-choice.chosen .weapon-check{margin-left:auto}
 .camp-note{margin-top:24px}
}
@media(max-width:550px){.camp-main .weapon-choice{min-height:64px;padding:10px 14px}}
@media(prefers-reduced-motion:reduce){.touch-actions button:active:not(:disabled){transform:none}}

/* Satchel multiselect shares the existing slot and action styles. */
.satchel-selection-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:10px;flex:none}
.satchel-selection-tools button{min-height:36px;padding:6px 10px;font-size:12px}
.satchel-selection-tools span{font-size:11px;color:var(--gold);margin-left:auto}
.relic-check{position:absolute;top:4px;left:4px;width:16px;height:16px;border:1px solid var(--gold);background:var(--bg,#14201d);color:var(--gold);font:14px/14px sans-serif;text-align:center;z-index:2}

.community-entry{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:13px;color:var(--muted)}.community-entry:hover{color:var(--text)}

.community-profile-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 18px;border:1px solid var(--border);background:var(--surface-raised);color:var(--text);font-size:14px;text-decoration:none;white-space:nowrap}.community-profile-link:hover{border-color:var(--gold)}

/* Pending loot requests leave movement and combat active. */
.interaction-progress{display:none;width:24px;height:24px;flex:none;margin-right:10px}
.interact-prompt.is-working{display:flex;align-items:center;opacity:1}
.interact-prompt.is-working .interaction-progress{display:inline-block;vertical-align:middle}
.interact-prompt.is-working kbd{display:none}
.interaction-lid{transform-origin:4px 9px;animation:interaction-open .85s ease-in-out infinite alternate}
@keyframes interaction-open{from{transform:rotate(0deg)}to{transform:rotate(-22deg)}}
@media(prefers-reduced-motion:reduce){.interaction-lid{animation:none;transform:rotate(-18deg)}}
