/* Opt-in actual-game study: A readability + C angular matte ink.
   Load after portrait, loot and targeting skins. Every rule is gated by
   body[data-style="hybrid"]. Root supplies admitted --hybrid-scene artwork.
   Hybrid-only composition below puts the hand under the stage at laptop size.
   Root owns paging, state, values, semantic identities and motion. */
body[data-style="hybrid"] {
 --hybrid-ink:#1d2928;
 --hybrid-paper:#e7d8b4;
 --hybrid-paper-light:#f0e2c1;
 --hybrid-line:#847956;
 --hybrid-panel:#172529;
 --hybrid-cream:#e7d5ad;
 --hybrid-gold:#dfb45f;
 --hybrid-mana:#9acbd1;
 color:var(--hybrid-cream);
 background:#0e191d;
}
body[data-style="hybrid"] .world-art {background:none;opacity:0}
body[data-style="hybrid"] .world-shade {background:#0e191d}
body[data-style="hybrid"] .top {
 background:#0e191df5;
 border-bottom:1px solid #777255;
 box-shadow:none;
 text-shadow:none;
}
body[data-style="hybrid"] .brand {color:var(--hybrid-cream);text-shadow:none;font-family:Georgia,serif}
body[data-style="hybrid"] .brand strong {color:var(--hybrid-cream)}
body[data-style="hybrid"] .brand small {color:#b8c1b4}
body[data-style="hybrid"] .brand-mark {filter:none}
body[data-style="hybrid"] :is(.top-actions button,.current-game-link,.turn-actions button,#partyPaging button,#enemyPaging button,.hand-paging button,#inspectHandButton,#moveSelected) {
 color:#ead9b5;
 background:#23312e;
 border-color:#827955;
 border-radius:3px;
 box-shadow:none;
 text-shadow:none;
}
body[data-style="hybrid"] .turn-actions .primary {background:#394b3b;border-color:#9a9b6c;color:#f2e1bc}
body[data-style="hybrid"] :is(.section-line,.hand-heading,.controls) {text-shadow:none}

/* The real board receives scenery. No counters, actors or interaction targets
   are baked into this image; root owns any admitted layered illustration. */
body[data-style="hybrid"][data-view="expedition"][data-phase="battle"] #game {
 isolation:isolate;
 background-color:#132229;
 background-image:var(--hybrid-scene,none);
 background-position:center;
 background-size:cover;
 background-repeat:no-repeat;
 border:1px solid #5d6453;
 border-radius:3px;
}
body[data-style="hybrid"] #game > .hybrid-scene-layer {
 position:absolute;
 inset:0;
 z-index:-1;
 width:100%;
 height:100%;
 object-fit:cover;
 object-position:center;
 pointer-events:none;
}
body[data-style="hybrid"] #game > :is(.formation,.encounter) > .section-line {
 color:#f1e4c6;
 background:#132229eb;
 border-radius:2px;
}
body[data-style="hybrid"] #game > .controls {
 background:#122023ed;
 border-top:1px solid #687054;
 border-radius:0;
}
body[data-style="hybrid"] #game #fieldActions {background:#12202359;border-radius:0}
body[data-style="hybrid"] #game #enemyEventNotice {
 color:#e2d6b8;
 background:#18282ceb;
 border-color:#79795a;
 border-radius:3px;
 box-shadow:none;
}
body[data-style="hybrid"] #game #handSection {background:#0e191ded;border-radius:0}
body[data-style="hybrid"] #game .hand-heading {color:#c4c7b3}

/* Matte unit facts retain the qualified portrait geometry and full HTML copy. */
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy {
 background:#17262bea;
 border-radius:3px;
 box-shadow:0 3px 0 #0a1417;
}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero::before {border:0}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero:has(.xp-ribbon) > .hero-body,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .enemy-copy {
 background:#17262bf5;
 color:#e8ddc0;
 text-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > h3,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .enemy-copy > h3 {
 color:#ecdbb2;
 text-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .hp,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .hp {color:#eddbb6;text-shadow:none}
body[data-style="hybrid"] #game :is(.hero,.enemy) .health-track {background:#302e25;border-color:#8c7152;border-radius:0}
body[data-style="hybrid"] #game :is(.hero,.enemy) .health-track > i {background:#b25d49}
body[data-style="hybrid"] #game :is(.hero,.enemy) .intent {color:#ead4a9;text-shadow:none}
body[data-style="hybrid"] #game .enemy-signature {color:#c9d0bd}
body[data-style="hybrid"] #game :is(.rank-badge,.enemy-rank,.short-position,.guard) {background:#182a2c;border-radius:2px;box-shadow:none;text-shadow:none}
body[data-style="hybrid"] #game :is(.target-forecast,.response-mark) {background:#172f2ef5;border-radius:2px;box-shadow:none}
body[data-style="hybrid"] #game :is(.direct-guard,.direct-attack) {background:#304c35;border-radius:3px;box-shadow:none}

/* Cream card faces preserve role/class attribution and actual cost/ownership.
   Only materials change; title, exact effect and loot footer keep their rows. */
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability {
 color:var(--hybrid-ink);
 background:var(--hybrid-paper);
 border-radius:3px;
 border-color:var(--role);
 box-shadow:0 3px 0 #0a1417;
 text-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability::before {border:0}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .ability-art {
 background:var(--hybrid-paper-light);
 border:0;
 border-bottom:1px solid #af9e79;
 border-radius:1px;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > strong {
 color:#202c26;
 background:var(--hybrid-paper);
 border-color:#b4a37e;
 text-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .effect-copy {
 color:#263129;
 background:var(--hybrid-paper);
 border-radius:0;
 text-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .cost {
 color:#e2eff0;
 background:#304c51!important;
 border-color:#1e3c43;
 border-radius:3px;
 text-shadow:none;
 box-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .cost.free-cost {
 color:#edf0d9;
 background:#465b43!important;
 border-color:#2c422d;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .owner > .class-sigil {filter:none}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand .effect-art-main {filter:none}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand .effect-art {color:#405843}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability.loot-card {border-color:#8a7c58;background:var(--hybrid-paper)}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability.loot-card > .loot-tags {background:#18282c;border-color:#aa9b74}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability.loot-card > .owner.loot-owner {background:#253b38;color:#eddfbb;border-radius:2px}
body[data-style="hybrid"] :is(.loot-rarity,.loot-lifetime) {padding:0 2px;background:#18282c;border-radius:2px}
body[data-style="hybrid"] :is(.loot-effect-art,.loot-resource-art > img) {filter:none}

/* Keep tactile state marks separate from a class frame, with static, matte
   outlines. Motion is deliberately left to the separately owned module. */
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability:is(:hover,:focus-visible) {box-shadow:0 4px 0 #0a1417}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability.action-available {outline-color:#b5d18c}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability.selected {outline-color:#f6cf79}
body[data-style="hybrid"] #game :is(.hero,.enemy).legal-target {outline-color:#c5e6a0}

/* Gold objective and actual berry yields retain their clarity layer, without
   a sheen or hatched invitation texture. No values or labels are replaced. */
body[data-style="hybrid"] .quest-gold-area {background:#3d3521;border-color:#d7b064;border-radius:3px;box-shadow:none}
body[data-style="hybrid"][data-progression="xp"] #questTarget.quest-objective {background:#58492a;border-color:#be9b50;border-radius:2px;box-shadow:none;color:#ffedbf}
body[data-style="hybrid"][data-progression="xp"] #questTarget.action-available {background:#71592c;border-color:#ffe09a;box-shadow:none}
body[data-style="hybrid"] .primary-goal {color:#f7df9f}
body[data-style="hybrid"] .quest-progress-track {background:#241e13;border-color:#9c7c3c;border-radius:1px}
body[data-style="hybrid"] .quest-progress-track > i {background:#dfb45f!important}
body[data-style="hybrid"] #questTarget.action-available .quest-progress-track::before {background:#b99b5e}
body[data-style="hybrid"] .berry-pips > i {background:#b84960;border-color:#efad9e;box-shadow:none}
body[data-style="hybrid"] .berry-pips > .yield-berry {border-color:#ffe0a4;box-shadow:none}
body[data-style="hybrid"] .bush-food-total {background:#25372b;border-radius:2px;border-color:#b5a170;color:#f4e4bd;box-shadow:none}
body[data-style="hybrid"] .forage-bush .berry-cluster.action-available {background:#b89a3b35!important;box-shadow:none!important}

/* Resource meanings and current Threat ranks remain engine-owned. */
body[data-style="hybrid"] #playerHud {background:#0e191d}
body[data-style="hybrid"] #resources {color:#e6d7b8;background:#17262a;border:1px solid #797557;border-radius:3px;box-shadow:none}
body[data-style="hybrid"] #resources .coin-purse {background:#17262a;border-radius:2px;border-color:#658687;box-shadow:none}
body[data-style="hybrid"] #resources :is(.coin-count,.coin-caption) {color:#b5d5d7;text-shadow:none}
body[data-style="hybrid"] #resources .hud-capacity-track {background:#1c3034;border-radius:0;border-color:#698d8e}
body[data-style="hybrid"] #resources .hud-capacity-track > i {background:#7eaeb3}
body[data-style="hybrid"] #resources #threatInfo {background:#232a25;border-color:#8c7954;border-radius:3px;box-shadow:none}
body[data-style="hybrid"] .threat-column {background:#131d1e;border-color:#7f7756;border-radius:1px}
body[data-style="hybrid"] .threat-column > .threat-fill {background:#c19850;border-radius:0}

/* Readable cream inspection, earned rank options and reward cards extend the
   proof through the real choice journey. Their existing sizing is untouched. */
body[data-style="hybrid"] :is(.inspection-card,.pv-option,.loot-reward-card) {background:var(--hybrid-paper);color:var(--hybrid-ink);border-radius:3px;box-shadow:0 3px 0 #0a1417;text-shadow:none}
body[data-style="hybrid"] :is(.inspection-art,.pv-effect-art,.loot-reward-art) {background:var(--hybrid-paper-light);border-radius:1px}
body[data-style="hybrid"] .inspection-copy {background:var(--hybrid-paper);color:var(--hybrid-ink);border-color:#b4a37e}
body[data-style="hybrid"] :is(.inspection-copy h2,.inspection-rules,.inspection-rule-note,.inspection-subtitle,.pv-option h3,.pv-option p,.pv-option .pv-rules,.loot-reward-card .loot-title,.loot-reward-card .loot-effect,.loot-resource-note) {color:var(--hybrid-ink);text-shadow:none}
body[data-style="hybrid"] :is(.inspection-copy .effect-copy,.pv-option .pv-inspect,.pv-option .pv-inspect summary) {color:var(--hybrid-ink);background:var(--hybrid-paper);text-shadow:none}
body[data-style="hybrid"] .pv-option .pv-effect-art {color:#405843}
body[data-style="hybrid"] .pv-option .pv-choose {background:#344d3b;border-color:#58704d;color:#f1e5c8;border-radius:2px;box-shadow:none}
body[data-style="hybrid"] .loot-resource-amount {color:#645023}
body[data-style="hybrid"] .loot-reward-card > .loot-owner {color:#263b30}
body[data-style="hybrid"] .loot-reward-card > .loot-tags {background:#18282c;border-color:#aa9b74}
body[data-style="hybrid"] .loot-reward-card > .loot-cost {background:#304c51;border-color:#1e3c43;color:#e2eff0;border-radius:3px}
body[data-style="hybrid"] .loot-reward-card > .loot-cost.free-cost {background:#465b43;border-color:#2c422d;color:#edf0d9}

/* Section headings remain readable above the responsive stage. */
@media(max-width:700px), (max-height:500px) {
 body[data-style="hybrid"] #game > :is(.formation,.encounter) > .section-line {background:#132229f5}
 body[data-style="hybrid"] #game #enemyEventNotice {background:#18282cf5}
}

/* Finite bottom-hand composition. Four body attributes intentionally outrank
   the historical battle/casting rules. Native root paging: 3 hand / 2 heroes /
   1 foe; tall >=1100x680: 4 hand. Phone and short: 1 hand / 1 foe. */
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game {
 --hybrid-hand-height:174px;
 --hybrid-field-row:46px;
 --hybrid-control-row:32px;
 display:grid;
 grid-template-columns:minmax(0,1fr) minmax(0,1fr);
 grid-template-rows:minmax(120px,1fr) var(--hybrid-field-row) var(--hybrid-hand-height) var(--hybrid-control-row);
 gap:4px 14px;
 background-image:none;
}
/* Empty decorative background only. No values, actor silhouettes or labels. */
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game::before {
 content:"";
 position:absolute;
 inset:0 0 auto;
 height:calc(100% - var(--hybrid-hand-height) - var(--hybrid-control-row) - 8px);
 z-index:-1;
 background:var(--hybrid-scene,none) center 65%/cover no-repeat;
 pointer-events:none;
}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > .formation {grid-column:1;grid-row:1;min-width:0;min-height:0}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > .encounter {grid-column:2;grid-row:1;min-width:0;min-height:0}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game #fieldActions {grid-column:1/-1;grid-row:2;min-height:0;padding:0 10px}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > #handSection {grid-column:1/-1;grid-row:3;min-width:0;min-height:0;background:#0e191d}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > .controls {grid-column:1/-1;grid-row:4;min-height:0;gap:5px;padding:0 4px}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > #handSection > .hand-heading {display:flex;height:22px;min-height:22px;gap:6px;justify-content:center}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #handSection #hand {gap:12px;padding:3px 7px 6px;align-items:stretch;justify-content:center;min-height:0}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #handSection #hand > .ability {flex:1 1 0;width:auto;max-width:292px;height:100%;min-width:0;min-height:0}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] .forage-bush {height:48px;max-height:100%;width:172px;flex-basis:172px}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] .forage-bush .forage-nodes {inset:0 2px 15px}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] .forage-bush .berry-cluster {height:30px;min-height:30px}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] .bush-food-total {font-size:12px;line-height:15px}

/* Actual root-supplied class attribution/rules. Loot retains its own four-row
   Party/cost/effect/lifetime/rarity component. Never hide fallback copy unless
   the replacement descriptor is actually present in this card. */
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability:not(.loot-card):has(> .hybrid-card-detail) {
 grid-template-rows:auto auto minmax(26px,1fr) auto;
 gap:2px;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability:not(.loot-card):has(> .hybrid-card-detail) > strong {grid-row:1;min-height:25px;padding:2px 34px!important;align-content:center;border-top:0;line-height:18px!important}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability:not(.loot-card):has(> .hybrid-card-detail) > .ability-art {grid-row:3;padding:0!important;min-height:0}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability:has(> .hybrid-card-detail) > .effect-copy {display:none}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .hybrid-owner-line {
 display:block;grid-row:2;grid-column:1;margin:0;padding:1px 4px;border-left:3px solid var(--role);
 background:#344a39;color:#f6e7c8;font:12px/15px system-ui;text-align:left;white-space:normal;overflow-wrap:anywhere;
}
body[data-style="hybrid"][data-progression="xp"] #handSection #hand > .ability > .hybrid-card-detail {
 display:block;grid-row:4;grid-column:1;min-width:0;margin:0;padding:2px 4px;
 background:var(--hybrid-paper);color:#263129;font:14px/16px system-ui;text-align:left;white-space:normal;overflow-wrap:normal;
}

/* Actual unit art beside compact facts, with whole-width earned XP below.
   This reuses each existing unit once; the forest contains no duplicate actors. */
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy {
 grid-template-columns:minmax(0,44%) minmax(0,1fr);
 grid-template-rows:minmax(0,1fr);
 gap:0 4px;
 width:100%!important;max-width:none!important;height:100%!important;max-height:100%!important;
 aspect-ratio:auto;padding:18px 4px 25px;
}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero > img,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > img {grid-column:1;grid-row:1;object-position:center bottom!important}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero:has(.xp-ribbon) > .hero-body {
 grid-column:2;grid-row:1;grid-template-columns:minmax(0,1fr) auto!important;grid-template-rows:auto auto auto!important;
 align-content:center;gap:1px 3px;padding:0!important;min-height:0;
}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > h3 {
 display:block!important;-webkit-line-clamp:unset;-webkit-box-orient:initial;overflow:visible;
 grid-row:1!important;grid-column:1/-1!important;font-size:16px!important;line-height:18px!important;min-height:0!important;
}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-class-name {grid-row:2;grid-column:1;font:12px/15px system-ui;text-align:left;overflow-wrap:anywhere}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .hp {grid-row:2!important;grid-column:2!important;font-size:16px!important;line-height:18px!important;min-height:18px}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .health-track {grid-row:3!important;grid-column:1!important}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .stats {grid-row:3;grid-column:2;font:12px/15px system-ui;gap:1px 4px;justify-content:center}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero:has(.xp-ribbon) > .hero-body > .xp-ribbon {position:absolute!important;inset:auto 3px 2px!important;width:auto!important;grid-area:auto!important;min-height:22px;height:22px!important}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .guard {inset:52px auto auto 4px!important}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .guard + .guard {top:69px!important}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero > .direct-guard {inset:21px auto auto 4px}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy {padding-bottom:3px;flex:1 1 0}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .enemy-copy {
 display:grid!important;grid-column:2;grid-row:1;grid-template-columns:auto minmax(0,1fr);
 grid-template-rows:auto auto 7px auto;align-content:center;align-items:center;justify-content:stretch!important;gap:1px 4px;min-height:0;
}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .enemy-copy > h3 {grid-column:1/-1;grid-row:1;font-size:16px!important;line-height:18px!important;min-height:18px}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .hp {grid-column:1;grid-row:2;font-size:16px!important;line-height:18px!important;min-height:18px;flex:none;white-space:nowrap}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .enemy-signature {grid-column:2;grid-row:2;min-width:0;min-height:15px;line-height:15px;overflow-wrap:normal}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .health-track {grid-column:1/-1;grid-row:3}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .intent {grid-column:1/-1;grid-row:4;font-size:14px!important;line-height:16px!important;min-height:16px!important;flex:none}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .last-attack {left:4px;right:auto;max-width:calc(44% - 8px);width:max-content;white-space:normal;text-align:left;overflow-wrap:normal}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemyEventNotice {min-height:20px;padding:1px 3px;font:12px/15px system-ui}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter .section-line {height:20px;min-height:20px}

/* Enemy inspection statistics previously retained pale text on cream. */
body[data-style="hybrid"] .inspection-copy :is(.inspection-stats,.inspection-stats strong,.inspection-stats b,.inspection-stats span) {color:var(--hybrid-ink);text-shadow:none}

/* Casting uses the real field strip for its forecast, preserving card paging. */
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"][data-casting="true"] #game {--hybrid-field-row:62px}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"][data-casting="true"] #game > #handSection > #mainActionDock {
 position:absolute;inset:auto 0 calc(var(--hybrid-hand-height) + var(--hybrid-control-row) + 8px);
 height:var(--hybrid-field-row);max-height:none;min-height:0;margin:0;padding:3px 7px;background:#17282bf5;
}
body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game .turn-actions button {min-height:29px;padding:3px 7px;font-size:14px}

@media(min-width:701px) and (min-height:501px) {
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #playerHud {height:52px;min-height:52px;padding:2px 7px 4px}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #resources {height:46px;min-height:0;padding:2px 9px}
}
@media(min-width:1100px) and (min-height:680px) {
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game {--hybrid-hand-height:235px;--hybrid-field-row:54px}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] .forage-bush {height:54px}
}
@media(max-width:700px) and (min-height:501px) {
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game {--hybrid-hand-height:205px;--hybrid-field-row:50px;--hybrid-control-row:36px;gap:4px 8px;grid-template-rows:minmax(120px,1fr) var(--hybrid-field-row) var(--hybrid-hand-height) var(--hybrid-control-row)}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #handSection #hand > .ability {flex:1 1 100%;max-width:100%;width:100%;}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero,
 body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy {grid-template-columns:minmax(0,40%) minmax(0,1fr);gap:0 3px}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > h3,
 body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .enemy-copy > h3 {font-size:14px!important;line-height:16px!important}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero:has(.xp-ribbon) > .hero-body {grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto auto auto 7px auto!important;align-content:center;gap:1px}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-class-name {grid-column:1;grid-row:2;white-space:normal;overflow-wrap:normal;text-align:center}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .hp {grid-column:1!important;grid-row:3!important}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .health-track {grid-column:1!important;grid-row:4!important}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero .hero-body > .stats {grid-column:1;grid-row:5;justify-content:center}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"][data-casting="true"] #game {--hybrid-field-row:76px}
}
@media(max-height:500px) {
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game {--hybrid-hand-height:0px;--hybrid-field-row:46px;--hybrid-control-row:33px;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) 166px;grid-template-rows:minmax(95px,1fr) var(--hybrid-field-row) var(--hybrid-control-row);gap:4px 7px}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game::before {height:calc(100% - var(--hybrid-control-row) - 4px);right:173px}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > #handSection {grid-column:3;grid-row:1/3}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game #fieldActions {grid-column:1/3;grid-row:2}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #game > .controls {grid-row:3}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"] #handSection #hand > .ability {width:100%;max-width:none;flex:1 1 100%}
 body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero {grid-template-columns:minmax(0,34%) minmax(0,1fr)}
 body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy {grid-template-columns:minmax(0,42%) minmax(0,1fr)}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"][data-casting="true"] #game {--hybrid-field-row:70px}
 body[data-style="hybrid"][data-progression="xp"][data-view="expedition"][data-phase="battle"][data-casting="true"] #game > #handSection > #mainActionDock {right:173px;bottom:37px}
}

/* Latest human unit-card direction: names lead, role shades belong to heroes,
   hostile units use dark red. Readiness remains in the actual accessible label. */
body[data-style="hybrid"] #game .hero[data-role="Lead"]{--hybrid-unit:#20383f}
body[data-style="hybrid"] #game .hero[data-role="DPS"]{--hybrid-unit:#442b25}
body[data-style="hybrid"] #game .hero[data-role="Tank"]{--hybrid-unit:#373821}
body[data-style="hybrid"] #game .hero[data-role="Support"]{--hybrid-unit:#223c2d}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero,
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero:has(.xp-ribbon) > .hero-body{background:var(--hybrid-unit,#17262b)}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .enemy-copy{background:#442323}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy{padding-top:27px}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero > :is(.short-position,.activation-badge,.role-seal),
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .enemy-rank{display:none!important}
body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero > .hybrid-unit-name,
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .hybrid-unit-name{
 position:absolute!important;inset:3px 5px auto!important;width:auto!important;height:21px!important;min-height:21px!important;margin:0!important;padding:0!important;grid-area:auto!important;align-self:auto!important;justify-self:auto!important;
 text-align:center!important;font:700 16px/20px Georgia,serif!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ecdbb2;text-shadow:none;
}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy .enemy-copy > .role{top:auto;left:4px;right:auto;bottom:3px;background:#442323}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .last-attack{top:27px;font-size:12px;line-height:14px;max-width:calc(44% - 8px)}
body[data-style="hybrid"][data-progression="xp"] #game > .encounter #enemies > .enemy > .last-attack:not(.fx-active){background:#442323d9}

body[data-style="hybrid"] #game .enemy .hp > .unit-threat-rank{display:inline-block;font:12px/16px system-ui;border:1px solid #a78872;border-radius:2px;padding:0 3px;margin-left:4px;color:#e9d3b4}

body[data-style="hybrid"] .forage-bush > .bush-base{object-fit:contain;object-position:center bottom;filter:none}

body[data-style="hybrid"][data-progression="xp"] #game > .formation :is(#front,#rear) > .hero > .response-mark{top:27px;bottom:auto;left:4px;right:auto;width:max-content;max-width:calc(44% - 8px);padding:0 3px;font:12px/14px system-ui}
