@font-face{font-family:Departure Mono;src:url(/fonts/DepartureMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--bg:#0a0b0e;--panel:#12141a;--panel-2:#181b24;--panel-3:#1e222c;--ink:#e4e6eb;--muted:#7a8094;--line:#2e3344;--line-bright:#454b60;--accent:#c9a227;--body:#5faa5f;--mind:#5f85d4;--workload:#c8643c;--money:#d4b45a;--composure:#4fb8b0;--energy:#e0b830;--danger:#c8504a;--won:#5faa72;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--border-w:2px;--font:"Departure Mono", ui-monospace, "Cascadia Mono", monospace;font-family:var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:none;font-smooth:never;font-size:13px;line-height:1.45}*{box-sizing:border-box}html,body,#root{height:100dvh}body{background:var(--bg);color:var(--ink);image-rendering:pixelated;margin:0;overflow:hidden}.app{flex-direction:column;gap:10px;max-width:1180px;height:100dvh;margin:0 auto;padding:12px 16px;display:flex;position:relative;overflow:hidden}.app.app--menu{gap:0;width:100%;max-width:none;margin:0;padding:0}.end-run-confirm{align-items:center;gap:var(--space-sm);color:var(--muted);flex-wrap:wrap;font-size:10px;display:flex}select{font:inherit;color:var(--ink);background:var(--panel-2);border:var(--border-w) solid var(--line);cursor:pointer;border-radius:0;padding:6px 10px}.pixel-panel{background:var(--panel);border:1px solid var(--line);position:relative;box-shadow:inset 0 0 0 1px #ffffff08}.pixel-panel:before{content:"";pointer-events:none;background:linear-gradient(var(--accent), var(--accent)) 0 0 / 12px 2px no-repeat, linear-gradient(var(--accent), var(--accent)) 0 0 / 2px 12px no-repeat, linear-gradient(var(--accent), var(--accent)) 100% 0 / 12px 2px no-repeat, linear-gradient(var(--accent), var(--accent)) 100% 0 / 2px 12px no-repeat, linear-gradient(var(--accent), var(--accent)) 0 100% / 12px 2px no-repeat, linear-gradient(var(--accent), var(--accent)) 0 100% / 2px 12px no-repeat, linear-gradient(var(--accent), var(--accent)) 100% 100% / 12px 2px no-repeat, linear-gradient(var(--accent), var(--accent)) 100% 100% / 2px 12px no-repeat;opacity:.85;position:absolute;inset:4px}.pixel-panel--padded{padding:var(--space-md) var(--space-lg)}.pixel-panel>*{z-index:1;position:relative}.pixel-section-header{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:11px;display:flex}.pixel-section-header__caret{color:var(--accent)}.pixel-section-header__rule{background:linear-gradient(90deg, var(--line-bright), transparent);flex:1;height:1px}.pixel-btn{font:inherit;color:var(--ink);background:var(--panel-2);border:var(--border-w) solid var(--line-bright);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;border-radius:0;padding:8px 14px;font-size:11px;transition:background 80ms,border-color 80ms;box-shadow:inset 1px 1px #ffffff0f,inset -1px -1px #00000059}.pixel-btn:hover:not(:disabled){background:var(--panel-3);border-color:var(--accent)}.pixel-btn:active:not(:disabled){transform:translateY(1px);box-shadow:inset -1px -1px #ffffff0a,inset 1px 1px #0006}.pixel-btn:disabled{opacity:.45;cursor:not-allowed}.pixel-btn--primary{border-color:var(--won);color:#b8e8c4;background:#1a2e22}.pixel-btn--primary:hover:not(:disabled){background:#223a2c;border-color:#7fd49a}.pixel-btn--danger{color:#e8a0a0;background:#2a1a1a;border-color:#6a3030}.pixel-btn--danger:hover:not(:disabled){border-color:var(--danger);background:#3a2222}.pixel-chip{background:var(--panel-2);border:1px solid var(--line);flex-direction:column;gap:2px;min-width:72px;padding:6px 10px;display:flex}.pixel-chip__label{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:9px}.pixel-chip__value{align-items:center;gap:4px;font-size:14px;display:flex}.pixel-chip--money .pixel-chip__value{color:var(--money)}.pixel-chip--composure .pixel-chip__value{color:var(--composure)}.pixel-chip--body .pixel-chip__value{color:var(--body)}.pixel-chip--mind .pixel-chip__value{color:var(--mind)}.pixel-meter__top{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:10px;display:flex}.pixel-meter__nums{font-variant-numeric:tabular-nums}.pixel-meter__track{border:1px solid var(--line);background:#0c0e12;height:10px;overflow:hidden}.pixel-meter--compact .pixel-meter__track{height:8px}.pixel-meter__fill{height:100%;transition:width .2s}.pixel-meter__fill--body{background:var(--body)}.pixel-meter__fill--mind{background:var(--mind)}.pixel-meter__fill--workload{background:var(--workload)}.pixel-meter--hit .pixel-meter__track{border-color:var(--danger);box-shadow:0 0 0 1px #c8504a59}.pixel-pips{gap:4px;display:inline-flex}.pixel-pip{border:1px solid var(--line-bright);background:#0c0e12;width:14px;height:14px}.pixel-pip--struck{background:var(--danger);border-color:#8a3030;box-shadow:inset 0 0 0 1px #0006}.pixel-screen{background-image:var(--screen-bg,none);image-rendering:pixelated;background-position:50%;background-size:cover;position:relative}.pixel-screen:before{content:"";pointer-events:none;background:linear-gradient(#0a0b0eb8,#0a0b0ee6);position:absolute;inset:0}.pixel-screen>*{z-index:1;position:relative}.run-hud{flex:none}.status-strip{align-items:stretch;gap:var(--space-md);display:flex}.status-strip__vitals{gap:var(--space-md);flex:auto;min-width:0;display:flex}.status-strip__vitals .pixel-meter{flex:140px;min-width:120px}.status-strip__right,.status-strip__chips{gap:var(--space-sm);align-items:center;display:flex}.status-strip__right{flex:none;margin-left:auto}.status-strip .pixel-chip{background:0 0;border:none;min-width:0;padding:0}.status-strip__traits{margin-top:var(--space-sm);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.trait-tag{text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--line);color:var(--muted);background:var(--panel-2);padding:3px 8px;font-size:9px}button:not(.pixel-btn):not(.card):not(.map-node):not(.reward-card){font:inherit;color:var(--ink);background:var(--panel-2);border:var(--border-w) solid var(--line);cursor:pointer;border-radius:0;padding:6px 10px}button:not(.pixel-btn):not(.card):not(.map-node):not(.reward-card):hover:not(:disabled){border-color:var(--line-bright);background:var(--panel-3)}button:not(.pixel-btn):not(.card):not(.map-node):not(.reward-card):disabled{opacity:.4;cursor:not-allowed}.table{flex-direction:column;flex:auto;gap:12px;min-height:0;display:flex}.battlefield{min-height:0;padding:var(--space-md) var(--space-xl);background:#0e1016;flex:auto;justify-content:flex-end;align-items:center;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 0 80px #000000a6}.player-slot{left:var(--space-sm);bottom:var(--space-sm);z-index:1;pointer-events:none;flex-direction:column;align-items:flex-start;display:flex;position:absolute}.player-portrait{object-fit:contain;object-position:left bottom;width:256px;height:256px;image-rendering:pixelated;filter:drop-shadow(0 8px 20px #0000008c)}.battlefield.tier-1 .player-portrait{filter:drop-shadow(0 8px 20px #0000008c)saturate(.95)}.battlefield.tier-2 .player-portrait,.battlefield.tier-3 .player-portrait{filter:drop-shadow(0 8px 20px #0000008c)saturate(.9)hue-rotate(-8deg)}.battlefield.tier-4 .player-portrait{filter:drop-shadow(0 8px 24px #78142873)saturate(.75)}.battle-banner{top:var(--space-md);z-index:2;max-width:min(560px, calc(100% - var(--space-xl) * 2));text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.battle-title{letter-spacing:1px;color:var(--ink);text-shadow:0 2px 8px #000000f2;margin:0;font-size:20px;line-height:1.1}.encounter-caption{padding:0 var(--space-md);color:var(--muted);text-shadow:0 1px 6px #000000f2;margin:0;font-size:11px;line-height:1.45}.problem-slot{flex-direction:column;flex:none;align-items:center;gap:18px;max-width:260px;display:flex}.intent-bubble{text-align:center;text-shadow:0 1px 4px #000000e6;flex-direction:column;align-items:center;gap:2px;min-width:200px;display:flex;position:relative}.intent-bubble.target-mind .intent-name{color:var(--mind)}.intent-bubble.target-body .intent-name{color:var(--body)}.intent-tag{text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);font-size:10px}.intent-name{font-size:16px}.intent-desc{color:var(--muted);font-size:12px}.intent-arrow{color:var(--muted);text-transform:capitalize;font-size:11px}.problem-card{text-align:center;width:240px;min-height:0;padding:var(--space-sm) 0;flex-direction:column;align-items:center;display:flex;position:relative}.problem-card.target-mind .problem-name{color:var(--mind)}.problem-card.target-body .problem-name{color:var(--body)}.problem-cat{text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);text-shadow:0 1px 4px #000000e6;align-self:center;font-size:10px}.problem-icon{filter:drop-shadow(0 6px 14px #00000080);margin:14px 0 6px;font-size:96px;line-height:1;transform:scaleX(-1)}.problem-name{text-shadow:0 2px 8px #000000d9;font-size:22px;font-weight:700}.problem-blurb{color:var(--muted);text-shadow:0 1px 4px #000000e6;margin:6px 0 14px;font-size:12px;line-height:1.4}.problem-card .pixel-meter{width:100%;margin-top:auto}.problem-card .pixel-meter__top{text-shadow:0 1px 4px #000000e6}.problem-card .pixel-meter__track{border-color:var(--line-bright);background:#0000008c;height:14px;box-shadow:inset 0 2px 4px #00000073}.problem-card .pixel-meter__fill--workload{background:linear-gradient(180deg, #e07850 0%, var(--workload) 55%, #9a4828 100%);box-shadow:inset 0 1px #fff3}.dock-panel{flex:none}.dock{align-items:flex-end;gap:14px;min-height:168px;display:flex}.dock-leads{flex-direction:column;flex:none;align-items:center;gap:10px;padding-bottom:6px;display:flex}.orb-stat{align-items:center;gap:var(--space-xs);flex-direction:column;flex:none;min-width:72px;display:flex}.orb-icon{width:64px;height:64px;position:relative}.composure-orb .orb-icon{width:56px;height:56px}.composure-orb.bump{animation:.3s bump}.orb-sprite{object-fit:contain;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;display:block}.orb-readout{text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.orb-readout__value{font-variant-numeric:tabular-nums;font-size:18px;font-weight:800;line-height:1}.orb-readout__max{color:var(--muted);font-size:12px;font-weight:700}.orb-readout__label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:8px;font-weight:700}.energy-orb .orb-readout__value{color:var(--energy)}.composure-orb .orb-readout__value{color:var(--composure)}.end-turn{text-align:center;flex:none;align-self:center;min-width:72px;padding:12px 16px;line-height:1.2}.hand{flex:auto;justify-content:center;align-items:flex-end;padding-bottom:6px;display:flex}.card{text-align:left;border:var(--border-w) solid var(--line);transform-origin:bottom;width:132px;height:172px;transform:translateY(var(--ty,0)) rotate(var(--rot,0deg));background:linear-gradient(#222633 0%,#181c26 100%);border-radius:5px;flex-direction:column;gap:4px;margin:0 -12px;padding:10px;transition:transform .13s,border-color .13s;display:flex;position:relative;box-shadow:4px 4px #00000059}.card.effort{border-color:#6a4030;border-top-color:var(--workload)}.card.composure{border-color:#2a5550;border-top-color:var(--composure)}.card.tactic{border-color:#3a3a5a;border-top-color:var(--mind)}.card.curse{border-color:#5a2840;border-top-color:var(--danger)}.card:hover:not(.disabled){transform:translateY(-52px)rotate(0)scale(1.12);box-shadow:0 22px 44px #0009;z-index:60!important}.card.disabled{filter:grayscale(.4)brightness(.8)}.card .cost{color:#1a1404;width:26px;height:26px;image-rendering:pixelated;background:linear-gradient(145deg,#fff0a8 0%,#e8c040 35%,#b8860b 70%,#7a5508 100%);border:2px solid #5a4206;border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid;position:absolute;top:-10px;left:-10px;box-shadow:inset 1px 1px #ffffff73,inset -1px -2px #00000059,2px 2px #00000059}.card .cost.free{color:#0a1a18;background:linear-gradient(145deg,#b8f0e8 0%,#5fc8c0 40%,#2a8880 100%);border-color:#1a5550}.card-name{padding-left:14px;font-size:14px;font-weight:600;line-height:1.2}.card-type{text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-size:9px}.card-text{color:var(--muted);font-size:11px;line-height:1.35}.problem-card,.orb-icon{position:relative}.fx-layer{pointer-events:none;z-index:5;position:absolute;inset:0;overflow:visible}.floater{white-space:nowrap;text-shadow:0 1px 3px #000c;font-size:15px;font-weight:800;animation:.95s ease-out forwards floatUp;position:absolute;top:50%;transform:translate(-50%,-50%)}@keyframes floatUp{0%{opacity:0;top:62%}15%{opacity:1}to{opacity:0;top:-40%}}.floater.workload{color:#f0a070}.floater.workloadUp{color:#ff7a72}.floater.heal{color:#8fe08f}.floater.damage{color:#ff7a72}.floater.shield{color:var(--composure)}.floater.energy{color:var(--energy)}.floater.strike{color:#ff5a4f;letter-spacing:1px;font-size:18px}.problem-card.shake{animation:.32s shake}.problem-card.shake .pixel-meter--hit .pixel-meter__track{border-color:var(--danger);box-shadow:0 0 0 1px #c8504a59}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes strikeFlash{0%,to{background:var(--panel-2)}30%{background:#c8504a73}}.pixel-chip.bump{animation:.3s bump}@keyframes bump{0%,to{transform:scale(1)}40%{transform:scale(1.1)}}.intent-bubble.threat .intent-name{animation:1.8s ease-in-out infinite threatPulse}@keyframes threatPulse{0%,to{text-shadow:0 0 6px #c8504a33}50%{text-shadow:0 0 14px #c8504abf}}.banner-wrap{z-index:100;background:#08090c99;place-items:center;animation:.2s fade;display:grid;position:fixed;inset:0}.banner{width:min(420px,90vw);padding:var(--space-xl);text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:0;animation:.26s cubic-bezier(.2,.9,.3,1.2) pop;box-shadow:8px 8px #00000073}.banner.won{border-color:var(--won)}.banner.lost{border-color:var(--danger)}.banner h2{margin:0 0 8px}.banner p{color:var(--muted);margin:0 0 18px}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:none}}.screen{flex:auto;min-height:0;padding:8px 4px;overflow:auto}.menu-screen{text-align:center}.app--menu .menu-screen{flex-direction:column;flex:auto;width:100%;height:100%;min-height:0;padding:0;display:flex;overflow:hidden}.menu-screen h1{margin:var(--space-lg) 0 var(--space-sm);letter-spacing:.2em;text-transform:uppercase;font-size:28px}.menu-screen--main h1{margin:var(--space-sm) 0 var(--space-xs);font-size:clamp(18px,5.5vw,28px)}.tagline{color:var(--muted);margin:0 auto var(--space-xl);max-width:520px;padding:0 var(--space-lg);letter-spacing:.04em;font-size:10px;line-height:1.6}.menu-screen--main .tagline{margin-bottom:var(--space-md);padding:0 var(--space-sm);font-size:clamp(8px,2.4vw,10px)}.menu-panel{gap:var(--space-lg);flex-direction:column;max-width:440px;margin:0 auto;display:flex}.menu-panel--main{width:min(440px,100%);padding:0 var(--space-sm);gap:0}.menu-actions{gap:var(--space-sm);flex-direction:column;display:flex}.menu-actions .pixel-btn{width:100%}.menu-panel--page{width:min(440px,100%);max-width:440px;min-height:0;padding:max(var(--space-md), env(safe-area-inset-top,0px)) max(var(--space-sm), env(safe-area-inset-right,0px)) max(var(--space-sm), env(safe-area-inset-bottom,0px)) max(var(--space-sm), env(safe-area-inset-left,0px));flex:auto;overflow:hidden}.menu-panel--page>.pixel-panel{flex:auto;min-height:0}.menu-panel--page:not(.menu-panel--collection)>.pixel-panel{-webkit-overflow-scrolling:touch;overflow-y:auto}.menu-back{margin-bottom:var(--space-sm);align-self:flex-start}.collection-section{margin-top:var(--space-md)}.collection-section+.collection-section{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--line)}.collection-heading{margin:0 0 var(--space-sm);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:10px;font-weight:400}.collection-empty{color:var(--muted);margin:0;font-size:10px}.menu-panel--collection{box-sizing:border-box;width:min(520px,100%);max-width:520px}.menu-panel--collection>.pixel-panel{flex-direction:column;display:flex;overflow:hidden}.panel-collection{width:100%;overflow:visible}.collection-scroll{scrollbar-width:thin;scrollbar-color:var(--accent) var(--panel-2);overflow:hidden auto}.collection-scroll--cards{max-height:min(400px,100dvh - 280px);margin:0 -4px 0 -12px;padding:12px 4px 4px 12px}.collection-scroll--artifacts{margin:0;padding:8px 0 12px;overflow:auto hidden}.collection-scroll::-webkit-scrollbar{width:10px;height:10px}.collection-scroll::-webkit-scrollbar-track{background:var(--panel-2);border-left:1px solid var(--line)}.collection-scroll::-webkit-scrollbar-thumb{background:linear-gradient(#d4b45a 0%,#9a7a18 55%,#6a5208 100%);border:2px solid #4a3806;border-radius:0;box-shadow:inset 1px 1px #ffffff40}.collection-scroll::-webkit-scrollbar-thumb:hover{background:linear-gradient(#e8c868 0%,#b89220 55%,#7a6008 100%)}.collection-grid{gap:var(--space-md) var(--space-lg);width:100%;display:grid}.collection-grid--cards{padding:var(--space-md) var(--space-sm) 0;grid-template-columns:repeat(3,132px);justify-content:center}.collection-grid--artifacts{gap:var(--space-lg);flex-flow:row;justify-content:flex-start;width:max-content;display:flex}.collection-scroll--artifacts::-webkit-scrollbar-track{border-left:none;border-top:1px solid var(--line)}@media (width<=460px){.collection-grid--cards{grid-template-columns:repeat(2,132px)}.collection-scroll--cards{max-height:calc(100dvh - 240px)}}.collection-card-wrap{width:132px}.collection-card{text-align:left;cursor:default;border:2px solid var(--line-bright);background:linear-gradient(#222633 0%,#181c26 100%);border-radius:6px;flex-direction:column;gap:6px;width:132px;height:168px;padding:12px 8px 10px;transition:transform .1s,box-shadow .1s;display:flex;position:relative;box-shadow:4px 4px #0006}.collection-card--effort{border-color:#6a4030;border-top-color:var(--workload)}.collection-card--composure{border-color:#2a5550;border-top-color:var(--composure)}.collection-card--tactic{border-color:#3a3a5a;border-top-color:var(--mind)}.collection-card--curse{border-color:#5a2840;border-top-color:var(--danger)}.collection-card-wrap:hover .collection-card{transform:translateY(-3px);box-shadow:6px 6px #0000007a}.collection-card-wrap:hover{z-index:25}.collection-card__cost{z-index:2;color:#1a1404;width:26px;height:26px;image-rendering:pixelated;background:linear-gradient(145deg,#fff0a8 0%,#e8c040 35%,#b8860b 70%,#7a5508 100%);border:2px solid #5a4206;border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid;position:absolute;top:-10px;left:-10px;box-shadow:inset 1px 1px #ffffff73,inset -1px -2px #00000059,2px 2px #00000059}.collection-card__name{word-break:break-word;min-height:26px;padding-left:14px;font-size:10px;line-height:1.25}.collection-card__art{flex:auto;place-items:center;min-height:56px;display:grid}.collection-card__art img{object-fit:contain;width:100%;max-height:72px;image-rendering:pixelated}.collection-card__art-fallback{width:100%;height:56px}.collection-card__text{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:auto;font-size:8px;line-height:1.4;display:-webkit-box;overflow:hidden}.collection-artifact-wrap{position:relative}.artifact-card{align-items:center;gap:var(--space-sm);text-align:center;cursor:default;flex-direction:column;width:104px;display:flex}.artifact-card__frame{background:var(--panel);border:var(--border-w) solid var(--line);border-top-color:var(--money);place-items:center;width:72px;height:72px;display:grid;box-shadow:4px 4px #00000059}.artifact-card__icon{object-fit:contain;width:56px;height:56px;image-rendering:pixelated}.artifact-card__fallback{font-size:28px}.artifact-card__name{text-transform:uppercase;letter-spacing:.06em;font-size:9px;line-height:1.3}.collection-artifact-wrap:hover .artifact-card__frame{transform:translateY(-3px);box-shadow:6px 6px #00000073}.pixel-hover-tip{display:inline-block;position:relative}.pixel-hover-tip--active{z-index:25}.pixel-hover-tip__popup--fixed{z-index:10000;text-align:left;pointer-events:none;width:240px;min-width:210px;max-width:280px;position:fixed;box-shadow:8px 8px #00000080}.pixel-hover-tip__popup--fixed:after{content:"";border:6px solid #0000;position:absolute}.pixel-hover-tip__popup--right:after{border-right-color:var(--line);top:18px;left:-6px}.pixel-hover-tip__popup--left:after{border-left-color:var(--line);top:18px;left:auto;right:-6px}.pixel-hover-tip__popup--top:after{border-top-color:var(--line);top:100%;left:50%;transform:translate(-50%)}.pixel-tooltip__title{color:var(--ink);margin-bottom:4px;font-size:12px;display:block}.pixel-tooltip__meta{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:var(--space-sm);font-size:9px;display:block}.pixel-tooltip__body{color:var(--muted);margin:0;font-size:10px;line-height:1.55}.pixel-tooltip__tags{margin-top:var(--space-sm);flex-wrap:wrap;gap:6px;display:flex}.pixel-tooltip__tag{text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--line);color:var(--danger);background:#c8504a1f;padding:2px 6px;font-size:8px}.savings-val{color:var(--money);letter-spacing:.08em;font-size:28px}.menu-logo{object-fit:contain;width:clamp(80px,24vw,144px);height:clamp(80px,24vw,144px);margin:0 auto var(--space-sm);image-rendering:pixelated;filter:drop-shadow(0 6px 16px #000000a6);display:block}.upgrade-tree h3,.collection h3{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin:0 0 10px;font-size:14px}.upgrade-card{text-align:left;flex-direction:column;gap:4px;display:flex}.upgrade-card.owned{opacity:.7}.upgrade-desc{color:var(--muted);font-size:12px}.owned-badge{color:var(--won);text-transform:uppercase;font-size:11px}.map-screen{flex-direction:column;flex:auto;align-self:stretch;width:100%;min-height:0;display:flex;overflow:hidden}.map-panel{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.map-panel>.pixel-section-header,.map-panel>.map-hint{flex-shrink:0}.map-hint{color:var(--muted);margin:0 0 var(--space-md);letter-spacing:.04em;font-size:11px}.map-board{min-height:0;padding:var(--space-xl) var(--space-md);background-color:var(--panel-2);border:1px solid var(--line);scrollbar-width:thin;scrollbar-color:var(--accent) var(--panel-3);background-image:radial-gradient(at 50% 0,#c9a2270f,#0000 55%),repeating-linear-gradient(0deg,#0000,#0000 31px,#2e334438 31px 32px);flex:auto;overflow:auto;box-shadow:inset 0 2px 16px #00000059}.map-board::-webkit-scrollbar{width:10px;height:10px}.map-board::-webkit-scrollbar-track{background:var(--panel-3);border-left:1px solid var(--line)}.map-board::-webkit-scrollbar-thumb{background:linear-gradient(#d4b45a 0%,#9a7a18 55%,#6a5208 100%);border:2px solid #4a3806;box-shadow:inset 1px 1px #ffffff40}.map-graph{margin:0 auto;position:relative}.map-graph svg{pointer-events:none;position:absolute;inset:0}.map-edge{stroke:var(--line-bright);stroke-width:2px;stroke-dasharray:5 4}.map-edge.edge-active{stroke:var(--accent);stroke-width:2.5px;stroke-dasharray:none}.map-edge.edge-done{stroke:var(--line);opacity:.45}.map-node{--note-tilt:0deg;width:88px;height:96px;font:inherit;text-transform:uppercase;letter-spacing:.08em;transform:translate(-50%, -50%) rotate(var(--note-tilt));z-index:1;color:var(--text);cursor:default;box-shadow:none;background:0 0;border:none;border-radius:0;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;padding:0 4px 2px;font-size:8px;transition:transform .12s,filter .12s;display:flex;position:absolute}.map-node:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(#00000073 0%,#0000 72%);border-radius:50%;width:56px;height:10px;margin-left:-28px;position:absolute;bottom:14px;left:50%}.map-node:after{content:"";background:var(--accent);opacity:0;pointer-events:none;z-index:2;border-radius:50%;width:8px;height:8px;margin-left:-4px;position:absolute;top:2px;left:50%;box-shadow:0 0 6px #c9a2278c}.map-node.type-work .node-type{color:#c9b84a}.map-node.type-home .node-type{color:#6fae6f}.map-node.type-shop .node-type{color:#d4b45a}.map-node.type-mystery .node-type{color:#9b8fd4}.map-node.type-treasure .node-type{color:#e8c547}.map-node.type-boss{width:120px;height:112px;padding-bottom:4px}.map-node.type-boss .node-type{color:#8a7ab8e6}.map-node:disabled:not(.cleared){filter:grayscale(.35)saturate(.45)brightness(.82)}.map-node.cleared{filter:grayscale(.55)saturate(.3)brightness(.75)}.map-node.current:not(.cleared):after{opacity:1}.map-node.current:not(.cleared){filter:drop-shadow(0 0 8px #5f85d473);z-index:2}.map-node.reachable:not(:disabled){cursor:pointer;filter:brightness(1.05)}.map-node.reachable:not(:disabled):hover{transform:translate(-50%, calc(-50% - 4px)) rotate(var(--note-tilt));filter:brightness(1.12)drop-shadow(0 6px 14px #00000080)}.map-node.reachable:not(:disabled):focus-visible{outline:2px solid var(--mind);outline-offset:2px}.map-node .node-type{z-index:1;color:var(--muted);text-shadow:0 1px 2px #0009;font-size:7px;position:relative}.node-icon{font-size:28px}.reward-screen,.home-screen,.npc-screen,.shop-screen,.payday-screen,.resolution-screen{max-width:520px;margin:0 auto}.reward-options{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.reward-card{flex-direction:column;justify-content:center;align-items:center;gap:8px;width:140px;height:120px;display:flex}.reward-kind{text-transform:uppercase;color:var(--muted);font-size:10px}.home-choices,.payday-choices{flex-direction:column;gap:10px;display:flex}.dice-result{gap:var(--space-md);flex-direction:column;display:flex}.dice-result .success{color:var(--won)}.dice-result .fail{color:var(--danger)}.shop-stock{flex-direction:column;gap:8px;margin:16px 0;display:flex}.shop-item{text-align:left;justify-content:space-between;display:flex}.payday-sub{color:var(--muted)}.payday-lines{flex-direction:column;gap:6px;margin:16px 0;display:flex}.payday-line{padding:var(--space-sm) var(--space-md);background:var(--panel-2);border:1px solid var(--line);justify-content:space-between;display:flex}.payday-line.hidden{opacity:.4}.payday-line .income{color:var(--won)}.payday-line .expense{color:var(--danger)}.savings-earned{color:var(--money);font-size:1.4rem;font-weight:700}.phase-tag{color:var(--muted);margin-bottom:8px;font-size:11px}.card-art,.problem-portrait,.player-portrait,.orb-sprite,.node-img,.menu-logo{image-rendering:pixelated}.card-art{object-fit:contain;width:100%;height:64px;margin:2px 0}.problem-portrait{object-fit:contain;filter:drop-shadow(0 8px 18px #0000008c);width:152px;height:152px;margin:6px 0;transform:scaleX(-1)}.node-img{z-index:1;object-fit:contain;filter:drop-shadow(0 4px 8px #00000073);width:64px;height:64px;position:relative}.map-node.type-boss .node-img{width:96px;height:96px}.battlefield.has-bg{image-rendering:pixelated;background-position:50%;background-size:cover;transition:filter .4s}.battlefield__overlay,.battlefield__vignette{pointer-events:none;z-index:0;position:absolute;inset:0}.battlefield__overlay{transition:opacity .4s,background .4s}.battlefield.has-bg.tier-0 .battlefield__overlay{background:radial-gradient(120% 90% at 50% 30%,#08090c33,#08090c8c)}.battlefield.tier-1 .battlefield__overlay{background:radial-gradient(120% 90% at 50% 30%,#08090c47,#08090ca6),#0c0e1414}.battlefield.has-bg.tier-1{filter:saturate(.92)}.battlefield.tier-2 .battlefield__overlay{background:repeating-linear-gradient(0deg,#0000,#0000 2px,#0000000f 2px 4px),radial-gradient(120% 90% at 50% 30%,#08090c59,#08090cb8),#283c1e1a}.battlefield.has-bg.tier-2{filter:saturate(.85)hue-rotate(-6deg)}.battlefield.tier-3 .battlefield__overlay{background:radial-gradient(120% 90% at 50% 30%,#08090c6b,#08090cd1),radial-gradient(80% 60% at 50% 100%,#a8246b2e,#0000 70%),radial-gradient(60% 50% at 0%,#a8246b1f,#0000 60%),radial-gradient(60% 50% at 100%,#a8246b1f,#0000 60%)}.battlefield.has-bg.tier-3{filter:saturate(.78)hue-rotate(-12deg)}.battlefield.tier-4 .battlefield__overlay{background:radial-gradient(120% 90% at 50% 30%,#08090c80,#08090ce0),radial-gradient(90% 70% at 50% 100%,#a8246b47,#0000 65%),radial-gradient(70% 55% at 0 40%,#a8246b33,#0000 55%),radial-gradient(70% 55% at 100% 40%,#a8246b33,#0000 55%);animation:3s ease-in-out infinite corruptionPulse}.battlefield.has-bg.tier-4{filter:saturate(.65)hue-rotate(-18deg)}@keyframes corruptionPulse{0%,to{opacity:.88}50%{opacity:1}}.battlefield__vignette{image-rendering:pixelated;mix-blend-mode:multiply;background-position:0 0;background-repeat:no-repeat;background-size:1200% 100%;transition:opacity .4s;animation:4s steps(12,end) infinite despairVignette}.battlefield.tier-2 .battlefield__vignette{opacity:.35}.battlefield.tier-3 .battlefield__vignette{opacity:.6}.battlefield.tier-4 .battlefield__vignette{opacity:.85}@keyframes despairVignette{0%{background-position:0 0}to{background-position:100% 0}}.battlefield.has-bg>:not(.player-slot):not(.battle-banner):not(.battlefield__overlay):not(.battlefield__vignette){z-index:1;position:relative}.battlefield.has-bg>.player-slot,.battlefield.has-bg>.battle-banner{z-index:2;position:absolute}.menu-screen.has-bg{image-rendering:pixelated;background-position:50%;background-repeat:no-repeat;background-size:cover}.app--menu .menu-screen.has-bg{flex-direction:column;justify-content:center;align-items:center;padding:0;display:flex}.app--menu .menu-screen--page.has-bg{justify-content:flex-start}.app--menu .menu-screen--main.has-bg{padding:max(var(--space-md), env(safe-area-inset-top,0px)) max(var(--space-sm), env(safe-area-inset-right,0px)) max(var(--space-md), env(safe-area-inset-bottom,0px)) max(var(--space-sm), env(safe-area-inset-left,0px));justify-content:center;gap:0}@media (height<=640px){.menu-screen--main .menu-logo{width:clamp(64px,18vw,96px);height:clamp(64px,18vw,96px);margin-bottom:var(--space-xs)}.menu-screen--main h1{margin:var(--space-xs) 0;font-size:20px}.menu-screen--main .tagline{margin-bottom:var(--space-sm);line-height:1.4}.app--menu .menu-screen--main.has-bg{padding-top:max(var(--space-sm), env(safe-area-inset-top,0px));padding-bottom:max(var(--space-sm), env(safe-area-inset-bottom,0px))}.menu-actions.pixel-panel--padded{padding:var(--space-sm) var(--space-md)}}.menu-screen.has-bg:before{content:"";pointer-events:none;background:linear-gradient(#0a0b0e99,#0a0b0ee0);position:absolute;inset:0}.menu-screen{position:relative}.menu-screen>*{z-index:1;position:relative}.screen-content{max-width:560px;margin:0 auto}.upgrade-list,.class-list{gap:var(--space-sm);flex-direction:column;display:flex}.class-card{gap:var(--space-sm);text-align:center;flex-direction:column;display:flex}.class-portrait{object-fit:contain;width:96px;height:96px;image-rendering:pixelated;margin:0 auto}.npc-portrait{object-fit:contain;width:96px;height:96px;image-rendering:pixelated;filter:drop-shadow(0 4px 8px #00000073);margin:0 auto 12px}.class-fantasy{color:var(--muted);font-size:10px;line-height:1.5}.class-signature{color:var(--accent);font-size:9px;line-height:1.4}.shop-stock .pixel-btn,.home-choices .pixel-btn,.payday-choices .pixel-btn{text-align:left;width:100%}.shop-item.pixel-btn{justify-content:space-between;align-items:center;display:flex}.reward-card.pixel-btn{gap:var(--space-sm);flex-direction:column;justify-content:center;align-items:center;width:140px;height:120px;display:flex}.login-screen .tagline{margin-bottom:var(--space-lg)}.login-panel{width:min(100%,360px)}.login-form{gap:var(--space-md);flex-direction:column;display:flex}.login-label{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:10px}.login-input{border:var(--border-w) solid var(--line);background:var(--bg);width:100%;color:var(--ink);font:inherit;outline:none;padding:10px 12px}.login-input:focus{border-color:var(--accent)}.login-input--code{letter-spacing:.35em;text-align:center;color:var(--money);font-size:24px}.login-hint{color:var(--muted);margin:0;font-size:11px}.login-email-display{color:var(--ink)}.login-sent{color:var(--won);margin:0;font-size:11px}.login-error{margin:var(--space-md) 0 0;color:var(--danger);font-size:11px}.auth-loading{justify-content:center;align-items:center;display:flex}.auth-loading__text{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.menu-account{margin-top:var(--space-md);gap:var(--space-md);flex-direction:column;align-items:stretch;display:flex}.menu-logout{align-self:flex-start}
