@import "https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap";:root{--game-font:"Press Start 2P", monospace;--game-font-ui:system-ui, "Segoe UI", sans-serif;--snes-bg:#0c0814;--snes-panel:#181028;--snes-panel-light:#241838;--snes-border:#484858;--snes-border-light:#787898;--snes-gold:#e8c830;--snes-gold-dark:#a88818;--snes-text:#f0e8d8;--snes-text-dim:#988878;--snes-hp:#58c858;--snes-mp:#6898e8;--snes-danger:#e85858}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;color:var(--snes-text);font-family:var(--game-font-ui);-webkit-font-smoothing:none;-moz-osx-font-smoothing:auto;background:#080510;margin:0;font-size:14px;line-height:1.45}#root{min-height:100vh}button{cursor:pointer;font-family:inherit}.game-window{background:var(--snes-panel);border:3px solid var(--snes-border);box-shadow:inset 0 0 0 1px var(--snes-border-light), inset 3px 3px 0 #00000059}.game-window-title{border-bottom:2px solid var(--snes-border);font-family:var(--game-font);color:var(--snes-gold);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .35rem;padding-bottom:.25rem;font-size:10px}.game-btn{text-align:left;width:100%;color:var(--snes-text);background:var(--snes-panel-light);border:2px solid var(--snes-border);padding:.5rem .55rem;font-size:.88rem;display:block;box-shadow:inset 0 -2px #00000040}.game-btn:hover:not(:disabled){border-color:var(--snes-gold-dark);background:#302048}.game-btn:active:not(:disabled){box-shadow:none;transform:translateY(1px)}.game-btn:disabled{opacity:.45;cursor:not-allowed}.game-btn--gold{border-color:var(--snes-gold-dark);color:var(--snes-gold)}.game-overlay{z-index:40;background:#040208e0;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#root{width:100%;min-height:100vh}.combat-overlay{z-index:45;background:#040208eb;justify-content:center;align-items:stretch;display:flex;position:absolute;inset:0}.combat-screen{background:var(--snes-panel);border:none;border-left:3px solid var(--snes-border);border-right:3px solid var(--snes-border);width:100%;height:100%;color:var(--snes-text);border-radius:0;flex-direction:column;padding:.5rem .65rem;display:flex;overflow:hidden}.combat-screen--pov{width:100%}.combat-layout-grid{flex:1;width:100%;min-height:0;margin:.25rem 0 0}.combat-layout-grid .ui-layout-block{min-height:0;overflow:auto}.combat-layout-grid .ui-layout-block--combatPovHost .combat-pov{height:100%}.combat-layout-grid .ui-layout-block--combatLog .combat-log{max-height:100%;overflow-y:auto}.combat-header{border-bottom:2px solid var(--snes-border);justify-content:space-between;align-items:baseline;margin-bottom:.5rem;padding-bottom:.35rem;display:flex}.combat-header h2{font-family:var(--game-font);color:var(--snes-gold);letter-spacing:.04em;margin:0;font-size:11px}.combat-round{font-family:var(--game-font);color:var(--snes-text-dim);font-size:9px}.combat-action-feedback{font-family:var(--game-font);color:var(--snes-text-dim);background:var(--snes-panel-light);border:1px solid var(--snes-border);margin:0 0 .4rem;padding:.25rem .4rem;font-size:9px}.combat-action-feedback.hit{color:#b8e0a8}.combat-action-feedback.miss{color:#e0a8a8}.combat-pov{margin-bottom:.35rem}.combat-pov-scene-wrap{position:relative}.combat-pov-scene{aspect-ratio:640/360;border:2px solid var(--snes-border);background-color:#080510;border-radius:0;min-height:0;position:relative;overflow:hidden}.combat-pov-scene.pixi{background-image:none!important}.combat-pixi-host{width:100%;height:100%}.combat-pixi-host canvas{width:100%;height:100%;image-rendering:pixelated;object-fit:contain;display:block}.combat-pixi-debug{font-family:var(--game-font);border:1px solid var(--snes-border);background:#080510bf;border-radius:0;padding:2px 4px;font-size:8px;position:absolute;top:6px;left:6px}.combat-pov-fallback{padding:.5rem;font-size:.75rem}.combat-trait-badges{z-index:2;flex-wrap:wrap;gap:.2rem;max-width:55%;display:flex;position:absolute;top:6px;right:6px}.combat-trait-badge{font-family:var(--game-font);border:1px solid var(--snes-border-light);background:#080510cc;border-radius:0;padding:2px 4px;font-size:8px}.combat-pov-enemies{z-index:2;flex-wrap:wrap;justify-content:center;gap:.35rem;max-width:92%;display:flex;position:absolute;bottom:12%;left:50%;transform:translate(-50%)}.combat-pov-enemy{border:2px solid var(--snes-danger);text-align:center;background:#080510d9;border-radius:0;min-width:100px;padding:.25rem .4rem;font-size:.7rem}.combat-pov-enemy.dead{opacity:.35}.combat-pov-enemy strong{margin-bottom:.15rem;font-size:.68rem;display:block}.combat-pov-hp{opacity:.85;margin-top:.1rem;font-size:.65rem;display:block}.combat-statuses{flex-wrap:wrap;justify-content:center;gap:.15rem;margin-top:.18rem;display:flex}.combat-status-badge{font-family:var(--game-font);border:1px solid var(--snes-border-light);color:var(--snes-text-dim);background:#080510d9;padding:1px 3px;font-size:8px}.combat-status-badge.enemy{border-color:var(--snes-danger);color:#f1c2c2}.combat-wall-meta{opacity:.7;text-align:center;margin:0 0 .4rem;font-size:.68rem}.combat-resource-hud{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem;margin-bottom:.5rem;display:grid}.resource-bar-head{font-family:var(--game-font);justify-content:space-between;margin-bottom:.15rem;font-size:9px;display:flex}.resource-bar-label{color:var(--snes-gold)}.resource-bar-values{color:var(--snes-text-dim)}.combat-hp-fill.mp-fill{background:var(--snes-mp)}.combat-hp-fill.ap-fill{background:var(--snes-gold)}.combat-status-tray{flex-wrap:wrap;gap:.25rem;margin-bottom:.4rem;display:flex}.combat-status-badge--cd{border-color:var(--snes-gold-dark);color:var(--snes-gold)}.combat-command-menu{margin-top:.5rem}.combat-command-menu .game-btn{margin-bottom:.25rem}.combat-menu-back{color:var(--snes-text-dim)!important;margin-bottom:.35rem!important}.combat-end-turn{margin-top:.35rem;border-color:var(--snes-border-light)!important}.combat-pov-enemy--targetable{cursor:crosshair;outline:2px dashed var(--snes-gold)}.combat-pov-enemy{text-align:left;color:inherit;background:0 0;border:none;padding:.25rem}.combat-party-strip{margin-bottom:.4rem}.combat-unit.compact{background:var(--snes-panel-light);border:2px solid var(--snes-border);border-radius:0;margin-bottom:.25rem;padding:.25rem .4rem}.combat-unit.dead{opacity:.35}.combat-unit-head{justify-content:space-between;margin-bottom:.15rem;font-size:.75rem;display:flex}.combat-unit-sub{color:var(--snes-text-dim);margin-bottom:.15rem;font-size:.65rem}.combat-hp-bar{border:1px solid var(--snes-border);background:#0c0814;height:5px;overflow:hidden}.combat-hp-fill{height:100%;transition:width .2s}.combat-hp-fill.party-fill{background:var(--snes-hp)}.combat-hp-fill.enemy-fill{background:var(--snes-danger)}.combat-log{opacity:.9;max-height:72px;margin:0 0 .5rem;padding-left:1rem;font-size:.72rem;overflow-y:auto}.combat-actions{flex-wrap:wrap;gap:.35rem;display:flex}.combat-action-row{flex:100%;gap:.2rem;display:flex}.combat-actions>button{border:2px solid var(--snes-gold-dark);background:var(--snes-panel-light);color:var(--snes-text);cursor:pointer;border-radius:0;flex:45%;padding:.45rem;font-size:.75rem;box-shadow:inset 0 -2px #00000040}.combat-action-row>button:first-child{flex:auto}.combat-order-btn{flex:none;width:1.8rem;padding:.25rem 0}.combat-actions>button.ghost{border-color:var(--snes-border);background:0 0}.combat-actions>button:disabled{opacity:.4;cursor:not-allowed}.combat-dodge-group{flex-direction:column;flex:100%;gap:.2rem;display:flex}.combat-dodge-label{font-family:var(--game-font);color:var(--snes-text-dim);font-size:9px}.combat-dodge-buttons{gap:.35rem;display:flex}.combat-dodge-btn{border:2px solid var(--snes-gold-dark);background:var(--snes-panel-light);color:var(--snes-gold);cursor:pointer;border-radius:0;flex:45%;padding:.45rem;font-size:.75rem;box-shadow:inset 0 -2px #00000040}.combat-dodge-btn:hover:not(:disabled){background:var(--snes-panel)}.combat-items{flex-wrap:wrap;flex:100%;gap:.25rem;display:flex}.combat-items button{color:inherit;cursor:pointer;background:#102010;border:2px solid #386838;border-radius:0;flex:auto;padding:.3rem .4rem;font-size:.68rem}.combat-wait{text-align:center;font-family:var(--game-font);color:var(--snes-gold);margin:.35rem 0;font-size:9px;animation:.8s step-end infinite combat-blink}@keyframes combat-blink{50%{opacity:.4}}.combat-result{text-align:center;border-top:2px solid var(--snes-border);padding-top:.35rem}.combat-result-title{font-family:var(--game-font);color:var(--snes-gold);margin:0 0 .4rem;font-size:9px;font-weight:400}.combat-result-title.defeat{color:var(--snes-danger)}.combat-result ul{margin:0 0 .5rem;padding:0;font-size:.78rem;list-style:none}.combat-muted{opacity:.6;font-size:.75rem}.combat-result>button{border:2px solid var(--snes-gold-dark);background:var(--snes-panel-light);color:var(--snes-gold);cursor:pointer;font-family:var(--game-font);border-radius:0;padding:.45rem 1rem;font-size:9px}.world-map-prototype{height:100%;color:var(--snes-text);flex-direction:column;font-size:.82rem;display:flex;position:relative}.game-title-bar{border-bottom:3px solid var(--snes-border);background:linear-gradient(#201830 0%,#140c20 100%);justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem .5rem;display:flex}.game-title-bar__floor{font-family:var(--game-font);color:var(--snes-gold);letter-spacing:.05em;font-size:11px}.game-title-bar__reset{width:auto;font-family:var(--game-font);padding:.35rem .55rem;font-size:9px}.game-status-bar{background:var(--snes-panel);border-bottom:2px solid var(--snes-border);font-family:var(--game-font);flex-wrap:wrap;align-items:center;gap:.65rem 1rem;padding:.4rem .65rem;font-size:9px;line-height:1.6;display:flex}.game-status-name{color:var(--snes-gold)}.game-status-hp{color:var(--snes-hp)}.game-status-mp{color:var(--snes-mp)}.game-status-loc{color:var(--snes-text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:220px;margin-left:auto;overflow:hidden}.game-stage{border-bottom:3px solid var(--snes-border);background:#100818;flex:1;min-height:0;padding:4px}.wmp-svg{width:100%;height:100%;display:block}.game-hud{background:#0c0814;grid-template-columns:1.2fr 1fr .9fr;gap:4px;height:148px;min-height:148px;padding:4px;display:grid}.game-window{flex-direction:column;padding:.35rem .45rem;display:flex;overflow:hidden}.game-window--log .wmp-log{flex:1;margin:0;padding-left:1rem;font-size:.72rem;line-height:1.35;overflow-y:auto}.game-window--menu .wmp-neighbors,.game-window--menu .wmp-craft-list,.game-window--bag .wmp-inventory{flex:1;overflow-y:auto}.game-hint{font-family:var(--game-font);color:var(--snes-text-dim);border-top:2px solid var(--snes-border);letter-spacing:.04em;background:#080510;margin:0;padding:.2rem .5rem;font-size:8px}.wmp-edge{stroke:#383048;stroke-width:2px}.wmp-edge-active{stroke:var(--snes-gold);stroke-width:3px;stroke-dasharray:6 4;animation:.35s linear infinite wmp-edge-march}@keyframes wmp-edge-march{to{stroke-dashoffset:-10px}}.wmp-player{pointer-events:none}.wmp-player-shadow{fill:#00000073}.wmp-player-body{fill:#5088c8;stroke:#183058;stroke-width:1.5px}.wmp-player-head{fill:#e8c0a0;stroke:#584030;stroke-width:1px}.wmp-player.moving .wmp-player-sprite{animation:.28s ease-in-out infinite alternate wmp-player-bob}@keyframes wmp-player-bob{0%{transform:translateY(0)}to{transform:translateY(-3px)}}.wmp-hotkey{border:2px solid var(--snes-border);min-width:1rem;height:1rem;font-family:var(--game-font);color:var(--snes-gold);vertical-align:middle;background:#0c0814;justify-content:center;align-items:center;margin-right:.35rem;font-size:8px;display:inline-flex}.wmp-node-rect{fill:#201830;stroke:#484858;stroke-width:2px}.wmp-node-rect.travel{stroke:var(--snes-gold-dark)}.wmp-node-rect.current{fill:#302048;stroke:var(--snes-gold);stroke-width:2px}.map-node.kind-randomRoom .wmp-node-rect{stroke-dasharray:4 2;stroke:#68a888}.wmp-node-label{fill:var(--snes-text);font-size:10px;font-family:var(--game-font);pointer-events:none}.wmp-neighbors{margin:0;padding:0;list-style:none}.wmp-neighbors li{margin-bottom:.25rem}.wmp-log li{margin-bottom:.2rem}.wmp-log li[data-tone=encounter]{color:#f0a060}.wmp-log li[data-tone=discovery]{color:#68c898}.wmp-log li[data-tone=room]{color:#88b8f0}.wmp-log li[data-tone=event]{color:#c898f0}.wmp-log li[data-tone=loot]{color:var(--snes-gold)}.wmp-muted{opacity:.55;margin:0;font-size:.75rem}.wmp-inventory,.wmp-craft-list{margin:0;padding:0;font-size:.72rem;list-style:none}.wmp-inventory li,.wmp-craft-list li{margin-bottom:.15rem}.wmp-craft-list button{font-size:.7rem}.wmp-loadout{border-top:2px solid var(--snes-border);margin-top:.35rem;padding-top:.3rem;font-size:.67rem}.wmp-loadout-title{color:var(--snes-gold);margin:0 0 .2rem}.wmp-loadout-recommend{color:var(--snes-text-dim);margin:0 0 .22rem;font-size:.62rem}.wmp-loadout-recommend strong{color:var(--snes-gold)}.wmp-loadout-presets{gap:.2rem;margin-bottom:.22rem;display:flex}.wmp-loadout-presets .game-btn{flex:1;padding:.12rem .2rem;font-size:.58rem}.wmp-loadout-group{margin-bottom:.2rem}.wmp-loadout-sub{opacity:.8;margin-bottom:.1rem;display:block}.wmp-loadout-list{margin:0;padding:0;list-style:none}.wmp-loadout-list li{align-items:center;gap:.12rem;margin-bottom:.12rem;display:flex}.wmp-loadout-list select{color:var(--snes-text);border:2px solid var(--snes-border);background:#140f24;flex:1;padding:.05rem .1rem;font-size:.64rem}.wmp-loadout-move{width:1.2rem;min-height:1rem;padding:0;font-size:.5rem}.map-node.special .wmp-node-rect{stroke:#a878d8}.wmp-event-card{width:92%;max-width:420px}.wmp-event-text{white-space:pre-wrap;max-height:160px;font-size:.85rem;line-height:1.5;overflow-y:auto}.wmp-event-choices{flex-direction:column}.wmp-event-choices button{flex:unset;width:100%}.wmp-encounter-card{background:var(--snes-panel);border:3px solid var(--snes-border);box-shadow:inset 0 0 0 1px var(--snes-border-light), 0 8px 0 #0006;padding:.75rem 1rem}.wmp-encounter-card h2{font-family:var(--game-font);color:var(--snes-gold);margin:0 0 .5rem;font-size:9px}.wmp-actions{flex-direction:column;gap:.35rem;margin-top:.75rem;display:flex}.wmp-actions button{flex:1}.wmp-layout-grid{flex:1;width:100%;min-height:0;margin:0}.wmp-layout-grid .ui-layout-block{min-height:0;overflow:auto}.wmp-layout-grid .ui-layout-block--gameWindow .game-stage{height:100%}.wmp-layout-grid .ui-layout-block--gameWindow .wmp-svg{width:100%;height:auto;max-height:100%}.game-page{background:radial-gradient(at 50% 0,#2a1848 0%,#0000 55%),linear-gradient(#120a1e 0%,#080510 100%);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.game-shell{transform:scale(min(calc((100vw - 2rem) / var(--game-w)), calc((100vh - 2rem) / var(--game-h))));transform-origin:50%;background:linear-gradient(#3a3a48 0%,#222228 100%);border:4px solid #101018;border-radius:4px;padding:12px;position:relative;box-shadow:0 0 0 2px #6a6a78,0 0 0 6px #101018,0 24px 48px #0000008c,inset 0 1px #ffffff1f}.game-shell-label{font-family:var(--game-font);letter-spacing:.12em;color:#c8b878;white-space:nowrap;background:#222228;border:2px solid #101018;padding:0 10px;font-size:10px;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.game-viewport{width:var(--game-w);height:var(--game-h);image-rendering:pixelated;background:#0c0814;border:3px solid #101018;font-size:16px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #484858}.game-viewport:after{content:"";pointer-events:none;opacity:.35;z-index:50;background:repeating-linear-gradient(0deg,#0000000f 0 1px,#0000 1px 3px);position:absolute;inset:0}.app-shell{background:#12100e;min-height:100vh}.catalog-error-screen{color:#e8e4dc;background:#1a1610;border:1px solid #8b6914;border-radius:8px;max-width:720px;margin:2rem auto;padding:1.5rem}.catalog-error-screen pre{background:#0f0d0a;border-radius:4px;max-height:240px;padding:.75rem;font-size:.75rem;overflow:auto}.catalog-error-hint{opacity:.8;font-size:.85rem}
