:root{color-scheme:dark;--bg:#171719;--panel:#77777b;--line:#29292e;--gold:#eee3bd;--text:#f1eee4;--muted:#c3c1ba;--dark:#303034}*{box-sizing:border-box}body{margin:0;background:#151517;color:var(--text);font:12px 'Courier New',monospace}button,input,select{font:inherit}button{color:inherit;cursor:pointer;border:2px solid;border-color:#b3b3b6 #353539 #353539 #b3b3b6;background:#6e6e74;padding:7px}button:hover{background:#85858a}button:active{border-color:#353539 #b3b3b6 #b3b3b6 #353539;background:#55555c}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #eddc92;outline-offset:2px}[hidden]{display:none!important}header{max-width:1120px;margin:auto;height:78px;display:flex;justify-content:space-between;align-items:center;padding:10px 8px}.brand{color:#d4c9ab;text-decoration:none;font:bold 22px/1 'Courier New',monospace;letter-spacing:1px;text-shadow:2px 2px #000}.brand span{color:#b9b7b4}.brand small{font:9px 'Courier New',monospace;letter-spacing:2px;display:block;margin-top:8px;color:#909095}nav{display:flex;align-items:center;gap:20px}.live{font-size:9px;color:#99999e}nav button{font-size:11px}main{max-width:1120px;margin:auto;padding:0 8px}.game{background:#747479;border:4px solid;border-color:#aaaab0 #39393d #39393d #aaaab0;padding:5px;box-shadow:0 0 0 2px #080809}.party-strip{background:#59595f;border:2px inset #929298;padding:4px}#party{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.champion{display:flex;gap:9px;align-items:center;text-align:left;padding:4px;width:100%;min-width:0;background:#59595f}.champion.selected{background:#676769;border-color:#ede3bf #333338 #333338 #ede3bf}.portrait{display:block;flex:0 0 48px;height:56px;width:48px;border:2px inset #a8a8ae;background:#171719}.portrait svg{display:block;width:100%;height:100%;image-rendering:pixelated}.champion>span:last-child{flex:1;min-width:0}.champion strong{font:bold 14px monospace;text-transform:uppercase;color:#f1e2bd;display:block;overflow:hidden}.champion small{display:block;font-size:8px;color:#d0ceca;margin-top:3px}.hero-vitals{display:block;font-size:8px;color:#ddd9d0;margin-top:4px;white-space:nowrap}.bars{display:flex;height:6px;gap:3px;margin-top:5px}.bars progress{width:50%;height:6px;border:1px solid #222;appearance:none}.bars progress::-webkit-progress-bar{background:#303034}.bars progress::-webkit-progress-value{background:#b0433b}.bars progress+progress::-webkit-progress-value{background:#557cc0}.bars progress::-moz-progress-bar{background:#b0433b}.game-top{display:flex;justify-content:space-between;padding:8px 5px;color:#e5e0d1;font-size:9px;letter-spacing:1px}.game-layout{display:grid;grid-template-columns:minmax(0,7fr) minmax(280px,3fr);gap:6px}.view-column{display:flex;flex-direction:column;min-width:0;background:#27272b;border:2px inset #96969b}.viewport{position:relative;aspect-ratio:224/136;overflow:hidden;background:#222;min-width:0}canvas{display:block;width:100%;height:100%;object-fit:fill;image-rendering:pixelated;image-rendering:crisp-edges}.scene-label{position:absolute;top:10px;left:12px;font-size:9px;letter-spacing:1px;text-shadow:1px 2px #000;color:#ddd4bf;pointer-events:none}.scene-label span{display:none}.scene-label b{font-size:11px;font-weight:normal}.enter{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);white-space:nowrap;background:#717175;color:#fff1c7;font-weight:bold;font-size:12px;padding:13px 20px;border-width:3px}.message-panel{flex:1;min-height:84px;background:#242428;padding:14px 12px;border-top:3px solid #101014;line-height:1.6}#notice{font-size:12px;color:#e4dfc9;min-height:38px}.keyboard-hint{display:block;font-size:8px;color:#929296;margin-top:9px;letter-spacing:.5px}.right-panel{display:flex;flex-direction:column;gap:5px;min-width:0}.spell-panel,.action-panel,.navigation-panel{background:#66666d;padding:7px;border:2px solid;border-color:#a0a0a5 #37373c #37373c #a0a0a5}.panel-title{margin:0 0 6px;display:flex;justify-content:space-between;gap:7px;font-size:10px;letter-spacing:1px;color:#f2e6bc;font-weight:bold}.panel-title>span{color:#e3dfd4;font-size:10px;letter-spacing:0;font-weight:normal}#casters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;margin-bottom:5px}#casters button{font-size:8px;padding:5px 0}#casters button[aria-pressed=true]{background:#424248;color:#f1dda4;border-color:#2c2c31 #aaaab2 #aaaab2 #2c2c31}#rune-tray{display:grid;grid-template-columns:repeat(4,1fr);gap:2px}#rune-tray button{height:33px;padding:1px;background:#35353c;border:2px inset #92929a;color:#e9d6a0}.rune-glyph{width:27px;height:27px;display:block;margin:auto;color:#ede3be;filter:none}.empty-rune{color:#969298}.rune-stage{display:flex;justify-content:space-between;gap:3px;margin:6px 0;font-size:8px;color:#efdfac}.rune-stage>span{max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ddd}.rune-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:2px}.rune-row button{padding:1px;height:35px;min-width:0;background:#74747b}.rune-row .rune-glyph{width:26px;height:26px}.spell-buttons{display:flex;gap:4px;margin-top:5px}.spell-buttons button{font-size:10px;padding:6px;flex:1}#cast{flex:2;background:#52525b;color:#fff0bf}details{font-size:9px;color:#e0ddd1;line-height:1.6;margin-top:6px}summary{cursor:pointer;font-size:9px;color:#eee5cb}details p{margin:7px 0}#hands{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:5px}#hands button{display:flex;align-items:center;gap:5px;font-size:9px;text-align:left;padding:3px;min-width:0;background:#3b3b43}#hands span{width:27px;flex:0 0 27px;height:31px;display:block}.item-pixel{width:100%;height:100%;display:block;image-rendering:pixelated}.attack-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}.attack-buttons button{display:grid;justify-items:center;gap:3px;font-size:11px;padding:5px 0}.attack-buttons .attack-icon{display:block;width:22px;height:25px}.attack-buttons span{font-size:10px}.attack-buttons small{font-size:7px;color:#ece8dc}#combat-state{font-size:9px;color:#f3e5b8;min-height:24px;margin:6px 0;line-height:1.3}.utility-buttons{display:flex;gap:4px}.utility-buttons button{flex:1;font-size:10px;padding:6px 3px}kbd{font:inherit;color:#f8e6ac}.navigation-panel{display:grid;grid-template-columns:36px 1fr;gap:6px;margin-top:auto}.compass{align-self:center;text-align:center;min-width:0}.compass>span{font-size:10px;color:#ead4a0}.compass b{display:block;font-size:27px;line-height:1.4;color:#ead4a0}.compass small{font-size:7px}.controls>span,.controls>small{display:none}.controls>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:36px;gap:3px}.controls>div>button{height:100%;width:100%;padding:0;font:bold 25px monospace;touch-action:none;user-select:none}.controls>div>button:hover{background:#99999e}.controls>div>button:active{background:#4a4a52}#interact{width:100%;display:flex;justify-content:space-between;padding:5px;font-size:10px;margin-top:3px}.game-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 5px 0;font-size:9px;color:#e5dfcb}.game-bottom button{padding:4px 7px;font-size:9px}footer{max-width:1120px;margin:12px auto;padding:0 10px;display:flex;justify-content:space-between;gap:15px;font-size:9px;color:#8d8b8b;line-height:1.7}dialog{background:#74747b;color:#f0eadd;border:4px outset #c0c0c4;padding:24px;width:min(440px,94vw);box-shadow:5px 5px #0009}dialog::backdrop{background:#000b}h2{font:bold 21px monospace;margin:12px 0}.eyebrow{font-size:9px;color:#f0ddad;letter-spacing:1px}.muted{color:#e3ded0;font-size:11px}#close{position:absolute;right:8px;top:7px;padding:1px 8px;font-size:22px}label{display:block;font-size:12px;margin-top:16px}input{display:block;width:100%;color:#fff;background:#303038;border:2px inset #a0a0a9;padding:10px;margin-top:6px;font-size:14px}label small{font-size:10px;color:#ddd4c2}.primary{width:100%;padding:12px;color:#f7e9bf;margin-top:8px}#switch,#logout{width:100%;font-size:11px;margin-top:12px}#auth-error{color:#ffccad;font-size:12px;min-height:16px}#inventory{width:min(960px,calc(100vw - 20px));max-height:92vh;overflow:auto;padding:18px;position:fixed;margin:auto;border:4px outset #b0b0b6;background:#696970;box-shadow:0 0 0 2px #19191c}#inventory[open]{display:block}.inventory-header{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:-18px;z-index:2;background:#696970;padding:8px 0 12px;margin-bottom:10px}.inventory-header h2{font-size:19px;margin:0}#inventory-close{min-height:38px}#sheet-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-bottom:15px}#sheet-tabs button[aria-pressed=true]{border-style:inset;background:#3c3c44;color:#f0deac}.inventory-layout{display:grid;grid-template-columns:3fr 2fr;gap:22px}.paper-doll{position:relative;min-height:280px;background:#4b4b53;border:2px inset #9999a2;margin-bottom:16px}.body-silhouette{position:absolute;inset:12px 25%;opacity:.5;pointer-events:none}.body-silhouette svg{width:100%;height:100%;fill:#b2aaa0;stroke:#56545b;stroke-width:2}#equipment{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"empty head neck" "hand body offhand" "empty2 legs feet";gap:8px;padding:10px}#equipment button{display:grid;justify-items:center;gap:3px;min-height:76px;background:#36363e;border:2px inset #8e8e96;padding:5px;cursor:grab}#equipment button span{font-size:8px;text-transform:uppercase}#equipment button b{display:block;height:32px;width:28px}#equipment button small{font-size:8px}#equipment [data-gear=head]{grid-area:head}#equipment [data-gear=neck]{grid-area:neck}#equipment [data-gear=hand]{grid-area:hand}#equipment [data-gear=offhand]{grid-area:offhand}#equipment [data-gear=body]{grid-area:body}#equipment [data-gear=legs]{grid-area:legs}#equipment [data-gear=feet]{grid-area:feet}#bag{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;margin-top:8px}#bag button{background:#36363e;border:2px inset #9999a0;display:grid;justify-items:center;gap:3px;min-height:61px;padding:3px;cursor:grab}#bag b{display:block;width:26px;height:30px}#bag small{font-size:7px;color:#dbd6c8}#bag .selected{border-color:#ebd8a4}#cursor-status{font-size:10px;line-height:1.6;border:1px dashed #c0bcae;background:#45454d;padding:9px;color:#f0e4bc}.sheet-item-actions{display:flex;gap:5px}.sheet-item-actions button{flex:1;font-size:10px;padding:8px}#item-info,#quest-items{font-size:10px;color:#e2dbca;line-height:1.6}#quest-items{font-size:8px}.sheet-identity{display:flex;gap:12px;align-items:center;margin-bottom:12px}.sheet-identity>b{width:48px;height:56px;display:block;border:2px inset #a0a0a7}.sheet-identity>b svg{width:100%;height:100%}.sheet-identity h3{font:18px monospace;margin:0 0 5px;color:#eee3bf}.sheet-identity span{font-size:9px}.sheet-vitals{margin-bottom:14px}.sheet-vitals label{font-size:10px;margin:7px 0}.sheet-vitals label>span{float:right}.sheet-vitals progress{display:block;width:100%;height:8px;margin-top:5px;accent-color:#b64c45}.sheet-vitals label:nth-child(2) progress{accent-color:#7d955a}.sheet-vitals label:nth-child(3) progress{accent-color:#5376b2}.attributes{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:18px}.attributes div{display:flex;justify-content:space-between;background:#505058;padding:6px;font-size:10px}.attributes b{color:#eee0b5}.skill{margin-bottom:14px}.skill>div{display:flex;justify-content:space-between;font-size:11px}.skill small,.skill span{font-size:9px;color:#ddd4c0}.skill progress{display:block;width:100%;height:6px;margin:6px 0;accent-color:#d5bf86}.inventory-hint{font-size:9px;line-height:1.7;color:#d5d0c1}#held-item{position:fixed;pointer-events:none;z-index:10;width:30px;height:34px;left:50%;top:45%;filter:drop-shadow(2px 2px #111)}
@media(max-width:850px){.champion small{display:none}.champion strong{font-size:11px}.portrait{width:36px;height:44px;flex-basis:36px}.hero-vitals{font-size:7px}.game-layout{grid-template-columns:minmax(0,3fr) minmax(250px,2fr)}.champion{gap:5px}.inventory-layout{gap:15px}.keyboard-hint{font-size:7px}}
@media(max-width:620px){header{height:66px}.brand{font-size:16px}.brand small{font-size:7px}.live{display:none}nav button{font-size:9px;padding:6px}.game{padding:3px;border-width:3px}main{padding:0 5px}.party-strip{padding:3px}#party{gap:3px}.champion{display:grid;justify-items:center;padding:3px;gap:2px}.champion>span:last-child{width:100%;text-align:center}.champion strong{font-size:9px}.champion small,.hero-vitals{display:none}.portrait{width:36px;height:42px}.bars{margin-top:3px;height:4px}.bars progress{height:4px}.game-top{font-size:7px;padding:6px 2px;letter-spacing:0}.game-layout{grid-template-columns:1fr;gap:4px}.viewport{aspect-ratio:224/136}.message-panel{min-height:66px;padding:9px}#notice{font-size:10px;min-height:28px}.right-panel{display:grid;grid-template-columns:1fr 1fr;gap:4px}.spell-panel{grid-column:1/-1}.navigation-panel{grid-column:2;margin-top:0;grid-template-columns:1fr;padding:6px}.compass{display:none}.action-panel{padding:6px}.panel-title{font-size:9px}.panel-title>span{font-size:9px}#hands button{font-size:7px;gap:2px}#hands span{width:20px;height:25px;flex-basis:20px}.attack-buttons button{font-size:9px}.attack-buttons span{font-size:8px}.attack-buttons small{font-size:6px}.attack-buttons .attack-icon{height:20px;width:18px}.utility-buttons button{font-size:8px;padding:5px 2px}#combat-state{font-size:8px;min-height:31px}.controls>div{grid-auto-rows:49px;gap:4px}.controls>div>button{font-size:28px}.controls #interact{min-height:38px;margin-top:7px}.spell-panel{padding:6px}#casters button{font-size:9px}#rune-tray{max-width:180px}#rune-tray button{height:30px}.rune-row button{height:40px}.rune-stage{font-size:8px}.spell-buttons button{padding:7px}details{font-size:9px}.game-bottom{font-size:7px;gap:5px}.game-bottom>span:last-child{display:none}.game-bottom button{font-size:8px}footer{font-size:7px;display:block;padding:0 8px}footer span{display:block;margin-bottom:4px}#inventory{padding:10px;width:calc(100vw - 12px);max-height:95vh}#inventory .inventory-header{top:-10px}.inventory-header h2{font-size:15px}.inventory-layout{grid-template-columns:1fr}#bag{grid-template-columns:repeat(5,minmax(0,1fr))}#bag small{font-size:7px}.sheet-identity{margin-top:12px}.sheet-item-actions button{font-size:9px}#sheet-tabs button{font-size:10px;padding:8px 0}}
@media(hover:none){#held-item{display:none}}
/* The same classic cockpit, with a finer original pixel-art pass. */
.portrait{width:52px;height:64px;flex-basis:52px}.portrait svg{image-rendering:pixelated}#hands span{width:31px;height:36px;flex-basis:31px}.sheet-identity>b{width:58px;height:72px}.portal{position:absolute;inset:0;overflow:hidden;background:#15171a;z-index:3}.portal-shadow{position:absolute;inset:0;background:#0008;pointer-events:none}.portal-leaf{position:absolute;top:14%;bottom:3%;width:40.5%;will-change:transform;backface-visibility:hidden;filter:drop-shadow(4px 0 3px #0008)}.portal-leaf.left{left:9.5%}.portal-leaf.right{right:9.5%}.portal-leaf svg,.portal-frame svg{width:100%;height:100%;display:block}.portal-frame{position:absolute;inset:0;pointer-events:none}.portal-title{position:absolute;top:4%;left:9%;right:9%;text-align:center;font:bold clamp(12px,2vw,27px)/1 'Courier New',monospace;letter-spacing:3px;color:#d1c5a4;text-shadow:1px 2px #232822;pointer-events:none}.portal-title small{display:block;font-size:clamp(4px,.55vw,8px);letter-spacing:1.5px;margin-top:5px;color:#b1a88e}.portal .enter{bottom:9%;padding:10px 18px;background:#3d4038;border:3px solid;border-color:#b7aa88 #292e29 #292e29 #b7aa88;color:#e0cda2;font:bold clamp(8px,1vw,13px) monospace;letter-spacing:1px;text-shadow:1px 1px #151b18;box-shadow:3px 4px #0008}.portal.opening .enter{opacity:0;pointer-events:none}.portal.opening .portal-title small{visibility:hidden}.portal.opening .portal-shadow{opacity:0;transition:opacity 1.2s}.portal:not(.opening)~.scene-label{visibility:hidden}
@media(max-width:850px){.portrait{width:40px;height:50px;flex-basis:40px}}
@media(max-width:620px){.portrait{width:40px;height:50px;flex-basis:40px}.portal-title{font-size:13px;letter-spacing:2px}.portal-title small{font-size:4px;margin-top:4px}.portal .enter{font-size:9px;padding:9px 12px}.portal-leaf{filter:none}#hands span{width:24px;flex-basis:24px;height:28px}}
@media(prefers-reduced-motion:reduce){.portal.opening .portal-shadow{transition:none}}
.portal.opening{background:transparent}
@media(min-width:851px){.portrait{width:64px;height:80px;flex-basis:64px}.sheet-identity>b{width:64px;height:80px}}#equipment button b{width:34px;height:40px}#bag b{width:30px;height:35px}#bag button{min-height:66px}
.bars progress:nth-child(2)::-webkit-progress-value{background:#7d955a}.bars progress:nth-child(3)::-webkit-progress-value{background:#557cc0}.bars progress:nth-child(2)::-moz-progress-bar{background:#7d955a}.bars progress:nth-child(3)::-moz-progress-bar{background:#557cc0}
/* Assets adapted from the supplied 16-bit reference sheet. */
.party-strip{background:#3d3f43;border-color:#7b7e85}.champion{background:#2b2d33;border-color:#7b7d83 #202126 #202126 #7b7d83}.champion.selected{background:#41434b}.portrait{width:80px;height:80px;flex-basis:80px;border:0;background:transparent}.portrait svg{overflow:hidden}#party .champion strong{color:#e7ddbe}.atlas-sprite{overflow:hidden;image-rendering:pixelated}#inventory .sheet-identity>b{width:80px;height:80px;border:0;background:transparent}.spell-panel,.action-panel,.navigation-panel{background:#53565e}.right-panel{background:#34363d}.rune-row button{background:#61646e}.compass b{width:43px;height:43px;margin:auto;font-size:0}.compass b svg{width:100%;height:100%}.navigation-panel{grid-template-columns:43px 1fr}.slot-frame{position:absolute;inset:-2px;pointer-events:none;z-index:0}.slot-frame svg{width:100%;height:100%}#bag button,#equipment button{position:relative;background:#27292e;border-color:#3c3e45}#bag button>b,#bag button>small,#equipment button>span:not(.slot-frame),#equipment button>b,#equipment button>small{position:relative;z-index:1}#bag button{padding:7px 6px}#bag small{font-size:7px;text-shadow:1px 1px #000}#bag .selected{outline:1px solid #e5c778}#equipment button b{width:38px;height:43px}#hands span{height:38px;width:35px;flex-basis:35px}.attack-buttons .attack-icon{width:25px;height:28px}
@media(max-width:850px){.portrait{width:54px;height:54px;flex-basis:54px}}
@media(max-width:620px){.portrait{width:54px;height:54px}.navigation-panel{grid-template-columns:1fr}#hands span{width:24px;height:28px;flex-basis:24px}.attack-buttons .attack-icon{width:20px;height:22px}}
#equipment{grid-template-areas:"gloves head neck" "hand body offhand" "ring legs feet"}#equipment [data-gear=gloves]{grid-area:gloves}#equipment [data-gear=ring]{grid-area:ring}
#scene-actions{position:absolute;inset:0;z-index:2;pointer-events:none}.scene-target{position:absolute;pointer-events:auto;padding:0;border:0;background:transparent;min-width:12px;min-height:12px;cursor:pointer}.scene-target:hover{background:#e8d8a414;outline:1px dashed #dfc78b}.scene-target:focus-visible{outline:2px solid #ffe0a0;background:#e8d8a422}.champion.unrecruited{opacity:.38;filter:grayscale(1)}#survival-hud{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:8px 0}#survival-hud label{font-size:9px;margin:0}#survival-hud label span{float:right;color:#e3d7b5}#survival-hud progress{display:block;width:100%;height:8px;margin-top:5px;accent-color:#bd944e}#survival-hud label+label progress{accent-color:#558ec3}#world-hand{display:flex;align-items:center;gap:5px;padding:7px 0;border-top:1px solid #595951;font-size:9px}#carried-icon{width:25px;height:27px;flex:0 0 25px}#carried-label{flex:1;line-height:1.5}#world-hand button{font-size:9px;padding:6px 5px;white-space:nowrap}#world-held-item{position:fixed;pointer-events:none;z-index:20;left:50%;top:45%;width:30px;height:34px;filter:drop-shadow(2px 2px #111)}.sheet-vitals label:nth-child(4) progress{accent-color:#bd944e}.sheet-vitals label:nth-child(5) progress{accent-color:#558ec3}@media(max-width:620px){#world-hand{flex-wrap:wrap}#carried-label{min-width:65%}#world-hand button{flex:1}#survival-hud{gap:12px;margin:8px 0}#survival-hud label{font-size:8px}}@media(hover:none){#world-held-item{display:none}}
#recruit-controls{padding:12px;margin:0 0 16px;background:#353a40;border:1px solid #bba76e}#recruit-status{margin:0 0 10px;color:#e4d6b4;font-size:11px;line-height:1.6}#recruit-controls>div{display:flex;gap:8px}#confirm-recruit{color:#fff0bd;background:#56614b;flex:1;padding:12px;font-weight:bold}#cancel-recruit{min-width:95px}.recruit-preview #equipment button:disabled,.recruit-preview #bag button:disabled{opacity:1;cursor:default}.recruit-preview .sheet-item-actions{display:none}.recruit-preview #cursor-status{display:none}
button,svg,.portrait{user-select:none}.scene-target{touch-action:manipulation}.scene-label{pointer-events:none}
/* The portal remains the entry point; the personal domain has a compact planning view. */
.portal-code{position:absolute;z-index:5;top:38%;left:50%;transform:translateX(-50%);width:250px;text-align:center;padding:12px;background:#202225ee;border:1px solid #9b8d69;color:#e3d6ae}.portal-code label{display:block;font-size:11px;letter-spacing:2px}.portal-code input{width:100%;text-align:center;text-transform:lowercase;font: bold 20px monospace;background:#121519;color:#fff1c7;border:1px solid #918a75;padding:8px;margin:8px 0}.portal-code small{font-size:10px;line-height:1.6}.portal-code p{margin:0;color:#ffb69d;font-size:10px}.portal.opening .portal-code{display:none}.portal .enter{bottom:9%}.portal-title{top:9%}
#base{width:min(1180px,96vw);max-height:94vh;background:#34363b;color:#e1dac6;border:5px ridge #939598;padding:20px}#base h2{font-size:20px}#base button,#base input,#base select{font:12px monospace}#base button{padding:9px}#base input,#base select{background:#23252b;color:#eee1bd;border:1px solid #888;padding:8px;max-width:100%}.base-nav,.recruit-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}#save-state{font-size:10px;color:#bbc9a1;margin-left:auto}#base-team{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}#base-team span{background:#25272d;padding:8px;font-size:11px}#base-notice{min-height:2em;line-height:1.5;font-size:12px;color:#e5c77c}#base-hand{display:flex;align-items:center;gap:10px;font-size:12px;min-height:40px}#base-hand svg{width:38px;height:38px}.home-layout{display:grid;grid-template-columns:1fr 1fr;gap:30px}.home-layout p,#base h3,#base h4{font-size:12px;line-height:1.6}#home-grid{display:grid;grid-template-columns:repeat(11,1fr);gap:2px;margin-top:14px;background:#101214;padding:3px}#home-grid button{aspect-ratio:1;padding:0;min-width:0;position:relative}#home-grid .rock{background:#464b49;border:2px outset #626760}#home-grid .dug{background:#78735f;border:1px solid #96917a}#home-grid button:disabled{opacity:.45}#home-grid svg{width:100%;height:100%}#home-chest{display:grid;grid-template-columns:repeat(5,1fr);max-height:230px;overflow:auto;margin-top:12px;gap:4px}#home-chest button{min-width:0;padding:3px}#home-chest svg{width:40px;height:40px;max-width:100%}#home-chest span{display:block;font-size:9px}#home-chest p{grid-column:1/-1}#home-bags section>div{display:grid;grid-template-columns:repeat(9,1fr);gap:3px}#home-bags button{aspect-ratio:1;min-width:0;padding:2px}#home-bags svg{width:100%;height:100%}.recruit-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;margin-top:12px}#candidate-list{max-height:59vh;overflow:auto;display:flex;flex-direction:column;gap:5px}#candidate-list>button{display:flex;text-align:left;gap:12px;align-items:center;min-height:77px}#candidate-list button[aria-pressed=true]{border-color:#ebcc78;background:#565d50}.candidate-portrait{width:58px;height:58px;flex-shrink:0}.candidate-portrait svg{width:100%;height:100%}#candidate-list small{display:block;font-size:10px;line-height:1.7}#candidate-sheet{padding:16px;background:#25272c;align-self:start;line-height:1.7;font-size:12px}#candidate-sheet dl{display:grid;grid-template-columns:1fr 1fr;gap:8px}#candidate-sheet dl div{background:#3c3e43;padding:6px}#candidate-sheet dd{font-weight:bold;margin:0;color:#edce81}#candidate-sheet h3 small{display:block;font-weight:normal}.candidate-heading{display:flex;align-items:center;gap:14px}.candidate-heading>svg{width:85px;height:85px}.candidate-kit{display:flex;gap:10px;flex-wrap:wrap}.candidate-kit span{font-size:10px;max-width:80px}.candidate-kit svg{display:block;width:45px;height:45px}#candidate-sheet>label{display:block;margin:14px 0}#candidate-sheet select{display:block;width:100%}#hire-candidate{width:100%}.recruit-toolbar label{font-size:11px}#base::backdrop{background:#090a0ce8}#recruit-count{font-size:11px}
@media(max-width:700px){header nav{flex-wrap:wrap;justify-content:flex-end;gap:4px}.live{display:none}#base{padding:10px;width:98vw}.home-layout,.recruit-layout{grid-template-columns:1fr}#candidate-list{max-height:32vh}#base h2{font-size:15px}#base button{font-size:11px}#home-grid button{padding:0}#home-bags button{padding:2px}.portal-code{top:32%;width:210px;padding:7px}.portal-code input{font-size:16px;margin:4px 0}.portal-title{top:4%}.portal .enter{bottom:5%}}
#base .recruit-toolbar input[type=search],#base .recruit-toolbar input[type=text],#base #recruit-search{width:180px;flex:1;min-width:140px;margin:0}#base .recruit-toolbar input[type=checkbox]{width:auto;margin:0 6px 0 0}#base .recruit-toolbar label{display:flex;align-items:center;margin:0}#base .recruit-toolbar select{width:auto;margin:0}#base .recruit-toolbar button{white-space:nowrap}#base label select{margin-top:5px}
#spell-lanes{display:flex;gap:4px;margin:5px 0}#spell-lanes button{flex:1;padding:7px;font-size:10px}#spell-lanes button[aria-pressed=true]{background:#58634c;color:#ffe5a0;border-color:#e2cd8a}.champion.hurt{box-shadow:inset 0 0 14px #b7392a}.champion .portrait svg,.candidate-portrait svg{image-rendering:pixelated}
/* Four weapon slots switch to the chosen champion's action list. */
#hands.combat-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin-bottom:6px}#hands .combat-tile{position:relative;min-height:79px;display:flex;gap:7px;align-items:center;padding:7px 6px 13px;background:#34363e;overflow:hidden;text-align:left}#hands .combat-weapon-icon{width:37px;height:41px;flex:0 0 37px}#hands .combat-tile-copy{display:block;width:auto;height:auto;flex:1;min-width:0}#hands .combat-tile b{display:block;color:#eee0b3;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#hands .combat-tile small{display:block;font-size:9px;margin:4px 0;line-height:1.2}#hands .tile-state{display:block;width:auto;height:auto;font-size:8px;color:#c2c1b7;white-space:nowrap}.weapon-recovery{appearance:none;position:absolute;bottom:3px;left:5px;width:calc(100% - 10px);height:4px;border:0}.weapon-recovery::-webkit-progress-bar{background:#22242a}.weapon-recovery::-webkit-progress-value{background:#a59a70}.weapon-recovery::-moz-progress-bar{background:#a59a70}#hands .combat-tile.recovering{background:#25272e}#hands .combat-tile:disabled{opacity:.5}.weapon-menu-header{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:0 0 5px}.weapon-menu-header>span{font-size:10px;color:#f0deb1;line-height:1.4}#combat-back{flex-shrink:0;font-size:9px;padding:6px}#weapon-actions{display:grid;gap:4px}#weapon-actions .weapon-action{display:flex;align-items:center;gap:10px;min-height:56px;padding:6px 9px;text-align:left;background:#393c44}#weapon-actions .action-glyph{display:block;flex:0 0 29px;width:29px;height:32px;color:#b1ada0}#weapon-actions .action-glyph svg{width:100%;height:100%}#weapon-actions b{font-size:11px;color:#f0dfad;display:block}#weapon-actions small{display:block;margin-top:3px;color:#ddd8c7;font-size:9px}.action-requirement{display:block;margin-top:4px;font-size:8px;color:#babbad;line-height:1.3}#weapon-actions .weapon-action.locked{opacity:.65;border-style:inset;background:#2c2e34}#weapon-actions .locked b{color:#b8b8b2}#weapon-menu{min-height:184px}@media(max-width:620px){#hands .combat-tile{min-height:73px}#hands .combat-weapon-icon{width:36px;height:39px;flex-basis:36px}#weapon-actions .weapon-action{min-height:53px}}
#dungeon-generator{width:min(1000px,96vw);max-height:94vh;overflow:auto;padding:20px;background:#34363c}#dungeon-generator .inventory-header{background:#34363c;top:-20px}.generator-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.generator-layout label{font-size:11px;margin-top:12px}.generator-layout input,.generator-layout select,.generator-layout textarea{display:block;width:100%;background:#23262b;border:1px solid #8e8c7d;color:#eee0ba;padding:9px;font:12px monospace}.generator-layout textarea{resize:vertical;min-height:65px;margin-top:6px}.generator-layout button{font-size:11px;margin-top:8px}.generator-help,#generator-summary,#generator-status,.map-legend{font-size:11px;line-height:1.6}.generator-help,.map-legend{color:#b8b9b0}#generator-status{color:#ecd390;min-height:2em}#generator-summary{white-space:pre-line}.seed-controls{display:flex;gap:5px;align-items:end}.seed-controls input{flex:1;min-width:0}.seed-controls button{flex-shrink:0}#generated-code{font-weight:bold;font-size:13px}.dungeon-map{--map-size:25;display:grid;grid-template-columns:repeat(var(--map-size),minmax(0,1fr));width:100%;aspect-ratio:1;background:#101216;border:3px inset #96988c;gap:1px;padding:3px}.map-cell{display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;font-size:clamp(5px,.8vw,11px);line-height:1;color:#e2dec8;background:#13161a}.map-cell.floor{background:#737464}.map-cell.wall{background:#343c3c}.map-cell.unknown{background:#101216;color:transparent}.map-cell.player{background:#c7b77a;color:#141d2b;font-weight:bold}.map-cell.enemy{color:#ffb193}.map-cell.exit{color:#bcf09c}#dungeon-map-dialog{width:min(700px,94vw);max-height:94vh;overflow:auto;padding:20px;background:#34363c}#dungeon-map-dialog .inventory-header{background:#34363c;top:-20px}#map-code{font-size:11px;overflow-wrap:anywhere}#configure-dungeon,#resume-expedition{display:block;width:100%;font-size:10px;padding:5px;margin-top:5px}.portal-code{top:27%;width:290px;padding:9px}.portal-code input{font-size:17px;padding:6px;margin:5px 0}.portal-code small{font-size:9px}.game-top{flex-wrap:wrap;row-gap:4px}#run-code{font-size:8px;overflow-wrap:anywhere}#dungeon-generator h3{font-size:13px;margin:15px 0}
@media(max-width:700px){.generator-layout{grid-template-columns:1fr}#dungeon-generator,#dungeon-map-dialog{padding:12px}.generator-layout>section+section{margin-top:0}.dungeon-map{max-width:500px;margin:auto}.map-cell{font-size:8px}header nav{gap:3px}header nav button{font-size:9px;padding:6px}header{height:auto;min-height:76px;gap:5px}#map-toggle kbd{display:none}.portal-code{top:24%;width:70%;padding:6px}.portal-code label{font-size:8px}.portal-code input{font-size:11px;padding:4px;margin:3px 0}.portal-code small{display:none}#configure-dungeon,#resume-expedition{font-size:8px;padding:3px;margin-top:3px}.portal-code p{font-size:8px}.portal .enter{font-size:8px;padding:6px 10px;bottom:4%}.brand{font-size:15px;letter-spacing:0;flex-shrink:0}.brand small{font-size:6px;letter-spacing:1px}}
.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:35px 16px;background:radial-gradient(ellipse at top,#33392f,#131619 65%)}.login-brand{font-size:28px;text-align:center;margin-bottom:30px;line-height:1.3}.login-brand small{font-size:9px;margin-top:12px;letter-spacing:3px}.login-card{width:min(440px,100%);padding:28px;background:#34373d;border:4px ridge #95978e;box-shadow:0 14px 45px #0008}.login-card h2{font-size:23px;line-height:1.3}.login-card .eyebrow{color:#cfc397}.login-card .muted{font-size:12px;line-height:1.7}.approval-note{font-size:11px;color:#c1bda9;line-height:1.7;margin:22px 0 0;border-top:1px solid #77796c;padding-top:15px}#access-status{font-size:12px;color:#d7d9a6;line-height:1.7}#auth-error{line-height:1.6}#game-shell[hidden]{display:none!important}#admin-dialog{width:min(820px,96vw);max-height:92vh;overflow:auto;background:#36393f}#admin-dialog .inventory-header{background:#36393f}.admin-toolbar{display:flex;align-items:end;gap:12px}.admin-toolbar label{margin:0}.admin-toolbar select{display:block;padding:8px;background:#24272c;color:#e4ddc3}.admin-account{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #656961}.admin-account>div{flex:1;min-width:0}.admin-account strong,.admin-account span{display:block;overflow-wrap:anywhere}.admin-account span{font-size:11px;color:#d4ceb8;margin-top:5px}.admin-account small{font-size:10px}#admin-status{font-size:12px;line-height:1.5;min-height:24px}.admin-account button{font-size:11px}#ground-panel{margin:5px 0 10px;border:1px solid #62675c;padding:7px;background:#2a2e32}.ground-heading{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.ground-heading b{font-size:9px;margin-right:auto}.ground-heading button{font-size:9px;padding:4px 7px}.ground-heading button[aria-pressed=true]{background:#59634c;color:#f0dfa8}#ground-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:6px}#ground-slots button{min-height:37px;display:flex;align-items:center;gap:7px;text-align:left;padding:4px 7px;font-size:9px;background:#353a40}#ground-slots button[aria-pressed=true]{border-color:#d3bf7d}#ground-slots .ground-icon{width:27px;height:27px;flex-shrink:0}#ground-slots small{display:block;font-size:8px;color:#c6c4b4}#ground-help{font-size:9px;margin:6px 0 0;color:#cbc5af}.home-quadrants{display:grid;width:100%;height:100%;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.home-quadrants>span{display:flex;align-items:center;justify-content:center;position:relative;border:1px solid #5b625455;min-width:0;min-height:0}.home-quadrants svg{max-width:100%;max-height:100%}.home-quadrants small{position:absolute;right:0;bottom:0;font-size:8px;background:#171a1d}.scene-target.ground-drop{border:1px dashed #b5ac7188;background:#c3b36c10}.scene-target.ground-drop:hover{background:#d2bd7755}@media(max-width:620px){.login-brand{font-size:23px}.login-card{padding:20px}.admin-account{flex-wrap:wrap}.admin-account>div{flex-basis:65%}.admin-account button{flex:1}.ground-heading b{width:100%}#ground-slots button{font-size:8px}.home-quadrants small{font-size:6px}}
