/* Grandis Legacy Playtest Lab UI Authority v0.10.0 — Local VS AI v0.10
   This is the only desktop battlefield-layout authority in the Lab build.
   Production app.css remains present only for shared modal/gameplay component styling.
   The live production packages are not modified. */

:root{
  --lab-card-w:clamp(66px,4.55vw,78px);
  --lab-card-h:calc(var(--lab-card-w) * 1.4);
  --lab-mana-w:calc(var(--lab-card-w) * .8);
  --lab-mana-h:calc(var(--lab-card-h) * .8);
  --lab-hand-visible:.60;
  --lab-sidebar-w:clamp(244px,15.8vw,292px);
  --lab-resource-w:calc(var(--lab-card-w) + 24px);
  --lab-gold:#d7b85f;
  --lab-line:#31465a;
  --lab-panel:#06111a;
}

html,body{width:100%;height:100%;margin:0;}
body:has(.gl-lab-authority){min-width:0!important;overflow:hidden!important;background:#07111c url('../assets/Background.png') center/cover fixed no-repeat!important;}
body:has(.gl-lab-authority) #glMobileAppMenuButton,
body:has(.gl-lab-authority) #glMobileAppMenu{display:none!important;}

/* One shell. No nested production battlefield grid owns geometry in this build. */
.gl-lab-authority{position:fixed;inset:0;overflow:hidden;color:#eaf2fb;font-family:"Noto Sans",Arial,sans-serif;background:linear-gradient(180deg,rgba(85,11,24,.12),rgba(4,16,29,.08));}
.gl-lab-shell{width:100%;height:100%;min-width:0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) var(--lab-sidebar-w);gap:6px;padding:5px;overflow:hidden;}
.gl-lab-battlefield{position:relative;min-width:0;min-height:0;display:grid;grid-template-rows:calc(var(--lab-card-h) * var(--lab-hand-visible)) minmax(0,1fr) 7px minmax(0,1fr) calc(var(--lab-card-h) * var(--lab-hand-visible));gap:3px;overflow:visible;border-right:1px solid rgba(49,70,90,.7);}
.gl-lab-divider{height:7px;align-self:center;background:linear-gradient(90deg,transparent,rgba(215,184,95,.20),transparent);pointer-events:none;}

/* Compact identity overlays: never consume battlefield rows. */
.gl-lab-identity{position:absolute;z-index:430;display:flex;align-items:center;gap:5px;height:18px;max-width:38%;padding:2px 7px;border:1px solid rgba(72,97,121,.72);border-radius:7px;background:rgba(3,11,18,.90);font-size:8px;line-height:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 8px rgba(0,0,0,.42);}
.gl-lab-identity strong{font-size:8px;color:#fff;letter-spacing:.035em;overflow:hidden;text-overflow:ellipsis;}
.gl-lab-identity span{font-size:7px;color:#9eb0c1;overflow:hidden;text-overflow:ellipsis;}
.gl-lab-identity--opponent{top:2px;left:4px;}
.gl-lab-identity--player{bottom:2px;left:4px;}
/* PvP identity row: one anchored row; connection bar is a flex sibling, never an overlay inside identity. */
.gl-lab-hand>.pvp-player-identity-row{position:absolute;z-index:430;left:4px;display:flex;align-items:center;gap:4px;max-width:min(62%,520px);min-width:0;}
.gl-lab-hand--opponent>.pvp-player-identity-row{top:2px;}
.gl-lab-hand--player>.pvp-player-identity-row{bottom:2px;}
.gl-lab-hand>.pvp-player-identity-row .pvp-player-identity-container.gl-lab-identity{position:static;z-index:auto;min-width:0;max-width:none;height:22px;padding:2px 7px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;overflow:visible;}
.gl-lab-hand>.pvp-player-identity-row .pvp-player-display-name{font-size:8px;line-height:8px;max-width:110px;}
.gl-lab-hand>.pvp-player-identity-row .pvp-player-deck-name{font-size:7px;line-height:8px;color:#9eb0c1;max-width:none;overflow:visible;text-overflow:clip;}
.gl-lab-hand>.pvp-player-identity-row .pvp-connection-bar{height:22px;flex:0 0 30px;}
.gl-lab-log-button{position:absolute;z-index:430;right:4px;bottom:2px;height:22px;padding:2px 8px;border:1px solid #39546f;border-radius:6px;background:#101d2b;color:#d9e7f4;font-size:8px;font-weight:800;}

/* HAND is geometry: 40% of each card lives outside viewport; only 60% reserves height. */
.gl-lab-hand{position:relative;min-width:0;min-height:0;overflow:visible;z-index:300;}
.gl-lab-hand--opponent{overflow:hidden;background:linear-gradient(180deg,rgba(83,9,24,.25),rgba(20,4,9,.01));}
.gl-lab-hand--player{background:linear-gradient(180deg,rgba(4,17,29,.01),rgba(4,49,86,.28));}
.gl-lab-hand-row{position:absolute;left:0;right:0;width:100%;height:var(--lab-card-h);display:flex;justify-content:center;align-items:flex-start;gap:5px;padding:0 7px;overflow:visible;}
.gl-lab-hand--opponent .gl-lab-hand-row{top:0;}
.gl-lab-hand--player .gl-lab-hand-row{bottom:0;}
.gl-lab-hand .opponent-hand-slot{position:relative;width:var(--lab-card-w)!important;height:var(--lab-card-h)!important;flex:0 0 var(--lab-card-w)!important;margin-left:var(--fan-overlap,0px)!important;transform:translateY(-40%) rotate(var(--fan-angle,0deg))!important;transform-origin:center top!important;z-index:var(--fan-z,1)!important;}
.gl-lab-hand .opponent-hand-slot img{display:block;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain;border-radius:6px;}

.gl-lab-hand .hand-card{position:relative!important;width:var(--lab-card-w)!important;height:var(--lab-card-h)!important;min-width:0!important;min-height:0!important;flex:0 0 var(--lab-card-w)!important;margin:0 0 0 var(--fan-overlap,0px)!important;padding:0!important;border:0!important;border-radius:6px!important;background:transparent!important;overflow:visible!important;z-index:var(--fan-z,1)!important;transform:translateY(40%) rotate(var(--fan-angle,0deg))!important;transform-origin:center bottom!important;transition:transform .15s ease,filter .15s ease!important;box-shadow:none!important;}
.gl-lab-hand .hand-card:hover,.gl-lab-hand .hand-card:focus-within,.gl-lab-hand .hand-card.hand-hover-active,.gl-lab-hand .hand-card.is-selected{transform:translateY(0) rotate(0deg)!important;z-index:650!important;filter:brightness(1.06)!important;}
.gl-lab-hand .hand-card .hand-art{position:absolute!important;inset:0!important;display:block!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;overflow:visible!important;}
.gl-lab-hand .hand-card .hand-art img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border:0!important;border-radius:6px!important;}
.gl-lab-hand .hand-card .hand-actions{position:absolute!important;left:50%!important;top:-20px!important;bottom:auto!important;right:auto!important;transform:translateX(-50%)!important;width:max-content!important;height:18px!important;min-height:18px!important;margin:0!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:3px!important;z-index:760!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;transition:top .12s ease,bottom .12s ease,opacity .08s ease!important;}
.gl-lab-hand .hand-card:hover .hand-actions,.gl-lab-hand .hand-card:focus-within .hand-actions,.gl-lab-hand .hand-card.hand-hover-active .hand-actions,.gl-lab-hand .hand-card.is-selected .hand-actions{top:auto!important;bottom:7px!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;}
.gl-lab-hand .hand-card .hand-actions:empty{display:none!important;}
.gl-lab-hand .hand-card .mini-action{width:auto!important;min-width:46px!important;height:18px!important;min-height:18px!important;margin:0!important;padding:0 7px!important;border:1px solid #426b4e!important;border-radius:5px!important;background:linear-gradient(180deg,#42c96d,#19763e)!important;color:#ffffff!important;font-size:8px!important;line-height:16px!important;font-weight:800!important;white-space:nowrap!important;box-shadow:0 2px 7px rgba(0,0,0,.62)!important;}
.gl-lab-hand .hand-card .tribute-card-action{border-color:#f2d36d!important;background:linear-gradient(180deg,#c79120,#6a4708)!important;color:#fffbe1!important;}
body:has(.gl-lab-authority) .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;z-index:740!important;pointer-events:none!important;}
body:has(.gl-lab-authority) .hover-card-zoom.is-hand-hover img{width:100%!important;height:100%!important;object-fit:contain!important;}

/* One side = two equal resource cells per rail + one center core. Opponent is a true 180-degree geometry mirror. */
.gl-lab-side{position:relative;min-width:0;min-height:0;display:grid;grid-template-columns:var(--lab-resource-w) minmax(0,1fr) var(--lab-resource-w);grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:5px 7px;padding:4px 6px;overflow:visible;}
.gl-lab-side--opponent{background:linear-gradient(180deg,rgba(75,9,20,.28),rgba(37,7,13,.04));}
.gl-lab-side--player{background:linear-gradient(180deg,rgba(7,28,48,.03),rgba(4,56,99,.28));}
.gl-lab-resource-rail{display:contents;}
.gl-lab-resource-rail--left .gl-lab-zone:nth-child(1){grid-column:1;grid-row:1;}
.gl-lab-resource-rail--left .gl-lab-zone:nth-child(2){grid-column:1;grid-row:2;}
.gl-lab-resource-rail--right .gl-lab-zone:nth-child(1){grid-column:3;grid-row:1;}
.gl-lab-resource-rail--right .gl-lab-zone:nth-child(2){grid-column:3;grid-row:2;}
.gl-lab-board-core{grid-column:2;grid-row:1 / 3;min-width:0;min-height:0;display:grid;gap:5px;overflow:visible;}
.gl-lab-side--player .gl-lab-board-core{grid-template-rows:minmax(0,72fr) minmax(0,28fr);}
.gl-lab-side--opponent .gl-lab-board-core{grid-template-rows:minmax(0,28fr) minmax(0,72fr);}

.gl-lab-zone{position:relative!important;min-width:0!important;min-height:0!important;width:100%!important;height:100%!important;margin:0!important;padding:4px!important;display:grid!important;place-items:center!important;border:1px solid rgba(215,184,95,.34)!important;border-radius:9px!important;background:rgba(2,8,13,.52)!important;color:#dce8f3!important;overflow:hidden!important;box-shadow:none!important;cursor:default!important;}
.gl-lab-side--opponent .gl-lab-zone{border-color:rgba(179,69,86,.36)!important;}
.gl-lab-zone[data-discard-side],.gl-lab-zone[data-legacy-side]{cursor:pointer!important;}
.gl-lab-zone-label{position:absolute;z-index:5;left:3px;right:3px;text-align:center;font-size:6px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#d7e3ef;text-shadow:0 1px 2px #000;}
.gl-lab-side--opponent .gl-lab-zone-label{top:3px;}
.gl-lab-side--player .gl-lab-zone-label{bottom:3px;}
.gl-lab-zone .zoneCard{position:relative!important;display:grid!important;place-items:center!important;width:calc(var(--lab-card-w) * .78)!important;height:calc(var(--lab-card-h) * .78)!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;overflow:visible!important;}
.gl-lab-zone .zoneCard img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border-radius:5px!important;filter:drop-shadow(0 4px 6px rgba(0,0,0,.48));}
.gl-lab-zone .zoneCard b{position:absolute;right:-3px;bottom:-3px;display:grid;place-items:center;min-width:19px;height:17px;padding:0 4px;border:1px solid #6a5821;border-radius:6px;background:#071019;color:#f4d35e;font-size:9px;line-height:15px;}
.gl-lab-side--opponent .gl-lab-zone[data-zone-type="Main Deck"] .zoneCard b,
.gl-lab-side--opponent .gl-lab-zone[data-zone-type="Legacy Deck"] .zoneCard b,
.gl-lab-side--opponent .gl-lab-zone[data-zone-type="Shard Deck"] .zoneCard b{top:-3px!important;bottom:auto!important;right:-3px!important;}
.gl-lab-zone.is-empty .zoneCard{border:1px dashed rgba(95,121,146,.55)!important;border-radius:6px!important;}

/* Position ownership box. No Left/Center/Right labels. */
.gl-lab-positions{min-width:0;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;overflow:visible;}
.gl-lab-positions .hero-lane{position:relative!important;min-width:0!important;min-height:0!important;width:auto!important;height:auto!important;margin:0!important;padding:0!important;display:block!important;border:1px solid rgba(215,184,95,.22)!important;border-radius:10px!important;background:radial-gradient(circle at center,rgba(211,179,80,.045),rgba(3,9,14,.16))!important;overflow:visible!important;box-shadow:none!important;}
.gl-lab-side--opponent .hero-lane{border-color:rgba(190,78,95,.22)!important;}
.gl-lab-positions .hero-stage{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;display:grid!important;place-items:center!important;overflow:visible!important;z-index:30!important;pointer-events:none!important;}
.gl-lab-positions .hero-stage button{pointer-events:auto!important;}
.gl-lab-positions .hero-card-composition{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;display:grid!important;place-items:center!important;overflow:visible!important;}
.gl-lab-positions .hero-card-anchor{position:relative!important;width:auto!important;height:86%!important;max-height:none!important;aspect-ratio:5/7!important;margin:0!important;padding:0!important;align-self:center!important;justify-self:center!important;overflow:visible!important;transform:none!important;z-index:35!important;}
.gl-lab-positions .hero-card-physical-stack{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;display:grid!important;place-items:center!important;overflow:visible!important;transform:none!important;}
.gl-lab-positions .hero-card.hero-main{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;display:block!important;border:0!important;background:transparent!important;border-radius:8px!important;overflow:visible!important;transform:none;z-index:35!important;}
.gl-lab-positions .hero-card.hero-main .heroImg,.gl-lab-positions .hero-card.hero-main>img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border:0!important;border-radius:8px!important;opacity:1!important;visibility:visible!important;}
.gl-lab-positions .hero-card-physical-stack.is-ready>.hero-card.hero-main{transform:none!important;filter:none!important;}
.gl-lab-positions .hero-card-physical-stack.is-exhausted>.hero-card.hero-main{transform:rotate(-90deg)!important;filter:saturate(.72) brightness(.84)!important;}

/* HP: reuse the approved production desktop HP geometry. The overlay is owned by
   the Hero-card anchor and directly masks the printed HP in the card's upper-right. */
.gl-lab-positions .hero-card-anchor>.hero-health-row.hero-health-overlay{position:absolute!important;z-index:155!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;min-height:21px!important;margin:0!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;}
.gl-lab-positions .hero-card-anchor>.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;}
.gl-lab-positions .hero-card-anchor>.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;}
.gl-lab-positions .hero-card-anchor>.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;background:#38d889!important;transform:scaleX(var(--hp-ratio,1))!important;transform-origin:left center!important;}
.gl-lab-positions .hero-card-anchor>.hero-health-row.hero-health-overlay .hp-bar.is-warning>span{background:#e9c34d!important;}.gl-lab-positions .hero-card-anchor>.hero-health-row.hero-health-overlay .hp-bar.is-low>span{background:#e15b66!important;}
.gl-lab-positions .hero-card-anchor>.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;}

/* EXP follows the real Hero orientation. Ready = right rail. Exhausted = top rail, slot 1 nearest Hero. */
.gl-lab-positions .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:55!important;}
.gl-lab-positions .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;}
.gl-lab-positions .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;}
.gl-lab-positions .hero-exp-slot{position:relative!important;display:block!important;margin:0!important;padding:0!important;border:0!important;overflow:visible!important;background:none!important;}
.gl-lab-positions .hero-card-physical-stack.is-ready .hero-exp-slot{width:7px!important;min-width:7px!important;height:100%!important;min-height:0!important;}
.gl-lab-positions .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;}
.gl-lab-positions .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;}
.gl-lab-positions .hero-exp-slot[data-exp-value="200"]::before{background-position:right center!important;}
.gl-lab-positions .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;}
.gl-lab-positions .hero-exp-slot.is-empty{visibility:hidden!important;}.gl-lab-positions .hero-exp-slot.is-empty::before{background-image:none!important;}

/* Attachments are full physical cards, lowered inside the position box. Empty slot keeps geometry but renders nothing. */
.gl-lab-positions .attachment-row{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;display:block!important;pointer-events:none!important;z-index:15!important;}
.gl-lab-positions .attachment-row>.slot{position:absolute!important;top:56%!important;width:var(--lab-card-w)!important;height:var(--lab-card-h)!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;display:block!important;border:0!important;background:transparent!important;pointer-events:auto!important;overflow:visible!important;}
.gl-lab-positions .attachment-row>.slot:first-child{left:5%!important;transform:rotate(-2deg)!important;}.gl-lab-positions .attachment-row>.slot:nth-child(2){right:5%!important;transform:rotate(2deg)!important;}
.gl-lab-positions .attachment-row>.slot:not(.filled){visibility:hidden!important;pointer-events:none!important;}
.gl-lab-positions .attachment-row>.slot.filled button{display:block!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;}
.gl-lab-positions .attachment-row>.slot.filled img{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;filter:brightness(.83) drop-shadow(0 5px 8px rgba(0,0,0,.55));}
.gl-lab-positions .attachment-row>.slot.filled:hover{z-index:70!important;}.gl-lab-positions .attachment-row>.slot.filled:hover img{filter:brightness(1.05) drop-shadow(0 8px 12px rgba(0,0,0,.65));}
.gl-lab-positions .attachment-row>.slot.filled button>span{display:none!important;}
.gl-lab-positions .attachment-row>.slot.filled>.gl-attachment-die{display:block!important;visibility:visible!important;opacity:1!important;}

/* Named Racial Trait / Class / Legacy actions live in stable top corners. */
.gl-lab-positions .heroActions{position:absolute!important;z-index:210!important;right:4px!important;left:auto!important;top:4px!important;width:max-content!important;max-width:min(48%,132px)!important;height:auto!important;margin:0!important;padding:0!important;display:flex!important;flex-direction:column!important;align-items:flex-end!important;gap:2px!important;background:transparent!important;border:0!important;box-shadow:none!important;pointer-events:none!important;}
.gl-lab-positions .heroActions .actionBtn{position:relative!important;top:auto!important;right:auto!important;left:auto!important;width:max-content!important;max-width:132px!important;min-width:0!important;min-height:18px!important;height:18px!important;margin:0!important;padding:2px 6px!important;border-radius:5px!important;font-size:6.5px!important;line-height:12px!important;font-weight:900!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;pointer-events:auto!important;box-sizing:border-box!important;}
.gl-lab-positions .heroActions .racialAbilityAction,.gl-lab-positions .heroActions .classAbilityAction,.gl-lab-positions .heroActions .legacyAbilityAction{align-self:flex-end!important;}

/* Stable position ownership: Hero information + Status live upper-left; Racial/Class/Legacy actions live upper-right. */
.gl-lab-positions .hero-status-overlay{position:absolute!important;z-index:205!important;left:4px!important;top:4px!important;right:auto!important;bottom:auto!important;width:24px!important;height:auto!important;margin:0!important;padding:0!important;display:block!important;overflow:visible!important;transform:none!important;}
.gl-lab-positions .hero-status-overlay .hero-indicator-stack{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:3px!important;}
.gl-lab-positions .hero-status-overlay .negative-status-indicator,.gl-lab-positions .hero-status-overlay .hero-info-indicator{position:relative!important;margin:0!important;padding:0!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;overflow:visible!important;}

/* Stable-version status treatment: official Poison/Burn/Bleed/Freeze/Stun art has no extra ring/stroke. */
.gl-lab-positions .hero-status-overlay .negative-status-indicator>button{width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;}
.gl-lab-positions .hero-status-overlay .negative-status-indicator img{width:18px!important;height:18px!important;max-width:18px!important;max-height:18px!important;object-fit:contain!important;}
.gl-lab-positions .hero-status-overlay .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;}
.gl-lab-positions .hero-status-overlay .hero-indicator-tooltip strong{display:block!important;margin-bottom:4px!important;color:#f4ca52!important;font-size:10px!important;text-transform:uppercase!important;}
.gl-lab-positions .hero-status-overlay .hero-indicator-tooltip span{display:block!important;font-size:9px!important;line-height:1.35!important;}
.gl-lab-positions .hero-status-overlay .negative-status-indicator:hover .hero-indicator-tooltip,.gl-lab-positions .hero-status-overlay .negative-status-indicator:focus-within .hero-indicator-tooltip,.gl-lab-positions .hero-status-overlay .hero-info-indicator:hover .hero-indicator-tooltip,.gl-lab-positions .hero-status-overlay .hero-info-indicator:focus-within .hero-indicator-tooltip{display:block!important;}
.gl-die-counter{display:block;pointer-events:none;}
.gl-die-counter img{display:block;width:100%!important;height:100%!important;object-fit:contain!important;}
.gl-lab-positions .negative-status-indicator .gl-status-die{position:absolute!important;z-index:214!important;left:14px!important;right:auto!important;top:3px!important;bottom:auto!important;width:13px!important;height:13px!important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.75));}
.gl-lab-positions .negative-status-indicator:hover .gl-status-die,.gl-lab-positions .negative-status-indicator:focus-within .gl-status-die{opacity:0!important;visibility:hidden!important;}
.gl-lab-positions .attachment-row>.slot .gl-attachment-die{position:absolute!important;z-index:86!important;right:-4px!important;top:-4px!important;width:17px!important;height:17px!important;filter:drop-shadow(0 2px 3px rgba(0,0,0,.78));}


.gl-lab-positions .hero-status-overlay .mobile-status-summary{display:none!important;}
.gl-lab-positions .hero-indicator-tooltip{z-index:900!important;}

/* Legacy composition reuses stable Hero-slot ownership. */
.gl-lab-positions .hero-lane.legacy-slot .hero-stage{position:absolute!important;inset:0!important;display:grid!important;place-items:center!important;}
.gl-lab-positions .hero-lane.legacy-slot .hero-card.hero-main{position:relative!important;inset:auto!important;width:auto!important;height:86%!important;aspect-ratio:5/7!important;}
.gl-lab-positions .hero-lane.legacy-slot>.legacy-health{position:absolute!important;left:4px!important;right:4px!important;width:auto!important;min-width:0!important;z-index:155!important;height:24px!important;min-height:24px!important;margin:0!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important;pointer-events:none!important;}
.gl-lab-side--player .gl-lab-positions .hero-lane.legacy-slot>.legacy-health{top:2px!important;bottom:auto!important;}
.gl-lab-side--opponent .gl-lab-positions .hero-lane.legacy-slot>.legacy-health{bottom:2px!important;top:auto!important;}
.gl-lab-positions .legacy-name-bar{width:max-content!important;max-width:min(76%,310px)!important;min-height:22px!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;padding:2px 8px!important;border:0!important;outline:0!important;border-radius:7px!important;background:rgba(9,18,29,.76)!important;box-shadow:none!important;overflow:visible!important;pointer-events:auto!important;}
.gl-lab-positions .legacy-name-bar small{display:block!important;color:#e9c765!important;font-size:7px!important;font-weight:800!important;letter-spacing:.06em!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;}

/* Shard Pool: deliberately short/open; cards are 80% of normal battlefield card. */
.gl-lab-mana-pool{position:relative;min-width:0;min-height:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;border:0;background:transparent;overflow:visible;padding:2px 42px;}
.gl-lab-mana-row{min-width:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:clamp(8px,1.0vw,16px);overflow:visible;}
.gl-lab-mana-card{appearance:none!important;position:relative!important;flex:0 0 var(--lab-mana-w)!important;width:var(--lab-mana-w)!important;height:var(--lab-mana-h)!important;max-width:var(--lab-mana-w)!important;max-height:var(--lab-mana-h)!important;margin:0!important;padding:0!important;border:0!important;border-radius:6px!important;background:transparent!important;overflow:visible!important;filter:drop-shadow(0 4px 7px rgba(0,0,0,.52));}
.gl-lab-mana-card img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border-radius:6px!important;}
.gl-lab-mana-card.is-pending-draw{visibility:hidden!important;pointer-events:none!important;}
.gl-lab-mana-card.is-opening-draw-hidden{visibility:hidden!important;pointer-events:none!important;}
.gl-lab-mana-card.is-opening-draw-hidden img{visibility:hidden!important;}
.gl-lab-racial{position:absolute;top:50%;transform:translateY(-50%);z-index:90;}
.gl-lab-mana-pool--player .gl-lab-racial{left:4px;}.gl-lab-mana-pool--opponent .gl-lab-racial{right:4px;}
.gl-lab-racial .racial-coins{width:29px!important;min-width:29px!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;display:flex!important;flex-direction:column!important;gap:3px!important;border:0!important;background:transparent!important;}
.gl-lab-racial .coin{width:27px!important;height:27px!important;min-width:27px!important;min-height:27px!important;flex:0 0 27px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;}
.gl-lab-racial .coin img{display:block!important;width:100%!important;height:100%!important;object-fit:contain!important;}

/* Right side keeps current digital-game functions, but owns its own compact geometry. */
.gl-lab-sidebar{min-width:0;min-height:0;height:100%;display:grid;grid-template-rows:auto minmax(210px,.95fr) minmax(126px,1fr) 27px;gap:5px;padding:0;overflow:hidden;background:rgba(3,8,13,.92);}
.gl-lab-sidebar .control-panel{min-width:0!important;min-height:0!important;margin:0!important;padding:6px!important;border:1px solid #3a321b!important;border-radius:9px!important;background:#06111a!important;overflow:hidden!important;}
.gl-lab-sidebar .turn-panel{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;gap:5px!important;align-items:start!important;}
.gl-lab-sidebar .setup-actions{margin:0!important;}.gl-lab-sidebar .setup-actions button{height:24px!important;padding:2px 6px!important;font-size:7px!important;border-radius:6px!important;}
.gl-lab-sidebar .turn-summary{min-width:0!important;display:grid!important;gap:1px!important;}.gl-lab-sidebar .turn-summary strong{font-size:10px!important;color:#f4d35e!important;}.gl-lab-sidebar .turn-summary span{font-size:7px!important;color:#b5c4d2!important;}.gl-lab-sidebar .turn-status{font-size:6.5px!important;line-height:1.2!important;color:#77bfe9!important;max-height:27px!important;overflow:hidden!important;}
.gl-lab-sidebar .mobile-match-menu-button,.gl-lab-sidebar .mobile-player-footer{display:none!important;}
.gl-lab-sidebar .phase-panel{display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;gap:5px!important;}
.gl-lab-sidebar .phase-panel header{display:flex!important;justify-content:space-between!important;align-items:baseline!important;gap:4px!important;}.gl-lab-sidebar .phase-panel header strong{font-size:9px!important;color:#f1e3a1!important;}.gl-lab-sidebar .phase-panel header span{font-size:6px!important;color:#8ea1b4!important;}
.gl-lab-sidebar .phase-list{min-height:0!important;display:grid!important;grid-template-columns:1fr!important;grid-template-rows:repeat(5,minmax(23px,1fr))!important;gap:3px!important;}.gl-lab-sidebar .phase-list button{min-height:0!important;height:auto!important;margin:0!important;padding:2px!important;border:1px solid #23313c!important;border-radius:6px!important;background:#06101a!important;color:#aeb7c5!important;font-size:7px!important;font-weight:900!important;text-transform:uppercase!important;}.gl-lab-sidebar .phase-list button.is-active{border-color:#d3a52b!important;background:linear-gradient(180deg,#60460b,#241b08)!important;color:#fff3c1!important;filter:brightness(1.12)!important;}
.gl-lab-sidebar .phase-actions{display:grid!important;grid-template-columns:1fr 1fr!important;grid-template-rows:24px 30px!important;gap:3px!important;}.gl-lab-sidebar .phase-actions button{height:auto!important;min-height:0!important;margin:0!important;padding:2px!important;border:1px solid #23313c!important;border-radius:6px!important;background:#06101a!important;color:#dbeeff!important;font-size:7px!important;font-weight:900!important;}.gl-lab-sidebar .phase-actions .next-phase{grid-column:1/-1!important;border-color:#96711a!important;background:linear-gradient(180deg,#8d6a19,#3a2a09)!important;color:#fff3c1!important;}.gl-lab-sidebar .phase-actions .cancel-action{border-color:#5e2931!important;background:#2a1015!important;color:#d9a5ac!important;}
.gl-lab-sidebar .card-played-panel{display:grid!important;grid-template-rows:auto minmax(0,1fr) 24px!important;gap:5px!important;overflow:visible!important;}.gl-lab-sidebar .card-played-panel header{display:flex!important;justify-content:space-between!important;align-items:baseline!important;}.gl-lab-sidebar .card-played-panel header strong{font-size:9px!important;color:#f1e3a1!important;}.gl-lab-sidebar .card-played-panel header span{font-size:6px!important;color:#8ea1b4!important;}.gl-lab-sidebar .played-grid{min-height:0!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important;gap:4px!important;overflow:visible!important;}.gl-lab-sidebar .combined-played-card{position:relative!important;min-width:0!important;min-height:0!important;margin:0!important;padding:2px!important;display:grid!important;place-items:center!important;border:0!important;border-radius:6px!important;background:transparent!important;overflow:hidden!important;transition:filter .08s ease,transform .08s ease!important;}.gl-lab-sidebar .combined-played-card.is-hover-lifted{z-index:980!important;filter:brightness(1.12)!important;transform:translateY(-3px)!important;}.gl-lab-sidebar .combined-played-card img{display:block!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;}.gl-lab-sidebar .combined-played-card em{position:absolute!important;left:2px!important;top:2px!important;z-index:2!important;padding:1px 3px!important;border-radius:999px!important;background:#f4d35e!important;color:#111!important;font-size:5px!important;font-style:normal!important;font-weight:900!important;}.gl-lab-sidebar .full-width{height:24px!important;margin:0!important;padding:2px!important;border:1px solid #39546f!important;border-radius:6px!important;background:#101d2b!important;font-size:7px!important;font-weight:900!important;}
body:has(.gl-lab-authority) .hover-card-zoom.is-card-played-hover{width:172px!important;height:241px!important;max-width:172px!important;max-height:241px!important;aspect-ratio:5/7!important;z-index:980!important;pointer-events:none!important;filter:drop-shadow(0 10px 18px rgba(0,0,0,.72));}
body:has(.gl-lab-authority) .hover-card-zoom.is-card-played-hover img{width:100%!important;height:100%!important;object-fit:contain!important;}
.gl-lab-sidebar .match-panel{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:4px!important;padding:0!important;border:0!important;background:transparent!important;}.gl-lab-sidebar .match-panel button{height:23px!important;margin:0!important;padding:2px!important;border:1px solid #334b61!important;border-radius:6px!important;background:#0b1722!important;font-size:6.5px!important;font-weight:900!important;}.gl-lab-sidebar .match-panel .surrender{border-color:#783a42!important;background:#241014!important;color:#ffb7bf!important;}

/* Selection / attack cues remain visible on clean position boxes. */
.gl-lab-positions .selectable-legal{box-shadow:inset 0 0 0 2px rgba(74,202,111,.75),0 0 14px rgba(74,202,111,.16)!important;}.gl-lab-positions .selectable-selected{box-shadow:inset 0 0 0 2px #f4d35e,0 0 15px rgba(244,211,94,.22)!important;}.gl-lab-positions .selectable-illegal{opacity:.64;}

@media(max-width:1360px) and (min-width:761px){:root{--lab-sidebar-w:238px;--lab-card-w:62px;--lab-resource-w:78px}.gl-lab-side{gap:4px 5px;padding:3px 4px}.gl-lab-positions{gap:4px}.gl-lab-mana-pool{padding-inline:35px}.gl-lab-hand .hand-card .mini-action{min-width:41px;padding-inline:5px!important;font-size:7px!important;}}
@media(max-height:790px) and (min-width:761px){:root{--lab-card-w:60px}.gl-lab-sidebar{grid-template-rows:auto minmax(184px,.9fr) minmax(104px,1fr) 25px}.gl-lab-positions .attachment-row>.slot{top:54%!important}.gl-lab-positions .hero-card-anchor{height:84%!important}}

/* Mobile deliberately stays on the known-good production mobile battlefield for this desktop-layout experiment. */
@media(max-width:760px){
  html.gl-ui-mobile body:has(.gl-lab-authority){overflow:auto!important;}
  html.gl-ui-mobile .gl-lab-authority{position:static;min-height:100vh;overflow:visible;}
  html.gl-ui-mobile .gl-lab-shell{display:block;height:auto;padding:0;}
  html.gl-ui-mobile .gl-lab-battlefield{display:block;height:auto;overflow:visible;}
  html.gl-ui-mobile .gl-lab-sidebar{height:auto;display:block;overflow:visible;}
}

/* v0.9 — Mana confirmation communicates affordability at a glance. */
body:has(.gl-lab-authority) #choiceConfirm.mana-confirm-ready{border-color:#2f8f58!important;background:linear-gradient(180deg,#1d6b40,#0d3f25)!important;color:#d9ffe8!important;opacity:1!important;}
body:has(.gl-lab-authority) #choiceConfirm.mana-confirm-insufficient{border-color:#7a3039!important;background:linear-gradient(180deg,#4a171e,#241014)!important;color:#ffb8c0!important;opacity:.72!important;}
body:has(.gl-lab-authority) #choiceConfirm.mana-confirm-waiting{border-color:#7d6927!important;background:linear-gradient(180deg,#4e3b0d,#241b08)!important;color:#f6df8b!important;opacity:.84!important;}


/* v0.10 — draw sequencing + compact action polish. */
.gl-lab-hand .hand-card .mini-action{box-shadow:0 0 0 1px rgba(255,255,255,.08),0 3px 9px rgba(0,0,0,.66)!important;}


/* Retained v6.41/v0.67 responsive baseline — active release VS AI v6.42 / Tutorial v0.68. Tablet landscape touch authority.
   Portrait tablets use the production mobile board. Landscape tablets keep the
   desktop board, fit the usable dynamic viewport, expose legal Hand actions
   before selection, and translate desktop hover into tap-to-select. */
.touch-tablet-legality{display:none!important;}
.gl-ui-tablet .gl-lab-hand .hand-card .touch-tablet-legality{
  position:absolute!important;left:50%!important;top:-18px!important;transform:translateX(-50%)!important;
  z-index:735!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:2px!important;
  width:max-content!important;pointer-events:none!important;
}
.gl-ui-tablet .gl-lab-hand .hand-card:not(.can-play):not(.can-tribute) .touch-tablet-legality{display:none!important;}
.gl-ui-tablet .gl-lab-hand .hand-card.touch-selected .touch-tablet-legality,
.gl-ui-tablet .gl-lab-hand .hand-card.hand-hover-active .touch-tablet-legality,
.gl-ui-tablet .gl-lab-hand .hand-card.is-selected .touch-tablet-legality{display:none!important;}
.gl-ui-tablet .touch-tablet-legal{
  display:block!important;padding:1px 4px!important;border:1px solid rgba(255,255,255,.22)!important;border-radius:999px!important;
  font-size:5.5px!important;line-height:9px!important;font-weight:900!important;letter-spacing:.04em!important;color:#fff!important;
  box-shadow:0 2px 5px rgba(0,0,0,.65)!important;white-space:nowrap!important;
}
.gl-ui-tablet .touch-tablet-legal--play{background:linear-gradient(180deg,#2e9e55,#155a32)!important;border-color:#55c978!important;}
.gl-ui-tablet .touch-tablet-legal--tribute{background:linear-gradient(180deg,#a97a19,#5d4108)!important;border-color:#e7c654!important;color:#fff8d2!important;}

html.gl-ui-tablet.gl-tablet-landscape-desktop body:has(.gl-lab-authority) #hoverCardZoom.is-hand-hover,
html.gl-ui-tablet.gl-tablet-landscape-desktop body:has(.gl-lab-authority) #hoverCardZoom.is-v253-readable-preview{
  width:var(--gl-tablet-preview-w)!important;height:var(--gl-tablet-preview-h)!important;
  max-width:calc(100vw - 16px)!important;max-height:calc(100dvh - 16px)!important;aspect-ratio:5/7!important;z-index:3200!important;pointer-events:none!important;
}
/* Tablet Portrait keeps Mobile interaction except Shard readability: reuse the same readable-preview node beside the resource strip. */
html.gl-device-tablet.gl-tablet-portrait-mobile body:has(.v96-app.mobile-restored-layout) #hoverCardZoom.is-v253-readable-preview.is-tablet-portrait-shard-preview,
html.gl-ui-mobile:not(.gl-device-tablet) body:has(.v96-app.mobile-restored-layout) #hoverCardZoom.is-v253-readable-preview.is-phone-shard-preview{
  display:block!important;width:var(--gl-tablet-preview-w)!important;height:var(--gl-tablet-preview-h)!important;
  max-width:calc(100vw - 16px)!important;max-height:calc(100dvh - 16px)!important;aspect-ratio:5/7!important;z-index:3200!important;pointer-events:none!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop body:has(.gl-lab-authority) #hoverCardZoom.is-hand-hover img,
html.gl-ui-tablet.gl-tablet-landscape-desktop body:has(.gl-lab-authority) #hoverCardZoom.is-v253-readable-preview img,
html.gl-device-tablet.gl-tablet-portrait-mobile body:has(.v96-app.mobile-restored-layout) #hoverCardZoom.is-tablet-portrait-shard-preview img,
html.gl-ui-mobile:not(.gl-device-tablet) body:has(.v96-app.mobile-restored-layout) #hoverCardZoom.is-phone-shard-preview img{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;}

/* Short landscape tablets: defeat the constrained-desktop Phase Tracker rules
   from app.css and fit all critical controls inside the actual browser viewport. */
@media (min-width:761px) and (hover:none), (min-width:761px) and (pointer:coarse){
  html.gl-ui-tablet,html.gl-ui-tablet body{width:100%!important;height:100dvh!important;min-height:0!important;overflow:hidden!important;}
  html.gl-ui-tablet .gl-lab-authority{width:100vw!important;height:100dvh!important;min-height:0!important;inset:0!important;overflow:hidden!important;}
  html.gl-ui-tablet .gl-lab-shell{width:100%!important;height:100%!important;min-height:0!important;padding:3px!important;gap:4px!important;grid-template-columns:minmax(0,1fr) clamp(220px,20vw,250px)!important;}
  html.gl-ui-tablet .gl-lab-sidebar{height:100%!important;min-height:0!important;grid-template-rows:auto minmax(148px,.78fr) minmax(72px,1fr) 27px!important;gap:4px!important;overflow:hidden!important;}
  html.gl-ui-tablet .gl-lab-sidebar .control-panel{padding:4px!important;}
  html.gl-ui-tablet .gl-lab-sidebar .phase-panel{min-height:0!important;height:auto!important;grid-template-rows:auto minmax(0,1fr) auto!important;align-content:stretch!important;gap:2px!important;overflow:hidden!important;}
  html.gl-ui-tablet .gl-lab-sidebar .phase-list{min-height:0!important;grid-template-rows:repeat(5,minmax(16px,1fr))!important;gap:1px!important;}
  html.gl-ui-tablet .gl-lab-sidebar .phase-list button{height:auto!important;min-height:16px!important;padding:0 2px!important;font-size:6.25px!important;line-height:1!important;}
  html.gl-ui-tablet .gl-lab-sidebar .phase-actions{height:45px!important;min-height:45px!important;grid-template-columns:1fr 1fr!important;grid-template-rows:20px 23px!important;gap:2px!important;overflow:hidden!important;}
  html.gl-ui-tablet .gl-lab-sidebar .phase-actions button,
  html.gl-ui-tablet .gl-lab-sidebar .phase-actions .reposition,
  html.gl-ui-tablet .gl-lab-sidebar .phase-actions .cancel-action{height:20px!important;min-height:20px!important;padding:0 2px!important;font-size:6.25px!important;line-height:1!important;}
  html.gl-ui-tablet .gl-lab-sidebar .phase-actions .next-phase{height:23px!important;min-height:23px!important;grid-column:1/-1!important;grid-row:2!important;}
  html.gl-ui-tablet .gl-lab-sidebar .card-played-panel{min-height:0!important;height:auto!important;max-height:none!important;grid-template-rows:auto minmax(0,1fr) 22px!important;gap:3px!important;overflow:hidden!important;}
  html.gl-ui-tablet .gl-lab-sidebar .played-grid{min-height:0!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(28px,1fr))!important;gap:3px!important;overflow-y:auto!important;}
  html.gl-ui-tablet .gl-lab-sidebar .full-width{height:22px!important;min-height:22px!important;}
}


/* VS AI v6.42 / Tutorial v0.68 — canonical current battlefield corrections. */
/* Deck/Pile physical card footprint: one size family, centered independently of labels/counters. */
.gl-lab-zone{justify-content:center!important;align-content:center!important;overflow:visible!important;}
.gl-lab-zone .zoneCard{justify-self:center!important;align-self:center!important;transform:none!important;position:relative!important;}
.gl-lab-zone[data-zone-type="Legacy Deck"] .zoneCard,
.gl-lab-zone[data-zone-type="Shard Deck"] .zoneCard,
.gl-lab-zone[data-zone-type="Main Deck"] .zoneCard,
.gl-lab-zone[data-zone-type="Discard Pile"] .zoneCard{
  width:calc(var(--lab-card-w) * .84)!important;height:calc(var(--lab-card-h) * .84)!important;
}
.gl-lab-zone[data-zone-type="Discard Pile"] .zoneCard>img{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;}
.gl-lab-zone .zoneCard .gl-resource-count{position:absolute!important;top:-4px!important;right:-4px!important;bottom:auto!important;z-index:9!important;}

/* Graphical Mana Regen counter only. Desktop/tablet landscape share one centered upper-card placement. */
.gl-lab-zone[data-zone-type="Shard Deck"] .zoneCard>.gl-lab-mana-regen{
  position:absolute!important;z-index:10!important;left:50%!important;right:auto!important;top:22%!important;bottom:auto!important;
  transform:translate(-50%,-50%)!important;width:24px!important;height:24px!important;margin:0!important;padding:0!important;
  display:grid!important;place-items:center!important;pointer-events:none!important;filter:drop-shadow(0 2px 4px rgba(0,0,0,.72));
}
.gl-lab-zone[data-zone-type="Shard Deck"] .zoneCard>.gl-lab-mana-regen img{display:block!important;width:24px!important;height:24px!important;object-fit:contain!important;}

/* Exhaust changes orientation only, never scale. */
.gl-lab-positions .hero-card-physical-stack.is-exhausted>.hero-card.hero-main{transform:rotate(-90deg)!important;}

/* Tablet portrait continues to use the approved mobile information contract. */
html.gl-tablet-portrait-mobile .gl-lab-positions .hero-status-overlay>.mobile-status-summary{display:grid!important;place-items:center!important;pointer-events:auto!important;}

/* One warning visual/render authority for Hero and Legacy information. */
.gl-lab-positions .gl-warning-indicator{
  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;
}
.gl-lab-positions .hero-status-overlay .hero-info-indicator{opacity:1!important;visibility:visible!important;pointer-events:auto!important;}
.gl-lab-positions .hero-info-indicator .hero-indicator-tooltip{opacity:0!important;visibility:hidden!important;display:none!important;pointer-events:none!important;}
.gl-lab-positions .hero-info-indicator:has(>.gl-warning-indicator:hover) .hero-indicator-tooltip,
.gl-lab-positions .hero-info-indicator:has(>.gl-warning-indicator:focus-visible) .hero-indicator-tooltip{opacity:1!important;visibility:visible!important;display:block!important;}
.gl-lab-positions .legacy-name-bar{display:flex!important;justify-content:center!important;}
.gl-lab-positions .legacy-name-group{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:5px!important;width:max-content!important;max-width:100%!important;white-space:nowrap!important;}
.gl-lab-positions .legacy-name-group>small{display:inline-block!important;min-width:0!important;}

/* Desktop physical deck/pile card remains exactly centered in both axes. */
html.gl-ui-desktop .gl-lab-zone{position:relative!important;display:block!important;overflow:visible!important;}
html.gl-ui-desktop .gl-lab-zone>.zoneCard{
  position:absolute!important;left:50%!important;top:50%!important;right:auto!important;bottom:auto!important;
  margin:0!important;transform:translate(-50%,-50%)!important;justify-self:auto!important;align-self:auto!important;
}
html.gl-ui-desktop .gl-lab-zone>.gl-lab-zone-label{position:absolute!important;}

/* Tablet-landscape remains desktop-like, with card-local actions and no preview portal/button. */
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-shell{grid-template-columns:minmax(0,1fr) clamp(214px,22vw,300px)!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-resource-rail{overflow:hidden!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-zone{position:relative!important;overflow:hidden!important;display:block!important;padding:6px 4px!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-zone>.zoneCard{
  position:absolute!important;left:50%!important;top:7px!important;right:auto!important;bottom:auto!important;
  margin:0!important;transform:translateX(-50%)!important;align-self:auto!important;justify-self:auto!important;max-width:calc(100% - 8px)!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-side--opponent .gl-lab-zone>.gl-lab-zone-label{top:auto!important;bottom:3px!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-zone[data-zone-type="Shard Deck"] .zoneCard .gl-resource-count{
  top:0!important;right:0!important;transform:translate(50%,-50%)!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card .hand-actions,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card:hover .hand-actions,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card:focus-within .hand-actions,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card.touch-selected .hand-actions,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card.hand-hover-active .hand-actions,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card.is-selected .hand-actions{
  display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:2px!important;
  top:auto!important;bottom:5px!important;width:max-content!important;height:auto!important;min-height:0!important;
  opacity:1!important;visibility:visible!important;pointer-events:auto!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-hand .hand-card .hand-actions .mini-action{
  width:auto!important;min-width:44px!important;max-width:76px!important;height:18px!important;min-height:18px!important;padding-inline:5px!important;
}

/* Tablet-landscape Class/Racial labels: deterministic compact display; Desktop keeps the full canonical label. */
.tablet-ability-label-compact{display:none;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions{right:3px!important;top:3px!important;max-width:32%!important;width:min(92px,32%)!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions:has(.racialAbilityAction,.classAbilityAction,.legacyAbilityAction){top:calc(15.428% + 11px)!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions .actionBtn{
  width:100%!important;max-width:100%!important;height:auto!important;min-height:16px!important;max-height:28px!important;
  padding:2px 4px!important;font-size:5.25px!important;line-height:8px!important;white-space:nowrap!important;overflow:hidden!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions .racialAbilityAction .tablet-ability-label-full,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions .classAbilityAction .tablet-ability-label-full{display:none!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions .racialAbilityAction .tablet-ability-label-compact,
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-positions .heroActions .classAbilityAction .tablet-ability-label-compact{display:inline!important;}

/* Tablet-landscape resource strip: physical Shards and Racial Tokens fit the strip itself. */
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-mana-pool{padding-block:0!important;overflow:hidden!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-mana-row{height:100%!important;align-items:center!important;gap:clamp(4px,.55vw,8px)!important;overflow:hidden!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-mana-card{
  flex:0 0 auto!important;width:auto!important;height:82.5%!important;max-width:none!important;max-height:84%!important;aspect-ratio:5/7!important;
}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-racial{height:66%!important;min-height:0!important;top:50%!important;transform:translateY(-50%)!important;display:flex!important;align-items:center!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-racial .racial-coins{width:auto!important;min-width:0!important;height:100%!important;min-height:0!important;display:flex!important;flex-direction:column!important;justify-content:center!important;gap:3px!important;}
html.gl-ui-tablet.gl-tablet-landscape-desktop .gl-lab-racial .coin{flex:1 1 0!important;width:auto!important;height:auto!important;min-width:0!important;min-height:0!important;max-height:calc((100% - 3px)/2)!important;aspect-ratio:1/1!important;}


/* PvP v3.48 — approved VS AI v6.45/v0.69 opponent-hand perimeter ownership. */
html .gl-lab-authority .gl-lab-hand--opponent .opponent-hand-slot,
html .gl-lab-authority .gl-lab-hand--opponent .opponent-hand-slot > img.back,
html .v96-app .hand-area--opponent .opponent-hand-slot,
html .v96-app .hand-area--opponent .opponent-hand-slot > img.back{border-width:0!important;border-style:none!important;border-color:transparent!important;border-image:none!important;outline:0!important;outline-offset:0!important;box-shadow:none!important;background:transparent!important;padding:0!important}
html .gl-lab-authority .gl-lab-hand--opponent .opponent-hand-slot > img.back,
html .v96-app .hand-area--opponent .opponent-hand-slot > img.back{border-radius:0!important;filter:none!important;text-shadow:none!important}
html .gl-lab-authority .gl-lab-hand--opponent .opponent-hand-slot::before,
html .gl-lab-authority .gl-lab-hand--opponent .opponent-hand-slot::after,
html .v96-app .hand-area--opponent .opponent-hand-slot::before,
html .v96-app .hand-area--opponent .opponent-hand-slot::after{content:none!important;display:none!important;border:0!important;outline:0!important;box-shadow:none!important}
