/* One shared scale uses both available dimensions. No browser zoom. */
:root{--board-u:min(1px,calc(100vw / 1728),calc((100dvh - 44px) / 1280))}
.ability-face{display:flex!important;position:relative;flex-direction:column;background:#d7c59e!important;border:2px solid #9c8552;box-shadow:inset 0 0 0 3px #302c25;color:#25211b!important;aspect-ratio:5/7;width:100%;padding:7%!important;gap:5%;text-align:center;container-type:inline-size;overflow:hidden}
.ability-face>img{width:100%!important;height:50%!important;object-fit:cover!important;object-position:center 25%;margin:0!important}
.ability-face .ability-faction{font:600 4.8cqw var(--serif);text-transform:uppercase}.ability-face>strong{font:600 7cqw var(--serif);letter-spacing:.02em}.ability-face .ability-rules{font:5.4cqw/1.3 var(--serif);color:#25211b}.spent .ability-face{filter:grayscale(1);opacity:.65}
.ability-zoom .ability-face{width:100%;height:auto}.ability-card-detail{width:min(430px,74vw)!important;height:auto!important}.ability-tile>.ability-face{padding:7%!important;font-size:inherit}.ability-tile{cursor:zoom-in}
.entry-abilities,.faction-offers{display:flex;justify-content:center;align-items:stretch;gap:28px}.entry-ability,.faction-offers>div{width:min(250px,26vw);display:flex;flex-direction:column;align-items:center;gap:12px}.entry-ability{padding:0;background:none;border:0}.faction-offers .primary{width:100%;margin-top:auto}.ability-offer-preview{width:100%}
.campaign{position:relative}.campaign-representative{position:absolute;left:22px;top:22px;width:65px;height:85px;object-fit:cover;object-position:20% center;border:1px solid var(--gold)}
.draft-offer,.capstone-offers,.campaign-actions{justify-content:center}.draft-offer>div{display:flex;flex-direction:column;align-items:center;gap:14px}.draft-offer>div>button:last-child{width:100%;margin:0}.capstone-offers{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,240px));gap:20px}.capstone-offers>section{display:flex;flex-direction:column}.capstone-offers .primary{margin-top:auto}.journey-development{font:12px/1.3 var(--sans);color:var(--gold);padding:6px 8px;border:1px solid #b99a5b88;background:#283231;align-self:center;text-align:center}.campaign-journey{gap:8px}.campaign-journey>span{min-width:44px}.campaign-journey small{white-space:normal}.campaign-pool{display:flex;flex-wrap:wrap;justify-content:center;align-content:start;gap:16px;min-height:260px}.campaign-pool>div{width:140px;display:flex;flex-direction:column;align-items:center;gap:8px}.campaign-pool .card{width:140px}.campaign-pool button:not(.card){width:140px;min-height:36px}.mainboard,.sideboard{margin:24px 0;padding:18px;border-top:1px solid var(--gold)}.mainboard>h2{display:flex;justify-content:space-between}.deck-role{min-height:290px}.deck-role>h3{font:12px var(--sans);letter-spacing:.14em;color:var(--gold);margin:16px 0}.sideboard{background:#0b161bcc;border:1px solid #6c796966}.semifinal-bracket{padding:22px;border:1px solid #b99a5b66;margin:24px 0}.semifinal-bracket>div{display:flex;align-items:center;justify-content:space-around;gap:20px}.semifinal-bracket small{opacity:.65}.location-offers .vetoed{filter:grayscale(1);opacity:.55}.location-offers .vetoed h2{text-decoration:line-through}.location-offers strong{display:block;text-align:center;color:var(--gold)}
.priority-binary{display:flex;align-items:center;justify-content:center;gap:55px;height:120px;color:var(--gold)}.priority-binary b{font-size:34px}.tutorial-dialog{width:min(850px,94vw);max-width:94vw}.tutorial-example{display:flex;align-items:center;gap:32px;margin:24px 0}.tutorial-example>.card{width:min(210px,24vw);flex:none;pointer-events:none}.tutorial-copy{font-size:18px;line-height:1.7}.tutorial-phases{font-size:11px;letter-spacing:.06em;color:var(--gold);margin-bottom:20px}.tutorial-anatomy{display:flex;gap:12px;font-size:12px}.tutorial-audit{padding:16px;border:1px solid var(--gold);color:var(--gold)}.legacy-save-note{text-align:center;font-size:13px;color:var(--muted)}
.dominance-display{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(100% + 8px);width:180px;display:grid;grid-template-columns:1fr 1fr;text-align:center;color:#e7d3a0}.dominance-display span{display:flex;flex-direction:column;gap:3px}.dominance-display b{font:22px var(--serif)}.dominance-display small{position:static!important;width:auto!important;height:auto!important;font:9px var(--sans)!important}.dominance-display>small{grid-column:1/-1;letter-spacing:.16em;padding-top:4px}
.opponent-hand:has(.card){display:flex;gap:8px;max-height:48px}.opponent-hand>.card{width:32px!important;height:45px!important}
.comparison-contributions{position:fixed;color:#ecd7a4;font:13px/1.4 var(--sans);text-align:center;background:#0b171bf2;padding:10px;max-height:155px;overflow:auto;border:1px solid #b99a5b66}.comparison-contributions strong{display:block;color:#fff1c0;padding-top:8px}.mobilization-audit{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(660px,90vw);padding:28px;display:grid;grid-template-columns:1fr 1fr;gap:24px;background:#0d1c20f5;border:1px solid var(--gold);text-align:center;box-shadow:0 0 0 100vmax #06101577}.mobilization-audit h2{grid-column:1/-1}.mobilization-audit strong{font:23px var(--serif);color:var(--gold)}.audit-contributor{outline:2px solid #e9cb80!important}.audit-excluded{filter:grayscale(1) brightness(.4)!important}
@media(min-width:900px){
 body:has(.duel-layout){overflow:hidden}body:has(.duel-layout) header{height:44px;min-height:44px;padding:0 20px}
 .duel-layout{display:block;height:calc(100dvh - 44px);min-height:0}.playfield{height:100%;min-height:0;display:grid;grid-template-rows:calc(40 * var(--board-u)) minmax(0,1fr) calc(44 * var(--board-u)) calc(260 * var(--board-u))}
 .player-strip{min-height:0;height:auto;padding:2px 18px}.player-strip h3{font-size:15px}.player-strip .details,.player-strip .metric{font-size:10px}.player-strip .metric strong{font-size:18px}.phase-strip{gap:5px}.phase-step{padding:5px;font-size:10px}
 .arena,.arena:has(.central-decision),.arena:has(.round-result),.arena:has(.compact-decision){--portrait-height:calc(145 * var(--board-u));--action-height:90px;display:grid;grid-template-rows:calc(132 * var(--board-u)) minmax(0,1fr) var(--action-height) calc(132 * var(--board-u));gap:calc(12 * var(--board-u));padding:calc(10 * var(--board-u)) 5vw;overflow:visible;min-height:0}
 .arena .lane,.arena>.lane.opponent{height:100%;min-height:0;padding:0;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.arena .lane .cards{margin:0;gap:calc(12 * var(--board-u));justify-content:center}.arena .lane .card,.arena .lane .empty-slot{width:calc(78 * var(--board-u));height:calc(109.2 * var(--board-u));min-width:0;min-height:0}.lane-label{font-size:8px;position:static}.order-number{font-size:8px;bottom:-12px}
 .arena .board-center{display:grid;grid-template-columns:minmax(0,1fr) calc(165 * var(--board-u)) calc(190 * var(--board-u)) calc(165 * var(--board-u)) minmax(0,1fr);align-items:center;justify-items:center;gap:calc(22 * var(--board-u));padding:0;margin:0;min-height:0;height:100%}.location{grid-column:auto;width:85%;justify-self:start}.location h3{font-size:clamp(14px,calc(22 * var(--board-u)),22px)}.location p{font-size:clamp(10px,calc(13 * var(--board-u)),13px);line-height:1.35}.location .eyebrow{font-size:9px}.round-panel{grid-column:auto;grid-row:auto;justify-self:end;display:flex;flex-direction:column}.round-pip{font-size:10px;width:23px;height:26px}
 .active-zone{min-height:0;display:flex;flex-direction:column;align-items:center;gap:4px}.active-zone .card,.active-zone .card-back,.active-zone .active-placeholder{width:calc(165 * var(--board-u));height:calc(231 * var(--board-u));min-height:0;min-width:0}.zone-label{font-size:8px;position:static}.active-zone .reveal-in{line-height:0}
 .arena .pressure{width:calc(120 * var(--board-u));height:calc(203 * var(--board-u));min-height:0;margin-top:calc(36 * var(--board-u));padding:0}.arena .pressure>.eyebrow{top:7%;font-size:clamp(9px,calc(12 * var(--board-u)),12px)}.arena .pressure>.pressure-end{top:20%;font-size:8px}.arena .pressure>.pressure-track{top:31%;height:42%;min-height:0;width:24px;left:calc(50% - 12px)}.arena .pressure>.pressure-track+.pressure-end{top:80%}.arena .pressure-dot{width:18px;height:18px;min-height:18px}.dominance-display{width:calc(180 * var(--board-u));bottom:calc(100% + 5px)}.dominance-display b{font-size:clamp(16px,calc(24 * var(--board-u)),24px)}
 .arena .decision-slot{width:calc(950 * var(--board-u));max-width:76%;justify-self:center;height:var(--action-height);min-height:var(--action-height);max-height:var(--action-height);margin:0}.arena .decision-slot>.central-decision{height:100%;min-height:0;padding:10px 16px;gap:10px;overflow:auto;align-items:center}.decision-copy h3{font-size:clamp(15px,calc(22 * var(--board-u)),22px)}.decision-copy p{font-size:11px}.decision-copy .eyebrow{font-size:9px}.decision-actions .choice,.decision-actions button{font-size:11px;min-height:30px;padding:5px 10px}.decision-actions{max-width:58%}
 .arena-portrait{left:14px;width:calc(var(--portrait-height)*.84);height:var(--portrait-height)}.rival-portrait{top:8px}.your-portrait{bottom:8px}.opponent-abilities{left:calc(25px + var(--portrait-height)*.84);top:8px;height:var(--portrait-height);max-width:calc(220 * var(--board-u))}.opponent-abilities .ability-tile{width:calc(85 * var(--board-u))}.opponent-abilities>.eyebrow{font-size:8px}.opponent-abilities .ability-slots{gap:6px;margin-top:0}.opponent-abilities .opponent-ability-state{font-size:9px;line-height:10px;padding:2px}.opponent-capstone{top:8px;right:14px;width:calc(285 * var(--board-u));padding:8px}.opponent-capstone>img{height:calc(40 * var(--board-u))}.opponent-capstone h3{font-size:15px}.opponent-capstone p{font-size:11px;line-height:1.25}
 .hand-region{padding:0 6vw 8px;height:100%;min-height:0}.hand-top{height:22px;min-height:0;margin:0;padding:2px;text-align:center;justify-content:center}.hand-meta,.pile-button{font-size:10px}.hand-dock{height:calc(100% - 22px);display:grid;grid-template-columns:calc(290 * var(--board-u)) minmax(0,1fr) calc(290 * var(--board-u));gap:16px;align-items:stretch}.hand-dock .hand{height:100%;padding:0 8px;min-height:0;display:flex;align-items:center;justify-content:center;gap:calc(12 * var(--board-u))}.hand-dock .hand .card{width:calc(156 * var(--board-u));height:calc(218.4 * var(--board-u));min-width:0;max-width:calc((100% - 40px) / 4);flex-shrink:1}.hand-dock .hand .card:only-child{max-width:none}.ability-panel,.passive-panel{min-height:0;height:100%;padding:8px;overflow:auto}.ability-panel .ability-slots{height:calc(100% - 35px);margin-top:4px;gap:10px}.ability-panel .ability-tile{max-height:100%;height:auto;aspect-ratio:5/7}.ability-panel .ability-note{font-size:11px;margin:4px 0}.ability-panel .eyebrow,.passive-panel .eyebrow{font-size:9px}.passive-art{height:calc(60 * var(--board-u));margin:4px 0}.passive-panel h3{font-size:17px}.passive-panel p{font-size:11px;line-height:1.4;margin:4px 0}.passive-panel small{font-size:9px}
}

@media(min-width:900px){
.arena .decision-slot>.central-decision{flex-wrap:nowrap;padding:8px 14px;overflow:auto}
.central-decision .decision-copy h3{margin:4px 0;font-size:16px}.central-decision .decision-copy p{margin:0;font-size:11px;line-height:1.3}
.hand-dock .ability-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:4px;overflow:hidden;padding:5px}
.hand-dock .ability-panel .ability-slots{height:100%;margin:0;min-height:0;gap:8px;align-items:stretch}
.hand-dock .ability-panel .ability-tile{height:100%;width:auto;min-width:0;padding:0;justify-self:center;aspect-ratio:5/7}
.hand-dock .ability-tile .ability-face{height:100%;min-height:0;flex:none}
.hand-dock .ability-panel .ability-note{margin:0;font-size:10px;line-height:12px}
.ability-slot-empty{height:100%;min-height:0;padding:4px;gap:4px;font-size:9px}.ability-slot-empty b{font-size:22px}.ability-slot-empty small{font-size:8px}
}
@media(min-width:900px){
.playfield{grid-template-rows:36px minmax(0,1fr) 36px calc(260 * var(--board-u))}
.arena .pressure{margin-top:55px}
.hand-dock .ability-panel{padding:5px!important}.hand-dock .ability-panel .ability-note{font-size:10px!important}
.ability-slot-empty{gap:2px}.ability-slot-empty::before{font-size:7px}.ability-slot-empty span{font-size:10px}.ability-slot-empty b{font-size:19px}.ability-slot-empty small{font-size:8px}
}

@media(min-width:900px){.arena .active-zone{height:auto;align-self:center}.arena .active-zone .reveal-in{height:auto;aspect-ratio:5/7}}
/* P3 ability sheets: retain their complete frame and illustration. Only changed text is overlaid. */
.ability-face.legacy-ability{display:block!important;padding:0!important;border:0;box-shadow:none;background:transparent!important;position:relative;aspect-ratio:704/980;overflow:hidden}
.ability-face.legacy-ability>img{position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:fill!important;margin:0!important}
.legacy-ability .ability-title-replacement,.legacy-ability .ability-text-replacement{position:absolute;display:flex;align-items:center;justify-content:center;text-align:center;color:#27170f;background:radial-gradient(ellipse,#e0d6c0,#d0c2a8);margin:0;box-sizing:border-box}
.legacy-ability .ability-title-replacement{left:17%;right:17%;top:73%;height:7.1%;font:bold 6.8cqw Georgia,serif;letter-spacing:.015em}
.legacy-ability .ability-text-replacement{left:13%;right:13%;top:82%;height:13.7%;padding:1.5%;font:bold 3.9cqw/1.25 Georgia,serif}
.dominance-display>small{grid-row:1;padding:0 0 6px}.dominance-display{bottom:calc(100% + 14px)}
@media(min-width:900px){.arena .pressure{width:calc(140 * var(--board-u));height:calc(231 * var(--board-u));margin-top:42px}.arena .dominance-display{bottom:calc(100% + 14px)}.arena .board-center{min-height:0}}
body:not(:has(.duel-layout)){background:#0d181c url('assets/neutral-backdrop.png') center/cover fixed no-repeat}
.entry-dialog{background-image:linear-gradient(#0d191b99,#0d191b99),url('assets/neutral-backdrop.png');background-size:cover;background-position:center}
.welcome-path::before{background-position:center}.faction-path::before{background-position:center}
.resolve-comparison{width:min(820px,96vw);max-width:96vw;max-height:96dvh;padding:20px 28px;background:#101d21f5;border:1px solid #b49a60;overflow:auto;text-align:center}
.resolve-comparison::backdrop{background:#030b10b8;backdrop-filter:blur(3px)}
.comparison-columns{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin:10px 0 18px}
.comparison-player{display:flex;align-items:center;flex-direction:column;min-width:0}.comparison-player h3{font:12px var(--sans);letter-spacing:.14em;margin:0 0 10px;color:var(--gold)}
.resolve-comparison .card{width:min(260px,28vw,32dvh)!important;height:auto!important;aspect-ratio:5/7;flex:none;margin:0;pointer-events:none;transform:none}
.comparison-breakdown{width:100%;max-width:300px;margin-top:12px;font-size:13px;text-align:left}.comparison-breakdown>div{display:flex;justify-content:space-between;gap:15px;padding:3px 0}.comparison-breakdown b{color:#ebd5a0}.comparison-total{border-top:1px solid #b69e6066;margin-top:7px;font-weight:bold}.comparison-verdict{text-align:center;color:var(--gold);margin:8px 0 4px}.comparison-margin{text-align:center;font-size:11px;margin:0}.round-winner>.card{outline:2px solid #d9ba70;box-shadow:0 0 25px #dbb96440}
.comparison-continue{min-width:210px;pointer-events:auto}.resolve-comparison>.eyebrow{display:block}
.priority-binary{position:relative;min-width:min(460px,80vw);gap:100px;margin:24px 0;height:140px}.priority-binary::before{content:'';position:absolute;left:12%;right:12%;top:50%;height:1px;background:linear-gradient(90deg,#bda367,transparent 45%,transparent 55%,#bda367)}.priority-binary span{padding:16px;border:1px solid #bda36744;z-index:1;background:#101d21}.priority-binary span.priority-winner{border-color:#f2d395;color:#fff0c0;box-shadow:0 0 24px #d6b26955}.priority-binary b{position:absolute;left:calc(50% - 12px);font-size:24px;z-index:2}.priority-dialog{width:min(650px,94vw);text-align:center}.priority-dialog p{min-height:40px}
.rules-reference{width:min(850px,94vw);max-height:88dvh}.rules-reference input{width:100%;padding:12px;margin:12px 0 18px;background:#10232a;color:#eee;border:1px solid #aa935d}.rules-topics details{padding:14px 0;border-top:1px solid #b69e6044}.rules-topics summary{font:21px var(--serif);cursor:pointer;color:var(--gold)}.rules-topics p{line-height:1.65;color:#d1dad8}.rules-topics dt{color:var(--gold);margin-top:16px}.rules-topics dd{margin:5px 0;line-height:1.5}.rules-reference .dialog-actions{justify-content:space-between}
.opponent-abilities .ability-face.legacy-ability{flex:none;height:auto!important;aspect-ratio:704/980}

/* Review refinements: preserve artwork and reserve presentation geometry. */
.priority-binary{display:grid;grid-template-columns:1fr 1fr;gap:80px;width:min(460px,80vw);min-width:0;margin:24px auto 12px}
.priority-binary span{width:100%;box-sizing:border-box;text-align:center;padding:34px 10px 16px}.priority-binary b{top:32px;left:calc(50% - 12px)}
.priority-binary::before{left:20%;right:20%;top:48px}.priority-dialog h2{min-height:2.4em;display:grid;place-items:center}.priority-dialog>button{min-width:220px}
.resolve-comparison{background:transparent!important;border:0!important;box-shadow:none!important;outline:0!important;overflow:auto}
.resolve-comparison::before,.resolve-comparison::after{display:none!important}.resolve-comparison::backdrop{background:#030b10b0;backdrop-filter:blur(7px)}
.comparison-columns{align-items:start}.comparison-breakdown{min-height:0}.comparison-continue{margin:12px auto 0}
.mobilization-audit{inset:0;margin:auto;transform:none;height:fit-content;max-height:90dvh;overflow:auto;box-shadow:none}.mobilization-audit::backdrop{background:#06101599}.mobilization-audit>button{grid-column:1/-1;justify-self:center;margin-top:12px}
.campaign-journey{gap:12px;align-items:start;max-width:980px}.campaign-journey>span:not(:last-child)::after{display:none}.campaign-journey>span{min-width:45px}.campaign-journey>.journey-development{position:relative;align-self:start;margin:0;padding:8px 10px;max-width:140px;font-style:normal;line-height:16px;flex:none}
.sideboard .campaign-pool{min-height:230px}.mainboard{padding:14px;margin:16px 0}.campaign[data-phase="deck"] .match-preview{margin:12px 0}.campaign[data-phase="deck"]>.location-offers{display:none}
@media(min-width:900px){
 .arena .board-center{padding-top:64px;box-sizing:border-box}
 .arena .pressure{width:calc(168 * var(--board-u));height:calc(231 * var(--board-u));margin-top:15px}
 .arena .dominance-display{bottom:calc(100% + 24px)}
 .opponent-capstone{width:calc(290 * var(--board-u));display:grid;grid-template-rows:auto auto auto auto;gap:4px;background:#0c1b20e8}
 .opponent-capstone>img{height:auto;width:100%;aspect-ratio:8/5;object-fit:contain;margin:0}
 .opponent-capstone h3,.opponent-capstone p{margin:0}
 .hand-dock .passive-panel:not(.no-capstone){display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:4px;padding:8px;overflow:hidden}
 .hand-dock .passive-panel .passive-art{height:100%;min-height:0;width:100%;object-fit:contain;margin:0}
 .hand-dock .passive-panel h3,.hand-dock .passive-panel p{margin:0}
}

.faction-path[data-faction="Aristocrats"]{background-position:center top}

.deck-roles{display:block}.deck-role-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.deck-role-tab{padding:14px 8px!important;font-size:12px;min-height:45px}.deck-role-tab b{margin-left:8px}.deck-role-tab[aria-expanded="true"]{background:#b99a5b22;border-color:var(--gold)}.deck-role.campaign-pool{display:flex;min-height:265px;padding:16px 0;margin:0}.deck-role[hidden]{display:none!important}

/* All Deck roles remain visible. Overlap within each role; hover lifts the complete tile. */
.deck-overview{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:20px;overflow:visible}
.deck-category{min-width:0}.deck-category h3{font:11px var(--sans);letter-spacing:.07em;color:var(--gold);text-align:center;padding:10px 0;border-bottom:1px solid #b99a5b66;white-space:nowrap}.deck-category h3 b{margin-left:5px}
.deck-fan{--fan-card:140px;display:flex;min-height:255px;align-items:flex-start;justify-content:center;padding-top:16px;position:relative}
.deck-fan>.in-deck{flex:0 0 max(0px,calc((100% - var(--fan-card))/var(--fan-gaps)));width:var(--fan-card);position:relative;min-width:0;display:flex;flex-direction:column;gap:8px}
.deck-fan>.in-deck:last-child{flex-basis:var(--fan-card)}.deck-fan .card{width:var(--fan-card);min-width:var(--fan-card)}.deck-fan>.in-deck>button:not(.card){width:var(--fan-card);min-height:34px;padding:5px;font-size:10px;white-space:nowrap}
.deck-fan>.in-deck:hover,.deck-fan>.in-deck:focus-within{z-index:5}.mainboard:has(.deck-overview){overflow:visible}
@media(max-width:760px){.deck-overview{gap:12px;grid-template-columns:repeat(4,minmax(140px,1fr));overflow-x:auto;padding-bottom:10px}}
@media(min-width:900px){.arena .lane .cards{padding-bottom:18px}.arena .lane .order-number{top:100%;bottom:auto;margin-top:2px;line-height:10px}}
.welcome-path[data-action="prebuilt"]::before{background-position:center,calc(50% + 42px) center;background-repeat:no-repeat}

.deck-fan>.in-deck>button:not(.card){opacity:0;background:#17262b;pointer-events:none}.deck-fan>.in-deck:hover>button:not(.card),.deck-fan>.in-deck:focus-within>button:not(.card){opacity:1;pointer-events:auto}

@media(min-width:900px){.arena>.lane:not(.opponent){padding-bottom:18px}}
