@font-face{font-family:"Noto Sans";src:url("../assets/fonts/noto-sans/NotoSans-Variable.woff2") format("woff2");font-style:normal;font-weight:100 900;font-stretch:62.5% 100%;font-display:swap}
@font-face{font-family:"Noto Sans";src:url("../assets/fonts/noto-sans/NotoSans-Italic-Variable.woff2") format("woff2");font-style:italic;font-weight:100 900;font-stretch:62.5% 100%;font-display:swap}

/* Grandis Legacy PvP v2.6.11 — system UI typography fallback (no bundled font files). */
html,body,body *{font-family:"Noto Sans"!important}
:root{--bg:#05080d;--panel:#0b121b;--panel2:#101a26;--panel3:#142133;--line:#2d4055;--line2:#3d5872;--gold:#f4d35e;--gold2:#9d7924;--text:#f4f8fd;--muted:#9badc0;--green:#39d486;--red:#d95a5a;--yellow:#f4d35e;--blue:#71b7ff;}
*{box-sizing:border-box}body{margin:0;min-width:1120px;background:radial-gradient(circle at top,#152036 0%,#080b10 60%,#030508 100%);color:var(--text);font-family:"Noto Sans"}button{font:inherit;color:inherit}button:disabled{opacity:.78;cursor:not-allowed}.top-header{height:62px;display:flex;justify-content:space-between;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#0c1724,#071019)}.top-header h1{margin:0;color:var(--gold);font-size:20px}.top-header p{margin:2px 0 0;color:var(--muted);font-size:12px}.header-actions{display:flex;gap:8px}.header-actions button,.control-row button,.choice-foot button{background:#132234;border:1px solid var(--line2);border-radius:10px;padding:7px 12px;cursor:pointer}.ai-hand-panel{display:flex;align-items:center;gap:16px;padding:8px 18px;border-bottom:1px solid #18293a;background:#07111a}.ai-hand-panel h2,.player-hand-panel h2,.opponent-played-panel h2{font-size:14px;margin:0;color:var(--gold)}.ai-hand-panel small,.player-hand-panel small{display:block;color:var(--muted);font-size:11px}.hidden-hand{display:flex;gap:6px;min-width:0}.hidden-hand img{width:42px;height:60px;object-fit:cover;border-radius:6px;border:1px solid #334b63;background:#111}.game-shell{display:grid;grid-template-columns:132px minmax(0,1fr) 132px;gap:10px;padding:10px 14px;border-bottom:1px solid #18293a}.side-panel{display:flex;flex-direction:column;gap:8px;min-width:0}.side-panel h3{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#d9e9f9;margin:0 0 2px;text-align:center}.zone-card{min-height:66px;width:100%;border:1px solid var(--line);background:linear-gradient(180deg,#101a26,#0b121b);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7px;color:#eaf2ff}.zone-card span{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#cddbeb}.zone-card b{font-size:22px;color:var(--gold);line-height:1.1}.zone-card.clickable{cursor:pointer;box-shadow:inset 0 0 0 1px rgba(244,211,94,.14)}.zone-card.locked{cursor:default}.racial-token{min-height:54px}.center-board{min-width:0;display:flex;flex-direction:column;gap:8px}.field{border:1px solid #243a50;background:rgba(8,15,23,.68);border-radius:16px;padding:8px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)}.field-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;color:var(--gold);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.field-header small{color:var(--muted);text-transform:none;letter-spacing:0;font-weight:400}.hero-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hero-panel{min-width:0;border:1px solid #31506a;background:linear-gradient(180deg,#122033,#0a121c);border-radius:14px;padding:7px;position:relative}.lane-label{position:absolute;top:6px;right:8px;font-size:10px;letter-spacing:.08em;color:var(--gold);border:1px solid rgba(244,211,94,.35);border-radius:999px;padding:2px 6px;background:#0c151f}.hero-main{width:100%;display:flex;gap:7px;align-items:center;text-align:left;padding:0;background:transparent;border:0;cursor:pointer;min-width:0}.hero-main img{width:50px;height:66px;object-fit:cover;border-radius:7px;border:1px solid #4a647d;flex:0 0 auto}.hero-text{min-width:0;padding-right:38px}.hero-text strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#fff}.hero-text small{display:block;color:#bdd0e3;font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-row{display:flex;gap:5px;flex-wrap:wrap;margin:7px 0 6px}.state-badge{font-size:10px;color:#e4f0fd;border:1px solid #39546f;border-radius:999px;padding:3px 6px;background:#0d1722;cursor:pointer}.attachment-row{display:grid;grid-template-columns:1fr 1fr;gap:5px}.attachment-slot{height:34px;border:1px dashed #74611f;border-radius:8px;color:#d8c57a;font-size:10px;display:flex;align-items:center;justify-content:center;text-align:center;background:rgba(41,35,9,.28)}.exp-stack{margin-top:5px;height:24px;border:1px solid #264761;border-radius:8px;background:#0b1520;display:flex;justify-content:space-between;align-items:center;padding:0 8px;font-size:10px;color:#cddbeb}.exp-stack b{color:var(--gold)}.phase-tracker{align-self:center;display:flex;gap:5px;justify-content:center;align-items:center;padding:5px;border:1px solid #6f5a19;border-radius:999px;background:linear-gradient(180deg,#1b1605,#0e0b03);box-shadow:0 0 14px rgba(244,211,94,.08)}.phase-tracker span{font-size:12px;border-radius:999px;padding:5px 11px;color:#ad9958}.phase-tracker .current{background:var(--gold);color:#171000;font-weight:800}.control-row{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 14px;border-bottom:1px solid #18293a;background:#071018}.control-row span{font-size:12px;color:var(--muted)}.bottom-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,28%);gap:10px;padding:10px 14px}.player-hand-panel,.opponent-played-panel{min-width:0;border:1px solid var(--line);background:rgba(9,17,26,.94);border-radius:16px;padding:9px}.player-hand-panel header,.opponent-played-panel header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.hand-scroll{width:100%;min-width:0;display:flex;gap:7px;overflow-x:auto;padding-bottom:4px}.hand-card{width:84px;flex:0 0 84px;border:1px solid #36536e;background:#0d1722;border-radius:10px;padding:5px;min-width:0}.hand-art{display:block;width:100%;padding:0;background:transparent;border:0;cursor:pointer}.hand-art img{width:100%;height:106px;object-fit:cover;border-radius:6px;border:1px solid #30485f;display:block}.hand-name{font-size:11px;font-weight:800;color:#fff;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hand-meta{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hand-actions{min-height:24px;margin-top:5px}.mini-action{width:100%;border:1px solid #426b4e;background:#11341f;color:#bdf7ce;border-radius:7px;padding:3px;font-size:10px}.opponent-played-panel{overflow:hidden}.opponent-played-panel header button{border:1px solid #39546f;background:#101d2b;border-radius:8px;padding:5px 7px;font-size:11px}.played-tile{width:100%;display:grid;grid-template-columns:38px 46px minmax(0,1fr);gap:7px;align-items:center;border:1px solid #39546f;background:#0d1722;border-radius:12px;padding:7px;text-align:left;cursor:pointer;min-width:0}.played-tile img{width:46px;height:62px;object-fit:cover;border-radius:6px;border:1px solid #324b63}.played-label{font-size:11px;font-weight:900;color:#111;background:var(--gold);border-radius:999px;text-align:center;padding:4px}.played-tile strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.played-tile small{display:block;color:var(--muted);font-size:10px;line-height:1.25}.build-foot{display:flex;gap:8px;flex-wrap:wrap;padding:8px 14px;color:#b7c9dc;font-size:11px}.build-foot span{border:1px solid #253a50;border-radius:999px;background:#08111a;padding:4px 8px}.card-tile{width:82px;flex:0 0 82px;border:1px solid #36536e;background:#0d1722;border-radius:10px;padding:5px;text-align:left;cursor:pointer}.card-tile img{width:100%;height:102px;object-fit:cover;border-radius:6px;display:block}.card-tile-name{display:block;color:#fff;font-weight:800;font-size:11px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-tile-meta{display:block;color:var(--muted);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-overlay,.overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:900;display:none;align-items:center;justify-content:center;padding:18px}.modal-overlay.open,.overlay.open{display:flex}.overlay{z-index:1100}.choice-panel,.info-panel,.preview-panel{border:1px solid #6a5a19;border-radius:16px;background:#101923;box-shadow:0 18px 70px rgba(0,0,0,.62);overflow:hidden}.choice-panel{width:min(760px,92vw);max-height:84vh;display:flex;flex-direction:column}.choice-head,.choice-foot,.info-head,.preview-head{background:#0b131c;border-bottom:1px solid #263d55;display:flex;justify-content:space-between;align-items:center;padding:10px 14px}.choice-head h2,.info-head h2,.preview-head h2{margin:0;color:var(--gold);font-size:16px}.choice-head button,.info-head button,.preview-head button{background:#1c2a3a;border:1px solid #45627e;border-radius:8px;padding:6px 10px;cursor:pointer}.choice-body{overflow:auto;padding:12px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px}.choice-foot{border-top:1px solid #263d55;border-bottom:0;justify-content:flex-end}.empty-state{border:1px dashed #48617a;border-radius:12px;padding:18px;text-align:center;color:var(--muted)}.info-panel{width:min(520px,90vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.info-head{flex:0 0 auto}.info-body{padding:16px;color:#d9e6f5;overflow:auto;min-height:0;overscroll-behavior:contain}.preview-panel{width:min(860px,92vw);max-height:90vh;overflow:auto}.preview-head{position:sticky;top:0;z-index:2}.preview-body{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;padding:16px}.preview-card-art img{width:100%;border-radius:12px;border:1px solid #334d66}.preview-text h2{color:var(--gold);margin:0 0 5px}.preview-meta{color:var(--muted)}.preview-text section{border:1px solid #243a50;border-radius:12px;padding:10px;margin:0 0 10px;background:#0b1420}.preview-text h3{margin:0 0 6px;color:#cfe3f7;font-size:14px}.preview-text p{margin:0;color:#d8e5f2;line-height:1.42;white-space:pre-wrap}@media(max-width:980px){body{min-width:0}.game-shell{grid-template-columns:1fr}.side-panel{display:grid;grid-template-columns:repeat(4,1fr)}.bottom-row{grid-template-columns:1fr}.hero-grid{grid-template-columns:1fr}.preview-body{grid-template-columns:1fr}.ai-hand-panel{align-items:flex-start;flex-direction:column}.hidden-hand{overflow-x:auto;max-width:100%}}

/* Step 4/5 deck setup, starter validation, and core turn loop */
.deck-setup-open .choice-panel{width:min(1050px,94vw);max-height:88vh}.deck-setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.deck-side{border:1px solid #29445e;background:#0b1420;border-radius:14px;padding:12px;min-width:0}.deck-side header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.deck-side h3{margin:0;color:var(--gold);font-size:15px}.deck-pill{border-radius:999px;padding:3px 8px;font-size:11px;font-weight:900}.deck-pill.ok{background:#123d28;color:#b8ffd2;border:1px solid #2e8a56}.deck-pill.bad{background:#461a1a;color:#ffc1c1;border:1px solid #a84646}.deck-select-label{display:block;color:#bcd0e5;font-size:12px}.deck-select-label select{display:block;width:100%;margin-top:5px;background:#101d2b;color:#f4f8fd;border:1px solid #344f68;border-radius:8px;padding:7px}.deck-counts{font-size:12px;color:#9fb3c7;margin:7px 0 10px}.formation-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.formation-card{min-width:0;border:1px solid #263e55;background:#08111b;border-radius:10px;padding:6px}.formation-card span{display:block;color:var(--gold);font-size:10px;font-weight:900;text-align:center;margin-bottom:5px}.formation-card button{width:100%;border:0;background:transparent;padding:0;cursor:pointer;color:#fff}.formation-card img{width:100%;height:118px;object-fit:cover;border:1px solid #3b5873;border-radius:7px;display:block}.formation-card strong{display:block;margin-top:5px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legacy-package-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.legacy-package-list span{border:1px solid #344f68;background:#101d2b;border-radius:999px;font-size:10px;color:#cfe1f3;padding:3px 6px}.import-button{margin-top:10px;width:100%;border:1px solid #45627e;background:#132234;border-radius:9px;padding:7px;cursor:pointer}.deck-import-input{display:none}.setup-error{margin-top:10px;border:1px solid #a84646;background:#391a1a;color:#ffd0d0;border-radius:10px;padding:9px;font-size:12px}.deck-setup-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.deck-setup-actions button{border:1px solid #45627e;background:#132234;border-radius:9px;padding:8px 12px;cursor:pointer}.empty-state.compact{font-size:12px;padding:12px;min-height:78px;display:flex;align-items:center;justify-content:center}@media(max-width:980px){.deck-setup-grid{grid-template-columns:1fr}.formation-card img{height:96px}}

/* Step 5 core turn loop additions */
.status-line{display:inline-flex;align-items:center;justify-content:center;text-align:center;min-width:300px;color:#d7e6f5;font-size:12px}.control-row button:not(:disabled){box-shadow:0 0 0 1px rgba(244,211,94,.18)}.hand-scroll.hand-count-9 .hand-card,.hand-scroll.hand-count-10 .hand-card{width:76px;flex-basis:76px}.hand-scroll.hand-count-11 .hand-card,.hand-scroll.hand-count-12 .hand-card,.hand-scroll.hand-count-13 .hand-card{width:70px;flex-basis:70px}.hand-scroll.hand-count-9 .hand-art img,.hand-scroll.hand-count-10 .hand-art img{height:96px}.hand-scroll.hand-count-11 .hand-art img,.hand-scroll.hand-count-12 .hand-art img,.hand-scroll.hand-count-13 .hand-art img{height:88px}.attachment-slot img{width:24px;height:30px;object-fit:cover;border-radius:4px;margin-right:4px}.played-fallback{width:46px;height:62px;border:1px solid #324b63;border-radius:6px;background:#132234;color:#cfe3f7;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:900}.choice-instruction{margin:0 0 10px;color:#dce8f5}.discard-choice{border:1px solid #36536e;background:#0d1722;border-radius:10px;padding:5px;min-width:82px}.discard-choice.selected{border-color:var(--gold);box-shadow:0 0 0 2px rgba(244,211,94,.25)}.discard-preview{width:100%;background:transparent;border:0;padding:0;text-align:left;cursor:pointer;color:#fff}.discard-preview img{width:100%;height:102px;object-fit:cover;border-radius:6px;display:block}.discard-preview span{display:block;font-size:11px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}.discard-select{width:100%;margin-top:5px;border:1px solid #45627e;background:#132234;border-radius:7px;padding:4px;font-size:10px;cursor:pointer}.discard-choice.selected .discard-select{background:#4b3d0e;border-color:#d8bd46;color:#fff2a8}

/* Step 6 source/target interaction + UI v1.4 selection colors */
.hero-panel.selectable-legal{border-color:var(--green);box-shadow:0 0 0 2px rgba(57,212,134,.20),0 0 20px rgba(57,212,134,.12);cursor:pointer}
.hero-panel.selectable-illegal{border-color:var(--red);box-shadow:0 0 0 1px rgba(217,90,90,.22);filter:saturate(.8) brightness(.82)}
.hero-panel.selectable-selected{border-color:var(--yellow);box-shadow:0 0 0 2px rgba(244,211,94,.28),0 0 20px rgba(244,211,94,.12)}
.hero-panel.selectable-legal .hero-main{cursor:pointer}.hero-panel.selectable-illegal .hero-main{cursor:not-allowed}.hand-card.playable{border-color:#3e8f5c;box-shadow:inset 0 0 0 1px rgba(57,212,134,.14)}
.play-card-action{background:#103d28;border-color:#2c8f55;color:#caffd9;font-weight:800}.control-row #cancelActionButton{border-color:#bb9c30;background:#3b2d0a;color:#fff2a8;font-weight:800}.status-line{max-width:680px}

/* Step 7 core systems: Tribute, Rank Up, Attachment lifecycle */
.hand-card.tributeable{border-color:#9b7b28;box-shadow:inset 0 0 0 1px rgba(244,211,94,.16)}
.tribute-card-action{background:#3b2d0a;border-color:#bb9c30;color:#fff2a8;font-weight:800;margin-top:3px}
.hand-actions{display:flex;flex-direction:column;gap:3px}.hand-card.playable.tributeable{border-color:#d1b646;box-shadow:inset 0 0 0 1px rgba(57,212,134,.14),0 0 0 1px rgba(244,211,94,.20)}
.attachment-slot.filled{border-style:solid;border-color:#d1b646;background:rgba(91,70,13,.38);color:#fff2a8;justify-content:flex-start;padding:3px;overflow:hidden}.attachment-slot.filled span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.exp-stack b{font-size:10px}.hero-panel.tribute-candidate .hero-main{cursor:pointer}


/* Step 8 response window + Opponent Played UI v1.4 recheck */
.response-overlay{z-index:980}.response-panel{width:min(940px,94vw);max-height:86vh;display:flex;flex-direction:column;border:1px solid #6a5a19;border-radius:16px;background:#101923;box-shadow:0 18px 70px rgba(0,0,0,.66);overflow:hidden}.response-head{display:flex;justify-content:space-between;align-items:center;background:#0b131c;border-bottom:1px solid #263d55;padding:10px 14px}.response-head h2{margin:0;color:var(--gold);font-size:16px}.response-head button{background:#1c2a3a;border:1px solid #45627e;border-radius:8px;padding:6px 10px;cursor:pointer}.response-body{padding:12px;overflow:auto}.response-context-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:10px}.response-context-card{border:1px solid #314b64;border-radius:12px;background:#0b1420;padding:8px;min-width:0}.response-context-card h3{margin:0 0 7px;color:var(--gold);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.response-context-tile{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;align-items:center}.response-context-tile img{width:48px;height:64px;object-fit:cover;border:1px solid #415b75;border-radius:7px}.response-context-tile strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;font-size:13px}.response-context-tile small{display:block;color:var(--muted);font-size:10px;line-height:1.28}.incoming-summary{margin-top:6px;color:#d9e6f5;font-size:11px;line-height:1.35;max-height:54px;overflow:auto;border-top:1px solid #22364b;padding-top:6px}.response-options-wrap{border:1px solid #263e55;background:#08111b;border-radius:12px;padding:10px}.response-options-wrap h3{margin:0 0 8px;color:#dce8f6;font-size:13px}.response-option-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}.response-option{border:1px solid #36536e;background:#0d1722;border-radius:10px;padding:5px;text-align:left;min-width:0}.response-option.selected{border-color:var(--gold);box-shadow:0 0 0 2px rgba(244,211,94,.22)}.response-option button{width:100%}.response-option-preview{background:transparent;border:0;padding:0;text-align:left;cursor:pointer;color:#fff}.response-option-preview img{width:100%;height:86px;object-fit:cover;border:1px solid #324b63;border-radius:6px;display:block}.response-option-preview strong{display:block;font-size:11px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.response-option-preview small{display:block;color:var(--muted);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.response-option-select{margin-top:5px;border:1px solid #45627e;background:#132234;border-radius:7px;padding:4px;font-size:10px;cursor:pointer}.response-option.selected .response-option-select{background:#4b3d0e;border-color:#d8bd46;color:#fff2a8}.response-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #263d55;background:#0b131c}.response-foot button{border:1px solid #45627e;background:#132234;border-radius:9px;padding:8px 12px;cursor:pointer}.response-foot .primary{background:#11341f;border-color:#2c8f55;color:#caffd9;font-weight:800}.played-tile{grid-template-columns:38px 46px minmax(0,1fr)}.played-tile .played-fallback img{width:100%;height:100%;object-fit:cover;border:0;border-radius:5px}.played-tile .played-fallback.has-image{padding:0;background:#08111b}.chain-detail{white-space:pre-wrap;line-height:1.42;color:#dce8f6}.opponent-played-panel .empty-state.compact{min-height:94px}@media(max-width:980px){.response-context-row{grid-template-columns:1fr}.response-option-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}}
/* Step 9 Final card-search choice tiles: reuse compact uniform tile behavior; preview overlay stays above modal. */
.card-search-choice{border:1px solid #36536e;background:#0d1722;border-radius:10px;padding:5px;min-width:82px}
.card-search-choice.selected{border-color:var(--gold);box-shadow:0 0 0 2px rgba(244,211,94,.25)}
.card-search-choice .discard-select{width:100%;margin-top:5px;border:1px solid #45627e;background:#132234;border-radius:7px;padding:4px;font-size:10px;cursor:pointer}
.card-search-choice.selected .discard-select{background:#4b3d0e;border-color:#d8bd46;color:#fff2a8}
.card-search-choice-grid{grid-template-columns:repeat(auto-fill,minmax(82px,1fr))}

/* Step 12 explicit preview stacking guardrail: preview above card choice / response popups. */
#previewOverlay{z-index:1200}

/* Packaging parity: preserve v2.0.0 field/playmat assets while retaining RUNTIME_UI_FLOW UI v1.4 layout. */
.center-board{background-image:linear-gradient(rgba(5,8,13,.72),rgba(5,8,13,.72)),url('../assets/Field.png');background-size:cover;background-position:center;border-radius:16px;padding:4px}
.choice-footer-buttons{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.choice-footer-buttons .primary{background:#11341f;border:1px solid #2c8f55;color:#caffd9;border-radius:9px;padding:8px 12px;cursor:pointer}

/* Runtime UI Flow v1.4 Deck Setup Fix — full-screen startup setup and tighter board flow. */
body.deck-setup-active{min-width:0;overflow-x:hidden;background:#050706}
.deck-setup-screen{min-height:100vh;background:radial-gradient(circle at top,#172437 0%,#070b10 58%,#030504 100%);padding:18px;display:flex;flex-direction:column;gap:14px}
.deck-setup-top{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:76px;border:1px solid #2d2511;background:linear-gradient(180deg,#080b09,#070907);border-radius:16px;padding:14px 18px;box-shadow:0 12px 40px rgba(0,0,0,.24)}
.deck-setup-top h1{margin:0;color:var(--gold);font-size:28px;line-height:1}.deck-setup-top p{margin:4px 0 0;color:#d5c9aa;font-size:13px}.deck-setup-top .eyebrow{margin:0 0 5px;color:#9fb3c7;font-size:11px;text-transform:uppercase;letter-spacing:.12em;font-weight:800}.setup-status-pill{border:1px solid rgba(244,211,94,.42);background:#11170f;color:#fff0aa;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:900;white-space:nowrap}.deck-setup-shell{width:min(1180px,100%);margin:0 auto;border:1px solid rgba(244,211,94,.55);border-radius:18px;background:rgba(16,25,35,.96);box-shadow:0 24px 80px rgba(0,0,0,.58);padding:16px;overflow:hidden}.deck-setup-screen .deck-setup-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:stretch}.deck-setup-screen .deck-side{border-color:#354153;background:linear-gradient(180deg,#101923,#0a121c);border-radius:16px;padding:14px;display:flex;flex-direction:column}.deck-setup-screen .deck-side header{min-height:44px;align-items:flex-start}.deck-side header small{display:block;margin-top:3px;color:#9fb3c7;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}.deck-setup-screen .deck-select-label select{height:38px;cursor:pointer}.deck-setup-screen .formation-preview{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.deck-setup-screen .formation-card{border-color:#354153;background:#08111b;border-radius:13px;padding:8px}.deck-setup-screen .formation-card img{height:170px;object-fit:cover}.deck-setup-screen .formation-card small{display:block;margin-top:3px;color:#9fb3c7;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.deck-setup-screen .deck-counts{border:1px solid #243a50;background:#08111b;border-radius:999px;padding:6px 10px;display:inline-block;width:max-content;max-width:100%;color:#dce8f6}.deck-setup-screen .legacy-package-list{margin-top:auto;padding-top:10px}.deck-setup-screen .import-button{margin-top:12px}.deck-setup-actions{position:sticky;bottom:0;z-index:3;margin:14px -16px -16px;padding:12px 16px;background:linear-gradient(rgba(16,25,35,.88),#101923);border-top:1px solid #263d55}.deck-setup-actions .start-match-primary{background:#11341f;border-color:#2c8f55;color:#caffd9;font-weight:900;min-width:150px}.deck-setup-note{width:min(1180px,100%);margin:0 auto;color:#c7d3e1;font-size:12px;border-left:3px solid var(--gold);background:rgba(9,17,26,.7);padding:8px 12px;border-radius:8px}.deck-setup-open .choice-panel{width:min(1120px,96vw);max-height:90vh}.deck-setup-open .choice-head{position:sticky;top:0;z-index:4}.deck-setup-open .choice-foot{position:sticky;bottom:0;z-index:4}.deck-setup-open .choice-body{max-height:calc(90vh - 112px)}
body:not(.deck-setup-active) .top-header{height:56px;padding:8px 16px}.top-header h1{font-size:18px}.ai-hand-panel{min-height:72px}.game-shell{grid-template-columns:136px minmax(0,1fr) 136px;padding:8px 12px}.center-board{gap:7px}.field{padding:7px}.hero-grid{gap:7px}.hero-main img{width:46px;height:62px}.badge-row{margin:5px 0}.attachment-slot{height:30px}.phase-tracker{margin:0 auto;padding:4px 8px}.control-row{min-height:48px}.bottom-row{grid-template-columns:minmax(0,1fr) 280px}.player-hand-panel{min-width:0}.opponent-played-panel{max-width:320px}.hand-scroll{overflow-x:auto}.zone-card.racial-token{min-height:48px}.zone-card.main-deck.locked,.zone-card.legacy-deck.locked{pointer-events:none}.zone-card.discard-pile.clickable{pointer-events:auto}
@media(max-width:900px){body{min-width:0}.deck-setup-top{align-items:flex-start;flex-direction:column}.deck-setup-screen .deck-setup-grid{grid-template-columns:1fr}.deck-setup-screen .formation-card img{height:130px}.deck-setup-actions{position:static;margin:14px 0 0;padding:12px 0 0}.game-shell{grid-template-columns:1fr}.bottom-row{grid-template-columns:1fr}.opponent-played-panel{max-width:none}}


/* Runtime UI Flow v1.4 Board + Deck Setup Fix patch */
html,body{width:100%;min-height:100%;overflow-x:hidden;}
body{min-width:0;background:#050809;color:#fff7dd;}
body.deck-setup-active{overflow:hidden;min-width:0;background:#050809;}
.deck-setup-screen.runtime-ui-v14-setup{position:fixed;inset:0;width:100vw;height:100vh;z-index:1;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;padding:14px;background:radial-gradient(circle at 50% 0,#142033 0%,#050809 62%);overflow:hidden;}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-top{width:100%;max-width:none;margin:0;min-height:64px;border:1px solid rgba(184,153,50,.45);border-radius:12px;padding:10px 14px;background:#070b10;display:flex;justify-content:space-between;align-items:center;}
.deck-setup-top h1{font-size:24px;margin:0;color:#ffda49;}
.deck-setup-top p{margin:2px 0;color:#aeb7c5;}
.deck-setup-top .eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:#ffda49;}
.setup-status-pill{border:1px solid rgba(184,153,50,.55);border-radius:999px;padding:8px 12px;color:#ffda49;background:#0b1118;font-weight:900;white-space:nowrap;}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{width:100%;height:100%;max-width:none;margin:0;border:1px solid rgba(184,153,50,.45);border-radius:14px;background:#070b10;box-shadow:none;padding:12px;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr) auto auto;}
.deck-setup-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;min-height:0;overflow:hidden;}
.deck-side{min-width:0;min-height:0;border:1px solid rgba(184,153,50,.38)!important;border-radius:12px!important;background:linear-gradient(180deg,#101922,#070b0f)!important;padding:10px!important;display:grid!important;grid-template-rows:auto auto auto auto minmax(0,1fr) auto auto;gap:8px;overflow:hidden;}
.deck-side header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;min-height:auto!important;}
.deck-side h3{margin:0;color:#ffda49;font-size:16px;}
.deck-side header small{display:block;color:#aeb7c5;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.deck-pill{border:1px solid #4b5c72;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:900;}
.deck-pill.ok{color:#73ee82;border-color:#73ee82}.deck-pill.bad{color:#ff5b72;border-color:#ff5b72}
.deck-select-label{display:grid;gap:4px;color:#aeb7c5;font-size:11px;text-transform:uppercase;letter-spacing:.07em;}
.deck-select-label select{width:100%;height:38px;border-radius:10px;border:1px solid #4b5c72;background:#0e1824;color:#fff;padding:0 10px;}
.deck-source{font-size:10px;color:#aeb7c5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.deck-counts{font-size:12px;color:#fff7dd;border:1px solid #263546;background:#0b1118;border-radius:999px;padding:5px 9px;width:max-content;max-width:100%;}
.formation-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-height:0;overflow:hidden;}
.formation-card{min-width:0;border:1px solid #334657;border-radius:10px;background:#081018;padding:7px;overflow:hidden;}
.formation-card span{display:block;color:#ffda49;font-weight:900;font-size:11px;margin-bottom:5px;}
.formation-card button{width:100%;padding:0;border:0;background:transparent;text-align:left;cursor:pointer;}
.formation-card img{width:100%;height:clamp(105px,22vh,190px)!important;object-fit:contain!important;border:1px solid #33475c;border-radius:8px;background:#05090e;display:block;}
.formation-card strong{display:block;margin-top:5px;color:#fff;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.formation-card small{display:block;color:#aeb7c5;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.legacy-package-list{display:flex;gap:5px;flex-wrap:wrap;overflow:hidden;align-content:start;max-height:44px;}
.legacy-package-list span{font-size:10px;border:1px solid #263546;border-radius:999px;background:#0b1118;padding:4px 6px;color:#dce8f6;white-space:nowrap;}
.import-button{height:34px;border-color:#b89932;color:#ffda49;background:#0b1118;}
.deck-import-input{display:none!important;}
.setup-inline-error,.setup-error{color:#ffb6c1;background:#37111a;border:1px solid #cc5364;border-radius:8px;padding:6px 8px;font-size:12px;}
.deck-setup-actions{position:static!important;margin:8px 0 0!important;padding:10px 0 0!important;background:transparent!important;border-top:1px solid #263546!important;display:flex;justify-content:flex-end;gap:10px;}
.deck-setup-actions button{height:38px;}
.deck-setup-actions .start-match-primary{min-width:150px;background:#15381f!important;border-color:#73ee82!important;color:#cafbd7!important;font-weight:900;}
.deck-setup-note{width:100%;max-width:none;margin:0;border:1px solid rgba(184,153,50,.38);border-radius:10px;background:#070b10;color:#aeb7c5;padding:8px 12px;font-size:12px;}
body.deck-setup-active #choiceOverlay:not(.open),body.deck-setup-active #infoOverlay:not(.open),body.deck-setup-active #responseOverlay:not(.open),body.deck-setup-active #previewOverlay:not(.open){display:none;}

body:not(.deck-setup-active) .top-header{height:44px;min-height:44px;padding:6px 12px;background:#070b10;border-bottom:1px solid rgba(184,153,50,.45);}
body:not(.deck-setup-active) .top-header h1{font-size:20px;color:#ffda49;}
body:not(.deck-setup-active) .top-header p{font-size:11px;color:#aeb7c5;}
body:not(.deck-setup-active) .ai-hand-panel{min-height:68px;padding:7px 12px;background:#0b1118;border:1px solid #263546;border-left:0;border-right:0;display:grid;grid-template-columns:210px minmax(0,1fr);}
.hidden-hand{justify-content:center;overflow:hidden}.hidden-hand img{width:38px;height:56px;object-fit:contain;border-color:rgba(184,153,50,.55);}
.game-shell{display:grid;grid-template-columns:116px minmax(0,1fr) 116px;gap:10px;padding:10px 10px 8px;background:#050809;border-bottom:0;}
.side-panel{gap:8px}.side-panel h3{font-size:11px;color:#ffda49;}
.zone-card{min-height:62px;border-color:rgba(184,153,50,.38);border-radius:9px;background:linear-gradient(180deg,#101922,#070b0f);}
.zone-card b{font-size:22px;color:#ffda49}.zone-card span{font-size:9px;color:#fff7dd;}
.racial-token{min-height:48px!important;}
.center-board{gap:8px;min-width:0;}
.field{border-color:rgba(184,153,50,.42);border-radius:9px;background:#070b10;padding:28px 10px 12px;position:relative;overflow:visible;min-height:254px;}
.field-header{position:absolute;top:6px;left:12px;right:12px;margin:0;font-size:12px;color:#ffda49;}
.hero-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.hero-panel{border:1px solid #334657;border-radius:10px;background:linear-gradient(180deg,#081018,#05090d);padding:9px;min-height:202px;}
.hero-main img{width:62px;height:82px;object-fit:contain;border-radius:7px;border-color:#33475c;background:#05090e;}
.hero-text strong{font-size:13px}.hero-text small{font-size:10.5px;color:#aeb7c5;}
.badge-row{margin:6px 0}.state-badge{font-size:9.5px;border-color:#334657;background:#111922;color:#fff7dd;}
.attachment-slot{height:28px;border-color:rgba(184,153,50,.45);color:#d9c978;}
.exp-stack{height:22px;border-color:#263546;font-size:10px;}
.phase-tracker{align-self:stretch;justify-self:stretch;border-color:#b89932;border-radius:9px;background:#0b1118;padding:6px;display:flex;justify-content:center;gap:6px;}
.phase-tracker span{font-size:12px;padding:5px 12px;border:1px solid #263546;background:#070b10;color:#aeb7c5;}
.phase-tracker .current{background:#ffda49;color:#111;font-weight:900;border-color:#ffda49;}
.control-row{min-height:46px;background:#0b1118;border-top:1px solid #263546;border-bottom:1px solid #263546;padding:8px 12px;}
.bottom-row{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:10px;padding:8px 10px;background:#050809;}
.player-hand-panel,.opponent-played-panel{background:#0b1118;border:1px solid #263546;border-radius:9px;padding:8px;}
.player-hand-panel h2,.opponent-played-panel h2{color:#ffda49;}.hand-card{width:82px;flex-basis:82px;border-color:#334657;background:#081018;}.hand-art img{height:104px;object-fit:contain;}.opponent-played-panel{max-width:none;overflow:hidden;}.played-tile{grid-template-columns:38px 44px minmax(0,1fr);border-color:#334657;}.played-tile img{width:44px;height:58px;object-fit:contain;}.build-foot{padding:5px 10px;background:#050809;}
@media(max-width:1180px){.game-shell{grid-template-columns:104px minmax(0,1fr) 104px}.bottom-row{grid-template-columns:minmax(0,1fr) 260px}.hero-main img{width:54px;height:72px}.formation-card img{height:120px!important;}}
@media(max-height:760px){.deck-setup-screen.runtime-ui-v14-setup{padding:8px;gap:6px}.deck-setup-screen.runtime-ui-v14-setup .deck-setup-top{min-height:52px;padding:7px 10px}.deck-setup-top h1{font-size:20px}.formation-card img{height:105px!important}.legacy-package-list{max-height:28px}.deck-side{gap:5px}.deck-setup-note{display:none}}


/* Battlefield UI reference implementation adopted from Battlefield_UI.html / Runtime UI Flow v1.4. */

:root{
  --bg:#050809;--panel:#0b1118;--panel2:#070c12;--line:#b89932;--lineSoft:rgba(184,153,50,.68);--soft:#273748;--blue:#00a9ff;
  --text:#fff7dd;--muted:#aeb7c5;--green:#73ee82;--red:#ff5b72;--gold:#ffda49;--slot:#111922;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:"Noto Sans";font-size:13px;overflow:auto}
body{scrollbar-color:#5b6472 #070b10}.app{min-height:100vh;min-width:1360px;padding:6px;background:#050809;display:block}.topbar,.strip,.field,.phase,.controls,.bottom,.battleLogBottom{margin-bottom:10px}
.topbar{display:flex;align-items:center;gap:12px;padding:6px 12px;background:#070b10;border-bottom:1px solid rgba(184,153,50,.45);min-height:40px}.brand{font-weight:900;color:var(--gold);font-size:21px;letter-spacing:.2px}.hint{font-size:12px;color:#b6c2d4}.spacer{flex:1}
button{background:#0e1824;color:#fff;border:1px solid #4b5c72;border-radius:10px;padding:6px 11px;font-weight:800;cursor:pointer}button.gold{border-color:var(--line);color:var(--gold);background:#0b1118}button.red{background:#37111a;border-color:#cc5364}.smallBtn{font-size:10px;padding:3px 7px;border-radius:8px}
.strip,.field,.phase,.controls,.bottom,.battleLogBottom{background:var(--panel);border:1px solid #263546;border-radius:9px;overflow:hidden}.strip{display:grid;grid-template-columns:210px 1fr 120px;align-items:center;padding:7px 12px;min-height:72px;overflow:visible}.strip .label{font-weight:900;color:var(--gold);font-size:16px}.backs{display:flex;justify-content:center;align-items:center;gap:7px;min-height:44px;overflow:hidden}.back{width:38px;height:56px;object-fit:contain;border:1px solid rgba(184,153,50,.55);border-radius:5px;flex:0 0 auto;display:block}.plusHidden{font-size:15px;font-weight:900;color:var(--gold)}.handNote{font-size:11px;color:#b9c6d6;text-align:right}
.field{position:relative;display:grid;grid-template-columns:114px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 114px;gap:12px;padding:32px 10px 14px;border-color:rgba(184,153,50,.42);background:#070b10;overflow:visible;min-height:326px}.fieldTitle{position:absolute;top:6px;left:12px;color:var(--gold);font-size:13px;font-weight:900;letter-spacing:.3px}.zones{display:grid;gap:10px;align-content:start}.zones.left{grid-template-rows:118px 118px 50px}.zones.right{grid-template-rows:118px 142px 32px}.zone{border:1px solid rgba(184,153,50,.38);border-radius:9px;background:linear-gradient(180deg,#101922,#070b0f);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02);min-width:0;overflow:visible}.zone.blue{border-color:rgba(20,170,255,.70)}.zoneLabel{font-size:8.5px;line-height:1.05;text-transform:uppercase;color:#fff;text-align:center;letter-spacing:.08px}.zoneNum{font-size:24px;font-weight:900;color:var(--gold);line-height:1}.zone.racialZone{height:54px;padding:4px}.zone.racialZone .zoneLabel{font-size:8px}.zone.racialZone .zoneNum{font-size:22px}.zone .view{font-size:8px;border-radius:6px;padding:2px 6px;margin-top:4px}.zoneMain{justify-content:center}.zoneDiscard{gap:4px}.zoneCard{position:relative;width:88px;height:104px;border-radius:7px;border:1px solid #33475c;overflow:hidden;background:#05090e;box-shadow:0 6px 16px rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;flex:0 0 auto}.zoneCard img{width:100%;height:100%;object-fit:contain;display:block;opacity:.70;filter:brightness(.92)}.zoneOverlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;text-shadow:0 1px 4px #000,0 0 7px #000;color:#fff;line-height:1.02;padding:9px 5px 8px;background:radial-gradient(circle at center,rgba(0,0,0,.16),rgba(0,0,0,.02) 58%,rgba(0,0,0,.10))}.zoneOverlay .tiny{font-size:7.8px;text-transform:uppercase;font-weight:900;letter-spacing:.08px;max-width:72px}.zoneOverlay .big{font-size:25px;color:var(--gold);font-weight:900;line-height:.9;margin-top:auto}.zoneOverlay .sub{font-size:6.8px;color:#dceeff;line-height:1.05;margin-top:2px;max-width:74px}.zoneCard.deck{width:90px;height:126px}.zoneCard.deck .big{font-size:28px}.zoneCard.deck .tiny{font-size:8px}.lane{border:1px solid #334657;border-radius:10px;background:linear-gradient(180deg,#081018,#05090d);position:relative;min-width:0;padding:10px 10px 10px;display:grid;grid-template-rows:128px 58px 34px 28px;gap:7px;overflow:visible;min-height:266px}.lane.active{border-color:rgba(0,169,255,.85);box-shadow:0 0 0 1px rgba(0,169,255,.18) inset}.pos{position:absolute;left:8px;top:6px;font-size:10px;font-weight:900;color:var(--gold);z-index:3}.heroTop{border:1px solid #273747;border-radius:8px;background:radial-gradient(circle at 32% 48%,#101b25 0,#05090e 72%);display:grid;grid-template-columns:98px minmax(0,1fr);gap:10px;align-items:center;min-width:0;padding:7px 9px 7px 12px;position:relative}.heroImgWrap{display:flex;align-items:center;justify-content:center;height:100%;min-width:0}.heroImg{height:108px;max-width:82px;object-fit:cover;border-radius:5px;border:1px solid #52677d;box-shadow:0 8px 18px rgba(0,0,0,.35)}.heroInfoRight{min-width:0;align-self:center}.hName{font-weight:900;font-size:12.8px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 1px #000;max-width:100%}.hMeta{font-size:9.5px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.hStats{font-size:8.9px;display:flex;align-items:center;gap:4px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px;min-width:0}.expLink{border:1px solid rgba(184,153,50,.65);background:#0b1219;color:var(--gold);border-radius:999px;padding:1px 4px;font-size:7.2px;font-weight:900;line-height:1.1;cursor:pointer;flex:0 0 auto;max-width:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hpbar{height:10px;background:#1e3341;border-radius:999px;overflow:hidden;margin-top:6px}.hpbar>i{display:block;height:100%;background:var(--green)}.stateBoard{border:1px solid #203143;border-radius:8px;background:#071019;display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;padding:6px 8px;min-height:58px}.stateLabel{color:var(--gold);font-weight:900;font-size:10px;text-transform:uppercase;letter-spacing:.3px}.stateChips{display:flex;gap:6px;flex-wrap:wrap;align-items:flex-start;min-width:0}.stateDetail{width:100%;font-size:9.4px;color:#dfe8f5;line-height:1.16;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.92}.badge,.miniBtn{border:1px solid #547396;background:#091827;color:#dceeff;border-radius:999px;font-size:9.5px;padding:3px 7px;max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge.red{border-color:var(--red);color:#ffd8de}.badge.gold,.miniBtn.gold{border-color:var(--line);color:var(--gold)}.badge.green{border-color:#62cf78;color:#c8ffd1}.badge.gray{border-color:#738293;color:#d3dce6}.miniBtn{font-weight:800;background:#0b1825}.attach{display:grid;grid-template-columns:1fr 1fr;gap:10px}.slot{height:34px;border:1px dashed rgba(184,153,50,.50);border-radius:8px;background:#070a0e;color:#e8d88a;display:flex;align-items:center;justify-content:center;font-size:8.7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heroActions{display:flex;align-items:center;gap:6px;justify-content:flex-start;min-width:0}.actionBtn{font-size:9.5px;padding:4px 8px;border-radius:999px;border:1px solid #486176;background:#081522;color:#fff;font-weight:800}.actionBtn.gold{border-color:var(--line);color:var(--gold)}
.phase{display:grid;grid-template-columns:260px minmax(0,1fr) 180px;align-items:center;gap:14px;padding:8px 14px;border-color:#2a3b4d;background:#070b10;min-height:58px;overflow:visible}.turnTitle{font-weight:900;color:var(--gold);font-size:14px;line-height:1.1;text-align:left}.turnSub{font-size:10.5px;color:#c7d3e1;margin-top:3px;line-height:1.1}.phaseSteps{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;overflow:hidden}.phaseStep{border:1px solid #445b70;border-radius:999px;padding:4px 11px;font-size:10.5px;font-weight:900;color:#dfe8f5;background:#0b1420;white-space:nowrap;line-height:1}.phaseStep.done{opacity:.72}.phaseStep.active{border-color:var(--line);color:var(--gold);background:#151306;box-shadow:0 0 0 1px rgba(184,153,50,.12) inset}.phaseStep.next{border-color:#476d95;color:#f3fbff}.phaseNext{justify-self:end;text-align:right;font-size:11px;color:#d9e2ee;white-space:nowrap;line-height:1.15}.phaseNext b{color:var(--gold)}.controls{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(220px,1fr);align-items:center;gap:18px;padding:7px 12px;background:#070b10;min-height:50px}.controls button{padding:6px 12px}.primaryPhase{font-size:14px;padding:7px 30px!important;margin:0!important}.controlBadgeWrap{justify-self:start;display:flex;align-items:center;min-width:0}.repositionGroup{justify-self:end;display:flex;align-items:center;gap:8px;min-width:0;justify-content:flex-end}.controlBadge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);color:var(--gold);background:#0b1118;border-radius:999px;padding:5px 12px;font-size:10.5px;font-weight:900;white-space:nowrap;box-shadow:0 0 0 1px rgba(184,153,50,.12) inset}.controlBadge small{color:#fff7dd;font-size:8.5px;font-weight:800;opacity:.92}.controlBadge b{color:var(--gold)}.turnGroup{justify-self:end;display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex-wrap:nowrap}.turnGroup .hint{font-size:10px;color:#aeb7c5;white-space:nowrap;opacity:.82}.repositionTools{display:none;gap:8px}.repositionGroup.open .repositionTools{display:flex}.repositionToggle{font-size:11px;padding:5px 12px!important}.repositionTools button{font-size:10.5px;padding:4px 10px!important}.tinySurrender{align-self:center;justify-self:center;font-size:8.5px!important;padding:3px 7px!important;border-radius:999px!important;color:#ffd8de!important;border-color:#7a3341!important;background:#2b0e15!important;width:76px;margin:1px auto 0;line-height:1.05;display:block}
.bottom{display:grid;grid-template-columns:70% 30%;gap:10px;padding:8px;border-color:#334559;min-height:224px}.handPanel{min-width:0}.sectionTitle{font-size:19px;color:var(--gold);font-weight:900;margin:0 0 6px}.handCards{display:flex;gap:8px;align-items:flex-start;overflow:hidden}.cardTile{width:78px;min-width:78px;border:1px solid #456178;border-radius:8px;background:#081018;padding:3px;position:relative}.cardTile.legal{box-shadow:0 0 0 1px #2bff7e;border-color:#70ff9c}.cardTile img{width:100%;height:104px;object-fit:cover;border-radius:4px;display:block}.ctitle{font-size:10px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px;color:#fff}.cardTile button{width:100%;font-size:10px;padding:3px;margin-top:3px;border-radius:7px}
.opPanel{border:1px solid var(--lineSoft);border-radius:10px;background:#070d13;padding:9px;display:grid;grid-template-rows:auto 1fr auto;min-width:0}.opHead{display:flex;align-items:baseline;gap:7px}.opHead small{color:#d8d2a5}.opTiles{display:flex;gap:10px;align-items:center;overflow:hidden;min-height:92px}.actionIcon{width:62px;min-width:62px;text-align:center}.actionIcon .iconBox{height:72px;border:1px solid #486176;border-radius:7px;background:#08121b;padding:3px;display:flex;align-items:center;justify-content:center;overflow:hidden}.actionIcon img{max-width:100%;max-height:100%;object-fit:cover;border-radius:4px}.actionIcon .tag{margin-top:3px;font-size:10px;font-weight:900;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resolveIcon{width:74px;min-width:74px}.resolveIcon .iconBox{border:1px dashed #4e789e;background:#0a1826;color:#dbefff;font-weight:900;font-size:11px;line-height:1.1;text-align:center}.opBtns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.opBtns button{padding:7px}

/* v0.20 Part 4 sync: Reposition uses modal, not inline swap buttons. */
.repositionModal{position:fixed;inset:0;background:rgba(0,0,0,.68);display:none;align-items:center;justify-content:center;z-index:50;padding:24px}
.repositionModal.open{display:flex}
.repositionBox{width:min(520px,92vw);background:#080d13;border:1px solid rgba(184,153,50,.62);border-radius:14px;box-shadow:0 24px 80px rgba(0,0,0,.62);padding:16px;color:var(--text)}
.repositionBox h2{margin:0 0 5px;color:var(--gold);font-size:20px}.repositionBox p{margin:0 0 12px;color:#bfc9d7;font-size:12px;line-height:1.35}.repositionChoices{display:grid;gap:10px;margin:12px 0}.repositionChoice{border:1px solid #3b5369;background:#0b141e;border-radius:11px;padding:12px;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:10px}.repositionChoice strong{font-size:14px}.repositionChoice span{color:#c6d3e2;font-size:11px}.repositionChoice.selected{border-color:var(--line);box-shadow:0 0 0 1px rgba(184,153,50,.16) inset}.repositionFooter{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}.targetLegal{outline:2px solid rgba(115,238,130,.85);outline-offset:2px}.targetBlocked{outline:2px solid rgba(255,91,114,.85);outline-offset:2px}.targetSelected{outline:2px solid rgba(255,218,73,.95);outline-offset:2px}
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:20;align-items:center;justify-content:center}.modal.open{display:flex}.history{width:min(880px,90vw);max-height:82vh;border:1px solid var(--line);border-radius:14px;background:#0b121a;box-shadow:0 20px 80px rgba(0,0,0,.6);display:grid;grid-template-rows:auto 1fr auto}.history header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid #304053}.history h2{color:var(--gold);margin:0;font-size:21px}.histBody{display:grid;grid-template-columns:1.2fr .8fr;gap:12px;padding:14px;overflow:auto}.roundBlock{border:1px solid #35465b;border-radius:10px;padding:10px;margin-bottom:10px;background:#081018}.roundBlock h3{margin:0 0 8px;color:var(--gold)}.entry{padding:7px 8px;border-radius:7px;border:1px solid #28384a;margin:5px 0;background:#0a131c;cursor:pointer}.entry b{color:#fff}.entry span{color:#b8c4d4;font-size:12px}.detail{border:1px solid #35465b;border-radius:10px;padding:12px;background:#081018}.history footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid #304053}

.battleLogBottom{display:grid;grid-template-columns:1fr auto;align-items:center;padding:10px 14px;border-color:rgba(184,153,50,.45);background:#080d13}.logTitle{color:var(--gold);font-weight:900;letter-spacing:.4px;text-transform:uppercase;font-size:12px}.logLine{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#fff;font-size:12px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logActions{display:flex;gap:8px;align-items:center}.logActions button{padding:8px 12px;border-radius:9px}
@media(max-height:850px){.app{padding:5px}.field{padding-top:32px;min-height:430px}.lane{grid-template-rows:154px 94px 56px 32px;min-height:382px}.heroImg{height:124px}.hName{font-size:14px}.bottom{min-height:210px}.cardTile img{height:104px}}
/* v0.19: phase badge changed to old phase-track style; controls/field layout from v0.18 preserved. */


/* v1.4 COMPACT 90 FIELD LOCK
   Scope: UI design only. No engine/rule/card-effect changes.
   Fixes: 100% viewport right cut, battlefield height too tall on 768p, compact attachment slots.
*/
:root{--ui-scale:.90;--compact-zone:104px;--compact-side:104px}

.app{min-width:1280px;padding:5px;background:#050809;overflow-x:hidden}.topbar,.strip,.field,.phase,.controls,.bottom,.battleLogBottom{margin-bottom:8px}
.field{grid-template-columns:var(--compact-side) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) var(--compact-side);gap:10px;padding:27px 8px 9px;min-height:296px;overflow:hidden}.fieldTitle{top:5px;left:10px;font-size:12px}.zones{gap:8px}.zones.left{grid-template-rows:104px 104px 46px}.zones.right{grid-template-rows:104px 118px 30px}.zone{padding:5px;border-radius:8px}.zone.racialZone{height:46px}.zone.racialZone .zoneNum{font-size:20px}.zoneNum{font-size:22px}.zoneCard{width:76px;height:91px}.zoneCard.deck{width:78px;height:108px}.zoneCard.deck .big{font-size:25px}.zoneOverlay{padding:7px 4px 6px}.zoneOverlay .tiny{font-size:7px}.zoneOverlay .big{font-size:22px}.zoneOverlay .sub{font-size:6.2px}.zone .view{font-size:7.5px;padding:2px 6px;margin-top:3px}.tinySurrender{width:72px;font-size:8px!important;padding:3px 6px!important}
.lane{padding:8px;grid-template-rows:112px 44px 28px 26px;gap:6px;min-height:238px;border-radius:9px}.pos{left:7px;top:5px;font-size:9.5px}.heroTop{grid-template-columns:82px minmax(0,1fr);gap:8px;padding:6px 8px 6px 10px;border-radius:7px}.heroImg{height:94px;max-width:72px;border-radius:4px}.hName{font-size:12px}.hMeta{font-size:8.8px;margin-top:1px}.hStats{font-size:8.1px;margin-top:1px}.expLink{font-size:6.8px;padding:1px 4px}.hpbar{height:8px;margin-top:5px}.stateBoard{min-height:44px;padding:5px 7px;gap:6px;border-radius:7px}.stateLabel{font-size:9px}.stateChips{gap:5px}.stateDetail{font-size:8.4px;line-height:1.05}.badge,.miniBtn{font-size:8.7px;padding:2px 6px;max-width:108px}.attach{gap:8px}.slot{height:28px;border-radius:7px;font-size:8px}.heroActions{gap:5px}.actionBtn{font-size:8.8px;padding:3px 7px}.controls{min-height:46px;padding:6px 10px}.controlBadge{padding:5px 11px;font-size:10px}.primaryPhase{font-size:13px;padding:6px 28px!important}.turnGroup{min-width:0}.bottom{min-height:200px;padding:7px}.sectionTitle{font-size:18px;margin-bottom:5px}.cardTile{width:74px;min-width:74px}.cardTile img{height:98px}
@media(max-height:850px){.app{padding:4px}.field{padding-top:26px;min-height:286px;gap:9px}.lane{grid-template-rows:106px 40px 26px 24px;gap:5px;min-height:224px;padding:7px}.heroTop{grid-template-columns:76px minmax(0,1fr);gap:7px;padding:5px 7px 5px 9px}.heroImg{height:88px;max-width:68px}.stateBoard{min-height:40px;padding:4px 6px}.attach{gap:7px}.slot{height:26px;font-size:7.8px}.heroActions{height:24px}.zones.left{grid-template-rows:98px 98px 44px}.zones.right{grid-template-rows:98px 112px 28px}.zoneCard{width:72px;height:86px}.zoneCard.deck{width:74px;height:102px}.controls{min-height:44px}.bottom{min-height:190px}.cardTile img{height:94px}}



/* Runtime binding compatibility with dynamic app. */
.battlefield-app{min-height:100vh;min-width:1280px;overflow-x:hidden}
.zoneButton{all:unset;display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer}
.zoneButton .zoneCard{pointer-events:none}
.slot.filled{padding:2px}.slot.filled button{all:unset;display:flex;align-items:center;justify-content:center;gap:4px;width:100%;height:100%;cursor:pointer;overflow:hidden}.slot.filled img{height:24px;width:18px;object-fit:cover;border-radius:3px}.slot.filled span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hero-panel.selectable-legal{border-color:var(--green)!important;box-shadow:0 0 0 2px rgba(115,238,130,.65),0 0 18px rgba(115,238,130,.18)}
.hero-panel.selectable-illegal{border-color:var(--red)!important;box-shadow:0 0 0 1px rgba(255,91,114,.55);filter:saturate(.85) brightness(.82)}
.hero-panel.selectable-selected{border-color:var(--gold)!important;box-shadow:0 0 0 2px rgba(255,218,73,.75),0 0 18px rgba(255,218,73,.16)}
.cardTile .hand-art{display:block;width:100%;padding:0;border:0;background:transparent}.cardTile .hand-meta{font-size:9px;color:#aeb7c5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cardTile.legal{box-shadow:0 0 0 1px #2bff7e;border-color:#70ff9c}.mini-action{width:100%;font-size:10px;padding:3px;margin-top:3px;border-radius:7px;background:#0e1824;color:#fff;border:1px solid #4b5c72;font-weight:800;cursor:pointer}.play-card-action{border-color:#4ac36d;color:#caffd5}.tribute-card-action{border-color:#b89932;color:#ffda49}
.opPanel button.actionIcon{background:transparent;border:0;padding:0;cursor:pointer;color:inherit}.empty-state.compact{color:#aeb7c5;border:1px dashed #33475c;border-radius:8px;padding:10px;font-size:11px}.build-foot{display:flex;gap:8px;flex-wrap:wrap;padding:6px 10px;color:#b7c9dc;font-size:10px}.build-foot span{border:1px solid #253a50;border-radius:999px;background:#08111a;padding:3px 8px}.modal-overlay.open,.overlay.open{display:flex}.preview-panel{z-index:500}.choice-panel,.info-panel,.response-panel{z-index:300}
/* Opponent Played event selection polish: selected tile matches Runtime UI Flow v1.4 gold affordance without changing layout. */
.actionIcon.selected .iconBox{border-color:var(--line);box-shadow:0 0 0 1px rgba(184,153,50,.22) inset,0 0 12px rgba(184,153,50,.16)}

/* Response Window + Deck Setup text polish fix */
.formation-preview.clean-hero-preview .formation-card strong,.formation-preview.clean-hero-preview .formation-card small{display:none!important}
.formation-preview.clean-hero-preview .formation-card img{margin-bottom:0!important}
.response-overlay.open{display:flex!important;pointer-events:auto!important;z-index:1200!important}
.response-panel{pointer-events:auto!important;z-index:1210!important}
.response-pass-button,.response-option-select{pointer-events:auto!important;position:relative;z-index:1220}
.preview-overlay.open{z-index:1400!important}

/* Opponent Played archive visual grid: archive only, not raw battle log. */
.opponent-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:10px;margin-top:12px}
.archiveActionIcon{width:100%;min-width:0;display:grid;gap:4px;text-align:center;padding:6px;border:1px solid rgba(184,153,50,.45);border-radius:9px;background:#071019;color:var(--text)}
.archiveActionIcon .iconBox{height:74px;display:flex;align-items:center;justify-content:center;border:1px solid #40566d;border-radius:7px;background:#08121b;overflow:hidden}
.archiveActionIcon img{max-width:100%;max-height:100%;object-fit:cover;border-radius:4px}
.archiveActionIcon .tag{font-size:10px;font-weight:900;color:var(--gold)}
.archiveActionIcon small{font-size:9px;color:#d7e1ef;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Phase 7 QA patch: surrender confirmation actions */
.confirmActions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap;}
.confirmActions button{border-radius:10px;border:1px solid rgba(247,211,99,.45);background:#101820;color:#fff;padding:10px 14px;font-weight:800;cursor:pointer;}
.confirmActions .dangerAction{border-color:rgba(255,92,122,.7);background:linear-gradient(180deg,rgba(160,36,58,.95),rgba(92,20,34,.95));color:#fff;}
/* Phase 11: Arrow Barrage mana selection clarity */
.mana-spend-grid .mana-spend-choice{min-height:54px;border-color:#506883;background:#0d1722;color:#e8f1fb}
.mana-spend-grid .mana-spend-choice.selected{border-color:var(--gold)!important;background:#4b3d0e!important;color:#fff2a8!important;box-shadow:0 0 0 2px rgba(244,211,94,.35),0 0 18px rgba(244,211,94,.18)}
.selected-mana-label{border:1px solid rgba(244,211,94,.35);border-radius:10px;padding:8px 10px;background:rgba(244,211,94,.08)}
.selected-mana-label.warning{border-color:#7b5060;background:rgba(255,91,114,.08);color:#ffd7df}

.hero-panel.legacy-slot .legacyRule{font-size:12px;color:#b7c7d8;margin-top:6px;}
.hero-panel.legacy-slot .heroActions{margin-top:16px;}
.hero-panel.legacy-slot .legacyOnly{color:#d8e8ff;}
.attachment-counter{font-style:normal;opacity:.85;color:var(--muted,#cfe7ff);font-size:.85em;margin-left:.25rem;white-space:nowrap;}


/* Local AI v3.87 — presentation-only, response-aware motion. Runtime remains authoritative. */
.gl-animation-layer{position:fixed;inset:0;z-index:1800;pointer-events:none;overflow:hidden}.gl-flying-card{position:fixed;display:block;object-fit:cover;border-radius:6px;border:1px solid rgba(255,218,73,.75);box-shadow:0 12px 28px rgba(0,0,0,.58);will-change:transform,opacity;pointer-events:none}.heroImg{transform-origin:center center;transition:transform .28s cubic-bezier(.2,.75,.2,1),filter .28s ease}.heroImg.exhausted-card{transform:rotate(-90deg) scale(.72);filter:saturate(.72) brightness(.84)}.heroImgWrap{overflow:visible}.slot[data-attachment-side]{position:relative}@media (prefers-reduced-motion:reduce){.gl-animation-layer{display:none!important}.heroImg{transition:none!important}}

.gl-flying-card.gl-held-card{opacity:1;filter:drop-shadow(0 12px 18px rgba(0,0,0,.42));}

/* v3.91 AI Turn Director — existing phase bar only, no popup. */
.phase.aiTurnDirector{box-shadow:0 0 0 1px rgba(255,210,48,.18),0 0 18px rgba(255,210,48,.08) inset}
.phase.aiTurnDirector .turnTitle{animation:glAiTurnTitlePulse 1.25s ease-in-out infinite}
.phase.aiTurnDirector .phaseStep.active{animation:glAiPhasePulse .9s ease-in-out infinite}
.phase.aiTurnDirector .turnSub{min-height:1.2em}
@keyframes glAiPhasePulse{0%,100%{transform:translateY(0);box-shadow:0 0 0 rgba(255,210,48,0)}50%{transform:translateY(-1px);box-shadow:0 0 14px rgba(255,210,48,.32)}}
@keyframes glAiTurnTitlePulse{0%,100%{opacity:1}50%{opacity:.72}}

/* v3.92: freeze the main page while a played-card visual is moving or held at a response target. */
html.gl-animation-scroll-locked,body.gl-animation-scroll-locked{overflow:hidden!important;overscroll-behavior:none!important}

/* v4.0 atomic Legacy choice tile */
.legacy-choice-tile{width:100%;background:transparent;border:0;padding:0;color:#fff;cursor:pointer;text-align:left}.legacy-choice-tile img{width:100%;height:102px;object-fit:cover;border-radius:6px;display:block}.legacy-choice-tile span,.legacy-choice-tile small{display:block;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legacy-choice-tile span{font-size:11px;font-weight:800}.legacy-choice-tile small{font-size:10px;color:var(--muted)}


/* === Local AI v5.1 — locked UI Prototype v9.4 integration === */
:root{
  --bg-0:#050a10;
  --bg-1:#09131d;
  --panel:rgba(3,9,14,.82);
  --panel-strong:rgba(4,10,16,.94);
  --line:rgba(214,166,55,.48);
  --line-soft:rgba(214,166,55,.23);
  --gold:#d6a637;
  --gold-bright:#f4d57d;
  --text:#f3f5f7;
  --muted:#8c96a0;
  --radius:14px;
  --gap:11px;
}
*{box-sizing:border-box}
html,body{width:100%;min-height:100%;overflow-x:hidden}
button{font:inherit}
body{
  margin:0;
  color:var(--text);
  font-family:"Noto Sans";
  overflow-x:hidden;
  overflow-y:auto;
  background:
    radial-gradient(circle at 48% 46%,rgba(15,43,70,.26),transparent 38%),
    linear-gradient(135deg,#07111b 0%,#04090e 54%,#0b1722 100%);
}
body.modal-open{overflow:hidden}
body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  opacity:.09;
  background-image:
    linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px),
    linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px);
  background-size:44px 44px;
}
.gl-app{
  width:100%;
  max-width:1600px;
  min-width:0;
  min-height:1080px;
  height:auto;
  margin:0 auto;
  padding:var(--gap);
  display:grid;
  grid-template-columns:minmax(0,1fr) clamp(288px,20.5vw,330px);
  gap:var(--gap);
  overflow:visible;
}
.gl-board{
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-rows:32px 82px 332px 56px 332px 126px 32px;
  gap:var(--gap);
}
.player-name{
  width:max-content;
  min-width:150px;
  padding:6px 22px;
  display:flex;
  gap:9px;
  align-items:baseline;
  color:#fff;
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(41,33,15,.94),rgba(12,14,17,.94));
  font-weight:900;
  letter-spacing:.03em;
}
.player-name span{color:var(--muted);font-size:10px;font-weight:700}
.player-name--opponent{border-radius:0 0 12px 12px}
.player-name--self{align-self:end;border-radius:12px 12px 0 0}
.hand-row{
  min-height:0;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:10px;
  overflow-x:hidden;
  overflow-y:hidden;
  padding:4px 20px;
  scrollbar-width:thin;
}
.hand-row img{display:block;object-fit:contain}
.opponent-hand img{
  width:64px;
  max-height:82px;
  border-radius:6px;
  box-shadow:0 7px 18px rgba(0,0,0,.45);
}
.player-hand{
  border-top:1px solid rgba(255,255,255,.03);
  border-bottom:1px solid rgba(255,255,255,.03);
}
.hand-card,.hero-card,.recent-card-strip button,.zone,.coin{
  appearance:none;
  border:0;
  padding:0;
  background:none;
  color:inherit;
  cursor:pointer;
}
.hand-card{
  flex:0 0 76px;
  height:112px;
  border-radius:8px;
  transition:transform .15s ease,filter .15s ease;
}
.hand-card:hover{transform:translateY(-5px);filter:brightness(1.08)}
.hand-card img{
  width:100%;
  height:100%;
  border-radius:8px;
  box-shadow:0 7px 16px rgba(0,0,0,.48);
}
.field{
  min-height:0;
  display:grid;
  gap:var(--gap);
}
.field--opponent,.field--player{grid-template-columns:118px minmax(0,1fr) 118px}
.resource-rail{
  min-width:0;
  min-height:0;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.zone,.racial-coins{
  border:1px solid var(--line-soft);
  border-radius:11px;
  background:linear-gradient(180deg,rgba(10,18,26,.9),rgba(2,7,12,.88));
  color:#fff;
  text-align:center;
  text-transform:uppercase;
  font-size:9px;
  font-weight:900;
  letter-spacing:.04em;
}
.zone{
  min-height:110px;
  padding:7px;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  place-items:center;
  gap:4px;
}
.zone img{max-width:66px;max-height:86px;border-radius:5px;object-fit:contain}
.zone b{font-size:21px;color:var(--gold-bright)}
.zone em{font-size:7px;color:#d7eaff;font-style:normal}
.zone--card,.zone--discard{min-height:0;flex:1 1 0}
.zone--legacy{min-height:0;height:118px;flex:0 0 118px}
.zone--mana{
  min-height:0;
  height:138px;
  flex:0 0 138px;
  border-color:rgba(21,120,210,.52);
  background:
    radial-gradient(circle at 50% 38%,rgba(30,139,238,.32),transparent 29%),
    linear-gradient(180deg,rgba(8,41,76,.92),rgba(3,13,25,.92));
}
.zone--mana img{max-height:66px}
.resource-rail--compact{justify-content:flex-start}
.racial-coins.racial-coins--horizontal{
  min-height:0;
  height:54px;
  flex:0 0 54px;
  padding:5px 7px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  border:1px solid var(--line-soft);
  border-radius:11px;
  background:linear-gradient(180deg,rgba(10,18,26,.9),rgba(2,7,12,.88));
}
.coin{
  width:42px;
  height:42px;
  border-radius:50%;
  filter:drop-shadow(0 5px 10px rgba(0,0,0,.48));
  transition:transform .15s ease,filter .15s ease;
}
.coin:hover{transform:scale(1.06);filter:drop-shadow(0 6px 12px rgba(0,0,0,.58)) brightness(1.05)}
.coin img{display:block;width:100%;height:100%;object-fit:contain}
.hero-row{
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  border:1px solid rgba(214,166,55,.18);
  border-radius:13px;
  background:rgba(3,8,13,.38);
  padding:7px;
  overflow:visible;
}
.hero-lane{
  min-width:0;
  min-height:0;
  display:grid;
  border-left:1px solid rgba(255,255,255,.03);
  border-right:1px solid rgba(255,255,255,.03);
  overflow:visible;
}
.hero-row--opponent .hero-lane{grid-template-rows:43px 1fr 27px}
.hero-row--player .hero-lane{grid-template-rows:27px 1fr 43px}
.attachment-row{
  min-height:0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  padding:0 7px;
}
.attachment-row>div{
  display:grid;
  place-items:center;
  border:1px dashed rgba(214,166,55,.30);
  border-radius:8px;
  background:rgba(3,8,13,.58);
  color:rgba(255,255,255,.50);
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.hero-stage{
  position:relative;
  min-height:0;
  display:grid;
  place-items:center;
  padding:4px 30px;
  overflow:visible;
}
.hero-card{
  height:236px;
  max-height:100%;
  aspect-ratio:.68;
  border-radius:10px;
  transition:transform .15s ease,filter .15s ease;
  transform-origin:center center;
}
.hero-card:hover{transform:scale(1.02);filter:brightness(1.08)}
.hero-card img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  border-radius:10px;
  box-shadow:0 10px 22px rgba(0,0,0,.50);
}
.hero-card.is-exhausted{transform:rotate(-90deg) scale(.78)}
.hero-card.is-exhausted:hover{transform:rotate(-90deg) scale(.81)}
.info-dot{
  position:absolute;
  left:8px;
  top:50%;
  translate:0 -50%;
  width:27px;
  aspect-ratio:1;
  border-radius:50%;
  border:1px solid rgba(214,166,55,.50);
  background:rgba(2,8,12,.86);
  color:#fff;
  font-weight:900;
  cursor:pointer;
}
.status-stack{
  position:absolute;
  right:4px;
  top:50%;
  translate:0 -50%;
  display:grid;
  gap:5px;
}
.status-stack span{
  padding:5px 6px;
  border:1px solid rgba(74,213,116,.55);
  border-radius:5px;
  background:rgba(5,34,14,.78);
  font-size:8px;
  color:#86f4a7;
}
.hp-bar{
  width:calc(100% - 28px);
  margin:2px auto;
  align-self:center;
  position:relative;
  height:22px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:999px;
  background:rgba(0,0,0,.5);
  overflow:hidden;
}
.hp-bar span{
  position:absolute;
  inset:2px;
  width:var(--hp-value,62%);
  border-radius:inherit;
  background:linear-gradient(90deg,#2ca858,#49cd72);
}
.hp-bar.is-warning span{background:linear-gradient(90deg,#b28c13,#e0bd2d)}
.hp-bar.is-low span{background:linear-gradient(90deg,#a52431,#e0444c)}
.hp-bar small{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  z-index:1;
  font-size:9px;
  font-weight:900;
  text-shadow:0 1px 2px #000;
}
.phase-bar{
  min-width:0;
  border-radius:11px;
  border-top:1px solid rgba(255,255,255,.03);
  border-bottom:1px solid rgba(255,255,255,.03);
  background:rgba(3,8,13,.72);
  display:grid;
  grid-template-columns:145px minmax(0,1fr) 250px;
  align-items:center;
  gap:14px;
  padding:8px 12px;
}
.turn-label{display:grid;line-height:1.05}
.turn-label strong{font-size:14px;text-transform:uppercase}
.turn-label span{font-size:10px;color:var(--muted);text-transform:uppercase}
.phase-list{
  min-width:0;
  display:grid;
  grid-template-columns:repeat(5,minmax(84px,1fr));
  gap:8px;
}
.phase-list button,.reposition,.next-phase,.played-actions button,.full-log-button{
  border-radius:8px;
  border:1px solid rgba(255,255,255,.1);
  color:#88919b;
  background:rgba(3,8,13,.6);
  text-transform:uppercase;
}
.phase-list button,.reposition,.next-phase{height:40px;font-size:9px}
.phase-list button.is-active{
  color:#fff1bb;
  border-color:rgba(214,166,55,.68);
  background:linear-gradient(180deg,rgba(93,66,18,.62),rgba(30,22,8,.62));
}
.phase-actions{display:grid;grid-template-columns:108px 132px;gap:9px}
.reposition{
  color:#d9e5ee;
  border-color:rgba(92,139,176,.52);
  background:linear-gradient(180deg,rgba(18,42,61,.86),rgba(5,16,25,.86));
  font-weight:800;
}
.next-phase{
  color:#fff4c0;
  border-color:rgba(241,203,100,.78);
  background:linear-gradient(180deg,#8d681e,#4e360d);
  font-weight:900;
  box-shadow:inset 0 0 0 2px rgba(255,238,177,.08);
}
.right-sidebar{
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-rows:228px 390px 205px 150px;
  gap:var(--gap);
}
.sidebar-panel{
  min-height:0;
  border:1px solid var(--line-soft);
  border-radius:var(--radius);
  background:linear-gradient(180deg,rgba(4,11,17,.95),rgba(2,7,11,.95));
  overflow:hidden;
}
.panel-heading{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.panel-heading h2{margin:0;font-size:16px;letter-spacing:.035em;text-transform:uppercase}
.panel-heading span{color:var(--muted);font-size:9px;white-space:nowrap}
.played-panel{
  padding:11px;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  gap:8px;
}
.recent-card-strip{
  min-height:0;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-template-rows:repeat(2,minmax(0,1fr));
  align-items:center;
  gap:7px;
}
.recent-card-strip button{min-width:0;min-height:0;height:100%;border-radius:7px;display:grid;place-items:center}
.recent-card-strip img{
  width:100%;
  height:100%;
  object-fit:contain;
  border-radius:7px;
  box-shadow:0 5px 14px rgba(0,0,0,.34);
}
.played-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.played-actions button,.full-log-button{
  min-height:33px;
  color:#eef4f8;
  border-color:rgba(81,128,165,.45);
  font-size:8px;
  font-weight:800;
}
.card-zoom-panel{display:grid;place-items:center;padding:12px}
.card-zoom-panel img{
  height:min(100%,560px);
  max-width:100%;
  object-fit:contain;
  border-radius:13px;
  box-shadow:0 18px 38px rgba(0,0,0,.52);
}
.battle-log-panel{
  padding:11px 13px;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  gap:8px;
}
.panel-heading--compact h2{font-size:14px}
.compact-log-lines{
  min-height:0;
  overflow:hidden;
  color:rgba(255,255,255,.66);
  font-size:9px;
  line-height:1.35;
}
.compact-log-lines p{margin:0 0 3px}
.compact-log-lines b{color:var(--gold-bright)}
.full-log-button{width:100%}

.modal-backdrop{
  position:fixed;
  inset:0;
  z-index:1000;
  display:grid;
  place-items:center;
  padding:24px;
  background:rgba(0,4,8,.78);
  backdrop-filter:blur(5px);
}
.modal-backdrop[hidden]{display:none}
.prototype-modal{
  width:min(920px,92vw);
  max-height:min(820px,88vh);
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  overflow:hidden;
  border:1px solid rgba(214,166,55,.55);
  border-radius:16px;
  background:linear-gradient(180deg,rgba(6,15,23,.98),rgba(2,7,11,.98));
  box-shadow:0 28px 80px rgba(0,0,0,.72);
}
.prototype-modal__header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:14px 16px;
  border-bottom:1px solid rgba(214,166,55,.22);
}
.prototype-modal__header h2{margin:0;font-size:18px;text-transform:uppercase;letter-spacing:.04em}
.modal-close{
  width:38px;
  height:38px;
  border-radius:9px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.04);
  color:#fff;
  font-size:24px;
  cursor:pointer;
}
.prototype-modal__body{min-height:0;overflow:auto;padding:18px}
.modal-card-preview{display:grid;place-items:center}
.modal-card-preview img{max-width:min(380px,72vw);max-height:70vh;object-fit:contain;border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.62)}
.history-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.history-grid button{border:0;background:none;padding:0;cursor:pointer}
.history-grid img{display:block;width:100%;aspect-ratio:.68;object-fit:contain;border-radius:8px;box-shadow:0 8px 20px rgba(0,0,0,.42)}
.full-log{display:grid;gap:8px;color:#d9e0e5;font-size:13px;line-height:1.45}
.full-log p{margin:0;padding:9px 11px;border:1px solid rgba(255,255,255,.06);border-radius:8px;background:rgba(255,255,255,.025)}
.full-log b{color:var(--gold-bright)}
.compact-log-lines[data-open-log]{cursor:pointer}
@media(max-width:1450px){
  :root{--gap:9px}
  .gl-app{grid-template-columns:minmax(0,1fr) 292px;padding:9px}
  .field--opponent,.field--player{grid-template-columns:108px minmax(0,1fr) 108px}
  .hero-card{height:220px}
  .phase-bar{grid-template-columns:132px minmax(0,1fr) 226px;gap:10px}
  .phase-actions{grid-template-columns:98px 120px}
  .phase-list{gap:6px}
  .phase-list button{font-size:8px}
}
@media(max-width:1280px){
  .gl-app{grid-template-columns:minmax(0,1fr) 270px}
  .field--opponent,.field--player{grid-template-columns:100px minmax(0,1fr) 100px}
  .right-sidebar{grid-template-rows:218px 360px 195px 145px}
  .hero-card{height:205px}
  .hand-card{flex-basis:70px;height:104px}
  .opponent-hand img{width:58px}
}

@media(max-width:1100px){
  .gl-app{grid-template-columns:minmax(0,1fr) 252px}
  .field--opponent,.field--player{grid-template-columns:92px minmax(0,1fr) 92px}
  .zone{padding:5px}
  .zone img{max-width:56px}
  .coin{width:36px;height:36px}
  .racial-coins.racial-coins--horizontal{gap:7px}
  .history-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* v6 layout correction: one-row played strips, full card zoom, taller unclipped field */
.gl-app{
  min-height:1220px;
}
.gl-board{
  grid-template-rows:32px 86px 380px 56px 380px 126px 32px;
}
.field--opponent,.field--player{
  min-height:380px;
}
.hero-row--opponent .hero-lane{grid-template-rows:43px minmax(0,1fr) 27px}
.hero-row--player .hero-lane{grid-template-rows:27px minmax(0,1fr) 43px}
.hero-card{height:250px}

/* Explicit resource stacking prevents top-field order changes or clipping. */
.field--opponent > .resource-rail:first-child,
.field--player > .resource-rail:last-child{
  display:grid;
  grid-template-rows:minmax(0,1fr) minmax(0,1fr);
  gap:10px;
}
.field--opponent > .resource-rail--compact{
  display:grid;
  grid-template-rows:118px 54px 148px;
  gap:10px;
  align-content:start;
}
.field--player > .resource-rail--compact{
  display:grid;
  grid-template-rows:148px 118px 54px;
  gap:10px;
  align-content:start;
}
.field--opponent > .resource-rail--compact .zone--legacy,
.field--player > .resource-rail--compact .zone--legacy,
.field--opponent > .resource-rail--compact .zone--mana,
.field--player > .resource-rail--compact .zone--mana,
.field--opponent > .resource-rail--compact .racial-coins,
.field--player > .resource-rail--compact .racial-coins{
  width:100%;
  height:100%;
  min-height:0;
  max-height:none;
  flex:none;
}

.right-sidebar{
  grid-template-rows:150px 535px 150px 160px;
}
.played-panel{
  padding:10px;
  grid-template-rows:auto minmax(0,1fr) auto;
  gap:6px;
}
.recent-card-strip{
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-template-rows:minmax(0,1fr);
  gap:7px;
}
.recent-card-strip button{height:100%;min-height:0}
.recent-card-strip img{height:100%;max-height:76px}
.played-actions button{min-height:28px}
.card-zoom-panel{
  min-height:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px;
  overflow:hidden;
}
.card-zoom-panel img{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  object-position:center;
  border-radius:13px;
  box-shadow:0 18px 38px rgba(0,0,0,.52);
}

@media(max-width:1450px){
  .gl-board{grid-template-rows:32px 82px 365px 56px 365px 122px 32px}
  .field--opponent,.field--player{min-height:365px}
  .hero-card{height:238px}
  .right-sidebar{grid-template-rows:145px 500px 145px 155px}
  .field--opponent > .resource-rail--compact{grid-template-rows:112px 52px 141px}
  .field--player > .resource-rail--compact{grid-template-rows:141px 112px 52px}
}
@media(max-width:1280px){
  .gl-board{grid-template-rows:32px 78px 350px 56px 350px 118px 32px}
  .field--opponent,.field--player{min-height:350px}
  .hero-card{height:225px}
  .right-sidebar{grid-template-rows:140px 465px 140px 150px}
  .field--opponent > .resource-rail--compact{grid-template-rows:106px 50px 134px}
  .field--player > .resource-rail--compact{grid-template-rows:134px 106px 50px}
}

/* v7 resource/card-count and sidebar alignment refinements */
.zone:not(.zone--mana){
  grid-template-rows:auto minmax(0,1fr);
  overflow:hidden;
}
.zone-card-stack{
  position:relative;
  width:100%;
  min-height:0;
  display:grid;
  place-items:center;
}
.zone-card-stack img{
  opacity:.58;
  filter:saturate(.9) brightness(.92);
}
.zone-card-stack b{
  position:absolute;
  inset:50% auto auto 50%;
  translate:-50% -50%;
  z-index:2;
  color:var(--gold-bright);
  font-size:25px;
  line-height:1;
  text-shadow:0 2px 4px #000,0 0 9px rgba(0,0,0,.95);
  pointer-events:none;
}
.zone--legacy{
  height:132px;
  flex-basis:132px;
  padding-top:9px;
}
.zone--legacy .zone-card-stack img{max-height:96px}
.zone--mana{
  width:96px;
  max-width:96px;
  align-self:center;
}
.racial-coins.racial-coins--horizontal{
  width:96px;
  max-width:96px;
  height:42px;
  flex-basis:42px;
  align-self:center;
  padding:4px 6px;
  gap:7px;
}
.coin{width:31px;height:31px}

/* Top-right rail mirrors the bottom-left rail across the phase bar:
   top = Legacy -> Racial Token -> Mana; bottom = Mana -> Legacy -> Racial Token. */
.field--opponent > .resource-rail--compact{
  grid-template-rows:132px 42px 138px;
}
.field--player > .resource-rail--compact{
  grid-template-rows:138px 132px 42px;
}

/* Use the spare sidebar height instead of leaving the lower page hanging.
   The 43px bottom reserve matches the board footer row + its gap, so the
   Battle Log lower border aligns with the bottom of the card-in-hand row. */
.right-sidebar{
  height:100%;
  padding-bottom:43px;
  grid-template-rows:150px minmax(0,1fr) 150px 160px;
}

@media(max-width:1450px){
  .zone--legacy{height:126px;flex-basis:126px}
  .zone--mana{width:92px;max-width:92px}
  .racial-coins.racial-coins--horizontal{width:92px;max-width:92px;height:40px;flex-basis:40px}
  .coin{width:29px;height:29px}
  .field--opponent > .resource-rail--compact{grid-template-rows:126px 40px 141px}
  .field--player > .resource-rail--compact{grid-template-rows:141px 126px 40px}
}
@media(max-width:1280px){
  .zone--legacy{height:120px;flex-basis:120px}
  .zone--mana{width:88px;max-width:88px}
  .racial-coins.racial-coins--horizontal{width:88px;max-width:88px;height:38px;flex-basis:38px}
  .coin{width:27px;height:27px}
  .field--opponent > .resource-rail--compact{grid-template-rows:120px 38px 134px}
  .field--player > .resource-rail--compact{grid-template-rows:134px 120px 38px}
}
/* Do not force an extra empty app height; board content defines the page height. */
.gl-app{min-height:0}

/* v8 — true resource mirror, played-panel order, detailed played preview,
   surrender control, and a shared lower baseline. */
.gl-app{
  position:relative;
  padding-bottom:18px;
}
.gl-app::after{
  content:"";
  position:absolute;
  left:var(--gap);
  right:var(--gap);
  bottom:7px;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(214,166,55,.32) 9%,rgba(214,166,55,.32) 91%,transparent);
  pointer-events:none;
}

/* Horizontal mirror of the player-left rail:
   player bottom = Mana -> Legacy -> Tokens;
   opponent top = Tokens -> Legacy -> Mana. */
.field--opponent > .resource-rail--compact{
  grid-template-rows:42px 132px 138px;
}
.field--player > .resource-rail--compact{
  grid-template-rows:138px 132px 42px;
}

/* Bottom-right rail reserves a dedicated surrender row beneath Main Deck. */
.field--player > .resource-rail:last-child{
  display:grid;
  grid-template-rows:minmax(0,1fr) minmax(0,1fr) 28px;
  gap:10px;
}
.surrender-button{
  width:100%;
  min-height:28px;
  border:1px solid rgba(205,62,75,.72);
  border-radius:999px;
  background:linear-gradient(180deg,rgba(99,26,38,.96),rgba(48,10,18,.96));
  color:#ffdce1;
  text-transform:uppercase;
  font-size:8px;
  font-weight:900;
  letter-spacing:.04em;
  cursor:pointer;
}
.surrender-button:hover{filter:brightness(1.12)}

/* The last sidebar border now reaches the same baseline as the player-name footer. */
.right-sidebar{
  height:100%;
  padding-bottom:0;
  align-self:stretch;
  grid-template-rows:150px minmax(0,1fr) 150px 192px;
}
.player-name--self{align-self:stretch;display:flex;align-items:center}

/* Played-card details mimic the current Local AI result window while retaining
   the card image on the left. */
.modal-played-preview{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(220px,330px) minmax(320px,1fr);
  gap:20px;
  align-items:start;
}
.modal-played-preview__card{
  min-width:0;
  display:grid;
  place-items:center;
}
.modal-played-preview__card img{
  display:block;
  max-width:100%;
  max-height:66vh;
  object-fit:contain;
  border-radius:14px;
  box-shadow:0 20px 50px rgba(0,0,0,.62);
}
.modal-played-preview__details{
  min-width:0;
  border:1px solid rgba(83,126,158,.38);
  border-radius:12px;
  background:rgba(9,21,31,.74);
  padding:16px;
  color:#dce5ec;
  font-size:13px;
  line-height:1.45;
}
.modal-played-preview__details h3{
  margin:0 0 12px;
  color:var(--gold-bright);
  font-size:18px;
}
.played-detail-section{margin-top:14px}
.played-detail-section:first-of-type{margin-top:0}
.played-detail-section strong{
  display:block;
  margin-bottom:4px;
  color:#fff;
}
.played-detail-section p{margin:0 0 4px}
.played-result-list{margin:0;padding:0;list-style:none}
.played-result-list li{margin:3px 0}
.played-result-list li::before{content:"– ";color:var(--gold-bright)}

@media(max-width:820px){
  .modal-played-preview{grid-template-columns:1fr}
  .modal-played-preview__card img{max-height:46vh}
}

@media(max-width:1450px){
  .field--opponent > .resource-rail--compact{grid-template-rows:40px 126px 141px}
  .field--player > .resource-rail--compact{grid-template-rows:141px 126px 40px}
  .right-sidebar{grid-template-rows:145px minmax(0,1fr) 145px 186px}
}
@media(max-width:1280px){
  .field--opponent > .resource-rail--compact{grid-template-rows:38px 120px 134px}
  .field--player > .resource-rail--compact{grid-template-rows:134px 120px 38px}
  .right-sidebar{grid-template-rows:140px minmax(0,1fr) 140px 180px}
}

/* v9 — active-status bubble next to HP bar.
   Attachments remain in Attachment Slots and Exhaust remains card rotation only. */
.hero-health-row{
  width:calc(100% - 18px);
  min-width:0;
  margin:1px auto;
  align-self:center;
  position:relative;
  z-index:12;
  display:grid;
  grid-template-columns:24px minmax(0,1fr);
  align-items:center;
  gap:5px;
}
.hero-health-row .hp-bar{
  width:100%;
  min-width:0;
  margin:0;
}
.status-control{
  position:relative;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
}
.status-trigger{
  width:24px;
  height:24px;
  padding:0;
  display:grid;
  place-items:center;
  border:1px solid rgba(214,166,55,.72);
  border-radius:50%;
  background:rgba(2,8,12,.94);
  color:#fff4c0;
  font-size:13px;
  font-weight:1000;
  line-height:1;
  cursor:help;
  box-shadow:0 4px 10px rgba(0,0,0,.36);
}
.status-control.is-empty .status-trigger{
  opacity:.42;
  border-color:rgba(147,158,168,.42);
  color:#aeb7bf;
}
.status-trigger:focus-visible{
  outline:2px solid rgba(244,213,125,.88);
  outline-offset:2px;
}
.status-bubble{
  position:absolute;
  left:0;
  z-index:80;
  width:max-content;
  min-width:132px;
  max-width:190px;
  padding:9px 10px;
  display:grid;
  gap:5px;
  border:1px solid rgba(214,166,55,.48);
  border-radius:9px;
  background:rgba(3,10,15,.98);
  color:#dce5eb;
  box-shadow:0 14px 30px rgba(0,0,0,.62);
  font-size:10px;
  line-height:1.25;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(3px);
  transition:opacity .12s ease,transform .12s ease,visibility .12s ease;
}
.hero-row--opponent .status-bubble{
  bottom:calc(100% + 7px);
}
.hero-row--player .status-bubble{
  top:calc(100% + 7px);
}
.status-bubble::after{
  content:"";
  position:absolute;
  left:7px;
  width:8px;
  height:8px;
  background:rgba(3,10,15,.98);
  border-right:1px solid rgba(214,166,55,.48);
  border-bottom:1px solid rgba(214,166,55,.48);
}
.hero-row--opponent .status-bubble::after{
  bottom:-5px;
  transform:rotate(45deg);
}
.hero-row--player .status-bubble::after{
  top:-5px;
  transform:rotate(225deg);
}
.status-bubble strong{
  color:var(--gold-bright);
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.status-bubble span{
  display:block;
  padding:4px 6px;
  border-radius:5px;
  background:rgba(255,255,255,.035);
}
.status-bubble .status-negative{
  color:#ff9ba4;
  border:1px solid rgba(221,73,88,.35);
  background:rgba(70,12,20,.58);
}
.status-bubble .status-positive{
  color:#8ff0ad;
  border:1px solid rgba(74,213,116,.32);
  background:rgba(5,44,18,.52);
}
.status-control:hover .status-bubble,
.status-control:focus-within .status-bubble,
.status-control.is-open .status-bubble{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translateY(0);
}

/* Legacy prototype elements are intentionally hidden after the status redesign. */
.info-dot,.status-stack{display:none!important}

/* v9.1 — detached Racial Token dock and equal-sized resource zones.
   Mana Pool, Legacy Deck, Main Deck, and Discard Pile share one footprint.
   The token dock occupies its own narrow outside column and never widens Mana. */
.gl-board{
  grid-template-rows:32px 86px 334px 56px 334px 126px 32px;
}
.field--opponent,
.field--player{
  min-height:334px;
}
.field--opponent{
  grid-template-columns:96px minmax(0,1fr) 140px;
}
.field--player{
  grid-template-columns:140px minmax(0,1fr) 96px;
}
.hero-card{height:220px}

.resource-cluster{
  min-width:0;
  min-height:0;
  display:grid;
  align-items:center;
  gap:10px;
}
.resource-cluster--player{grid-template-columns:34px 96px}
.resource-cluster--opponent{grid-template-columns:96px 34px}

.resource-rail--paired,
.field--opponent > .resource-rail:first-child{
  display:grid;
  grid-template-rows:132px 132px;
  gap:10px;
  align-content:center;
}
.field--player > .resource-rail:last-child{
  display:grid;
  grid-template-rows:132px 132px 28px;
  gap:10px;
  align-content:center;
}

.zone--mana,
.zone--legacy,
.zone--card,
.zone--discard{
  width:96px;
  max-width:96px;
  min-height:132px;
  height:132px;
  max-height:132px;
  flex:none;
  align-self:center;
}
.zone--mana img{max-height:62px}
.zone--legacy .zone-card-stack img,
.zone--card .zone-card-stack img,
.zone--discard .zone-card-stack img{max-height:94px}

.racial-coins.racial-coins--detached{
  width:34px;
  min-width:34px;
  height:auto;
  min-height:78px;
  padding:6px 3px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:7px;
  border:1px solid var(--line-soft);
  border-radius:999px;
  background:linear-gradient(180deg,rgba(10,18,26,.92),rgba(2,7,12,.9));
}
.racial-coins--detached .coin{
  width:26px;
  height:26px;
  flex:0 0 26px;
}

@media(max-width:1450px){
  .gl-board{grid-template-rows:32px 82px 322px 56px 322px 122px 32px}
  .field--opponent,.field--player{min-height:322px}
  .field--opponent{grid-template-columns:92px minmax(0,1fr) 136px}
  .field--player{grid-template-columns:136px minmax(0,1fr) 92px}
  .hero-card{height:212px}
  .resource-cluster--player{grid-template-columns:34px 92px}
  .resource-cluster--opponent{grid-template-columns:92px 34px}
  .resource-rail--paired,
  .field--opponent > .resource-rail:first-child{grid-template-rows:126px 126px}
  .field--player > .resource-rail:last-child{grid-template-rows:126px 126px 28px}
  .zone--mana,.zone--legacy,.zone--card,.zone--discard{
    width:92px;max-width:92px;min-height:126px;height:126px;max-height:126px;
  }
}

@media(max-width:1280px){
  .gl-board{grid-template-rows:32px 78px 310px 56px 310px 118px 32px}
  .field--opponent,.field--player{min-height:310px}
  .field--opponent{grid-template-columns:88px minmax(0,1fr) 132px}
  .field--player{grid-template-columns:132px minmax(0,1fr) 88px}
  .hero-card{height:204px}
  .resource-cluster--player{grid-template-columns:34px 88px}
  .resource-cluster--opponent{grid-template-columns:88px 34px}
  .resource-rail--paired,
  .field--opponent > .resource-rail:first-child{grid-template-rows:120px 120px}
  .field--player > .resource-rail:last-child{grid-template-rows:120px 120px 28px}
  .zone--mana,.zone--legacy,.zone--card,.zone--discard{
    width:88px;max-width:88px;min-height:120px;height:120px;max-height:120px;
  }
  .racial-coins.racial-coins--detached{width:34px;min-width:34px;min-height:74px}
  .racial-coins--detached .coin{width:25px;height:25px;flex-basis:25px}
}

@media(max-width:1100px){
  .field--opponent{grid-template-columns:84px minmax(0,1fr) 128px}
  .field--player{grid-template-columns:128px minmax(0,1fr) 84px}
  .resource-cluster--player{grid-template-columns:34px 84px}
  .resource-cluster--opponent{grid-template-columns:84px 34px}
  .resource-rail--paired,
  .field--opponent > .resource-rail:first-child{grid-template-rows:114px 114px}
  .field--player > .resource-rail:last-child{grid-template-rows:114px 114px 28px}
  .zone--mana,.zone--legacy,.zone--card,.zone--discard{
    width:84px;max-width:84px;min-height:114px;height:114px;max-height:114px;
  }
  .hero-card{height:196px}
}

/* v9.2 — battlefield alignment and inspectable zones.
   Racial Tokens live beside Hand rows, outside both battlefields.
   All four resource zones use the same Legacy Deck footprint. */
:root{--gap:9px}
.gl-app{min-height:0}
.gl-board{
  grid-template-rows:26px 58px 285px 48px 285px 98px 26px;
  gap:var(--gap);
}
.field--opponent,
.field--player{
  min-height:285px;
  grid-template-columns:96px minmax(0,1fr) 96px;
}
.hero-card{height:184px}
.hero-row--opponent .hero-lane{grid-template-rows:40px minmax(0,1fr) 25px}
.hero-row--player .hero-lane{grid-template-rows:25px minmax(0,1fr) 40px}

/* Hand areas reserve matching side gutters so the card rows stay centered. */
.hand-area{
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-columns:72px minmax(0,1fr) 72px;
  align-items:center;
}
.hand-area .hand-row{grid-column:2;min-width:0;height:100%;padding-block:2px}
.hand-area--opponent .racial-coins--hand{grid-column:3;grid-row:1;justify-self:center}
.hand-area--player .racial-coins--hand{grid-column:1;grid-row:1;justify-self:center}
.racial-coins.racial-coins--hand{
  width:66px;
  min-width:66px;
  height:34px;
  min-height:34px;
  padding:3px 5px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  border:1px solid var(--line-soft);
  border-radius:999px;
  background:linear-gradient(180deg,rgba(10,18,26,.92),rgba(2,7,12,.9));
}
.racial-coins--hand .coin{
  width:27px;
  height:27px;
  flex:0 0 27px;
}

/* Equal two-zone rails: Legacy Deck is the size reference. */
.resource-rail,
.resource-rail--paired,
.field--opponent > .resource-rail:first-child,
.field--player > .resource-rail:last-child{
  display:grid;
  grid-template-rows:120px 120px;
  gap:10px;
  align-content:center;
}
.zone--mana,
.zone--legacy,
.zone--card,
.zone--discard{
  width:96px;
  max-width:96px;
  min-height:120px;
  height:120px;
  max-height:120px;
  flex:none;
  align-self:center;
}
.zone--mana img{max-height:56px}
.zone--legacy .zone-card-stack img,
.zone--card .zone-card-stack img,
.zone--discard .zone-card-stack img{max-height:82px}
.zone[data-open-discard],
.zone[data-open-legacy]{cursor:pointer}
.zone[data-open-discard]:hover,
.zone[data-open-legacy]:hover{
  border-color:rgba(244,213,125,.72);
  filter:brightness(1.08);
}

/* Status icon is colored only when the Hero has a real status. */
.status-control:not(.is-empty) .status-trigger{
  border-color:#f0bd42;
  background:linear-gradient(180deg,#f2c74f,#b87a08);
  color:#071018;
  box-shadow:0 0 0 2px rgba(240,189,66,.12),0 5px 12px rgba(0,0,0,.42);
}
.status-control.is-empty .status-trigger{
  opacity:1;
  border-color:rgba(139,151,161,.34);
  background:transparent;
  color:rgba(174,183,191,.52);
  box-shadow:none;
}

/* Surrender is outside the battlefield, at the lower-left of Battle Log. */
.battle-log-actions{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(78px,.72fr) minmax(0,1.28fr);
  gap:8px;
}
.battle-log-actions .surrender-button,
.battle-log-actions .full-log-button{
  width:100%;
  min-height:30px;
}

/* Public Discard and private own-Legacy inspection windows. */
.zone-modal-note{
  margin:0 0 14px;
  padding:9px 11px;
  border:1px solid rgba(83,126,158,.32);
  border-radius:8px;
  background:rgba(9,21,31,.7);
  color:#cbd7df;
  font-size:11px;
  line-height:1.4;
}
.zone-card-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:12px;
}
.zone-card-grid button{
  min-width:0;
  border:0;
  padding:0;
  background:none;
  cursor:pointer;
}
.zone-card-grid img{
  display:block;
  width:100%;
  aspect-ratio:.68;
  object-fit:contain;
  border-radius:8px;
  box-shadow:0 8px 20px rgba(0,0,0,.42);
  transition:transform .14s ease,filter .14s ease;
}
.zone-card-grid button:hover img{transform:translateY(-3px);filter:brightness(1.08)}

/* Sidebar follows the compact v9.2 board height. */
.right-sidebar{
  height:100%;
  grid-template-rows:132px minmax(0,1fr) 132px 166px;
}
.recent-card-strip img{max-height:66px}

@media(max-width:1450px){
  .gl-board{grid-template-rows:26px 56px 278px 48px 278px 94px 26px}
  .field--opponent,.field--player{min-height:278px;grid-template-columns:92px minmax(0,1fr) 92px}
  .hero-card{height:178px}
  .zone--mana,.zone--legacy,.zone--card,.zone--discard{width:92px;max-width:92px;min-height:116px;height:116px;max-height:116px}
  .resource-rail,.resource-rail--paired,.field--opponent > .resource-rail:first-child,.field--player > .resource-rail:last-child{grid-template-rows:116px 116px}
  .right-sidebar{grid-template-rows:128px minmax(0,1fr) 128px 160px}
}
@media(max-width:1280px){
  .gl-board{grid-template-rows:26px 54px 270px 46px 270px 90px 26px}
  .field--opponent,.field--player{min-height:270px;grid-template-columns:88px minmax(0,1fr) 88px}
  .hero-card{height:170px}
  .hand-area{grid-template-columns:66px minmax(0,1fr) 66px}
  .racial-coins.racial-coins--hand{width:62px;min-width:62px}
  .racial-coins--hand .coin{width:25px;height:25px;flex-basis:25px}
  .zone--mana,.zone--legacy,.zone--card,.zone--discard{width:88px;max-width:88px;min-height:112px;height:112px;max-height:112px}
  .resource-rail,.resource-rail--paired,.field--opponent > .resource-rail:first-child,.field--player > .resource-rail:last-child{grid-template-rows:112px 112px}
  .zone-card-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .right-sidebar{grid-template-rows:124px minmax(0,1fr) 124px 156px}
}
@media(max-width:1100px){
  .zone-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* Keep compact tracks from expanding through intrinsic card/button heights. */
.player-name{
  height:26px;
  min-height:26px;
  padding:3px 18px;
  align-items:center;
}
.hand-area--opponent .opponent-hand img{width:42px;max-height:54px}
.hand-area--player .hand-card{flex-basis:60px;height:88px}
.hand-area--player .player-hand{min-height:0;overflow:hidden}
.gl-board,.right-sidebar{height:880px;min-height:0;align-self:start}
@media(max-width:1450px){.gl-board,.right-sidebar{height:860px}}
@media(max-width:1280px){.gl-board,.right-sidebar{height:836px}}
:root{--gap:8px}
.gl-board{grid-template-rows:26px 58px 285px 47px 285px 98px 26px}
.gl-board,.right-sidebar{height:873px}
@media(max-width:1450px){.gl-board,.right-sidebar{height:853px}}
@media(max-width:1280px){.gl-board,.right-sidebar{height:829px}}

/* v9.3 hover-preview lock; v9.4 Mana-number sizing and no-wrap lock. */
.zone--mana{
  grid-template-rows:auto minmax(0,1fr) auto;
  overflow:hidden;
}
.zone--mana .zone-card-stack{height:100%}
.zone--mana .zone-card-stack img{
  max-height:56px;
  opacity:.58;
  filter:saturate(.9) brightness(.92);
}
.zone--mana .zone-card-stack b{
  font-size:20px;
  line-height:1;
  white-space:nowrap;
  width:max-content;
  max-width:calc(100% - 8px);
  inset:50% auto auto 50%;
  translate:-50% -50%;
}

/* Cards inside inspection/history popups receive a true hover zoom without
   changing the modal layout or opening another gameplay action. */
.hover-card-zoom{
  position:fixed;
  inset:auto auto 0 0;
  z-index:1200;
  width:min(260px,24vw);
  max-height:72vh;
  pointer-events:none;
  transform:translate3d(-9999px,-9999px,0);
  opacity:0;
  transition:opacity .1s ease;
}
.hover-card-zoom[hidden]{display:none}
.hover-card-zoom.is-visible{opacity:1}
.hover-card-zoom img{
  display:block;
  width:100%;
  max-height:72vh;
  object-fit:contain;
  border-radius:12px;
  border:1px solid rgba(244,213,125,.55);
  background:#03080c;
  box-shadow:0 22px 58px rgba(0,0,0,.78),0 0 0 3px rgba(214,166,55,.08);
}
.zone-card-grid button,
.history-grid button{position:relative}
.zone-card-grid button:focus-visible,
.history-grid button:focus-visible{outline:2px solid var(--gold-bright);outline-offset:3px}
.hover-card-zoom{inset:0 auto auto 0}


/* Runtime DOM integration. The v4.0 animation queue and mandatory modals remain active. */
.v94-app{min-width:0!important;min-height:100vh!important;padding:0!important;background:transparent!important;overflow:visible!important}
.v94-app .gl-app{max-width:1600px}
.v94-app .field{padding:0!important;overflow:visible!important}
.v94-app .hero-row{padding:7px!important}
.v94-app .hero-lane{padding:0!important;border-radius:0!important}
.v94-app .hero-card{display:block;background:transparent;border:0;padding:0;cursor:pointer}
.v94-app .hero-main{display:block;width:100%;height:100%;background:transparent;border:0;padding:0;cursor:pointer}
.v94-app .hero-stage .heroImg{display:block;width:100%;height:100%;max-width:none;object-fit:contain;border-radius:10px}
.v94-app .hero-stage .heroImg.exhausted-card{transform:rotate(-90deg) scale(.78)}
.v94-app .hero-info-button{position:absolute;left:7px;top:50%;translate:0 -50%;width:24px;height:24px;border:1px solid rgba(214,166,55,.48);border-radius:50%;background:rgba(2,8,12,.88);color:#fff;font-weight:900;cursor:pointer;z-index:8}
.v94-app .heroActions{position:absolute;right:4px;top:4px;z-index:18;display:flex;flex-direction:column;gap:3px;max-width:110px}
.v94-app .heroActions:empty{display:none}
.v94-app .actionBtn{font-size:7px;padding:3px 5px;border-radius:6px;white-space:normal;line-height:1.05}
.v94-app .attachment-row .slot{height:auto!important;min-height:0!important;padding:0!important}
.v94-app .attachment-row .slot.filled button{padding:2px!important}
.v94-app .attachment-row .slot.filled img{height:30px;width:21px}
.v94-app .attachment-row .slot.filled span{font-size:7px;line-height:1.05;text-transform:none}
.v94-app .legacy-health .hp-bar{display:grid;place-items:center;color:var(--gold-bright)}
.v94-app .handPanel{min-width:0;height:100%;overflow:hidden}
.v94-app .handCards{height:100%;display:flex;align-items:center;justify-content:center;gap:7px;overflow:hidden;padding:2px 4px}
.v94-app .hand-card{position:relative;display:block;padding:0;background:transparent;border:0;min-width:56px;width:60px;height:88px;flex:0 1 60px;overflow:visible}
.v94-app .hand-card .hand-art{display:block;width:100%;height:100%;padding:0;border:0;background:transparent}
.v94-app .hand-card .hand-art img{display:block;width:100%;height:100%;object-fit:contain;border-radius:7px}
.v94-app .hand-card .hand-actions{position:absolute;left:0;right:0;bottom:0;z-index:4;display:flex;gap:2px;opacity:0;transition:opacity .12s ease}
.v94-app .hand-card:hover .hand-actions,.v94-app .hand-card:focus-within .hand-actions{opacity:1}
.v94-app .hand-card .mini-action{min-width:0;margin:0;padding:2px 3px;font-size:7px;background:rgba(4,10,16,.94)}
.v94-app .strip,.v94-app .backs{height:100%;min-height:0;margin:0!important}
.v94-app .opponent-hand{display:flex;align-items:center;justify-content:center;gap:7px}
.v94-app .zone{box-sizing:border-box!important;margin:0!important;cursor:default}
.v94-app .zone[data-discard-side],.v94-app .zone[data-legacy-side]{cursor:pointer}
.v94-app .zone[aria-disabled="true"]{pointer-events:none}
.v94-app .zoneCard{width:100%!important;height:100%!important;max-width:none!important;position:relative;display:grid;place-items:center;background:transparent!important;border:0!important}
.v94-app .zoneCard img{display:block;max-width:66px;max-height:82px;object-fit:contain;opacity:.58;filter:saturate(.9) brightness(.92)}
.v94-app .zoneCard b{position:absolute;left:50%;top:50%;translate:-50% -50%;font-size:25px;line-height:1;white-space:nowrap;color:var(--gold-bright);text-shadow:0 2px 4px #000,0 0 9px #000}
.v94-app .zone--mana .zoneCard b{font-size:20px!important;white-space:nowrap!important;width:max-content;max-width:calc(100% - 8px)}
.v94-app .zone--mana .zoneCard img{opacity:.58!important}
.v94-app .phase-bar.controls{margin:0!important;min-height:0!important}
.v94-app .phase-actions{grid-template-columns:minmax(78px,108px) minmax(94px,132px);align-items:center}
.v94-app .phase-actions .cancel-action{grid-column:1/-1;height:22px;border:1px solid rgba(255,91,114,.55);border-radius:7px;background:rgba(80,18,30,.85);color:#ffd9df;font-size:8px;font-weight:800}
.v94-app .played-empty{grid-column:1/-1;display:grid;place-items:center;color:var(--muted);font-size:9px}
.v94-app .recent-card-strip{grid-template-rows:minmax(0,1fr)!important}
.v94-app .played-card{border:0;background:transparent;padding:0;cursor:pointer}
.v94-app .player-footer{height:26px;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.v94-app .player-footer .player-name{height:26px;margin:0}
.v94-app .footer-utility{display:flex;gap:6px;align-items:center;height:100%}
.v94-app .footer-utility button{height:24px;border:1px solid rgba(81,128,165,.45);border-radius:7px;background:rgba(3,8,13,.75);color:#dbe7ef;font-size:7px;font-weight:800;text-transform:uppercase;padding:0 8px}
.v94-app .surrender-button{min-height:30px}
.v94-app .played-detail-layout{display:grid;grid-template-columns:minmax(180px,280px) minmax(260px,1fr);gap:18px;align-items:start}
.v94-app .played-detail-card{display:grid;place-items:center}
.v94-app .played-detail-card img{max-width:100%;max-height:65vh;object-fit:contain;border-radius:12px}
.v94-app .played-detail-copy{border:1px solid rgba(83,126,158,.38);border-radius:12px;background:rgba(9,21,31,.74);padding:14px}
.v94-app .played-detail-copy h3{margin:0 0 12px;color:var(--gold-bright)}
.v94-app .played-detail-copy p,.v94-app .played-detail-copy ul{margin:4px 0 10px}
.played-history-grid,.inspect-card-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px}
.played-history-grid button,.inspect-card-grid button{min-width:0;border:0;background:transparent;color:#fff;padding:0;cursor:pointer}
.played-history-grid img,.inspect-card-grid img{display:block;width:100%;aspect-ratio:.68;object-fit:contain;border-radius:8px}
.played-history-grid span,.inspect-card-grid span{display:block;font-size:9px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.choice-instruction{color:#cbd7df;font-size:11px;line-height:1.4}
.info-body .played-detail-layout{display:grid;grid-template-columns:minmax(180px,280px) minmax(260px,1fr);gap:18px}
.info-body .played-detail-card img{display:block;max-width:100%;max-height:65vh;object-fit:contain;border-radius:12px}
.info-body .played-detail-copy{border:1px solid rgba(83,126,158,.38);border-radius:12px;background:rgba(9,21,31,.74);padding:14px}
.hover-card-zoom{z-index:1700!important}
.modal-overlay,.overlay{z-index:1500}
.gl-animation-layer{z-index:1800}
@media(max-width:1280px){.played-history-grid,.inspect-card-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.v94-app .handCards{gap:4px}.v94-app .hand-card{width:56px;flex-basis:56px}}


/* v5.1 inherited QA correction: neutralize legacy Local AI intrinsic sizing inside v9.4 tracks. */
.v94-app .strip.v94-strip{display:block!important;width:100%!important;height:100%!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;overflow:visible!important}
.v94-app .strip.v94-strip .backs{display:flex!important;width:100%!important;max-width:none!important;height:100%!important;justify-content:center!important;align-items:center!important;gap:7px!important;overflow:hidden!important}
.v94-app .strip.v94-strip .back{position:static!important;transform:none!important;margin:0!important;width:42px!important;height:54px!important;max-height:54px!important;flex:0 0 42px!important;object-fit:contain!important}
.v94-app .hero-stage{grid-template-rows:minmax(0,1fr)!important}
.v94-app .hero-card.hero-main{width:auto!important;height:184px!important;max-height:184px!important;aspect-ratio:.68!important;justify-self:center!important;align-self:center!important}
.v94-app .hero-card.hero-main .heroImg{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important}
@media(max-width:1450px){.v94-app .hero-card.hero-main{height:178px!important;max-height:178px!important}}
@media(max-width:1280px){.v94-app .hero-card.hero-main{height:170px!important;max-height:170px!important}}
.v94-app .hand-area .v94-strip{grid-column:2!important;grid-row:1!important;width:100%!important;min-width:0!important}

/* v5.1 UI correction lock — top utilities, compact phase tracker, 90% Hero art,
   120% Racial Tokens, external hand actions, no status exclamation. */
.v94-app .player-name--opponent{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.v94-app .player-name--opponent>div:first-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v94-app .top-utility{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.v94-app .top-utility button{
  height:22px;
  padding:0 8px;
  border:1px solid rgba(81,128,165,.45);
  border-radius:7px;
  background:rgba(3,8,13,.75);
  color:#dbe7ef;
  font-size:7px;
  font-weight:900;
  text-transform:uppercase;
  cursor:pointer;
}
.v94-app .player-footer{justify-content:flex-start}
.v94-app .footer-utility{display:none!important}

.v94-app .phase-bar{padding:5px 10px;grid-template-columns:145px minmax(0,1fr) 250px}
.v94-app .phase-list{gap:6px;grid-template-columns:repeat(5,minmax(72px,1fr));align-items:center}
.v94-app .phase-list button{
  height:30px;
  min-height:30px;
  padding:0 7px;
  font-size:10px;
  font-weight:900;
  letter-spacing:.035em;
}
.v94-app .reposition,.v94-app .next-phase{height:34px;font-size:9px}
.v94-app .phase-actions{grid-template-columns:minmax(78px,108px) minmax(94px,132px);gap:5px 9px}
.v94-app .phase-actions .cancel-action{
  display:block;
  grid-column:1/-1;
  height:20px;
  min-height:20px;
  font-size:8px;
}
.v94-app .phase-actions .cancel-action:disabled{opacity:.32;cursor:not-allowed}

/* Remove the former status exclamation and let HP consume the whole row. */
.v94-app .hero-health-row{grid-template-columns:minmax(0,1fr);gap:0}
.v94-app .status-control,.v94-app .status-trigger,.v94-app .status-bubble{display:none!important}

/* Locked request: Hero cards at 90% of the v9.4 integration size. */
.v94-app .hero-card.hero-main{height:166px!important;max-height:166px!important}
@media(max-width:1450px){.v94-app .hero-card.hero-main{height:160px!important;max-height:160px!important}}
@media(max-width:1280px){.v94-app .hero-card.hero-main{height:153px!important;max-height:153px!important}}

/* Locked request: Racial Tokens at 120% of the v9.4 size. */
.racial-coins.racial-coins--hand{width:80px;min-width:80px;height:42px;min-height:42px;padding:3px 5px}
.racial-coins--hand .coin{width:32px;height:32px;flex:0 0 32px;padding:0;border:0;background:transparent}
.hand-area{grid-template-columns:84px minmax(0,1fr) 84px}
@media(max-width:1280px){
  .hand-area{grid-template-columns:78px minmax(0,1fr) 78px}
  .racial-coins.racial-coins--hand{width:74px;min-width:74px;height:39px;min-height:39px}
  .racial-coins--hand .coin{width:30px;height:30px;flex-basis:30px}
}

/* Play/Tribute controls live below the card image; never cover the artwork. */
.v94-app .hand-card{
  height:92px;
  display:grid;
  grid-template-rows:minmax(0,1fr) 17px;
  gap:2px;
  align-items:stretch;
  overflow:visible;
}
.v94-app .hand-card .hand-art{grid-row:1;height:100%;min-height:0}
.v94-app .hand-card .hand-actions{
  position:static;
  grid-row:2;
  display:flex;
  align-items:stretch;
  gap:2px;
  min-height:17px;
  margin:0;
  opacity:1;
  z-index:4;
}
.v94-app .hand-card .mini-action{
  height:17px;
  min-height:17px;
  padding:1px 3px;
  font-size:7px;
  line-height:1;
}

/* Preserve Local AI v4 visual card flight over the v9.4 battlefield. */
.gl-animation-layer{display:block!important;position:fixed!important;inset:0!important;z-index:2400!important;pointer-events:none!important;overflow:hidden!important}
.gl-flying-card{z-index:2401!important;opacity:1}

/* v5.1 compact three-button phase action row. */
.v94-app .phase-actions{grid-template-columns:72px 92px 76px;gap:5px;align-items:center}
.v94-app .phase-actions .reposition,
.v94-app .phase-actions .next-phase,
.v94-app .phase-actions .cancel-action{grid-column:auto;height:30px;min-height:30px;font-size:8px;padding:0 4px}


/* v5.2 UI refinement — no right sidebar, global hover zoom, played-card docks
   inside the Player Hand band, bottom Battle Log, and status-only HP icon. */
.v94-app .gl-app{
  grid-template-columns:minmax(0,1fr)!important;
  max-width:1600px!important;
  padding-bottom:10px!important;
}
.v94-app .right-sidebar,.v94-app .card-zoom-panel{display:none!important}
.v94-app .gl-board{
  width:100%;
  height:auto!important;
  grid-template-rows:26px 56px 255px 47px 255px 104px 26px 44px!important;
  align-self:start;
}
.v94-app .field--opponent,.v94-app .field--player{min-height:255px!important}
.v94-app .hero-info-button{display:none!important}

/* Keep the correct status indicator beside the HP bar. It is neutral without a
   real status and colored only while at least one visible status exists. */
.v94-app .hero-health-row{grid-template-columns:24px minmax(0,1fr)!important;gap:5px!important}
.v94-app .status-control{display:grid!important}
.v94-app .status-trigger{display:grid!important}
.v94-app .status-bubble{display:grid!important}
.v94-app .status-control.is-empty .status-trigger{
  border-color:rgba(139,151,161,.34)!important;
  background:transparent!important;
  color:rgba(174,183,191,.52)!important;
  box-shadow:none!important;
}
.v94-app .status-control:not(.is-empty) .status-trigger{
  border-color:#f0bd42!important;
  background:linear-gradient(180deg,#f2c74f,#b87a08)!important;
  color:#071018!important;
  box-shadow:0 0 0 2px rgba(240,189,66,.12),0 5px 12px rgba(0,0,0,.42)!important;
}

.hand-stage-v52{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(190px,238px) minmax(0,1fr) minmax(190px,238px);
  gap:8px;
  align-items:stretch;
}
.hand-stage-v52>.hand-area{min-width:0;height:100%}
.played-dock-panel{
  min-width:0;
  height:100%;
  display:grid;
  grid-template-rows:24px minmax(0,1fr);
  border:1px solid rgba(83,126,158,.35);
  border-radius:10px;
  background:rgba(4,11,17,.88);
  padding:5px 7px;
  overflow:hidden;
}
.played-dock-head{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}
.played-dock-head h2{margin:0;color:var(--gold-bright);font-size:10px;letter-spacing:.025em;white-space:nowrap}
.played-dock-head button{
  height:20px;
  padding:0 6px;
  border:1px solid rgba(81,128,165,.42);
  border-radius:6px;
  background:rgba(9,22,33,.9);
  color:#dce8f0;
  font-size:7px;
  font-weight:900;
  text-transform:uppercase;
  cursor:pointer;
}
.played-dock-panel .recent-card-strip{
  min-width:0;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:5px;
  align-items:center;
  overflow:hidden;
}
.played-dock-panel .played-card{width:100%;height:66px;display:grid;place-items:center}
.played-dock-panel .played-card img{display:block;width:100%;height:100%;max-height:66px;object-fit:contain;border-radius:5px}
.played-dock-panel .played-empty{grid-column:1/-1;font-size:8px}

.battle-log-bottom-v52{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1fr) 244px;
  gap:10px;
  align-items:center;
  padding:5px 9px;
  border:1px solid rgba(184,153,50,.45);
  border-radius:9px;
  background:rgba(5,12,18,.94);
}
.battle-log-copy{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}
.battle-log-copy strong{color:var(--gold-bright);font-size:9px;text-transform:uppercase;letter-spacing:.045em;white-space:nowrap}
.battle-log-copy span{min-width:0;color:#e6edf2;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.battle-log-bottom-v52 .battle-log-actions{grid-template-columns:96px 140px;gap:7px}
.battle-log-bottom-v52 .battle-log-actions button{height:28px;min-height:28px;font-size:8px}

/* Hover zoom is now the only persistent card enlargement surface. */
.v94-app [data-preview]{cursor:pointer}
.hover-card-zoom{width:min(280px,23vw)!important;max-height:78vh!important}
.hover-card-zoom img{max-height:78vh!important}

@media(max-width:1450px){
  .v94-app .gl-board{grid-template-rows:26px 54px 248px 47px 248px 100px 26px 44px!important}
  .v94-app .field--opponent,.v94-app .field--player{min-height:248px!important}
  .hand-stage-v52{grid-template-columns:minmax(170px,216px) minmax(0,1fr) minmax(170px,216px)}
}
@media(max-width:1280px){
  .v94-app .gl-board{grid-template-rows:26px 52px 240px 46px 240px 96px 26px 42px!important}
  .v94-app .field--opponent,.v94-app .field--player{min-height:240px!important}
  .hand-stage-v52{grid-template-columns:minmax(150px,190px) minmax(0,1fr) minmax(150px,190px);gap:6px}
  .played-dock-panel{padding:4px 5px}
  .played-dock-panel .played-card{height:58px}
  .played-dock-panel .played-card img{max-height:58px}
  .battle-log-bottom-v52{grid-template-columns:minmax(0,1fr) 220px}
  .battle-log-bottom-v52 .battle-log-actions{grid-template-columns:84px 129px}
}

/* ========================================================================== */
/* Local AI v5.4 — approved Battlefield UI Dummy v9.6 integration            */
/* 85% battlefield / 15% controls, combined Card Played, bottom Battle Log.  */
/* ========================================================================== */
.v96-app{
  width:100vw!important;
  height:100vh!important;
  min-width:0!important;
  min-height:0!important;
  overflow:hidden!important;
}
.v96-app .gl-app{
  width:100vw!important;
  height:100vh!important;
  max-width:none!important;
  margin:0!important;
  padding:6px!important;
  display:grid!important;
  grid-template-columns:minmax(0,85fr) minmax(190px,15fr)!important;
  gap:8px!important;
  overflow:hidden!important;
}
.v96-app .main-stage,
.v96-app .control-sidebar{
  min-width:0!important;
  min-height:0!important;
  border:1px solid #17222b;
  background:linear-gradient(180deg,#020b13 0%,#030c14 100%);
}
.v96-app .main-stage{
  width:auto!important;
  height:100%!important;
  align-self:stretch!important;
  display:grid!important;
  grid-template-rows:24px 48px minmax(0,1fr) 16px minmax(0,1fr) 92px 24px 54px!important;
  gap:4px!important;
  overflow:hidden!important;
}
.v96-app .player-name{
  width:max-content!important;
  min-width:154px!important;
  height:24px!important;
  margin:0!important;
  padding:2px 16px!important;
  border:1px solid #6d5412!important;
  background:#0c1822!important;
  border-radius:0 0 10px 10px!important;
  font-size:15px!important;
  font-weight:900!important;
  letter-spacing:.5px!important;
  text-transform:uppercase!important;
  display:flex!important;
  gap:8px!important;
  align-items:center!important;
  overflow:hidden!important;
}
.v96-app .player-name span{font-size:10px!important;color:#8d98a3!important;font-weight:700!important;text-transform:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v96-app .player-name--self{align-self:end!important;border-radius:10px 10px 0 0!important}
.v96-app .hand-area{
  display:grid!important;
  grid-template-columns:96px minmax(0,1fr) 96px!important;
  align-items:center!important;
  min-width:0!important;
  min-height:0!important;
  height:100%!important;
  padding:0 6px!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
}
.v96-app .hand-spacer{min-width:0;min-height:0}
.v96-app .hand-area .v94-strip{grid-column:auto!important;grid-row:auto!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important}
.v96-app .hand-row{display:flex!important;justify-content:center!important;align-items:center!important;gap:7px!important;min-width:0!important;height:100%!important;margin:0!important}
.v96-app .strip.v94-strip .backs{height:100%!important;gap:7px!important;overflow:hidden!important}
.v96-app .strip.v94-strip .back{width:34px!important;height:46px!important;max-height:46px!important;flex:0 0 34px!important;filter:brightness(.74)}
.v96-app .racial-coins{display:flex!important;justify-content:center!important;align-items:center!important;gap:6px!important;height:100%!important;padding:0!important}
.v96-app .coin{width:31px!important;height:31px!important;min-width:31px!important;min-height:31px!important;border:0!important;background:none!important;padding:0!important}
.v96-app .coin img{width:100%!important;height:100%!important;object-fit:contain!important}
.v96-app .field{
  display:grid!important;
  grid-template-columns:92px minmax(0,1fr) 92px!important;
  gap:8px!important;
  min-width:0!important;
  min-height:0!important;
  height:100%!important;
  padding:0 6px!important;
  margin:0!important;
}
.v96-app .field--opponent,.v96-app .field--player{min-height:0!important}
.v96-app .resource-rail{
  display:grid!important;
  grid-template-rows:minmax(0,1fr) minmax(0,1fr)!important;
  gap:7px!important;
  min-width:0!important;
  min-height:0!important;
}
.v96-app .zone{
  min-width:0!important;
  min-height:0!important;
  height:auto!important;
  border:1px solid #2b281a!important;
  border-radius:10px!important;
  background:#06101a!important;
  padding:5px 4px 4px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:space-between!important;
  overflow:hidden!important;
}
.v96-app .zone--mana{border-color:#0d4b74!important;background:#061a2a!important}
.v96-app .zone>span{font-size:9px!important;font-weight:900!important;text-transform:uppercase!important;white-space:nowrap!important}
.v96-app .zone em{font-style:normal!important;font-size:7px!important;font-weight:800!important;color:#d8e4eb!important;white-space:nowrap!important}
.v96-app .zoneCard{height:calc(100% - 20px)!important;min-height:48px!important;max-height:86px!important;width:100%!important;position:relative!important;display:grid!important;place-items:center!important}
.v96-app .zoneCard img{height:100%!important;width:auto!important;max-width:72px!important;max-height:86px!important;object-fit:cover!important;border-radius:4px!important;opacity:.62!important;filter:saturate(.8)!important}
.v96-app .zoneCard b{position:absolute!important;inset:0!important;translate:none!important;display:grid!important;place-items:center!important;font-size:22px!important;line-height:1!important;color:#f4ca52!important;text-shadow:0 2px 2px #000!important;white-space:nowrap!important}
.v96-app .zone--mana .zoneCard b{font-size:18px!important}
.v96-app .zone--mana .zoneCard img{opacity:.62!important}
.v96-app .hero-row{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:8px!important;
  min-width:0!important;
  min-height:0!important;
  height:100%!important;
  border:1px solid #263017!important;
  border-radius:12px!important;
  background:#020a11!important;
  padding:5px!important;
  overflow:hidden!important;
}
.v96-app .hero-lane{
  min-width:0!important;
  min-height:0!important;
  height:100%!important;
  display:grid!important;
  grid-template-rows:35px minmax(0,1fr) 27px!important;
  gap:4px!important;
  border-right:1px solid #101b23!important;
  overflow:visible!important;
}
.v96-app .hero-row--player .hero-lane{grid-template-rows:27px minmax(0,1fr) 35px!important}
.v96-app .hero-lane:last-child{border-right:0!important}
.v96-app .attachment-row{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:5px!important;min-width:0!important;min-height:0!important}
.v96-app .attachment-row .slot{
  min-width:0!important;
  min-height:0!important;
  height:100%!important;
  display:grid!important;
  place-items:center!important;
  border:1px dashed #6e5816!important;
  border-radius:7px!important;
  color:#6f7881!important;
  font-size:7px!important;
  text-transform:uppercase!important;
  white-space:nowrap!important;
  overflow:hidden!important;
}
.v96-app .attachment-row .slot.filled button{width:100%!important;height:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:4px!important;overflow:hidden!important}
.v96-app .hero-stage{min-width:0!important;min-height:0!important;display:grid!important;place-items:center!important;overflow:visible!important}
.v96-app .hero-card.hero-main{
  width:clamp(92px,8vw,124px)!important;
  height:auto!important;
  max-width:100%!important;
  max-height:100%!important;
  aspect-ratio:.68!important;
  display:block!important;
  justify-self:center!important;
  align-self:center!important;
  border:0!important;
  background:none!important;
  padding:0!important;
}
.v96-app .hero-card.hero-main .heroImg{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border-radius:7px!important}
.v96-app .hero-card.hero-main .heroImg.exhausted-card{transform:rotate(-90deg) scale(.86)!important}
.v96-app .hero-health-row{display:grid!important;grid-template-columns:26px minmax(0,1fr)!important;gap:5px!important;align-items:center!important;padding:0 4px!important;min-width:0!important}
.v96-app .hp-bar{height:18px!important;border:1px solid #27343e!important;border-radius:999px!important;background:#02070b!important;position:relative!important;overflow:hidden!important}
.v96-app .hp-bar>span{position:absolute!important;inset:1px auto 1px 1px!important;width:var(--hp-value)!important;border-radius:999px!important;background:#37c96d!important}
.v96-app .hp-bar.is-warning>span{background:#c7a117!important}.v96-app .hp-bar.is-low>span{background:#d43b4b!important}
.v96-app .hp-bar small{position:absolute!important;inset:0!important;display:grid!important;place-items:center!important;font-size:9px!important;font-weight:900!important;text-shadow:0 1px 2px #000!important}
.v96-app .field-divider{display:flex!important;align-items:center!important;gap:10px!important;color:#4b5660!important;font-size:7px!important;text-transform:uppercase!important;letter-spacing:2px!important;padding:0 70px!important}
.v96-app .field-divider:before,.v96-app .field-divider:after{content:"";height:1px;background:#15212a;flex:1}
.v96-app .handPanel{min-width:0!important;min-height:0!important;height:100%!important;overflow:hidden!important}
.v96-app .handCards{height:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;overflow:hidden!important;padding:1px 4px!important}
.v96-app .hand-card{
  position:relative!important;
  display:grid!important;
  grid-template-rows:minmax(0,66px) 17px!important;
  gap:2px!important;
  width:60px!important;
  min-width:54px!important;
  max-width:60px!important;
  height:86px!important;
  flex:0 1 60px!important;
  padding:0!important;
  margin:0!important;
  background:transparent!important;
  border:0!important;
  overflow:visible!important;
}
.v96-app .hand-card .hand-art{grid-row:1!important;display:block!important;width:100%!important;height:66px!important;min-height:0!important;padding:0!important;border:0!important;background:transparent!important}
.v96-app .hand-card .hand-art img{display:block!important;width:100%!important;height:66px!important;object-fit:contain!important;border-radius:4px!important}
.v96-app .hand-card .hand-actions{grid-row:2!important;position:static!important;inset:auto!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:2px!important;height:17px!important;opacity:1!important;transition:none!important}
.v96-app .hand-card .mini-action{height:16px!important;min-width:0!important;margin:0!important;padding:0 4px!important;border-radius:4px!important;font-size:7px!important;line-height:1!important;background:#0a3d1e!important;border:1px solid #2f9454!important}
.v96-app .hand-card .tribute-card-action{background:#3c2d0b!important;border-color:#8f6e1c!important}
.v96-app .battle-log-strip{
  margin:0 6px!important;
  border:1px solid #23303a!important;
  border-radius:9px!important;
  background:#06111a!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 120px!important;
  gap:8px!important;
  align-items:center!important;
  padding:6px 8px!important;
  min-width:0!important;
  min-height:0!important;
}
.v96-app .battle-log-strip>div{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;gap:10px!important;align-items:center!important;min-width:0!important}
.v96-app .battle-log-strip strong{font-size:11px!important;text-transform:uppercase!important;color:#f4ca52!important;white-space:nowrap!important}
.v96-app .battle-log-strip span{font-size:9px!important;color:#aeb8c0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.v96-app .battle-log-strip button{height:30px!important;border:1px solid #2a4a60!important;border-radius:6px!important;background:#071723!important;font-size:9px!important;font-weight:900!important;text-transform:uppercase!important}
.v96-app .control-sidebar{
  display:grid!important;
  grid-template-rows:auto minmax(285px,1fr) minmax(210px,.9fr) auto!important;
  gap:7px!important;
  padding:7px!important;
  overflow:hidden!important;
}
.v96-app .control-panel{border:1px solid #3a321b!important;border-radius:11px!important;background:#06111a!important;padding:8px!important;min-width:0!important;min-height:0!important;overflow:hidden!important}
.v96-app .setup-actions{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:5px!important;width:100%!important}
.v96-app .setup-actions button,.v96-app .full-width{height:27px!important;border:1px solid #294051!important;border-radius:6px!important;background:#081824!important;font-size:8px!important;font-weight:900!important;text-transform:uppercase!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.v96-app .turn-summary{display:grid!important;gap:3px!important;margin-top:8px!important;min-width:0!important}
.v96-app .turn-summary strong{font-size:18px!important;line-height:1!important;text-transform:uppercase!important}
.v96-app .turn-summary span{font-size:9px!important;color:#b9c2c9!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.v96-app .turn-summary .turn-status{font-size:8px!important;line-height:1.2!important;color:#8d98a3!important;white-space:normal!important;display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical!important;overflow:hidden!important;margin-top:2px!important}
.v96-app .phase-panel{display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;gap:8px!important}
.v96-app .control-panel header{display:flex!important;justify-content:space-between!important;align-items:end!important;gap:5px!important;min-width:0!important}
.v96-app .control-panel header strong{font-size:12px!important;text-transform:uppercase!important;white-space:nowrap!important}
.v96-app .control-panel header span{font-size:8px!important;color:#8d98a3!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.v96-app .phase-list{display:grid!important;grid-template-columns:1fr!important;grid-template-rows:repeat(5,minmax(0,1fr))!important;gap:5px!important;min-height:0!important}
.v96-app .phase-list button,.v96-app .phase-actions button{border:1px solid #23313c!important;border-radius:7px!important;background:#06101a!important;font-size:10px!important;font-weight:900!important;text-transform:uppercase!important;min-width:0!important}
.v96-app .phase-list button.is-active{border-color:#d3a52b!important;background:linear-gradient(180deg,#60460b,#241b08)!important;color:#fff3c1!important}
.v96-app .phase-actions{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:5px!important}
.v96-app .phase-actions button{height:34px!important;min-height:0!important;padding:0 3px!important}
.v96-app .phase-actions .next-phase{border-color:#96711a!important;background:linear-gradient(180deg,#8d6a19,#3a2a09)!important}
.v96-app .phase-actions .cancel-action{grid-column:1/-1!important;border-color:#5e2931!important;background:#2a1015!important;color:#d9a5ac!important}
.v96-app .phase-actions button:disabled,.v96-app .full-width:disabled{opacity:.32!important;cursor:not-allowed!important}
.v96-app .card-played-panel{display:grid!important;grid-template-rows:auto minmax(0,1fr) 29px!important;gap:7px!important}
.v96-app .played-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important;gap:5px!important;min-height:0!important;overflow:hidden!important}
.v96-app .played-grid .combined-played-card{position:relative!important;min-width:0!important;min-height:0!important;border:1px solid #1d2b35!important;border-radius:6px!important;background:#030b12!important;padding:3px!important;cursor:pointer!important;overflow:hidden!important}
.v96-app .played-grid .combined-played-card img{width:100%!important;height:100%!important;object-fit:contain!important;min-height:0!important;border-radius:4px!important}
.v96-app .played-grid .combined-played-card em{position:absolute!important;z-index:2!important;top:2px!important;left:2px!important;padding:1px 4px!important;border-radius:3px!important;background:#091b28!important;color:#a8d8ff!important;font-size:7px!important;font-style:normal!important;font-weight:900!important;text-transform:uppercase!important}
.v96-app .played-grid .combined-played-card[data-combined-event-side="AI"] em{background:#2f1c08!important;color:#ffd781!important}
.v96-app .played-empty{grid-column:1/-1!important;display:grid!important;place-items:center!important;color:#8d98a3!important;font-size:8px!important}
.v96-app .full-width{width:100%!important}
.v96-app .match-panel{padding:0!important;border:0!important;background:none!important;overflow:visible!important}
.v96-app .surrender{width:100%!important;height:35px!important;border:1px solid #a82b40!important;border-radius:8px!important;background:#5f1320!important;font-size:10px!important;font-weight:900!important;text-transform:uppercase!important}
.combined-played-history button{position:relative!important}
.combined-played-history button em{position:absolute;z-index:2;top:4px;left:4px;padding:2px 5px;border-radius:4px;background:#091b28;color:#a8d8ff;font-size:8px;font-style:normal;font-weight:900}
.combined-played-history button[data-combined-archive-side="AI"] em{background:#2f1c08;color:#ffd781}
.hover-card-zoom{z-index:3200!important;width:min(260px,22vw)!important;max-height:74vh!important}
.hover-card-zoom img{max-height:74vh!important}
.hover-card-zoom.is-modal-zoom{z-index:3200!important;filter:drop-shadow(0 14px 34px rgba(0,0,0,.92))!important}
.hover-card-zoom.is-modal-zoom img{box-shadow:0 0 0 2px rgba(244,202,82,.72)!important;background:#02070b!important}

@media(max-height:820px){
  .v96-app .main-stage{grid-template-rows:22px 42px minmax(0,1fr) 12px minmax(0,1fr) 78px 22px 46px!important}
  .v96-app .hero-card.hero-main{width:clamp(84px,7.4vw,108px)!important}
  .v96-app .attachment-row .slot{font-size:6px!important}
  .v96-app .hand-card{height:73px!important;grid-template-rows:minmax(0,55px) 14px!important}
  .v96-app .hand-card .hand-art,.v96-app .hand-card .hand-art img{height:55px!important}
  .v96-app .hand-card .hand-actions{height:14px!important}
  .v96-app .hand-card .mini-action{height:14px!important;font-size:6px!important}
  .v96-app .control-sidebar{grid-template-rows:auto minmax(248px,1fr) minmax(176px,.78fr) auto!important}
  .v96-app .turn-summary strong{font-size:15px!important}.v96-app .turn-summary span{font-size:8px!important}
  .v96-app .phase-list button{font-size:9px!important}.v96-app .phase-actions button{height:29px!important}
  .v96-app .battle-log-strip{padding-block:4px!important}
}
@media(max-width:1450px){
  .v96-app .gl-app{grid-template-columns:minmax(0,85fr) minmax(185px,15fr)!important;gap:6px!important;padding:4px!important}
  .v96-app .field{grid-template-columns:82px minmax(0,1fr) 82px!important;gap:6px!important}
  .v96-app .zone>span{font-size:8px!important}.v96-app .zoneCard b{font-size:19px!important}.v96-app .zone--mana .zoneCard b{font-size:17px!important}
  .v96-app .hero-row{gap:5px!important}.v96-app .attachment-row .slot{font-size:6px!important}
  .v96-app .hand-card{width:56px!important;max-width:56px!important;flex-basis:56px!important}
  .v96-app .control-sidebar{padding:5px!important;gap:5px!important}.v96-app .control-panel{padding:6px!important}.v96-app .played-grid{gap:3px!important}
}


/* Local AI v5.4 — v9.6 containment, compact controls, EXP stack, and modal-hover guard. */
.v96-app .main-stage,.v96-app .control-sidebar{
  border-radius:10px!important;
  overflow:hidden!important;
}
.v96-app .field{
  overflow:hidden!important;
  padding-inline:7px!important;
}
.v96-app .resource-rail,.v96-app .hero-row,.v96-app .hero-lane{
  min-width:0!important;
  min-height:0!important;
  overflow:hidden!important;
}
.v96-app .resource-rail{gap:6px!important}
.v96-app .zone{
  position:relative!important;
  isolation:isolate!important;
  justify-content:flex-start!important;
  gap:3px!important;
  overflow:hidden!important;
  padding:5px 4px!important;
}
.v96-app .zone>span{
  width:100%!important;
  height:12px!important;
  flex:0 0 12px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  position:relative!important;
  z-index:3!important;
  line-height:1!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.v96-app .zone em{
  width:100%!important;
  height:9px!important;
  flex:0 0 9px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  position:relative!important;
  z-index:3!important;
  line-height:1!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.v96-app .zoneCard{
  flex:1 1 auto!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  width:100%!important;
  overflow:hidden!important;
  border-radius:5px!important;
  position:relative!important;
}
.v96-app .zoneCard img{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:cover!important;
  object-position:center!important;
  border-radius:5px!important;
}
.v96-app .zoneCard b{z-index:2!important}
.v96-app .hero-row{padding:5px 6px!important}
.v96-app .hero-lane{padding-inline:2px!important}
.v96-app .hero-stage{
  position:relative!important;
  overflow:hidden!important;
  padding:1px 4px!important;
}
.v96-app .hero-stage.has-exp{padding-right:36px!important}
.v96-app .hero-card.hero-main{
  width:clamp(88px,7.6vw,116px)!important;
  max-height:calc(100% - 2px)!important;
}
.v96-app .hero-card.hero-main .heroImg{
  max-width:100%!important;
  max-height:100%!important;
  object-fit:contain!important;
}
.v96-app .hero-exp-stack{
  position:absolute!important;
  z-index:5!important;
  right:4px!important;
  top:50%!important;
  translate:0 -50%!important;
  width:31px!important;
  height:88px!important;
  pointer-events:none!important;
}
.v96-app .hero-exp-card{
  position:absolute!important;
  z-index:calc(10 + var(--exp-order))!important;
  right:var(--exp-right)!important;
  top:var(--exp-top)!important;
  width:24px!important;
  height:68px!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  border:1px solid #7e6724!important;
  border-radius:4px!important;
  background:#080b0e!important;
  box-shadow:0 3px 9px rgba(0,0,0,.62)!important;
  pointer-events:auto!important;
  cursor:pointer!important;
}
.v96-app .hero-exp-card img{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  opacity:.38!important;
  filter:saturate(.72) brightness(.68)!important;
}
.v96-app .hero-exp-card span{
  position:absolute!important;
  inset:3px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  writing-mode:vertical-rl!important;
  transform:rotate(180deg)!important;
  color:#fff!important;
  font-size:7px!important;
  font-weight:1000!important;
  letter-spacing:.3px!important;
  text-shadow:0 1px 3px #000!important;
  white-space:nowrap!important;
}
.v96-app .hero-exp-total{
  position:absolute!important;
  z-index:30!important;
  right:0!important;
  bottom:0!important;
  padding:1px 3px!important;
  border:1px solid #8c7120!important;
  border-radius:4px!important;
  background:#171205!important;
  color:#f4ca52!important;
  font-size:6px!important;
  font-style:normal!important;
  font-weight:900!important;
  white-space:nowrap!important;
}
.v96-app .hero-exp-more{
  position:absolute!important;
  z-index:31!important;
  right:0!important;
  top:0!important;
  min-width:14px!important;
  height:14px!important;
  display:grid!important;
  place-items:center!important;
  border-radius:999px!important;
  background:#d3a52b!important;
  color:#100c02!important;
  font-size:7px!important;
}
.v96-app .control-sidebar{
  grid-template-rows:auto auto minmax(0,1fr) auto!important;
  gap:6px!important;
}
.v96-app .control-panel{padding:7px!important}
.v96-app .setup-actions button,.v96-app .full-width{height:24px!important;font-size:7px!important}
.v96-app .turn-summary{margin-top:6px!important;gap:2px!important}
.v96-app .turn-summary strong{font-size:16px!important}
.v96-app .phase-panel{
  grid-template-rows:auto auto auto!important;
  gap:6px!important;
  align-content:start!important;
}
.v96-app .phase-list{
  grid-template-rows:repeat(5,28px)!important;
  gap:4px!important;
}
.v96-app .phase-list button{
  height:28px!important;
  min-height:28px!important;
  padding:0 4px!important;
  font-size:9px!important;
}
.v96-app .phase-actions button{
  height:27px!important;
  min-height:27px!important;
  font-size:8px!important;
}
.v96-app .card-played-panel{min-height:0!important}
body:has(.modal-overlay.open) .hover-card-zoom:not(.is-modal-zoom),
body:has(.overlay.open) .hover-card-zoom:not(.is-modal-zoom){display:none!important}
@media(max-height:820px){
  .v96-app .hero-card.hero-main{width:clamp(80px,7vw,102px)!important}
  .v96-app .hero-exp-stack{height:76px!important;width:28px!important}
  .v96-app .hero-exp-card{width:22px!important;height:58px!important}
  .v96-app .phase-list{grid-template-rows:repeat(5,24px)!important}
  .v96-app .phase-list button{height:24px!important;min-height:24px!important;font-size:8px!important}
  .v96-app .phase-actions button{height:24px!important;min-height:24px!important}
}
/* v5.4 resource-zone stretch correction: fill each assigned rail track while remaining clipped. */
.v96-app .resource-rail>.zone{
  align-self:stretch!important;
  justify-self:stretch!important;
  width:100%!important;
  max-width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
}

/* Local AI v5.8 — click zoom, compact counters/status, unclipped Hand, layered EXP, shorter slots. */
.v96-app .main-stage{
  grid-template-rows:24px 48px minmax(0,1fr) 16px minmax(0,1fr) 104px 24px 38px!important;
}
/* Resource values stay centered and no longer dominate the card art. */
.v96-app .zoneCard b{
  font-size:17px!important;
  line-height:1!important;
  text-align:center!important;
}
.v96-app .zone--mana .zoneCard b{font-size:15px!important}
/* Make the status control fit inside its colored circle without clipping. */
.v96-app .hero-health-row{
  grid-template-columns:20px minmax(0,1fr)!important;
  gap:4px!important;
  overflow:visible!important;
}
.v96-app .status-control,
.v96-app .status-trigger{
  width:19px!important;
  height:19px!important;
  min-width:19px!important;
  min-height:19px!important;
}
.v96-app .status-trigger{
  font-size:10px!important;
  line-height:19px!important;
  border-width:1px!important;
  box-shadow:0 2px 6px rgba(0,0,0,.34)!important;
}
/* Shorter Attachment bands leave more room for the Hero and Hand. */
.v96-app .hero-lane{grid-template-rows:28px minmax(0,1fr) 25px!important}
.v96-app .hero-row--player .hero-lane{grid-template-rows:25px minmax(0,1fr) 28px!important}
.v96-app .attachment-row .slot{border-radius:6px!important}
/* EXP cards are layered underneath the Hero card, like a physical stack. */
.v96-app .hero-stage.has-exp{padding-right:4px!important}
.v96-app .hero-card.hero-main{position:relative!important;z-index:30!important}
.v96-app .hero-exp-stack{
  position:absolute!important;
  z-index:6!important;
  inset:50% auto auto 50%!important;
  translate:-50% -50%!important;
  width:clamp(88px,7.6vw,116px)!important;
  height:calc(100% - 2px)!important;
  pointer-events:none!important;
}
.v96-app .hero-exp-card{
  left:calc(50% + var(--exp-right))!important;
  right:auto!important;
  top:calc(50% + var(--exp-top))!important;
  transform:translate(-50%,-50%)!important;
  width:92%!important;
  height:auto!important;
  aspect-ratio:.68!important;
  z-index:calc(6 + var(--exp-order))!important;
  border-color:#7b6320!important;
  pointer-events:auto!important;
}
.v96-app .hero-exp-card img{
  opacity:.72!important;
  filter:saturate(.78) brightness(.66)!important;
}
.v96-app .hero-exp-card span{
  inset:auto 2px 3px auto!important;
  width:auto!important;
  height:auto!important;
  display:block!important;
  writing-mode:vertical-rl!important;
  transform:rotate(180deg)!important;
  font-size:6px!important;
  background:rgba(0,0,0,.55)!important;
  border-radius:3px!important;
  padding:2px 1px!important;
}
.v96-app .hero-exp-total{right:-1px!important;bottom:-1px!important;z-index:34!important}
.v96-app .hero-exp-more{right:-2px!important;top:-2px!important;z-index:35!important}
/* Hand cards get enough vertical room; playable borders are drawn inside the art. */
.v96-app .handPanel,
.v96-app .handCards{overflow:visible!important}
.v96-app .handCards{padding:4px!important}
.v96-app .hand-card{
  height:96px!important;
  grid-template-rows:minmax(0,76px) 17px!important;
}
.v96-app .hand-card .hand-art,
.v96-app .hand-card .hand-art img{height:76px!important}
.v96-app .hand-card.playable,
.v96-app .hand-card.tributeable,
.v96-app .hand-card.playable.tributeable{
  border:0!important;
  box-shadow:none!important;
}
.v96-app .hand-card.playable .hand-art{
  border:1px solid #27b86a!important;
  border-radius:6px!important;
  padding:1px!important;
}
.v96-app .hand-card.tributeable .hand-art{
  box-shadow:inset 0 0 0 1px rgba(213,175,62,.95)!important;
}
/* Battle Log becomes one safe button, freeing vertical room for Hand cards. */
.v96-app .battle-log-strip{
  grid-template-columns:1fr!important;
  padding:4px 6px!important;
}
.v96-app .battle-log-strip>div{display:none!important}
.v96-app .battle-log-strip button{
  width:100%!important;
  height:27px!important;
  justify-self:stretch!important;
}
/* Click-only card zoom. The same layer closes when clicked or with Escape. */
.hover-card-zoom.is-click-zoom{
  position:fixed!important;
  inset:0!important;
  width:auto!important;
  max-width:none!important;
  max-height:none!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:24px!important;
  background:rgba(0,0,0,.78)!important;
  pointer-events:auto!important;
  transform:none!important;
  opacity:1!important;
  cursor:zoom-out!important;
  z-index:4000!important;
}
.hover-card-zoom.is-click-zoom img{
  width:auto!important;
  max-width:min(360px,78vw)!important;
  height:auto!important;
  max-height:86vh!important;
  object-fit:contain!important;
  border-radius:12px!important;
  border:1px solid rgba(244,213,125,.72)!important;
  box-shadow:0 24px 72px rgba(0,0,0,.9),0 0 0 3px rgba(214,166,55,.12)!important;
}
@media(max-height:820px){
  .v96-app .main-stage{grid-template-rows:22px 42px minmax(0,1fr) 12px minmax(0,1fr) 86px 22px 34px!important}
  .v96-app .hand-card{height:79px!important;grid-template-rows:minmax(0,61px) 14px!important}
  .v96-app .hand-card .hand-art,.v96-app .hand-card .hand-art img{height:61px!important}
  .v96-app .hero-lane{grid-template-rows:24px minmax(0,1fr) 22px!important}
  .v96-app .hero-row--player .hero-lane{grid-template-rows:22px minmax(0,1fr) 24px!important}
  .v96-app .status-control,.v96-app .status-trigger{width:17px!important;height:17px!important;min-width:17px!important;min-height:17px!important}
  .v96-app .status-trigger{font-size:9px!important;line-height:17px!important}
  .v96-app .hero-health-row{grid-template-columns:18px minmax(0,1fr)!important}
}
@media(max-width:1450px){
  .v96-app .zoneCard b{font-size:16px!important}
  .v96-app .zone--mana .zoneCard b{font-size:14px!important}
}

/* Local AI v5.7 — centered Mana slash, compact footer log, status icons, EXP badge, popup-safe zoom. */
.v96-app .main-stage{
  grid-template-rows:24px 48px minmax(0,1fr) 16px minmax(0,1fr) 104px 30px!important;
}
.v96-app .player-footer-bar{
  display:flex!important;
  align-items:end!important;
  justify-content:space-between!important;
  gap:8px!important;
  padding:0 6px!important;
  min-width:0!important;
  overflow:visible!important;
}
.v96-app .player-footer-bar .player-name--self{
  flex:0 1 auto!important;
  max-width:calc(100% - 122px)!important;
  align-self:end!important;
}
.v96-app .player-footer-bar #historyButtonBottom{
  flex:0 0 auto!important;
  width:112px!important;
  height:24px!important;
  padding:0 8px!important;
  margin-bottom:0!important;
  border:1px solid #2a4a60!important;
  border-radius:6px 6px 0 0!important;
  background:#071723!important;
  color:#dce8f5!important;
  font-size:8px!important;
  font-weight:900!important;
  text-transform:uppercase!important;
}
/* Slash is the geometric center; current and maximum values occupy equal halves. */
.v96-app .zone--mana .zoneCard b.mana-value{
  inset:0!important;
  width:100%!important;
  max-width:none!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;
  place-items:center!important;
  column-gap:3px!important;
  padding:0 4px!important;
  font-size:14px!important;
  font-style:normal!important;
}
.v96-app .zone--mana .mana-value span{font:inherit!important;line-height:1!important}
.v96-app .zone--mana .mana-value .mana-current{justify-self:end!important}
.v96-app .zone--mana .mana-value .mana-max{justify-self:start!important}
.v96-app .zone--mana .mana-value i{
  justify-self:center!important;
  font:inherit!important;
  font-style:normal!important;
  line-height:1!important;
}
/* EXP uses one compact runtime-owned total outside the Hero card, not a card stack. */
.v96-app .hero-stage{overflow:visible!important}
.v96-app .hero-stage.has-exp{padding-right:4px!important}
.v96-app .hero-exp-badge{
  position:absolute!important;
  z-index:42!important;
  left:calc(50% + 58px)!important;
  bottom:4px!important;
  min-width:38px!important;
  height:16px!important;
  padding:0 5px!important;
  border:1px solid #8c7120!important;
  border-radius:5px!important;
  background:#171205!important;
  color:#f4ca52!important;
  font-size:7px!important;
  font-weight:1000!important;
  line-height:14px!important;
  white-space:nowrap!important;
  box-shadow:0 2px 8px rgba(0,0,0,.58)!important;
}
/* Dedicated status icons; generic ! is reserved for buffs, Exhaust, Casting and restrictions. */
.v96-app .hero-health-row{
  grid-template-columns:20px minmax(0,1fr)!important;
  gap:4px!important;
  position:relative!important;
  z-index:120!important;
  overflow:visible!important;
}
.v96-app .hero-indicator-stack{
  position:relative!important;
  z-index:180!important;
  width:18px!important;
  height:18px!important;
  display:flex!important;
  align-items:center!important;
  gap:2px!important;
  overflow:visible!important;
}
.v96-app .hero-indicator-stack--top{
  flex-direction:column-reverse!important;
  justify-content:flex-start!important;
}
.v96-app .hero-indicator-stack--bottom{
  flex-direction:column!important;
  justify-content:flex-start!important;
}
.v96-app .hero-indicator-stack--empty{visibility:hidden!important}
.v96-app .hero-info-indicator,
.v96-app .negative-status-indicator{
  position:relative!important;
  z-index:190!important;
  flex:0 0 18px!important;
  width:18px!important;
  height:18px!important;
  overflow:visible!important;
}
.v96-app .hero-info-indicator>button,
.v96-app .negative-status-indicator>button{
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  min-height:18px!important;
  padding:0!important;
  display:grid!important;
  place-items:center!important;
  border-radius:999px!important;
  cursor:help!important;
  box-shadow:0 2px 7px rgba(0,0,0,.55)!important;
}
.v96-app .hero-info-indicator>button{
  border:1px solid #8a7b44!important;
  background:#0b151d!important;
  color:#f3d150!important;
  font-size:9px!important;
  font-weight:1000!important;
  line-height:16px!important;
}
.v96-app .negative-status-indicator>button{
  border:1px solid #5d7080!important;
  background:#071019!important;
}
.v96-app .negative-status-indicator img{
  width:13px!important;
  height:13px!important;
  object-fit:contain!important;
  image-rendering:auto!important;
}
.v96-app .hero-indicator-tooltip{
  position:absolute!important;
  z-index:9999!important;
  left:23px!important;
  top:50%!important;
  translate:0 -50%!important;
  display:none!important;
  width:max-content!important;
  min-width:132px!important;
  max-width:260px!important;
  padding:8px 10px!important;
  border:1px solid #6a5514!important;
  border-radius:9px!important;
  background:#08131d!important;
  color:#dce8f5!important;
  box-shadow:0 14px 36px rgba(0,0,0,.78)!important;
  pointer-events:none!important;
  white-space:pre-line!important;
}
.v96-app .hero-indicator-tooltip strong{
  display:block!important;
  margin-bottom:4px!important;
  color:#f4ca52!important;
  font-size:10px!important;
  text-transform:uppercase!important;
}
.v96-app .hero-indicator-tooltip span{display:block!important;font-size:9px!important;line-height:1.35!important}
.v96-app .hero-info-indicator:hover .hero-indicator-tooltip,
.v96-app .hero-info-indicator:focus-within .hero-indicator-tooltip,
.v96-app .negative-status-indicator:hover .hero-indicator-tooltip,
.v96-app .negative-status-indicator:focus-within .hero-indicator-tooltip{display:block!important}
/* Racial Trait stays first; active Class Skill follows directly beneath it. */
.v96-app .heroActions{
  z-index:70!important;
  align-items:flex-end!important;
  gap:3px!important;
  max-width:132px!important;
}
.v96-app .heroActions .actionBtn{
  max-width:132px!important;
  min-height:16px!important;
  padding:2px 6px!important;
  font-size:7px!important;
  line-height:1.1!important;
  white-space:normal!important;
  text-align:right!important;
}
/* Runtime animations remain visible on the board but never cover a choice/response popup. */
.gl-animation-layer{z-index:1100!important}
.modal-overlay,.overlay{z-index:1500!important}
.response-overlay.open{z-index:1600!important}
.hover-card-zoom.is-click-zoom{z-index:4000!important}
/* Card Played opens the detailed Action -> Target -> Response -> Result record. */
.info-panel:has(.played-detail-layout){width:min(900px,94vw)!important}
.info-body .played-detail-copy>div{position:relative;padding-left:24px!important}
.info-body .played-detail-copy>div:before{
  content:'';
  position:absolute;
  left:5px;
  top:8px;
  width:7px;
  height:7px;
  border-radius:999px;
  background:#d4aa31;
  box-shadow:0 0 0 3px rgba(212,170,49,.14);
}
@media(max-height:820px){
  .v96-app .main-stage{grid-template-rows:22px 42px minmax(0,1fr) 12px minmax(0,1fr) 86px 26px!important}
  .v96-app .player-footer-bar #historyButtonBottom{height:22px!important;font-size:7px!important}
  .v96-app .hero-exp-badge{left:calc(50% + 51px)!important;bottom:2px!important}
  .v96-app .zone--mana .zoneCard b.mana-value{font-size:13px!important}
}


/* Local AI v5.7 — compact decision popups and official status icon lock. */
.choice-overlay.open .choice-panel:has(.compact-decision-layout){width:min(520px,92vw)!important}
.compact-decision-layout{
  display:grid!important;
  grid-template-columns:minmax(150px,210px) minmax(130px,170px)!important;
  gap:16px!important;
  align-items:center!important;
  justify-content:center!important;
  padding:10px!important;
}
.compact-choice-card{
  display:grid!important;
  place-items:center!important;
  border:1px solid rgba(83,126,158,.45)!important;
  border-radius:12px!important;
  background:#07131d!important;
  padding:8px!important;
  cursor:zoom-in!important;
}
.compact-choice-card img{display:block!important;width:auto!important;max-width:100%!important;height:auto!important;max-height:300px!important;object-fit:contain!important;border-radius:8px!important}
.compact-choice-actions{display:grid!important;grid-template-columns:1fr!important;gap:9px!important;align-content:center!important}
.compact-choice-actions .mini-action{min-height:46px!important;height:auto!important;padding:8px 10px!important;font-size:11px!important;line-height:1.2!important}
.v96-app .negative-status-indicator>button{border:0!important;background:transparent!important;box-shadow:none!important}
.v96-app .negative-status-indicator img{width:18px!important;height:18px!important;max-width:18px!important;max-height:18px!important}
@media(max-height:760px){.compact-choice-card img{max-height:240px!important}.compact-decision-layout{grid-template-columns:minmax(130px,180px) minmax(120px,160px)!important;gap:12px!important}}


/* Local AI v5.8 — tooltip layering, tighter decision popup, and compact status information. */
.v96-app .field,
.v96-app .hero-row,
.v96-app .hero-lane,
.v96-app .hero-health-row{
  position:relative!important;
}
.v96-app .main-stage:has(.hero-info-indicator:hover),
.v96-app .main-stage:has(.hero-info-indicator:focus-within),
.v96-app .main-stage:has(.negative-status-indicator:hover),
.v96-app .main-stage:has(.negative-status-indicator:focus-within),
.v96-app .field:has(.hero-info-indicator:hover),
.v96-app .field:has(.hero-info-indicator:focus-within),
.v96-app .field:has(.negative-status-indicator:hover),
.v96-app .field:has(.negative-status-indicator:focus-within),
.v96-app .hero-row:has(.hero-info-indicator:hover),
.v96-app .hero-row:has(.hero-info-indicator:focus-within),
.v96-app .hero-row:has(.negative-status-indicator:hover),
.v96-app .hero-row:has(.negative-status-indicator:focus-within),
.v96-app .hero-lane:has(.hero-info-indicator:hover),
.v96-app .hero-lane:has(.hero-info-indicator:focus-within),
.v96-app .hero-lane:has(.negative-status-indicator:hover),
.v96-app .hero-lane:has(.negative-status-indicator:focus-within){
  overflow:visible!important;
}
.v96-app .hero-lane:has(.hero-info-indicator:hover),
.v96-app .hero-lane:has(.hero-info-indicator:focus-within),
.v96-app .hero-lane:has(.negative-status-indicator:hover),
.v96-app .hero-lane:has(.negative-status-indicator:focus-within){
  z-index:5000!important;
}
.v96-app .field:has(.hero-info-indicator:hover),
.v96-app .field:has(.hero-info-indicator:focus-within),
.v96-app .field:has(.negative-status-indicator:hover),
.v96-app .field:has(.negative-status-indicator:focus-within){
  z-index:4800!important;
}
.v96-app .hero-health-row:has(.hero-info-indicator:hover),
.v96-app .hero-health-row:has(.hero-info-indicator:focus-within),
.v96-app .hero-health-row:has(.negative-status-indicator:hover),
.v96-app .hero-health-row:has(.negative-status-indicator:focus-within){
  z-index:5200!important;
}
.v96-app .hero-indicator-tooltip{
  z-index:99999!important;
}
.v96-app .hero-row--player .hero-indicator-tooltip{
  top:auto!important;
  bottom:23px!important;
  translate:0 0!important;
}
.v96-app .hero-row--opponent .hero-indicator-tooltip{
  top:23px!important;
  bottom:auto!important;
  translate:0 0!important;
}
.v96-app .hero-lane:last-child .hero-indicator-tooltip{
  left:auto!important;
  right:23px!important;
}
.choice-overlay.open .choice-panel:has(.compact-decision-layout){
  width:min(410px,92vw)!important;
}
.choice-overlay.open .choice-panel:has(.compact-decision-layout) .choice-body{
  padding:8px!important;
}
.compact-decision-layout{
  grid-template-columns:minmax(140px,180px) 120px!important;
  gap:10px!important;
  padding:4px!important;
}
.compact-choice-card{
  padding:6px!important;
}
.compact-choice-card img{
  max-height:260px!important;
}
.compact-choice-actions{
  gap:7px!important;
}
.compact-choice-actions .mini-action{
  min-height:40px!important;
  padding:7px 8px!important;
  font-size:10px!important;
}
@media(max-height:760px){
  .choice-overlay.open .choice-panel:has(.compact-decision-layout){width:min(370px,92vw)!important}
  .compact-decision-layout{grid-template-columns:minmax(125px,160px) 112px!important;gap:8px!important}
  .compact-choice-card img{max-height:220px!important}
}

/* Local AI v5.10 — clean-field interaction, Hand-only hover bubble,
   borderless battlefield structure, and immediate Phase Tracker highlighting. */
.v96-app .field,
.v96-app .field--opponent,
.v96-app .field--player,
.v96-app .hero-row,
.v96-app .hero-lane,
.v96-app .resource-rail,
.v96-app .zone{
  border:0!important;
  box-shadow:none!important;
}
.v96-app .hero-row{
  border-radius:0!important;
  background:transparent!important;
  padding-inline:0!important;
}
.v96-app .hero-lane{border-right:0!important;background:transparent!important}
.v96-app .zone{background:rgba(4,13,21,.42)!important}
.v96-app .zone--mana{background:rgba(5,24,39,.46)!important}
.v96-app .attachment-row .slot{
  border:0!important;
  background:rgba(255,255,255,.025)!important;
  box-shadow:none!important;
}
.v96-app .hp-bar{border:0!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.035)!important}
.v96-app .field-divider:before,
.v96-app .field-divider:after{display:none!important}
.v96-app .field-divider{opacity:.56!important}
.v96-app .terminal-defeated-card{cursor:default!important;opacity:.9!important}
.v96-app .terminal-defeated-card-back{filter:saturate(.7) brightness(.72)!important}
.v96-app .terminal-defeated-status{visibility:hidden!important}
.v96-app .terminal-defeated-health .hp-bar>span{width:0!important}

/* Hover enlargement is restored only for cards in the Player Hand.
   It is a compact bubble above the card, approximately 120% of Hero-card size. */
.hover-card-zoom.is-hand-hover{
  position:fixed!important;
  inset:0 auto auto 0!important;
  width:clamp(132px,9.4vw,150px)!important;
  max-width:150px!important;
  max-height:none!important;
  padding:0!important;
  background:transparent!important;
  pointer-events:none!important;
  opacity:1!important;
  z-index:3600!important;
  filter:drop-shadow(0 14px 28px rgba(0,0,0,.84))!important;
}
.hover-card-zoom.is-hand-hover img{
  width:100%!important;
  height:auto!important;
  max-height:none!important;
  border-radius:9px!important;
  border:1px solid rgba(244,213,125,.56)!important;
  box-shadow:0 0 0 3px rgba(4,10,16,.82)!important;
}



/* Local AI v5.11 — clean field, field background, Legacy label, and card-play border. */
html,body{
  background:#07111c url("../assets/Background.png") center center/cover fixed no-repeat!important;
}
body::before{display:none!important}
.app,.battlefield-app,.v94-app,.v96-app,.v96-app .gl-app{background:transparent!important}

/* Racial-token container has no oval stroke; token artwork/borders remain intact. */
.v96-app .racial-coins.racial-coins--hand{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}

/* Field and card wrappers stay stroke-free; legal candidates use the v5.18 full-slot inset glow below. */
.v96-app .hero-panel.selectable-illegal,
.v96-app .hero-panel.selectable-legal,
.v96-app .hero-panel.selectable-selected{
  border:0!important;
  outline:0!important;
}

/* Selected Hand card uses lift only — no selection stroke. */
.v96-app .hand-card.is-selected,
.v96-app .hand-card.is-selected .hand-art,
.v96-app .hand-card.is-selected .hand-art:focus,
.v96-app .hand-card.is-selected .hand-art:focus-visible{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
.v96-app .hand-card.is-selected{transform:translateY(-4px)!important}
.v96-app .hand-card.is-selected .hand-art{padding:0!important}

/* Legacy has no HP. The old HP row becomes an unclipped active Legacy-card name bar. */
.v96-app .legacy-health{display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important}
.v96-app .legacy-name-bar{
  width:min(76%,310px);
  min-height:22px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:0!important;
  outline:0!important;
  background:rgba(9,18,29,.76);
  box-shadow:none!important;
  border-radius:7px;
  overflow:visible!important;
}
.v96-app .legacy-name-bar small{display:block;color:#e9c765;font-weight:800;letter-spacing:.06em;white-space:nowrap;overflow:visible;text-overflow:clip}

/* Phase changes are immediate; no blink/flash animation. */
.v96-app .phase-list button.is-active{animation:none!important;filter:brightness(1.12)!important}

.v96-app .match-panel{display:grid!important;grid-template-columns:1fr;gap:8px!important}


/* Local AI v5.18 — battlefield background and Legacy defeated-Hero information. */
.v96-app .main-stage{
  background-color:#07111c!important;
  background-image:url("../assets/Background.png")!important;
  background-size:cover!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
}
.v96-app .field,.v96-app .field--opponent,.v96-app .field--player,.v96-app .hero-row,.v96-app .hero-lane{
  background-color:transparent!important;background-image:none!important;
}
.v96-app .legacy-name-bar{gap:7px!important;padding:2px 8px!important}
.v96-app .legacy-hero-info{
  width:18px;height:18px;min-width:18px;border-radius:50%;padding:0!important;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid rgba(236,201,91,.78)!important;background:#182334!important;color:#f2ce5b!important;
  font-size:11px;font-weight:900;line-height:1;cursor:pointer;
  box-shadow:0 0 8px rgba(236,201,91,.18)!important;
}
.v96-app .legacy-hero-info:hover,.v96-app .legacy-hero-info:focus-visible{filter:brightness(1.22);outline:0!important}

/* Local AI v5.18 — inward full-slot legality glow, modal continuation, and approved card-motion audio control. */
.v96-app .hero-panel.source-candidate.selectable-legal,
.v96-app .hero-panel.target-candidate.selectable-legal,
.v96-app .hero-panel.tribute-candidate.selectable-legal,
.v96-app .hero-panel.card-play-candidate.selectable-legal{
  position:relative!important;
  z-index:4!important;
  border:0!important;
  outline:0!important;
  background:rgba(35,116,77,.07)!important;
  box-shadow:inset 0 0 18px rgba(92,255,151,.54),inset 0 0 52px rgba(92,255,151,.24)!important;
  border-radius:14px!important;
}
.v96-app .hero-panel.selectable-selected,
.v96-app .hero-panel.card-play-selected.selectable-selected{
  border:0!important;
  outline:0!important;
  background:rgba(168,129,27,.08)!important;
  box-shadow:inset 0 0 18px rgba(242,205,77,.58),inset 0 0 52px rgba(242,205,77,.24)!important;
  border-radius:14px!important;
}
.v96-app .hero-panel.source-candidate .hero-card.hero-main,
.v96-app .hero-panel.target-candidate .hero-card.hero-main,
.v96-app .hero-panel.tribute-candidate .hero-card.hero-main,
.v96-app .hero-panel.card-play-candidate .hero-card.hero-main,
.v96-app .hero-panel.selectable-selected .hero-card.hero-main{
  border:0!important;outline:0!important;filter:none!important;box-shadow:none!important;
}
#choiceOverlay.open{z-index:1700!important}
.response-overlay.open{z-index:1600!important}
.v96-app .match-panel{grid-template-columns:1fr 1fr!important;gap:8px!important}
.v96-app .sound-toggle{min-height:32px;border:1px solid #3c5871;background:#102031;color:#dcecff;border-radius:8px;cursor:pointer;font-weight:800;letter-spacing:.04em}
.v96-app .sound-toggle[aria-pressed="true"]{border-color:#c9a93c;color:#f2d56d;background:#1c1a0d}

/* ========================================================================== */
/* UI Design Lock v2.7 — readable Hand, tactical slot contrast, and clean     */
/* printed-card preview. Gameplay/runtime logic is intentionally unchanged.   */
/* ========================================================================== */

/* Tactical Hero areas are the only battlefield areas with structural lines. */
.v96-app .hero-row{
  background:rgba(1,8,14,.50)!important;
  border-top:1px solid rgba(59,91,121,.58)!important;
  border-bottom:1px solid rgba(59,91,121,.58)!important;
}
.v96-app .hero-lane{
  background:linear-gradient(180deg,rgba(5,16,26,.48),rgba(1,8,14,.64))!important;
  border-right:1px solid rgba(59,91,121,.58)!important;
}
.v96-app .hero-lane:last-child{border-right:0!important}

/* Empty Discard Piles are genuinely blank: no Main Deck card back substitute. */
.v96-app .zone--empty-discard .zoneCard{
  background:transparent!important;
}
.v96-app .zone--empty-discard .zoneCard img{display:none!important}
.v96-app .zone--empty-discard .zoneCard b{
  color:#7c8994!important;
  text-shadow:none!important;
  opacity:.72!important;
}

/* Use the current FINAL Mana Shard WebP already present in the source package. */
.v96-app .zone--mana .zoneCard img{
  opacity:.84!important;
  filter:saturate(1) contrast(1.04)!important;
}

/* Larger Hands without adding strokes around the cards. */
.v96-app .strip.v94-strip .back{
  width:44px!important;
  height:62px!important;
  max-height:62px!important;
  flex:0 0 44px!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
.v96-app .handCards{
  gap:8px!important;
  padding:4px 6px!important;
  overflow:visible!important;
}
.v96-app .hand-card{
  width:78px!important;
  min-width:72px!important;
  max-width:78px!important;
  height:126px!important;
  flex:0 1 78px!important;
  grid-template-rows:minmax(0,105px) 18px!important;
  gap:3px!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}
.v96-app .hand-card .hand-art,
.v96-app .hand-card .hand-art img{
  width:100%!important;
  height:105px!important;
  padding:0!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  object-fit:contain!important;
}
.v96-app .hand-card .hand-art img{border-radius:6px!important}
.v96-app .hand-card.playable .hand-art,
.v96-app .hand-card.tributeable .hand-art,
.v96-app .hand-card.playable.tributeable .hand-art,
.v96-app .hand-card.is-selected .hand-art{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  padding:0!important;
}
.v96-app .hand-card .hand-actions{height:18px!important}
.v96-app .hand-card .mini-action{height:17px!important;font-size:7px!important}

/* Remove the unused empty bottom grid track and give that space to the Hand. */
@media (min-width:901px){
  .v96-app .main-stage{
    grid-template-rows:24px 64px minmax(0,1fr) 8px minmax(0,1fr) 132px 24px!important;
  }
}
@media (min-width:901px) and (max-height:820px){
  .v96-app .main-stage{
    grid-template-rows:22px 54px minmax(0,1fr) 8px minmax(0,1fr) 112px 22px!important;
  }
  .v96-app .strip.v94-strip .back{width:39px!important;height:55px!important;max-height:55px!important;flex-basis:39px!important}
  .v96-app .hand-card{width:68px!important;min-width:64px!important;max-width:68px!important;height:108px!important;flex-basis:68px!important;grid-template-rows:minmax(0,89px) 16px!important}
  .v96-app .hand-card .hand-art,.v96-app .hand-card .hand-art img{height:89px!important}
  .v96-app .hand-card .hand-actions{height:16px!important}
  .v96-app .hand-card .mini-action{height:15px!important;font-size:6.5px!important}
}
@media (hover:none) and (pointer:coarse){
  .v96-app .main-stage{
    grid-template-rows:26px 66px auto 8px auto 126px 28px!important;
  }
  .v96-app .hand-card{width:76px!important;min-width:70px!important;max-width:76px!important;height:122px!important;flex-basis:76px!important;grid-template-rows:minmax(0,101px) 18px!important}
  .v96-app .hand-card .hand-art,.v96-app .hand-card .hand-art img{height:101px!important}
}

/* Hand hover remains image-only and card-relative; remove its decorative stroke. */
.hover-card-zoom.is-hand-hover{
  width:clamp(158px,11vw,180px)!important;
  max-width:180px!important;
}
.hover-card-zoom.is-hand-hover img{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}

/* Click/tap opens one readable printed-card preview, not the old image zoom. */
#previewOverlay.open{z-index:5000!important}
.preview-panel{
  width:min(720px,92vw)!important;
  max-height:88dvh!important;
  border:0!important;
  outline:0!important;
  border-radius:16px!important;
  background:rgba(7,17,27,.985)!important;
  box-shadow:0 24px 80px rgba(0,0,0,.88)!important;
  overflow:hidden!important;
}
.preview-head{
  position:static!important;
  border:0!important;
  background:rgba(11,24,37,.96)!important;
  padding:10px 14px!important;
}
.preview-body{
  display:block!important;
  padding:16px!important;
  overflow:auto!important;
}
.readable-card-preview{display:grid;gap:14px;min-width:0}
.readable-card-name>span,
.readable-card-facts section>span,
.readable-card-label{
  display:block;
  margin:0 0 5px;
  color:#8fa2b5;
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.readable-card-name h2{
  margin:0;
  color:#f4d35e;
  font-size:clamp(22px,3vw,32px);
  line-height:1.08;
}
.readable-card-facts{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(118px,max-content));justify-content:start;
  gap:10px;
}
.readable-card-facts>section,
.readable-card-text{
  border:0!important;
  outline:0!important;
  border-radius:11px;
  background:rgba(255,255,255,.035);
  padding:11px 12px;
}
.readable-card-mana small{display:block;color:#c7d7e8;font-size:10px;font-weight:800;margin:0 0 3px}.readable-card-mana strong{display:block;color:#f4d35e;font-size:18px;line-height:1.25}.readable-card-mana,.readable-card-badges{width:132px;max-width:132px}.readable-card-badges{align-self:stretch}
.readable-card-badges>div{display:flex;flex-wrap:wrap;gap:6px}
.preview-badge{
  display:inline-flex;
  align-items:center;
  min-height:23px;
  max-width:100%;
  padding:4px 8px;
  border:0;
  border-radius:999px;
  background:#172a3d;
  color:#e8f2fb;
  font-size:9px;
  line-height:1.2;
  white-space:normal;
  font-weight:800;
}
.preview-effect-row{
  margin:8px 0 0!important;
  padding:10px 11px!important;
  border:0!important;
  border-radius:9px!important;
  background:rgba(2,9,15,.62)!important;
}
.preview-effect-row h3{margin:0 0 6px;color:#f0ce67;font-size:13px}
.preview-effect-row p{margin:0;color:#e0e8ef;font-size:14px;line-height:1.5;white-space:pre-wrap}
.hover-card-zoom.is-click-zoom{display:none!important}
@media(max-width:620px){
  .readable-card-facts{grid-template-columns:1fr}
  .preview-body{padding:12px!important}
  .preview-effect-row p{font-size:13px}
}

/* Local AI v5.18 — compact secondary controls; no PvP Room control. */
.v96-app .match-panel{
  display:grid!important;
  grid-template-columns:1fr!important;
  grid-template-rows:24px 24px!important;
  gap:4px!important;
  padding:0!important;
}
.v96-app .match-panel .sound-toggle,
.v96-app .match-panel .surrender{
  width:100%!important;
  min-height:24px!important;
  height:24px!important;
  padding:0 6px!important;
  border-radius:6px!important;
  font-size:7px!important;
  line-height:1!important;
  letter-spacing:.02em!important;
}


/* ========================================================================== */
/* Local AI v5.18 — typed two-column card preview candidate.                   */
/* PvP and shared UI Lock remain unchanged until this Local AI review passes. */
/* ========================================================================== */
#previewOverlay.open{align-items:center!important;justify-content:center!important;padding:18px!important}
.preview-panel{
  width:min(1040px,95vw)!important;
  max-height:92dvh!important;
}
.preview-body{padding:18px!important}
.readable-card-preview{
  display:grid!important;
  grid-template-columns:minmax(230px,320px) minmax(0,1fr)!important;
  gap:22px!important;
  align-items:start!important;
  min-width:0!important;
}
.readable-card-art{
  margin:0!important;
  min-width:0!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:center!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
}
.readable-card-art img{
  display:block!important;
  width:100%!important;
  max-width:320px!important;
  max-height:76dvh!important;
  object-fit:contain!important;
  border:0!important;
  outline:0!important;
  border-radius:14px!important;
  box-shadow:0 18px 48px rgba(0,0,0,.58)!important;
}
.readable-card-details{
  display:grid!important;
  align-content:start!important;
  gap:12px!important;
  min-width:0!important;
}
.readable-card-facts--hero{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.readable-card-field,
.readable-card-section{
  border:0!important;
  outline:0!important;
  border-radius:11px!important;
  background:rgba(255,255,255,.035)!important;
  padding:11px 12px!important;
  min-width:0!important;
}
.readable-card-field>span,
.readable-card-section>.readable-card-label{
  display:block!important;
  margin:0 0 5px!important;
  color:#8fa2b5!important;
  font-size:10px!important;
  font-weight:900!important;
  letter-spacing:.08em!important;
  text-transform:uppercase!important;
}
.readable-card-field strong{
  display:block!important;
  color:#f4d35e!important;
  font-size:18px!important;
  line-height:1.25!important;
}
.readable-card-section h3{
  margin:0!important;
  color:#f0ce67!important;
  font-size:18px!important;
  line-height:1.25!important;
}
.readable-card-sublabel{
  display:block!important;
  margin:10px 0 3px!important;
  color:#8fa2b5!important;
  font-size:9px!important;
  font-weight:900!important;
  letter-spacing:.07em!important;
  text-transform:uppercase!important;
}
.readable-card-section h4{
  margin:2px 0 4px!important;
  color:#f4f7fb!important;
  font-size:14px!important;
  line-height:1.3!important;
}
.readable-card-section p{
  margin:7px 0 0!important;
  color:#e0e8ef!important;
  font-size:14px!important;
  line-height:1.5!important;
  white-space:pre-wrap!important;
}
.readable-card-preview--legacy .readable-card-section h3{font-size:16px!important}
@media(max-width:760px){
  #previewOverlay.open{padding:8px!important}
  .preview-panel{width:min(96vw,720px)!important;max-height:94dvh!important}
  .readable-card-preview{grid-template-columns:1fr!important;gap:14px!important}
  .readable-card-art img{width:min(250px,72vw)!important;max-height:48dvh!important}
  .readable-card-facts--hero{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* ========================================================================== */
/* Local AI v5.18 — PvP control parity and readable Card Played thumbnails.   */
/* UI-only: gameplay and runtime authority are unchanged.                     */
/* ========================================================================== */
.v96-app .phase-actions{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  grid-template-rows:27px 36px!important;
  gap:5px!important;
}
.v96-app .phase-actions .reposition{
  grid-column:1!important;
  grid-row:1!important;
  height:27px!important;
  min-height:27px!important;
}
.v96-app .phase-actions .cancel-action{
  grid-column:2!important;
  grid-row:1!important;
  height:27px!important;
  min-height:27px!important;
}
.v96-app .phase-actions .next-phase{
  grid-column:1/-1!important;
  grid-row:2!important;
  height:36px!important;
  min-height:36px!important;
  font-size:9px!important;
}
.v96-app .control-sidebar{
  grid-template-rows:auto auto minmax(220px,1fr) 24px!important;
}
.v96-app .card-played-panel{
  min-height:220px!important;
  grid-template-rows:auto minmax(0,1fr) 24px!important;
  gap:6px!important;
}
.v96-app .played-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(3,minmax(52px,1fr))!important;
  gap:6px!important;
  min-height:0!important;
  overflow:hidden!important;
}
.v96-app .played-grid .combined-played-card{
  position:relative!important;
  display:grid!important;
  place-items:center!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  padding:2px!important;
  border:0!important;
  border-radius:6px!important;
  background:rgba(3,11,18,.76)!important;
  overflow:hidden!important;
}
.v96-app .played-grid .combined-played-card img{
  display:block!important;
  width:auto!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  aspect-ratio:63/88!important;
  object-fit:contain!important;
  border:0!important;
  border-radius:4px!important;
}
.v96-app .played-grid .combined-played-card em{
  top:3px!important;
  left:3px!important;
  padding:2px 4px!important;
  font-size:7px!important;
  line-height:1!important;
}
.v96-app .match-panel{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  grid-template-rows:24px!important;
  gap:5px!important;
  height:24px!important;
  min-height:24px!important;
  padding:0!important;
  border:0!important;
  background:none!important;
  overflow:visible!important;
}
.v96-app .match-panel .sound-toggle,
.v96-app .match-panel .surrender{
  width:100%!important;
  height:24px!important;
  min-height:24px!important;
  padding:0 5px!important;
  border-radius:6px!important;
  font-size:7px!important;
  line-height:1!important;
  letter-spacing:.02em!important;
  white-space:nowrap!important;
}
.v96-app .match-panel .sound-toggle{grid-column:1!important;grid-row:1!important}
.v96-app .match-panel .surrender{grid-column:2!important;grid-row:1!important}
@media(max-height:820px){
  .v96-app .phase-actions{grid-template-rows:24px 31px!important}
  .v96-app .phase-actions .reposition,
  .v96-app .phase-actions .cancel-action{height:24px!important;min-height:24px!important}
  .v96-app .phase-actions .next-phase{height:31px!important;min-height:31px!important}
  .v96-app .control-sidebar{grid-template-rows:auto auto minmax(188px,1fr) 22px!important}
  .v96-app .card-played-panel{min-height:188px!important}
  .v96-app .played-grid{grid-template-rows:repeat(3,minmax(42px,1fr))!important;gap:4px!important}
  .v96-app .match-panel{grid-template-rows:22px!important;height:22px!important;min-height:22px!important}
  .v96-app .match-panel .sound-toggle,
  .v96-app .match-panel .surrender{height:22px!important;min-height:22px!important;font-size:6px!important}
}

/* Shared Card Review UI lock — content generated from One Source Authority v1.4. */
.readable-card-facts{grid-auto-flow:row!important}
.readable-card-mana small{display:block!important;color:#c7d7e8!important;font-size:10px!important;font-weight:800!important;margin:0 0 3px!important}
.readable-card-mana,.readable-card-badges{width:132px!important;max-width:132px!important}
.readable-card-badges .preview-badge{max-width:100%!important;font-size:9px!important;line-height:1.2!important;white-space:normal!important}

/* ========================================================================== */
/* Grandis Legacy UI Design Lock v2.8 — printed preview + chain detail.        */
/* Presentation only. Gameplay authority and card resolution are unchanged.   */
/* ========================================================================== */
#previewOverlay.open{z-index:5000!important;align-items:center!important;justify-content:center!important;padding:18px!important}
.preview-panel{width:min(1040px,95vw)!important;max-height:92dvh!important;border:0!important;outline:0!important;border-radius:16px!important;background:rgba(7,17,27,.985)!important;box-shadow:0 24px 80px rgba(0,0,0,.88)!important;overflow:hidden!important}
.preview-head{position:static!important;border:0!important;background:rgba(11,24,37,.96)!important;padding:10px 14px!important}
.preview-body{display:block!important;padding:18px!important;overflow:hidden!important;min-height:0!important}
.readable-card-preview{display:grid!important;grid-template-columns:minmax(230px,320px) minmax(0,1fr)!important;gap:22px!important;align-items:start!important;min-width:0!important;max-height:78dvh!important;overflow:hidden!important}
.readable-card-art{margin:0!important;min-width:0!important;display:flex!important;align-items:flex-start!important;justify-content:center!important;background:transparent!important;border:0!important;outline:0!important}
.readable-card-art img{display:block!important;width:100%!important;max-width:320px!important;max-height:76dvh!important;object-fit:contain!important;border:0!important;outline:0!important;border-radius:14px!important;box-shadow:0 18px 48px rgba(0,0,0,.58)!important}
.readable-card-details{display:grid!important;grid-template-rows:auto auto minmax(0,1fr)!important;align-content:start!important;gap:12px!important;min-width:0!important;min-height:0!important;max-height:76dvh!important;overflow:hidden!important}
.readable-card-name>span,.readable-card-facts section>span,.readable-card-label{display:block!important;margin:0 0 5px!important;color:#8fa2b5!important;font-size:10px!important;font-weight:900!important;letter-spacing:.08em!important;text-transform:uppercase!important}
.readable-card-name h2{margin:0!important;color:#f4d35e!important;font-size:clamp(22px,3vw,32px)!important;line-height:1.08!important}
.readable-card-facts{display:flex!important;flex-wrap:wrap!important;align-items:stretch!important;justify-content:flex-start!important;gap:10px!important;min-width:0!important}
.readable-card-mana,.readable-card-field,.readable-card-badges{box-sizing:border-box!important;border:0!important;outline:0!important;border-radius:11px!important;background:rgba(255,255,255,.035)!important;padding:11px 12px!important;min-width:0!important}
.readable-card-mana{flex:0 1 142px!important;width:142px!important;max-width:142px!important}
.readable-card-badges{flex:0 1 112px!important;width:112px!important;max-width:112px!important;align-self:stretch!important}
.readable-card-facts--hero .readable-card-field{flex:0 1 142px!important;width:142px!important;max-width:142px!important}
.readable-card-mana small{display:block!important;color:#c7d7e8!important;font-size:10px!important;font-weight:800!important;margin:0 0 3px!important}
.readable-card-mana strong,.readable-card-field strong{display:block!important;color:#f4d35e!important;font-size:18px!important;line-height:1.25!important}
.readable-card-badges>div{display:flex!important;flex-wrap:wrap!important;gap:6px!important}
.preview-badge{display:inline-flex!important;align-items:center!important;min-height:22px!important;max-width:100%!important;padding:4px 7px!important;border:0!important;border-radius:999px!important;background:#172a3d!important;color:#e8f2fb!important;font-size:8px!important;line-height:1.2!important;white-space:normal!important;font-weight:850!important}
.readable-card-scroll{min-height:0!important;overflow-y:auto!important;overscroll-behavior:contain!important;padding-right:5px!important;scrollbar-gutter:stable!important}
.readable-card-text,.readable-card-section{border:0!important;outline:0!important;border-radius:11px!important;background:rgba(255,255,255,.035)!important;padding:11px 12px!important;min-width:0!important}
.readable-card-scroll>.readable-card-section+ .readable-card-section{margin-top:10px!important}
.preview-effect-row{margin:8px 0 0!important;padding:10px 11px!important;border:0!important;border-radius:9px!important;background:rgba(2,9,15,.62)!important}
.preview-effect-row h3{margin:0 0 6px!important;color:#f0ce67!important;font-size:13px!important}
.preview-effect-row p,.readable-card-section p{margin:0!important;color:#e0e8ef!important;font-size:14px!important;line-height:1.5!important;white-space:pre-wrap!important}
.readable-card-section h3{margin:0!important;color:#f0ce67!important;font-size:18px!important;line-height:1.25!important}
.readable-card-sublabel{display:block!important;margin:10px 0 3px!important;color:#8fa2b5!important;font-size:9px!important;font-weight:900!important;letter-spacing:.07em!important;text-transform:uppercase!important}
.readable-card-section h4{margin:2px 0 4px!important;color:#f4f7fb!important;font-size:14px!important;line-height:1.3!important}
.hover-card-zoom.is-click-zoom{display:none!important}
.info-panel:has(.played-detail-layout){width:min(980px,94vw)!important;max-height:90dvh!important;overflow:hidden!important}
.info-body:has(.played-detail-layout){overflow:hidden!important;min-height:0!important}
.played-detail-layout{display:grid!important;grid-template-columns:minmax(190px,280px) minmax(0,1fr)!important;gap:18px!important;align-items:start!important;height:min(72dvh,720px)!important;min-height:0!important;overflow:hidden!important}
.played-detail-card{position:sticky!important;top:0!important;align-self:start!important;min-width:0!important}
.played-detail-card img{display:block!important;width:100%!important;max-height:70dvh!important;object-fit:contain!important;border:0!important;outline:0!important;border-radius:12px!important}
.played-detail-copy{min-height:0!important;max-height:100%!important;overflow-y:auto!important;overscroll-behavior:contain!important;padding-right:6px!important;scrollbar-gutter:stable!important}
.played-chain-block{margin-top:12px!important}
.played-chain-cards{display:grid!important;gap:8px!important;margin-top:7px!important}
.played-chain-step{display:grid!important;grid-template-columns:58px minmax(0,1fr)!important;gap:10px!important;align-items:start!important;padding:8px!important;border:0!important;border-radius:10px!important;background:rgba(255,255,255,.035)!important}
.played-chain-step img{display:block!important;width:58px!important;aspect-ratio:63/88!important;object-fit:contain!important;border:0!important;border-radius:6px!important;background:#030b12!important}
.played-chain-step span{display:block!important;color:#8fa2b5!important;font-size:8px!important;font-weight:900!important;letter-spacing:.07em!important;text-transform:uppercase!important}
.played-chain-step h4{margin:2px 0 4px!important;color:#f0ce67!important;font-size:13px!important}
.played-chain-step p{margin:0!important;color:#dfe8f0!important;font-size:12px!important;line-height:1.45!important}
@media(max-width:760px){
  #previewOverlay.open{padding:8px!important}.preview-panel{width:min(96vw,720px)!important;max-height:94dvh!important}.preview-body{padding:12px!important;overflow-y:auto!important}
  .readable-card-preview{grid-template-columns:1fr!important;gap:14px!important;max-height:none!important;overflow:visible!important}.readable-card-art img{width:min(250px,72vw)!important;max-height:42dvh!important}.readable-card-details{max-height:none!important;overflow:visible!important}.readable-card-scroll{max-height:42dvh!important}.readable-card-mana{flex-basis:132px!important;width:132px!important}.readable-card-badges{flex-basis:108px!important;width:108px!important}
  .played-detail-layout{grid-template-columns:1fr!important;height:auto!important;max-height:78dvh!important;overflow-y:auto!important}.played-detail-card{position:static!important}.played-detail-card img{width:min(230px,68vw)!important;margin:auto!important;max-height:38dvh!important}.played-detail-copy{overflow:visible!important;max-height:none!important}.played-chain-step{grid-template-columns:48px minmax(0,1fr)!important}.played-chain-step img{width:48px!important}
}

/* ========================================================================== */
/* Shared Gameplay UI v2.0 — fan hands, clean card surfaces, unified opacity. */
/* ========================================================================== */
.v96-app .handPanel,
.v96-app .hand-area,
.v96-app .strip.v94-strip,
.v96-app .strip.v94-strip .backs{
  overflow:visible!important;
}
.v96-app .handCards,
.v96-app .strip.v94-strip .backs{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:0!important;
  perspective:900px!important;
}
.v96-app .hand-card,
.v96-app .opponent-hand-slot{
  position:relative!important;
  flex-shrink:0!important;
  margin-left:var(--fan-overlap,0px)!important;
  z-index:var(--fan-z,1)!important;
  transform-origin:50% 92%!important;
  transform:translateY(var(--fan-y,0px)) rotate(var(--fan-angle,0deg))!important;
  transition:transform .18s cubic-bezier(.2,.75,.2,1),filter .16s ease,margin .18s ease!important;
}
.v96-app .hand-card:first-child,
.v96-app .opponent-hand-slot:first-child{margin-left:0!important}
.v96-app .opponent-hand-slot{
  display:inline-grid!important;
  place-items:center!important;
  width:39px!important;
  height:55px!important;
  flex:0 0 39px!important;
  transform-origin:50% 8%!important;
  transform:translateY(var(--fan-y,0px)) rotate(calc(var(--fan-angle,0deg) * -1))!important;
}
.v96-app .opponent-hand-slot .back{
  display:block!important;
  width:39px!important;
  height:55px!important;
  max-height:55px!important;
  object-fit:contain!important;
  border:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.v96-app .hand-card:hover,
.v96-app .hand-card:focus-within{
  z-index:100!important;
  transform:translateY(-13px) rotate(0deg) scale(1.045)!important;
  filter:brightness(1.08)!important;
}
.v96-app .hand-card.hand-slot-placeholder,
.v96-app .opponent-hand-slot.hand-slot-placeholder{
  visibility:hidden!important;
  pointer-events:none!important;
}

/* Printed artwork is the only visible card frame. */
.v96-app .hero-card.hero-main,
.v96-app .hand-card,
.v96-app .hand-card.playable,
.v96-app .hand-card.tributeable,
.v96-app .hand-card.playable.tributeable,
.v96-app .hand-card.is-selected,
.v96-app .opponent-hand-slot,
.v96-app .slot.filled>button,
.v96-app .combined-played-card,
.v96-app .formation-card>button,
.v96-app button[data-preview]:has(>img){
  border:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.v96-app .hero-card.hero-main:focus,
.v96-app .hero-card.hero-main:focus-visible,
.v96-app .hand-card:focus,
.v96-app .hand-card:focus-visible,
.v96-app .slot.filled>button:focus,
.v96-app .combined-played-card:focus{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
.v96-app .hand-card.playable .hand-art,
.v96-app .hand-card.tributeable .hand-art,
.v96-app .hand-card.is-selected .hand-art{
  border:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
  filter:drop-shadow(0 0 5px rgba(84,207,125,.48))!important;
}
.v96-app .heroImg,
.v96-app .hand-art img,
.v96-app .slot.filled img,
.v96-app .combined-played-card img{
  border:0!important;
  outline:0!important;
}
.gl-flying-card{
  border:0!important;
  outline:0!important;
}

/* Shared resource visibility lock. */
.v96-app .zone[data-zone-type="Main Deck"] .zoneCard>img,
.v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>img,
.v96-app .zone[data-zone-type="Mana Pool"] .zoneCard>img{
  opacity:.85!important;
}

/* Local opening coin flow. */
.gl-opening-coin-modal{
  position:fixed;inset:0;z-index:10020;display:flex;align-items:center;justify-content:center;
  padding:18px;background:rgba(0,0,0,.58);
}
.gl-opening-coin-card{
  width:min(460px,calc(100vw - 32px));padding:20px;border:1px solid rgba(255,215,80,.72);
  border-radius:18px;background:#071827;color:#f4f7fb;box-shadow:0 24px 80px rgba(0,0,0,.72);
  text-align:center;
}
.gl-opening-coin-card h2{margin:0 0 8px;color:#ffd84a;font-size:24px}
.gl-opening-coin-card p{margin:6px 0 15px;color:#c9d8e8;line-height:1.45}
.gl-opening-coin-actions,.gl-opening-coin-result{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.gl-opening-coin-actions button{
  border:0;outline:0;background:transparent;color:#fff;font-weight:900;display:grid;gap:8px;place-items:center;cursor:pointer;
}
.gl-opening-coin-actions button img,.gl-opening-coin-result img{display:block;width:min(142px,100%);aspect-ratio:1;object-fit:contain;border-radius:50%}
.gl-opening-coin-actions button:hover img,.gl-opening-coin-actions button:focus-visible img{filter:brightness(1.12);transform:translateY(-2px) scale(1.025)}
.gl-opening-coin-result>div{display:grid;gap:7px;place-items:center;color:#aebfd0;font-size:12px}
.gl-opening-coin-card.result strong{display:block;margin-top:14px;color:#ffd84a;font-size:18px}

@media(max-width:760px){
  .v96-app .hand-card{--fan-overlap:-22px!important}
  .v96-app .opponent-hand-slot{--fan-overlap:-14px!important}
}

/* Local AI v5.23 correction — clearer deck counts and gated coin result. */
.v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>b{
  inset:auto 0 7px!important;
  display:block!important;
  text-align:center!important;
  font-size:20px!important;
  line-height:1!important;
  pointer-events:none!important;
}
.gl-opening-coin-winner{
  margin:12px 0 16px;
  padding:14px 12px;
  border-radius:12px;
  background:linear-gradient(180deg,rgba(27,75,112,.58),rgba(8,31,50,.78));
  box-shadow:inset 0 0 0 1px rgba(106,184,236,.36);
}
.gl-opening-coin-winner>span{
  display:block;
  margin-bottom:5px;
  color:#9fc7e7;
  font-size:11px;
  font-weight:900;
  letter-spacing:.16em;
}
.gl-opening-coin-winner>strong{
  display:block!important;
  margin:0!important;
  color:#ffd84a!important;
  font-size:21px!important;
  line-height:1.2;
}
.gl-opening-coin-winner>p{margin:7px 0 0!important;color:#d8e8f5!important}
.gl-opening-start-button{
  width:100%;
  margin-top:18px;
  min-height:46px;
  border:1px solid #dfbb42;
  border-radius:10px;
  background:linear-gradient(180deg,#f4cf55,#bd8f1f);
  color:#07131d;
  font-size:15px;
  font-weight:950;
  letter-spacing:.04em;
  cursor:pointer;
}
.gl-opening-start-button:hover,.gl-opening-start-button:focus-visible{filter:brightness(1.08)}
.gl-opening-start-button:disabled{opacity:.58;cursor:wait}


/* Local AI v5.23 minor correction — unified resource type, synced coin motion, newest popup on top. */
.v96-app .zone .zoneCard>b,
.v96-app .zone--mana .zoneCard>b,
.v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Discard Pile"] .zoneCard>b{
  font-size:15px!important;
}
.gl-opening-coin-flip-stage{
  min-height:172px;display:grid;place-items:center;perspective:520px;overflow:visible;
}
.gl-opening-coin-flip-stage img{
  display:block;width:min(150px,42vw);aspect-ratio:1;object-fit:contain;border-radius:50%;will-change:transform,filter;
}
.gl-opening-coin-flip-stage img.is-flipping{animation:glOpeningCoinFlip linear both}
@keyframes glOpeningCoinFlip{
  0%{transform:perspective(520px) rotateY(0deg) translateY(0);filter:brightness(1)}
  50%{transform:perspective(520px) rotateY(720deg) translateY(-22px);filter:brightness(1.18)}
  100%{transform:perspective(520px) rotateY(1440deg) translateY(0);filter:brightness(1)}
}
#choiceOverlay[data-modal-stack-order],#infoOverlay[data-modal-stack-order],#responseOverlay[data-modal-stack-order],#previewOverlay[data-modal-stack-order]{pointer-events:auto}

/* Local AI v5.23 — final UI/runtime synchronization refinements. */
/* All visible resource values use one unobtrusive type size. */
.v96-app .zone .zoneCard>b,
.v96-app .zone--mana .zoneCard>b,
.v96-app .zone--mana .zoneCard b.mana-value,
.v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Discard Pile"] .zoneCard>b{
  font-size:13px!important;
}
/* Shared backs/resources are more visible without obscuring their printed logos. */
.v96-app .zone[data-zone-type="Main Deck"] .zoneCard>img,
.v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>img,
.v96-app .zone[data-zone-type="Mana Pool"] .zoneCard>img{
  opacity:.90!important;
}
/* HP is a compact overlay over the printed HP corner, not a lane-wide bar. */
.v96-app .hero-stage{position:relative!important}
.v96-app .hero-health-row.hero-health-overlay{
  position:absolute!important;
  z-index:145!important;
  top:5px!important;
  left:calc(50% + 5px)!important;
  width:64px!important;
  height:29px!important;
  padding:3px 4px!important;
  display:grid!important;
  grid-template-columns:16px minmax(0,1fr)!important;
  gap:3px!important;
  align-items:center!important;
  border-radius:9px!important;
  background:rgba(7,18,31,.92)!important;
  box-shadow:0 3px 10px rgba(0,0,0,.46),inset 0 0 0 1px rgba(95,133,164,.20)!important;
  pointer-events:none!important;
}
.v96-app .hero-health-row.hero-health-overlay .hero-indicator-stack,
.v96-app .hero-health-row.hero-health-overlay .status-control,
.v96-app .hero-health-row.hero-health-overlay .status-trigger{
  width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;
  pointer-events:auto!important;
}
.v96-app .hero-health-row.hero-health-overlay .negative-status-indicator img{width:16px!important;height:16px!important}
.v96-app .hero-health-row.hero-health-overlay .hp-bar{
  width:100%!important;
  height:20px!important;
  margin:0!important;
  border:0!important;
  border-radius:7px!important;
  background:rgba(0,0,0,.82)!important;
  box-shadow:none!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar>span{
  inset:auto 2px 2px 2px!important;
  width:calc(var(--hp-value) - 4px)!important;
  height:4px!important;
  border-radius:999px!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar small{
  inset:1px 0 6px!important;
  font-size:11px!important;
  line-height:1!important;
  place-items:center!important;
  white-space:nowrap!important;
}
.v96-app .hero-health-row.hero-health-overlay .hero-indicator-tooltip{pointer-events:auto!important}
/* Stable fan hitboxes: only card visuals lift, so pointer movement cannot cause hover oscillation. */
.v96-app .hand-card:hover,
.v96-app .hand-card:focus-within,
.v96-app .hand-card.hand-hover-active{
  z-index:100!important;
  transform:translateY(var(--fan-y,0px)) rotate(var(--fan-angle,0deg))!important;
  filter:none!important;
}
.v96-app .hand-card .hand-art,
.v96-app .hand-card .hand-actions{
  transition:transform .17s cubic-bezier(.2,.75,.2,1),filter .15s ease!important;
  transition-delay:.06s!important;
}
.v96-app .hand-card:hover .hand-art,
.v96-app .hand-card:focus-within .hand-art,
.v96-app .hand-card.hand-hover-active .hand-art{
  transform:translateY(-7px) rotate(calc(var(--fan-angle,0deg) * -1)) scale(1.025)!important;
  filter:brightness(1.06)!important;
}
.v96-app .hand-card:hover .hand-actions,
.v96-app .hand-card:focus-within .hand-actions,
.v96-app .hand-card.hand-hover-active .hand-actions{
  transform:translateY(-7px)!important;
}
/* Result information hierarchy. */
.game-result-summary{display:grid;gap:12px;min-width:min(440px,78vw)}
.game-result-summary section{display:grid;gap:5px;padding:12px 14px;border-radius:11px;background:#0a1825;box-shadow:inset 0 0 0 1px rgba(101,135,161,.18)}
.game-result-summary span{font-size:10px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:#93a8ba}
.game-result-winner strong{font-size:24px;line-height:1.1;color:#ffd653;font-weight:1000}
.game-result-reason strong{font-size:20px;line-height:1.3;color:#f1f5f8;font-weight:950}
.game-result-round{grid-template-columns:auto 1fr;align-items:end}
.game-result-round span{grid-column:1/-1}.game-result-round strong{font-size:16px;color:#dbe7f0}.game-result-round small{justify-self:end;color:#8fa3b4;font-size:11px}

/* ========================================================================== */
/* Local AI v5.23 — responsive Hero anchors and shared mobile control layout.  */
/* UI-only. Gameplay, card data, legality and runtime authority are unchanged. */
/* ========================================================================== */

/* Normal Hero lanes use two explicit rows. This prevents the Player Hero stage
   from being auto-placed into the former 27px health row at some resolutions. */
.v96-app .hero-row--opponent .hero-lane:not(.legacy-slot){
  grid-template-rows:35px minmax(0,1fr)!important;
}
.v96-app .hero-row--opponent .hero-lane:not(.legacy-slot)>.attachment-row{grid-row:1!important}
.v96-app .hero-row--opponent .hero-lane:not(.legacy-slot)>.hero-stage{grid-row:2!important}
.v96-app .hero-row--player .hero-lane:not(.legacy-slot){
  grid-template-rows:minmax(0,1fr) 35px!important;
}
.v96-app .hero-row--player .hero-lane:not(.legacy-slot)>.hero-stage{grid-row:1!important}
.v96-app .hero-row--player .hero-lane:not(.legacy-slot)>.attachment-row{grid-row:2!important}

/* Card-relative anchor: the card image may rotate for Exhaust, while HP stays
   upright and attached to the card's upper-right corner. */
.v96-app .hero-stage{
  position:relative!important;
  isolation:isolate!important;
}
.v96-app .hero-card-anchor{
  position:relative!important;
  z-index:30!important;
  display:grid!important;
  place-items:center!important;
  width:max-content!important;
  max-width:100%!important;
  max-height:100%!important;
  overflow:visible!important;
}
.v96-app .hero-card-anchor>.hero-card.hero-main{
  grid-area:1/1!important;
  margin:0!important;
}

/* No outer HP backing. Only the compact number field and 3px progress line
   remain; three-digit values must stay fully readable. */
.v96-app .hero-health-row.hero-health-overlay{
  position:absolute!important;
  z-index:145!important;
  top:2px!important;
  right:-8px!important;
  left:auto!important;
  width:58px!important;
  height:23px!important;
  padding:0!important;
  display:block!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  pointer-events:none!important;
  overflow:visible!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar{
  width:58px!important;
  height:18px!important;
  margin:0!important;
  border:0!important;
  border-radius:7px!important;
  background:rgba(0,0,0,.84)!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar>span{
  inset:auto 2px -5px 2px!important;
  width:calc(var(--hp-value) - 4px)!important;
  height:3px!important;
  border-radius:999px!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar small{
  inset:0!important;
  display:grid!important;
  place-items:center!important;
  padding:0 2px!important;
  font-size:10px!important;
  line-height:18px!important;
  letter-spacing:-.1px!important;
  white-space:nowrap!important;
  overflow:visible!important;
}

/* Status and Hero information belong to the Hero container, not to the HP bar.
   Start at the Hero container's upper-left corner and remain upright. */
.v96-app .hero-status-overlay{
  position:absolute!important;
  z-index:190!important;
  top:6px!important;
  left:6px!important;
  width:auto!important;
  height:auto!important;
  display:block!important;
  overflow:visible!important;
  pointer-events:auto!important;
}
.v96-app .hero-status-overlay .hero-indicator-stack{
  position:relative!important;
  width:18px!important;
  height:auto!important;
  min-height:18px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
  align-items:center!important;
  gap:3px!important;
  overflow:visible!important;
}
.v96-app .hero-status-overlay .hero-indicator-stack--top,
.v96-app .hero-status-overlay .hero-indicator-stack--bottom{
  flex-direction:column!important;
}

/* Main, Legacy and Discard counts share the same lower placement. Mana remains
   the only resource value centered over its card. */
.v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>b,
.v96-app .zone[data-zone-type="Discard Pile"] .zoneCard>b{
  inset:auto 0 7px!important;
  display:block!important;
  text-align:center!important;
  line-height:1!important;
  pointer-events:none!important;
}
.v96-app .zone[data-zone-type="Mana Pool"] .zoneCard>b{
  inset:0!important;
  display:grid!important;
  place-items:center!important;
  text-align:center!important;
}

/* AI turn stability: repeated AI presentation renders may update the page, but
   the Player Hand does not lift/drop outside a local Response Window. Clicked
   Card Review remains available because only the movement treatment is gated. */
.v96-app.turn-ai:not(.response-active) .hand-card,
.v96-app.turn-ai:not(.response-active) .hand-card:hover,
.v96-app.turn-ai:not(.response-active) .hand-card:focus-within,
.v96-app.turn-ai:not(.response-active) .hand-card.hand-hover-active{
  transform:translateY(var(--fan-y,0px)) rotate(var(--fan-angle,0deg))!important;
  transition:none!important;
  filter:none!important;
}
.v96-app.turn-ai:not(.response-active) .hand-card .hand-art,
.v96-app.turn-ai:not(.response-active) .hand-card .hand-actions,
.v96-app.turn-ai:not(.response-active) .hand-card:hover .hand-art,
.v96-app.turn-ai:not(.response-active) .hand-card:focus-within .hand-art,
.v96-app.turn-ai:not(.response-active) .hand-card:hover .hand-actions,
.v96-app.turn-ai:not(.response-active) .hand-card:focus-within .hand-actions{
  transform:none!important;
  transition:none!important;
  filter:none!important;
}

.mobile-match-menu-button,
.mobile-match-menu-overlay{display:none}
.mobile-match-menu-overlay[hidden]{display:none!important}

@media(max-width:760px){
  html,body{min-width:0!important;width:100%!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important}
  .v96-app{
    width:100%!important;
    height:auto!important;
    min-height:100dvh!important;
    overflow:visible!important;
  }
  .v96-app .gl-app{
    width:100%!important;
    height:auto!important;
    min-height:100dvh!important;
    padding:3px!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-rows:auto auto auto auto!important;
    gap:4px!important;
    overflow:visible!important;
  }
  .v96-app .control-sidebar{display:contents!important}
  .v96-app .turn-panel{grid-row:1!important}
  .v96-app .card-played-panel{grid-row:2!important}
  .v96-app .main-stage{grid-row:3!important}
  .v96-app .phase-panel{grid-row:4!important}
  .v96-app .match-panel{display:none!important}

  /* Top mobile controls: one Match Menu button plus turn information. */
  .v96-app .turn-panel{
    display:grid!important;
    grid-template-columns:86px minmax(0,1fr)!important;
    grid-template-rows:auto!important;
    gap:6px!important;
    align-items:stretch!important;
    min-height:74px!important;
    padding:6px!important;
  }
  .v96-app .turn-panel .setup-actions{display:none!important}
  .v96-app .mobile-match-menu-button{
    display:block!important;
    grid-column:1!important;
    grid-row:1!important;
    width:100%!important;
    min-height:62px!important;
    padding:6px!important;
    border:1px solid #36566d!important;
    border-radius:8px!important;
    background:#071a28!important;
    color:#f4f7fb!important;
    font-size:9px!important;
    font-weight:950!important;
    letter-spacing:.04em!important;
    text-transform:uppercase!important;
    cursor:pointer!important;
  }
  .v96-app .turn-summary{
    grid-column:2!important;
    grid-row:1!important;
    min-width:0!important;
    padding:2px 4px!important;
  }
  .v96-app .turn-summary strong{font-size:16px!important}
  .v96-app .turn-summary span{font-size:9px!important}
  .v96-app .turn-summary .turn-status{font-size:8px!important;-webkit-line-clamp:2!important}

  /* Card Played stays visible above the opponent battlefield. */
  .v96-app .card-played-panel{
    min-height:72px!important;
    max-height:118px!important;
    grid-template-rows:20px minmax(0,1fr) 20px!important;
    padding:5px!important;
    overflow:hidden!important;
  }
  .v96-app .played-grid{
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    grid-template-rows:minmax(42px,1fr)!important;
    gap:3px!important;
  }
  .v96-app .played-grid .combined-played-card:nth-child(n+7){display:none!important}

  /* Mobile battlefield follows the approved vertical reference. */
  .v96-app .main-stage{
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    display:grid!important;
    grid-template-rows:28px 62px auto 8px auto 130px 30px!important;
    gap:4px!important;
    overflow:visible!important;
  }
  .v96-app .player-name{
    width:calc(100% - 4px)!important;
    min-width:0!important;
    max-width:none!important;
    height:28px!important;
    padding:3px 10px!important;
    border-radius:8px!important;
    font-size:12px!important;
  }
  .v96-app .player-name span{font-size:8px!important}
  .v96-app .hand-area{
    grid-template-columns:54px minmax(0,1fr) 54px!important;
    min-height:0!important;
    padding:0 3px!important;
  }
  .v96-app .strip.v94-strip .back{
    width:31px!important;
    height:45px!important;
    max-height:45px!important;
    flex-basis:31px!important;
  }
  .v96-app .racial-coins{gap:3px!important}
  .v96-app .coin{width:23px!important;height:23px!important;min-width:23px!important;min-height:23px!important}

  .v96-app .field{
    height:auto!important;
    min-height:0!important;
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:4px!important;
    padding:0!important;
    overflow:visible!important;
  }
  .v96-app .field--opponent{grid-template-rows:72px 330px!important}
  .v96-app .field--player{grid-template-rows:330px 72px!important}
  .v96-app .field .resource-rail{display:contents!important}
  .v96-app .field--opponent .zone{grid-row:1!important}
  .v96-app .field--player .zone{grid-row:2!important}
  .v96-app .field .hero-row{
    grid-column:1/-1!important;
    width:100%!important;
    height:330px!important;
    min-height:330px!important;
    padding:4px!important;
    gap:4px!important;
  }
  .v96-app .field--opponent .hero-row{grid-row:2!important}
  .v96-app .field--player .hero-row{grid-row:1!important}
  .v96-app .zone{
    width:auto!important;
    height:72px!important;
    min-height:72px!important;
    padding:4px 2px!important;
  }
  .v96-app .zone>span{font-size:7px!important}
  .v96-app .zone em{font-size:6px!important}
  .v96-app .zoneCard{height:50px!important;min-height:50px!important;max-height:50px!important}
  .v96-app .zoneCard img{max-height:50px!important;max-width:48px!important}
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b,
  .v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>b,
  .v96-app .zone[data-zone-type="Discard Pile"] .zoneCard>b{bottom:3px!important;font-size:11px!important}
  .v96-app .zone[data-zone-type="Mana Pool"] .zoneCard>b{font-size:13px!important}

  .v96-app .hero-lane{gap:3px!important}
  .v96-app .hero-row--opponent .hero-lane:not(.legacy-slot){grid-template-rows:34px minmax(0,1fr)!important}
  .v96-app .hero-row--player .hero-lane:not(.legacy-slot){grid-template-rows:minmax(0,1fr) 34px!important}
  .v96-app .attachment-row{gap:3px!important}
  .v96-app .attachment-row .slot{font-size:5.5px!important}
  .v96-app .hero-card.hero-main{width:clamp(78px,23vw,104px)!important}
  .v96-app .hero-health-row.hero-health-overlay{right:-5px!important;top:1px!important;transform:scale(.94)!important;transform-origin:top right!important}
  .v96-app .hero-status-overlay{top:5px!important;left:4px!important}
  .v96-app .hero-exp-badge{left:auto!important;right:5px!important;bottom:4px!important}
  .v96-app .heroActions{right:3px!important;bottom:3px!important;max-width:92px!important}
  .v96-app .heroActions .actionBtn{max-width:92px!important;font-size:6px!important}

  .v96-app .field-divider{height:8px!important;padding:0 18px!important}
  .v96-app .hand-area--player .handPanel{
    overflow-x:auto!important;
    overflow-y:hidden!important;
    scrollbar-width:thin!important;
  }
  .v96-app .hand-area--player .handCards{
    width:max-content!important;
    min-width:100%!important;
    height:124px!important;
    justify-content:flex-start!important;
    padding:8px 22px 3px!important;
  }
  .v96-app .hand-card{
    width:68px!important;
    min-width:68px!important;
    max-width:68px!important;
    height:112px!important;
    flex-basis:68px!important;
    grid-template-rows:minmax(0,91px) 17px!important;
  }
  .v96-app .hand-card .hand-art,
  .v96-app .hand-card .hand-art img{height:91px!important}
  .v96-app .player-footer-bar{height:30px!important}

  /* Phase Tracker remains below the board and spans mobile width. */
  .v96-app .phase-panel{
    min-height:194px!important;
    display:grid!important;
    grid-template-rows:auto auto auto!important;
    gap:7px!important;
    padding:7px!important;
  }
  .v96-app .phase-list{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:4px!important}
  .v96-app .phase-list button{min-height:38px!important;font-size:6.5px!important;padding:3px!important}
  .v96-app .phase-actions{grid-template-rows:38px 48px!important;gap:5px!important}
  .v96-app .phase-actions .reposition,
  .v96-app .phase-actions .cancel-action{height:38px!important;min-height:38px!important}
  .v96-app .phase-actions .next-phase{height:48px!important;min-height:48px!important;font-size:9px!important}

  /* Mobile utility actions open in a non-layout-shifting bottom sheet. */
  .v96-app .mobile-match-menu-overlay.open{
    position:fixed!important;
    inset:0!important;
    z-index:12000!important;
    display:flex!important;
    align-items:flex-end!important;
    justify-content:center!important;
    padding:12px!important;
    background:rgba(0,0,0,.70)!important;
  }
  .v96-app .mobile-match-menu-sheet{
    width:min(460px,100%)!important;
    max-height:82dvh!important;
    padding:10px!important;
    border:1px solid #6e5a1c!important;
    border-radius:14px!important;
    background:#071522!important;
    box-shadow:0 20px 60px rgba(0,0,0,.82)!important;
  }
  .v96-app .mobile-match-menu-sheet header{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:10px!important;
    padding:2px 2px 10px!important;
  }
  .v96-app .mobile-match-menu-sheet header strong{color:#f4d35e!important;font-size:15px!important}
  .v96-app .mobile-match-menu-sheet header button{
    min-height:32px!important;
    padding:0 12px!important;
    border:1px solid #36566d!important;
    border-radius:7px!important;
    background:#102131!important;
  }
  .v96-app .mobile-match-menu-actions{display:grid!important;gap:7px!important}
  .v96-app .mobile-match-menu-actions>button{
    width:100%!important;
    min-height:44px!important;
    border:1px solid #36566d!important;
    border-radius:8px!important;
    background:#0c1d2b!important;
    color:#edf5fb!important;
    font-size:10px!important;
    font-weight:900!important;
    text-transform:uppercase!important;
  }
  .v96-app .mobile-match-menu-actions>.surrender{
    border-color:#a82b40!important;
    background:#691323!important;
    color:#fff!important;
  }
}

/* ========================================================================== */
/* Local AI v5.23 — compact readable HP, safe Hero spacing, stable hand review. */
/* Casting Card Played lifecycle is implemented in the shared application JS.  */
/* ========================================================================== */

/* Small dark HP container: readable on bright artwork, shorter but thicker bar.
   The overlay stays upright when only the Hero image rotates for Exhaust. */
.v96-app .hero-health-row.hero-health-overlay{
  top:-5px!important;
  right:-10px!important;
  width:46px!important;
  height:21px!important;
  padding:0!important;
  overflow:visible!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar{
  position:relative!important;
  width:46px!important;
  height:13px!important;
  margin:0!important;
  border:0!important;
  border-radius:6px!important;
  background:rgba(1,8,14,.88)!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar:after{
  content:""!important;
  position:absolute!important;
  z-index:0!important;
  left:7px!important;
  bottom:-7px!important;
  width:32px!important;
  height:5px!important;
  border-radius:999px!important;
  background:rgba(0,0,0,.72)!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar>span{
  position:absolute!important;
  z-index:1!important;
  left:7px!important;
  right:auto!important;
  top:auto!important;
  bottom:-7px!important;
  width:32px!important;
  height:5px!important;
  border-radius:999px!important;
  transform:scaleX(var(--hp-ratio,1))!important;
  transform-origin:left center!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar small{
  position:absolute!important;
  z-index:2!important;
  inset:0!important;
  display:grid!important;
  place-items:center!important;
  padding:0 2px!important;
  font-size:9px!important;
  line-height:13px!important;
  letter-spacing:-.2px!important;
  white-space:nowrap!important;
  overflow:visible!important;
}

/* Leave a resolution-independent safe margin between card art and lane borders. */
.v96-app .hero-card.hero-main{
  width:clamp(84px,7.25vw,112px)!important;
  max-height:calc(100% - 14px)!important;
}
.v96-app .hero-row--opponent .hero-card-anchor{transform:translateY(-4px)!important}
.v96-app .hero-row--player .hero-card-anchor{transform:translateY(4px)!important}

/* Opponent turn: lock position, keep non-moving hover feedback and Card Review. */
.v96-app.turn-ai:not(.response-active) .hand-card,
.v96-app.turn-ai:not(.response-active) .hand-card .hand-art{cursor:pointer!important}
.v96-app.turn-ai:not(.response-active) .hand-card:hover .hand-art,
.v96-app.turn-ai:not(.response-active) .hand-card:focus-within .hand-art,
.v96-app.turn-ai:not(.response-active) .hand-card.hand-hover-active .hand-art{
  transform:none!important;
  filter:brightness(1.08) drop-shadow(0 0 4px rgba(130,190,232,.42))!important;
}
.v96-app.turn-ai:not(.response-active) .hand-card:hover .hand-actions,
.v96-app.turn-ai:not(.response-active) .hand-card:focus-within .hand-actions,
.v96-app.turn-ai:not(.response-active) .hand-card.hand-hover-active .hand-actions{
  transform:none!important;
}

@media(max-height:820px){
  .v96-app .hero-card.hero-main{width:clamp(77px,6.75vw,98px)!important;max-height:calc(100% - 12px)!important}
}
@media(max-width:760px){
  .v96-app .hero-card.hero-main{width:clamp(76px,22vw,100px)!important;max-height:calc(100% - 10px)!important}
  .v96-app .hero-row--opponent .hero-card-anchor{transform:translateY(-2px)!important}
  .v96-app .hero-row--player .hero-card-anchor{transform:translateY(2px)!important}
  .v96-app .hero-health-row.hero-health-overlay{top:-4px!important;right:-7px!important;transform:scale(.94)!important;transform-origin:top right!important}
}


/* ========================================================================== */
/* Local AI v5.24 — Grandis blue Deck Setup and fixed-position Hand inspection. */
/* ========================================================================== */

/* The Hand card itself remains locked during the opponent turn. The existing
   fixed hover-card-zoom portal stays available and does not alter fan geometry. */
.v96-app.turn-ai:not(.response-active) .hand-card,
.v96-app.turn-ai:not(.response-active) .hand-card:hover,
.v96-app.turn-ai:not(.response-active) .hand-card:focus-within{
  transform:var(--fan-transform,none)!important;
}
.v96-app.turn-ai:not(.response-active) .hand-card .hand-art{
  transform:none!important;
}
.v96-app.turn-ai:not(.response-active) .hover-card-zoom.is-hand-hover{
  display:block!important;
}

/* Shared Grandis blue theme. Visible black/green setup surfaces are replaced
   by navy tones sampled from the approved Grandis illustrated background. */
body.deck-setup-active{
  background:#151f32 url('../assets/Background.png') center/cover fixed!important;
}
.deck-setup-screen.runtime-ui-v14-setup{
  background:
    linear-gradient(rgba(7,13,23,.54),rgba(7,13,23,.72)),
    url('../assets/Background.png') center/cover fixed!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-top,
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell,
.deck-setup-note{
  background:rgba(13,22,36,.86)!important;
  border-color:rgba(214,180,95,.42)!important;
  backdrop-filter:blur(8px)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-side{
  background:linear-gradient(180deg,rgba(21,31,50,.90),rgba(12,21,34,.92))!important;
  border-color:#31445d!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card,
.deck-setup-screen.runtime-ui-v14-setup .deck-counts,
.deck-setup-screen.runtime-ui-v14-setup .legacy-package-list span,
.deck-setup-screen.runtime-ui-v14-setup .deck-select-label select,
.deck-setup-screen.runtime-ui-v14-setup .import-button,
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions button,
.setup-status-pill{
  background:#151f32!important;
  border-color:#3a506b!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card{
  background:rgba(15,24,39,.92)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions{
  background:linear-gradient(rgba(13,22,36,.55),rgba(13,22,36,.94))!important;
  border-top-color:#31445d!important;
}


/* ========================================================================== */
/* Mobile resource visual centering — Local AI v5.30 / PvP Railway v2.5.9.   */
/* Desktop resource placement is intentionally unchanged.                     */
/* ========================================================================== */
@media(max-width:760px){
  .v96-app .field .zone .zoneCard>img{
    position:absolute!important;
    top:50%!important;
    left:50%!important;
    right:auto!important;
    bottom:auto!important;
    transform:translate(-50%,-50%)!important;
    margin:0!important;
    object-position:center!important;
  }
}

/* ========================================================================== */
/* Local AI v5.30 / PvP Railway v2.5.9 — compact HP overlay correction.       */
/* Restores the v5.25 in-game proportions, adds +1 px HP text and +2 px bar,  */
/* and aligns the complete container bottom-left to the approved point.                    */
/* ========================================================================== */
.v96-app .hero-health-row.hero-health-overlay{
  position:absolute!important;
  z-index:145!important;
  left:calc(71.6% - 4px)!important;
  top:calc(9.8% + 7px)!important;
  right:auto!important;
  width:46px!important;
  min-width:46px!important;
  height:21px!important;
  padding:0!important;
  display:block!important;
  border:0!important;
  outline:0!important;
  border-radius:6px!important;
  background:rgba(1,8,14,.90)!important;
  box-shadow:none!important;
  overflow:visible!important;
  pointer-events:none!important;
  transform:translateY(-100%)!important;
  transform-origin:left bottom!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar{
  position:relative!important;
  width:46px!important;
  min-width:46px!important;
  height:21px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:6px!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar:after{
  content:""!important;
  position:absolute!important;
  z-index:0!important;
  left:6px!important;
  right:auto!important;
  top:auto!important;
  bottom:2px!important;
  width:34px!important;
  height:5px!important;
  border-radius:999px!important;
  background:rgba(0,0,0,.76)!important;
  box-shadow:none!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar>span{
  position:absolute!important;
  z-index:1!important;
  left:6px!important;
  right:auto!important;
  top:auto!important;
  bottom:2px!important;
  width:34px!important;
  height:5px!important;
  border-radius:999px!important;
  transform:scaleX(var(--hp-ratio,1))!important;
  transform-origin:left center!important;
}
.v96-app .hero-health-row.hero-health-overlay .hp-bar small{
  position:absolute!important;
  z-index:2!important;
  inset:0 0 auto 0!important;
  width:46px!important;
  min-width:46px!important;
  height:14px!important;
  display:grid!important;
  place-items:center!important;
  padding:0 2px!important;
  color:#fff!important;
  font-size:10px!important;
  font-weight:900!important;
  line-height:14px!important;
  letter-spacing:-.2px!important;
  white-space:nowrap!important;
  overflow:visible!important;
  text-shadow:0 1px 2px #000!important;
}
@media(max-width:760px){
  .v96-app .hero-health-row.hero-health-overlay{
    left:calc(71.6% - 4px)!important;
    top:calc(9.8% + 7px)!important;
    right:auto!important;
    transform:translateY(-100%) scale(.94)!important;
    transform-origin:left bottom!important;
  }
}

/* v5.30 / v2.5.9 Card Played audit lock: inline source thumbnails only. */
.played-chain-step>img,.played-modifier-item>img{width:42px!important;height:auto!important;max-height:60px!important;object-fit:contain!important;}
.played-modifier-item{display:flex;align-items:center;gap:8px;margin:5px 0}.played-modifier-item p{margin:0}.played-audit-block{margin-top:10px}


/* ========================================================================== */
/* Local player turn announcement — v5.33 / v2.5.15.                         */
/* Shown only when the local PLAYER enters Draw Phase; opponent turns stay    */
/* silent on this client.                                                     */
/* ========================================================================== */
.gl-turn-announcement{
  position:fixed!important;
  inset:0!important;
  z-index:5900!important;
  display:grid!important;
  place-items:center!important;
  overflow:hidden!important;
  pointer-events:none!important;
}
.gl-turn-announcement-ribbon{
  position:relative!important;
  width:min(560px,78vw)!important;
  min-height:82px!important;
  display:grid!important;
  place-items:center!important;
  align-content:center!important;
  gap:2px!important;
  padding:12px 54px!important;
  color:#f5d878!important;
  text-align:center!important;
  background:linear-gradient(90deg,rgba(4,13,24,0),rgba(8,26,44,.96) 15%,rgba(12,34,55,.98) 50%,rgba(8,26,44,.96) 85%,rgba(4,13,24,0))!important;
  border-top:1px solid rgba(225,190,85,.72)!important;
  border-bottom:1px solid rgba(225,190,85,.72)!important;
  box-shadow:0 16px 45px rgba(0,0,0,.42),inset 0 1px rgba(255,255,255,.05)!important;
  animation:glPlayerTurnSweep 1.65s cubic-bezier(.2,.72,.18,1) both!important;
  will-change:transform,opacity!important;
}
.gl-turn-announcement-ribbon:before,.gl-turn-announcement-ribbon:after{
  content:""!important;
  position:absolute!important;
  top:50%!important;
  width:24%!important;
  height:1px!important;
  background:linear-gradient(90deg,transparent,rgba(245,216,120,.78))!important;
}
.gl-turn-announcement-ribbon:before{left:2%!important}
.gl-turn-announcement-ribbon:after{right:2%!important;transform:scaleX(-1)!important}
.gl-turn-announcement-ribbon strong{
  position:relative!important;
  z-index:1!important;
  font-family:Georgia,"Times New Roman",serif!important;
  font-size:clamp(25px,3vw,42px)!important;
  line-height:1!important;
  letter-spacing:.13em!important;
  text-shadow:0 2px 10px #000!important;
}
.gl-turn-announcement-ribbon span{
  position:relative!important;
  z-index:1!important;
  color:#d7e5f1!important;
  font-size:11px!important;
  font-weight:800!important;
  letter-spacing:.12em!important;
  text-transform:uppercase!important;
}
@keyframes glPlayerTurnSweep{
  0%{transform:translateX(-115vw);opacity:0}
  18%{transform:translateX(0);opacity:1}
  68%{transform:translateX(0);opacity:1}
  100%{transform:translateX(115vw);opacity:0}
}
@media(max-width:760px){
  .gl-turn-announcement-ribbon{width:88vw!important;min-height:64px!important;padding:10px 30px!important}
  .gl-turn-announcement-ribbon strong{font-size:25px!important}
  .gl-turn-announcement-ribbon span{font-size:9px!important}
}
@media(prefers-reduced-motion:reduce){
  .gl-turn-announcement-ribbon{animation:glPlayerTurnFade 1.35s ease both!important}
  @keyframes glPlayerTurnFade{0%,100%{opacity:0}20%,75%{opacity:1}}
}


/* Coin motion correction — v5.33 / v2.5.15.
   Face swaps occur only at the edge-on point; no color-changing filter is allowed. */
.gl-opening-coin-flip-stage img,
.pvp-coin-outcome-flip{
  filter:none!important;
  backface-visibility:hidden;
  transform-origin:center center;
}

/* ========================================================================== */
/* Local AI v5.33 / PvP v2.5.15 — Legacy Attachment Slot size parity.        */
/* Legacy keeps its own name row, but its Attachment band follows the exact   */
/* Hero-lane height on desktop and responsive mobile layouts.                 */
/* ========================================================================== */
.v96-app .hero-row--opponent .hero-lane.legacy-slot{
  grid-template-rows:35px minmax(0,1fr) 27px!important;
}
.v96-app .hero-row--opponent .hero-lane.legacy-slot>.attachment-row{grid-row:1!important}
.v96-app .hero-row--opponent .hero-lane.legacy-slot>.hero-stage{grid-row:2!important}
.v96-app .hero-row--opponent .hero-lane.legacy-slot>.legacy-health{grid-row:3!important}
.v96-app .hero-row--player .hero-lane.legacy-slot{
  grid-template-rows:27px minmax(0,1fr) 35px!important;
}
.v96-app .hero-row--player .hero-lane.legacy-slot>.legacy-health{grid-row:1!important}
.v96-app .hero-row--player .hero-lane.legacy-slot>.hero-stage{grid-row:2!important}
.v96-app .hero-row--player .hero-lane.legacy-slot>.attachment-row{grid-row:3!important}
@media(max-width:760px){
  .v96-app .hero-row--opponent .hero-lane.legacy-slot{
    grid-template-rows:34px minmax(0,1fr) 26px!important;
  }
  .v96-app .hero-row--player .hero-lane.legacy-slot{
    grid-template-rows:26px minmax(0,1fr) 34px!important;
  }
}



/* Grandis Legacy VS AI v5.37 — Deck Builder entry inside Deck Setup */
.deck-builder-setup-note{margin-top:12px;border:1px solid rgba(244,211,94,.32);background:rgba(22,41,76,.62);color:#dce8f6;border-radius:10px;padding:9px 11px;font-size:12px;line-height:1.45}
.deck-setup-actions .deck-builder-launch{background:#16294c!important;border-color:#ddb84f!important;color:#fff0aa!important;font-weight:900;min-width:160px}
.deck-setup-actions .deck-builder-launch:hover{filter:brightness(1.12)}
@media(max-width:700px){.deck-setup-actions{display:grid!important;grid-template-columns:1fr!important}.deck-setup-actions button{width:100%!important}.deck-setup-actions .deck-builder-launch,.deck-setup-actions .start-match-primary{min-width:0!important}}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.39 — responsive Deck Setup and mobile battlefield. */
/* UI-only: gameplay/runtime authority is unchanged.                           */
/* ========================================================================== */

/* Desktop Deck Setup: remove repeated labels, use an 80/20 picker/import row,
   preserve full Hero artwork, and separate the Deck Builder action. */
.deck-setup-screen.runtime-ui-v14-setup{
  grid-template-rows:auto minmax(0,1fr)!important;
  gap:8px!important;
  padding:8px 10px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-top{
  min-height:48px!important;
  padding:7px 12px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-top h1{
  font-size:22px!important;
  letter-spacing:.01em!important;
}
.deck-setup-screen.runtime-ui-v14-setup .setup-status-pill{
  padding:6px 11px!important;
  font-size:11px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{
  grid-template-rows:minmax(0,1fr) auto!important;
  padding:10px 12px!important;
  overflow:hidden!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-grid{
  gap:12px!important;
  overflow:hidden!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-side{
  grid-template-rows:auto auto auto minmax(0,1fr) auto!important;
  gap:8px!important;
  padding:12px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-side header{
  min-height:28px!important;
  align-items:center!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-side h3{
  font-size:18px!important;
}
.deck-picker-row{
  display:grid!important;
  grid-template-columns:minmax(0,4fr) minmax(108px,1fr)!important;
  gap:10px!important;
  min-width:0!important;
}
.deck-picker-row select,
.deck-picker-row .import-button{
  width:100%!important;
  height:42px!important;
  min-width:0!important;
  margin:0!important;
  border-radius:10px!important;
}
.deck-picker-row select{
  border:1px solid #3a506b!important;
  background:#151f32!important;
  color:#fff!important;
  padding:0 12px!important;
  font-size:15px!important;
  text-overflow:ellipsis!important;
}
.deck-picker-row .import-button{
  padding:0 12px!important;
  white-space:nowrap!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-counts{
  font-size:11px!important;
  padding:5px 9px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-preview{
  min-height:0!important;
  overflow:visible!important;
  align-items:stretch!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card{
  display:grid!important;
  grid-template-rows:auto minmax(0,1fr)!important;
  min-height:0!important;
  padding:7px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card button{
  min-height:0!important;
  display:grid!important;
  place-items:center!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card img{
  width:auto!important;
  max-width:100%!important;
  height:min(34vh,300px)!important;
  max-height:100%!important;
  aspect-ratio:63/88!important;
  object-fit:contain!important;
  object-position:center!important;
  margin:0 auto!important;
  border:0!important;
  background:transparent!important;
}
.deck-setup-actions{
  align-items:center!important;
  justify-content:flex-end!important;
  gap:10px!important;
}
.deck-setup-actions .deck-builder-launch{
  margin-right:auto!important;
  min-width:190px!important;
  background:linear-gradient(180deg,#244986,#16294c)!important;
  border-color:#f0cb62!important;
  color:#fff3b3!important;
  box-shadow:0 0 0 1px rgba(240,203,98,.18),0 0 18px rgba(54,112,208,.34)!important;
  font-weight:950!important;
}
.deck-setup-actions .deck-builder-launch:hover{
  filter:brightness(1.15)!important;
  box-shadow:0 0 0 1px rgba(240,203,98,.32),0 0 24px rgba(54,112,208,.48)!important;
}
.deck-setup-actions .reset-decks-button{
  background:#111a26!important;
  border-color:#394a5e!important;
  color:#d2dce8!important;
}
.deck-setup-actions .start-match-primary{
  min-width:180px!important;
}
.deck-builder-setup-note,.deck-setup-note,.deck-source,.legacy-package-list,.deck-select-label{display:none!important}

/* Mobile Deck Setup lock: compact one-line header, normal document scrolling,
   small Import buttons, and no Deck Builder UI. */
@media(max-width:700px){
  html,body{min-height:100%!important;overflow-y:auto!important}
  body.deck-setup-active{overflow-x:hidden!important;overflow-y:auto!important}
  .deck-setup-screen.runtime-ui-v14-setup{
    position:relative!important;
    inset:auto!important;
    width:100%!important;
    height:auto!important;
    min-height:100dvh!important;
    display:block!important;
    padding:6px!important;
    overflow:visible!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-top{
    min-height:44px!important;
    flex-direction:row!important;
    align-items:center!important;
    padding:7px 10px!important;
    margin:0 0 6px!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-top h1{
    font-size:18px!important;
    white-space:nowrap!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .setup-status-pill{
    margin-left:auto!important;
    padding:5px 8px!important;
    font-size:9px!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    display:block!important;
    padding:8px!important;
    overflow:visible!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-grid{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:9px!important;
    overflow:visible!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-side{
    display:grid!important;
    grid-template-rows:auto auto auto auto auto!important;
    gap:7px!important;
    overflow:visible!important;
    padding:10px!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-side h3{font-size:17px!important}
  .deck-picker-row{
    grid-template-columns:minmax(0,1fr) 94px!important;
    gap:7px!important;
  }
  .deck-picker-row select,
  .deck-picker-row .import-button{
    height:38px!important;
    font-size:12px!important;
  }
  .deck-picker-row .import-button{padding:0 7px!important}
  .deck-setup-screen.runtime-ui-v14-setup .deck-counts{font-size:10px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-preview{gap:6px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card{padding:5px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card span{font-size:9px!important;margin-bottom:3px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card img{
    width:100%!important;
    height:auto!important;
    max-height:155px!important;
    aspect-ratio:63/88!important;
  }
  .deck-setup-actions{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:7px!important;
    position:sticky!important;
    bottom:0!important;
    z-index:20!important;
    margin:9px -8px -8px!important;
    padding:9px 8px calc(9px + env(safe-area-inset-bottom))!important;
    background:rgba(13,22,36,.96)!important;
    border-top:1px solid #31445d!important;
    backdrop-filter:blur(8px)!important;
  }
  .deck-setup-actions .deck-builder-launch{display:none!important}
  .deck-setup-actions button{width:100%!important;height:40px!important;min-width:0!important;font-size:11px!important}
  .deck-setup-actions .start-match-primary{grid-column:2!important}
}

/* Mobile battlefield lock: Card Played remains permanently visible and the
   battlefield is compact enough to track both teams without desktop-scale gaps. */
@media(max-width:760px){
  .v96-app .gl-app{gap:3px!important;padding:2px!important}
  .v96-app .turn-panel{
    min-height:58px!important;
    grid-template-columns:72px minmax(0,1fr)!important;
    gap:5px!important;
    padding:4px!important;
  }
  .v96-app .mobile-match-menu-button{min-height:50px!important;font-size:8px!important}
  .v96-app .turn-summary{padding:1px 3px!important}
  .v96-app .turn-summary strong{font-size:14px!important}
  .v96-app .turn-summary span{font-size:8px!important}
  .v96-app .turn-summary .turn-status{font-size:7px!important;line-height:1.2!important}

  .v96-app .card-played-panel{
    min-height:66px!important;
    max-height:82px!important;
    grid-template-rows:17px minmax(0,1fr) 17px!important;
    gap:2px!important;
    padding:4px!important;
    position:relative!important;
    z-index:30!important;
  }
  .v96-app .card-played-panel header strong{font-size:10px!important}
  .v96-app .card-played-panel header span{font-size:7px!important}
  .v96-app .card-played-panel .full-width{min-height:17px!important;height:17px!important;font-size:7px!important;padding:0!important}
  .v96-app .played-grid{
    display:flex!important;
    align-items:center!important;
    gap:4px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    min-height:0!important;
  }
  .v96-app .combined-played-card{
    width:38px!important;
    min-width:38px!important;
    height:38px!important;
    flex:0 0 38px!important;
    padding:1px!important;
  }
  .v96-app .combined-played-card img{max-width:25px!important;max-height:34px!important;object-fit:contain!important}
  .v96-app .combined-played-card em{font-size:5.5px!important}

  .v96-app .main-stage{
    grid-template-rows:24px 48px auto 6px auto 108px 26px!important;
    gap:3px!important;
  }
  .v96-app .player-name{
    height:24px!important;
    padding:2px 8px!important;
    font-size:10px!important;
  }
  .v96-app .player-name span{font-size:7px!important}
  .v96-app .hand-area{grid-template-columns:45px minmax(0,1fr) 45px!important;padding:0 2px!important}
  .v96-app .strip.v94-strip .back{width:27px!important;height:40px!important;max-height:40px!important;flex-basis:27px!important}
  .v96-app .coin{width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important}

  .v96-app .field--opponent{grid-template-rows:54px 210px!important}
  .v96-app .field--player{grid-template-rows:210px 54px!important}
  .v96-app .field .hero-row{
    height:210px!important;
    min-height:210px!important;
    padding:3px!important;
    gap:3px!important;
  }
  .v96-app .zone{height:54px!important;min-height:54px!important;padding:2px 1px!important}
  .v96-app .zone>span{font-size:6.5px!important}
  .v96-app .zone em{font-size:5.5px!important}
  .v96-app .zoneCard{height:37px!important;min-height:37px!important;max-height:37px!important}
  .v96-app .zoneCard img{max-height:37px!important;max-width:38px!important}
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b,
  .v96-app .zone[data-zone-type="Legacy Deck"] .zoneCard>b,
  .v96-app .zone[data-zone-type="Discard Pile"] .zoneCard>b{font-size:9px!important}
  .v96-app .zone[data-zone-type="Mana Pool"] .zoneCard>b{font-size:11px!important}

  .v96-app .hero-row--opponent .hero-lane:not(.legacy-slot){grid-template-rows:29px minmax(0,1fr)!important}
  .v96-app .hero-row--player .hero-lane:not(.legacy-slot){grid-template-rows:minmax(0,1fr) 29px!important}
  .v96-app .attachment-row{gap:2px!important}
  .v96-app .attachment-row .slot{font-size:5px!important}
  .v96-app .hero-card.hero-main{width:clamp(82px,25vw,102px)!important;max-height:170px!important}
  .v96-app .hero-health-row.hero-health-overlay{transform:scale(.88)!important}
  .v96-app .hero-status-overlay{transform:scale(.84)!important;transform-origin:top left!important}
  .v96-app .heroActions{max-width:82px!important}
  .v96-app .heroActions .actionBtn{max-width:82px!important;font-size:5.5px!important}
  .v96-app .field-divider{height:6px!important}

  .v96-app .hand-area--player .handCards{height:102px!important;padding:5px 14px 2px!important}
  .v96-app .hand-card{width:61px!important;min-width:61px!important;max-width:61px!important;height:96px!important;flex-basis:61px!important;grid-template-rows:minmax(0,79px) 14px!important}
  .v96-app .hand-card .hand-art,.v96-app .hand-card .hand-art img{height:79px!important}
  .v96-app .player-footer-bar{height:26px!important}

  .v96-app .phase-panel{
    min-height:116px!important;
    grid-template-rows:18px 30px 58px!important;
    gap:4px!important;
    padding:4px!important;
    position:sticky!important;
    bottom:0!important;
    z-index:100!important;
    background:rgba(7,17,27,.97)!important;
    box-shadow:0 -8px 20px rgba(0,0,0,.45)!important;
  }
  .v96-app .phase-panel header strong{font-size:9px!important}
  .v96-app .phase-panel header span{font-size:7px!important}
  .v96-app .phase-list{gap:3px!important}
  .v96-app .phase-list button{min-height:30px!important;height:30px!important;font-size:5.8px!important;padding:2px!important}
  .v96-app .phase-actions{grid-template-rows:24px 30px!important;gap:3px!important}
  .v96-app .phase-actions .reposition,.v96-app .phase-actions .cancel-action{height:24px!important;min-height:24px!important;font-size:6.5px!important}
  .v96-app .phase-actions .next-phase{height:30px!important;min-height:30px!important;font-size:8px!important}
}


/* VS AI v5.39 — transparent Response diagnostics and straight mobile hands. */
.response-option.unavailable{opacity:.56;filter:saturate(.35);border-style:dashed!important}
.response-option.unavailable .response-option-preview{cursor:zoom-in!important}
.response-option.unavailable .response-option-select{border-color:#6e5b63!important;background:#2a1d24!important;color:#ffd2dc!important;cursor:pointer!important}
.response-option.available{order:0}.response-option.unavailable{order:1}
.response-unavailable-intro{margin:0 0 10px;color:#c7d7e8;line-height:1.45}
.response-reason-list{margin:0;padding-left:20px;color:#f0f4f8;line-height:1.55}
.response-reason-list li+li{margin-top:6px}
@media(max-width:760px){
  .v96-app .hand-area--player .handPanel,.v96-app .hand-area--opponent .strip.v94-strip{overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:thin!important}
  .v96-app .handCards,.v96-app .strip.v94-strip .backs{justify-content:flex-start!important;gap:6px!important;perspective:none!important;width:max-content!important;min-width:100%!important;padding-left:10px!important;padding-right:10px!important}
  .v96-app .hand-card,.v96-app .opponent-hand-slot{margin-left:0!important;transform:none!important;transform-origin:center!important;transition:filter .15s ease!important}
  .v96-app .hand-card:hover,.v96-app .hand-card:focus-within{transform:none!important;filter:brightness(1.06)!important}
  .v96-app .opponent-hand-slot{transform:none!important}
  .response-option-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .response-option-preview img{height:112px!important;object-fit:contain!important;background:#07111b!important}
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.40 — compact mobile status/actions and footer flow. */
/* Mobile only; desktop Hero action buttons and battlefield placement remain.  */
/* ========================================================================== */
.mobile-status-summary,.mobile-hero-action-trigger,.mobile-player-footer{display:none!important}
.mobile-hero-action-menu{display:grid;gap:8px}
.mobile-action-choice{width:100%;display:grid;gap:3px;text-align:left;border:1px solid #4b6b82;border-radius:10px;background:#102235;color:#f7fbff;padding:10px 12px;cursor:pointer}
.mobile-action-choice strong{color:#f4cf62;font-size:14px}.mobile-action-choice span{font-size:11px;color:#c9d9e8}.mobile-action-choice small{font-size:10px;line-height:1.35;color:#9fb1c2}.mobile-action-choice.is-disabled{opacity:.68;cursor:default;border-style:dashed}
@media(max-width:760px){
  .v96-app .gl-app{grid-template-rows:auto auto auto auto auto!important}
  .v96-app .main-stage{grid-row:3!important;grid-template-rows:24px 48px auto 6px auto 108px!important}
  .v96-app .phase-panel{grid-row:4!important}
  .v96-app .mobile-player-footer{grid-row:5!important;display:flex!important;width:100%!important;height:28px!important;padding:0 3px!important;align-items:stretch!important;gap:5px!important}
  .v96-app .desktop-player-footer{display:none!important}
  .v96-app .mobile-player-footer .player-name--self{height:28px!important;max-width:none!important;flex:1 1 70%!important;align-self:stretch!important;border-radius:7px!important;padding:3px 8px!important;font-size:10px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v96-app .mobile-player-footer .player-name--self span{font-size:7px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v96-app .mobile-player-footer .battle-log-bottom-button{flex:0 0 30%!important;width:auto!important;height:28px!important;margin:0!important;border-radius:7px!important;font-size:7px!important;padding:0 4px!important}

  .v96-app .hero-indicator-stack{display:none!important}
  .v96-app .hero-status-overlay{top:5px!important;left:5px!important;right:auto!important;z-index:22!important;transform:none!important}
  .v96-app .mobile-status-summary{display:grid!important;place-items:center!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;padding:0!important;border-radius:50%!important;border:1px solid #b89b34!important;background:#101824!important;color:#ffd45f!important;font-size:13px!important;font-weight:950!important;line-height:1!important;box-shadow:0 2px 8px rgba(0,0,0,.55)!important}
  .v96-app .heroActions{display:none!important}
  .v96-app .mobile-hero-action-trigger{position:absolute!important;display:grid!important;place-items:center!important;right:5px!important;top:5px!important;z-index:23!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;padding:0!important;border-radius:50%!important;border:1px solid #6b7f91!important;background:#101824!important;color:#99a9b8!important;font-size:13px!important;font-weight:950!important;line-height:1!important;box-shadow:0 2px 8px rgba(0,0,0,.55)!important}
  .v96-app .mobile-hero-action-trigger.is-available{border-color:#d8b440!important;background:#392d08!important;color:#ffda67!important;box-shadow:0 0 10px rgba(244,199,63,.32)!important}
  .v96-app .mobile-hero-action-trigger span{position:absolute!important;right:-4px!important;top:-5px!important;display:grid!important;place-items:center!important;width:13px!important;height:13px!important;border-radius:50%!important;background:#f4cf62!important;color:#151006!important;font-size:7px!important}
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.42 — mobile Hero overlay geometry and resources.   */
/* One info trigger at upper-left, one contextual action at upper-right.      */
/* ========================================================================== */
.mobile-racial-resource{display:none!important}
@media(max-width:760px){
  /* Give the Hero artwork a dedicated overlay gutter instead of layering
     status/action buttons directly over the printed card. */
  .v96-app .field--opponent{grid-template-rows:54px 226px!important}
  .v96-app .field--player{grid-template-rows:226px 54px!important}
  .v96-app .field .hero-row{height:226px!important;min-height:226px!important}
  .v96-app .hero-row--opponent .hero-lane:not(.legacy-slot){grid-template-rows:29px minmax(0,1fr)!important}
  .v96-app .hero-row--player .hero-lane:not(.legacy-slot){grid-template-rows:minmax(0,1fr) 29px!important}
  .v96-app .hero-stage{
    padding:29px 3px 3px!important;
    align-content:start!important;
    overflow:visible!important;
  }
  .v96-app .hero-card-anchor{
    max-height:174px!important;
    align-self:start!important;
    margin:0 auto!important;
  }
  .v96-app .hero-card.hero-main{
    width:clamp(76px,23.2vw,96px)!important;
    max-height:164px!important;
  }
  .v96-app .hero-card.hero-main .heroImg{object-fit:contain!important}

  /* Exactly one mobile information control. Desktop status icons are hidden. */
  .v96-app .hero-status-overlay{
    top:3px!important;left:4px!important;right:auto!important;
    z-index:220!important;transform:none!important;
  }
  .v96-app .hero-status-overlay>.hero-indicator-stack,
  .v96-app .hero-status-overlay .hero-info-indicator,
  .v96-app .hero-status-overlay .negative-status-indicator{display:none!important}
  .v96-app .hero-status-overlay>.mobile-status-summary{
    display:grid!important;place-items:center!important;
    width:23px!important;height:23px!important;min-width:23px!important;min-height:23px!important;
    border:1px solid #c5a33a!important;background:#101824!important;color:#ffd45f!important;
    border-radius:50%!important;font-size:13px!important;font-weight:950!important;line-height:1!important;
    box-shadow:0 2px 8px rgba(0,0,0,.58)!important;
  }
  .v96-app .hero-status-overlay>.mobile-status-summary~.mobile-status-summary{display:none!important}

  /* Exactly one clickable contextual action control. */
  .v96-app .mobile-hero-action-trigger{
    right:4px!important;top:3px!important;z-index:221!important;
    width:23px!important;height:23px!important;min-width:23px!important;min-height:23px!important;
    color:#c7d3df!important;background:#101824!important;border-color:#72879a!important;
    font-size:13px!important;opacity:1!important;
  }
  .v96-app .mobile-hero-action-trigger.is-available{
    color:#ffe079!important;background:#3a2e08!important;border-color:#d8b440!important;
  }

  /* HP stays upright and directly covers the printed HP in the card corner,
     including when only the artwork rotates for Exhaust. */
  .v96-app .hero-card-anchor>.hero-health-row.hero-health-overlay{
    left:auto!important;right:1px!important;top:2px!important;
    width:46px!important;height:21px!important;
    transform:scale(.86)!important;transform-origin:top right!important;
    margin:0!important;
  }

  /* The old hand-side Racial Token coins are replaced by a compact counter
     inside each Mana resource container. */
  .v96-app .racial-coins--hand{display:none!important}
  .v96-app .zone[data-zone-type="Mana Pool"]{position:relative!important}
  .v96-app .mobile-racial-resource{
    position:absolute!important;right:4px!important;bottom:4px!important;z-index:8!important;
    display:flex!important;align-items:center!important;gap:1px!important;
    height:20px!important;min-width:31px!important;padding:1px 3px!important;
    border:1px solid rgba(220,183,60,.58)!important;border-radius:999px!important;
    background:rgba(5,12,19,.92)!important;color:#ffe079!important;
    font-size:8px!important;font-weight:900!important;line-height:1!important;
    pointer-events:none!important;
  }
  .v96-app .mobile-racial-resource img{
    position:static!important;inset:auto!important;transform:none!important;
    width:15px!important;height:15px!important;max-width:15px!important;max-height:15px!important;
    object-fit:contain!important;opacity:1!important;filter:none!important;border-radius:50%!important;
  }
  .v96-app .mobile-racial-resource strong{font-size:8px!important;color:#ffe079!important}

  /* Preserve the approved footer order while allowing the final row to be
     scrolled fully above the Android/browser navigation area. */
  html,body{overflow-y:auto!important}
  .v96-app .gl-app{padding-bottom:calc(42px + env(safe-area-inset-bottom,0px))!important}
}

/* ========================================================================== */
/* Grandis Legacy VS AI v5.42 — mobile battlefield isolation and compaction.  */
/* Mobile changes never alter the approved desktop battlefield.                */
/* ========================================================================== */

/* Strong desktop guard: mobile-only footer/resources/controls must never leak. */
@media(min-width:761px){
  .v96-app .mobile-player-footer,
  .v96-app .mobile-status-summary,
  .v96-app .mobile-hero-action-trigger,
  .v96-app .mobile-racial-resource{display:none!important}
  .v96-app .desktop-player-footer{display:flex!important}
  .v96-app .racial-coins--hand{display:flex!important}
  .v96-app .gl-app{padding-bottom:3px!important}
}

@media(max-width:760px){
  /* Remove the artificial trailing space below Player / Full Battle Log. */
  .v96-app .gl-app{padding-bottom:0!important;margin-bottom:0!important}
  .v96-app .mobile-player-footer{margin-bottom:0!important;padding-bottom:0!important}
  .v96-app .mobile-player-footer+.card-played-panel{margin-top:0!important}

  /* Keep a small top gutter, but do not let action icons float far above cards. */
  .v96-app .field--opponent{grid-template-rows:54px 218px!important}
  .v96-app .field--player{grid-template-rows:218px 54px!important}
  .v96-app .field .hero-row{height:218px!important;min-height:218px!important}
  .v96-app .hero-row--opponent .hero-lane:not(.legacy-slot){grid-template-rows:22px minmax(0,1fr)!important}
  .v96-app .hero-row--player .hero-lane:not(.legacy-slot){grid-template-rows:minmax(0,1fr) 22px!important}
  .v96-app .hero-stage{padding:22px 3px 2px!important}

  .v96-app .hero-status-overlay{top:2px!important;left:3px!important}
  .v96-app .hero-status-overlay>.mobile-status-summary{
    width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;
    font-size:10px!important;box-shadow:0 1px 5px rgba(0,0,0,.55)!important
  }
  .v96-app .mobile-hero-action-trigger{
    right:3px!important;top:2px!important;
    width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;
    font-size:10px!important;box-shadow:0 1px 5px rgba(0,0,0,.55)!important
  }
  .v96-app .mobile-hero-action-trigger span{
    right:-4px!important;top:-5px!important;width:11px!important;height:11px!important;font-size:6px!important
  }

  /* HP remains anchored to the artwork corner and covers the printed HP area. */
  .v96-app .hero-card-anchor>.hero-health-row.hero-health-overlay{
    left:auto!important;right:0!important;top:1px!important;
    transform:scale(.82)!important;transform-origin:top right!important
  }

  /* Racial Tokens sit beside Main Deck, stacked top-to-bottom inside the same
     resource cell. No extra resource column or oversized container is created. */
  .v96-app .zone[data-zone-type="Main Deck"]{position:relative!important}
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>img{left:42%!important}
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b{
    left:0!important;right:auto!important;width:84%!important
  }
  .v96-app .mobile-racial-resource{
    position:absolute!important;right:5px!important;top:15px!important;bottom:auto!important;z-index:12!important;
    display:grid!important;grid-template-columns:18px!important;grid-template-rows:18px 18px!important;
    align-items:center!important;justify-items:center!important;gap:1px!important;
    width:20px!important;height:37px!important;min-width:20px!important;padding:0!important;
    border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;
    pointer-events:none!important
  }
  .v96-app .mobile-racial-resource img{
    position:static!important;inset:auto!important;transform:none!important;
    width:18px!important;height:18px!important;max-width:18px!important;max-height:18px!important;
    object-fit:contain!important;opacity:1!important;filter:none!important;border-radius:50%!important
  }
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.43 — dedicated mobile Racial resource column.      */
/* Four existing resources remain untouched; Racial occupies its own 12% cell.*/
/* ========================================================================== */
.mobile-racial-zone{display:none!important}
@media(max-width:760px){
  /* 22 / 22 / 22 / 22 / 12 proportional split, with grid gaps accounted for
     by fr units so the row never overflows the viewport. */
  .v96-app .field{
    grid-template-columns:minmax(0,22fr) minmax(0,22fr) minmax(0,22fr) minmax(0,22fr) minmax(0,12fr)!important;
  }
  .v96-app .field .resource-rail{display:contents!important}
  .v96-app .field--opponent .zone{grid-row:1!important}
  .v96-app .field--player .zone{grid-row:2!important}

  /* The legacy v5.42 inside-Main-Deck presentation is explicitly neutralized. */
  .v96-app .mobile-racial-resource{display:none!important}
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>img{
    position:absolute!important;top:50%!important;left:50%!important;right:auto!important;bottom:auto!important;
    transform:translate(-50%,-50%)!important;margin:0!important;
  }
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>b{
    left:0!important;right:0!important;width:auto!important;
  }

  .v96-app .mobile-racial-zone{
    display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;
    width:auto!important;height:54px!important;min-height:54px!important;padding:2px 0!important;
    overflow:hidden!important;background:rgba(4,13,21,.42)!important;
  }
  .v96-app .mobile-racial-zone>span{
    display:block!important;width:100%!important;text-align:center!important;
    font-size:5.6px!important;line-height:1!important;letter-spacing:0!important;text-transform:uppercase!important;
    color:#f2f5f8!important;white-space:nowrap!important;overflow:hidden!important;
  }
  .v96-app .mobile-racial-token-stack{
    flex:1 1 auto!important;min-height:0!important;width:100%!important;
    display:grid!important;grid-template-columns:1fr!important;grid-template-rows:repeat(2,minmax(0,1fr))!important;
    place-items:center!important;gap:0!important;padding:1px 0!important;
  }
  .v96-app .mobile-racial-token-stack img{
    position:static!important;inset:auto!important;transform:none!important;margin:0!important;
    width:18px!important;height:18px!important;max-width:18px!important;max-height:18px!important;
    object-fit:contain!important;opacity:1!important;filter:none!important;border:0!important;border-radius:50%!important;
  }
}

/* Desktop remains exactly four resource zones. The dedicated mobile Racial
   cell and old embedded mobile Racial markup cannot affect desktop geometry. */
@media(min-width:761px){
  .v96-app .mobile-racial-zone,.v96-app .mobile-racial-resource{display:none!important}
  .v96-app .zone[data-zone-type="Main Deck"] .zoneCard>img{
    left:50%!important;right:auto!important;transform:translateX(-50%)!important;
  }
  /* Remove the decorative lower gold stroke; individual controls keep borders. */
  .v96-app .desktop-player-footer{
    border:0!important;border-bottom:0!important;box-shadow:none!important;outline:0!important;
    background:transparent!important;
  }
  .v96-app .desktop-player-footer::before,.v96-app .desktop-player-footer::after{display:none!important}
  .v96-app .main-stage{border-bottom-color:#17222b!important}
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.44 — response tooltip, mobile resources, footer.   */
/* ========================================================================== */
.response-option.unavailable,.response-option-reason{overflow:visible!important}
.response-option-reason{position:relative!important;white-space:nowrap!important;line-height:1.15!important}
.response-option-reason::after{
  content:attr(data-response-reason);position:absolute;left:50%;bottom:calc(100% + 8px);z-index:4500;
  width:max-content;max-width:min(360px,70vw);padding:7px 9px;border:1px solid #6d5a22;border-radius:8px;
  background:#07111b;color:#eef5ff;font-size:10px;line-height:1.35;text-align:left;white-space:normal;
  box-shadow:0 10px 30px rgba(0,0,0,.72);opacity:0;visibility:hidden;transform:translate(-50%,4px);
  pointer-events:none;transition:opacity .12s ease,transform .12s ease,visibility .12s ease;
}
.response-option-reason:hover::after,.response-option-reason:focus-visible::after,.response-option-reason:focus::after{
  opacity:1;visibility:visible;transform:translate(-50%,0)
}
@media(max-width:760px){
  .v96-app .field--opponent{grid-template-rows:64px 218px!important}
  .v96-app .field--player{grid-template-rows:218px 64px!important}
  .v96-app .zone,.v96-app .mobile-racial-zone{height:64px!important;min-height:64px!important;max-height:64px!important}
  .v96-app .zone{padding:3px 1px!important}
  .v96-app .zone>span{height:9px!important;flex-basis:9px!important;font-size:6px!important;line-height:9px!important}
  .v96-app .zone em{height:7px!important;flex-basis:7px!important;font-size:5.2px!important;line-height:7px!important}
  .v96-app .zoneCard{height:45px!important;min-height:45px!important;max-height:45px!important;overflow:visible!important}
  .v96-app .zoneCard img{max-height:45px!important;max-width:44px!important;object-fit:contain!important;object-position:center!important}
  .v96-app .mobile-racial-zone{padding:3px 0!important;justify-content:flex-start!important;overflow:hidden!important}
  .v96-app .mobile-racial-zone>span{height:9px!important;flex:0 0 9px!important;font-size:5.5px!important;line-height:9px!important}
  .v96-app .mobile-racial-token-stack{height:48px!important;min-height:48px!important;flex:0 0 48px!important;display:grid!important;grid-template-rows:22px 22px!important;gap:2px!important;padding:1px 0!important;overflow:hidden!important}
  .v96-app .mobile-racial-token-stack img{width:20px!important;height:20px!important;max-width:20px!important;max-height:20px!important}
}
@media(min-width:761px){
  .v96-app .main-stage{border-bottom:0!important;border-bottom-width:0!important}
  .v96-app .desktop-player-footer,.v96-app .player-footer-bar{border-bottom:0!important;box-shadow:none!important}
  .v96-app .gl-app{border-bottom:0!important}
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.45 — final desktop stroke and mobile sizing pass.  */
/* ========================================================================== */
.v96-app .gl-app::after{display:none!important;content:none!important;background:none!important;height:0!important}
.response-option-reason{display:block!important;width:100%!important;margin-top:5px!important;border:1px solid #6e5b63!important;background:#2a1d24!important;color:#ffd2dc!important;border-radius:7px!important;padding:4px!important;font-size:10px!important;text-align:center!important;cursor:help!important;overflow:visible!important}
@media(max-width:760px){
  .v96-app .field--opponent{grid-template-rows:72px 218px!important}
  .v96-app .field--player{grid-template-rows:218px 72px!important}
  .v96-app .zone,.v96-app .mobile-racial-zone{height:72px!important;min-height:72px!important;max-height:72px!important}
  .v96-app .zone{padding:3px 1px 2px!important}
  .v96-app .zone>span{height:9px!important;flex:0 0 9px!important;font-size:6px!important;line-height:9px!important}
  .v96-app .zone em{display:block!important;height:8px!important;flex:0 0 8px!important;font-size:5.5px!important;line-height:8px!important;color:#d8e4eb!important;white-space:nowrap!important;overflow:visible!important}
  .v96-app .zoneCard{height:49px!important;min-height:49px!important;max-height:49px!important;overflow:visible!important}
  .v96-app .zoneCard img{max-height:49px!important;max-width:46px!important;object-fit:contain!important;object-position:center!important}
  .v96-app .mobile-racial-zone{padding:3px 0 2px!important;justify-content:flex-start!important;overflow:hidden!important}
  .v96-app .mobile-racial-zone>span{height:9px!important;flex:0 0 9px!important;font-size:5.5px!important;line-height:9px!important}
  .v96-app .mobile-racial-token-stack{height:58px!important;min-height:58px!important;flex:0 0 58px!important;display:grid!important;grid-template-rows:26px 26px!important;gap:2px!important;padding:1px 0!important;overflow:hidden!important}
  .v96-app .mobile-racial-token-stack img{width:22px!important;height:22px!important;max-width:22px!important;max-height:22px!important}

  .v96-app .hand-area--player{grid-template-columns:minmax(0,1fr)!important;padding-left:0!important;padding-right:0!important}
  .v96-app .hand-area--player>.racial-coins--hand,.v96-app .hand-area--player>.hand-spacer{display:none!important}
  .v96-app .hand-area--player>.handPanel{grid-column:1!important;width:100%!important;max-width:none!important;margin:0!important}
  .v96-app .hand-area--player .handCards{width:max-content!important;min-width:100%!important;padding-left:4px!important;padding-right:4px!important}
}
@media(min-width:761px){
  .v96-app .gl-app::after{display:none!important;content:none!important}
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.46 — Response hierarchy and mobile Hand/draw pass. */
/* ========================================================================== */
.response-option-reason::after{display:none!important;content:none!important}
.response-panel{position:relative!important}
.response-hover-tooltip{
  position:absolute;z-index:5000;padding:8px 10px;border:1px solid #6d5a22;border-radius:8px;
  background:#07111b;color:#eef5ff;font-size:10px;line-height:1.35;text-align:left;white-space:normal;
  box-shadow:0 10px 30px rgba(0,0,0,.72);pointer-events:none
}
.response-hover-tooltip[hidden]{display:none!important}
.response-option-reason{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
@media(min-width:761px){
  .response-option-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))!important}
  .response-option-preview img{height:104px!important;object-fit:contain!important;background:#07111b!important}
}
@media(max-width:760px){
  /* Give every Hand card a stable two-button action area while preserving swipe. */
  .v96-app .main-stage{grid-template-rows:24px 48px auto 6px auto 134px!important}
  .v96-app .hand-area--player .handPanel{
    overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none!important;-ms-overflow-style:none!important;
    overscroll-behavior-x:contain!important;touch-action:pan-x!important
  }
  .v96-app .hand-area--player .handPanel::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}
  .v96-app .hand-area--player .handCards{height:130px!important;padding:5px 5px 2px!important;align-items:flex-start!important}
  .v96-app .hand-card{
    width:64px!important;min-width:64px!important;max-width:64px!important;height:122px!important;flex-basis:64px!important;
    grid-template-rows:84px 34px!important
  }
  .v96-app .hand-card .hand-art,.v96-app .hand-card .hand-art img{height:84px!important}
  .v96-app .hand-card .hand-actions{
    height:34px!important;min-height:34px!important;display:flex!important;flex-direction:column!important;
    justify-content:flex-start!important;align-items:stretch!important;gap:2px!important;overflow:hidden!important
  }
  .v96-app .hand-card .mini-action{height:15px!important;min-height:15px!important;flex:0 0 15px!important;font-size:6.4px!important;padding:0 2px!important;margin:0!important}
}

/* ========================================================================== */
/* Grandis Legacy VS AI v5.47 — Android touch, mobile opponent fan, and       */
/* decode-first visual geometry. Gameplay/runtime rules are unchanged.        */
/* ========================================================================== */
.gl-decode-pending{visibility:hidden!important}
.gl-image-ready{visibility:visible!important}
.gl-flying-card{
  aspect-ratio:5/7!important;
  object-fit:contain!important;
  color:transparent!important;
  font-size:0!important;
  overflow:hidden!important;
}
.gl-opening-coin-actions button img,
.gl-opening-coin-result img{
  width:min(142px,100%)!important;
  height:min(142px,36vw)!important;
  min-width:96px!important;
  min-height:96px!important;
  aspect-ratio:1/1!important;
  object-fit:contain!important;
  color:transparent!important;
  font-size:0!important;
  overflow:hidden!important;
}
.gl-opening-coin-flip-stage img{
  width:min(150px,42vw)!important;
  height:min(150px,42vw)!important;
  min-width:108px!important;
  min-height:108px!important;
  aspect-ratio:1/1!important;
  object-fit:contain!important;
  color:transparent!important;
  font-size:0!important;
  overflow:hidden!important;
}

@media(max-width:760px){
  /* Android: use a wrapper-owned long press instead of the native image menu. */
  .v96-app .hand-card,
  .v96-app .hand-card .hand-art{
    -webkit-touch-callout:none!important;
    -webkit-user-select:none!important;
    user-select:none!important;
    touch-action:pan-x!important;
  }
  .v96-app .hand-card .hand-art img{
    pointer-events:none!important;
    -webkit-user-drag:none!important;
    user-drag:none!important;
  }

  /* Opponent only: restore the compact fan. Player Hand stays straight/swipeable. */
  .v96-app .hand-area--opponent .strip.v94-strip{
    overflow:visible!important;
    scrollbar-width:none!important;
    touch-action:auto!important;
  }
  .v96-app .hand-area--opponent .strip.v94-strip::-webkit-scrollbar{display:none!important}
  .v96-app .hand-area--opponent .strip.v94-strip .backs{
    width:100%!important;
    min-width:0!important;
    justify-content:center!important;
    align-items:center!important;
    gap:0!important;
    padding:0!important;
    overflow:visible!important;
    perspective:900px!important;
  }
  .v96-app .hand-area--opponent .opponent-hand-slot{
    --fan-overlap:-12px!important;
    margin-left:var(--fan-overlap)!important;
    transform-origin:50% 8%!important;
    transform:translateY(var(--fan-y,0px)) rotate(calc(var(--fan-angle,0deg) * -1))!important;
    transition:transform .18s cubic-bezier(.2,.75,.2,1),margin .18s ease!important;
  }
  .v96-app .hand-area--opponent .opponent-hand-slot:first-child{margin-left:0!important}
  .v96-app .hand-area--opponent .opponent-hand-slot .back{
    width:31px!important;
    height:45px!important;
    max-height:45px!important;
    flex-basis:31px!important;
    object-fit:contain!important;
  }

  /* Keep Mana Regen inside the mobile resource cell and raise it above clipping. */
  .v96-app .zone--mana{
    position:relative!important;
    padding:3px 1px 12px!important;
    overflow:hidden!important;
  }
  .v96-app .zone--mana .zoneCard{
    height:46px!important;
    min-height:46px!important;
    max-height:46px!important;
    margin:0!important;
  }
  .v96-app .zone--mana .zoneCard img{
    max-height:46px!important;
    max-width:44px!important;
    object-fit:contain!important;
  }
  .v96-app .zone--mana em{
    position:absolute!important;
    left:50%!important;
    bottom:2px!important;
    z-index:8!important;
    transform:translateX(-50%)!important;
    display:block!important;
    width:max-content!important;
    max-width:100%!important;
    height:9px!important;
    line-height:9px!important;
    font-size:6px!important;
    font-weight:900!important;
    color:#f4f8ff!important;
    text-shadow:0 1px 3px #000!important;
    white-space:nowrap!important;
    overflow:visible!important;
  }
}

/* ========================================================================== */
/* Grandis Legacy VS AI v5.52 — mobile Legacy control anchor consistency.     */
/* Desktop keeps the approved Legacy name-row info button. On mobile, the     */
/* Legacy info control shares the Hero slot's fixed top-left anchor while the */
/* contextual action remains fixed at top-right.                              */
/* ========================================================================== */
.v96-app .legacy-hero-info--mobile{display:none!important}
@media(max-width:760px){
  .v96-app .legacy-name-bar .legacy-hero-info--desktop{display:none!important}
  .v96-app .hero-stage.legacy-stage>.legacy-hero-info--mobile{
    position:absolute!important;
    display:grid!important;
    place-items:center!important;
    left:3px!important;
    right:auto!important;
    top:2px!important;
    z-index:221!important;
    width:18px!important;
    height:18px!important;
    min-width:18px!important;
    min-height:18px!important;
    margin:0!important;
    padding:0!important;
    border:1px solid #c5a33a!important;
    border-radius:50%!important;
    background:#101824!important;
    color:#ffd45f!important;
    font-size:10px!important;
    font-weight:950!important;
    line-height:1!important;
    box-shadow:0 1px 5px rgba(0,0,0,.55)!important;
  }
  .v96-app .hero-stage.legacy-stage>.mobile-hero-action-trigger{
    left:auto!important;
    right:3px!important;
    top:2px!important;
  }
}
@media(min-width:761px){
  .v96-app .legacy-hero-info--desktop{display:inline-flex!important}
  .v96-app .legacy-hero-info--mobile{display:none!important}
}


/* PvP v2.6.11 final lock: battlefield card hover preview size without changing its card-relative anchor. */
@media (min-width:761px){
  .hover-card-zoom{width:250px!important;height:350px!important;max-width:250px!important;max-height:350px!important;aspect-ratio:5/7!important}
  .hover-card-zoom img{width:250px!important;height:350px!important;max-width:250px!important;max-height:350px!important;object-fit:contain!important}
}
@media (max-width:760px){
  .hover-card-zoom{width:min(250px,calc(100vw - 24px))!important;height:auto!important;aspect-ratio:5/7!important;max-height:calc(100vh - 24px)!important}
  .hover-card-zoom img{width:100%!important;height:100%!important;object-fit:contain!important}
}


/* PvP v2.6.11: the Hand-specific selector previously overrode the generic 250x350 lock. */
@media (min-width:761px){
  .hover-card-zoom.is-hand-hover{
    width:250px!important;height:350px!important;max-width:250px!important;max-height:350px!important;aspect-ratio:5/7!important;
  }
  .hover-card-zoom.is-hand-hover img{
    width:250px!important;height:350px!important;max-width:250px!important;max-height:350px!important;object-fit:contain!important;
  }
}


/* ========================================================================== */
/* Grandis Legacy PvP v2.6.11 — VS AI desktop scale restore + mobile Hand lock. */
/* ========================================================================== */
@media (min-width:761px){
  /* Desktop card and battlefield geometry intentionally inherit the VS AI
     v5.48 baseline. Only the Hero action badge gains vertical breathing room. */
  .v96-app .heroActions .actionBtn{
    min-height:21px!important;
    padding-top:4px!important;
    padding-bottom:4px!important;
    line-height:1.15!important;
  }
}
@media (max-width:760px){
  /* Mobile Hand is a stable straight row. No desktop fan angle, vertical lift,
     overlap, or hover transform may survive through inline variables. */
  .v96-app .hand-area--player .handPanel{
    overflow-x:auto!important;overflow-y:hidden!important;
    scroll-behavior:auto!important;overscroll-behavior-x:contain!important;
  }
  .v96-app .hand-area--player .handCards{
    justify-content:flex-start!important;align-items:flex-start!important;
    width:max-content!important;min-width:100%!important;gap:6px!important;
    padding:5px 10px 2px!important;perspective:none!important;
  }
  .v96-app .hand-area--player .hand-card,
  .v96-app .hand-area--player .hand-card:hover,
  .v96-app .hand-area--player .hand-card:focus-within,
  .v96-app .hand-area--player .hand-card.is-selected,
  .v96-app .hand-area--player .hand-card.hand-hover-active{
    margin-left:0!important;
    translate:none!important;
    rotate:0deg!important;
    transform:none!important;
    transform-origin:center!important;
    filter:none!important;
  }
  .v96-app .hand-area--player .hand-card .hand-art,
  .v96-app .hand-area--player .hand-card .hand-actions,
  .v96-app .hand-area--player .hand-card:hover .hand-art,
  .v96-app .hand-area--player .hand-card:hover .hand-actions,
  .v96-app .hand-area--player .hand-card:focus-within .hand-art,
  .v96-app .hand-area--player .hand-card:focus-within .hand-actions{
    transform:none!important;transition:none!important;filter:none!important;
  }
}


/* PvP v2.6.11 — mobile card preview is 130% of the previous 250px reference. */
@media (max-width:760px){
  .hover-card-zoom:not(.is-click-zoom){
    width:min(325px,calc(100vw - 16px))!important;
    max-width:min(325px,calc(100vw - 16px))!important;
    height:auto!important;
    max-height:calc(100vh - 16px)!important;
    aspect-ratio:5/7!important;
  }
  .hover-card-zoom:not(.is-click-zoom) img{
    width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;
  }
}

/* v5.52 / v2.6.11 — Ultimate-only Card Review rules */
.readable-card-ultimate-rules{margin-top:10px!important;border:1px solid rgba(240,206,103,.34)!important;background:rgba(240,206,103,.06)!important}
.readable-card-ultimate-rules ul{margin:0!important;padding-left:19px!important;color:#e0e8ef!important;font-size:13px!important;line-height:1.5!important}
.readable-card-ultimate-rules li+li{margin-top:4px!important}.readable-card-ultimate-rules strong{color:#f0ce67!important}
