:root{color:#e7e5d5;font-synthesis:none;image-rendering:pixelated;--ink:#090d12;--panel:#131a22;--panel-2:#1a2430;--line:#465568;--gold:#e6b84d;--green:#61b15a;--red:#bd4c4c;--blue:#4d89bd;background:#090d12;font-family:Courier New,ui-monospace,monospace}*{box-sizing:border-box}body{background:radial-gradient(circle at 50% 0,#1c2936,#080b10 55%);min-width:320px;min-height:100vh;margin:0}button{font:inherit;color:#ece8d5;cursor:pointer;background:#253241;border:2px solid #52677d;padding:.65rem .8rem;box-shadow:3px 3px #070a0e}button:hover:not(:disabled){color:#fff4bf;border-color:var(--gold);transform:translate(-1px,-1px)}button:disabled{opacity:.38;cursor:not-allowed}button:focus-visible,summary:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #fff1b8}.skip-link{z-index:20;color:#111;background:#fff1b8;padding:.6rem;position:absolute;top:-60px;left:10px}.skip-link:focus{top:10px}.game-shell{flex-direction:column;min-height:100vh;display:flex}.titlebar{background:#0d131a;border-bottom:4px solid #364657;justify-content:space-between;align-items:center;gap:1rem;min-height:78px;padding:.75rem 1.25rem;display:flex;box-shadow:0 5px #050709}.titlebar>div{align-items:center;gap:.8rem;display:flex}.sigil{background:var(--gold);color:#17130b;border:4px double #5e451d;place-items:center;width:55px;height:55px;font-weight:900;display:grid}h1,h2,h3,h4,p{margin-top:0}.titlebar h1{letter-spacing:.15em;color:#fff2bd;margin:0;font-size:clamp(1.15rem,3vw,1.8rem)}.titlebar p{color:#7f93a8;margin:.2rem 0 0;font-size:.72rem}.currency{flex-wrap:wrap;justify-content:flex-end;font-size:.8rem}.currency span{border:1px solid #394a5a;padding:.55rem}.currency b{color:var(--gold)}main{flex:1;width:100%;padding:10px;position:relative}.panel,.scene{background:linear-gradient(135deg, #ffffff06 25%, transparent 25%) 0 0 / 8px 8px, var(--panel);border:3px solid #344555;outline:1px solid #0a0d11;box-shadow:5px 5px #05070a}.panel{padding:1rem}.panel>h2{color:var(--gold);letter-spacing:.1em;border-bottom:2px solid #3d4f60;padding-bottom:.6rem;font-size:1rem}.portrait{text-align:center;margin:1rem 0}.pixel-knight{color:#c8d1d5;text-shadow:4px 4px #2a3540;background:#0c1117;border:4px double #566b7f;place-items:center;width:90px;height:90px;margin:auto;font-size:3.5rem;display:grid}.portrait span{color:#111;background:var(--gold);margin-top:-8px;padding:.25rem .6rem;font-weight:900;display:inline-block}.character-panel>label{color:#90a0ad;margin:.7rem 0 .2rem;font-size:.7rem;font-weight:900;display:block}.bar{background:#06090c;border:2px solid #3e4e5e;height:19px;position:relative;overflow:hidden}.bar span{background:linear-gradient(#d06060,#8e3030);height:100%;display:block}.bar.mana span{background:linear-gradient(#5c9bc9,#356492)}.bar.xp span{background:linear-gradient(#e3bd59,#9a7127)}.bar b{text-align:center;text-shadow:1px 1px #000;font-size:.7rem;line-height:15px;position:absolute;inset:0}.stat-grid{grid-template-columns:1fr 1fr;gap:5px;display:grid}.stat-grid div{background:#0c1218;border:1px solid #2d3d4c;justify-content:space-between;padding:.45rem;display:flex}.stat-grid dt{color:#7f92a3}.stat-grid dd{color:#fff1b8;margin:0;font-weight:700}.attributes h3,.inventory-panel>h3{color:#8ea0b0;margin:1.2rem 0 .5rem;font-size:.75rem}.attributes h3{justify-content:space-between;display:flex}.attributes small{color:var(--gold)}.attribute-row{background:#0c1218;border:1px solid #2d3d4c;margin:.4rem 0;padding:.5rem}.attribute-heading{color:#fff1b8;justify-content:space-between;align-items:baseline;display:flex}.attribute-heading span>small{color:#718596;margin-left:.3rem;font-size:.6rem}.attribute-row p{color:#a7b4bd;margin:.3rem 0;font-size:.63rem;line-height:1.35}.attribute-row footer{justify-content:space-between;align-items:center;gap:.4rem;display:flex}.attribute-row footer small{color:#7f92a3;font-size:.58rem;line-height:1.3}.attribute-row button{color:var(--gold);flex:0 0 30px;padding:.25rem;font-weight:900}.derived-panel{background:#0c1218;border:1px solid #344555;margin-top:1rem}.derived-panel summary{color:#8ea0b0;cursor:pointer;padding:.55rem;font-size:.7rem;font-weight:700}.derived-panel dl{margin:0;padding:0 .55rem .55rem}.derived-panel dl div{border-bottom:1px solid #202e3a;justify-content:space-between;gap:.5rem;padding:.24rem 0;font-size:.62rem;display:flex}.derived-panel dt{color:#788c9c}.derived-panel dd{color:#e9dfb6;text-align:right;margin:0}.tree-branch{color:#718596;margin:0;padding:0 .55rem .45rem;font-size:.6rem}.skill-node{background:#101822;border:1px solid #2d3d4c;margin:0 .55rem .45rem;padding:.45rem}.skill-node.learned{border-color:#4f6f3d}.skill-node header{justify-content:space-between;align-items:baseline;gap:.4rem;display:flex}.skill-node h4{color:#fff1b8;margin:0;font-size:.68rem}.skill-node header small{color:#718596;font-size:.54rem}.skill-node p{color:#a7b4bd;margin:.28rem 0 0;font-size:.6rem;line-height:1.35}.skill-node p.costs{color:#7f92a3;font-size:.56rem}.skill-node footer{justify-content:space-between;align-items:center;gap:.4rem;margin-top:.35rem;display:flex}.skill-node .ranks{color:var(--gold);letter-spacing:.08rem;font-size:.58rem}.skill-node .ranks small{color:#7f92a3;letter-spacing:0}.skill-node button{padding:.25rem .45rem;font-size:.56rem}.reset-skills{width:calc(100% - 1.1rem);margin:0 .55rem .55rem;padding:.35rem;font-size:.58rem;display:block}.actions button.learned-skill{border-color:var(--gold)}.automation-toggle{width:calc(100% - 1.1rem);margin:0 .55rem .45rem;padding:.35rem;font-size:.58rem;display:block}.automation-rules{color:#7f92a3;margin:0 .55rem .45rem;padding-left:1.1rem;font-size:.58rem}.automation-rule{margin-bottom:.35rem}.automation-rule>span:first-child{color:#a7b4bd}.automation-rule select,.automation-rule input{max-width:100%;font:inherit;color:#e8edf0;background:#101822;border:1px solid #2d3d4c;margin:0 .2rem .2rem 0;padding:.15rem;font-size:.58rem}.automation-rule input{width:3.2rem}.automation-rule-tools button{padding:.1rem .35rem;font-size:.56rem}.automation-tools{flex-wrap:wrap;gap:.35rem;margin:0 .55rem .55rem;display:flex}.automation-tools button{flex:1;padding:.35rem;font-size:.58rem}.actions button.automation-switch.on{border-color:var(--green);background:#24402a}.center-stage{flex-direction:column;gap:8px;min-width:0;display:flex}.scene{background:linear-gradient(#111c28 0 45%,#17261e 45% 47%,#0b1510 47%);min-height:620px;position:relative;overflow:hidden}.scene:before{content:"";opacity:.35;background-image:linear-gradient(90deg,#0000 49%,#10221a 49% 53%,#0000 53%),linear-gradient(#0000 85%,#090d10 85%);background-size:97px 100%,100% 60px;position:absolute;inset:0}.scanlines{pointer-events:none;z-index:5;opacity:.12;background:repeating-linear-gradient(0deg,#0000 0 3px,#000 3px 4px);position:absolute;inset:0}.town-view,.dungeon-view{z-index:2;text-align:center;min-height:620px;padding:1.5rem;position:relative}.town-view{flex-direction:column;justify-content:center;align-items:center;display:flex}.town-view .moon{color:#e7e0b1;text-shadow:0 0 20px #d4c979;font-size:4rem;position:absolute;top:50px;right:14%}.castle{white-space:pre;color:#66737a;text-shadow:7px 7px #080b0e;margin-bottom:2rem;font-size:4rem;line-height:.65}.town-view h2,.dungeon-view>h2{color:#f2dea1;letter-spacing:.12em}.primary{color:#fff4c4;background:#735224;border-color:#d0a744}.huge{margin-top:1.5rem;padding:1rem 1.5rem;font-weight:900}.unspent-warning{color:#f0b3b3;border:2px solid var(--red);background:#241618;max-width:30rem;margin:1rem auto 0;padding:.6rem .8rem;font-size:.8rem;box-shadow:3px 3px #070a0e}.region-options{flex-direction:column;align-items:center;gap:1.25rem;margin-top:1.5rem;display:flex}.region-options .huge{margin-top:0}.huge.locked{opacity:1;color:#93a0ae;cursor:not-allowed;background:#1b232c;border:2px dashed #46566a;box-shadow:2px 2px #070a0e}.room-progress{justify-content:center;gap:.4rem;margin-bottom:1.5rem;display:flex}.room-progress span{color:#65798d;background:#10161c;border:2px solid #3c4d5e;place-items:center;width:28px;height:28px;display:grid}.room-progress .done{color:#99d18f;background:#28472d}.room-progress .current{border-color:var(--gold);color:#15110b;background:var(--gold)}.enemies{justify-content:center;align-items:center;gap:1rem;min-height:250px;display:flex}.enemies article{background:#090d12d6;border:3px solid #435263;width:min(220px,45%);padding:1rem;box-shadow:5px 5px #07090b}.enemy-sprite{color:#93a98c;text-shadow:5px 5px #243125;font-size:5rem}.enemies h3{color:#f0dca0;margin-bottom:.2rem}.enemies small{color:#8e9daa;margin-bottom:.6rem;display:block}.enemies article.defeated{opacity:.35;filter:grayscale()}.telegraph{color:#1b0d0d;background:#e56c52;margin-top:.7rem;padding:.4rem;animation:.5s steps(2,end) infinite pulse;display:block}@keyframes pulse{50%{opacity:.55}}.actions{flex-wrap:wrap;justify-content:center;gap:6px;margin:1rem 0;display:flex}.actions button{min-width:130px;font-size:.78rem;font-weight:700}.actions small{color:#9eb0be;margin-top:.3rem;font-size:.65rem;display:block}.actions .brace{background:#6f3029;border-color:#e46a51}.combat-log{text-align:left;background:#05080ac7;border:1px solid #344353;max-width:640px;min-height:92px;margin:auto;padding:.6rem}.combat-log p{color:#aeb8bd;margin:.15rem;font-size:.72rem}.choice,.room-clear{background:#090e13e6;border:3px double #617386;max-width:520px;margin:1.2rem auto 0;padding:1.5rem}.choice button,.room-clear button{margin:.4rem}.event-icon{color:#73b6bf;font-size:4rem}.message-line{color:#c5b778;background:#0d131a;border:2px solid #334555;padding:.7rem 1rem;font-size:.8rem}.inventory-panel>p{color:#8fa0ac;font-size:.8rem}.overweight{font-weight:700;color:#ff6e5d!important}.branch-choice{max-width:940px}.branch-choice>p{color:#8fa0ac;max-width:62ch;font-size:.75rem}.branch-options{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.75rem;margin-top:.75rem;display:grid}.branch-options dl{gap:.2rem;margin:.35rem 0 0;display:grid}.branch-options dl div{justify-content:space-between;gap:.5rem;display:flex}.branch-options dt{color:#8fa0ac;font-size:.68rem}.branch-options dd{color:#e4e1d0;text-align:right;margin:0;font-size:.68rem}.item-list{gap:.5rem;display:grid}.item-card{text-align:left;background:#0d1319;border:2px solid #49545e;padding:.55rem}.item-card header{color:#aeb6bd;justify-content:space-between;font-size:.68rem;display:flex}.item-card h4{color:#e4e1d0;margin:.35rem 0;font-size:.82rem}.item-card p{color:#8fa0aa;margin:.18rem 0;font-size:.68rem}.item-card footer{gap:.35rem;margin-top:.5rem;display:flex}.item-card button{padding:.3rem .45rem;font-size:.65rem}.item-card.uncommon{border-color:#4b9758}.item-card.uncommon h4{color:#7fd38a}.item-card.rare{border-color:#5085c8}.item-card.rare h4{color:#75a9ea}.item-card.epic{border-color:#9c60c7}.item-card.epic h4{color:#c28ee8}.item-card.legendary{border-color:#d89937;box-shadow:inset 0 0 12px #7c4a1c55}.item-card.legendary h4,.item-card p.power{color:#f2b64d}.positive{color:#67c778}.negative{color:#cf6868}.empty{color:#5f6f7b;font-size:.75rem}.danger{border-color:#884a4a}.save-tools{grid-template-columns:1fr 1fr;gap:.4rem;margin-top:1rem;display:grid}.save-tools .danger{grid-column:1/-1}.footer{text-align:center;color:#50616e;letter-spacing:.12em;background:#080b0f;border-top:1px solid #263541;padding:.45rem;font-size:.65rem}.game-window{z-index:20;scrollbar-color:#465568 #0c1218;scrollbar-width:thin;width:min(380px,100% - 20px);max-height:calc(100% - 20px);position:absolute;top:10px;overflow:auto;box-shadow:8px 8px #05070a,0 0 0 1px #0a0d11}.game-window.left{left:10px}.game-window.right{width:min(340px,100% - 20px);right:10px}.game-window.skill-window{width:min(560px,100% - 20px)}.window-title{z-index:1;background:#0d131a;border-bottom:2px solid #3d4f60;align-items:center;gap:.5rem;margin:-1rem -1rem .8rem;padding:.6rem 1rem;display:flex;position:sticky;top:-1rem}.window-title h2{color:var(--gold);letter-spacing:.1em;flex:1;margin:0;font-size:.95rem}.window-title h2 small{color:#8ea0b0;letter-spacing:.04em;margin-left:.6rem;font-size:.62rem}.window-title button{padding:.15rem .45rem;font-size:.7rem}kbd{color:#c9d4dc;min-width:1.3em;font:inherit;text-align:center;background:#06090c;border:1px solid #465568;padding:0 .3em;font-size:.6rem;display:inline-block}.skill-columns{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.skill-column h3{color:#8ea0b0;margin:0 0 .4rem;padding:0 .55rem;font-size:.62rem}.skill-column .skill-node{margin:0 0 .45rem}.skill-column.active .skill-node+.skill-node{margin-top:1rem;position:relative}.skill-column.active .skill-node+.skill-node:before{content:"▼";color:#566b7f;font-size:.6rem;line-height:1rem;position:absolute;top:-1rem;left:50%;transform:translate(-50%)}.forge-list{margin:0;padding:0;list-style:none}.forge-item{background:#101822;border:1px solid #2d3d4c;margin-bottom:.45rem;padding:.45rem;font-size:.62rem}.forge-item header{justify-content:space-between;gap:.4rem;display:flex}.forge-item header small{color:#718596}.forge-item p{color:#a7b4bd;margin:.3rem 0}.forge-item footer{color:#c5b778;justify-content:space-between;align-items:center;gap:.4rem;display:flex}.forge-item button{padding:.25rem .45rem;font-size:.56rem}.enhanced{color:var(--gold)}.forge-tabs{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:.6rem;display:grid}.forge-tabs button{padding:.4rem;font-size:.62rem}.forge-tabs button.open{border-color:var(--gold);background:#2a2614}.forge-item .affix-row{color:#a7b4bd;border-top:1px solid #202e3a;margin-top:.25rem;padding-top:.25rem}.town-services{grid-template-columns:repeat(2,minmax(0,220px));gap:.6rem;margin-top:1.25rem;display:grid}.town-services button{padding:.7rem .8rem;font-size:.72rem;font-weight:700}.training-report{border-collapse:collapse;width:100%;margin-top:.4rem;font-size:.62rem}.training-report th,.training-report td{text-align:right;border-bottom:1px solid #202e3a;padding:.3rem .35rem}.training-report th:first-child{color:#788c9c;text-align:left;font-weight:400}.training-report thead th{color:var(--gold);font-size:.56rem}.training-report td{color:#e9dfb6}.training-report td.previous{color:#8e9daa}.hud{grid-template-columns:auto minmax(200px,1fr) auto;align-items:center;gap:1rem;padding:.6rem 1rem;display:grid}.hud .portrait{margin:0}.hud .pixel-knight{width:58px;height:58px;font-size:2.2rem}.hud-bars{grid-template-columns:auto 1fr;align-items:center;gap:4px 8px;display:grid}.hud-bars label{color:#90a0ad;font-size:.62rem;font-weight:900}.hud-menu{grid-template-columns:1fr 1fr;gap:6px;display:grid}.hud-menu button{text-align:left;padding:.45rem .6rem;font-size:.66rem;position:relative}.hud-menu button.open{border-color:var(--gold);background:#2a2614}.hud-menu button.warn{border-color:#e46a51}.hud-menu kbd{margin-left:.3rem}.badge{color:#111;background:var(--gold);padding:1px 4px;font-size:.55rem;font-weight:900;position:absolute;top:-8px;right:-6px}.hud-menu button.warn .badge{background:#e46a51}@media (width>=721px){.game-shell{height:100dvh;min-height:0}main{min-height:0;display:flex}.center-stage{flex:1;min-height:0}.scene{flex:1;min-height:300px}.town-view,.dungeon-view{scrollbar-color:#465568 #0c1218;scrollbar-width:thin;min-height:0;position:absolute;inset:0;overflow-y:auto}.town-view{justify-content:safe center}.room-clear,.choice{z-index:3;position:sticky;bottom:0;box-shadow:0 -10px 18px #05080acc}}@media (width>=721px) and (height<=860px){.enemies{min-height:0}.enemies article{padding:.6rem}.enemy-sprite{font-size:3.4rem}.town-view,.dungeon-view{padding:1rem}}@media (width<=1050px){.item-list{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}@media (width<=720px){.titlebar{align-items:flex-start}.currency{font-size:.65rem}.currency span{display:none}.currency button{padding:.4rem}.scene,.town-view,.dungeon-view{min-height:560px}.enemies article{width:48%;padding:.6rem}.enemy-sprite{font-size:3.5rem}.titlebar h1{letter-spacing:.08em}.game-window,.game-window.left,.game-window.right,.game-window.skill-window{z-index:50;width:auto;max-height:none;position:fixed;inset:0}.skill-columns{grid-template-columns:1fr}.hud{z-index:30;grid-template-columns:auto 1fr;position:sticky;bottom:0}.hud .pixel-knight{width:44px;height:44px;font-size:1.6rem}.hud-menu{grid-column:1/-1;grid-template-columns:repeat(4,1fr)}.hud-menu button{text-align:center}.hud-menu kbd{display:none}}.enemies article{position:relative}.float-number{z-index:3;color:#fff;text-shadow:2px 2px #000;pointer-events:none;font-size:1.15rem;font-weight:700;animation:.9s steps(9,end) forwards float-up;position:absolute;top:2.2rem;left:50%}.float-number.crit{color:var(--gold);font-size:1.7rem}.float-number.miss{color:#8e9daa;font-size:.85rem}@keyframes float-up{0%{opacity:1;transform:translate(-50%)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-48px)}}.enemy-sprite.struck{animation:.3s steps(3,end) struck}.enemy-sprite.struck.crit{animation:.36s steps(4,end) struck-crit}@keyframes struck{0%{color:#fff;transform:translate(-5px)}50%{transform:translate(5px)}to{transform:none}}@keyframes struck-crit{0%{color:var(--gold);transform:translate(-7px)scale(1.12)}33%{transform:translate(7px)}66%{transform:translate(-3px)}to{transform:none}}.player-feedback{justify-content:center;gap:.7rem;height:1.7rem;margin-top:.4rem;display:flex}.player-feedback span{text-shadow:2px 2px #000;font-weight:700;animation:.9s steps(9,end) forwards float-up-player}.player-feedback .hurt{color:#ff6b6b}.player-feedback .hurt.blocked{color:#7fb4e6}.player-feedback .hurt.big{font-size:1.35rem}.player-feedback .dodge{color:#c9d4dc}.player-feedback .ward{color:#b38cff}.player-feedback .heal{color:#7ed36f}@keyframes float-up-player{0%{opacity:1;transform:translateY(8px)}70%{opacity:1}to{opacity:0;transform:translateY(-14px)}}.hurt-flash{z-index:2;pointer-events:none;animation:.3s steps(3,end) forwards fade-out;position:absolute;inset:0;box-shadow:inset 0 0 0 6px #e54c4cbf}.hurt-flash.blocked{box-shadow:inset 0 0 0 6px #4d89bdb3}@keyframes fade-out{to{opacity:0}}.actions button{position:relative}.auto-pulse{color:#0b1510;background:var(--green);padding:1px 4px;font-size:.5rem;animation:.5s steps(4,end) forwards fade-out;position:absolute;top:-9px;right:-6px}.bar span{transition:width .25s steps(4,end)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.float-number,.player-feedback span,.enemy-sprite.struck,.hurt-flash,.auto-pulse{animation:none!important}.float-number{transform:translate(-50%)}}
