:root{color:#e7eaf0;font-synthesis:none;text-rendering:optimizelegibility;--font-display:"Barlow Condensed", "Arial Narrow", sans-serif;--font-ui:"IBM Plex Sans", system-ui, sans-serif;--font-numeric:"IBM Plex Mono", ui-monospace, monospace;--text-xs:.6875rem;--text-sm:.8125rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:clamp(3.25rem, 5vw, 5.8rem);--leading-tight:1.05;--leading-ui:1.4;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--neutral-950:#07111d;--neutral-900:#0a1725;--neutral-850:#102135;--neutral-800:#162a40;--neutral-700:#2a4158;--neutral-500:#6f849b;--neutral-300:#b8c8dc;--neutral-100:#e7f0ff;--chrome:#081422f0;--surface-info:#0f2337e0;--surface-focus:#184269eb;--action-primary:#4c9cff;--action-primary-hover:#75b5ff;--action-primary-pressed:#2c7fdf;--status-info:#74a9ff;--status-success:#50d3a0;--status-warning:#f2bf69;--status-danger:#e56f7d;--status-disabled:#5f6e7e;--mood-violet:#8584d9;--mood-coral:#e38a68;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--radius-sm:4px;--radius-md:8px;--radius-lg:14px;--border-subtle:1px solid #aacdf12e;--border-focus:1px solid #68acffb8;--shadow-low:0 10px 28px #00050c47;--shadow-focus:0 0 0 1px #69b2ff73, 0 14px 42px #000b1b61;--safe-inline:clamp(20px, 2.4vw, 48px);--control-min:44px;background:#171b22;font-family:system-ui,sans-serif;line-height:1.6}*{box-sizing:border-box}body{min-width:280px;margin:0}main{max-width:760px;margin:0 auto;padding:48px 24px}h1,h2{line-height:1.25}h1{margin:8px 0 16px;font-size:2.5rem}h2{margin:0 0 12px;font-size:1.2rem}p{margin:0}.eyebrow{color:#b7c9e5}section{border-top:1px solid #454e5d;padding:24px 0}button,select{font:inherit;margin:12px 8px 12px 0;padding:8px 12px}button{cursor:pointer;color:#171b22;background:#dce8fa;border:1px solid #b7c9e5;border-radius:4px}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-offset:3px;outline:3px solid #ffce73}fieldset{border:1px solid #454e5d;margin:16px 0}.equipment-option{padding:6px 0;display:block}input[type=checkbox]{margin-right:12px}select{margin-left:12px}.validation{color:#ffce73}pre{background:#101319;max-width:100%;padding:12px;overflow:auto}footer{padding:24px 0}main{max-width:960px;padding:24px}header{margin-bottom:16px}header h1{margin:4px 0;font-size:1.6rem}details>summary{cursor:pointer;color:#b7c9e5;padding:8px 0}.active-shell{max-width:none;padding:0}.game-surface{background:#10171c;grid-template-rows:auto minmax(0,1fr);gap:12px;width:100%;height:100dvh;padding:16px 24px;line-height:1.4;display:grid;overflow:hidden}.game-surface section{border:0;padding:0}.game-surface h2{margin:0;font-size:1.12rem}.game-surface h3{margin:0 0 10px;font-size:1rem}.game-surface button,.game-surface select{color:#e7ede7;background:#26383f;border:1px solid #617776;border-radius:4px;margin:0;padding:8px 12px;font-size:.9rem}.game-surface button[aria-pressed=true],.game-surface button[aria-expanded=true]{color:#f5cf78;background:#35413c;border-color:#f5cf78}.game-surface button.confirm-action{color:#172127;background:#f5cf78;font-weight:700}.game-surface small{color:#b4c3c9;font-size:.8rem}.game-hud{gap:8px;display:grid}.party-hud{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.party-hud>div{background:#202b30;border:1px solid #46565d;grid-template-columns:auto 1fr;gap:4px 12px;padding:10px 14px;display:grid}.party-hud span{text-align:right;color:#d2dedb;font-size:.9rem}.party-hud meter{accent-color:#97c4aa;grid-column:1/-1;width:100%;height:8px}.resource-hud{color:#bdc9c8;gap:28px;font-size:.9rem;display:flex}.resource-hud strong{color:#f5cf78}.exploration-screen{min-width:0;min-height:0;position:relative}.game-surface .dungeon-stage{border:1px solid #435158;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;height:100%;padding:12px 16px;display:grid}.map-heading,.overlay-heading,.battle-heading,.ctb-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.map-heading nav,.travel-controls{align-items:center;gap:8px;display:flex}.map-space{justify-content:center;min-width:0;min-height:0;display:flex}.dungeon-map{background:#080c10;width:100%;height:100%;display:block}.exploration-bottom{justify-content:space-between;align-items:center;gap:12px;display:flex}.map-legend{color:#a6b3b8;font-size:.78rem}.dungeon-stage [role=status]{color:#f5cf78;margin-top:4px;font-size:.85rem}.inspection-panel{z-index:3;background:#202b32;border:1px solid #80958f;flex-direction:column;width:40%;min-width:430px;display:flex;position:absolute;top:12px;bottom:12px;right:12px;box-shadow:0 12px 40px #0009}.overlay-heading{border-bottom:1px solid #526269;flex:none;padding:16px}.overlay-heading>strong{text-transform:capitalize}.panel-scroll,.loot-scroll{overscroll-behavior:contain;min-height:0;padding:16px;overflow-y:auto}.panel-scroll p{margin:12px 0}.panel-scroll ul{padding:0;list-style:none}.panel-scroll li{border-top:1px solid #4a5a61;padding:12px 0}.panel-scroll li button{margin:8px 8px 0 0}.reassessment-party>div{border-bottom:1px solid #4a5a61;padding:10px 0}.reassessment-party label{margin-top:6px;display:block}.reassessment-party select{margin-left:8px}.game-surface .loot-overlay{z-index:2;background:#202b32;border:1px solid #ab9b72;flex-direction:column;display:flex;position:absolute;inset:30px 5%;box-shadow:0 0 0 200vmax #060b1070}.loot-overlay .overlay-heading p{color:#d6dbc6;margin-top:8px;font-size:.9rem}.loot-scroll{flex:1}.loot-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.loot-cards>li{background:#172229;border:1px solid #4d6268;flex-direction:column;gap:16px;padding:16px;display:flex}.item-summary{gap:6px;font-size:.9rem;display:grid}.item-summary>strong{color:#f3e3b4;font-size:1.12rem}.unsecured{color:#f5cf78}.pickup-preview{background:#2b3b3c;gap:4px;padding:12px;font-size:.9rem;display:grid}.loot-actions{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.overlay-footer{border-top:1px solid #526269;flex:none;justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;font-size:.85rem;display:flex}.exploration-screen:has(.inspection-panel) .loot-overlay{left:12px;right:calc(40% + 24px)}.exploration-screen:has(.inspection-panel) .loot-cards{grid-template-columns:1fr}.battle-screen{grid-template-rows:auto minmax(120px,1fr) 180px 210px;gap:12px;min-height:0;display:grid}.battle-heading>span{color:#aebfc3;font-size:.85rem}.battlefield{background:radial-gradient(#2c373a,#151e24);border:1px solid #435158;grid-template-columns:1fr 1fr;align-items:center;gap:40px;min-height:0;padding:12px 24px;display:grid}.party-field{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.combatant{background:#213138;border:1px solid #465b61;gap:3px;padding:10px 14px;font-size:.9rem;display:grid}.enemy-field{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.enemy-card{background:#342b2b;border:1px solid #846359;gap:6px;padding:14px;display:grid}.enemy-heading>strong{color:#f0c2aa;font-size:1.1rem}.enemy-card>span{font-size:.85rem}.enemy-card meter{width:100%;height:8px}.enemy-card p{color:#ffcf93;font-size:.9rem}.acting{outline-offset:2px;outline:2px solid #f5cf78}.incapacitated{opacity:.48}.ctb-panel{background:#18262c;border:1px solid #526468;grid-template-rows:26px minmax(0,1fr);min-height:0;padding:8px 14px;display:grid}.ctb-heading span{color:#b7c8c9;font-size:.8rem}.ctb-panel svg{width:100%;height:100%}.battle-command{background:#1e2c32;border:1px solid #526468;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;min-height:0;padding:14px;display:grid}.action-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.game-surface .action-cards button{text-align:left;gap:6px;padding:12px;display:grid}.action-cards span{font-size:.85rem}.target-preview{flex-direction:column;gap:10px;min-width:0;font-size:.9rem;display:flex}.target-preview label{align-items:center;gap:12px;display:flex}.target-preview select{flex:1;min-width:0}.target-preview [aria-label=Action\ preview]{flex:1}.target-preview .confirm-action{align-self:flex-end}.battle-outcome{text-align:center;grid-row:3/-1;align-self:center;padding:24px}.battle-outcome button{margin-top:16px}.developer-reports{max-width:1100px;margin:auto;padding:24px}@media (height<=820px){.game-surface{gap:8px;padding:10px 16px}.battle-screen{grid-template-rows:auto minmax(140px,1fr) 168px 202px;gap:8px}.battlefield{gap:24px;padding:10px 16px}.party-hud>div{padding:8px 12px}.game-surface .dungeon-stage{gap:8px;padding:10px}.combatant{padding:8px}}.game-surface{background:radial-gradient(at 50% 15%,#253033,#10171c 65%)}.game-surface h1{margin:0;font-size:2.2rem}.game-surface button.primary-button{color:#182327;background:#edcb82;border-color:#edcb82;padding:12px 24px;font-weight:750}.party-hud>div{background:#1d2a2d;border:0;border-bottom:2px solid #678781}.portrait-token{color:#e8f0df;background:#436762;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-weight:700;display:inline-flex}.town-surface{grid-template-rows:minmax(0,1fr);padding:24px 32px}.town-screen{grid-template-rows:auto minmax(0,1fr) auto;gap:22px;min-height:0;display:grid}.town-heading{justify-content:space-between;align-items:end;display:flex}.town-heading>p{color:#bfcbc6}.town-columns{grid-template-columns:235px minmax(0,1.25fr) minmax(0,1fr);gap:26px;min-height:0;display:grid}.town-party{flex-direction:column;gap:12px;display:flex}.town-member{border-bottom:1px solid #43534f;grid-template-columns:34px 1fr;gap:10px;padding:12px 0;display:grid}.town-member>div{display:grid}.town-member label{grid-column:2;align-items:center;gap:12px;font-size:.85rem;display:flex}.town-loadout{grid-template-rows:auto minmax(0,1fr);gap:12px;min-height:0;display:grid}.town-storage{flex-direction:column;gap:8px;min-height:0;display:flex}.storage-scroll{flex:1;min-height:0;padding-right:8px;overflow-y:auto}.storage-option{cursor:pointer;border-bottom:1px solid #354640;align-items:center;gap:8px;padding:14px 8px;display:flex}.storage-option>span{flex:1;gap:5px;display:grid}.storage-option:has(input:checked){background:#2a3c38}.stored-valuable{justify-content:space-between;gap:12px;padding:10px 8px;display:flex}.storage-scroll h3{padding-top:20px}.preparation-footer{border-top:1px solid #708176;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:26px;padding-top:14px;display:grid}.preparation-footer label{align-items:center;gap:10px;display:flex}.preparation-validation ul{margin:0;padding:0;font-size:.85rem;list-style:none}.inventory-browser{grid-template-rows:auto minmax(80px,1fr) auto;gap:10px;height:100%;min-height:0;display:grid}.inventory-load{color:#e5d4a8;flex-wrap:wrap;gap:6px 18px;font-size:.85rem;display:flex}.inventory-groups{overscroll-behavior:contain;min-height:0;padding-right:8px;overflow-y:auto}.inventory-groups h3{text-transform:uppercase;letter-spacing:.07em;color:#a8bdb6;margin:0;padding:10px 0 6px;font-size:.8rem}.inventory-groups ul{margin:0;padding:0;list-style:none}.inventory-groups li,.panel-scroll .inventory-groups li{border:0;padding:0}.game-surface .inventory-row,.panel-scroll li button.inventory-row{text-align:left;background:#23312f;border:0;border-left:3px solid #0000;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;width:100%;margin:0 0 4px;padding:8px 10px;display:grid}.game-surface .inventory-row[aria-pressed=true]{color:#f5cf78;background:#38453b;border-left-color:#f5cf78}.row-numbers{color:#bdcbc4;font-size:.75rem}.item-badges{grid-area:1/2/3;align-items:center;gap:6px;display:flex}.item-badges small{background:#34453e;padding:2px 5px;font-size:.7rem}.item-badges .unsecured{color:#f5cf78}.pinned-item{background:#182622;border-top:1px solid #768675;gap:8px;padding:12px;display:grid}.pinned-item .item-summary{gap:3px;font-size:.8rem}.pinned-item .item-summary>strong{font-size:1rem}.pinned-item>small{font-size:.72rem}.equipment-pips{gap:3px;font-size:.8rem;display:grid}.item-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.item-actions small{width:100%}.inventory-panel-body{flex:1;overflow:hidden}.ctb-panel{background:0 0;border:0;flex-direction:column;justify-content:center;gap:10px;padding:0 8px;display:flex}.initiative-row{grid-template-columns:86px minmax(0,1fr);align-items:center;gap:12px;display:grid}.initiative-row>strong{color:#d6ddc7;font-size:.8rem}.initiative-row>strong>small{font-size:.7rem;font-weight:400;display:block}.initiative-strip{gap:12px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.initiative-token{background:#263b38;border-radius:5px;flex:1;align-items:center;gap:10px;min-width:0;height:56px;padding:8px 12px;font-size:.82rem;display:flex}.initiative-token.enemy{background:#442f2d}.initiative-token.enemy .portrait-token{background:#845148}.initiative-token.current-token{color:#f5cf78;box-shadow:inset 0 -3px #f5cf78}.initiative-token.ghost-token{color:#f5cf78;background:#30392c;border:1px dashed #f5cf78}.battle-screen{grid-template-rows:auto minmax(140px,1fr) 150px 210px}.battlefield{background:radial-gradient(#34413b,#0000 70%);border:0}.combatant{background:#1b2c2780;border:0}.enemy-card{background:#352c2870;border:0;border-left:3px solid #a46f52;padding:20px}.enemy-heading>strong{font-size:1.3rem}.enemy-heading{align-items:center;gap:10px;display:flex}.enemy-glyph{color:#ffcf93;border:1px solid #a46f52;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:1.05rem;line-height:1;display:inline-flex}.battle-command{background:#1d2a26;border:0;border-top:1px solid #758473}.combat-result{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:0;display:flex}.victory-mark{color:#edcb82;font-size:4rem;line-height:1}.result-screen{grid-template-rows:auto auto auto minmax(0,1fr) auto;gap:24px;width:100%;max-width:1400px;height:100%;min-height:0;margin:auto;display:grid}.result-heading{text-align:center}.result-heading h1{color:#f1d294}.result-stats{text-align:center;grid-template-columns:repeat(4,1fr);gap:24px;display:grid}.result-stats>div{gap:6px;display:grid}.result-stats strong{font-size:1.6rem}.result-condition h2{text-align:center;margin-bottom:14px}.result-party{justify-content:center;gap:32px;display:flex}.result-party>div{justify-items:center;gap:6px;min-width:120px;font-size:.9rem;display:grid}.result-haul{flex-direction:column;gap:12px;min-height:0;display:flex}.result-items{grid-template-columns:repeat(4,1fr);align-content:start;gap:12px;min-height:0;display:grid;overflow-y:auto}.result-items>div{background:#27372e;gap:6px;padding:14px;display:grid}.result-actions{border-top:1px solid #687b6a;align-items:center;gap:16px;padding-top:16px;display:flex}.result-actions p{flex:1;font-size:.85rem}@media (height<=820px){.town-surface{padding:18px 24px}.town-screen{gap:16px}.town-member{padding:8px 0}.result-screen{gap:18px}.battle-screen{grid-template-rows:auto minmax(140px,1fr) 146px 202px}.town-party{gap:8px}.town-member{gap:4px 10px;padding:6px 0}.game-surface .town-member select{padding:4px 8px}}.inventory-browser{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px}.inventory-load{grid-column:1/-1}.game-surface .inventory-row,.panel-scroll li button.inventory-row{border-radius:8px;grid-template-columns:minmax(80px,1fr) auto auto;align-items:center;gap:8px;padding:9px}.item-name{gap:3px;min-width:0;display:grid}.item-name-heading{align-items:center;gap:6px;min-width:0;display:flex}.item-category-glyph{color:#d7e1d6;background:#34453e;border-radius:5px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:.72rem;line-height:1;display:inline-flex}.item-category-supply{color:#d9e8a8;background:#3d4b37}.item-category-valuable{color:#ffe29e;background:#514229}.item-name strong{font-size:.85rem}.item-name>small{color:#afc0b7;text-transform:capitalize;font-size:.67rem}.stat-chips{flex-wrap:wrap;gap:3px;display:flex}.stat-chips small{color:#d7e1d6;white-space:nowrap;background:#152520;border-radius:4px;padding:4px;font-size:.65rem}.item-badges{flex-wrap:wrap;grid-area:auto;gap:3px;max-width:76px}.item-badges small{border-radius:4px;font-size:.62rem}.item-badges .equipped{color:#f1efcf;background:#546b4a}.item-badges .carried{color:#aee1d2}.item-badges .stored{color:#c0c4c8;background:#343c42}.item-badges .unsecured{color:#ffe29e;background:#514229}.pinned-item{background:#22332e;border:0;border-radius:12px;align-content:start;gap:18px;min-height:0;padding:16px;overflow-y:auto}.detail-heading{gap:8px;display:grid}.detail-heading h3{margin:0;font-size:1.2rem}.detail-heading .item-badges{max-width:none}.detail-stats{grid-template-columns:repeat(3,1fr);gap:8px;margin:0;display:grid}.detail-stats>div{background:#182a24;border-radius:6px;padding:8px}.detail-stats dt{color:#b2c5b9;font-size:.7rem}.detail-stats dd{margin:4px 0 0;font-size:1.1rem;font-weight:700}.detail-effect{font-size:.82rem;line-height:1.45}.detail-effect p{margin:6px 0}.detail-effect small{color:#afc0b7}.load-impact{border-top:1px solid #425b4d;gap:5px;padding-top:12px;font-size:.78rem;display:grid}.load-impact small{color:#b7c8bc}.inventory-browser .item-actions button{border-radius:7px;font-size:.8rem}.town-inventory{grid-template-rows:auto minmax(90px,1fr) minmax(200px,.85fr);grid-template-columns:minmax(0,1fr);gap:10px}.town-inventory .pinned-item{grid-template-columns:1fr 1fr;gap:10px 18px;padding:12px;display:grid}.town-inventory .detail-heading h3{font-size:1rem}.town-inventory .load-impact{border:0;padding:0}.town-inventory .detail-stats{align-self:start}.town-inventory .item-actions{grid-column:1/-1}.storage-entry{align-items:center;gap:6px;display:flex}.storage-entry>label{flex:0 0 22px;padding:4px}.storage-entry .inventory-row{flex:1;min-width:0}.inspection-panel:has(.inventory-browser){width:62%}.exploration-screen:has(.inventory-browser) .loot-overlay{right:calc(62% + 24px)}.town-inventory{grid-template-rows:auto minmax(90px,1fr) minmax(280px,1fr)}.play-map-entry{z-index:20;color:#eef4df;background:#14211f;border:1px solid #8da39b;border-radius:6px;padding:7px 10px;font-size:.75rem;position:fixed;top:10px;right:14px}.play-map-shell{color:#edf1e6;background:#10181b;min-height:100vh;padding:24px}.play-map-shell>header{justify-content:space-between;align-items:start;gap:24px;max-width:1100px;margin:0 auto 18px;display:flex}.play-map-shell>header p{max-width:760px}.play-map-shell a{color:#f0cf84}.play-map-layout{grid-template-columns:minmax(440px,1fr) 330px;gap:22px;max-width:1100px;margin:auto;display:grid}.play-map-stage,.play-map-debug{background:#1a272b;border:1px solid #526468;padding:18px}.play-map-grid{aspect-ratio:7/6;gap:4px;max-width:650px;margin:auto;display:grid}.play-map-cell{border:1px solid #58655f;place-items:center;min-width:0;font-size:clamp(1rem,3vw,2rem);font-weight:800;display:grid;position:relative}.play-map-cell small{color:#aeb9b3;font-size:.58rem;font-weight:400;position:absolute;bottom:2px;right:3px}.play-map-cell.blocking-object{color:#f0a995;box-shadow:inset 0 0 0 2px #9d5c50}.play-map-controls{grid-template-columns:repeat(3,74px);justify-content:center;gap:6px;margin-top:16px;display:grid}.play-map-controls button{min-height:40px}.play-map-controls .interact-control{grid-column:1/-1}.play-map-debug h2{color:#f0cf84;margin:0 0 8px;font-size:1rem}.play-map-debug h2:not(:first-child){margin-top:20px}.play-map-debug dl{grid-template-columns:110px 1fr;gap:7px 10px;margin:0;font-size:.86rem;display:grid}.play-map-debug dt{color:#aebdb7}.play-map-debug dd{overflow-wrap:anywhere;margin:0}.play-marker-readout{background:#111b1d;gap:5px;min-height:72px;padding:10px;font-size:.82rem;display:grid}.play-map-note{color:#bdcac5;font-size:.78rem;line-height:1.5}@media (width<=820px){.play-map-layout{grid-template-columns:1fr}.play-map-shell{padding:14px}.play-map-grid{min-width:0}}.play-combat-layout{grid-template-columns:minmax(560px,1fr) 330px;gap:22px;max-width:1100px;margin:auto;display:grid}.play-combat-stage{background:#1a272b;border:1px solid #526468;padding:18px}.play-combat-heading{justify-content:space-between;align-items:start;gap:20px;display:flex}.play-combat-heading h2{margin:4px 0 18px;font-size:1.5rem}.play-combat-heading>div:last-child{color:#b8c7c1;justify-items:end;font-size:.82rem;display:grid}.play-combatants{grid-template-columns:1fr 1fr;gap:18px;display:grid}.play-combatants h3,.play-command-panel h3{color:#f0cf84;text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px;font-size:.9rem}.play-combatants article{background:#111b1d;border-left:3px solid #657a72;grid-template-columns:1fr auto;gap:4px 10px;margin-bottom:8px;padding:10px;font-size:.83rem;display:grid}.play-combatants article.ready{border-left-color:#f0cf84;box-shadow:inset 0 0 0 1px #f0cf8455}.play-combatants article small{color:#aebdb7;grid-column:1/-1}.play-command-panel{background:#142023;border-top:1px solid #526468;margin-top:14px;padding:14px}.play-action-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.play-action-list button{text-align:left;gap:3px;margin:0;display:grid}.play-action-list button[aria-pressed=true]{border-color:#f0cf84;box-shadow:inset 0 -3px #f0cf84}.play-action-list small{font-size:.7rem}.play-target-command{justify-content:space-between;align-items:center;gap:16px;margin-top:12px;display:flex}.play-target-command label{align-items:center;gap:8px;display:flex}.play-target-command select{margin:0}.play-runtime-error{color:#ffd0c3;background:#4b2424;padding:10px}.play-combat-log{max-height:430px;margin:0;padding-left:20px;font-size:.78rem;overflow-y:auto}.play-combat-log li{border-bottom:1px solid #34464a;padding:6px 0}.play-victory-notice{color:#f0cf84;background:#24362f;margin-bottom:12px;padding:9px 12px}.play-failure{text-align:center;background:#2c2021;border:1px solid #8e6158;max-width:760px;margin:60px auto;padding:28px}.play-failure button{margin-top:18px}.play-failure pre{text-align:left;max-height:320px}@media (width<=820px){.play-combat-layout,.play-combatants,.play-action-list{grid-template-columns:1fr}}.hub-shell{width:100%;max-width:none;height:100dvh;min-height:680px;color:var(--neutral-100);background:var(--neutral-950);font-family:var(--font-ui);line-height:var(--leading-ui);grid-template-rows:72px minmax(0,1fr) 34px;padding:0;display:grid;overflow:hidden}.hub-brandbar{padding:0 var(--safe-inline);border-bottom:var(--border-subtle);z-index:4;background:linear-gradient(90deg,#081523,#10243a 52%,#081523);justify-content:space-between;align-items:center;margin:0;display:flex;position:relative;box-shadow:0 8px 28px #02071166}.hub-brand{color:inherit;align-items:center;gap:18px;text-decoration:none;display:flex}.hub-brand>strong{font-family:var(--font-display);letter-spacing:.22em;color:#bdd3f4;font-size:2rem}.hub-brand>span{border-left:1px solid #738ca777;gap:2px;padding-left:18px;display:grid}.hub-brand b,.hub-brand small,.hub-status>span{font-size:.62rem;font-weight:var(--weight-medium);letter-spacing:.22em}.hub-brand small{color:#829ab6;text-transform:uppercase}.hub-status{color:#89a2bd;align-items:center;gap:14px;display:flex}.hub-layout{grid-template-columns:clamp(248px,17vw,320px) minmax(520px,1fr) clamp(390px,25vw,475px);min-height:0;display:grid}.hub-navigation{border-right:var(--border-subtle);z-index:2;background:linear-gradient(165deg,#0d2034 0%,#091724 75%);flex-direction:column;gap:7px;min-width:0;padding:clamp(22px,3vh,36px) 18px;display:flex;position:relative}.hub-nav-heading{border-bottom:var(--border-subtle);align-items:center;gap:14px;min-height:62px;margin:0 8px 18px;padding-bottom:18px;display:flex}.hub-nav-heading>span{font-family:var(--font-numeric);color:var(--action-primary);font-size:1.45rem}.hub-nav-heading p{font-family:var(--font-display);letter-spacing:.11em;margin:0;font-size:1.1rem}.hub-nav-heading strong{color:#8fa7c0;font-size:var(--text-xs);font-weight:var(--weight-medium)}.service-nav-item{border-radius:var(--radius-md);color:#c5d4e6;text-align:left;background:0 0;border:1px solid #0000;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:66px;margin:0;padding:10px 12px;transition:background .14s,border-color .14s,transform .14s;display:grid}.service-nav-item>span:nth-child(2){gap:2px;display:grid}.service-nav-item strong{font-family:var(--font-display);letter-spacing:.035em;font-size:1.05rem}.service-nav-item small{color:#7890a9;font-size:.66rem}.service-nav-icon{border-radius:var(--radius-sm);color:#a9caff;background:#17324d;place-items:center;width:38px;height:38px;display:grid}.service-nav-item:hover:not(:disabled){background:#16314d99;border-color:#5e98d955;transform:translate(3px)}.service-nav-item[aria-current=page]{color:#fff;box-shadow:inset 3px 0 var(--action-primary);background:linear-gradient(90deg,#174e7e,#16324d);border-color:#63a9ff88}.service-nav-item[aria-current=page] .service-nav-icon{color:#fff;background:var(--action-primary)}.service-nav-item:disabled{cursor:not-allowed;opacity:.42;color:#8a97a5}.service-nav-item:focus-visible,.secondary-return:focus-visible,.primary-commit:focus-visible,.hub-brand:focus-visible{outline-offset:3px;outline:3px solid #9acbff}.hub-nav-note{color:#667f98;margin:auto 10px 0;font-size:.68rem;line-height:1.55}.hub-stage{isolation:isolate;flex-direction:column;justify-content:center;min-width:0;min-height:0;padding:clamp(28px,4vw,68px);display:flex;position:relative;overflow:hidden}.hub-stage:before{content:"";z-index:-3;background:linear-gradient(90deg,#04111feb 0%,#071c317a 48%,#05111ed1 100%),radial-gradient(circle at 65% 25%,#e9f7ff 0 4%,#8fc9f3 12%,#0000 31%),linear-gradient(155deg,#4d89b7 0%,#a5d7ee 39%,#e7d8c2 67%,#365f83 100%);position:absolute;inset:0}.hub-stage:after{content:"";z-index:-1;background:linear-gradient(#0000 55%,#071422ee 100%);position:absolute;inset:0}.hub-scenery{z-index:-2;position:absolute;inset:0;overflow:hidden}.skyline{background-repeat:repeat-x;position:absolute;bottom:8%;left:0;right:0}.skyline-far{opacity:.36;clip-path:polygon(0 70%,4% 70%,4% 20%,9% 20%,9% 57%,13% 57%,13% 34%,19% 34%,19% 66%,24% 66%,24% 10%,32% 10%,32% 59%,37% 59%,37% 30%,45% 30%,45% 68%,52% 68%,52% 39%,59% 39%,59% 61%,67% 61%,67% 16%,73% 16%,73% 55%,80% 55%,80% 27%,90% 27%,90% 70%,100% 70%,100% 100%,0 100%);background-image:linear-gradient(90deg,#0000 0 4%,#9bc3d6 4% 9%,#0000 9% 13%,#c6dce1 13% 19%,#0000 19% 24%,#7baac2 24% 32%,#0000 32% 37%,#b2cfd8 37% 45%,#0000 45% 52%,#86b0c3 52% 59%,#0000 59% 67%,#d1dde0 67% 73%,#0000 73% 80%,#91b9c7 80% 90%,#0000 90%);height:42%}.skyline-near{opacity:.9;clip-path:polygon(0 43%,9% 43%,9% 16%,17% 16%,17% 57%,24% 57%,24% 31%,33% 31%,33% 65%,41% 65%,41% 9%,47% 9%,47% 49%,58% 49%,58% 23%,65% 23%,65% 63%,72% 63%,72% 36%,84% 36%,84% 14%,91% 14%,91% 54%,100% 54%,100% 100%,0 100%);background:linear-gradient(90deg,#0b2942,#174767 48%,#0b2942);height:31%}.tower-mark{clip-path:polygon(50% 0,70% 14%,70% 100%,30% 100%,30% 14%);background:linear-gradient(90deg,#0000,#a9ddff44,#0000);border:1px solid #d8efff55;border-bottom:0;width:78px;height:360px;position:absolute;top:13%;right:12%}.tower-mark span{color:#e6f5ffcc;font-size:2rem;position:absolute;top:52px;left:50%;transform:translate(-50%)}.party-silhouette{opacity:.86;justify-content:end;align-items:end;gap:2%;width:46%;height:43%;display:flex;position:absolute;bottom:8%;right:6%}.party-silhouette span{clip-path:polygon(31% 0,69% 0,78% 10%,76% 24%,88% 34%,81% 100%,19% 100%,12% 34%,24% 24%,22% 10%);background:linear-gradient(90deg,#07121d,#183149);border-radius:50% 50% 12% 12%/16% 16% 5% 5%;width:18%;height:70%;display:block;box-shadow:-10px 6px 20px #0014}.party-silhouette span:nth-child(2){height:91%}.party-silhouette span:nth-child(3){height:78%}.party-silhouette span:nth-child(4){height:84%}.hub-stage-copy{z-index:1;text-shadow:0 2px 22px #03101d;max-width:690px;margin-top:-6vh;position:relative}.hub-kicker{margin-bottom:var(--space-4);color:#9dc9f5;letter-spacing:.2em;font-size:.68rem;font-weight:var(--weight-semibold)}.hub-stage-copy h1{max-width:680px;font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:.015em;text-transform:uppercase;margin:0;line-height:.91}.hub-stage-copy>p:last-child{max-width:470px;margin-top:var(--space-5);color:#ccdaea;font-size:.94rem}.hub-stage-footer{color:#c0d4e7;letter-spacing:.08em;border-top:1px solid #c0ddf044;justify-content:space-between;align-items:center;padding-top:13px;font-size:.72rem;display:flex;position:absolute;bottom:26px;left:clamp(28px,4vw,68px);right:clamp(28px,4vw,68px)}.hub-stage-footer>span:first-child{align-items:center;gap:8px;display:flex}.hub-command{border-left:var(--border-subtle);z-index:2;background:linear-gradient(150deg,#112840f2,#081724 80%);flex-direction:column;min-height:0;padding:clamp(22px,3vh,36px) clamp(22px,2vw,36px);display:flex;position:relative;box-shadow:-18px 0 50px #02091255}.ui-section-heading{border-bottom:var(--border-subtle);gap:7px;padding-bottom:18px;display:grid}.ui-section-heading>p{color:var(--action-primary);letter-spacing:.2em;font-size:.65rem;font-weight:var(--weight-semibold)}.ui-section-heading>div{justify-content:space-between;align-items:end;gap:14px;display:flex}.ui-section-heading h2{font-family:var(--font-display);letter-spacing:.025em;margin:0;font-size:1.75rem}.ui-section-heading span{color:#8fa6be;font-size:.68rem}.mission-brief{background:#90b7dc33;grid-template-columns:1fr 1fr;gap:1px;margin:18px 0;display:grid}.mission-brief>div{background:#0c1e30;gap:3px;padding:12px;display:grid}.mission-brief span{color:#829ab4;font-size:.66rem}.mission-brief strong{font-size:.78rem;font-weight:var(--weight-medium)}.hub-party{flex-direction:column;gap:10px;min-height:0;display:flex}.hub-party-heading{justify-content:space-between;align-items:center;display:flex}.hub-party-heading h2{font-family:var(--font-display);letter-spacing:.04em;margin:0;font-size:1rem}.ui-status{min-height:23px;font-size:.61rem;font-weight:var(--weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:#cce0ff;background:#2e6392;border-radius:999px;align-items:center;padding:3px 8px;display:inline-flex}.ui-status-success{color:#c8ffea;background:#17624f}.ui-status-warning{color:#fff1cc;background:#75551f}.party-list{gap:6px;display:grid}.party-card{background:#10263a;border-left:2px solid #5fa8ef;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:52px;padding:6px 10px 6px 6px;display:grid}.party-card>div:nth-child(2){min-width:0;display:grid}.party-card strong{font-family:var(--font-display);letter-spacing:.04em;font-size:.95rem}.party-card small{color:#8299b0;text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;overflow:hidden}.party-portrait{color:#eaf4ff;width:40px;height:40px;font-family:var(--font-display);background:radial-gradient(circle at 55% 38%,#b8ddff 0 12%,#487aa6 13% 28%,#1a354e 29%);border-radius:4px;place-items:center;font-size:1.15rem;display:grid;box-shadow:inset 0 0 0 1px #b8dbff55}.tone-violet{border-left-color:var(--mood-violet)}.tone-violet .party-portrait{filter:hue-rotate(32deg)}.tone-rose{border-left-color:#dc8098}.tone-rose .party-portrait{filter:hue-rotate(120deg)}.tone-slate{border-left-color:#89a8bd}.tone-slate .party-portrait{filter:saturate(.5)}.numeric-text{font-family:var(--font-numeric);font-variant-numeric:tabular-nums}.party-card>.numeric-text{color:#a9bdd0;font-size:.65rem}.readiness-grid{grid-template-columns:repeat(3,1fr);gap:7px;margin-top:16px;display:grid}.readiness-grid>div{background:#0b1d2d;border-top:1px solid #5e8bb455;grid-template-columns:auto 1fr;align-items:center;gap:3px 7px;padding:10px;display:grid}.readiness-grid svg{color:#8fc1f7;grid-row:1/3}.readiness-grid span:not(.numeric-text){color:#8097ad;font-size:.61rem}.readiness-grid .numeric-text{font-size:.72rem}.commit-copy{align-items:center;gap:10px;margin-top:auto;padding:16px 0 12px;display:flex}.commit-copy p{color:#8fa5bb;font-size:.67rem}.primary-commit{border-radius:var(--radius-md);color:#03111f;background:linear-gradient(105deg,#b8dcff,#57a7ff 58%,#8bc9ff);border:1px solid #9bd1ff;justify-content:space-between;align-items:center;min-height:68px;padding:0 20px 0 24px;text-decoration:none;transition:filter .14s,transform .14s,box-shadow .14s;display:flex;box-shadow:0 0 28px #3b9dff44,inset 0 1px #fff8}.primary-commit span{font-family:var(--font-display);font-size:1.7rem;font-weight:var(--weight-bold);letter-spacing:.09em;text-transform:uppercase}.primary-commit:hover{filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 0 38px #4fa9ff77,inset 0 1px #fff}.primary-commit:active{background:var(--action-primary-pressed);transform:translateY(0)}.commit-note{color:#71879c;text-align:center;margin-top:8px;font-size:.62rem}.party-overview{flex:1;min-height:0;padding-top:20px}.hub-party-expanded{height:100%}.hub-party-expanded .party-list{gap:9px}.hub-party-expanded .party-card{flex:1;grid-template-columns:58px 1fr;min-height:74px}.hub-party-expanded .party-portrait{width:52px;height:52px}.hub-party-expanded .party-card>div:nth-child(2){gap:2px}.hub-party-expanded .party-card>div:nth-child(2)>span{color:#a9bdd0;font-family:var(--font-numeric);font-size:.65rem}.party-guidance{color:#91a6bb;margin:18px 0;font-size:.72rem}.secondary-return{border-radius:var(--radius-md);color:#d9eaff;background:#18344e;border:1px solid #6a91b8;min-height:48px;margin:0}.secondary-return:hover{background:#214766}.hub-footer{padding:0 var(--safe-inline);border-top:var(--border-subtle);color:#65809a;font-family:var(--font-numeric);letter-spacing:.24em;background:#07131f;justify-content:flex-end;align-items:center;gap:22px;font-size:.56rem;display:flex}@media (width<=1180px){.hub-layout{grid-template-columns:230px minmax(360px,1fr) 370px}.hub-stage{padding:30px}.hub-stage-copy{margin-top:-14vh}.hub-stage-footer{left:30px;right:30px}.hub-stage-copy h1{font-size:clamp(2.8rem,5vw,4.5rem)}.hub-navigation{padding-inline:12px}.hub-command{padding-inline:20px}}@media (width<=900px){.hub-shell{grid-template-rows:64px auto 34px;height:auto;min-height:100dvh;overflow:visible}.hub-layout{grid-template-rows:minmax(480px,62vh) auto;grid-template-columns:210px minmax(0,1fr)}.hub-command{grid-column:1/-1;min-height:640px}.hub-stage{min-width:0}.hub-brand>span,.hub-status>span{display:none}}@media (prefers-reduced-motion:reduce){.service-nav-item,.primary-commit{transition:none}}@media (width>=821px){.play-map-shell{grid-template-rows:auto minmax(0,1fr);gap:18px;width:100%;max-width:none;height:100dvh;min-height:0;padding:24px;display:grid}.play-map-shell>header{width:100%;max-width:1100px;margin:0 auto}.play-map-layout,.play-combat-layout{width:100%;max-width:1100px;min-height:0;margin:0 auto}.play-map-stage{flex-direction:column;min-height:0;display:flex}.play-map-grid{aspect-ratio:7/6;width:auto;height:100%;min-height:0;max-height:100%}.play-map-controls{margin-top:10px}.play-map-controls button,.play-combat-stage button,.play-map-shell>.loot-overlay button{margin:0}.play-map-debug,.play-combat-stage,.play-map-shell>.play-failure{overscroll-behavior:contain;min-height:0;overflow-y:auto}.play-map-shell>.loot-overlay{background:#202b32;border:1px solid #ab9b72;flex-direction:column;width:100%;max-width:1100px;min-height:0;margin:0 auto;padding:0;display:flex}.play-map-shell>.loot-overlay .loot-scroll{flex:auto;min-height:0;overflow-y:auto}.play-map-shell>.play-failure{width:100%;margin:0 auto}}.play-map-debug summary,.play-combat-debug summary{cursor:pointer;color:#d7c58d;font-size:.8rem}.play-map-diagnostics{border-top:1px solid #526468;padding-top:10px}.play-map-diagnostics h2:first-of-type{margin-top:14px}.play-combat-debug{min-width:0}.play-combat-debug>.play-map-debug{margin-top:8px}.play-combat-debug[open]{max-height:38vh;overflow-y:auto}.play-combat-debug[open] .play-combat-log{max-height:none;overflow:visible}.play-map-cell{border-color:#71847b}.play-map-cell.terrain-floor{color:#ffe4a0;background:#38534a}.play-map-cell.terrain-wall{color:#a3b0ad;background:#20282d}@media (width>=821px){.play-map-shell{gap:12px;padding:18px clamp(18px,2vw,40px)}.play-map-shell>header,.play-map-layout,.play-combat-layout{max-width:1800px}.play-map-shell>header{margin-bottom:0}.play-map-shell>header h1{margin:2px 0 4px}.play-map-shell>header p{margin:0}.play-map-layout{grid-template-columns:minmax(0,1fr) minmax(270px,320px);gap:16px}.play-map-stage,.play-map-debug,.play-combat-stage{padding:14px}.play-map-stage{align-items:center}.play-map-grid{flex:auto;max-width:none;max-height:calc(100% - 112px)}.play-map-controls{flex:none}.play-map-debug{min-width:0;overflow-y:auto}.play-map-debug h2:not(:first-child){margin-top:14px}.play-combat-layout{flex-direction:column;gap:6px;display:flex}.play-combat-stage{flex-direction:column;gap:12px;min-height:0;display:flex;overflow-y:auto}.play-combat-heading h2{margin:2px 0 0}.play-combatants{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.play-combatants>div{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:7px;display:grid}.play-combatants h3{grid-column:1/-1;margin:0}.play-combatants article{margin:0;padding:8px 10px;font-size:.88rem}.play-ctb-presentation{background:#142023;border:1px solid #526468;padding:10px 14px}.play-ctb-presentation .initiative-row{grid-template-columns:94px minmax(0,1fr)}.play-ctb-presentation .initiative-strip{gap:7px}.play-ctb-presentation .initiative-token{height:50px;padding:6px 8px;font-size:.72rem;overflow:hidden}.play-ctb-presentation .initiative-token strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.play-command-panel{margin:0;padding:12px 14px}.play-action-list{grid-template-columns:repeat(4,minmax(0,1fr))}.play-action-list button{min-height:54px}.play-combat-debug{flex:none;padding:2px 4px}.play-combat-debug>summary{color:#8d9e99;font-size:.72rem}}@media (width>=821px) and (height<=800px){.play-map-shell{gap:8px;padding-top:12px;padding-bottom:12px}.play-combat-stage{gap:7px;padding:10px 14px}.play-combatants article{padding:5px 8px;font-size:.8rem}.play-combatants article small{font-size:.7rem}.play-ctb-presentation{gap:5px;padding:6px 10px}.play-ctb-presentation .initiative-token{height:42px}.play-command-panel{padding:8px 10px}.play-action-list button{min-height:46px}.play-map-grid{max-height:calc(100% - 100px)}}@media (width<=820px){.play-combat-debug,.play-map-debug{margin-top:12px}}.play-extract-slot{grid-column:1/-1;height:44px;display:grid}.play-extract-slot .interact-control{width:100%;height:44px}.play-map-cell[data-hub-return=true]{box-shadow:inset 0 0 0 2px #b3d8af}.play-map-cell[data-hub-return=true]>span{color:#d4f0bd}.play-return-hint{color:#b9d4b7;margin:8px 0 0;font-size:.8rem}
