/* v365 — spectator presentation is separate from participant controls.
 * The server-authorized league join button keeps its existing DOM and gating. */
#onl.uiSpectating #oThrow,#onl.uiSpectating #oPass,#onl.uiSpectating #oReactBtn,
#onl.uiSpectating #oChatWrap,#onl.uiSpectating #oHand,#onl.uiSpectating #oHint,
#onl.uiSpectating #oTimer,#onl.uiSpectating #oWaqfActionWrap,
#onl.uiSpectating #uiResumeControl{display:none!important}
#onl.uiSpectating #oThumb{display:none!important}
#onl.uiSpectating[data-lg-can-seat="true"] #oThumb{display:flex!important;height:auto;min-height:0;padding-top:0;background:none}
#onl.uiSpectating #oActions{height:auto;min-height:0;justify-content:center;background:none;padding-bottom:calc(14px + var(--ui-safe-bottom))}
#onl.uiSpectating #lgSeatJoin{flex:0 1 280px;min-height:44px}
#uiSpectatorBar{position:absolute;z-index:29;left:50%;bottom:calc(22px + var(--ui-safe-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:7px;max-width:calc(100% - 32px);padding:9px 16px;border:1px solid #ddc89175;border-radius:999px;background:#142a24ed;color:#f4dfac;box-shadow:0 3px 12px #0003;font:700 12px/1.3 var(--fb);white-space:nowrap;pointer-events:none}
#uiSpectatorBar[hidden]{display:none!important}
#uiSpectatorBar svg{width:19px;height:19px;flex:none}
#onl.uiSpectating[data-lg-can-seat="true"] #uiSpectatorBar{bottom:calc(82px + var(--ui-safe-bottom))}
/* On an impossibly small viewport keep the stock's accessible count, rather
 * than leaving its previous position over a player's cards after a resize. */
#deckStack.uiStockHidden,#oDeckStack.uiStockHidden{clip-path:inset(50%);width:1px;height:1px;overflow:hidden;pointer-events:none}
