:root{color-scheme:dark;--bg:#111318;--panel:#1a1d24;--line:#333741;--text:#ececf0;--muted:#a9adb9;--gold:#e5bd76;--red:#ce6d72;font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);line-height:1.65}button,input{font:inherit}button{color:inherit;background:#252933;border:1px solid #424754;border-radius:6px;padding:.55rem .95rem;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}button:hover:enabled{background:#333946;border-color:var(--gold)}button:disabled{opacity:.45;cursor:wait}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-size:2.25rem;line-height:1.3;letter-spacing:.025em;margin-bottom:1rem}h2{font-size:1.15rem;margin:0}h3{font-size:1rem;margin-bottom:.7rem}p{margin-bottom:1rem}[hidden]{display:none!important}.topbar{max-width:1500px;margin:auto;padding:1.25rem 3rem;display:flex;align-items:center;gap:2rem;border-bottom:1px solid var(--line)}.brand{font-size:1.25rem;letter-spacing:.12em;font-weight:700}.brand span{display:block;font-size:.75rem;letter-spacing:.16em;color:var(--gold);font-weight:400}.edition{color:var(--muted);font-size:.875rem;margin-left:auto}.topbar button{font-size:.875rem;background:transparent}main{max-width:1500px;margin:auto;padding:2.5rem 3rem}.eyebrow{color:var(--gold);font-size:.75rem;letter-spacing:.13em;display:block;margin-bottom:.75rem}.section-heading,.run-heading{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin:1.5rem 0 2rem}.section-heading p{color:var(--muted);margin:0}.characters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem}.character{text-align:left;display:flex;flex-direction:column;position:relative;min-height:350px;padding:1.5rem 1.2rem;border-top:3px solid var(--accent);overflow:hidden;background:linear-gradient(150deg,var(--surface),#191c22 70%);--accent:#d08672;--surface:#392a2a}.character-1{--accent:#86b7a5;--surface:#253932}.character-2{--accent:#d9bb74;--surface:#393424}.character-3{--accent:#af9ee3;--surface:#302a40}.character-4{--accent:#9fbbcf;--surface:#253542}.character:hover:enabled{transform:translateY(-5px);border-color:var(--accent);background:var(--surface)}.character-number{font-family:Georgia,serif;font-size:4.5rem;line-height:1.1;color:var(--accent);margin-bottom:2.5rem;opacity:.75}.character .eyebrow{color:var(--accent);font-size:.75rem;letter-spacing:.08em}.character h2{font-size:1.2rem;margin:.3rem 0 .9rem}.character p{font-size:.875rem;color:#bec0c9;line-height:1.8}.character-action{font-size:.875rem;margin-top:auto;padding-top:1rem;color:var(--accent)}.local-note{font-size:.8125rem;color:var(--muted);margin:1.5rem 0}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:1.5rem;min-width:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}.panel-heading>span{font-size:.875rem;color:var(--muted)}.primary{background:var(--gold);border-color:var(--gold);color:#1b1710;font-weight:650}.primary:hover:enabled{background:#f1cd8e}.stats{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);border-radius:8px;margin:0 0 1.5rem;background:#181b21}.stat{padding:1rem 1.5rem;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat span{display:block;color:var(--muted);font-size:.875rem}.stat strong{font-size:1.45rem;font-weight:550;font-variant-numeric:tabular-nums}.stat:first-child strong{color:#e88a8c}.stat:nth-child(2) strong,.stat:nth-child(4) strong{color:var(--gold)}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:1.5rem}.play-area{display:grid;gap:1.5rem;align-content:start}.sidebar{align-self:start}.sidebar h2{margin-bottom:1rem}.sidebar h3{margin-top:1.75rem;color:#c8c9d0}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.quick-actions button{font-size:.875rem;padding:.5rem .3rem}.inventory{display:flex;gap:.5rem;flex-wrap:wrap}.inventory span{padding:.25rem .6rem;border:1px solid #40434d;border-radius:4px;font-size:.875rem}.inventory button{font-size:.875rem;text-align:left}.boss{border-top:1px solid var(--line);margin:1.75rem 0 0;padding-top:1rem;color:var(--gold);font-size:.875rem}.enemies{display:flex;gap:1rem;flex-wrap:wrap}.enemy{flex:1 1 180px;text-align:left;min-width:0;padding:1rem;background:#24262e}.enemy[aria-pressed=true]{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:#302d27}.enemy h3{font-size:1.1rem}.enemy p{font-size:.875rem;margin-bottom:.6rem}.enemy .intent{color:#efa3a0}.enemy progress{width:100%;height:7px;accent-color:var(--red);display:block;margin:.7rem 0}.status-text{font-size:.875rem;color:var(--muted);margin:.8rem 0 0;white-space:pre-wrap}.hand{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.8rem;align-items:stretch}.playing-card{position:relative;text-align:left;padding:1rem;min-height:235px;display:flex;flex-direction:column;align-items:flex-start;background:linear-gradient(160deg,#30323c,#23252c);border-color:#565b68}.playing-card:hover:enabled{transform:translateY(-3px)}.type-attack{border-top:3px solid #cc7b7b}.type-skill{border-top:3px solid #8faeba}.type-power{border-top:3px solid #b09ad3}.card-cost{display:inline-grid;place-items:center;min-width:2rem;min-height:2rem;padding:0 .2rem;border:1px solid var(--gold);border-radius:50%;color:var(--gold);font-size:1.1rem}.card-type{font-size:.75rem;color:var(--muted);position:absolute;right:1rem;top:1.2rem}.playing-card h3{margin:1rem 0 .5rem}.card-description{font-size:.875rem;white-space:pre-wrap;line-height:1.7}.card-preview{font-size:.8125rem;color:var(--gold)}.card-index{font-size:.75rem;color:var(--muted);margin-top:auto}.hint{font-size:.875rem;color:var(--muted)}.piles{display:flex;gap:.6rem;margin-top:1.25rem;flex-wrap:wrap}.piles button{font-size:.875rem;background:transparent}.node-view{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9375rem;line-height:1.85;max-height:500px;overflow-y:auto}.choices{display:grid;gap:.65rem;margin-top:1rem}.choice{text-align:left;background:#282b31;border-left:3px solid var(--gold)}.console{margin-top:1.5rem}.log{max-height:320px;overflow-y:auto;scrollbar-color:#535560 transparent}.log-entry{border-bottom:1px solid var(--line);padding:1rem 0}.log-entry:first-child{padding-top:0}.log-command{color:var(--gold);font-family:Consolas,monospace;font-size:.875rem;margin-bottom:.5rem}.log pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:.9375rem;margin:0;color:#d0d2da}.command-hints{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.hint-button{font: .8125rem Consolas,monospace;padding:.35rem .6rem;background:transparent}form{margin-top:1.25rem}form label{display:block;font-size:.875rem;margin-bottom:.5rem;color:var(--muted)}.command-line{display:flex;gap:.65rem}.command-line input{min-width:0;flex:1;border:1px solid #474d59;background:#11151b;border-radius:5px;color:var(--text);padding:.75rem 1rem}.confirmation{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:1rem;margin-bottom:1rem;background:#393124;border:1px solid #927444;border-radius:6px}.confirmation span{flex:1;min-width:200px}.error{white-space:pre-wrap;overflow-wrap:anywhere;padding:1rem;margin-bottom:1.5rem;background:#3b2228;border:1px solid #a35663;border-radius:7px}.loading{max-width:650px;margin:7rem auto;text-align:center}.loading p{color:var(--muted)}.loading progress{display:block;width:220px;height:5px;margin:2rem auto;accent-color:var(--gold)}footer{max-width:1500px;margin:1rem auto 0;border-top:1px solid var(--line);padding:1.5rem 3rem;display:flex;justify-content:space-between;color:var(--muted);font-size:.8125rem}
@media(min-width:1300px){.hand{grid-template-columns:repeat(auto-fit,minmax(160px,210px))}}@media(max-width:1100px){.characters{grid-template-columns:repeat(3,minmax(0,1fr))}.workspace{grid-template-columns:minmax(0,1fr) 210px}.topbar,main,footer{padding-left:1.5rem;padding-right:1.5rem}.character{min-height:320px}.hand{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}@media(max-width:780px){.workspace{grid-template-columns:1fr}.characters{grid-template-columns:repeat(2,minmax(0,1fr))}.character{min-height:290px}.character-number{margin-bottom:1.5rem}.section-heading{display:block}.section-heading p{margin-top:1rem}.sidebar{display:block}.stats{grid-template-columns:repeat(3,1fr);gap:0}.stat{padding:.8rem;border:0}.stat strong{font-size:1.15rem}.edition{display:none}.topbar{gap:.7rem;padding:1rem}.topbar button{margin-left:auto}.brand{font-size:1.05rem}.brand span{font-size:.75rem}.topbar button{padding:.45rem .6rem}.panel{padding:1rem}main{padding:1.5rem 1rem}h1{font-size:1.8rem}.run-heading{align-items:start;gap:1rem}.run-heading button{font-size:.875rem}.hand{grid-template-columns:repeat(2,minmax(0,1fr))}.playing-card{min-height:220px}.panel-heading{flex-wrap:wrap}.loading{margin:4rem auto}.quick-actions{grid-template-columns:repeat(3,1fr)}footer{padding:1.25rem 1rem;gap:1rem}.command-line button{padding:.5rem .75rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Relic details: native modal supports touch, keyboard focus and Escape. */
.inventory .relic-button{padding:.25rem .6rem;border-color:#66563b;color:var(--gold);overflow-wrap:anywhere;max-width:100%}
.relic-dialog{color:var(--text);background:var(--panel);border:1px solid #75613f;border-radius:10px;width:min(36rem,calc(100% - 2rem));max-height:calc(100dvh - 2rem);padding:1.5rem;overflow:auto;box-sizing:border-box}
.relic-dialog::backdrop{background:rgb(0 0 0 / .7)}
.relic-dialog .panel-heading{align-items:flex-start}
.relic-dialog h2{color:var(--gold);overflow-wrap:anywhere}
.relic-dialog .panel-heading button{flex-shrink:0}
.relic-dialog h3{color:var(--muted);font-size:.875rem;margin-top:1.5rem;margin-bottom:.5rem}
.relic-info,.relic-story{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}
.relic-story{margin-bottom:0}

/* Button-first actions and focused card selection. */
.action-title{margin:1.25rem 0 .5rem;color:var(--gold)}
.action-title:empty{display:none}.action-row{display:flex;align-items:stretch;gap:.5rem;min-width:0}
.action-row>.choice{flex:1;min-width:0}.choice strong{display:block;font-size:.9375rem}
.action-description{display:block;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);font-size:.875rem;font-weight:400;margin-top:.35rem}
.action-reason{display:block;color:#efa3a0;font-size:.8125rem;margin-top:.35rem}
.action-detail{align-self:start;font-size:.8125rem}.choice{overflow-wrap:anywhere}
.selection-panel{border-color:var(--gold);background:linear-gradient(135deg,#302c24,var(--panel))}
.selection-panel h2{color:var(--gold);margin-bottom:.6rem}.selection-panel .choices{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.choice[aria-pressed=true]{background:#413727;border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.selection-submit{margin-top:1rem}.selection-submit button{width:100%}
.advanced-commands{margin-top:1.25rem;border-top:1px solid var(--line);padding-top:1rem}
.advanced-commands summary{cursor:pointer;color:var(--muted);padding:.4rem 0;min-height:44px}
.advanced-commands summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.advanced-commands[open] summary{color:var(--gold)}.advanced-commands .hint{margin:.6rem 0}
.action-dialog{width:min(46rem,calc(100% - 2rem))}.action-dialog .choices{max-height:65dvh;overflow:auto;padding:.25rem}
.action-dialog .panel-heading{position:sticky;top:-1.5rem;background:var(--panel);padding:.75rem 0;z-index:1}
button:disabled{cursor:not-allowed}.node-view{max-height:280px}.character-5{--accent:#83b9d8;--surface:#223948}
@media(min-width:1300px){.characters{grid-template-columns:repeat(3,minmax(0,1fr))}.character{min-height:300px}}
@media(max-width:780px){.action-dialog{padding:1rem}.action-dialog .panel-heading{top:-1rem}.action-row button{min-height:44px}.selection-panel .choices{grid-template-columns:1fr}}

/* Keep the original roster together, followed by a separated custom roster. */
.character-group-title{font-size:1rem;color:var(--muted);margin-bottom:1rem;letter-spacing:.08em}
.custom-characters{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.custom-characters .character-group-title{color:var(--gold)}
.original-characters .characters{grid-template-columns:repeat(4,minmax(0,1fr))}
.custom-characters .characters{grid-template-columns:repeat(3,minmax(0,1fr))}
.character-6{--accent:#c3a0df;--surface:#35263f}
@media(max-width:1000px){.original-characters .characters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:780px){.custom-characters .characters{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Personal combat strip: stance fills the surface; Zone colors only the rim. */
.player-panel{--stance-bg:var(--panel);--stance-ink:#c7cad4;--zone-hue:42;--zone-saturation:32%;--zone-lightness:55%;padding:.85rem 1.1rem;background:var(--stance-bg);border:2px solid var(--line);transition:background .2s,border-color .2s}
.player-panel[data-stance=wrath]{--stance-bg:#3b2026;--stance-ink:#ffb0ac}
.player-panel[data-stance=calm]{--stance-bg:#1b3048;--stance-ink:#a9d5ff}
.player-panel[data-stance=divinity]{--stance-bg:#362347;--stance-ink:#e1b7ff}
.player-panel[data-zone=fire]{--zone-hue:12}.player-panel[data-zone=earth]{--zone-hue:36}
.player-panel[data-zone=wind]{--zone-hue:151}.player-panel[data-zone=water]{--zone-hue:208}
.player-panel[data-zone=thunder]{--zone-hue:52}.player-panel[data-zone=shade]{--zone-hue:276}
.player-panel[data-zone=crystal]{--zone-hue:184}
.player-panel:not([data-zone=none]){border-color:hsl(var(--zone-hue) var(--zone-saturation) var(--zone-lightness))}
.player-panel[data-extreme=true]{--zone-saturation:95%;--zone-lightness:64%;box-shadow:0 0 0 1px hsl(var(--zone-hue) 95% 64% / .25),0 0 15px hsl(var(--zone-hue) 95% 55% / .16)}
.player-panel-heading{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}
.player-panel-heading h2{font-size:.9rem;color:var(--stance-ink)}
.stance-badge{color:var(--stance-ink);border:1px solid currentColor;border-radius:20px;padding:.08rem .6rem;font-size:.8rem;line-height:1.5}
.zone-badge{margin-left:auto;border:0;background:rgb(0 0 0 / .18);color:hsl(var(--zone-hue) var(--zone-saturation) 76%);padding:.15rem .55rem;font-size:.8rem}
.player-panel .status-text{margin:.4rem 0 0;color:#d6d8e0;line-height:1.6}
.orb-panel{margin-top:.65rem;padding-top:.55rem;border-top:1px solid rgb(255 255 255 / .1)}
.orb-label{font-size:.75rem;color:var(--muted);margin:0 0 .45rem}
.orb-slots{display:flex;gap:.6rem;max-width:100%;overflow-x:auto;padding:.1rem .1rem .4rem;scrollbar-color:#666572 transparent}
.orb-slot{--orb-color:#96a2b8;display:flex;align-items:center;gap:.55rem;flex:0 0 auto;padding:.35rem .65rem .35rem .35rem;min-height:54px;border:1px solid rgb(255 255 255 / .12);border-radius:8px;background:rgb(0 0 0 / .14);text-align:left}
.orb-slot[data-kind=lightning]{--orb-color:#f7d361}.orb-slot[data-kind=frost]{--orb-color:#9fddff}
.orb-slot[data-kind=dark]{--orb-color:#bc8cf5}.orb-slot[data-kind=glass]{--orb-color:#89e6d7}.orb-slot[data-kind=plasma]{--orb-color:#f5b4ed}
.orb-sphere{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:50%;border:1px solid var(--orb-color);color:var(--orb-color);background:radial-gradient(circle at 32% 25%,rgb(255 255 255 / .18),rgb(0 0 0 / .35) 75%);box-shadow:inset 0 0 9px color-mix(in srgb,var(--orb-color) 22%,transparent);font-size:.9rem}
.orb-text{display:flex;flex-direction:column;gap:.1rem}.orb-text strong{font-size:.8rem;font-weight:500;color:var(--orb-color)}
.orb-values{font-size:.7rem;color:#c1c5d0;white-space:nowrap}
.orb-empty{border-style:dashed}.orb-empty .orb-sphere{border-style:dashed;box-shadow:none;background:transparent;color:var(--muted)}
@media(max-width:780px){.player-panel{padding:.75rem}.zone-badge{min-height:36px}.orb-slot{min-height:54px}.player-panel-heading{gap:.45rem}}

/* Keep combat vitals next to the player's stance and effects. */
.stats{display:flex;flex-wrap:wrap;background:transparent;border:0;gap:1.5rem;margin-bottom:1rem}
.stats .stat{display:flex;align-items:baseline;gap:.5rem;padding:0;border:0}
.stats .stat strong{font-size:1.1rem;color:var(--text)}.stats .stat:first-child strong{color:var(--gold)}
.player-vitals{display:flex;flex-wrap:wrap;gap:.65rem 1.25rem;margin:0 .5rem}
.player-vital{display:flex;align-items:baseline;gap:.45rem;white-space:nowrap}
.player-vital>span{font-size:.8rem;color:#c1c5d0}.player-vital>strong{font-size:1.15rem;line-height:1.4;font-weight:600;font-variant-numeric:tabular-nums}
.vital-hp>strong{color:#ffabae}.vital-energy>strong{color:#f5d18f}.vital-block>strong{color:#aedcff}
@media(max-width:780px){.player-vitals{order:3;flex-basis:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin:.35rem 0 .15rem}.player-vital{display:block}.player-vital>span{display:block;font-size:.75rem}.player-vital>strong{font-size:1.1rem}}
