@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 v5.58 / PvP v2.6.15 — Noto Sans asset-hook typography. */
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:0;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:0;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:0;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:0}.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:0}.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:0;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);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. */
/* Desktop-only animation page lock. Mobile gameplay must always retain native document scrolling. */
@media(min-width:761px){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}
/* PvP identity row authority: identity text and connection are siblings. */
.pvp-player-identity-row{display:flex;align-items:center;gap:5px;min-width:0;max-width:100%;}
.pvp-player-identity-container{min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;line-height:1;}
.pvp-player-display-name{display:block;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1;}
.pvp-player-deck-name{display:block;flex:0 0 auto;max-width:none;white-space:nowrap;overflow:visible;text-overflow:clip;line-height:1;}
.pvp-connection-bar{flex:0 0 30px;width:30px;height:22px;padding:3px 4px;display:flex;align-items:flex-end;justify-content:center;gap:2px;border:1px solid rgba(100,123,145,.64);border-radius:7px;background:rgba(5,14,22,.92);color:#6f7d8b;box-sizing:border-box;}
.pvp-connection-bar span{display:block;width:3px;border-radius:2px 2px 0 0;background:currentColor;opacity:.20;}
.pvp-connection-bar span:nth-child(1){height:4px}.pvp-connection-bar span:nth-child(2){height:7px}.pvp-connection-bar span:nth-child(3){height:10px}.pvp-connection-bar span:nth-child(4){height:13px}
.pvp-connection-bar.excellent,.pvp-connection-bar.good,.pvp-connection-bar.online{color:#54d77c}.pvp-connection-bar.fair{color:#e1bd58}.pvp-connection-bar.poor{color:#e16b67}.pvp-connection-bar.connecting{color:#8795a3}.pvp-connection-bar.offline{color:#56616b}
.pvp-connection-bar.excellent span,.pvp-connection-bar.online span{opacity:1}.pvp-connection-bar.good span:nth-child(-n+3){opacity:1}.pvp-connection-bar.fair span:nth-child(-n+2){opacity:1}.pvp-connection-bar.poor span:first-child{opacity:1}.pvp-connection-bar.connecting span:first-child,.pvp-connection-bar.offline span:first-child{opacity:.45}
.v96-app .pvp-player-identity-row{width:max-content;max-width:100%;min-width:0;}
.v96-app .pvp-player-identity-container.player-name{width:max-content!important;min-width:0!important;max-width:none!important;height:24px!important;padding:2px 10px!important;display:flex!important;flex:0 0 auto!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:1px!important;overflow:visible!important;}
.v96-app .pvp-player-identity-container.player-name .pvp-player-display-name{font-size:10px!important;line-height:10px!important;max-width:120px!important;}
.v96-app .pvp-player-identity-container.player-name .pvp-player-deck-name{font-size:7px!important;line-height:8px!important;color:#8d98a3!important;font-weight:700!important;text-transform:none!important;letter-spacing:0!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;max-width:none!important;}
.v96-app .pvp-connection-bar{height:24px;flex-basis:30px;}
.v96-app .player-footer-bar>.pvp-player-identity-row{flex:0 1 auto!important;max-width:calc(100% - 122px)!important;min-width:0!important;}
.v96-app .player-footer-bar>.pvp-player-identity-row .pvp-player-identity-container.player-name--self{flex:0 0 auto!important;width:max-content!important;max-width:none!important;}
.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)}
.hero-card.is-exhausted:hover{transform:rotate(-90deg)}
.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.
   Shard 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:0;
  outline:0;
  background:transparent;
  box-shadow:none;
}
.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)}
.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)!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}

@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-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 .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 .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-card.hero-main{position:relative!important;z-index:30!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-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,
  .v96-app .match-panel .pvp-match-timer{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="Shard 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="Shard 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-actions{display:grid;gap:7px;margin-top:2px}.game-result-actions .primary{min-height:42px;border:1px solid #2c8f55;border-radius:9px;background:#11341f;color:#caffd9;font-weight:900;cursor:pointer;padding:9px 14px}.game-result-actions .primary:hover{filter:brightness(1.08)}.game-result-actions small{color:#8fa3b4;font-size:10px;text-align:center;line-height:1.35}
.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="Shard 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){
  .v96-app{width:100%!important;}
  .v96-app .gl-app{
    width:100%!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;
  }
  .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="Shard 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:25px!important;
    min-width:25px!important;
    height:35px!important;
    min-height:35px!important;
    flex:0 0 25px!important;
    padding:0!important;
    aspect-ratio:63/88!important;
  }
  .v96-app .combined-played-card img{
    width:100%!important;
    height:100%!important;
    max-width:none!important;
    max-height:none!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="Shard 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 .pvp-player-identity-row{flex:1 1 70%!important;width:auto!important;max-width:70%!important;min-width:0!important;align-self:stretch!important;}
  .v96-app .mobile-player-footer .pvp-player-identity-container.player-name--self{flex:0 0 auto!important;width:max-content!important;max-width:none!important;height:28px!important;padding:3px 7px!important;overflow:visible!important;}
  .v96-app .mobile-player-footer .pvp-connection-bar{height:28px!important;flex:0 0 30px!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="Shard 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}

  /* Footer scroll room is owned by the permanent #app mobile scroller. */
}

/* ========================================================================== */
/* 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){
  /* Active-match bottom spacing is owned by the permanent #app mobile scroller. */
  .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 pan-y!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 pan-y!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;
  }
}

/* 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.52 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;
  }
}


/* ========================================================================== */
/* Grandis Legacy VS AI v5.52 — AI Lobby aligned to the approved PvP theme. */
/* ========================================================================== */
body.deck-setup-active{background:#02060b!important}
.deck-setup-screen.runtime-ui-v14-setup{
  background:linear-gradient(180deg,rgba(3,8,14,.72),rgba(6,13,23,.45)),url('../assets/lobby/background.webp') center/cover fixed no-repeat!important;
  grid-template-rows:auto minmax(0,1fr)!important;gap:12px!important;padding:0 14px 14px!important
}
.ai-lobby-topbar{min-height:108px;display:grid;grid-template-columns:220px minmax(0,1fr) auto;align-items:center;gap:26px;padding:16px 24px;border:0;border-bottom:1px solid rgba(64,92,121,.28);background:rgba(7,16,28,.90);box-shadow:0 10px 30px rgba(0,0,0,.26)}
.ai-lobby-logo img{display:block;width:190px;max-height:70px;object-fit:contain;object-position:left center}
.ai-lobby-heading h1{margin:0;color:#fff;font-size:21px;font-weight:950;letter-spacing:.02em}
.ai-lobby-actions{display:flex;align-items:center;gap:12px}
.ai-lobby-btn{min-height:48px;min-width:218px;padding:0 22px;border:1px solid transparent;border-radius:13px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:#fff;font-size:13px;font-weight:950;text-transform:uppercase;letter-spacing:.015em;transition:filter .15s ease,transform .15s ease}
.ai-lobby-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.ai-lobby-btn--outline{border-color:rgba(236,240,248,.46);background:rgba(4,9,16,.36)}
.ai-lobby-btn--blue{background:#075b86;border-color:#075b86}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{border-color:rgba(184,153,50,.46)!important;background:#070b10!important;border-radius:14px!important;padding:12px!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-side{background:#07111b!important;border-color:#31465c!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-picker-row select,.deck-setup-screen.runtime-ui-v14-setup .import-button{background:#0b1622!important;border-color:#3e566e!important;color:#f2f6fb!important}
.deck-setup-screen.runtime-ui-v14-setup .import-button{color:#f4d87e!important;border-color:#d0ad53!important}
.deck-setup-actions{justify-content:flex-end!important}
.deck-setup-actions .start-match-primary{min-width:216px!important;background:linear-gradient(180deg,#f5dc91 0%,#c49b43 100%)!important;border-color:#f4d87e!important;color:#11151c!important;box-shadow:inset 0 1px rgba(255,255,255,.42)!important}
.formation-card{display:flex!important;flex-direction:column!important;gap:6px!important}
.formation-card button{order:1!important;text-align:center!important}
.formation-card .formation-position{order:2!important;display:block!important;margin:0!important;color:#f4d87e!important;font-size:11px!important;font-weight:950!important;text-align:center!important;text-transform:capitalize!important}
.formation-card img{object-fit:contain!important;background:#05090e!important}
.pvp-progression-modal{font-family:"Noto Sans"!important}
@media(max-width:760px){
  .deck-setup-screen.runtime-ui-v14-setup{padding:0 8px 8px!important;overflow:auto!important;display:block!important}
  .ai-lobby-topbar{min-height:78px;grid-template-columns:150px minmax(0,1fr);gap:14px;padding:10px 12px;margin:0 -8px 10px}
  .ai-lobby-logo img{width:138px;max-height:55px}
  .ai-lobby-heading h1{font-size:18px}
  .ai-lobby-actions{display:none!important}
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{height:auto!important;min-height:calc(100vh - 96px)!important;overflow:visible!important}
  .deck-setup-grid{overflow:visible!important}
  .deck-side{overflow:visible!important}
  .formation-preview{overflow:visible!important}
  .formation-card img{height:118px!important}
  .deck-setup-actions{justify-content:flex-end!important}
  .deck-setup-actions .start-match-primary{width:auto!important;min-width:150px!important}
}

/* ========================================================================== */
/* Grandis Legacy VS AI v5.52 — AI Lobby correction lock.                    */
/* Removes the redundant deck count pill, guarantees Rank II Formation art,  */
/* restores Hero Progression as a real modal, and keeps Start Match readable. */
/* ========================================================================== */
.deck-setup-screen.runtime-ui-v14-setup .deck-counts{display:none!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-side{
  overflow:visible!important;
  gap:8px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-preview{
  flex:1 1 auto!important;
  min-height:0!important;
  margin-top:2px!important;
  align-items:flex-start!important;
  overflow:visible!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card{
  display:flex!important;
  flex-direction:column!important;
  gap:6px!important;
  min-height:0!important;
  overflow:visible!important;
  padding:7px!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card>button{
  order:1!important;
  display:grid!important;
  place-items:center!important;
  min-height:0!important;
  overflow:visible!important;
  cursor:pointer!important;
  touch-action:manipulation!important;
  -webkit-user-select:none!important;
  user-select:none!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card>button:hover img,
.deck-setup-screen.runtime-ui-v14-setup .formation-card>button:focus-visible img{
  filter:brightness(1.07)!important;
  box-shadow:0 0 0 2px rgba(244,216,126,.52),0 12px 28px rgba(0,0,0,.38)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card img{
  display:block!important;
  width:auto!important;
  max-width:100%!important;
  height:min(30vh,260px)!important;
  max-height:260px!important;
  aspect-ratio:63/88!important;
  object-fit:contain!important;
  object-position:center!important;
  margin:0 auto!important;
  border:0!important;
  background:#05090e!important;
  pointer-events:none!important;
  -webkit-user-drag:none!important;
  user-drag:none!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card .formation-position{
  order:2!important;
  position:static!important;
  display:block!important;
  flex:0 0 auto!important;
  min-height:16px!important;
  margin:0!important;
  padding:0!important;
  color:#f4d87e!important;
  font-size:11px!important;
  font-weight:950!important;
  line-height:16px!important;
  text-align:center!important;
  text-transform:capitalize!important;
  overflow:visible!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions .start-match-primary{
  min-width:216px!important;
  background:linear-gradient(180deg,#f5dc91 0%,#c49b43 100%)!important;
  border:1px solid #f4d87e!important;
  color:#11151c!important;
  opacity:1!important;
  font-size:13px!important;
  font-weight:950!important;
  text-shadow:none!important;
  box-shadow:inset 0 1px rgba(255,255,255,.42),0 8px 22px rgba(0,0,0,.28)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions .start-match-primary:hover{
  filter:brightness(1.07)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions .start-match-primary:disabled{
  background:linear-gradient(180deg,#d6c791 0%,#9a824e 100%)!important;
  border-color:#bfa65d!important;
  color:#151515!important;
  opacity:.68!important;
}

/* Hero Progression copied from the approved PvP lobby behavior. */
.pvp-progression-modal{
  position:fixed!important;
  inset:0!important;
  z-index:10045!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:18px!important;
  background:rgba(0,0,0,.72)!important;
  font-family:"Noto Sans"!important;
}
.pvp-progression-card{
  width:min(940px,calc(100vw - 32px))!important;
  max-height:92vh!important;
  overflow:auto!important;
  border:1px solid rgba(241,212,129,.72)!important;
  border-radius:16px!important;
  background:linear-gradient(180deg,#08131f,#050b12)!important;
  box-shadow:0 28px 90px rgba(0,0,0,.8)!important;
  padding:18px!important;
  overscroll-behavior:contain!important;
}
.pvp-progression-card header{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:14px!important;
  margin-bottom:15px!important;
}
.pvp-progression-card header span{
  display:block!important;
  color:#f1d481!important;
  font-size:11px!important;
  font-weight:900!important;
  letter-spacing:.08em!important;
}
.pvp-progression-card header h2{
  margin:3px 0 0!important;
  color:#f5f7fb!important;
  font-size:22px!important;
}
.pvp-progression-card header button{
  min-width:72px!important;
  height:36px!important;
  padding:0 16px!important;
  border:1px solid #4b6b82!important;
  border-radius:9px!important;
  background:#13283b!important;
  color:#f5f7fb!important;
  font-size:13px!important;
  font-weight:800!important;
  cursor:pointer!important;
}
.pvp-progression-card header button:hover{filter:brightness(1.08)!important}
.pvp-progression-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr) 28px minmax(0,1fr)!important;
  gap:8px!important;
  align-items:center!important;
}
.pvp-progression-hero{
  min-width:0!important;
  border:1px solid rgba(62,83,104,.72)!important;
  border-radius:12px!important;
  background:#07111b!important;
  padding:8px!important;
}
.pvp-progression-hero.current{
  box-shadow:0 0 0 2px rgba(241,212,129,.72),0 12px 28px rgba(0,0,0,.38)!important;
}
.pvp-progression-static-card{
  display:block!important;
  width:100%!important;
  padding:0!important;
  border:0!important;
  border-radius:9px!important;
  background:transparent!important;
  cursor:pointer!important;
  overflow:hidden!important;
}
.pvp-progression-static-card img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  aspect-ratio:63/88!important;
  object-fit:contain!important;
  pointer-events:none!important;
  -webkit-user-drag:none!important;
  user-drag:none!important;
}
.pvp-progression-static-card:hover img,
.pvp-progression-static-card:focus-visible img{
  filter:brightness(1.08)!important;
}
.pvp-progression-arrow{
  display:grid!important;
  place-items:center!important;
  color:#f1d481!important;
  font-size:28px!important;
  font-weight:900!important;
}
.pvp-progression-card .pvp-v260-position{
  margin-top:6px!important;
  color:#f1d481!important;
  font-size:11px!important;
  font-weight:900!important;
  text-align:center!important;
}
.pvp-progression-card>p{
  margin:12px 0 0!important;
  text-align:center!important;
  color:#9ea8b5!important;
  font-size:12px!important;
}
body.deck-setup-active #previewOverlay{z-index:10060!important}

@media(max-width:760px){
  .deck-setup-screen.runtime-ui-v14-setup .formation-preview{gap:6px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card{padding:5px!important;gap:4px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card img{
    width:100%!important;
    height:auto!important;
    max-height:155px!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .formation-card .formation-position{
    min-height:14px!important;
    font-size:9px!important;
    line-height:14px!important;
  }
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions .start-match-primary{
    width:auto!important;
    min-width:150px!important;
    height:40px!important;
  }
  .pvp-progression-card{padding:13px!important}
  .pvp-progression-row{
    grid-template-columns:minmax(0,1fr) 16px minmax(0,1fr) 16px minmax(0,1fr)!important;
    gap:3px!important;
  }
  .pvp-progression-arrow{font-size:17px!important}
  .pvp-progression-card header h2{font-size:18px!important}
  .pvp-progression-card .pvp-v260-position{font-size:9px!important}
}

/* ========================================================================== */
/* Grandis Legacy VS AI v5.52 — final AI Lobby PvP-theme parity and spacing. */
/* ========================================================================== */
body.deck-setup-active{
  min-width:0!important;
  overflow-x:hidden!important;
  background:#07111f url('../assets/lobby/background.webp') center/cover fixed no-repeat!important;
}
.deck-setup-screen.runtime-ui-v14-setup{
  min-height:100vh!important;
  padding:20px 42px 28px!important;
  gap:12px!important;
  background:linear-gradient(180deg,rgba(3,8,14,.60),rgba(6,13,23,.32))!important;
}
.ai-lobby-topbar{
  min-height:58px!important;
  display:grid!important;
  grid-template-columns:194px minmax(280px,1fr) auto!important;
  align-items:start!important;
  gap:20px!important;
  padding:0!important;
  margin:0 0 12px!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ai-lobby-logo{display:block!important;width:190px!important;height:58px!important;overflow:hidden!important}
.ai-lobby-logo img{width:100%!important;height:100%!important;max-height:none!important;object-fit:contain!important;object-position:left center!important;filter:drop-shadow(0 3px 8px rgba(0,0,0,.38))!important}
.ai-lobby-heading{padding-top:6px!important}
.ai-lobby-heading h1{margin:0!important;font-size:17px!important;line-height:1!important;font-weight:900!important;letter-spacing:.02em!important}
.ai-lobby-actions{display:flex!important;gap:10px!important;padding-top:4px!important}
.ai-lobby-btn{min-height:40px!important;min-width:0!important;padding:0 19px!important;border-radius:11px!important;font-size:13px!important;font-weight:900!important}
.ai-lobby-btn--outline{border-color:rgba(236,240,248,.42)!important;background:rgba(4,9,16,.35)!important}
.ai-lobby-btn--blue{min-width:184px!important;background:#075b86!important;border-color:#075b86!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{
  height:auto!important;
  min-height:0!important;
  overflow:visible!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:16px!important;
  align-items:start!important;
  overflow:visible!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-side{
  height:auto!important;
  min-height:0!important;
  align-self:start!important;
  padding:18px 15px 16px!important;
  gap:0!important;
  overflow:visible!important;
  border:1px solid rgba(255,255,255,.025)!important;
  border-radius:16px!important;
  background:linear-gradient(180deg,rgba(4,9,16,.84),rgba(5,10,17,.78))!important;
  box-shadow:0 18px 48px rgba(0,0,0,.26)!important;
  backdrop-filter:blur(2px)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-side header{margin:0 0 14px!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-side h3{font-size:18px!important;color:#f1d481!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-picker-row{margin:0 0 14px!important;gap:12px!important}
.deck-setup-screen.runtime-ui-v14-setup .deck-picker-row select,
.deck-setup-screen.runtime-ui-v14-setup .import-button{
  height:48px!important;
  border-radius:12px!important;
  background:rgba(4,8,14,.55)!important;
  border-color:rgba(229,234,243,.38)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-preview{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:12px!important;
  margin:0!important;
  padding:0!important;
  min-height:0!important;
  align-items:stretch!important;
  overflow:visible!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card{
  min-width:0!important;
  height:auto!important;
  min-height:0!important;
  padding:10px 10px 9px!important;
  gap:0!important;
  border:0!important;
  border-radius:13px!important;
  background:linear-gradient(180deg,#1c3040,#1a2b39)!important;
  box-shadow:0 10px 20px rgba(0,0,0,.18)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card>button{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  padding:0!important;
  border:0!important;
  border-radius:9px!important;
  overflow:hidden!important;
  background:#0d141d!important;
  box-shadow:0 8px 15px rgba(0,0,0,.42)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card img{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  height:auto!important;
  max-height:none!important;
  aspect-ratio:320/448!important;
  object-fit:cover!important;
  object-position:center!important;
  margin:0!important;
  background:#0d141d!important;
}
.deck-setup-screen.runtime-ui-v14-setup .formation-card .formation-position{
  margin:auto 0 0!important;
  padding-top:9px!important;
  min-height:0!important;
  color:#f1d481!important;
  font-size:15px!important;
  line-height:1.2!important;
  font-weight:900!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions{
  display:flex!important;
  justify-content:flex-end!important;
  margin-top:12px!important;
  padding-top:12px!important;
  border-top:1px solid rgba(229,234,243,.20)!important;
}
.deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions .start-match-primary{
  width:auto!important;
  min-width:216px!important;
  min-height:46px!important;
  border-radius:11px!important;
  font-size:13px!important;
  font-weight:900!important;
}
@media(max-width:1160px){
  .deck-setup-screen.runtime-ui-v14-setup{padding:22px 24px 34px!important}
  .ai-lobby-topbar{grid-template-columns:190px 1fr!important}
  .ai-lobby-actions{grid-column:1/-1!important;justify-content:flex-end!important}
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-grid{grid-template-columns:1fr!important}
}
@media(max-width:760px){
  body.deck-setup-active{background-attachment:scroll!important}
  .deck-setup-screen.runtime-ui-v14-setup{padding:16px 14px 24px!important}
  .ai-lobby-topbar{display:flex!important;flex-wrap:wrap!important;align-items:center!important;min-height:54px!important;margin-bottom:10px!important;gap:9px 12px!important}
  .ai-lobby-logo{width:154px!important;height:54px!important;flex:0 0 154px!important}
  .ai-lobby-heading{padding:0!important;flex:1!important;min-width:120px!important}
  .ai-lobby-heading h1{font-size:16px!important}
  .ai-lobby-actions{display:none!important}
  .deck-setup-screen.runtime-ui-v14-setup .deck-side{padding:17px 14px 16px!important;border-radius:14px!important}
  .deck-setup-screen.runtime-ui-v14-setup .deck-picker-row{margin-bottom:10px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-preview{gap:7px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card{padding:6px 6px 7px!important}
  .deck-setup-screen.runtime-ui-v14-setup .formation-card .formation-position{padding-top:6px!important;font-size:10px!important}
  .deck-setup-screen.runtime-ui-v14-setup .deck-setup-actions .start-match-primary{width:auto!important;min-width:150px!important;height:40px!important;min-height:40px!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}


/* v5.58 — AI Lobby title returns to the approved compact scale, vertically centered with the logo. */
.ai-lobby-topbar{align-items:center!important}
.ai-lobby-heading{display:flex!important;align-items:center!important;align-self:stretch!important;padding-top:0!important}
.ai-lobby-heading h1{font-size:17px!important;line-height:1!important;font-weight:900!important;letter-spacing:.02em!important}
@media(max-width:700px){.ai-lobby-heading h1{font-size:16px!important}}


/* v5.58 — Tutorial joins the right-side navigation group. */
.ai-lobby-actions .ai-lobby-btn--outline{min-width:218px!important}

/* LOCAL BATTLE VFX TEST v2 — resolution feedback anchored to Hero cards. */
.gl-battle-feedback-layer{position:fixed;inset:0;z-index:11850;pointer-events:none;overflow:hidden}
.gl-battle-vfx-clip{position:fixed;overflow:hidden;pointer-events:none;user-select:none;z-index:11851}
.gl-battle-vfx{position:absolute;display:block;object-fit:contain;pointer-events:none;user-select:none;transform-origin:center center;filter:drop-shadow(0 0 10px rgba(0,0,0,.28));will-change:transform,opacity,filter}
.gl-battle-feedback-layer>.gl-battle-vfx{position:fixed}
.gl-battle-pattack{animation:glBattlePAttack .64s cubic-bezier(.2,.78,.24,1) both}
.gl-battle-mattack{animation:glBattleMAttack .66s cubic-bezier(.16,.76,.24,1) both}
.gl-battle-pdef{animation:glBattlePDefense .64s cubic-bezier(.16,.78,.22,1) both}
.gl-battle-mdef{animation:glBattleMDefense .68s cubic-bezier(.16,.78,.22,1) both}
.gl-battle-heal{opacity:0;animation:glBattleHeal .82s ease-out both}
.gl-battle-heal--left{animation-delay:0s}
.gl-battle-heal--right{animation-delay:.15s}
.gl-battle-dodge-card>.hero-card.hero-main{animation:glBattleDodgeCard .7s cubic-bezier(.19,.72,.22,1) both}
.gl-battle-damage-card>.hero-card.hero-main{animation:glBattleDamageShake .44s ease-out both}
@keyframes glBattlePAttack{
  0%{opacity:0;transform:translate3d(0,-46%,0) scale(.84)}
  16%{opacity:.96}
  62%{opacity:1;transform:translate3d(0,8%,0) scale(1.02)}
  100%{opacity:0;transform:translate3d(0,32%,0) scale(1.06)}
}
@keyframes glBattleMAttack{
  0%{opacity:0;transform:scale(.18) rotate(-120deg)}
  22%{opacity:.95}
  68%{opacity:1;transform:scale(.96) rotate(115deg)}
  100%{opacity:0;transform:scale(1.12) rotate(210deg)}
}
@keyframes glBattlePDefense{
  0%{opacity:0;transform:scale(.7)}
  24%{opacity:1;transform:scale(1.02)}
  72%{opacity:.96;transform:scale(1)}
  100%{opacity:0;transform:scale(1.03)}
}
@keyframes glBattleMDefense{
  0%{opacity:0;transform:scale(.48) rotate(-12deg)}
  26%{opacity:1;transform:scale(1.04) rotate(3deg)}
  72%{opacity:.95;transform:scale(.98) rotate(0)}
  100%{opacity:0;transform:scale(1.1) rotate(6deg)}
}
@keyframes glBattleDodgeCard{
  0%{opacity:1;transform:translate3d(0,0,0) scale(1);filter:blur(0) brightness(1)}
  14%{opacity:.22;transform:translate3d(46%,0,0) scale(.98);filter:blur(2px) brightness(1.2)}
  30%{opacity:.04;transform:translate3d(-34%,0,0) scale(.97);filter:blur(3px) brightness(1.28)}
  46%{opacity:.28;transform:translate3d(38%,0,0) scale(.98);filter:blur(2px) brightness(1.16)}
  64%{opacity:.06;transform:translate3d(-20%,0,0) scale(.99);filter:blur(2px) brightness(1.12)}
  82%{opacity:.78;transform:translate3d(6%,0,0) scale(1);filter:blur(.5px) brightness(1.05)}
  100%{opacity:1;transform:translate3d(0,0,0) scale(1);filter:blur(0) brightness(1)}
}
@keyframes glBattleDamageShake{
  0%,100%{transform:translate3d(0,0,0) rotate(0)}
  20%{transform:translate3d(-3px,1px,0) rotate(-.6deg)}
  40%{transform:translate3d(3px,-1px,0) rotate(.6deg)}
  60%{transform:translate3d(-2px,0,0) rotate(-.4deg)}
  80%{transform:translate3d(1px,0,0) rotate(.25deg)}
}
@keyframes glBattleHeal{
  0%{opacity:0;transform:translate3d(0,28%,0) scale(.72)}
  22%{opacity:.94}
  72%{opacity:.96;transform:translate3d(0,-12%,0) scale(.94)}
  100%{opacity:0;transform:translate3d(0,-28%,0) scale(1)}
}
@media(max-width:980px){
  .gl-battle-vfx{filter:drop-shadow(0 0 7px rgba(0,0,0,.24))}
}
@media(prefers-reduced-motion:reduce){
  .gl-battle-pattack,.gl-battle-mattack,.gl-battle-pdef,.gl-battle-mdef,.gl-battle-heal,.gl-battle-dodge-card>.hero-card.hero-main,.gl-battle-damage-card>.hero-card.hero-main{animation-duration:.18s!important;animation-delay:0s!important}
}

/* LOCAL UI POLISH v4 — Play / Tribute touch target +2px total height. */
.v96-app .play-card-action,.v96-app .tribute-card-action{padding:4px 3px!important}

/* v6.0 Casting pair visibility — inward-only slot pairing. */
.gl-casting-pair-highlight{position:relative!important;box-shadow:inset 0 0 0 3px var(--gl-casting-pair-color,#35d8ff),inset 0 0 14px color-mix(in srgb,var(--gl-casting-pair-color,#35d8ff) 58%,transparent)!important;animation:glCastingPairPulse 1.25s ease-in-out infinite}
@keyframes glCastingPairPulse{0%,100%{filter:none}50%{box-shadow:inset 0 0 0 3px var(--gl-casting-pair-color,#35d8ff),inset 0 0 22px color-mix(in srgb,var(--gl-casting-pair-color,#35d8ff) 78%,transparent)}}
@media(prefers-reduced-motion:reduce){.gl-casting-pair-highlight{animation:none!important}}

/* v6.1 desktop resolution + Hand action lock.
   Desktop review anchors: 1440x900 and 1920x1080.
   The approved <=1450px composition is the 1440 desktop anchor; larger desktop widths remain fluid up to a centered 1920px canvas.
   PLAY / TRIBUTE: 18px desktop, 16px mobile. */
@media (min-width:761px){
  .v96-app .gl-app{width:min(100vw,1920px)!important;max-width:1920px!important;margin-left:auto!important;margin-right:auto!important}
  .v96-app .hand-card .hand-actions{height:18px!important;min-height:18px!important}
  .v96-app .hand-card .mini-action{height:18px!important;min-height:18px!important;flex-basis:18px!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) 114px 22px!important}
  .v96-app .hand-card{height:110px!important;grid-template-rows:minmax(0,89px) 18px!important}
}
@media (max-width:760px){
  .v96-app .hand-card .hand-actions{height:34px!important;min-height:34px!important;gap:2px!important}
  .v96-app .hand-card .mini-action{height:16px!important;min-height:16px!important;flex:0 0 16px!important}
}
html.gl-active-vs-match,body.gl-active-vs-match{overscroll-behavior-y:contain}

/* VS AI v6.12 — mobile cross-application hamburger navigation. */
.gl-mobile-app-menu-button{display:none;position:fixed;top:max(10px,env(safe-area-inset-top));right:12px;z-index:12051;width:36px;height:36px;padding:7px;border:1px solid rgba(255,255,255,.18);border-radius:9px;background:rgba(7,16,28,.92);box-shadow:0 8px 22px rgba(0,0,0,.34);align-items:center;justify-content:center;flex-direction:column;gap:4px}
.gl-mobile-app-menu-button span{display:block;width:19px;height:2px;border-radius:3px;background:#fff}
.gl-mobile-app-menu{position:fixed;z-index:12050;width:min(230px,calc(100vw - 20px));padding:8px;border:1px solid #40566d;border-radius:12px;background:#101923;box-shadow:0 18px 42px rgba(0,0,0,.52)}
.gl-mobile-app-menu[hidden]{display:none!important}
.gl-mobile-app-menu a{display:block;padding:12px 14px;border-radius:8px;color:#edf5ff;text-decoration:none;font-size:12px;font-weight:900;letter-spacing:.04em}
.gl-mobile-app-menu a:hover,.gl-mobile-app-menu a:focus-visible{background:#172638;color:#f4d35e}
@media(max-width:768px){.gl-mobile-app-menu-button{display:flex}}


/* Pending Attack Direction Indicator — v6.17/v0.45/v3.14 */
.gl-pending-attack-direction-layer{position:fixed;inset:0;width:100%;height:100%;z-index:11840;pointer-events:none;overflow:visible;color:rgba(244,202,82,.84)}
.gl-pending-attack-line{stroke:currentColor;stroke-width:2.2;stroke-linecap:round;fill:none;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px rgba(0,0,0,.72))}
.gl-pending-attack-arrow{fill:currentColor}
.gl-pending-attack-sword{filter:drop-shadow(0 0 2px rgba(0,0,0,.9))}
.gl-pending-attack-line.is-looping{animation:glPendingAttackDirectionLoop 1.05s ease-in-out infinite}
.gl-pending-attack-line.is-once{animation:glPendingAttackDirectionOnce .72s ease-out both}
@keyframes glPendingAttackDirectionLoop{0%,100%{opacity:.72}50%{opacity:1}}
@keyframes glPendingAttackDirectionOnce{0%{opacity:0}18%{opacity:.95}78%{opacity:.95}100%{opacity:0}}
@media (max-width:700px){.gl-pending-attack-line{stroke-width:2.6}}
@media (prefers-reduced-motion:reduce){.gl-pending-attack-line.is-looping,.gl-pending-attack-line.is-once{animation:none;opacity:.9}}

/* ========================================================================== */
/* Mobile gameplay scroll contract — native document scrolling (v6.23/v0.51). */
/* html/body own vertical scrolling; #app stays in normal document flow.       */
/* ========================================================================== */
@media(max-width:760px){
  html.gl-mobile-game-scroll-active{
    width:100%!important;
    height:auto!important;
    min-height:100%!important;
    max-height:none!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch!important;
    overscroll-behavior-x:none!important;
    overscroll-behavior-y:contain!important;
    touch-action:pan-x pan-y!important;
  }
  html.gl-mobile-game-scroll-active body{
    position:static!important;
    width:100%!important;
    height:auto!important;
    min-height:100%!important;
    max-height:none!important;
    overflow-x:clip!important;
    overflow-y:visible!important;
    overscroll-behavior-x:none!important;
    overscroll-behavior-y:contain!important;
    touch-action:pan-x pan-y!important;
  }
  html.gl-mobile-game-scroll-active #app{
    display:block!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
    overscroll-behavior:auto!important;
    touch-action:pan-x pan-y!important;
  }
  html.gl-mobile-game-scroll-active #app::after{
    content:"";display:block;width:1px;height:max(2px,env(safe-area-inset-bottom,0px));pointer-events:none;
  }
  html.gl-mobile-game-scroll-active #app>.v96-app,
  html.gl-mobile-game-scroll-active #app>.v96-app>.gl-app,
  html.gl-mobile-game-scroll-active #app>.v96-app>.gl-app>.main-stage{
    height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;
  }
  html.gl-mobile-game-scroll-active #app>.v96-app{width:100%!important;max-width:100%!important;}
  html.gl-mobile-game-scroll-active #app>.v96-app>.gl-app{width:100%!important;margin:0!important;padding-bottom:3px!important;}
  html.gl-mobile-game-scroll-active .v96-app .hand-area--player .handPanel{
    overflow-x:auto!important;overflow-y:visible!important;-webkit-overflow-scrolling:touch!important;touch-action:pan-x pan-y!important;
  }
  html.gl-mobile-game-scroll-active .v96-app .hand-card,
  html.gl-mobile-game-scroll-active .v96-app .hand-card .hand-art{touch-action:pan-x pan-y!important;}
  /* A stale animation-lock class must never create a nested BODY scroller on mobile. */
  html.gl-mobile-game-scroll-active.gl-animation-scroll-locked{overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:contain!important;}
  html.gl-mobile-game-scroll-active body.gl-animation-scroll-locked{overflow-x:clip!important;overflow-y:visible!important;overscroll-behavior-y:contain!important;}
}

/* vNext responsive priority — Phase Tracker is critical at constrained desktop heights. */
@media (min-width:761px) and (max-width:1800px) and (max-height:860px){
  .v96-app .control-sidebar{grid-template-rows:auto auto minmax(92px,1fr) auto!important;gap:5px!important;overflow:hidden!important}
  .v96-app .phase-panel{min-height:246px!important;height:auto!important;grid-template-rows:auto auto auto!important;align-content:start!important;gap:5px!important;overflow:visible!important}
  .v96-app .phase-list{grid-template-rows:repeat(5,26px)!important;gap:4px!important}
  .v96-app .phase-list button{height:26px!important;min-height:26px!important;padding:2px 5px!important}
  .v96-app .phase-actions{grid-template-rows:26px 32px!important;gap:4px!important;min-height:62px!important;height:auto!important}
  .v96-app .phase-actions .reposition,.v96-app .phase-actions .cancel-action{height:26px!important;min-height:26px!important}
  .v96-app .phase-actions .next-phase{height:32px!important;min-height:32px!important}
  /* Card Played is the flexible secondary panel. Fill the sidebar space left after
     Phase Tracker, keep a 2x2 / max-4 preview, and scroll this panel rather than
     sacrificing Phase Tracker when vertical room is tight. */
  .v96-app .card-played-panel{min-height:108px!important;max-height:none!important;height:100%!important;grid-template-rows:auto minmax(0,1fr) 25px!important;gap:4px!important;overflow:hidden!important}
  .v96-app .played-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(46px,1fr))!important;grid-auto-rows:minmax(46px,1fr)!important;gap:4px!important;min-height:0!important;overflow-x:hidden!important;overflow-y:auto!important;align-content:start!important;overscroll-behavior:contain!important;scrollbar-width:thin!important}
  .v96-app .played-grid .combined-played-card:nth-child(n+5){display:none!important}
}
@media (min-width:761px) and (max-width:1800px) and (max-height:720px){
  .v96-app .card-played-panel{min-height:78px!important;max-height:none!important;height:100%!important}
  .v96-app .played-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(46px,1fr))!important;grid-auto-rows:minmax(46px,1fr)!important;overflow-x:hidden!important;overflow-y:auto!important;align-content:start!important}
  .v96-app .played-grid .combined-played-card:nth-child(n+5){display:none!important}
}

/* Hero / Legacy display parity — Legacy metadata overlays instead of shrinking the artwork stage. */
@media (min-width:761px){
  .v96-app .hero-lane.legacy-slot{position:relative!important}
  .v96-app .hero-row--opponent .hero-lane.legacy-slot{grid-template-rows:35px minmax(0,1fr)!important}
  .v96-app .hero-row--opponent .hero-lane.legacy-slot>.hero-stage{grid-row:2!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot{grid-template-rows:minmax(0,1fr) 35px!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot>.hero-stage{grid-row:1!important}
  .v96-app .hero-lane.legacy-slot>.legacy-health{position:absolute!important;left:4px!important;right:4px!important;z-index:12!important;pointer-events:none!important;height:24px!important;min-height:24px!important;margin:0!important}
  .v96-app .hero-row--opponent .hero-lane.legacy-slot>.legacy-health{bottom:2px!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot>.legacy-health{top:2px!important}
}
@media (max-width:760px){
  .v96-app .hero-lane.legacy-slot{position:relative!important}
  .v96-app .hero-row--opponent .hero-lane.legacy-slot>.legacy-health{position:absolute!important;bottom:2px!important;left:2px!important;right:2px!important;z-index:12!important;pointer-events:none!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot>.legacy-health{position:absolute!important;top:2px!important;left:2px!important;right:2px!important;z-index:12!important;pointer-events:none!important}
}
/* Hero / Legacy mobile stage parity follows the same attachment-band sizes as normal Hero lanes. */
@media (max-width:760px){
  .v96-app .hero-row--opponent .hero-lane.legacy-slot{grid-template-rows:29px minmax(0,1fr)!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--player .hero-lane.legacy-slot{grid-template-rows:minmax(0,1fr) 29px!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot>.hero-stage{grid-row:1!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot>.attachment-row{grid-row:2!important}
}
@media (max-width:420px){
  .v96-app .hero-row--opponent .hero-lane.legacy-slot{grid-template-rows:22px minmax(0,1fr)!important}
  .v96-app .hero-row--player .hero-lane.legacy-slot{grid-template-rows:minmax(0,1fr) 22px!important}
}

/* VS AI v6.30 / Tutorial v0.56 — orientation-aware physical Tribute EXP stack.
   Ready: the four fixed EXP card edges live on the Hero's right edge.
   Exhausted: the Hero artwork rotates independently and the same four EXP card
   instances move to the Hero's upper edge, stacked bottom-to-top (oldest/slot 1
   nearest the Hero, slot 4 furthest upward). HP/status UI stays upright.
   The outer composition continues to reserve the full 28px EXP capacity. */
.v96-app .hero-card-composition{
  display:grid!important;
  grid-template-columns:max-content 28px!important;
  grid-template-rows:minmax(0,max-content)!important;
  align-items:center!important;
  justify-content:center!important;
  gap:0!important;
  max-width:100%!important;
  max-height:100%!important;
  overflow:visible!important;
}
.v96-app .hero-card-composition>.hero-card-anchor{
  grid-column:1!important;
  grid-row:1!important;
  align-self:center!important;
}
.v96-app .hero-card-physical-stack{
  position:relative!important;
  display:grid!important;
  place-items:center!important;
  width:max-content!important;
  max-width:100%!important;
  max-height:100%!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
}
.v96-app .hero-card-physical-stack>.hero-card.hero-main{
  grid-area:1/1!important;
  margin:0!important;
  transform-origin:center center!important;
  transition:transform .28s cubic-bezier(.2,.75,.2,1),filter .28s ease!important;
}
.v96-app .hero-card-physical-stack.is-ready>.hero-card.hero-main{
  transform:none!important;
  filter:none!important;
}
.v96-app .hero-card-physical-stack.is-exhausted>.hero-card.hero-main{
  transform:rotate(-90deg)!important;
  filter:saturate(.72) brightness(.84)!important;
}
.v96-app .hero-card-physical-stack>.hero-exp-stack{
  position:absolute!important;
  margin:0!important;
  padding:0!important;
  gap:0!important;
  overflow:visible!important;
  pointer-events:none!important;
  z-index:20!important;
}
/* READY: four physical card edges on the right side. */
.v96-app .hero-card-physical-stack.is-ready>.hero-exp-stack{
  left:100%!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  display:grid!important;
  grid-template-columns:repeat(4,7px)!important;
  grid-template-rows:1fr!important;
  width:28px!important;
  min-width:28px!important;
  max-width:28px!important;
  height:var(--gl-exp-stack-height,100%)!important;
  min-height:0!important;
}
/* EXHAUSTED: card edges move to the upper edge and stack bottom -> top.
   flex column-reverse intentionally places DOM slot 1 nearest the Hero. */
.v96-app .hero-card-physical-stack.is-exhausted>.hero-exp-stack{
  left:50%!important;
  top:auto!important;
  bottom:calc(50% + var(--gl-exp-exhausted-half-height,0px))!important;
  transform:translateX(-50%)!important;
  display:flex!important;
  flex-direction:column-reverse!important;
  width:var(--gl-exp-exhausted-stack-width,100px)!important;
  min-width:0!important;
  max-width:none!important;
  height:28px!important;
  min-height:28px!important;
  max-height:28px!important;
}
.v96-app .hero-exp-slot{
  position:relative!important;
  display:block!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  overflow:visible!important;
  background:none!important;
}
.v96-app .hero-card-physical-stack.is-ready .hero-exp-slot{
  width:7px!important;
  min-width:7px!important;
  height:100%!important;
  min-height:0!important;
}
.v96-app .hero-card-physical-stack.is-exhausted .hero-exp-slot{
  width:100%!important;
  min-width:0!important;
  height:7px!important;
  min-height:7px!important;
  flex:0 0 7px!important;
}
/* The master sprite stays vertical. On Exhaust each edge is physically rotated
   into a horizontal strip while preserving the exact 100/200 half selection. */
.v96-app .hero-exp-slot::before{
  content:""!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:7px!important;
  height:var(--gl-exp-stack-height,100%)!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:center center!important;
  background-color:transparent!important;
  background-image:url("../assets/exp/Stack 100-200EXP.png")!important;
  background-repeat:no-repeat!important;
  background-size:200% 100%!important;
  background-position:left center!important;
}
.v96-app .hero-exp-slot[data-exp-value="200"]::before{background-position:right center!important}
.v96-app .hero-card-physical-stack.is-exhausted .hero-exp-slot::before{
  height:var(--gl-exp-exhausted-stack-width,100px)!important;
  transform:translate(-50%,-50%) rotate(-90deg)!important;
}
.v96-app .hero-exp-slot.is-empty{visibility:hidden!important}
.v96-app .hero-exp-slot.is-empty::before{background-image:none!important}
@media (prefers-reduced-motion:reduce){
  .v96-app .hero-card-physical-stack>.hero-card.hero-main{transition:none!important}
}


/* VS AI v6.36 / Tutorial v0.62 — mobile restore + dedicated Shard Pool rail.
   Mobile returns to the proven pre-Lab battlefield geometry. Desktop remains unchanged. */
@media(max-width:760px){
  .v96-app.mobile-restored-layout .mobile-shard-field{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:4px!important;height:auto!important;overflow:visible!important;padding:0!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent{grid-template-rows:70px 218px 48px!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--player{grid-template-rows:218px 48px 70px!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field .resource-rail{display:contents!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .zone{grid-row:1!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--player .zone{grid-row:3!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field .hero-row{grid-column:1/-1!important;width:100%!important;height:218px!important;min-height:218px!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .hero-row{grid-row:2!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--player .hero-row{grid-row:1!important;}
  .v96-app.mobile-restored-layout .zone[data-zone-type="Shard Deck"]{position:relative!important;background:rgba(5,24,39,.46)!important;}
  .v96-app.mobile-restored-layout .zone[data-zone-type="Shard Deck"] .zoneCard>b{font-size:9px!important;}
  .v96-app.mobile-restored-layout .zone[data-zone-type="Shard Deck"] em{font-size:5.5px!important;color:#f0d76f!important;}
  .v96-app.mobile-restored-layout .mobile-shard-pool{grid-column:1/-1!important;position:relative!important;height:48px!important;min-height:48px!important;display:flex!important;align-items:center!important;border-top:1px solid rgba(215,184,95,.16)!important;border-bottom:1px solid rgba(215,184,95,.16)!important;background:rgba(3,12,20,.78)!important;overflow:hidden!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .mobile-shard-pool{grid-row:3!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--player .mobile-shard-pool{grid-row:2!important;}
  .v96-app.mobile-restored-layout .mobile-shard-pool>strong{position:absolute!important;left:4px!important;top:2px!important;z-index:4!important;font-size:5.8px!important;line-height:8px!important;letter-spacing:.08em!important;color:#e2c867!important;text-shadow:0 1px 2px #000!important;}
  .v96-app.mobile-restored-layout .mobile-shard-scroll{width:100%!important;height:100%!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:2px!important;overflow-x:auto!important;overflow-y:hidden!important;padding:8px 52px 2px 44px!important;scrollbar-width:none!important;-webkit-overflow-scrolling:touch!important;touch-action:pan-x pan-y!important;}
  .v96-app.mobile-restored-layout .mobile-shard-scroll::-webkit-scrollbar{display:none!important;}
  .v96-app.mobile-restored-layout .mobile-shard-card{position:relative!important;width:24px!important;height:34px!important;min-width:24px!important;flex:0 0 24px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;border-radius:3px!important;overflow:hidden!important;box-shadow:0 1px 3px rgba(0,0,0,.65)!important;}
  .v96-app.mobile-restored-layout .mobile-shard-card img{display:block!important;width:100%!important;height:100%!important;object-fit:contain!important;}
  .v96-app.mobile-restored-layout .mobile-shard-card.is-opening-draw-hidden,.v96-app.mobile-restored-layout .mobile-shard-card.is-pending-draw{visibility:hidden!important;pointer-events:none!important;}
  .v96-app.mobile-restored-layout .mobile-shard-racial{position:absolute!important;right:3px!important;top:2px!important;bottom:2px!important;z-index:5!important;width:46px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:1px!important;border-left:1px solid rgba(215,184,95,.16)!important;background:linear-gradient(90deg,rgba(3,12,20,.15),rgba(3,12,20,.96) 30%)!important;}
  .v96-app.mobile-restored-layout .mobile-shard-racial small{font-size:5px!important;line-height:6px!important;color:#e2c867!important;font-weight:900!important;}
  .v96-app.mobile-restored-layout .mobile-shard-racial>div{display:flex!important;gap:2px!important;}
  .v96-app.mobile-restored-layout .mobile-shard-racial img{width:17px!important;height:17px!important;object-fit:contain!important;border-radius:50%!important;}
}


/* VS AI v6.40 / Tutorial v0.66 — mobile cleanup after tablet split.
   Mobile keeps the old scrollable board. Opponent Shard Pool belongs above the opponent Hero row.
   Match-time app navigation stays hidden, and Attachment counters remain compact on their Attachment card. */
body:has(.v96-app.mobile-restored-layout) #glMobileAppMenuButton,
body:has(.v96-app.mobile-restored-layout) #glMobileAppMenu{display:none!important;}
@media(max-width:760px){
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent{grid-template-rows:70px 48px 218px!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .zone{grid-row:1!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .mobile-shard-pool{grid-row:2!important;}
  .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .hero-row{grid-row:3!important;}
  .v96-app.mobile-restored-layout .attachment-row>.slot{position:relative!important;overflow:visible!important;}
  .v96-app.mobile-restored-layout .attachment-row>.slot .gl-attachment-die{position:absolute!important;z-index:40!important;right:-2px!important;top:-2px!important;width:13px!important;height:13px!important;min-width:13px!important;min-height:13px!important;margin:0!important;pointer-events:none!important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.75))!important;}
}

/* VS AI v6.42 — retained mobile battlefield correction baseline.
   The 28px EXP rail is intentionally reserved to the right of the Hero anchor.
   On the scrollable phone layout, compensate by half that rail so the physical
   Hero card is centered left-to-right inside its lane. Vertical placement stays
   untouched because the upper/lower space belongs to Status/Skill/Attachments. */
@media (max-width:760px){
  .v96-app.mobile-restored-layout .hero-card-composition{transform:translateX(14px)!important;}
}


/* ================================================================
   OSA v1.9.4 / UI Contract v2.53 — shared battlefield baseline
   ================================================================ */
#hoverCardZoom.is-v253-readable-preview,
#hoverCardZoom.is-card-played-hover{width:250px!important;height:350px!important;pointer-events:none!important;z-index:5000!important;}

/* One compact numeric badge family. Counter.png graphics remain Mana Regen-only. */
.gl-count-badge,.gl-status-count,.gl-attachment-count{
  display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 6px;
  border:1px solid rgba(235,196,67,.92);border-radius:999px;background:rgba(7,10,14,.94);color:#ffd94d;
  font-size:11px;font-weight:900;line-height:1;box-shadow:0 2px 7px rgba(0,0,0,.5);text-shadow:0 1px 2px #000;
}
.gl-lab-zone .zoneCard,.zone .zoneCard,.slot.filled,.negative-status-indicator{position:relative!important;overflow:visible!important;}
.gl-lab-zone .zoneCard .gl-resource-count,.zone .zoneCard .gl-resource-count{position:absolute;top:-7px;right:-7px;z-index:6;}
.negative-status-indicator .gl-status-count{position:absolute;right:-6px;bottom:-5px;z-index:7;}
.slot.filled>.gl-attachment-count{position:absolute;top:-7px;right:-7px;z-index:7;}
.attachment-counter,.gl-deck-count--above{display:none!important;}

/* v2.53 proportional resource stacks: the stack is the visual focus, not empty container chrome. */
.gl-lab-resource-rail{align-items:center!important;}
.gl-lab-zone{min-height:0!important;padding:4px 5px!important;gap:3px!important;justify-content:flex-start!important;overflow:visible!important;}
.gl-lab-zone .gl-lab-zone-label{line-height:1.05!important;margin:0!important;}
.gl-lab-zone .zoneCard{width:min(80px,100%)!important;height:auto!important;aspect-ratio:5/7!important;margin:0 auto!important;}
.gl-lab-zone .zoneCard img{width:100%!important;height:100%!important;object-fit:contain!important;}

@media(max-width:760px),(hover:none),(pointer:coarse){
  body:not(.gl-ui-desktop):not(.gl-tablet-landscape-desktop) #hoverCardZoom.is-v253-readable-preview,#hoverCardZoom.is-card-played-hover{display:none!important;}
  .gl-count-badge,.gl-status-count,.gl-attachment-count{min-width:18px;height:17px;padding:0 4px;font-size:9px;}
}
/* UI Contract v2.53: keep battlefield deck/pile containers proportional to their card stack. */
.gl-lab-zone{align-self:center!important;height:auto!important;max-height:118px!important;}


/* ================================================================
   2026-09-21 v6.42 / v0.68 UI-only correction pass
   Preserve versions and gameplay semantics; correct presentation only.
   ================================================================ */
/* Contextual previews: fixed battlefield stays 250x350; modal/Card Played grows ~9%. */
#hoverCardZoom.is-v253-contextual-preview,#hoverCardZoom.is-card-played-hover{width:272px!important;height:381px!important;max-width:272px!important;max-height:381px!important;pointer-events:none!important;z-index:2147482000!important;}

/* Numeric counters: approved dark/gold rounded rectangles; warning ! remains a separate circle. */
.gl-count-badge{border-radius:6px!important;background:#071019!important;border-color:#6a5821!important;color:#f4d35e!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;}
.gl-status-count{font-size:9px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;}
.gl-attachment-count{display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;}

/* Keep the existing Status/Attachment attachment points unchanged. */
.negative-status-indicator .gl-status-count{right:-6px!important;bottom:-5px!important;}
.slot.filled>.gl-attachment-count{top:-7px!important;right:-7px!important;}

/* Restore the approved warning visual and make its condition state visible before hover. */
.v96-app .hero-status-overlay{top:6px!important;left:6px!important;overflow:visible!important;}
.v96-app .hero-info-indicator .hero-indicator-tooltip{opacity:0!important;visibility:hidden!important;pointer-events:none!important;}
.v96-app .hero-info-indicator:hover .hero-indicator-tooltip,.v96-app .hero-info-indicator:focus-within .hero-indicator-tooltip{opacity:1!important;visibility:visible!important;display:block!important;}

/* Ready/Exhausted parity: identical scale, only a 90-degree rotation changes orientation. */
.v96-app .hero-card-physical-stack.is-exhausted>.hero-card.hero-main{transform:rotate(-90deg)!important;}

/* UI-only correction: tablet portrait uses the mobile/touch Hero information control even when its physical viewport exceeds 760px. */
html.gl-tablet-portrait-mobile .v96-app .hero-status-overlay>.mobile-status-summary{
  display:grid!important;
  place-items:center!important;
  pointer-events:auto!important;
}

/* Status geometry is frozen; only the 8px numeral is authoritative. */
.gl-status-count{font-size:8px!important;}

/* One warning visual authority: Hero information now reuses the exact Legacy warning class. */
.v96-app .gl-warning-indicator,
.v96-app .hero-info-indicator>.status-trigger.legacy-hero-info{
  width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;
  padding:0!important;border-radius:50%!important;
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
  border:1px solid rgba(236,201,91,.78)!important;background:#182334!important;color:#f2ce5b!important;
  font-size:11px!important;font-weight:900!important;line-height:1!important;
  box-shadow:0 0 8px rgba(236,201,91,.18)!important;
  opacity:1!important;visibility:visible!important;
}
.v96-app .hero-info-indicator{opacity:1!important;visibility:visible!important;}
.v96-app .hero-info-indicator .hero-indicator-tooltip{opacity:0!important;visibility:hidden!important;display:none!important;pointer-events:none!important;}
.v96-app .hero-info-indicator>.gl-warning-indicator:hover + .hero-indicator-tooltip,
.v96-app .hero-info-indicator>.gl-warning-indicator:focus-visible + .hero-indicator-tooltip{
  opacity:1!important;visibility:visible!important;display:block!important;
}
/* A Hero/card hover must never be the warning-detail trigger. */
.v96-app .hero-info-indicator:hover .hero-indicator-tooltip{opacity:0!important;visibility:hidden!important;display:none!important;}
.v96-app .hero-info-indicator:has(>.gl-warning-indicator:hover) .hero-indicator-tooltip,
.v96-app .hero-info-indicator:has(>.gl-warning-indicator:focus-visible) .hero-indicator-tooltip{
  opacity:1!important;visibility:visible!important;display:block!important;
}

/* Legacy name and its warning are one centered horizontal group. */
.v96-app .legacy-name-bar{display:flex!important;align-items:center!important;justify-content:center!important;}
.v96-app .legacy-name-group{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;max-width:100%!important;min-width:0!important;}
.v96-app .legacy-name-group>small{min-width:0!important;}

/* Mobile/tablet-portrait Shard Pool keeps the graphical Mana Regen counter in its existing left slot. */
@media(max-width:760px){
  .v96-app.mobile-restored-layout .mobile-shard-pool-content{
    width:100%!important;height:100%!important;display:flex!important;align-items:stretch!important;min-width:0!important;
    padding-top:8px!important;
  }
  .v96-app.mobile-restored-layout .mobile-shard-regen{
    width:43px!important;min-width:43px!important;flex:0 0 43px!important;height:38px!important;
    display:grid!important;place-items:center!important;
    border-right:1px solid rgba(215,184,95,.16)!important;pointer-events:none!important;overflow:hidden!important;
  }
  .v96-app.mobile-restored-layout .mobile-shard-regen img{width:22px!important;height:22px!important;flex:0 0 22px!important;object-fit:contain!important;}
  .v96-app.mobile-restored-layout .mobile-shard-pool-content>.mobile-shard-scroll{
    flex:1 1 auto!important;width:auto!important;min-width:0!important;height:38px!important;
    padding:1px 52px 1px 3px!important;
  }
  /* Deck/Pile stack wrapper equals the visible card footprint so the count is attached to the actual card. */
  .v96-app.mobile-restored-layout .zone:not(.zone--mana) .zoneCard{
    width:46px!important;height:64px!important;min-width:46px!important;min-height:64px!important;max-width:46px!important;max-height:64px!important;
    margin:7px auto 0!important;align-self:start!important;overflow:visible!important;aspect-ratio:5/7!important;
  }
  .v96-app.mobile-restored-layout .zone:not(.zone--mana) .zoneCard>img{
    width:46px!important;height:64px!important;max-width:46px!important;max-height:64px!important;object-fit:contain!important;object-position:center!important;
  }
  .v96-app.mobile-restored-layout .zone:not(.zone--mana) .zoneCard>.gl-resource-count{
    top:0!important;right:0!important;bottom:auto!important;left:auto!important;transform:translate(50%,-50%)!important;
  }
  .v96-app.mobile-restored-layout .zone:not(.zone--mana){overflow:hidden!important;align-content:start!important;}
  /* Face-up Discard uses the same card footprint as the back-facing Deck zones. */
  .v96-app.mobile-restored-layout .zone[data-zone-type="Discard Pile"] .zoneCard>img{opacity:.92!important;filter:none!important;}
}

/* Tablet portrait is physically wider than the mobile CSS tier in some engines; enforce the same contract. */
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-pool-content{width:100%!important;height:100%!important;display:flex!important;align-items:stretch!important;min-width:0!important;padding-top:8px!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-regen{width:43px!important;min-width:43px!important;flex:0 0 43px!important;height:38px!important;display:grid!important;place-items:center!important;border-right:1px solid rgba(215,184,95,.16)!important;pointer-events:none!important;overflow:hidden!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-regen img{width:22px!important;height:22px!important;object-fit:contain!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-pool-content>.mobile-shard-scroll{flex:1 1 auto!important;width:auto!important;min-width:0!important;height:38px!important;padding:1px 52px 1px 3px!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .zone:not(.zone--mana) .zoneCard{
  width:46px!important;height:64px!important;min-width:46px!important;min-height:64px!important;max-width:46px!important;max-height:64px!important;
  margin:7px auto 0!important;align-self:start!important;overflow:visible!important;aspect-ratio:5/7!important;
}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .zone:not(.zone--mana) .zoneCard>img{
  width:46px!important;height:64px!important;max-width:46px!important;max-height:64px!important;object-fit:contain!important;object-position:center!important;
}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .zone:not(.zone--mana) .zoneCard>.gl-resource-count{
  top:0!important;right:0!important;bottom:auto!important;left:auto!important;transform:translate(50%,-50%)!important;
}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .zone:not(.zone--mana){overflow:hidden!important;align-content:start!important;}

html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:4px!important;height:auto!important;overflow:visible!important;padding:0!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent{grid-template-rows:70px 48px 218px!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--player{grid-template-rows:218px 48px 70px!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field .resource-rail{display:contents!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .zone{grid-row:1!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--player .zone{grid-row:3!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field .hero-row{grid-column:1/-1!important;width:100%!important;height:218px!important;min-height:218px!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .hero-row{grid-row:3!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--player .hero-row{grid-row:1!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-pool{grid-column:1/-1!important;position:relative!important;height:48px!important;min-height:48px!important;display:flex!important;align-items:center!important;border-top:1px solid rgba(215,184,95,.16)!important;border-bottom:1px solid rgba(215,184,95,.16)!important;background:rgba(3,12,20,.78)!important;overflow:hidden!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--opponent .mobile-shard-pool,
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-field.field--player .mobile-shard-pool{grid-row:2!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-pool>strong{position:absolute!important;left:4px!important;top:2px!important;z-index:4!important;font-size:5.8px!important;line-height:8px!important;letter-spacing:.08em!important;color:#e2c867!important;text-shadow:0 1px 2px #000!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-scroll{height:100%!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:2px!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none!important;-webkit-overflow-scrolling:touch!important;touch-action:pan-x pan-y!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-card{position:relative!important;width:24px!important;height:34px!important;min-width:24px!important;max-width:24px!important;min-height:34px!important;max-height:34px!important;flex:0 0 24px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;border-radius:3px!important;overflow:hidden!important;box-shadow:0 1px 3px rgba(0,0,0,.65)!important;}
html.gl-tablet-portrait-mobile .v96-app.mobile-restored-layout .mobile-shard-card img{display:block!important;width:100%!important;height:100%!important;object-fit:contain!important;}

/* Tablet-landscape AI Lobby uses normal page-level vertical scrolling.
   This is the single landscape exception to the fixed desktop lobby shell. */
html.gl-ui-tablet.gl-tablet-landscape-desktop{
  height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;touch-action:pan-y!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop body.deck-setup-active{
  position:static!important;height:auto!important;min-height:100dvh!important;max-height:none!important;
  overflow-x:hidden!important;overflow-y:visible!important;touch-action:pan-y!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop body.deck-setup-active #app{
  position:static!important;height:auto!important;min-height:100dvh!important;max-height:none!important;overflow:visible!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop body.deck-setup-active .deck-setup-screen.runtime-ui-v14-setup{
  position:relative!important;inset:auto!important;width:100%!important;height:auto!important;min-height:100dvh!important;max-height:none!important;
  overflow:visible!important;display:block!important;touch-action:pan-y!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop body.deck-setup-active .deck-setup-screen.runtime-ui-v14-setup .deck-setup-shell{
  height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop body.deck-setup-active .deck-setup-screen.runtime-ui-v14-setup .deck-setup-grid,
html.gl-ui-tablet.gl-tablet-landscape-desktop body.deck-setup-active .deck-setup-screen.runtime-ui-v14-setup .deck-side{
  height:auto!important;max-height:none!important;overflow:visible!important;
}

/* PvP v3.48 final bugfix release — narrowly scoped UI corrections. */
.pvp-v260-swap-button{background:transparent!important;box-shadow:none!important;overflow:visible!important}
.pvp-v260-swap-button img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.pvp-v260-seat{position:relative}
.pvp-seat-kick{position:static;display:grid;place-items:center;width:28px;height:28px;min-width:28px;min-height:28px;padding:0;border:1px solid #a82b40;border-radius:50%;background:#5f1320;color:#fff;line-height:1;font-size:18px;font-weight:800;cursor:pointer;transform:none;box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.pvp-seat-kick>span{display:block;transform:translateY(-1px);pointer-events:none}
.pvp-seat-kick:hover,.pvp-seat-kick:focus-visible{background:#7b192a;border-color:#d94a61;outline:2px solid rgba(217,74,97,.35);outline-offset:2px}
.v96-app .match-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)!important;overflow:visible!important}
.v96-app .match-panel .pvp-match-timer{grid-column:1!important;grid-row:1!important;display:grid!important;place-items:center!important;min-width:0!important;height:24px!important;border:1px solid rgba(100,123,145,.64)!important;border-radius:9px!important;background:rgba(5,14,22,.92)!important;color:#d9e2eb!important;font-size:9px!important;font-weight:900!important;font-variant-numeric:tabular-nums!important;letter-spacing:.04em!important;box-sizing:border-box!important}
.v96-app .match-panel .sound-toggle{grid-column:2!important;grid-row:1!important}
.v96-app .match-panel .surrender{grid-column:3!important;grid-row:1!important;display:block!important;visibility:visible!important;opacity:1!important}
.mobile-match-menu-actions .pvp-match-timer{display:grid;place-items:center;min-height:40px;border:1px solid rgba(100,123,145,.64);border-radius:9px;background:rgba(5,14,22,.92);color:#d9e2eb;font-weight:900;font-variant-numeric:tabular-nums}
@media(max-width:768px){.pvp-v260-swap-button{width:25px!important;height:25px!important;min-width:25px!important;min-height:25px!important}.pvp-seat-kick{width:26px;height:26px;min-width:26px;min-height:26px;font-size:17px}.gl-mobile-app-menu-button{z-index:12051!important}.gl-mobile-app-menu{z-index:12050!important}}


/* PvP v3.51 final stability release — battle negate + Kick asset. */
.gl-battle-negate-card>.hero-card.hero-main{animation:glBattleNegateCard .7s cubic-bezier(.2,.72,.2,1) both}
@keyframes glBattleNegateCard{0%{filter:brightness(1);opacity:1}28%{filter:brightness(1.45) saturate(.55);opacity:.72}58%{filter:brightness(.78) saturate(.35);opacity:.52}100%{filter:brightness(1);opacity:1}}
.pvp-seat-kick img{display:block;width:16px;height:16px;object-fit:contain;pointer-events:none}
@media(prefers-reduced-motion:reduce){.gl-battle-negate-card>.hero-card.hero-main{animation-duration:.18s!important}}
