:root{--bg:#101219;--panel:#1b1e29;--soft:#272b3b;--edge:#44485d;--ink:#f4f0e9;--muted:#b9bbce;--gold:#eac488;--violet:#b7a5ee;--good:#9ac9b1;--bad:#efa898;color-scheme:dark}
/* Combat cues are interface markings; card artwork remains unchanged. */
.unit.pact-source,.pact-cue .pact-source{outline:2px solid #91d0e8;outline-offset:2px}
.unit.pact-partner,.pact-cue .pact-partner{outline:2px solid var(--gold);outline-offset:2px}
.pact-role-mark{display:block;color:var(--gold);font-size:12px}
.pact-source .pact-role-mark{color:#91d0e8}
.pact-cue{padding:8px;border:1px solid #817155;border-radius:10px;background:#302b39;margin:4px 0 10px}
.pact-cue>strong{display:block;color:var(--gold);font-size:14px;margin-bottom:8px}
.pact-cue-pair{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);gap:7px;align-items:center}
.pact-cue-pair>span{display:flex;align-items:center;gap:6px;border-radius:6px;padding:3px;min-width:0}
.pact-cue .portrait{width:30px;height:40px;flex:none;border-radius:4px}
.pact-cue-pair small{display:block;font-size:12px;color:var(--muted)}
.pact-cue-pair b{display:block;font-size:12px;overflow-wrap:anywhere}
.cue-arrow{text-align:center;color:var(--gold)}
.pact-summary{display:grid;gap:8px;margin:12px 0}
.pact-summary h3{font-size:16px}
.pact-report{border:1px solid var(--edge);border-radius:10px;padding:10px;background:#242735;margin:8px 0}
.pact-summary .pact-report{margin:0}
.pact-report-title{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:14px}
.pact-state{font-size:12px;padding:2px 7px;border:1px solid var(--edge);border-radius:5px;color:#c9cede}
.pact-state.applied{color:var(--good);border-color:#658574}
.pact-state.missed{color:var(--bad);border-color:#9c6c60}
.report-link{display:flex;align-items:center;gap:8px;margin:8px 0;font-size:13px}
.report-link>.portrait{width:30px;height:40px;flex:none;border-radius:5px}
.report-link>span{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:3px 8px;justify-content:center;text-align:center}
.report-link b{color:var(--gold)}
.pact-bonus{font-size:14px;color:var(--gold);margin:4px 0}
.pact-reason{font-size:14px;line-height:1.4;color:var(--muted);margin:6px 0 0}
dialog[data-surface=moments],dialog[data-surface=pact-report]{width:min(94vw,540px);padding:14px}
dialog[data-surface=moments] h2,dialog[data-surface=pact-report] h2{font-size:22px}
.moment-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0}
.moment-choices button{font-size:14px;line-height:1.2;padding:6px;min-width:0}
.moment-choices button[aria-pressed=true]{border-color:var(--gold);background:#383140;color:var(--gold)}
.moment-controls{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:6px;position:sticky;bottom:-14px;background:var(--panel);padding:10px 0}
.moment-controls button{padding:8px 5px;font-size:14px}
.replay-note{color:var(--muted);font-size:12px;margin:4px 0}
#moment-position{font-size:13px;margin:8px 0 0}
.combat-single{width:42%;max-width:150px;margin:auto}
dialog[data-surface=moments] .combat-card .portrait{max-height:110px}
dialog[data-surface=moments] .combat-pair{gap:8px}
dialog[data-surface=moments] .combat-caption{font-size:14px;margin:8px 0}
dialog[data-surface=moments] .close{margin-bottom:8px}
.battle-panel .combat-card .portrait{max-height:110px}
.battle-panel .combat-side,.battle-panel .combat-card>strong{font-size:14px}
.battle-panel .combat-caption{font-size:14px;margin-top:8px}
@media(min-width:781px){.pact-summary{grid-template-columns:1fr 1fr}.pact-summary h3{grid-column:1/-1}}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 0,#302a42 0,transparent 60%),var(--bg);color:var(--ink);font:16px/1.45 system-ui,-apple-system,Segoe UI,sans-serif;min-height:100svh}button,select{font:inherit}button{color:var(--ink);background:var(--soft);border:1px solid var(--edge);border-radius:10px;min-height:44px;padding:10px 14px;cursor:pointer}button:hover:not(:disabled){background:#35374d;border-color:var(--gold)}button:disabled{opacity:.48;cursor:default}button:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button.primary{background:var(--gold);color:#241d1c;border-color:var(--gold);font-weight:750}button.primary:hover:not(:disabled){background:#ffdcaa}.quiet{background:transparent}.full{width:100%}.compact{font-size:.875rem;padding:7px 10px}.danger{border-color:var(--bad)}a{color:var(--gold)}h1,h2,h3,p{margin:0}h2{font:500 1.55rem/1.2 Georgia,serif}h3{font-size:1rem}p{margin:10px 0}.wrap{max-width:1080px;margin:auto;padding:18px max(18px,env(safe-area-inset-right)) 20px max(18px,env(safe-area-inset-left))}header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 0 16px;border-bottom:1px solid var(--edge)}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;font:500 1.55rem/1.2 Georgia,serif;letter-spacing:.09em}.brand small{display:block;color:var(--muted);font:.75rem/1.4 system-ui;letter-spacing:0;margin-top:4px}.sigil{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--gold);color:var(--gold);border-radius:12px;font-size:1.5rem}nav{display:flex;gap:6px;margin:12px 0}nav button{flex:1;max-width:180px;font-size:.875rem}nav [aria-current]{background:var(--gold);color:#241d1c;border-color:var(--gold)}#toast:empty{display:none}#toast{margin-bottom:12px;border:1px solid var(--bad);border-radius:10px;padding:12px;background:#3b252d}.hud{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.metric{border:1px solid var(--edge);border-radius:10px;background:var(--panel);padding:8px 12px}.metric strong{font-size:1.25rem;display:block}.metric span{font-size:.75rem;color:var(--muted)}.play-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px;align-items:start}.market{grid-column:1/-1}.panel{background:var(--panel);border:1px solid var(--edge);border-radius:14px;padding:18px;min-width:0;margin-bottom:14px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.panel-title h2{font-size:1.3rem}.badge{display:inline-block;border:1px solid var(--edge);border-radius:30px;padding:3px 8px;color:var(--muted);font-size:.75rem;white-space:nowrap}.eyebrow{color:var(--gold);font-size:.75rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.hint{color:var(--muted);font-size:.875rem;margin:8px 0}.offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0}.offer{text-align:left;padding:0;overflow:hidden;min-width:0;background:#242735;display:flex;flex-direction:column;position:relative}.offer .cost{position:absolute;top:8px;right:8px;background:#141622ec;color:var(--gold);border:1px solid var(--gold);border-radius:30px;padding:3px 7px;font-size:.875rem;font-weight:750}.offer .body{padding:12px;display:flex;flex-direction:column;flex:1;gap:6px}.offer strong{overflow-wrap:anywhere;font-size:1rem;line-height:1.25;min-height:2.5em}.offer .effect{font-size:.875rem;min-height:2.9em;color:#e4dcf4}.offer .buy-hint{display:block;font-size:.875rem;color:var(--gold);margin-top:auto;padding-top:5px}.rarity-common{--rarity:#9ba8b8}.rarity-rare{--rarity:#b7a5ee}.rarity-epic{--rarity:#eac488}.offer,.unit,.collection-card{border-color:var(--rarity,var(--edge))}.art{position:relative;overflow:hidden;aspect-ratio:.9;background:#161823}.art img{position:absolute;display:block;width:100%;height:auto;top:-10.125%;left:0}.portrait{aspect-ratio:.9}.portrait img{width:100%;max-width:none;top:-10.125%;left:0}.values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;color:var(--ink);font-size:.875rem}.value{display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap}.value img{width:16px;height:16px}.roster{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.unit{padding:0;text-align:left;min-width:0;overflow:hidden;background:#242735;position:relative}.unit.selected{outline:3px solid var(--gold);outline-offset:2px}.unit.dead{opacity:.4}.unit.acting{outline:3px solid var(--violet)}.unit.hit{outline:3px solid var(--bad)}.unit:disabled{opacity:1}.unit.dead:disabled{opacity:.4}.unit .unit-body{display:block;padding:7px}.unit .name{display:block;font-size:.75rem;line-height:1.25;overflow-wrap:anywhere;min-height:2.5em}.unit .values{grid-template-columns:repeat(2,1fr);font-size:.75rem;gap:4px}.unit .value img{width:12px;height:12px}.unit .rank{position:absolute;right:4px;top:4px;background:#171924df;border-radius:5px;padding:2px 5px;color:var(--gold);font-size:.75rem}.slot{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}.reserve{margin-top:14px;border-top:1px solid var(--edge);padding-top:12px}.reserve .roster{margin-top:8px;grid-template-columns:repeat(5,minmax(0,1fr))}.links{display:grid;gap:5px;margin-top:10px}.link{border-left:2px solid var(--violet);padding:4px 8px;color:#e1d6f7;font-size:.75rem;background:#29263a}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.actions>button{flex:1}.detail{margin-top:10px;padding:10px;border:1px solid var(--edge);border-radius:8px}.empty{padding:25px;color:var(--muted);text-align:center;border:1px dashed var(--edge);border-radius:8px}.result{font:500 1.7rem/1.2 Georgia,serif;color:var(--gold)}.progress{height:5px;background:#36394d;border-radius:5px;overflow:hidden;margin:12px 0}.progress i{display:block;height:100%;background:var(--violet)}.log{padding:0;margin:10px 0;list-style:none;font-size:.875rem}.log li{padding:7px 0;border-bottom:1px solid #34384c}.log .pact{color:var(--gold)}details{margin-top:12px}summary{cursor:pointer;min-height:44px;padding:10px 0;color:var(--muted);font-size:.875rem}.full-log{max-height:280px;overflow-y:auto;touch-action:pan-y}.collection{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.collection-card{padding:0;text-align:left;overflow:hidden;background:#242735}.collection-card .body{padding:12px}.collection-card strong{display:block;font-size:1rem}.collection-card p{font-size:.875rem;color:var(--muted)}.collection-card .discovery{font-size:.75rem;color:var(--gold)}.rules{max-width:850px}.rules p{font-size:1rem}.rules h3{color:var(--gold);margin-top:22px}.rules ul{padding-left:22px}.rules li{margin:8px 0}.rules table{width:100%;border-collapse:collapse;font-size:.875rem}.rules th,.rules td{text-align:left;padding:8px;border-bottom:1px solid var(--edge)}footer{color:var(--muted);font-size:.75rem;border-top:1px solid var(--edge);padding-top:12px;margin-top:4px}dialog{color:var(--ink);background:var(--panel);border:1px solid var(--edge);border-radius:16px;padding:18px;width:min(94vw,520px);max-height:92svh;overflow-y:auto;touch-action:pan-y}dialog::backdrop{background:#080911cc}.close{display:block;margin:0 0 12px auto;font-size:.875rem}.detail-art{aspect-ratio:.9;width:min(100%,200px);margin:10px auto;border-radius:10px}.detail-values{margin:12px 0;font-size:1rem}.detail-values .value img{width:20px;height:20px}.pact-row{border-top:1px solid var(--edge);padding:12px 0}.pact-row label{display:block;font-size:.875rem;color:var(--muted);margin:7px 0 4px}.ends{display:grid;grid-template-columns:1fr 1fr;gap:8px}select{font:inherit;font-size:.875rem;width:100%;min-height:44px;background:var(--bg);border:1px solid var(--edge);border-radius:8px;color:var(--ink);padding:7px;min-width:0}#dialog-error:empty{display:none}#dialog-error{color:var(--bad);padding:8px 0}.replace-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0}.replace-list button{font-size:.875rem;text-align:left}.replace-list button[aria-pressed=true]{border-color:var(--gold);background:#373047}.stat-legend{font-size:.75rem;color:var(--muted);margin:8px 0}.finished{text-align:center;padding:30px}.finished .result{font-size:2rem}.finished button{margin-top:15px}
@media(max-width:780px){.play-layout{grid-template-columns:1fr;gap:0}.collection{grid-template-columns:repeat(3,minmax(0,1fr))}.panel{padding:14px}.offers{gap:8px}.offer .body{padding:9px}.offer strong{font-size:.875rem}.offers .values{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.offer .effect{min-height:4.35em}.roster{gap:6px}.unit .unit-body{padding:5px}.brand{font-size:1.3rem}.wrap{padding-top:12px}header{padding-bottom:10px}.sigil{width:36px;height:36px}.hud .metric{padding:6px 9px}}
@media(max-width:430px){.wrap{padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right));padding-top:10px}.brand{gap:8px;font-size:1.1rem}.brand small{font-size:.75rem}.sigil{width:32px;height:32px}.panel{padding:12px;margin-bottom:10px}.panel-title h2{font-size:1.2rem}.offers{gap:6px;margin:10px 0}.offer .body{padding:7px;gap:5px}.offer .cost{top:4px;right:4px;font-size:.75rem;padding:2px 5px}.offer .effect{line-height:1.25;min-height:5em}.offer .buy-hint{font-size:.75rem}.offer .values{font-size:.75rem}.value img{width:14px;height:14px}.metric strong{font-size:1.1rem}.metric span{font-size:.75rem}.hud{gap:5px;margin-bottom:10px}.hud .metric{padding:5px 7px}.collection{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.collection-card .body{padding:9px}.unit .name{min-height:2.5em}.unit .values{display:none}.unit .rank{font-size:.75rem}nav{margin:10px 0}.roster{gap:5px}.slot{font-size:.75rem}.market>.hint{font-size:.875rem}.ends{grid-template-columns:1fr}}
@media(min-width:431px) and (max-width:600px){.offer .effect{min-height:4.35em}.unit .values{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

@media(max-width:430px){.market{padding:10px}.market .panel-title{margin-bottom:6px}.market .offers{margin:8px 0}.offer .effect{min-height:3.75em}.draft-team .links,.draft-team>.hint{display:none}.draft-team .reserve{margin-top:8px;padding-top:8px}.draft-team .slot{display:none}}

.pool-label{font-size:14px;color:#cfc1a9;margin:8px 0}.intro h2{font-size:19px}.intro p{margin:7px 0}.intro details{font-size:14px}.status-mark{display:block;color:#ffe1a4;font-size:11px;line-height:1.2}.status-mark.muted{color:#bcc7d4}

.intro{margin:0 0 6px;padding:0}.intro>details{margin:0}.intro>details>summary{padding:5px 0;min-height:34px}.intro details p{font-size:14px}.draft-roster{margin:0 0 10px}.draft-roster>summary{min-height:44px;padding:10px 0}

@media(max-width:480px){.offer strong{font-size:.875rem;line-height:1.25}}

.tutorial-guide{border:1px solid var(--gold);border-radius:12px;background:#302b39;padding:8px 10px;margin:0 0 8px}.tutorial-heading{display:flex;justify-content:space-between;gap:8px;font-size:14px;line-height:1.25}.tutorial-heading>span{color:var(--gold);white-space:nowrap;font-size:12px}.tutorial-guide p{margin:5px 0 7px;font-size:13px;line-height:1.3}.tutorial-actions{display:flex;gap:6px}.tutorial-actions>button{flex:1;min-height:40px;padding:6px;font-size:12px}.tutorial-entry{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:8px}.tutorial-entry button{margin-left:auto}[data-tutorial-focus]{outline:2px solid var(--gold);outline-offset:3px}#dialog-body p{overflow-wrap:break-word}
@media(max-width:430px){.tutorial-guide{padding:6px 8px;margin-bottom:6px}.tutorial-guide p{margin:4px 0}}

/* Upgraded art is presentation only; live ranks and values stay separate. */
.rank-upgraded::after{content:"";position:absolute;inset:4px;border:1px solid #e8c986a8;border-radius:6px;pointer-events:none;box-shadow:none}
.upgrade-badge{position:absolute;bottom:8px;left:8px;z-index:1;display:flex;align-items:center;gap:6px;max-width:calc(100% - 16px);padding:4px 8px;background:#102631ee;color:#ffe1a5;border:1px solid #dfb969;border-radius:7px;font:700 .75rem/1.15 system-ui;box-shadow:0 2px 7px #080f19a0}
.upgrade-badge b{font:700 1.05rem/1 Georgia,serif;letter-spacing:.08em}
.is-upgraded .rank{border:1px solid #dfb969;background:#102631ee;color:#ffe1a5;font-family:Georgia,serif;font-weight:700}
.is-upgraded .body,.is-upgraded .unit-body{background:linear-gradient(110deg,#19303b66,transparent 75%)}
.design-choices{display:flex;gap:8px;margin:12px 0}.design-choices button{flex:1}.design-choices button[aria-pressed=true]{border-color:var(--gold);color:var(--gold);background:#19303b}
@media(max-width:430px){.offer .upgrade-badge{bottom:5px;left:5px;padding:3px 5px;gap:4px;font-size:.7rem}.offer .upgrade-badge b{font-size:.9rem}.rank-upgraded::after{inset:3px}}

/* Rank three retains rarity colors while marking its own mastercrafted art. */
.rank-mastered::after{border:2px solid #f6d991cc;box-shadow:none}
.rank-mastered .upgrade-badge{background:#2d2315ee;border-color:#f6d991;color:#fff0cb}
.design-choices button{min-width:0;font-size:.875rem;padding:8px 5px}

/* Leave room for the full equipment crop and market actions on small phones. */
@media(max-width:430px){nav{margin:8px 0}.hud{margin-bottom:8px}.market .offers{margin:6px 0}.market .offer .body{gap:4px}}

/* Guided play uses the real cards, actions and recorded battle frames. */
.tutorial-guide{background:linear-gradient(110deg,#263340,#222635);border-color:#b99a66;padding:10px 12px;border-radius:14px}
.guide-top{display:flex;align-items:center;gap:8px}.guide-crest{width:34px;flex-shrink:0;border:1px solid var(--gold);border-radius:50%;overflow:hidden}.guide-heading{flex:1;min-width:0}.guide-heading strong{display:block;font:600 16px/1.2 Georgia,serif}.guide-heading .eyebrow{font-size:10px;letter-spacing:.05em}.guide-help{width:44px;height:44px;min-height:44px;padding:0;color:var(--muted);border-color:transparent;flex-shrink:0}
.guide-phases{list-style:none;padding:0;margin:8px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.guide-phases li{display:flex;align-items:center;justify-content:center;gap:4px;border-bottom:2px solid #414c5b;padding:3px 0;color:#929caf;font-size:11px}.guide-phases svg{width:16px;height:16px}.guide-phases .current{color:#ffe0a8;border-color:var(--gold)}.guide-phases .done{color:var(--good);border-color:var(--good)}.guide-phases b{font-size:10px}
.guide-goal{display:flex;align-items:center;gap:12px}.tutorial-guide .guide-goal p{flex:1;margin:0;font-size:13px;line-height:1.35}.guide-goal button{flex-shrink:0;max-width:180px;min-height:44px;font-size:13px}
[data-tutorial-focus]{outline:2px solid var(--gold);outline-offset:2px;box-shadow:0 0 0 5px #eac48814}[data-guide-hand]::before{content:attr(data-guide-hand);position:absolute;top:6px;left:6px;z-index:3;border:2px solid #ffe4b2;background:#263340;color:#ffe4b2;width:27px;height:27px;border-radius:50%;display:grid;place-items:center;font-weight:800}.unit[data-guide-hand="2"]::before{background:#394054}
.guide-board-tabs{display:flex;gap:8px;margin:0 0 8px}.guide-board-tabs button{flex:1;font-size:13px}.guide-board-tabs [aria-pressed=true],.pact-tabs [aria-pressed=true]{border-color:var(--gold);color:var(--gold);background:#303849}
#app[data-guided=true] .preparation-panel{padding:0;background:transparent;border:0}#app[data-guided=true] .preparation-panel>.eyebrow,#app[data-guided=true] .preparation-panel>h2,#app[data-guided=true] .preparation-panel>.hint{display:none}#app[data-guided=true] .preparation-panel .actions{margin-top:0}
.pact-tabs{display:flex;gap:8px}.pact-tabs button{flex:1}.pact-row[hidden]{display:none}.pact-map{display:grid;grid-template-columns:1fr 90px 1fr;align-items:center;gap:8px;margin:12px auto;max-width:310px}.pact-map>.pact-arrow{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--gold)}.pact-arrow svg{width:26px;height:26px}.pact-arrow>b{font-size:30px;line-height:1}.pact-arrow small{font-size:12px}.pact-map .portrait{border:1px solid #697385;border-radius:10px}.pact-map span{display:block;font-size:12px;text-align:center;margin-top:4px}.pact-map.inactive{opacity:.55}
.combat-scene{margin:8px 0}.pact-trigger{display:flex;flex-direction:column;align-items:center;padding:6px 8px;background:#3b3440;border:1px solid #ae906a;border-radius:8px;font-size:12px;margin-bottom:10px}.pact-trigger>span{text-transform:uppercase;font-size:10px;color:var(--gold);letter-spacing:.08em}.combat-pair{display:grid;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);gap:12px;max-width:440px;margin:0 auto}.combat-card{min-width:0}.combat-side{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.combat-card .portrait{border:1px solid #6e788b;border-radius:10px;max-height:160px}.combat-card>strong{font-size:13px;display:block;margin:5px 0}.event-arrow{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--gold);font-size:22px;gap:8px}.event-arrow>span{font-size:32px}.event-stat{position:relative;margin:7px 0 12px;--bar:var(--good)}.event-stat.shield{--bar:#8dcbe2}.event-stat>span{display:flex;justify-content:space-between;font-size:11px;gap:4px}.event-bar{height:7px;border-radius:5px;background:#393e50;position:relative;overflow:hidden;margin-top:3px}.event-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--bar)}.event-bar .before{opacity:.25}.event-stat small{position:absolute;right:0;top:26px;font-size:10px}.gain{color:var(--good)}.loss{color:var(--bad)}.event-buff{font-size:12px;color:var(--gold)}.combat-caption{text-align:center;color:#e8dbc5;font-size:13px;line-height:1.4;max-width:440px;margin:14px auto 8px}.observation-note{display:block;text-align:center;font-size:11px;color:var(--muted)}.combat-outcome{display:flex;align-items:center;justify-content:center;gap:12px;margin:16px 0;border:1px solid #52665d;border-radius:12px;background:#26312f;padding:14px}.combat-outcome>span{font-size:28px;color:var(--good)}.combat-outcome p{font-size:14px;margin:0}
.purchase-path{display:flex;align-items:center;justify-content:center;gap:12px;padding:8px;background:#252c39;border:1px solid var(--edge);border-radius:10px}.purchase-path>span{max-width:58px;font-size:12px;text-align:center}.purchase-path small{display:block;font-size:11px;color:var(--muted)}.purchase-path .portrait{border-radius:6px}.purchase-path>strong{margin-left:10px;font-size:22px;color:var(--gold);text-align:center}
@media(max-width:780px){.guided-boards[data-board=team]>.enemy,.guided-boards[data-board=enemy]>.team{display:none}.guide-goal{gap:8px}.guide-goal button{max-width:145px}}
@media(max-width:430px){.tutorial-guide{padding:8px;margin-bottom:8px}.guide-crest{width:30px}.guide-heading strong{font-size:15px}.guide-top{gap:5px}.guide-help{width:34px;min-width:34px;min-height:44px}.guide-phases{margin:5px 0}.guide-goal{display:block}.tutorial-guide .guide-goal p{font-size:12px;line-height:1.3;margin:0 0 6px}.guide-goal button{width:100%;max-width:none;min-height:44px;padding:6px;font-size:12px}#app[data-guided=true] .market .panel-title{display:none}#app[data-guided=true] .market>.hint{display:none}#app[data-guided=true] .market .offer .effect{font-size:12px;min-height:3.75em}#app[data-guided=true] .market .offer .buy-hint{font-size:11px}.combat-pair{gap:8px;grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr)}.combat-card .portrait{max-height:145px}.combat-card>strong{font-size:12px}.combat-caption{font-size:12px}.pact-map{grid-template-columns:1fr 72px 1fr;max-width:270px}.ends{grid-template-columns:1fr 1fr}.ends select{font-size:12px}.pact-row{padding:6px 0}.pact-row .hint{font-size:12px}.pact-map{margin:8px auto}.pact-map .portrait{max-height:110px}}
@media(max-width:430px){#app[data-guided=true] .hud .metric{padding:4px 6px}#app[data-guided=true] .hud .metric strong{font-size:15px;line-height:20px}#app[data-guided=true] .hud .metric span{font-size:10px;line-height:14px;display:block}#app[data-guided=true] .battle-panel:has(.observation-note)>.eyebrow{display:none}.combat-card .portrait{max-height:124px}.combat-caption{margin-top:10px}}
@media(max-width:430px){.tutorial-guide{padding:6px 8px}.guide-phases{margin:4px 0}#app[data-guided=true] .market .offers{margin:4px 0}}
.band-help{font-size:12px;padding:4px 8px;white-space:nowrap;min-width:64px}.band-tabs{display:flex;gap:5px;margin:12px 0}.band-tabs button{flex:1;min-width:0;font-size:12px;padding:6px}.band-tabs [aria-pressed=true]{border-color:var(--gold);color:var(--gold)}.band-target{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--gold);margin:14px 0}.band-target img{width:20px;height:20px}.band-demo{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;align-items:start}.band-demo>div{border:1px solid var(--edge);border-radius:8px;padding:4px;min-width:0}.band-demo>div.targeted{border:2px solid var(--gold);background:#393042}.band-demo small,.band-demo span,.band-demo b,.band-demo em{display:block;text-align:center;font-size:10px;overflow-wrap:anywhere}.band-demo small{color:var(--muted);min-height:26px}.band-demo span{min-height:38px}.band-demo em{color:var(--gold);font-style:normal;font-weight:700}.band-facts{font-size:14px;border-top:1px solid var(--edge);margin-top:16px}.pact-reference{padding:12px;border:1px solid var(--edge);border-radius:12px;margin:10px 0;font-size:14px}.pact-reference>div{display:flex;justify-content:space-between;gap:8px;color:var(--gold);margin-top:8px}.pact-reference p{font-size:13px}.pact-reference small{color:var(--muted)}
dialog[data-surface=pacts]{max-width:440px;padding:14px}dialog[data-surface=pacts] h2{font-size:22px}dialog[data-surface=pacts] .close{margin-bottom:8px}.pact-rule{font-size:12px;line-height:1.4;color:var(--muted);margin:8px 0 12px}.pact-row{padding:5px 0}.pact-map{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);gap:5px;margin:10px auto 6px;max-width:340px}.pact-map .portrait{width:64px;aspect-ratio:64/72;margin:5px auto}.pact-map .pact-role{font-size:11px;color:var(--muted);display:block;text-align:center}.pact-map span{font-size:11px;min-height:28px;line-height:1.25}.pact-map small{display:block;text-align:center;font-size:11px;line-height:1.25;color:var(--muted)}.pact-map .pact-mechanic{display:block;color:var(--gold);text-align:center;font-size:13px;margin:5px 0 3px;line-height:1.2}.pact-map .reward{color:#b7d7c1}.pact-advice{border-left:2px solid var(--gold);padding:5px 8px;background:#302b3a;font-size:12px;line-height:1.4;margin:8px 0;min-height:43px}.pact-more{font-size:13px;margin-top:0}.pact-more summary{padding:5px 0;min-height:44px;font-size:12px}.pact-save{position:sticky;bottom:-14px;padding:10px 0 2px;background:var(--panel);box-shadow:0 -8px 12px var(--panel)}

.moment-label{display:block;font-size:14px;color:var(--muted);margin:10px 0 4px}
#moment-select{margin-bottom:10px;font-size:14px}
.replay-actions button{font-size:14px;padding:8px 5px}
@media(max-width:430px){
 .pact-report{padding:8px}
 .report-link{margin:4px 0;font-size:12px;gap:6px}
 .report-link>.portrait{height:32px;width:24px}
 .pact-summary{margin:8px 0;gap:6px}
 .pact-summary .pact-bonus{font-size:14px;line-height:1.3}
 .pact-report-title{line-height:1.2}
 .battle-panel>#next{position:fixed;bottom:max(10px,env(safe-area-inset-bottom));left:10px;width:calc(100% - 20px);z-index:5;box-shadow:0 0 0 6px var(--bg)}
 body:has(#battle-panel) #app{padding-bottom:60px}
}

/* Keep the review on one phone viewport, including its caption and controls. */
dialog[data-surface=moments]{position:relative}
dialog[data-surface=moments] .close{position:absolute;top:14px;right:14px;width:90px;padding:8px 5px;font-size:14px;margin:0}
dialog[data-surface=moments] #detail-title{min-height:44px;display:flex;align-items:center;max-width:calc(100% - 100px);font-size:20px}
.pact-cue-pair>span>span{min-width:0;flex:1}
.pact-cue .portrait{width:22px;height:30px}
.pact-cue-pair>span{gap:4px;padding:2px}
.pact-cue-pair b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}

.compact-cue>strong{margin-bottom:0}
.combat-card.pact-source .portrait{outline:2px solid #91d0e8;outline-offset:2px}
.combat-card.pact-partner .portrait{outline:2px solid var(--gold);outline-offset:2px}

/* Short entry: the normal controls carry the lesson, without extra confirmations. */
.entry-guide #tutorial-short{font-size:14px;margin:7px 0 0}.entry-guide{padding:10px;margin-bottom:10px}.entry-guide .guide-top{margin:0}.entry-guide .guide-crest{width:28px;height:34px}.entry-guide .guide-heading strong{font-size:16px}.entry-tip{border-left:2px solid var(--gold);padding:5px 10px;margin:8px 0 12px;font-size:13px;color:var(--muted)}.entry-tip strong{color:var(--gold);font-size:13px}.entry-tip p{margin:3px 0}.entry-ready h2{font-size:22px}.entry-ready details{margin:0}.entry-ready #fight{margin-top:5px}.entry-ready #edit-pacts{margin-top:8px}.entry-offer{display:grid;grid-template-columns:105px minmax(0,1fr);gap:14px;align-items:center}.entry-offer .detail-art{width:105px;margin:0}.entry-offer h2{font-size:22px}.entry-offer p{font-size:14px}.entry-offer .eyebrow{font-size:12px}.entry-offer strong{color:var(--gold)}.entry-battle #next{margin-top:12px}.entry-battle .pact-report{margin:8px 0}.entry-battle #battle-details{margin:4px 0}.entry-battle #entry-highlight>.hint{margin:8px 0}.entry-battle #battle-details .actions{margin-top:0}
#app[data-entry=true] .team .links{display:none}#app[data-entry=true] .team .reserve{margin-top:6px;padding-top:6px}#app[data-entry=true] .team .panel-title{margin-bottom:6px}#app[data-entry=true] .team .value:nth-child(4){display:none}#app[data-entry=true] .offers .value:nth-child(4){display:none}#app[data-entry=true] .market>.hint{display:none}#app[data-entry=true] .offers .values{grid-template-columns:repeat(3,1fr)}#app[data-entry=true] .draft-roster{margin-top:0}#app[data-entry=true] .entry-ready .eyebrow{display:none}
@media(max-width:430px){#app[data-entry=true] .entry-guide .guide-heading strong{font-size:14px}#app[data-entry=true] .entry-guide .eyebrow{font-size:10px}#app[data-entry=true] .entry-guide #tutorial-short{font-size:13px}#app[data-entry=true] .offer .body{gap:4px}#app[data-entry=true] .offer .effect{font-size:12px}#app[data-entry=true] .offer .buy-hint{font-size:11px}#app[data-entry=true] .entry-battle .combat-card .portrait{max-height:104px}dialog[data-surface=entry-offer] #buy-confirm{position:sticky;bottom:0}#app[data-entry=true] .team>.hint{font-size:12px}}
#app[data-entry=true] .market .panel-title{display:none}
@media(min-width:431px){#app[data-entry=true]{max-width:800px;margin:0 auto}#app[data-entry=true] .offer>.art{width:min(100%,190px);align-self:center}}

@media(max-width:430px){#app[data-entry=true] .offer .values{gap:2px}#app[data-entry=true] .offer .value{gap:2px}#app[data-entry=true] .offer .value img{width:12px;height:12px}}

/* Repeat purchases and one free reroll, with both main actions on screen. */
.market-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px}.market-controls button{font-size:14px;padding:8px 6px}.market-note{font-size:12px;color:var(--gold);margin:5px 0;text-align:center}.market #save-runes{font-size:12px;min-height:36px;padding:5px}.income-note{font-size:13px;color:var(--muted);margin:8px 0}.income-note b{color:var(--gold)}
@media(max-width:430px){#app[data-entry=true] .offer>.art{width:min(100%,84px);align-self:center}#app[data-entry=true] .market .offer strong{font-size:12px;min-height:2.5em}#app[data-entry=true] .market .offer .effect{min-height:3.5em}#app[data-entry=true] .offer .body{padding:6px;gap:3px}#app[data-entry=true] .entry-tip{padding:4px 8px;margin:5px 0 7px}#app[data-entry=true] .entry-tip p{display:none}#app[data-entry=true] .market-controls button{font-size:13px}}

/* Market v3: spent slots stay visible, inspection and commitment are separate. */
.market-status{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted);margin-bottom:6px}.market-controls small{display:block;font-size:12px;font-weight:400;line-height:1.3;margin-top:4px}.market-secondary{display:grid;grid-template-columns:1fr 1.3fr;gap:6px;margin-top:6px}.market-secondary button{font-size:12px;line-height:1.2;min-height:44px;padding:6px}.market .market-note{font-size:12px;margin:6px 0 0;line-height:1.3}.purchase-benefit{font-size:12px;color:var(--gold);line-height:1.25;display:block;min-height:28px}.purchase-benefit small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.offer.empty{border:1px dashed #647082;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:12px 5px;text-align:center;color:var(--muted);font-size:12px;min-height:230px;background:#19212d}.offer.empty .empty-symbol{font-size:28px;color:var(--good)}.offer.empty strong{font-size:13px}.purchase-explanation{font-size:13px;border-left:2px solid var(--gold);padding:6px 10px;margin:8px 0}.purchase-explanation p{margin:6px 0}.upgrade-values{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}.upgrade-values td,.upgrade-values th{text-align:left;padding:3px 5px;border-bottom:1px solid var(--edge)}.preview-member{display:flex;gap:10px;align-items:center;margin:8px 0}.preview-member>.portrait{width:48px;flex-shrink:0}.preview-member>div{flex:1;min-width:0}.preview-member strong,.preview-member small{display:block;font-size:12px}.preview-member .values{display:flex;font-size:12px;gap:10px;margin:5px 0}.first-pact-lesson{border:1px solid var(--gold);background:#303341;border-radius:10px;padding:8px 10px;margin:10px 0}.first-pact-lesson small{color:var(--gold)}.first-pact-lesson p{font-size:13px;margin:5px 0 8px}.first-pact-lesson button{width:100%;font-size:12px;min-height:44px}.end-reason{font-size:14px;color:var(--gold)}
@media(max-width:480px){#app .market .offer>.art{height:66px;max-height:66px}#app .market .offer .effect{min-height:3.75em;font-size:12px}#app .market .offer .body{padding:6px;gap:4px}#app .market .offer strong{font-size:12px;line-height:1.2}.market-controls button{padding:7px 5px;font-size:12px;min-height:54px}.market .offers{margin:5px 0}.offer.empty{min-height:222px}.market-status{font-size:12px}.market-secondary button{font-size:12px}.purchase-benefit{font-size:12px}.purchase-benefit small{font-size:12px}.first-pact-lesson p{font-size:12px}}

/* The one-off lesson gets the available viewport while its source/partner remain visible. */
#app:has(#first-pact-lesson) #tutorial-guide{display:none}
.battle-panel:has(#first-pact-lesson)>#next{display:none}
#combat-scene:has(#first-pact-lesson)>.combat-caption{display:none}
@media(max-width:480px){.battle-panel:has(#first-pact-lesson) .combat-card .portrait{max-height:88px}.first-pact-lesson{margin:8px 0;padding:7px 8px}.first-pact-lesson p{line-height:1.35}}

@media(min-width:481px){#app .market .offer>.art{height:190px;max-height:190px}}

/* Readable market: compact rows on phones, full purchase values in the detail view. */
#app .market .purchase-benefit{font-size:14px;line-height:1.25;min-height:0}
#app .market .purchase-benefit small{font-size:12px;line-height:1.25}
#app .market .effect{font-size:14px;line-height:1.25}
#app .market .market-status,#app .market .market-note,#app .market .buy-hint{font-size:12px}
#app .market-controls button,#app .market-secondary button{font-size:14px}
#app .market-controls small{font-size:12px}
#app .market .empty,#app .market .empty strong{font-size:14px}
#app .hud .metric span{font-size:12px}
.purchase-explanation{font-size:14px}.upgrade-values{font-size:14px}
.preview-member strong,.preview-member small,.preview-member .values{font-size:14px}
@media(max-width:480px){
 body:has(#market-panel) header{padding-top:6px;padding-bottom:6px}
 body:has(#market-panel) header p{display:none}
 #app[data-phase=draft] .entry-guide{padding:6px 8px;margin-bottom:6px}
 #app[data-phase=draft] .entry-guide #tutorial-short{display:none}
 #app[data-phase=draft] .entry-guide .eyebrow{font-size:12px}
 #app .market .offers{display:grid;grid-template-columns:1fr;gap:6px}
 #app .market .offer{display:grid;grid-template-columns:64px minmax(0,1fr);padding:4px;text-align:left;min-height:96px;overflow:hidden;gap:8px}
 #app .market .offer>.art{grid-column:1;grid-row:1;width:64px;height:88px;max-height:88px;align-self:center}
 #app .market .offer>.cost{position:static;grid-column:1;grid-row:1;align-self:end;justify-self:center;z-index:2;font-size:12px;padding:2px 4px;margin-bottom:0}
 #app .market .offer>.body{grid-column:2;grid-row:1;padding:1px 0;gap:3px;align-self:center}
 #app .market .offer strong{font-size:14px;line-height:1.2;min-height:0}
 #app .market .offer .effect{font-size:14px;min-height:0}
 #app .market .offer .values{display:none}
 #app .market .offer .upgrade-badge{top:0;bottom:auto;font-size:12px;padding:2px 4px}
 #app .market .offer .upgrade-badge span{display:none}
 #app .market .purchase-benefit{font-size:14px}
 #app .market .purchase-benefit small{font-size:12px;margin-top:2px}
 #app .market .offer.empty{display:flex;min-height:96px;gap:4px;padding:8px}
 #app .market .empty-symbol{display:none}
 #app .market-controls button{font-size:14px;padding:6px 4px;min-height:56px}
 #app .market-secondary button{font-size:14px;padding:5px 4px;min-height:48px}
 #app .market .market-note{font-size:12px;line-height:1.2;margin-top:5px}
 #app .market .market-status{font-size:12px;margin-bottom:4px}
}

@media(max-width:480px){
 #app[data-entry] .market .offer strong{font-size:14px;min-height:0}
 #app[data-entry] .market .offer .effect{font-size:14px;min-height:0}
 #app[data-entry] .market .offer .body{gap:3px}
 #app[data-entry] .market .offer>.cost{white-space:nowrap;line-height:1.2}
}

@media(max-width:480px){body:has(#market-panel) .brand small{display:none}}

@media(max-width:480px){#app .market .offer{padding:3px}#app .market .offers{margin:3px 0}#app .market .market-note{margin-top:3px}}

.market .unaffordable>.cost{color:var(--bad)}
@media(max-width:480px){#app[data-entry] .market .offer .buy-hint{display:none}}
@media(min-width:481px){#app .market .offer>.art{height:144px;max-height:144px}#app .market .offer>.art img{object-fit:contain}}

/* Compact, explicit reserve exchange. No automatic rearrangement. */
.reserve-notice{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;margin:8px 0;border:1px solid #cda76366;border-radius:10px;background:#d5a84b0c;font-size:13px}.reserve-notice small{display:block;font-size:11px;opacity:.8}.reserve-notice button{flex:none;min-height:40px;padding:8px 10px}.reserve-picker{display:flex;gap:8px}.reserve-picker button,.exchange-choices button{display:flex;align-items:center;gap:9px;text-align:left;min-width:0;padding:7px 10px}.reserve-picker button{flex:1}.reserve-picker .portrait,.exchange-choices .portrait{width:32px;height:43px;flex:0 0 32px}.reserve-picker span,.exchange-choices span{min-width:0;font-size:13px}.reserve-picker small,.exchange-choices small{display:block;font-size:11px;opacity:.8}.exchange-choices{display:grid;grid-template-columns:1fr 1fr;gap:6px}.exchange-choices b{font-size:12px;opacity:.65}.reserve-picker [aria-pressed="true"],.exchange-choices [aria-pressed="true"]{border-color:#dfbb73;box-shadow:inset 0 0 0 1px #dfbb73}.exchange-preview{margin:12px 0;padding:11px;border-radius:9px;background:#ffffff08;font-size:13px}.exchange-preview p{margin:6px 0}.exchange-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.exchange-stats small{font-size:10px}.exchange-stats .values{gap:5px}.exchange-stats .value{font-size:12px}.pact-warning{color:#f3cc87;font-weight:700}[data-surface="reserve-exchange"] h3{font-size:14px;margin:14px 0 7px}[data-surface="reserve-exchange"] .link{font-size:11px}

.market-secondary.has-reserve{grid-template-columns:1fr 1fr 1fr}.market-secondary.has-reserve #deploy-reserve{border-color:var(--gold);color:var(--gold)}

.reserve-picker span,.exchange-choices span{overflow-wrap:anywhere;line-height:1.2}.reserve-picker small,.exchange-choices small,.exchange-stats small,[data-surface="reserve-exchange"] .link{font-size:12px}.reserve-notice small{font-size:12px}[data-surface="reserve-exchange"]{padding:14px;max-width:480px}[data-surface="reserve-exchange"] .close{margin-bottom:8px}[data-surface="reserve-exchange"] h2{font-size:24px}[data-surface="reserve-exchange"] .hint{font-size:13px;line-height:1.3}.exchange-preview{padding:8px;margin:8px 0}.exchange-stats{gap:4px}.exchange-stats small{font-size:11px}.exchange-choices button{padding:6px;gap:6px}.reserve-picker button{padding:7px;gap:7px}.exchange-choices .portrait{width:27px;flex-basis:27px;height:37px}.exchange-choices small{margin-top:3px}

/* Advice occupies the existing benefit line; the action remains optional. */
#app .market .offer.recommended{border-color:#dbc38d;box-shadow:inset 0 0 0 1px #dbc38d55}
#app .market .offer.recommended .purchase-benefit small{color:var(--gold)}
.history-run{border-top:1px solid var(--edge);margin-top:16px;padding-top:12px}.history-run summary{cursor:pointer;min-height:32px}.history-run ol{padding-left:22px}.history-run li{margin:12px 0;font-size:14px}.history-run li>small,.history-run li>strong,.history-run li>span{display:block;margin:3px 0}.history-run li>small{color:var(--muted)}.history-run p{font-size:14px}

/* One actionable observation after a loss; details stay optional. */
.loss-help{margin:10px 0;padding:12px;border-left:3px solid var(--gold);background:rgba(210,168,99,.07);border-radius:8px}
.loss-help h3{font-size:.875rem;color:var(--gold);margin:0 0 7px}.loss-help p{font-size:.875rem;line-height:1.4;margin:6px 0}.loss-help .loss-step{color:var(--ink);font-weight:600}.loss-help button{margin-top:4px;min-height:44px}
/* Keep the existing header and tabs usable with enlarged browser text. */
header,nav{flex-wrap:wrap}
.loss-evidence-caption{font-size:.875rem;line-height:1.4;margin:6px 0 10px}
.result-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0 10px}.result-heading h2.result{margin:0}.result-heading button{flex:none;min-height:44px}
.exercise-panel{max-width:680px;margin:auto}.exercise-panel h2{font-size:26px;margin:6px 0}.exercise-note{font-size:.875rem;line-height:1.4;color:var(--muted);margin:8px 0 12px}.exercise-tabs,.exercise-watch,.exercise-actions,.exercise-playback{display:flex;gap:6px}.exercise-tabs{margin:12px 0}.exercise-tabs button,.exercise-watch button,.exercise-actions button,.exercise-playback button{flex:1;min-width:0;min-height:44px;font-size:.875rem;padding:9px 5px;overflow-wrap:anywhere}.exercise-tabs [aria-pressed=true],.exercise-watch [aria-pressed=true]{border-color:var(--gold);color:var(--gold);background:#34303a}.exercise-line{display:grid;grid-template-columns:repeat(var(--count),minmax(0,1fr));gap:5px}.exercise-line button{padding:5px 3px;min-width:0;display:flex;flex-direction:column;gap:5px;align-items:center}.exercise-line [aria-pressed=true]{outline:2px solid var(--gold)}.exercise-line .portrait{width:100%;height:auto;aspect-ratio:2/3}.exercise-line strong{font-size:12px;overflow-wrap:anywhere;line-height:1.25}.exercise-line span,.exercise-line small{font-size:12px;line-height:1.3}.exercise-selection,.exercise-changes{font-size:.875rem;line-height:1.4;color:var(--muted);margin:12px 0}.exercise-endpoints{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.exercise-endpoints>div{min-width:0}.exercise-panel label{display:block;font-size:.875rem;margin:8px 0 5px}.exercise-panel select{font-size:.875rem;min-width:0;width:100%;min-height:44px}.exercise-pact-help{font-size:.875rem;line-height:1.4;margin:12px 0;padding:10px;background:var(--soft);border-radius:8px}.exercise-pact-help p{margin:6px 0}.exercise-comparison table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.875rem}.exercise-comparison caption{text-align:left;color:var(--gold);padding:5px 0 10px;font-size:.875rem}.exercise-comparison th,.exercise-comparison td{text-align:left;padding:9px 5px;border-bottom:1px solid var(--edge);overflow-wrap:anywhere}.exercise-comparison th:first-child{width:41%;font-weight:400}.exercise-comparison th:not(:first-child),.exercise-comparison td{width:29.5%}.exercise-watch{margin:12px 0}.exercise-pact-results{font-size:.875rem}.exercise-pact-results h3{font-size:1rem}.exercise-panel #exercise-error{color:var(--bad);font-size:.875rem}.exercise-actions{margin-top:14px}.exercise-playback{margin:10px 0}.exercise-panel .combat-card .portrait{max-height:105px}.exercise-panel .combat-caption{font-size:.875rem}
@media(max-width:480px){body:has(#exercise-panel) #app{padding-bottom:calc(5rem + env(safe-area-inset-bottom))}.exercise-actions{position:fixed;z-index:5;bottom:max(10px,env(safe-area-inset-bottom));left:10px;width:calc(100% - 20px);background:var(--bg);box-shadow:0 0 0 6px var(--bg)}.exercise-panel{padding:12px}.exercise-panel .hint{font-size:.875rem}.exercise-panel .pact-tabs button{min-height:44px}.exercise-panel .combat-card .portrait{max-height:88px}.exercise-panel .combat-caption{margin:6px 0}}

.loss-actions,.exercise-evidence-actions{display:flex;gap:6px;flex-wrap:wrap}.loss-actions button,.exercise-evidence-actions button{flex:1;min-width:0;min-height:44px;font-size:.875rem;line-height:1.3;white-space:normal}.exercise-guide,.exercise-insight{padding:10px;margin:10px 0 14px;border-left:3px solid var(--gold);border-radius:8px;background:#eac4880a}.exercise-guide p,.exercise-insight p,.exercise-evidence-caption{font-size:1rem;line-height:1.4;margin:7px 0}.exercise-guide>strong,.exercise-insight h3{font-size:1rem;color:var(--gold);margin:0 0 6px}.exercise-guide small,.exercise-guide summary,.exercise-insight summary{font-size:.875rem;line-height:1.35}.exercise-guide small{display:block;color:var(--muted);margin-top:8px}.exercise-guide details,.exercise-insight details{margin:8px 0 0}.exercise-panel [data-coach-focus=true]{outline:2px solid #91d0e8;outline-offset:1px}.exercise-endpoints>[data-coach-focus=true]{border-radius:6px;padding:4px}.exercise-evidence-actions button{padding:8px 5px}.exercise-insight+ .exercise-comparison caption{color:var(--muted)}
.exercise-guide details{padding:0;border:0;background:none;margin:4px 0}.exercise-guide p{margin:4px 0}.exercise-evidence-caption{scroll-margin-top:12px}

/* test.19: full readable card rows on narrow screens; source order is battle order. */
.speed-controls{display:flex;align-items:center;gap:6px;margin:10px 0;flex-wrap:wrap;font-size:.875rem}
.speed-controls>span{color:var(--muted);margin-right:3px}
.speed-controls button{min-height:44px;flex:1;white-space:normal;min-width:0}
.speed-controls [aria-pressed=true]{border-color:var(--gold);background:#383140;color:var(--gold)}
.undo-swap{width:100%;font-size:.875rem;margin:0 0 12px;min-height:44px;position:sticky;top:8px;z-index:3;background:var(--panel)}
.unit .name{font-size:.875rem;line-height:1.35}.unit .values{font-size:.875rem}
.exercise-line strong,.exercise-line span,.exercise-line small{font-size:.875rem}
@media(max-width:780px){
 .roster,.reserve .roster,.exercise-line{grid-template-columns:minmax(0,1fr);gap:8px}
 .roster .unit{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;overflow:visible;border-radius:10px}
 .roster .unit>.portrait{width:58px;align-self:stretch;min-height:82px;border-radius:9px 0 0 9px}
 .roster .unit .unit-body{padding:8px 10px;min-width:0}
 .roster .unit .name{font-size:1rem;min-height:0;line-height:1.3;margin-bottom:5px;overflow-wrap:anywhere}
 .roster .unit .values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));font-size:.875rem;gap:4px}
 .roster .unit .value{justify-content:flex-start;gap:3px}.roster .unit .value img{width:16px;height:16px}
 .roster .unit .rank{left:3px;right:auto;top:3px;z-index:1}.roster .unit .slot{display:block;font-size:.75rem;margin-top:5px}
 .exercise-line button{display:grid;grid-template-columns:58px minmax(0,1fr);grid-template-rows:auto auto auto;text-align:left;gap:4px 10px;padding:7px;align-items:center}
 .exercise-line button>.portrait{grid-column:1;grid-row:1/4;width:58px;height:78px}
 .exercise-line button>span{grid-column:2;font-size:.75rem}.exercise-line button>strong{grid-column:2;font-size:1rem}
 .exercise-line button>.values{grid-column:2;grid-template-columns:repeat(4,minmax(0,1fr));font-size:.875rem}
 .exercise-line .value{justify-content:flex-start;gap:3px}
 .band-demo{grid-template-columns:minmax(0,1fr)!important}
 .band-demo>div{display:grid;grid-template-columns:54px minmax(0,1fr);gap:3px 10px;text-align:left;align-items:center}
 .band-demo>div>.portrait{grid-row:1/5;grid-column:1;width:54px}.band-demo>div>small,.band-demo>div>span,.band-demo>div>b,.band-demo>div>em{grid-column:2;font-size:.875rem}
}
@media(max-width:430px){.roster .unit .values,.exercise-line button>.values{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:780px) and (min-resolution:1dppx){.unit .pact-role-mark{font-size:.875rem}}
.panel-title{flex-wrap:wrap}.panel-title h2{min-width:0;overflow-wrap:anywhere}.panel-title .badge{white-space:normal}
@media(max-width:780px){.roster .unit .values,.exercise-line button>.values{grid-template-columns:repeat(auto-fit,minmax(2.75rem,1fr))}}
.battle-panel:has(#first-pact-lesson)>.speed-controls{display:none}
h2,h3{overflow-wrap:anywhere}

.tutorial-review-art .portrait{width:72px;height:90px;object-fit:cover;border-radius:12px}.tutorial-review-controls{display:flex;flex-wrap:wrap;gap:12px}.tutorial-review-controls button{flex:1;min-width:110px}

/* Readable combat: action, recipient and observed changes share one color. */
.life-hearts{display:flex!important;gap:4px;align-items:center;height:26px}
.life-hearts img{width:22px;height:22px}
.life-hearts .life-full{filter:brightness(0) saturate(100%) invert(65%) sepia(30%) saturate(1200%) hue-rotate(305deg)}
.life-hearts .life-lost{filter:grayscale(1);opacity:.24}
.life-meter>span{color:var(--ink);font-size:.875rem}
.combat-scene{--effect:#e3c880;--effect-bg:#332e21}
.combat-scene.action-damage{--effect:#ff929e;--effect-bg:#3c242d}
.combat-scene.action-heal{--effect:#8ee6b1;--effect-bg:#203b2e}
.combat-scene.action-shield{--effect:#99d9ff;--effect-bg:#203242}
.combat-scene.action-buff,.combat-scene.action-pact{--effect:#ecd18f;--effect-bg:#3a3224}
.combat-scene.action-death{--effect:#b2b9c8;--effect-bg:#30313a}
.combat-action-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px auto 12px;max-width:440px;padding:8px 12px;border-radius:8px;background:var(--effect-bg);color:var(--effect)}
.combat-action-title strong{font-size:1.125rem;line-height:1.2}
.combat-action-title>span{font-size:.875rem}
.combat-side{font-size:.875rem!important;line-height:1.25;margin-bottom:3px;color:var(--ink)}
.combat-role{display:block;font-size:.875rem;font-weight:700;color:var(--effect);margin-bottom:6px;min-height:1.3em}
.combat-card.actor .combat-role{color:#cbb8ff}
.combat-card.actor .portrait{border:2px solid #cbb8ff;box-shadow:0 0 14px #b596e328}
.combat-card.recipient .portrait{border:2px solid var(--effect);box-shadow:0 0 16px color-mix(in srgb,var(--effect) 20%,transparent)}
.combat-portrait{position:relative}
.combat-portrait .portrait{width:100%;aspect-ratio:1.25;max-height:125px!important}
.effect-numbers{position:absolute;left:5px;right:5px;bottom:5px;display:grid;gap:3px;animation:effect-arrive .35s ease-out}
.effect-numbers b{font-size:.875rem;line-height:1.25;text-align:center;padding:5px 3px;background:#111621f2;border:1px solid var(--effect);border-radius:6px;color:var(--effect);box-shadow:0 2px 9px #0007}
.combat-card>strong{font-size:1rem!important;line-height:1.25;overflow-wrap:anywhere}
.combat-scene .event-arrow{color:var(--effect);font-size:24px}
.combat-scene .event-stat>span{font-size:.875rem;flex-wrap:wrap;gap:0 5px}
.combat-scene .event-stat{margin:7px 0 12px}
.combat-scene .event-stat small{display:none}
.combat-scene .event-bar{height:9px}
.combat-scene .combat-caption{font-size:1rem;line-height:1.35;margin:10px auto}
.combat-single{max-width:180px;margin:0 auto}
.combat-lineups{max-width:440px;margin:10px auto 0;display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--edge)}
.combat-lineup{display:grid;grid-template-columns:54px minmax(0,1fr);align-items:center;gap:8px}
.combat-lineup>span{font-size:.875rem;color:var(--muted)}
.combat-minis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.combat-mini{position:relative;min-width:0;border:1px solid #596176;border-radius:5px;display:flex;align-items:center;gap:2px;background:#1c202d;padding:2px}
.combat-mini .portrait{width:28px;height:30px;flex-shrink:0;aspect-ratio:auto;border-radius:3px}
.combat-mini>span{font-size:.75rem;font-weight:700;text-align:center;flex:1;color:var(--ink)}
.combat-mini.actor{border:2px solid #cbb8ff;background:#362c49}
.combat-mini.target{border:2px solid var(--effect);background:var(--effect-bg)}
.combat-mini.fallen{opacity:.45;filter:grayscale(1)}
.action-damage .combat-card.actor .portrait{animation:combat-advance .45s ease-out}
.action-damage .combat-card.recipient .portrait{animation:combat-impact .45s ease-out}
.action-heal .combat-card.recipient .portrait,.action-shield .combat-card.recipient .portrait,.action-buff .combat-card.recipient .portrait{animation:combat-support .6s ease-out}
.action-death .combat-card .portrait{filter:grayscale(1);opacity:.5}
@keyframes combat-advance{0%{transform:translateX(0)}35%{transform:translateX(8px)}100%{transform:translateX(0)}}
@keyframes combat-impact{0%,100%{transform:translateX(0)}30%{transform:translateX(4px);filter:brightness(1.3)}60%{transform:translateX(-2px)}}
@keyframes combat-support{0%,100%{filter:brightness(1)}40%{filter:brightness(1.4)}}
@keyframes effect-arrive{from{opacity:.4;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:480px){
 .life-hearts{gap:3px;height:22px}.life-hearts img{width:17px;height:17px}
 .combat-action-title{margin:5px 0 8px;padding:7px 9px}.combat-action-title strong{font-size:1rem}
 .combat-portrait .portrait{max-height:104px!important}
 .combat-scene .combat-pair{grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr);gap:7px}
 .combat-scene .combat-side,.combat-scene .combat-role{font-size:.875rem!important}
 .combat-scene .combat-card>strong{font-size:.875rem!important}
 .combat-scene .event-stat>span{font-size:.8125rem}
 .combat-scene .combat-caption{font-size:.875rem;margin:7px auto}
 .combat-lineup{grid-template-columns:49px minmax(0,1fr);gap:5px}
 .combat-mini .portrait{width:19px;height:26px}.combat-mini{padding:1px;gap:1px}.combat-mini>span{font-size:.75rem}
 .combat-lineups{gap:4px;margin-top:7px;padding-top:6px}.combat-minis{gap:4px}
}
@media(prefers-reduced-motion:reduce){.combat-scene *{animation:none!important;transition:none!important}}

.combat-mini>span b,.combat-mini>span small{display:block;font-size:.75rem;line-height:1.1}.combat-mini>span b{color:#ffacb5}.combat-mini>span small{color:#a5dcf4}
@media(max-width:480px){nav button{padding-left:5px;padding-right:5px;flex:1 1 auto;min-width:min-content;max-width:none}}

.combat-mini>span{min-width:0;overflow-wrap:anywhere}.combat-action-title{flex-wrap:wrap}.combat-lineups{container-type:inline-size}
@container(max-width:12rem){.combat-lineup{grid-template-columns:1fr}.combat-minis{grid-template-columns:repeat(3,minmax(0,1fr))}.combat-mini .portrait{display:none}.combat-lineup>span{overflow-wrap:anywhere}}

.result-life-note{font-size:1rem;font-weight:700;color:#ffacb5;margin:8px 0}

.speed-controls{flex-wrap:wrap}.speed-controls button{min-width:min-content;flex:1 1 auto}.combat-scene{overflow-wrap:anywhere}

.unit.hit.effect-heal{outline-color:#8ee6b1}.unit.hit.effect-shield{outline-color:#99d9ff}.unit.hit.effect-buff{outline-color:#ecd18f}.unit.hit.effect-pact{outline-color:#ecd18f}

/* Choose a complete collaboration; the exact editor remains optional. */
dialog[data-surface=pact-choices]{width:min(94vw,540px);padding:16px}
dialog[data-surface=pact-choices] h2{font-size:1.4rem;margin:0 0 8px}
.combo-intro{font-size:.875rem;line-height:1.4;color:var(--muted);margin:8px 0 12px}
.combo-slots{display:flex;gap:8px;margin-bottom:12px}
.combo-slots button{flex:1;min-width:0;font-size:.875rem;padding:8px;min-height:48px}
.combo-slots small{display:block;color:var(--muted);font-size:.875rem;margin-top:3px}
.combo-slots [aria-pressed=true]{border-color:var(--gold);background:#383140;color:var(--gold)}
.combo-options{display:grid;gap:8px}
.pact-choice{display:grid;grid-template-columns:82px minmax(0,1fr);gap:10px;text-align:left;align-items:center;padding:10px;min-width:0;background:#242735}
.pact-choice[aria-pressed=true]{border:2px solid var(--gold);padding:9px;background:#34303b}
.combo-portraits{display:flex;align-items:center;justify-content:space-between;gap:3px;min-width:0}
.combo-portraits>.portrait{width:32px;height:44px;flex-shrink:0;border-radius:6px}
.combo-portraits>b{font-size:.875rem;color:var(--gold)}
.combo-copy{min-width:0;display:grid;gap:4px;font-size:.875rem;line-height:1.35;overflow-wrap:anywhere}
.combo-copy>strong{color:var(--gold)}
.combo-copy>b{font-weight:600;color:#c1e6d0}
.combo-copy>small{font-size:.875rem}
.combo-warning{color:#ffacb5}
.combo-details{font-size:.875rem;line-height:1.4;margin:4px 0}
.combo-details p{margin:8px 0}
.combo-secondary{display:flex;gap:8px;margin:10px 0}
.combo-secondary button{flex:1;min-width:0;font-size:.875rem;white-space:normal;overflow-wrap:anywhere;padding:7px;min-height:44px}
#pact-manual{font-size:.875rem;min-height:44px}
.combo-save{position:sticky;bottom:-16px;background:var(--panel);padding:12px 0 2px;box-shadow:0 -8px 12px var(--panel);margin-top:6px}
.combo-save button{font-size:.875rem;min-height:44px;overflow-wrap:anywhere}
.pact-repair{margin:10px 0;padding:10px 12px;border-left:3px solid var(--gold);background:#eac4880d;border-radius:6px;font-size:.875rem;line-height:1.4}
.pact-repair strong{color:var(--gold)}
.pact-repair p{margin:5px 0}
.pact-repair button{font-size:.875rem}
#exercise-pact-choices{margin:12px 0;font-size:.875rem}
#exercise-manual{margin:5px 0}
@media(max-width:480px){dialog[data-surface=pact-choices]{padding:12px}.combo-save{bottom:-12px}.pact-choice{grid-template-columns:72px minmax(0,1fr);gap:8px;padding:8px}.pact-choice[aria-pressed=true]{padding:7px}.combo-portraits>.portrait{width:28px;height:38px}.combo-portraits{gap:2px}.combo-slots{gap:6px}.combo-secondary{gap:6px}}

.combo-alternatives{margin:0}.combo-alternatives>.pact-choice{width:100%;margin:8px 0}.combo-alternatives summary{font-size:.875rem}
.tournament-strip{margin:0 0 .75rem;padding:.65rem .75rem;border:1px solid #55452c;border-radius:14px;background:linear-gradient(120deg,#1e2028,#181b23)}
.tournament-strip-title{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;font-size:.875rem}
.tournament-strip-title>button{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.loss-actions>button{min-width:0;overflow-wrap:anywhere}
.tournament-members{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.35rem}
.tournament-member{position:relative;display:flex;gap:.35rem;align-items:center;min-width:0;padding:.4rem;background:#242833;border:1px solid #414655;border-radius:9px;text-align:left;font-size:.875rem}
.tournament-member>.portrait{flex:0 0 28px;width:28px;height:38px;min-height:0;border-radius:5px;overflow:hidden}
.tournament-member>.portrait img{height:100%;width:100%;object-fit:cover}
.tournament-member>span{min-width:0;display:grid;gap:.2rem}
.tournament-member b{font-weight:600;overflow-wrap:anywhere;line-height:1.2}
.tournament-member.self{border-color:#619fbc;background:#1e3441}
.tournament-member.opponent{border-color:#d3af62;background:#3a3020}
.tournament-member.eliminated{border-style:dashed;background:#191b23;color:#9499a7}
.tournament-member.eliminated>.portrait{filter:grayscale(1);opacity:.6}
.tournament-member em{position:absolute;top:-2px;right:3px;color:#ce8a88;font-size:1rem;font-style:normal}
.tournament-hearts{display:flex;gap:3px;align-items:center;flex-shrink:0}
.tournament-hearts img{width:12px;height:12px;object-fit:contain}
.tournament-hearts .life-lost{opacity:.2;filter:grayscale(1)}
.tournament-match{margin:.5rem 0 0;font-size:.875rem;color:#c8cddd}
.tournament-match b{color:#ecd39a}
.tournament-team-life{display:flex;gap:.65rem;align-items:center;margin:.75rem 0}
.tournament-team-life .tournament-hearts img,.tournament-champion .tournament-hearts img{width:20px;height:20px}
.tournament-round-list{display:grid;gap:.6rem;margin:1rem 0}
.tournament-pair{display:grid;gap:.4rem;padding:.8rem;border:1px solid #444957;background:#252934;border-radius:10px;font-size:1rem}
.tournament-pair span{font-size:.875rem;color:#c0c7d7}
.tournament-pair.own-pair{border-color:#c8a65d}
.tournament-round-nav{display:flex;gap:.5rem;flex-wrap:wrap}
.tournament-decision{padding:.75rem;border-left:3px solid #c8a65d;background:#332c20;color:#ead5ab;font-size:.875rem}
.tournament-champion{display:flex;align-items:center;gap:1rem;padding:1rem;background:#332c20;border:1px solid #a38a50;border-radius:12px;margin:1rem 0}
.tournament-champion>.portrait{flex:0 0 64px;width:64px;height:84px;min-height:0;border-radius:8px;overflow:hidden}
.tournament-champion img{width:100%;height:100%;object-fit:cover}
.tournament-champion>div{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem;min-width:0;overflow-wrap:anywhere}
.tournament-champion small{font-size:.875rem;color:#d5b876}
.tournament-champion strong{font-size:1.25rem}
.tournament-ranking{margin:1rem 0}
.tournament-ranking ol{padding:0;list-style:none;margin:1rem 0}
.tournament-ranking li{display:flex;gap:.7rem;align-items:center;padding:.7rem;border-bottom:1px solid #414654;font-size:1rem}
.tournament-ranking li>span{flex:1;min-width:0;overflow-wrap:anywhere}
.tournament-ranking small{display:block;color:#b2baca;font-size:.875rem;margin-top:.25rem}
.tournament-ranking .own-place{background:#1e3441;border-radius:8px}
.legacy-tournament{display:flex;align-items:center;justify-content:space-between;gap:1rem;border:1px solid #a38a50;background:#332c20;padding:.7rem 1rem;border-radius:12px;margin-bottom:.75rem;font-size:.875rem}
.legacy-tournament p{margin:0}
@media(max-width:1100px){.tournament-members{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:480px){
 .tournament-strip{padding:.5rem}.tournament-members{grid-template-columns:repeat(8,minmax(0,1fr));gap:3px}
 .tournament-member{flex-direction:column;gap:.2rem;padding:.25rem 0;text-align:center;min-height:54px}
 .tournament-member>.portrait{display:block;width:26px;height:34px;flex-basis:34px}
 .tournament-member>span{justify-items:center}.tournament-member b{display:none}
 .tournament-member.self b{display:block;position:absolute;top:3px;left:0;width:100%;font-size:.75rem;background:#132735dd}
 .tournament-member .tournament-hearts{gap:1px}.tournament-member .tournament-hearts img{width:8px;height:8px}
 .legacy-tournament{flex-direction:column;align-items:stretch;gap:.5rem}
 #app .market{display:flex;flex-direction:column}#app .market-status{order:0}#app .market-controls{order:1;margin:6px 0}#app .market .offers{order:2}#app .market-secondary{order:3}#app .market .pact-repair{order:4}#app .market-note{order:5}
}
@media(max-width:13rem){
 .tournament-members{grid-template-columns:repeat(2,minmax(0,1fr))}.tournament-strip-title{flex-wrap:wrap}
 .tournament-member{flex-direction:row;gap:.4rem;justify-content:center}.tournament-member b,.tournament-member.self b{display:block;position:static;width:auto;font-size:.875rem;background:none}
 .tournament-member>.portrait{width:32px;height:40px;flex-basis:32px}.tournament-member .tournament-hearts img{width:12px;height:12px}
}

/* Generals: one permanent choice and an automatic, recorded combat effect. */
.general-selection h1{font-size:clamp(1.5rem,4vw,2.2rem);margin:.35rem 0}.general-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}.general-option{min-width:0;display:flex;align-items:center;flex-direction:column;text-align:center;gap:8px;padding:18px 12px;border:1px solid #4c5060;background:linear-gradient(160deg,#242838,#161a23);border-radius:14px}.general-option:hover,.general-option:focus-visible{border-color:var(--gold);background:#2c3041}.general-art{display:block;flex-shrink:0;object-fit:contain;width:64px;height:64px}.general-option>.general-art{width:78px;height:78px}.general-option strong{font-size:1.15rem}.general-option>span{color:var(--muted);font-size:.8rem}.general-option>b{font-size:.88rem;color:#e2c48c}.general-option>small{font-size:.82rem;line-height:1.5}.general-option>em{font-size:.75rem;font-style:normal;color:#a4c7f1;margin-top:auto}.general-banner{display:flex;align-items:center;gap:10px;text-align:left;width:100%;min-width:0;padding:9px 12px;margin:8px 0 12px;background:#1b2230;border:1px solid #4b5870;border-radius:10px}.general-banner .general-art{width:38px;height:38px}.general-banner>span:last-child{min-width:0;display:flex;flex-direction:column;gap:4px}.general-banner b{font-size:.86rem}.general-banner small{font-size:.77rem;color:#c7d2e6;line-height:1.4}.general-active{border-color:#f2cd7e!important;box-shadow:0 0 18px #e9bb6850}.general-detail-head{display:flex;align-items:center;gap:16px}.general-detail-head .general-art{width:76px;height:76px}.general-detail-head p{min-width:0}.general-pool{margin:18px 0}.general-pool summary{cursor:pointer;font-weight:700;color:#e2c48c}.general-pool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.general-pool-grid article{display:flex;align-items:center;gap:7px;min-width:0;background:#1c2330;padding:6px;border-radius:7px}.general-pool-grid .art{width:36px;height:48px;flex-shrink:0}.general-pool-grid span{display:flex;flex-direction:column;min-width:0}.general-pool-grid b{font-size:.78rem;overflow-wrap:anywhere}.general-pool-grid small{font-size:.65rem;color:#a7b9ce}.general-pool-grid .exclusive{border:1px solid #c6a15f}.general-card-access{font-size:.75rem;color:#e2c48c;display:block}.general-combat .combat-portrait>.general-art{width:100%;height:100%;max-height:180px}.action-general .combat-card.recipient{border-color:#eed19a}.tournament-member>.general-art{width:100%;max-width:42px;height:42px}.general-option,.general-banner,.general-detail-head{overflow-wrap:anywhere}
@media(max-width:680px){.general-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.general-option{padding:12px 9px;gap:5px}.general-option>.general-art{width:52px;height:52px}.general-option>small{font-size:.76rem}.general-option>em{font-size:.7rem}.tournament-member>.general-art{max-width:30px;height:30px}.general-pool-grid{gap:5px}.general-pool-grid .art{width:28px;height:40px}.general-pool-grid b{font-size:.72rem}}

.general-team-name{font-size:.65rem;color:#c7b896}.tournament-member.eliminated>.general-art{filter:grayscale(1);opacity:.6}.tournament-champion>.general-art{width:64px;height:64px}.general-combat .general-art{max-width:100%;min-height:100px}.general-pool-grid article .art{min-height:0}.general-detail-head{flex-wrap:wrap}
@media(max-width:680px){.tournament-member .general-team-name{display:none}}

/* General-specific card and pact guidance, test.25. */
.general-pact-plan,.general-card-guide{border:1px solid #ad965844;background:#ad96580a;border-radius:12px;padding:12px;margin:12px 0}
.general-pact-plan p,.general-card-guide p{margin:6px 0 0;font-size:.92rem;line-height:1.45}
.general-card-guide>span{display:inline-block;margin:8px 0 0;padding:3px 9px;border-radius:20px;background:#c6ad5c20;color:#dfc47e;font-size:.8rem}
.combo-general-reason{color:#cfb779;line-height:1.35;margin-top:4px}
.expansion-banner{border-color:#c6ad5c55}
.formation-tools{display:flex;gap:8px;align-items:stretch;margin:10px 0}.formation-tools button{flex:1;min-width:0;min-height:48px;font-size:14px}.formation-tools small{display:block;font-size:12px;font-weight:400;line-height:1.3;margin-top:3px}.formation-tools>span{align-self:center;font-size:12px;line-height:1.4;color:var(--muted);padding:0 6px}.formation-open{border-color:var(--gold);background:linear-gradient(125deg,#333439,#202c33);color:var(--gold)}
dialog[data-surface=formation-proposal]{width:min(94vw,660px);padding:18px}.formation-heading h2{font-size:1.5rem;margin:6px 0}.formation-heading>p{font-size:14px;line-height:1.45;color:var(--muted);margin:8px 0 16px}.formation-direction{display:flex;justify-content:space-between;gap:8px;font-size:13px;margin:8px 0}.formation-direction span{color:var(--muted)}.formation-line{display:grid;grid-template-columns:repeat(var(--count),minmax(0,1fr));gap:6px}.formation-line button{min-width:0;padding:5px 3px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;border-radius:10px}.formation-line [aria-pressed=true]{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.formation-line .portrait{width:100%;height:auto;aspect-ratio:2/3;max-height:120px}.formation-line strong{font-size:12px;line-height:1.2;overflow-wrap:anywhere}.formation-line small,.formation-slot{font-size:11px;line-height:1.3}.formation-slot{color:var(--gold)}.formation-change{font-size:10px;border-radius:4px;background:#ffffff09;color:var(--muted);padding:3px;margin-top:auto}.formation-change.incoming{color:var(--good);background:#75d7bd13}.formation-reason{border-left:3px solid var(--gold);padding:10px 12px;background:#eac48809;border-radius:8px;margin:12px 0;min-height:108px}.formation-reason>strong{font-size:14px;color:var(--gold)}.formation-reason p{font-size:14px;line-height:1.5;margin:6px 0}.formation-reason>small{color:var(--muted);font-size:12px}.formation-reason details{margin:8px 0 0}.formation-reason summary{font-size:12px}.formation-reason .values{max-width:260px;margin-top:10px}.formation-reserve{border:1px dashed var(--edge);border-radius:8px;padding:9px;margin:12px 0}.formation-reserve>strong{font-size:12px;color:var(--muted)}.formation-reserve>div{display:flex;gap:12px;margin-top:8px;flex-wrap:wrap}.formation-reserve>div>span{display:flex;gap:7px;align-items:center;flex:1;min-width:130px;font-size:12px}.formation-reserve .portrait{width:30px;flex-shrink:0}.formation-reserve small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.formation-pacts h3{font-size:16px;margin:16px 0 8px}.formation-pacts article{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--edge)}.formation-pact-art{display:flex;align-items:center;gap:4px;flex-shrink:0;color:var(--gold)}.formation-pact-art .portrait{width:28px;height:42px}.formation-pacts article strong{font-size:14px}.formation-pacts article p{font-size:13px;line-height:1.45;margin:4px 0}.formation-pacts article small{font-size:11px;color:var(--muted)}.formation-summary{font-size:13px;line-height:1.5;border-radius:8px;padding:10px;background:var(--soft);margin:12px 0}.formation-before{font-size:13px}.formation-before ol{padding-left:20px;line-height:1.7}.formation-note{font-size:12px;line-height:1.4}.formation-apply{display:flex;gap:8px;position:sticky;bottom:-18px;padding:12px 0 8px;background:var(--panel);box-shadow:0 -7px 14px var(--panel);z-index:2}.formation-apply button{min-height:48px;min-width:0;line-height:1.3;white-space:normal;font-size:14px}.formation-apply .primary{flex:2}.formation-apply .quiet{flex:1}
@media(max-width:430px){dialog[data-surface=formation-proposal]{padding:12px}.formation-line{gap:4px}.formation-line strong{font-size:11px}.formation-line small,.formation-slot{font-size:10px}.formation-change{font-size:9px;padding:3px 1px}.formation-line .portrait{max-height:90px}.formation-apply{bottom:-12px}.formation-heading h2{font-size:1.3rem}.formation-pacts article{gap:8px}}

/* Team-aware market and the current tournament encounter. */
.market-ownership{display:flex;align-items:center;gap:5px;min-width:0;color:#c4ccda;font-size:12px;line-height:1.25;font-weight:600;overflow-wrap:anywhere}
.market-ownership .general-art{width:22px;height:22px}.market-ownership.general-maera{color:#e4c587}.market-ownership.general-veyra{color:#d8b6f1}.market-ownership.general-elian{color:#99dfcb}.market-ownership.general-raska{color:#acd9ff}
.offer-context{display:block;color:#bcd5cc;border-top:1px solid #454f53;padding-top:5px;font-size:12px;line-height:1.4}
.purchase-context{margin:14px 0;padding:14px;border:1px solid #52645e;border-radius:12px;background:#1b2929;overflow-wrap:anywhere}.purchase-context h3{margin-top:10px;font-size:16px}.purchase-context p{font-size:14px;line-height:1.5}.purchase-general{display:flex;align-items:center;gap:9px;border-top:1px solid #445e58;margin-top:10px;padding-top:6px}.purchase-general .general-art{width:36px;height:36px}.purchase-general p{margin:5px 0}
.purchase-pact{margin-top:12px;border:1px solid #586070;border-radius:8px;padding:10px;background:#222b38}.purchase-pact>strong{font-size:14px;color:#e4cb9c}.purchase-pact>small{display:block;font-size:12px;line-height:1.5;color:#c2cedd}.purchase-pact details{margin-top:5px}.purchase-pact summary{font-size:13px}.purchase-partners{display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);align-items:center;gap:8px;margin-top:10px}.purchase-partners>span{display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:7px;align-items:center}.purchase-partners .portrait{width:36px;height:48px;grid-row:1/3}.purchase-partners b{font-size:13px;line-height:1.3}.purchase-partners small{font-size:12px;color:#b6c5d8}
.tournament-story{margin-top:10px;padding:10px 12px;border:1px solid #4a576b;border-radius:10px;background:linear-gradient(110deg,#202b3a,#1c2330)}.tournament-story.story-final{border-color:#c8a05e;background:linear-gradient(110deg,#3b3124,#222535)}.tournament-story.story-danger{border-color:#af7167;background:linear-gradient(110deg,#38262a,#222535)}.encounter-heading{display:flex;align-items:baseline;gap:8px 16px;flex-wrap:wrap}.encounter-heading>strong{font-size:16px}.story-final .encounter-heading>strong{color:#f4d99f}.story-danger .encounter-heading>strong{color:#f2b7ac}.encounter-duel{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:center;max-width:580px;margin:9px 0}.encounter-team{display:flex;align-items:center;gap:8px;min-width:0}.encounter-team>.general-art,.encounter-team>.portrait{width:38px;height:42px;flex-shrink:0}.encounter-team>span{display:grid;gap:3px;min-width:0}.encounter-team b{font-size:14px;overflow-wrap:anywhere}.encounter-team small,.encounter-versus{font-size:12px;color:#c3c9d4}.encounter-team .tournament-hearts img{width:11px;height:11px}.encounter-history{font-size:13px;color:#c2cddd;line-height:1.4;margin:7px 0}.encounter-stakes{display:flex;flex-wrap:wrap;gap:4px 16px}.encounter-stakes p{font-size:13px;margin:0;line-height:1.4}.story-danger .encounter-stakes{color:#f5c7bd}.story-final .encounter-stakes{color:#eed4a7}
@media(max-width:480px){.tournament-story{padding:9px}.encounter-heading{gap:4px}.encounter-heading>.eyebrow{width:100%}.encounter-heading>strong{font-size:15px}.encounter-duel{gap:7px}.encounter-team{gap:5px}.encounter-team>.general-art,.encounter-team>.portrait{width:30px;height:34px}.encounter-team b{font-size:13px}.encounter-team .tournament-hearts{display:none}.purchase-context{padding:10px}.purchase-partners{gap:5px}.purchase-partners>span{grid-template-columns:28px minmax(0,1fr);column-gap:5px}.purchase-partners .portrait{width:28px;height:38px}.market-ownership .general-art{width:18px;height:18px}}

/* A separate pact decision, with the formation kept in place. */
.pact-advice-open{border-color:#8fbea9;background:#223c36}.pact-advice-open small{display:block;font-size:12px;color:#c0d7cb;margin-top:3px}.formation-tools:has(.pact-advice-open){grid-template-columns:repeat(2,minmax(0,1fr))}.formation-tools #undo-pact-advice{font-size:13px;line-height:1.3}.formation-tools #undo-pact-advice small{display:block;font-size:12px;color:var(--muted);margin-top:3px}
dialog[data-surface=pact-advisor]{width:min(94vw,610px)}.pact-advisor-head h2{margin:8px 0}.pact-advisor-head p{color:#c8d6d1;font-size:14px}.pact-advisor-overview{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 0;border-block:1px solid #44584f;font-size:13px}.pact-advisor-overview>strong{color:#a8d8c0}.pact-advisor-cards{display:grid;gap:12px;margin:12px 0}.pact-advisor-card{padding:12px;border:1px solid #596678;border-radius:12px;background:#232c3b}.pact-advisor-card.kept{border-color:#546b61}.pact-advisor-card.changed{border-left:3px solid #a8d8c0}.pact-advisor-title{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:14px;color:#dfc695}.pact-advisor-title>span{color:#c7d8d0;font-size:12px;border:1px solid #596f65;border-radius:20px;padding:2px 8px}.pact-advisor-card h3{font-size:16px;line-height:1.35;margin:8px 0 12px}.pact-advisor-card p{font-size:14px;line-height:1.5}.pact-advisor-card .advisor-reason{color:#edf1e7}.pact-advisor-card .advisor-before{font-size:13px;color:#c5cfdf;border-left:2px solid #768595;padding-left:8px}.advisor-caution{font-size:13px;color:#ecd09d;line-height:1.5}.pact-advisor-card .advisor-caution{font-size:13px}.pact-advisor-card details{margin-top:4px}.pact-advisor-card summary{font-size:13px}.advisor-removed{border:1px solid #816d60;border-radius:9px;padding:10px}.advisor-removed h3{font-size:14px;color:#e7c1a6}.advisor-removed p{font-size:13px}.advisor-scope{font-size:14px;color:#b7d7c7}.advisor-limits{margin-top:5px}.advisor-limits p{font-size:13px;color:var(--muted)}.advisor-actions{display:grid;grid-template-columns:1fr 1.45fr;gap:8px;position:sticky;bottom:-18px;background:var(--panel);padding:12px 0 3px;margin-top:8px}.advisor-actions button{font-size:14px;line-height:1.3;min-width:0}
@media(max-width:480px){.pact-advisor-card{padding:10px}.pact-advisor-card h3{font-size:15px}.pact-advisor-overview{flex-wrap:wrap}.advisor-actions{bottom:-14px}.formation-tools .pact-advice-open{font-size:14px}.formation-tools:has(.pact-advice-open){gap:6px}}
