Client integration
Universal API — Casino Integration Guide
Integration guide — server-side API for live data, TV overlays, and iframe video embeds on your partner platform.
https://universalapi.storeGetting started
Before calling the API, Universal API will provision your partner account with:
- API key — send on every server-side request (keep it secret; never expose in browser or mobile bundles).
- Allowed domains — partner website domains that may embed the TV iframe (e.g.
partner.com,app.partner.com). - Subscription period — your key is valid between the start and end dates on your account.
API base URL: https://universalapi.store/api
All endpoints live under /api. JSON responses use application/json unless noted otherwise. Contact your account manager for key rotation, new domains, or subscription changes.
Authentication
Include your API key on every server-side request using one of the following headers:
X-API-Key: your-api-key
# or
Authorization: Bearer your-api-keyAccess control
Different routes use different checks:
| Route | Who calls it | Auth |
|---|---|---|
/api/* (games, state, results, embed mint) | Your backend | API key + active subscription + Allowed IPs (if configured) |
/ws?eventId=&apiKey= | Your backend | API key query + subscription + Allowed IPs (same as REST) |
/api/tv/player | End-user browser (iframe) | Embed token + tv=true + parent page domain in your allowed domains |
Server API requests are rejected if any of the following apply:
- API key is missing or invalid
- Your account is inactive or outside the subscription window
- Caller IP is not on your Admin Allowed IPs list (when that list is non-empty). Leave Allowed IPs empty to allow any source IP.
Proxy API and WebSocket calls through your backend and keep the key secret. Casino live push uses wss://universalapi.store/ws?eventId=…&apiKey=… (same IP rules as REST).
TV embed requests
To mint iframe embed tokens (POST /tv/games/:eventId/embed), also send:
X-TV-Client: trueThe browser iframe player validates the embedding site via Referer / Origin against your account's allowed domains. Register every production domain where users will load the iframe (including www variants if used).
Endpoints
All paths below are relative to https://universalapi.store/api.
| Method | Path | Purpose |
|---|---|---|
| GET | /health | Gateway health check |
| GET | /games | Game catalog |
| GET | /games/:eventId/state | Live snapshot (poll from backend) |
| WS | /ws?eventId=&apiKey= | Live state push (prefer over polling) |
| GET / POST | /games/:eventId/results, /results | Historical round results |
| GET | /tv/games/:eventId/state | Alias of /games/:eventId/state |
| POST | /tv/games/:eventId/embed | Mint short-lived iframe token (backend only) |
| GET | /tv/player | Browser iframe player (embed token + domain) |
Game catalog
/gamesAPI keyReturns every game available on your subscription.
GET https://universalapi.store/api/games
X-API-Key: your-api-key{
"games": [
{ "eventId": "99.0010", "eventName": "20-20 TEENPATTI" },
{ "eventId": "99.0030", "eventName": "LUCKY 7" },
{ "eventId": "99.0013", "eventName": "1DAY TEEN PATTI" },
{ "eventId": "99.0016", "eventName": "JOKER TEEN PATTI" },
{ "eventId": "99.0019", "eventName": "20-20 DRAGON TIGER" },
{ "eventId": "99.0001", "eventName": "BACCARAT" },
{ "eventId": "99.0025", "eventName": "ANDAR BAHAR" },
{ "eventId": "99.0022", "eventName": "32 CARDS" },
{ "eventId": "99.0007", "eventName": "POKER" },
{ "eventId": "99.0041", "eventName": "DTL" },
{ "eventId": "99.0021", "eventName": "1 DAY DRAGON TIGER" },
{ "eventId": "99.0014", "eventName": "MUFLIS TEEN PATTI" },
{ "eventId": "99.0046", "eventName": "CARD RACE" },
{ "eventId": "99.0005", "eventName": "AMAR AKBAR ANTHONY" },
{ "eventId": "99.0018", "eventName": "DRAGON TIGER" },
{ "eventId": "88.0019", "eventName": "LUCKY 0 TO 9" },
{ "eventId": "88.0020", "eventName": "DREAM CATCHER" },
{ "eventId": "88.0021", "eventName": "HEADS & TAILS" },
{ "eventId": "88.0030", "eventName": "VIMAAN" },
{ "eventId": "88.0023", "eventName": "BALLOON" },
{ "eventId": "4.3544687543453", "eventName": "BALL BY BALL" }
]
}Live game state
/games/:eventId/stateAPI keyReturns the current live snapshot for one game — round timer, markets, cards, and result data when available.
GET https://universalapi.store/api/games/99.0010/state
X-API-Key: your-api-key{
"eventId": "99.0010",
"freshnessMs": 1354,
"stale": false,
"data": {
"roundId": "9102009062735",
"eventId": "99.0010",
"eventName": "20-20 TEEN PATTI",
"status": "ONLINE",
"roundStatus": "PLACE_THE_BET",
"leftSec": 16,
"seconds": 16,
"min": 0,
"max": 0,
"betDelay": 0,
"sportId": "66102",
"sportName": "Casino",
"isMaintenance": false,
"updatedAt": "2026-09-20T06:28:33.369Z",
"createdAt": "2026-09-16T10:57:41.028Z",
"marketArr": [
{
"marketId": "9102009062736",
"marketName": "WINNER",
"min": 100,
"max": 500000,
"index": 0,
"runners": [
{
"selectionId": "30820190609",
"status": "ONLINE",
"price": { "back": [ { "size": 2260751, "price": 1.98 } ] }
},
{
"selectionId": "30820190610",
"status": "ONLINE",
"price": { "back": [ { "size": 1905882, "price": 1.98 } ] }
}
],
"runnersName": { "30820190609": "PLAYER A", "30820190610": "PLAYER B" }
}
],
"cardsArr": {
"PLAYER_A": { "card_1": "SA_", "card_2": "0", "card_3": "0" },
"PLAYER_B": { "card_1": "H8_", "card_2": "0", "card_3": "0" }
},
"resultsArr": [
{
"marketId": "9102009062736",
"marketName": "WINNER",
"index": 0,
"runners": { "30820190609": "", "30820190610": "" },
"runnersName": { "30820190609": "PLAYER A", "30820190610": "PLAYER B" }
}
]
}
}This is a real response copied from the live feed. marketArr carries every market of the game (WINNER, PAIR, FLUSH, STRAIGHT, …) in the same shape shown above, and resultsArr mirrors it. cardsArr card codes like SA_ = Spade Ace, H8_ = Heart 8; "0" means the card is not dealt yet.
Prefer WebSocket push for live screens: wss://universalapi.store/ws?eventId=99.0010&apiKey=YOUR_KEY (frames use type: "subscribed" then type: "state"). Poll this HTTP endpoint as a reconnect fallback (e.g. every 1–2 seconds). A 503 response means live data is temporarily unavailable or stale — retry after a short delay.
GET /tv/games/:eventId/state is an alias — same request and response.
Live demo
Real responses from the live casino feed, fetched through this site’s backend proxy (/api/public/uapi/*). The lobby and game pages on this site render exactly this data.
Casino API — live responses
idle · 0 msGET /api/public/uapi/games
…
Historical results
Fetch recent completed rounds for a game — winners, cards, and market outcomes. Use this to populate the "Recent results" panel in your live UI.
/games/:eventId/resultsAPI keyReturns recent completed rounds for the game in the path.
GET https://universalapi.store/api/games/99.0010/results
X-API-Key: your-api-keySame response from POST /results with body { "eventId": "99.0010" } or GET /results?eventId=99.0010.
{
"data": [
{
"roundId": "9102009062625",
"eventId": "99.0010",
"eventName": "20-20 TEEN PATTI",
"winner": "A",
"cards": {
"PLAYER_A": { "card_1": "HQ_", "card_2": "CJ_", "card_3": "DK_" },
"PLAYER_B": { "card_1": "C2_", "card_2": "D3_", "card_3": "H2_" }
},
"results": [
{
"marketId": "9102009062626",
"marketName": "WINNER",
"index": 0,
"runners": [
{ "selectionId": "30820190609", "result": "WINNER" },
{ "selectionId": "30820190610", "result": "LOSER" }
],
"runnersName": { "30820190609": "PLAYER A", "30820190610": "PLAYER B" }
},
{
"marketId": "9102009062627",
"marketName": "PAIR ( DUBBLE ) 1:4",
"index": 1,
"runners": [
{ "selectionId": "7519370209724709", "result": "LOSER" },
{ "selectionId": "75193702209724709", "result": "WINNER" }
],
"runnersName": {
"7519370209724709": "PLAYER A ( PAIR )",
"75193702209724709": "PLAYER B ( PAIR )"
}
}
]
}
]
}Real response shape from the live feed — every settled round lists all of its markets in results, each runner marked WINNER or LOSER. winner is the table winner (A / B) where the game has one.
Poll when the user opens a game or after each round ends — every 10–30 seconds is usually enough. Returns 503 if historical results are temporarily unavailable.
TV & video
Embed the live video stream in an iframe on your site. Your backend mints a short-lived token; the browser loads the player URL — no API key in the iframe.
| Need | Endpoint | Used in |
|---|---|---|
| First-party streaming config | POST /public/tv/streaming | Public casino UI — returns iframeUrl (direct WebRTC player) |
| Video iframe URL | POST /api/tv/games/:eventId/embed | Your backend (returns embed path) |
| Video player page | GET /api/tv/player?embedToken=&tv=true | Browser iframe src (redirects to upstream WebRTC player) |
For timer, odds, and cards overlays, use Live game state — not the TV endpoints below.
/public/tv/streamingSession + first-party OriginReturns upstream WebRTC player config for the public casino UI at https://universalapi.store. Use iframeUrl as the iframe src — do not wrap it in another player page (nested iframes block WebRTC video).
POST https://universalapi.store/public/tv/streaming
Origin: https://universalapi.store
X-Session-Token: <from POST /public/session>
X-TV-Client: true
Content-Type: application/json
{ "eventId": "99.0010" }{
"data": {
"eventId": "99.0010",
"appName": "live",
"url": "livecdnplatin.com",
"streamingName": "GAME10",
"token": "…"
},
"iframeUrl": "https://player.universestudio.games/index.html?appName=live&streamingName=GAME10&url=livecdnplatin.com&token=…",
"playerUrl": "/public/tv/player?eventId=99.0010"
}Prefer iframeUrl for embedding. playerUrl is a legacy gateway redirect to the same upstream player.
Iframe video embed
Browsers cannot send X-API-Key on an iframe src. Use a two-step flow: your backend mints a short-lived embed token, then your frontend loads the player iframe with that token.
How iframe integration works
Browser on partner.com (live page)
↓ POST /your-backend/casino/tv/:eventId/embed
Your backend
↓ POST https://universalapi.store/api/tv/games/:eventId/embed + X-API-Key + X-TV-Client: true
Universal API
↓ { iframePath, expiresIn }
Your backend
↓ { iframeUrl: "https://universalapi.store/api/tv/player?..." }
Browser on partner.com
↓ <iframe src="iframeUrl"> (embedToken + Referer: partner.com)
Universal API player page → upstream video streamBackend requests embed token
POST /api/tv/games/:eventId/embed with API key + X-TV-Client: trueReturn iframe URL to frontend
iframePath — prefix with https://universalapi.store for the full URL.Browser loads iframe
expiresIn seconds — refresh before expiry./tv/games/:eventId/embedAPI key + X-TV-ClientCreates a short-lived embed token for one game. Call from your server only — never expose the API key in browser code.
POST https://universalapi.store/api/tv/games/99.0010/embed
Content-Type: application/json
X-API-Key: your-api-key
X-TV-Client: true{
"eventId": "99.0010",
"embedToken": "YkpY2RozaknDuLWGPR8cSbx0_SSnMnsMtK55fCo2ojw",
"expiresIn": 3600,
"iframePath": "/api/tv/player?eventId=99.0010&embedToken=YkpY2Roz...&tv=true"
}/tv/player?eventId=&embedToken=&tv=trueEmbed token + tv=true + domain allowlistProvider-hosted HTML player page. Use as iframe src on your whitelisted partner domain. The browser must send a Referer or Origin header matching one of your allowed domains (subdomains of a registered domain are accepted).
Do not set referrerpolicy="no-referrer" on the iframe — that blocks domain validation.
| Query param | Required | Description |
|---|---|---|
eventId | Yes | Game id (must match the token) |
embedToken | Yes | Token from POST /api/tv/games/:eventId/embed |
tv | Yes | Must be true |
Token refresh
Embed tokens expire after expiresIn seconds (default 3600). Refresh from your backend a few minutes before expiry — do not put the API key in browser code to call our embed endpoint directly.
let refreshTimer;
async function loadVideo(eventId) {
const res = await fetch(
`/your-backend/casino/tv/${encodeURIComponent(eventId)}/embed`,
{ method: "POST" }
);
const body = await res.json();
if (!res.ok || !body.iframeUrl) throw new Error(body.error ?? "Video unavailable");
document.getElementById("video-frame").src = body.iframeUrl;
clearTimeout(refreshTimer);
const refreshMs = Math.max((body.expiresIn - 300) * 1000, 60_000);
refreshTimer = setTimeout(() => loadVideo(eventId), refreshMs);
}HTML — live page with video iframe
<div class="uc-live-video">
<iframe
id="video-frame"
title="Live casino stream"
allow="autoplay; fullscreen"
referrerpolicy="strict-origin-when-cross-origin"
style="width:100%;aspect-ratio:16/9;border:0;border-radius:10px;background:#000"
></iframe>
<p id="video-error" class="uc-error" hidden></p>
</div>
<script>
async function loadVideo(eventId) {
const res = await fetch(
`/your-backend/casino/tv/${encodeURIComponent(eventId)}/embed`,
{ method: "POST" }
);
const body = await res.json();
if (!res.ok || !body.iframeUrl) {
document.getElementById("video-error").hidden = false;
document.getElementById("video-error").textContent =
body.error ?? "Video unavailable";
return;
}
document.getElementById("video-frame").src = body.iframeUrl;
}
loadVideo(new URLSearchParams(location.search).get("eventId"));
</script>Backend proxy — mint embed URL
router.post("/tv/:eventId/embed", async (req, res) => {
const { eventId } = req.params;
const r = await fetch(`https://universalapi.store/api/tv/games/${eventId}/embed`, {
method: "POST",
headers: {
"X-API-Key": process.env.UC_API_KEY,
"X-TV-Client": "true",
},
});
const body = await r.json();
if (!r.ok) {
res.status(r.status).json(body);
return;
}
// Prefix iframePath with provider base URL
const providerBaseUrl = process.env.UC_PROVIDER_BASE_URL ?? "https://universalapi.store";
res.json({
iframeUrl: `${providerBaseUrl}${body.iframePath}`,
expiresIn: body.expiresIn,
});
});Iframe troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Universe Casino logo stuck (no live video) | Double-nested iframe blocked WebRTC encrypted-media | Use iframeUrl from POST /public/tv/streaming directly, or GET /api/tv/player (redirects upstream). Add allow="autoplay; fullscreen; encrypted-media" on the iframe. |
| Blank iframe / error page | Expired or invalid embedToken | Call your backend embed proxy again and set a new iframe src |
| "Domain not whitelisted" in iframe | Parent page domain not in your allowed domains, or Referer blocked | Ask your account manager to add the embedding domain (e.g. partner.com). Remove no-referrer from the iframe. |
| 403 on embed POST | Subscription expired or account disabled | Contact support to renew or reactivate your account |
| 503 on embed POST | No stream configured for that game | Verify game is live; retry when streaming is available |
| 401 on embed POST | Missing X-TV-Client: true | Add header on server-side embed request |
Important: the TV player URL serves video only. Overlays come from Live game state.
Response fields
| Field | Description |
|---|---|
eventId | Game identifier (e.g. 99.0010) |
stale | true when the snapshot is outdated — treat as degraded data |
freshnessMs | Milliseconds since the snapshot was last updated |
data.roundId | Current round identifier |
data.status / data.roundStatus | Round phase (e.g. OPEN, CLOSED) |
data.leftSec | Seconds remaining in the current betting window |
data.marketArr | Markets and runner prices for the round |
data.cardsArr | Dealt cards keyed by market/runner |
data.resultsArr | Recent result entries when present in live snapshot |
data[].roundId | Round id from GET /api/games/:eventId/results |
data[].winner | Winning runner code for the round |
data[].cards | Card codes dealt in that round |
data[].results | Per-market runner outcomes (WIN / LOSE) |
Betting & wallet (seat API)
These endpoints let your platform place real bets on Universal API rounds. Player money always stays in your wallet: we call your callback URL to debit stake and credit winnings. All three endpoints use the same x-api-key header and respect your IP / domain whitelist.
Place a bet
/api/public/v1/betAPI keyPOST /api/public/v1/bet
x-api-key: <your key>
content-type: application/json
{
"userId": "player-1042",
"gameId": "99.0010",
"roundId": "1725312001",
"market": "Lucky 7",
"selection": "LOW",
"odds": 1.98,
"stake": 500,
"reference": "your-unique-txn-id"
}{ "status": "ok", "betId": "…", "reference": "your-unique-txn-id", "balance": 9500, "currency": "INR" }Idempotent: resending the same reference returns the original bet with duplicate: true — never double-debits.
Player balance
/api/public/v1/balanceAPI key{ "userId": "player-1042" }{ "status": "ok", "currency": "INR", "balance": 9500 }Bet history
/api/public/v1/bets?userId=&gameId=&limit=50API key{ "status": "ok", "count": 2, "bets": [
{ "operator_user_id": "player-1042", "game_id": "99.0010", "round_id": "1725312001",
"selection": "LOW", "odds": 1.98, "stake": 500, "payout": 990,
"status": "won", "reference": "your-unique-txn-id", "settled_at": "…" }
] }Method flexible: /me, /games and /bets answer to both GET and POST. Write endpoints (/bet, /balance, /cashout, /settle) are POST only and reply with a JSON method_not_allowed error (405) on GET — you will never get an HTML page back, so response.json() is always safe.
Your wallet callback
Set your callback base URL in the operator panel. We POST to <callback>/balance, <callback>/debit, <callback>/credit and <callback>/rollback.
{
"action": "debit",
"operatorId": "…",
"currency": "INR",
"userId": "player-1042",
"amount": 500,
"reference": "your-unique-txn-id",
"gameId": "99.0010",
"roundId": "1725312001",
"betId": "…",
"timestamp": "2026-09-02T23:10:00.000Z"
}Headers: x-universal-operator (your operator id) and x-universal-signature = HMAC-SHA256 of the raw body using your callback secret (hex). Verify it before touching balances.
const expected = crypto.createHmac("sha256", CALLBACK_SECRET)
.update(rawBody).digest("hex");
if (expected !== req.headers["x-universal-signature"]) return res.status(401).end();{ "status": "ok", "balance": 9500, "reference": "your-unique-txn-id" }Reply non-2xx or { "status": "failed" } to reject a debit (e.g. insufficient funds) — the bet is then rejected and logged in your panel. Settlement credits are sent automatically when the round result arrives; failed inserts trigger a rollback.
Balance maintain
Player funds always live in your wallet. We never hold or display a balance of our own — every stake, payout and refund is a call to your callback URL, so your ledger stays the single source of truth.
Money flow of one round
Bet placed
<callback>/debit with the stake and a unique reference. Deduct it and reply with the new balance.Round result
<callback>/credit with the payout and the same reference plus settlementRef. On a loss no call is made — the stake already left the wallet.Anything fails
<callback>/rollback with the original reference. Return the stake exactly once.Sync check
POST /api/public/v1/balance or read your own ledger to confirm both sides agree.Rules to keep balances correct
// store every reference you have already processed
const seen = await db.tx.findOne({ reference: body.reference, action: body.action });
if (seen) return res.json({ status: "ok", balance: seen.balanceAfter, reference: body.reference });
const balance = await wallet.apply(body.userId, body.action === "debit" ? -body.amount : body.amount);
await db.tx.insert({ reference: body.reference, action: body.action, balanceAfter: balance });
res.json({ status: "ok", balance, reference: body.reference });Never apply the same reference + action twice. Retries are normal (network timeouts) and must return the stored result, not a second debit or credit.
- Verify
x-universal-signaturebefore changing any balance. - Reply within 5 seconds; a timeout is treated as
callback_failedand the bet is rejected. - Always return the post-transaction balance in the same currency you registered.
- Reject with
{ "status": "failed", "error": "insufficient_funds" }instead of returning a negative balance. - Reconcile daily with
GET /api/public/v1/bets— stake and payout perreferenceshould match your ledger row for row.
GET /api/public/v1/bets?limit=500
// for each bet: ledger.debit(reference) === bet.stake
// bet.status === "won" ? ledger.credit(reference) === bet.payout : no credit rowErrors
Data endpoints reply with { "error": "message" }. Betting / wallet endpoints reply with { "status": "error", "code": "…", "message": "…" }.
| Status | Code | Meaning |
|---|---|---|
| 401 | missing_key | No x-api-key / Authorization header sent |
| 401 | invalid_key | Key unknown or deactivated |
| 403 | operator_disabled | Account disabled — contact support |
| 403 | ip_not_allowed | Calling IP is not whitelisted for this key |
| 403 | domain_not_allowed | Origin domain not whitelisted for this key |
| 402 | plan_expired | Monthly subscription has ended — renew to resume |
| 400 | bad_request | Invalid or missing body fields |
| 409 | round_closed | Betting is closed for that round |
| 424 | no_callback_url | Set your wallet callback URL in the operator panel |
| 502 | callback_failed | Your wallet endpoint was unreachable or errored |
| 402 | wallet_rejected | Your wallet declined the debit (e.g. low balance) |
| 404 | — | Unknown eventId — check the supported games list |
| 503 | — | Live data missing or stale — retry with backoff |
Integration guide
Recommended setup for a production integration.
Store credentials securely
Register embedding domains
Fetch the game list
GET /api/games once at startup (or cache with a long TTL) to build your game menu.Poll live state per game
GET /api/games/:eventId/state every 1–2 seconds from your backend and forward normalized data to your frontend.Handle degraded responses
503 or stale: true, show a "live data temporarily unavailable" state and retry with exponential backoff.Load recent results
GET /api/games/:eventId/results when the live page opens and refresh every 10–30 seconds for the results sidebar.Embed live video (optional)
expiresIn. See Iframe embed.Best practice: proxy all API calls through your own backend so the API key never reaches the browser. Only the short-lived embed token is passed to the iframe URL.
Game UI reference (HTML & CSS)
Copy the markup and styles below into your partner site. Bind odds from data.marketArr on live state and populate result modals from GET /api/games/:eventId/results. Download image assets from this site and host them on your server under the same /assets/ paths.
Assets: All files are served from this domain only (e.g. /assets/cards/H7_.png). Use Download to save files — no third-party links. After download, upload to your CDN keeping the path structure.
99.0010
20-20 TEENPATTI
99.0013
1DAY TEEN PATTI
99.0016
JOKER TEEN PATTI
99.0014
MUFLIS TEEN PATTI
99.0018
DRAGON TIGER
99.0019
20-20 DRAGON TIGER
99.0021
1 DAY DRAGON TIGER
99.0030
LUCKY 7
99.0005
AMAR AKBAR ANTHONY
99.0046
CARD RACE
99.0001
BACCARAT
99.0025
ANDAR BAHAR
99.0022
32 CARDS
99.0007
POKER
99.0041
DTL
20-20 TEENPATTI 99.0010
Runner tiles per market + dual-column result modal (Player A vs Player B).
Bind prices from data.marketArr. Map card codes from cardsArr to cardImageUrl(code).
Assets (download from this site)
| Asset | Path on your server | Download |
|---|---|---|
| Playing card | /assets/cards/{code}_.png | — |
| Hidden / back card | /assets/cards/null.png | Download |
| Result modal trophy styles | /assets/docs/trophy-icons.css | Download |
HTML — asset links & img tags
<link rel="stylesheet" href="/assets/docs/trophy-icons.css" />
<!-- Bind src from API card codes; paths are on your server after you download assets -->
<img src="/assets/cards/H7_.png" alt="Player A card" width="62" />
<img src="/assets/cards/S5_.png" alt="Player B card" width="62" />JavaScript — build image URLs from API codes
const ASSET_BASE = "https://your-domain.com";
function cardImageUrl(code) {
if (!code || code === "0") return `${ASSET_BASE}/assets/cards/null.png`;
return `${ASSET_BASE}/assets/cards/${code}_.png`;
}
// After download: host files under /assets/ on your serverLive odds / markets UI
<div class="uc-markets-scroll">
<section class="uc-market">
<header class="uc-market-header">
<strong class="uc-market-title">PAIR PLUS A</strong>
<span class="uc-market-minmax">Min/Max: 100 - 25000</span>
</header>
<div class="uc-market-body">
<div class="uc-runners-row uc-runners-row-two">
<div class="uc-runner">
<span class="uc-runner-name">Pair A</span>
<div class="uc-odds-box">
<div class="uc-odds-price">2.5</div>
<div class="uc-odds-size">100</div>
</div>
</div>
<div class="uc-runner">
<span class="uc-runner-name">Pair B</span>
<div class="uc-odds-box">
<div class="uc-odds-price">2.5</div>
<div class="uc-odds-size">100</div>
</div>
</div>
</div>
</div>
</section>
<section class="uc-market">
<header class="uc-market-header">
<strong class="uc-market-title">WINNER</strong>
<span class="uc-market-minmax">Min/Max: 100 - 100000</span>
</header>
<div class="uc-market-body">
<div class="uc-runners-row uc-runners-row-two">
<div class="uc-runner">
<span class="uc-runner-name">Player A</span>
<div class="uc-odds-box">
<div class="uc-odds-price">1.98</div>
<div class="uc-odds-size">500</div>
</div>
</div>
<div class="uc-runner">
<span class="uc-runner-name">Player B</span>
<div class="uc-odds-box">
<div class="uc-odds-price">1.98</div>
<div class="uc-odds-size">500</div>
</div>
</div>
</div>
</div>
</section>
</div>CSS — odds panel
:root,
[data-theme="light"] {
--casino-page-bg: var(--ifm-background-color);
--casino-shell-bg: #000;
--casino-markets-bg: #ededed;
--casino-market-header-bg: #000;
--casino-market-header-text: #fff;
--casino-market-body-bg: #fff;
--casino-text: #243a48;
--casino-text-muted: var(--ifm-color-emphasis-600);
--casino-runners-bg: linear-gradient(
90deg,
rgb(153 199 241) 0%,
rgb(138 189 216 / 50%) 49%,
rgb(146 198 246) 100%
);
--casino-odds-bg: rgba(114, 187, 239, 0.5);
--casino-odds-text: #111;
--casino-odds-shadow: 0 2px 7px 1px #67828be6;
--casino-back-bg: #72bbef;
--casino-lay-bg: #faa9ba;
--casino-sportbook-bg: #fff;
--casino-sportbook-border: #ccc;
--casino-results-bg: #000;
--casino-results-text: #fff;
--casino-results-muted: #ccc;
--casino-modal-bg: #fff;
--casino-modal-header-bg: #000;
--casino-modal-header-text: #fff;
--casino-modal-text: #243a48;
--casino-modal-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
--casino-modal-backdrop: rgba(0, 0, 0, 0.5);
--casino-card-border: #000;
--casino-link: #243a48;
}
[data-theme="dark"] {
--casino-page-bg: var(--ifm-background-color);
--casino-shell-bg: #0d1117;
--casino-markets-bg: var(--ifm-background-color);
--casino-market-header-bg: #161b22;
--casino-market-header-text: var(--ifm-font-color-base);
--casino-market-body-bg: var(--ifm-background-surface-color);
--casino-text: var(--ifm-font-color-base);
--casino-text-muted: var(--ifm-color-emphasis-500);
--casino-runners-bg: linear-gradient(
90deg,
rgb(36 58 72) 0%,
rgb(28 45 56 / 70%) 49%,
rgb(36 58 72) 100%
);
--casino-odds-bg: rgba(114, 187, 239, 0.22);
--casino-odds-text: var(--ifm-font-color-base);
--casino-odds-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
--casino-back-bg: #72bbef;
--casino-lay-bg: #faa9ba;
--casino-sportbook-bg: var(--ifm-background-surface-color);
--casino-sportbook-border: var(--ifm-color-emphasis-300);
--casino-results-bg: #161b22;
--casino-results-text: var(--ifm-font-color-base);
--casino-results-muted: var(--ifm-color-emphasis-500);
--casino-modal-bg: var(--ifm-background-surface-color);
--casino-modal-header-bg: #161b22;
--casino-modal-header-text: var(--ifm-font-color-base);
--casino-modal-text: var(--ifm-font-color-base);
--casino-modal-shadow: 0 8px 32px rgba(0, 0, 0, 0.55);
--casino-modal-backdrop: rgba(0, 0, 0, 0.72);
--casino-card-border: var(--ifm-color-emphasis-400);
--casino-link: var(--ifm-color-primary-light);
}
/**
* Flattened markets panel styles (from CasinoLiveGame styles.module.css).
* Use with the HTML templates in docs — pair with casino-variables.css.
*/
.uc-markets-scroll {
background: var(--casino-markets-bg);
}
.uc-market {
margin-bottom: 3px;
}
.uc-market-header {
padding: 4px 8px;
font-size: 12px;
font-weight: 700;
background: var(--casino-market-header-bg);
color: var(--casino-market-header-text);
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
}
.uc-market-title {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.uc-market-minmax {
font-size: 11px;
font-weight: 400;
opacity: 0.85;
flex-shrink: 0;
white-space: nowrap;
}
.uc-market-body {
position: relative;
background: var(--casino-market-body-bg);
border-bottom-left-radius: 6px;
}
.uc-suspended-overlay {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
font-weight: 700;
text-transform: uppercase;
color: #fff;
background: rgba(0, 0, 0, 0.65);
border: 2px solid #666;
z-index: 1;
}
.uc-runners-row {
display: flex;
background: var(--casino-runners-bg);
padding: 6px 4px 10px;
gap: 4px;
}
.uc-runners-row-two .uc-runner {
flex: 1 1 50%;
max-width: 50%;
}
.uc-runners-row-three .uc-runner {
flex: 1 1 33.333%;
max-width: 33.333%;
}
.uc-runners-row-stacked {
flex-direction: column;
gap: 6px;
padding: 6px 8px 10px;
}
.uc-runners-row-stacked .uc-runner {
flex: 0 0 auto;
width: 100%;
max-width: 100%;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.uc-runner {
display: flex;
flex-direction: column;
align-items: center;
min-width: 0;
padding: 0 2px;
}
.uc-runner-name {
font-size: 11px;
font-weight: 700;
color: var(--casino-text);
margin-bottom: 4px;
text-align: center;
line-height: 1.15;
min-height: 26px;
display: flex;
align-items: flex-end;
justify-content: center;
}
.uc-odds-box {
width: 100%;
max-width: 150px;
min-width: 72px;
border-radius: 5px;
padding: 4px 2px;
background: var(--casino-odds-bg);
box-shadow: var(--casino-odds-shadow);
color: var(--casino-odds-text);
text-align: center;
font-weight: 600;
}
.uc-odds-price {
font-size: 13px;
line-height: 1.2;
}
.uc-odds-size {
font-size: 11px;
font-weight: 400;
opacity: 0.85;
line-height: 1.2;
}
/* Back / lay table (1 Day Teen Patti, 1 Day Dragon Tiger) */
.uc-sportbook-table {
width: 100%;
border-collapse: collapse;
background: var(--casino-sportbook-bg);
table-layout: fixed;
}
.uc-sportbook-table th,
.uc-sportbook-table td {
border-top: 1px solid var(--casino-sportbook-border);
vertical-align: middle;
}
.uc-back-cell {
background: var(--casino-back-bg);
text-align: center;
}
.uc-lay-cell {
background: var(--casino-lay-bg);
text-align: center;
}Result modal UI
<div style="margin-bottom: 80px;">
<div class="modal-title p-2">
<h6 class="text-right round-id"><b>Round Id:</b> 952705064335</h6>
</div>
<div class="col-12 col-md-6 col-xs-12 paati_boxs">
<h6>Player A</h6>
<div class="card-Img-box">
<img src="/assets/cards/H7_.png" alt="Player A card 1" />
<img src="/assets/cards/D9_.png" alt="Player A card 2" />
<img src="/assets/cards/C3_.png" alt="Player A card 3" />
</div>
<div class="btn winner-team WinnerA">Winner</div>
</div>
<div class="col-12 col-md-6 col-xs-12 paati_boxs">
<h6>Player B</h6>
<div class="card-Img-box">
<img src="/assets/cards/S5_.png" alt="Player B card 1" />
<img src="/assets/cards/H2_.png" alt="Player B card 2" />
<img src="/assets/cards/D8_.png" alt="Player B card 3" />
</div>
</div>
<div class="clearfix"></div>
<div class="col-md-12 col-xs-12 all-market-winner">
<h6 class="text-center fw-bold">WINNER</h6>
<div class="dual-column-market-row">
<div class="card-Img-box sectionA p-1">
<i class="fa fa-trophy winner-icon" aria-hidden="true"></i>
<span class="teen-market-runner-name">PLAYER A</span>
</div>
<div class="card-Img-box sectionB p-1">
<i class="fa fa-trophy loser-icon" aria-hidden="true"></i>
<span class="teen-market-runner-name">PLAYER B</span>
</div>
</div>
</div>
</div>CSS — result modal
:root,
[data-theme="light"] {
--casino-page-bg: var(--ifm-background-color);
--casino-shell-bg: #000;
--casino-markets-bg: #ededed;
--casino-market-header-bg: #000;
--casino-market-header-text: #fff;
--casino-market-body-bg: #fff;
--casino-text: #243a48;
--casino-text-muted: var(--ifm-color-emphasis-600);
--casino-runners-bg: linear-gradient(
90deg,
rgb(153 199 241) 0%,
rgb(138 189 216 / 50%) 49%,
rgb(146 198 246) 100%
);
--casino-odds-bg: rgba(114, 187, 239, 0.5);
--casino-odds-text: #111;
--casino-odds-shadow: 0 2px 7px 1px #67828be6;
--casino-back-bg: #72bbef;
--casino-lay-bg: #faa9ba;
--casino-sportbook-bg: #fff;
--casino-sportbook-border: #ccc;
--casino-results-bg: #000;
--casino-results-text: #fff;
--casino-results-muted: #ccc;
--casino-modal-bg: #fff;
--casino-modal-header-bg: #000;
--casino-modal-header-text: #fff;
--casino-modal-text: #243a48;
--casino-modal-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
--casino-modal-backdrop: rgba(0, 0, 0, 0.5);
--casino-card-border: #000;
--casino-link: #243a48;
}
[data-theme="dark"] {
--casino-page-bg: var(--ifm-background-color);
--casino-shell-bg: #0d1117;
--casino-markets-bg: var(--ifm-background-color);
--casino-market-header-bg: #161b22;
--casino-market-header-text: var(--ifm-font-color-base);
--casino-market-body-bg: var(--ifm-background-surface-color);
--casino-text: var(--ifm-font-color-base);
--casino-text-muted: var(--ifm-color-emphasis-500);
--casino-runners-bg: linear-gradient(
90deg,
rgb(36 58 72) 0%,
rgb(28 45 56 / 70%) 49%,
rgb(36 58 72) 100%
);
--casino-odds-bg: rgba(114, 187, 239, 0.22);
--casino-odds-text: var(--ifm-font-color-base);
--casino-odds-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
--casino-back-bg: #72bbef;
--casino-lay-bg: #faa9ba;
--casino-sportbook-bg: var(--ifm-background-surface-color);
--casino-sportbook-border: var(--ifm-color-emphasis-300);
--casino-results-bg: #161b22;
--casino-results-text: var(--ifm-font-color-base);
--casino-results-muted: var(--ifm-color-emphasis-500);
--casino-modal-bg: var(--ifm-background-surface-color);
--casino-modal-header-bg: #161b22;
--casino-modal-header-text: var(--ifm-font-color-base);
--casino-modal-text: var(--ifm-font-color-base);
--casino-modal-shadow: 0 8px 32px rgba(0, 0, 0, 0.55);
--casino-modal-backdrop: rgba(0, 0, 0, 0.72);
--casino-card-border: var(--ifm-color-emphasis-400);
--casino-link: var(--ifm-color-primary-light);
}
/**
* Flattened markets panel styles (from CasinoLiveGame styles.module.css).
* Use with the HTML templates in docs — pair with casino-variables.css.
*/
.uc-markets-scroll {
background: var(--casino-markets-bg);
}
.uc-market {
margin-bottom: 3px;
}
.uc-market-header {
padding: 4px 8px;
font-size: 12px;
font-weight: 700;
background: var(--casino-market-header-bg);
color: var(--casino-market-header-text);
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
}
.uc-market-title {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.uc-market-minmax {
font-size: 11px;
font-weight: 400;
opacity: 0.85;
flex-shrink: 0;
white-space: nowrap;
}
.uc-market-body {
position: relative;
background: var(--casino-market-body-bg);
border-bottom-left-radius: 6px;
}
.uc-suspended-overlay {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
font-weight: 700;
text-transform: uppercase;
color: #fff;
background: rgba(0, 0, 0, 0.65);
border: 2px solid #666;
z-index: 1;
}
.uc-runners-row {
display: flex;
background: var(--casino-runners-bg);
padding: 6px 4px 10px;
gap: 4px;
}
.uc-runners-row-two .uc-runner {
flex: 1 1 50%;
max-width: 50%;
}
.uc-runners-row-three .uc-runner {
flex: 1 1 33.333%;
max-width: 33.333%;
}
.uc-runners-row-stacked {
flex-direction: column;
gap: 6px;
padding: 6px 8px 10px;
}
.uc-runners-row-stacked .uc-runner {
flex: 0 0 auto;
width: 100%;
max-width: 100%;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.uc-runner {
display: flex;
flex-direction: column;
align-items: center;
min-width: 0;
padding: 0 2px;
}
.uc-runner-name {
font-size: 11px;
font-weight: 700;
color: var(--casino-text);
margin-bottom: 4px;
text-align: center;
line-height: 1.15;
min-height: 26px;
display: flex;
align-items: flex-end;
justify-content: center;
}
.uc-odds-box {
width: 100%;
max-width: 150px;
min-width: 72px;
border-radius: 5px;
padding: 4px 2px;
background: var(--casino-odds-bg);
box-shadow: var(--casino-odds-shadow);
color: var(--casino-odds-text);
text-align: center;
font-weight: 600;
}
.uc-odds-price {
font-size: 13px;
line-height: 1.2;
}
.uc-odds-size {
font-size: 11px;
font-weight: 400;
opacity: 0.85;
line-height: 1.2;
}
/* Back / lay table (1 Day Teen Patti, 1 Day Dragon Tiger) */
.uc-sportbook-table {
width: 100%;
border-collapse: collapse;
background: var(--casino-sportbook-bg);
table-layout: fixed;
}
.uc-sportbook-table th,
.uc-sportbook-table td {
border-top: 1px solid var(--casino-sportbook-border);
vertical-align: middle;
}
.uc-back-cell {
background: var(--casino-back-bg);
text-align: center;
}
.uc-lay-cell {
background: var(--casino-lay-bg);
text-align: center;
}
@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
/* 20-20 Teen Patti result modal — Wazeer app-results / #resultModal */
.teenPattiResultModalRoot {
font-family: Tahoma, Helvetica, sans-serif;
}
.teenPattiResultModalRoot .modal-dialog {
width: 100%;
max-width: 560px;
margin: 0 auto;
}
.teenPattiResultModalRoot .modal-content {
background: #fff;
border-radius: 6px;
overflow: hidden;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.35);
}
.teenPattiResultModalRoot .bet-slip-head {
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(-180deg, #000 0%, #000 100%);
color: #fff;
padding: 8px 12px;
border: 0;
}
.teenPattiResultModalRoot .bet-slip-head .modal-title {
margin: 0;
font-size: 15px;
font-weight: 700;
text-transform: capitalize;
}
.teenPattiResultModalRoot .bet-slip-head .modal-title b {
font-weight: 700;
}
.teenPattiResultModalRoot .bet-slip-head .close {
float: none;
padding: 0;
margin: 0;
background: transparent;
border: 0;
color: #fff;
opacity: 1;
font-size: 24px;
line-height: 1;
cursor: pointer;
text-shadow: none;
}
.teenPattiResultModalRoot .modal-body {
padding: 8px 12px 16px;
max-height: 80vh;
overflow-y: auto;
text-align: left;
}
.teenPattiResultModalRoot .body-bottom {
margin-bottom: 40px;
}
.teenPattiResultModalRoot .modal-title.p-2 {
padding: 8px;
margin: 0;
}
.teenPattiResultModalRoot .round-id {
margin: 0;
font-size: 14px;
font-weight: 700;
text-align: right;
color: #243a48;
}
.teenPattiResultModalRoot .round-id b {
font-weight: 700;
}
.teenPattiResultModalRoot .paati_boxs {
width: 50%;
float: left;
box-sizing: border-box;
padding: 0 4px;
text-align: center;
}
.teenPattiResultModalRoot .paati_boxs h6 {
margin: 0 0 8px;
font-size: 16px;
font-weight: 700;
}
.teenPattiResultModalRoot .card-Img-box {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.teenPattiResultModalRoot .card-Img-box img {
width: 62px;
height: auto;
border: 1px solid #000;
border-radius: 17px;
margin: 6px;
}
.teenPattiResultModalRoot .all-market-winner .sectionA.p-1,
.teenPattiResultModalRoot .all-market-winner .sectionB.p-1 {
padding: 4px;
min-height: 28px;
align-items: center;
justify-content: center;
gap: 3px;
}
.teenPattiResultModalRoot .teen-market-runner-name {
margin-left: 3px;
font-size: 12px;
font-weight: 700;
color: #243a48;
line-height: 1.2;
text-transform: uppercase;
}
.teenPattiResultModalRoot .winner-icon {
animation: wazeerTeenPattiWinnerPulse 1.5s infinite;
border-radius: 50%;
color: #1d7f1e;
margin-left: 0;
font-size: 14px;
flex-shrink: 0;
}
.teenPattiResultModalRoot .loser-icon {
animation: wazeerTeenPattiWinnerPulse 1.5s infinite;
border-radius: 50%;
color: #ca1010;
transform: rotate(180deg);
margin-left: 0;
font-size: 14px;
flex-shrink: 0;
}
.teenPattiResultModalRoot .winner-team {
background: #28a745;
padding: 5px 10px;
color: #fff;
font-size: 20px;
font-weight: 700;
display: block;
margin: 10px auto;
width: fit-content;
border: 0;
border-radius: 4px;
}
.teenPattiResultModalRoot .clearfix {
clear: both;
border-top: 1px solid #ccc;
}
.teenPattiResultModalRoot .all-market-winner {
border-bottom: 1px solid #ccc;
padding: 10px 0;
}
.teenPattiResultModalRoot .all-market-winner .text-center.fw-bold {
text-align: center;
font-size: 12px;
font-weight: 700;
margin-bottom: 8px;
line-height: 1.3;
color: #243a48;
}
.teenPattiResultModalRoot .all-market-winner .sectionA,
.teenPattiResultModalRoot .all-market-winner .sectionB {
width: 50%;
display: inline-flex;
text-align: center;
font-size: 12px;
vertical-align: top;
box-sizing: border-box;
align-items: center;
justify-content: center;
}
@keyframes wazeerTeenPattiWinnerPulse {
0% {
box-shadow: 0 0 0 0 rgba(29, 127, 30, 0.6);
}
70% {
box-shadow: 0 0 0 10px rgba(29, 127, 30, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(29, 127, 30, 0);
}
}
@media only screen and (max-width: 767px) {
.teenPattiResultModalRoot .paati_boxs {
width: 100%;
float: none;
margin: 5px 0;
padding: 0;
}
.teenPattiResultModalRoot .paati_boxs h6 {
font-size: 18px;
}
.teenPattiResultModalRoot .card-Img-box img {
width: 50px;
border-radius: 14px;
}
}
/* Lucky 7 result modal — stacked full-width runner rows */
.lucky7ResultModalRoot .lucky7-body-bottom {
margin-bottom: 80px;
}
.lucky7ResultModalRoot .lucky7-card-box {
float: none;
width: 100%;
max-width: none;
margin: 0 auto 8px;
padding: 0;
text-align: center;
}
.lucky7ResultModalRoot .lucky7-card-box + .clearfix {
border-top: 0;
}
@media only screen and (max-width: 767px) {
.lucky7ResultModalRoot .lucky7-card-box {
max-width: 100%;
}
}
/* 1 Day Teen Patti result modal */
.oneDayTeenPattiResultModalRoot .one-day-teen-body-bottom {
margin-bottom: 80px;
}
.oneDayTeenPattiResultModalRoot .card-Img-box .btn.winner-team {
display: block;
margin: 8px auto 0;
}
.oneDayTeenPattiResultModalRoot .winner-team {
display: block;
margin: 8px auto 0;
}
/* Joker Teen Patti result modal */
.jokerTeenPattiResultModalRoot .joker-teen-body-bottom {
margin-bottom: 80px;
}
.jokerTeenPattiResultModalRoot .card-Img-box .btn.winner-team {
display: block;
margin: 8px auto 0;
}
.jokerTeenPattiResultModalRoot .winner-team {
display: block;
margin: 8px auto 0;
}
/* Muflis Teen Patti result modal */
.muflisTeenPattiResultModalRoot .muflis-teen-body-bottom {
margin-bottom: 0;
}
.muflisTeenPattiResultModalRoot .card-Img-box .btn.winner-team {
display: block;
margin: 8px auto 0;
width: fit-content;
}
/* Card Race result modal */
.cardRaceResultModalRoot .card-race-body-bottom {
margin-bottom: 0;
}
.cardRaceResultModalRoot .showall-card {
list-style: none;
padding: 6px 4px;
margin: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
border-bottom: 1px solid #eee;
}
.cardRaceResultModalRoot .showall-card .ms-1 {
margin-left: 2px;
display: inline-flex;
}
.cardRaceResultModalRoot .showall-card .imgClassModal {
width: 32px;
height: auto;
border: 1px solid #000;
border-radius: 8px;
}
.cardRaceResultModalRoot .modal-title.p-2[style*='float'] {
float: left;
width: 100%;
}
.cardRaceResultModalRoot .modal-title.p-2[style*='float'] + .paati_boxs {
clear: both;
}
/* Amar Akbar Anthony result modal */
.aaaResultModalRoot .aaa-body-bottom {
margin-bottom: 0;
}
.dragonTiger2020ResultModalRoot .dragon-tiger-body-bottom {
margin-bottom: 80px;
}
.dragonTiger2020ResultModalRoot .winner-team {
display: block;
margin: 8px auto 0;
}
/* 1 Day Dragon Tiger result modal */
.oneDayDragonTigerResultModalRoot .showall-card {
list-style: none;
padding: 8px 4px;
margin: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
border-bottom: 1px solid #eee;
}
.oneDayDragonTigerResultModalRoot .showall-card .mr-2 {
margin-right: 8px;
font-weight: 700;
font-size: 14px;
color: #243a48;
}
.oneDayDragonTigerResultModalRoot .showall-card .ms-1 {
margin-left: 3px;
}
.oneDayDragonTigerResultModalRoot .showall-card .imgClassModal {
width: 42px;
height: auto;
border: 1px solid #000;
border-radius: 12px;
}
/* Baccarat result modal */
.baccaratResultModalRoot .winner-team {
display: block;
margin: 8px auto 0;
}
/* Andar Bahar result modal */
.andarBaharResultModalRoot .andar-bahar-body-bottom {
margin-bottom: 80px;
}
.andarBaharResultModalRoot .showall-card {
list-style: none;
padding: 8px 4px;
margin: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
border-bottom: 1px solid #eee;
}
.andarBaharResultModalRoot .showall-card .mr-2 {
margin-right: 8px;
font-weight: 700;
font-size: 14px;
color: #243a48;
display: flex;
align-items: center;
}
.andarBaharResultModalRoot .showall-card .andar-bahar-card-item {
margin-left: 3px;
}
.andarBaharResultModalRoot .showall-card img {
width: 42px;
height: auto;
border: 1px solid #000;
border-radius: 12px;
}
/* 32 Cards result modal */
.cards32ResultModalRoot .cards32-body-bottom {
margin-bottom: 80px;
}
.cards32ResultModalRoot .cards32-round-id {
float: none;
width: 100%;
clear: both;
}
.cards32ResultModalRoot .cards32-round-id-clear {
border-top: 0;
clear: both;
}
.cards32ResultModalRoot .cards32-player-box {
float: none;
width: 100%;
max-width: none;
padding: 0;
clear: both;
}
.cards32ResultModalRoot .showall-card {
list-style: none;
padding: 8px 4px;
margin: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
border-bottom: 1px solid #eee;
}
.cards32ResultModalRoot .showall-card .mr-2 {
margin-right: 8px;
font-weight: 700;
font-size: 14px;
color: #243a48;
}
.cards32ResultModalRoot .showall-card .cards32-card-item {
margin-left: 3px;
}
.cards32ResultModalRoot .showall-card .imgClassModal {
width: 42px;
height: auto;
border: 1px solid #000;
border-radius: 12px;
}
.cards32ResultModalRoot .showall-card .me-1 {
margin-right: 4px;
}
/* 20-20 Poker result modal */
.pokerResultModalRoot .poker-body-bottom {
margin-bottom: 80px;
}
.pokerResultModalRoot .poker-round-id {
float: none;
width: 100%;
clear: both;
}
.pokerResultModalRoot .poker-round-id-clear {
border-top: 0;
clear: both;
}
.pokerResultModalRoot .poker-card-box {
float: none;
width: 100%;
max-width: none;
padding: 0;
clear: both;
}
.pokerResultModalRoot .showall-card {
list-style: none;
padding: 8px 4px;
margin: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
border-bottom: 1px solid #eee;
}
.pokerResultModalRoot .showall-card b {
font-weight: 700;
font-size: 14px;
color: #243a48;
}
.pokerResultModalRoot .showall-card .ms-1 {
margin-left: 4px;
}
.pokerResultModalRoot .showall-card .imgClassModal {
width: 42px;
height: auto;
border: 1px solid #000;
border-radius: 12px;
}Supported games
| eventId | Game name |
|---|---|
99.0010 | 20-20 TEENPATTI |
99.0030 | LUCKY 7 |
99.0013 | 1DAY TEEN PATTI |
99.0016 | JOKER TEEN PATTI |
99.0019 | 20-20 DRAGON TIGER |
99.0001 | BACCARAT |
99.0025 | ANDAR BAHAR |
99.0022 | 32 CARDS |
99.0007 | POKER |
99.0041 | DTL |
99.0021 | 1 DAY DRAGON TIGER |
99.0014 | MUFLIS TEEN PATTI |
99.0046 | CARD RACE |
99.0005 | AMAR AKBAR ANTHONY |
99.0018 | DRAGON TIGER |
88.0019 | LUCKY 0 TO 9 |
88.0020 | DREAM CATCHER |
88.0021 | HEADS & TAILS |
88.0030 | VIMAAN |
88.0023 | BALLOON |