/* ═══════════════════════════════════════════════════════════════════════
   WHICH :root VALUE ACTUALLY APPLIES  (generated for build 1097)

   66 custom properties are declared across 12 separate :root blocks in this file,
   and 27 of them are declared more than once with DIFFERENT values. CSS takes the
   last one, so editing the first declaration of --bg (line 5) changes nothing — the
   block at line 7851 wins. That has cost real time before, so here is the resolved
   value for every conflicting token, verified against a real CSS resolver rather
   than read off the source.

   To change one of these, edit the line named below. Consolidating the blocks would
   be better still, but it moves colours on every page and needs eyes on the result.

   token            effective value          edit this line
   ---------------  -----------------------  ------------------------
   --accent         #eeb351                  style.css:5351  (of 3)
   --accent2        #f4cd84                  style.css:5351  (of 3)
   --bg             #151a2e                  style.css:7851  (of 4)
   --bg2            #1a2036                  style.css:7851  (of 4)
   --card           #1c2139                  style.css:7851  (of 4)
   --card2          #242b46                  style.css:7851  (of 4)
   --gold           #eeb351                  style.css:5351  (of 3)
   --gold2          #f4cd84                  style.css:5351  (of 4)
   --ink            #eef1f7                  style.css:5351  (of 2)
   --line           rgba(140,160,210,.09)    style.css:7851  (of 3)
   --line2          rgba(140,160,210,.16)    style.css:7851  (of 3)
   --ln             rgba(140,160,210,.10)    style.css:7851  (of 4)
   --ln2            rgba(140,160,210,.18)    style.css:7851  (of 4)
   --p              #eeb351                  style.css:5351  (of 3)
   --p2             #f4cd84                  style.css:5351  (of 3)
   --p4             #fde8b0                  style.css:5351  (of 2)
   --pg             rgba(182,170,146,.35)    style.css:2231  (of 2)
   --rr-css-build   39                       style.css:7954  (of 3)
   --rust-bg        #151a2e                  style.css:7851  (of 3)
   --rust-bg2       #1a2036                  style.css:7851  (of 3)
   --rust-card      #1c2139                  style.css:7851  (of 3)
   --rust-card2     #242b46                  style.css:7851  (of 3)
   --rust-ln        rgba(140,160,210,.10)    style.css:7851  (of 3)
   --rust-ln2       rgba(140,160,210,.18)    style.css:7851  (of 3)
   --topstrip-h     0px                      style.css:5770  (of 3)
   --vio-line       rgba(238,179,81,.30)     style.css:5351  (of 2)
   --vio-soft       rgba(238,179,81,.13)     style.css:5351  (of 2)
   ═══════════════════════════════════════════════════════════════════════ */

/* =============================================================
   CHAMPIONS — Premium Rust Arena
   Single clean stylesheet, no duplicates
   ============================================================= */

/* --- Google Fonts loaded via <head> in partials.php ---
   Bebas Neue (display), Rajdhani (UI), Share Tech Mono (code) */

/* All top-level :root declarations, merged into one block.

   They were spread across 11 blocks and 27 tokens were declared more than once with different
   values, so the file disagreed with itself and only the last declaration counted. Editing an
   earlier one did nothing — a trap that has cost time more than once, including a fix in this
   codebase written against a token that turned out to be defined further down.

   Every value below is the one that was ALREADY winning. Verified token by token against a CSS
   resolver before and after the merge: all 66 resolve identically, so this changes nothing the
   browser computes — it just makes the file say what it already meant.

   The single :root inside a media query is left where it is; that one is conditional. */
:root{
  --bg: #151a2e;
  --bg2: #1a2036;
  --card: #1c2139;
  --card2: #242b46;
  --p: #eeb351;
  --p2: #f4cd84;
  --p3: #f4cd84;
  --p4: #fde8b0;
  --pg: rgba(182,170,146,.35);
  --pg2: rgba(182,170,146,.15);
  --gold: #eeb351;
  --gold2: #f4cd84;
  --red: #ef4444;
  --red2: #fca5a5;
  --grn: #22c55e;
  --grn2: #f4cd84;
  --t1: #e8eaf0;
  --t2: #a7adbe;
  --t3: #6b7283;
  --ln: rgba(140,160,210,.10);
  --ln2: rgba(140,160,210,.18);
  --fd: 'Bebas Neue', system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans', 'Helvetica Neue', Arial, sans-serif;
  --fu: 'Rajdhani', system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans', 'Helvetica Neue', Arial, sans-serif;
  --fm: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Segoe UI Mono', Menlo, Consolas, 'Noto Sans Mono', monospace;
  --font-display: 'Bebas Neue', sans-serif;
  --font-ui: 'Rajdhani', sans-serif;
  --font-mono: 'Share Tech Mono', monospace;
  --hp-green: #22c55e;
  --hp-yellow: #eab308;
  --hp-orange: #f97316;
  --hp-red: #ef4444;
  --line: rgba(140,160,210,.09);
  --line2: rgba(140,160,210,.16);
  --green2: #f4cd84;
  --pos: #4ade80;
  --pglow: rgba(182,170,146,.32);
  --pglow2: rgba(182,170,146,.15);
  --r: 18px;
  --r2: 12px;
  --topbar-h: 64px;
  --ink: #eef1f7;
  --accent: #eeb351;
  --accent2: #f4cd84;
  --radius: 14px;
  --rust: #eeb351;
  --rust2: #f5c451;
  --rust3: #f4cd84;
  --steel: #353a47;
  --steel2: #23272f;
  --rust-bg: #151a2e;
  --rust-bg2: #1a2036;
  --rust-card: #1c2139;
  --rust-card2: #242b46;
  --rust-ln: rgba(140,160,210,.10);
  --rust-ln2: rgba(140,160,210,.18);
  --topstrip-h: 0px;
  --vio: #eeb351;
  --vio2: #f5c451;
  --vio3: #f4cd84;
  --vio-soft: rgba(238,179,81,.13);
  --vio-line: rgba(238,179,81,.30);
  --rr-css-build: 39;
  --game-champion: #f6c85a;
  --game-rustpot: #ef4444;
  --game-rustflip: #f0912e;
  --game-quickgame: #f6c85a;
}

/* ── reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ── No text selection + no image/element dragging site-wide ──────────────────
   Photos can't be dragged off the page and text can't be highlighted/copied with
   the mouse. Inputs, textareas and editable fields stay fully selectable so typing
   and editing still work (the deposit address etc. has a Copy button). */
html, body { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; }
input, textarea, select, [contenteditable="true"], [contenteditable="true"] * {
  -webkit-user-select: text !important; -moz-user-select: text !important; -ms-user-select: text !important; user-select: text !important;
}
img, svg, picture, video, canvas, a, .skin-img, .ss-th, .cps-th {
  -webkit-user-drag: none; -khtml-user-drag: none; -moz-user-drag: none; -o-user-drag: none; user-drag: none;
}
img { -webkit-touch-callout: none; pointer-events: auto; }
html { scroll-behavior: smooth; }
a    { text-decoration: none; color: inherit; }
button, input, select { font: inherit; border: 0; background: transparent; color: inherit; cursor: pointer; }
img  { display: block; max-width: 100%; }

body {
  font-family: var(--fu);
  font-size: 16px;
  font-weight: 500;
  color: var(--t1);
  background:
    radial-gradient(ellipse at 20% 0%,   rgba(182,170,146,.20) 0%, transparent 45%),
    radial-gradient(ellipse at 80% 0%,   rgba(196,184,158,.12)  0%, transparent 42%),
    radial-gradient(ellipse at 50% 100%, rgba(122,45,18,.22)  0%, transparent 52%),
    linear-gradient(180deg, #0a0c15 0%, #0a0c15 100%);
  min-height: 100vh;
  overflow-x: hidden;
}

/* ── decorative overlays ── */
.grain {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: .055;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");
}
.scanlines {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: .35;
  background: repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.04) 2px,rgba(0,0,0,.04) 4px);
}

/* ═══════════════════════════════════════════
   TOP BAR
═══════════════════════════════════════════ */
.topbar {
  position: sticky; top: 0; z-index: 1000;
  background: rgba(6,6,26,.93);
  border-bottom: 1px solid var(--ln);
  backdrop-filter: blur(22px);
}
.topbar-inner {
  width: min(1340px,98vw); margin: auto;
  min-height: 68px;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);   /* equal side columns → nav sits dead-centre */
  align-items: center;
  gap: 12px;
}

/* brand */
.brand { display: flex; align-items: center; gap: 10px; justify-self: start; }
.brand-icon {
  width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0;
  background: linear-gradient(135deg, var(--p2), var(--p));
  display: grid; place-items: center;
  font-size: 18px;
  box-shadow: 0 0 20px var(--pg);
}
.brand b {
  display: block; font-family: var(--fd);
  font-size: 22px; letter-spacing: .08em; color: var(--p4);
}
.brand small {
  display: block; font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--t3);
}

/* nav */
.nav {
  justify-self: center;
  display: flex; gap: 3px;
  padding: 4px;
  border: 1px solid var(--ln);
  border-radius: 999px;
  background: rgba(182,170,146,.06);
  max-width: 100%;
  overflow-x: auto;
  scrollbar-width: none;
}
.nav::-webkit-scrollbar { display: none; }
.nav a {
  min-height: 32px; padding: 0 9px;
  border-radius: 999px;
  display: flex; align-items: center; gap: 4px;
  font-size: 12px; font-weight: 600; color: var(--t3);
  white-space: nowrap;
  transition: background .16s, color .16s;
}
@media (min-width: 1100px) and (max-width: 1520px){
  .nav a{ padding: 0 6px; font-size: 11px; gap: 3px; }
  .nav{ gap: 1px; }
}
.nav a:hover   { background: rgba(238,179,81,.1); color: var(--t1); }
.nav a.active  { background: rgba(238,179,81,.16); color: #ffe0a0; border: 1px solid rgba(238,179,81,.34); box-shadow: inset 0 0 12px rgba(238,179,81,.08); }
.daily-free-nav { color: var(--gold) !important; }
.daily-free-nav.claimed { opacity: .4 !important; pointer-events: none !important; }

/* account */
.account { justify-self: end; display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.balance-pill {
  padding: 0 14px; min-height: 34px;
  border-radius: 999px;
  border: 1px solid rgba(238,179,81,.28);
  background: rgba(238,179,81,.09);
  color: var(--gold2); font-weight: 700; font-size: 15px;
  display: inline-flex; align-items: center;
  white-space: nowrap;
  transition: border-color .2s;
}
.pill {
  padding: 0 14px; min-height: 34px; border-radius: 999px;
  border: 1px solid var(--ln);
  background: rgba(182,170,146,.08);
  font-size: 13px; font-weight: 600;
  display: inline-flex; align-items: center;
  transition: background .16s;
}
.pill:hover { background: rgba(182,170,146,.22); }
.pill.hot   { background: linear-gradient(135deg,var(--p2),var(--p)); border: 0; color: #fff; font-weight: 700; }

/* mobile toggle */
.mobile-menu {
  display: none; flex-direction: column; gap: 5px;
  width: 38px; height: 38px; border-radius: 10px;
  border: 1px solid var(--ln); background: rgba(182,170,146,.08);
  align-items: center; justify-content: center;
}
.mobile-menu span { display: block; width: 17px; height: 2px; background: var(--t2); border-radius: 2px; transition: .2s; }

/* ═══════════════════════════════════════════
   PAGE LAYOUT
═══════════════════════════════════════════ */
.page {
  width: min(1300px,96vw); margin: auto;
  padding: 28px 0 80px;
  position: relative; z-index: 1;
}
.eyebrow {
  display: inline-block; color: var(--p3);
  text-transform: uppercase; letter-spacing: .18em;
  font-size: 10px; font-weight: 700; margin-bottom: 8px;
}

/* ═══════════════════════════════════════════
   ARENA HEADER
═══════════════════════════════════════════ */
.arena-header {
  display: flex; justify-content: space-between;
  align-items: flex-end; margin-bottom: 22px;
  gap: 20px; flex-wrap: wrap;
}
.arena-header h1 {
  font-family: var(--fd);
  font-size: clamp(46px,7vw,88px);
  letter-spacing: .04em; line-height: .92;
  background: linear-gradient(135deg,#fff 30%,var(--p3));
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  background-clip: text;
}
.hero-pool-display {
  text-align: right;
  border: 1px solid rgba(238,179,81,.22);
  border-radius: var(--r);
  background: rgba(238,179,81,.06);
  padding: 14px 18px; min-width: 170px;
}
.hero-pool-display > span {
  display: block; font-size: 10px;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--t3); margin-bottom: 4px;
}
.hero-pool-display strong {
  font-family: var(--fd);
  font-size: clamp(30px,4vw,50px);
  color: var(--gold2); letter-spacing: .04em;
}

/* ═══════════════════════════════════════════
   ARENA SHELL
═══════════════════════════════════════════ */
.arena {
  position: relative;
  border-radius: 26px;
  border: 1px solid rgba(182,170,146,.28);
  background:
    radial-gradient(72% 52% at 50% 30%, rgba(170,142,255,.14), transparent 62%),
    radial-gradient(circle at 50% 40%, rgba(42,15,82,.98), rgba(7,7,18,1) 74%),
    linear-gradient(180deg, transparent 48%, rgba(3,3,10,.5));
  box-shadow:
    0 0 0 1px rgba(182,170,146,.08),
    0 40px 100px rgba(0,0,0,.68),
    inset 0 0 130px rgba(4,2,14,.55),
    inset 0 0 80px rgba(182,170,146,.04);
  padding: 18px;
  overflow: hidden;
  transition: box-shadow .2s;
}
.arena.arena-flash {
  box-shadow:
    0 0 0 2px rgba(249,115,22,.5),
    0 40px 100px rgba(0,0,0,.68),
    inset 0 0 120px rgba(249,115,22,.10);
}
.arena-grid {
  position: relative; z-index: 2;
  display: grid;
  grid-template-columns: minmax(210px,1fr) minmax(170px,280px) minmax(210px,1fr);
  gap: 14px; align-items: start;
}

/* ═══════════════════════════════════════════
   PLAYER PANELS
═══════════════════════════════════════════ */
.player-panel {
  border-radius: var(--r); border: 1px solid var(--ln);
  background: linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  padding: 18px; min-height: 540px;
  display: flex; flex-direction: column; gap: 14px;
  position: relative; overflow: hidden;
  transition: border-color .3s, box-shadow .3s, transform .4s, opacity .4s, filter .4s;
}
.player-panel::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg,transparent,var(--ln2),transparent);
}
.left-panel  { border-color: rgba(182,170,146,.24); }
.right-panel { border-color: rgba(239,68,68,.18); }
.right-panel::before { background: linear-gradient(90deg,transparent,rgba(239,68,68,.35),transparent); }

/* seat badge */
.seat-badge { display: flex; align-items: center; gap: 10px; }
.seat-icon  { font-size: 20px; }
.seat-badge b     { display: block; font-size: 15px; font-weight: 700; color: var(--p3); }
.seat-badge small { display: block; font-size: 10px; color: var(--t3); text-transform: uppercase; letter-spacing: .1em; }
.challenger-badge .seat-badge b { color: var(--red2); }

/* player name */
.player-name {
  font-family: var(--fd);
  font-size: clamp(20px,2.1vw,32px);
  letter-spacing: .04em; line-height: 1.1; color: var(--t1);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;
}

/* ── Rust character ── */
.char-display {
  min-height: 170px; flex: 1;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 8px;
  border: 1px solid var(--ln); border-radius: var(--r2);
  background: rgba(0,0,0,.22); padding: 14px;
  position: relative; overflow: hidden;
}
.empty-seat { text-align: center; padding: 16px; }
.empty-icon { font-size: 34px; opacity: .25; margin-bottom: 6px; }
.empty-seat b    { display: block; font-size: 15px; color: var(--t2); }
.empty-seat span { display: block; font-size: 12px; color: var(--t3); margin-top: 3px; }

.rust-char-wrap {
  display: flex; flex-direction: column; align-items: center;
  transform-origin: 50% 85%;
  transition: transform .22s ease-out;
}
.rust-char-wrap svg {
  width: 96px; height: 134px;
  filter: drop-shadow(0 10px 22px rgba(0,0,0,.55));
  transform-origin: 50% 85%;
}
.rust-char-wrap.char-hit svg {
  animation: charHit .44s ease-out forwards;
  filter: drop-shadow(0 0 16px rgba(239,68,68,.9)) saturate(1.9) hue-rotate(-16deg);
}
@keyframes charHit {
  0%,100% { transform: translate(0,0) rotate(0) scale(1) }
  14%     { transform: translate(-9px,-3px) rotate(-5deg) scale(.97) }
  30%     { transform: translate(7px,2px) rotate(4deg) scale(1.03) }
  46%     { transform: translate(-5px,0) rotate(-2deg) }
  60%     { transform: translate(4px,1px) rotate(1deg) }
}
.rust-char-name {
  font-family: var(--fm); font-size: 11px; font-weight: 700; color: var(--p3);
  letter-spacing: .05em; text-align: center;
  max-width: 104px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  margin-top: 4px;
}

/* ── Timer ── */
.timer-section { display: flex; justify-content: center; }
.timer-wrap    { position: relative; width: 130px; height: 130px; }
.timer-svg     { width: 100%; height: 100%; transform: rotate(-90deg); }
.timer-track   { fill: none; stroke: rgba(182,170,146,.14); stroke-width: 10; }
.timer-prog    {
  fill: none; stroke: var(--p2); stroke-width: 10; stroke-linecap: round;
  stroke-dasharray: 327;                 /* = 2·π·r (r=52) so strokeDashoffset reveals progress */
  transition: stroke-dashoffset .45s linear, stroke .3s;
  filter: drop-shadow(0 0 7px var(--pg));
}
.timer-inner   { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.timer-inner strong { font-family: var(--fd); font-size: 42px; letter-spacing: .02em; color: var(--p3); line-height: 1; }
.timer-inner small  { font-size: 10px; color: var(--t3); letter-spacing: .12em; text-transform: uppercase; }

/* ── Stats ── */
.player-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.stat-box {
  border: 1px solid var(--ln); border-radius: var(--r2);
  background: rgba(0,0,0,.22); padding: 10px 12px;
}
.stat-box span { display: block; font-size: 10px; color: var(--t3); text-transform: uppercase; letter-spacing: .1em; }
.stat-box b    { display: block; font-size: 18px; font-weight: 700; color: var(--gold2); margin-top: 2px; }

/* ── Health bar ── */
.health-section { display: flex; flex-direction: column; gap: 5px; }
.health-label   { display: flex; justify-content: space-between; font-size: 11px; font-weight: 700; color: var(--t3); text-transform: uppercase; letter-spacing: .1em; }
.health-label b { color: var(--grn2); }
.health-track   {
  height: 13px; border-radius: 999px;
  background: rgba(0,0,0,.45);
  border: 1px solid rgba(34,197,94,.18);
  overflow: hidden; position: relative;
}
.health-fill {
  height: 100%; border-radius: 999px; width: 100%;
  background: linear-gradient(90deg, var(--hp-green), rgba(34,197,94,.75));
  transition: width .28s ease, background .5s ease, box-shadow .5s ease;
  box-shadow: 0 0 12px rgba(34,197,94,.38);
  position: relative;
  will-change: width, background;
}
.health-fill::after {
  content: ""; position: absolute; top: 2px; left: 4px; right: 4px; height: 3px;
  border-radius: 999px; background: rgba(255,255,255,.22);
}
.health-fill-right {
  /* Color managed dynamically by JS hpColor() */
}

/* ── HP ring around the avatar — the depleting coloured arc (replaces the bar) ── */
.hp-ring-fill { transition: stroke-dashoffset .45s cubic-bezier(.4,0,.2,1); stroke: #f5a623; }
#leftAvatarDisplay  .hp-ring-fill { stroke: #f5a623; filter: drop-shadow(0 0 5px rgba(245,166,35,.5)); }
#rightAvatarDisplay .hp-ring-fill { stroke: #38bdf8; filter: drop-shadow(0 0 5px rgba(56,189,248,.5)); }
.low-hp .hp-ring-fill { stroke: #ef4444 !important; filter: drop-shadow(0 0 6px rgba(239,68,68,.6)) !important; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hp-ring-fill { transition: none; } }

/* ── Attack: the logo briefly disappears and a Rust weapon comes out to fire ── */
.pfp-pic { transition: opacity .14s ease; }
.char-display.attacking .pfp-pic { opacity: .55; }   /* keep the fighter visible holding the weapon (was .12 → looked like a gun floating with no man) */
.atk-weapon {
  position: absolute; left: 57%; top: 44%; width: 138px; opacity: 0; z-index: 6;
  pointer-events: none;
  filter: drop-shadow(0 7px 16px rgba(0,0,0,.7)) drop-shadow(0 0 12px rgba(245,166,35,.28));
  transform: translate(-50%,-50%) scale(.4);
  animation: atkWpn 1.5s cubic-bezier(.2,1.5,.3,1) forwards;
}
.atk-weapon.flip { left: 43%; animation: atkWpnFlip 1.5s cubic-bezier(.2,1.5,.3,1) forwards; }
@keyframes atkWpn {
  0%  { opacity:0; transform:translate(-50%,-50%) scale(.5) rotate(-3deg); }
  7%  { opacity:1; transform:translate(-50%,-50%) scale(.92) rotate(-1deg); }   /* gun snaps into view FAST — visible before the bullet flies */
  22% { opacity:1; transform:translate(-50%,-50%) scale(1.18) rotate(2deg); }   /* punch in */
  38% { transform:translate(-50%,-50%) scale(1) rotate(0); }
  52% { transform:translate(-60%,-50%) scale(1.05) rotate(-2deg); }             /* recoil kick */
  66% { transform:translate(-50%,-50%) scale(1) rotate(0); }
  90% { opacity:1; }
  100%{ opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes atkWpnFlip {
  0%  { opacity:0; transform:translate(-50%,-50%) scaleX(-1) scale(.5) rotate(3deg); }
  7%  { opacity:1; transform:translate(-50%,-50%) scaleX(-1) scale(.92) rotate(1deg); }
  22% { opacity:1; transform:translate(-50%,-50%) scaleX(-1) scale(1.18) rotate(-2deg); }
  38% { transform:translate(-50%,-50%) scaleX(-1) scale(1) rotate(0); }
  52% { transform:translate(-40%,-50%) scaleX(-1) scale(1.05) rotate(2deg); }
  66% { transform:translate(-50%,-50%) scaleX(-1) scale(1) rotate(0); }
  90% { opacity:1; }
  100%{ opacity:0; transform:translate(-50%,-50%) scaleX(-1) scale(.92); }
}
/* The weapon-fire animation runs FULLY for EVERYONE — including players with the OS "reduce motion"
   setting on. In a duel the weapon that appears on a HIT is core game feedback, not decoration, and it
   must look the same for every member with zero per-user setup. (This block used to hide the weapon
   (opacity:0) or play a reduced fade under reduce-motion, which is exactly why some players saw the
   shield/door on misses but never a weapon on hits.) */
/* ── Miss: the defender raises a metallic shield to block ── */
.block-shield {
  position: absolute; left: 50%; top: 46%; width: 54px; opacity: 0; z-index: 7;
  pointer-events: none; filter: drop-shadow(0 4px 10px rgba(0,0,0,.55));
  transform: translate(-50%,-50%) scale(.94);
  transition: transform .09s ease-out, opacity .07s ease-out;   /* snap in ONCE — no bounce/overshoot, no rotate swing */
}
.block-shield.in { opacity: 1; transform: translate(-50%,-50%) scale(1); }
.block-shield::after {
  content: ""; position: absolute; inset: -6px; border-radius: 50%;
  box-shadow: 0 0 18px 4px rgba(203,213,225,.4); opacity: 0; animation: shieldSpark .55s ease;
}
@keyframes shieldSpark { 0%{ opacity:.85; transform:scale(.55);} 100%{ opacity:0; transform:scale(1.3);} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .atk-weapon, .block-shield { transition: none; } }

/* ── HP kit: a fighter heals, health rises (green med-cross + "+N HP") ── */
.char-display.healing { box-shadow: inset 0 0 30px rgba(55,214,122,.35), 0 0 22px rgba(55,214,122,.3); }

/* #8 — winner crown: bounces onto the champion's profile pic with a one-shot golden glow, then is
   removed at the next duel reset. Sits on the top of the avatar (the display is overflow:hidden, so
   a scale-bounce reads cleaner than a drop from above). Total ~1.6s → done before the next game. */
.champ-crown{
  position:absolute; top:4.5%; left:50%; width:42%; max-width:90px;
  transform:translate(-50%,0) scale(0); transform-origin:center bottom;
  z-index:7; pointer-events:none;
  filter:drop-shadow(0 3px 6px rgba(0,0,0,.55)) drop-shadow(0 0 9px rgba(255,205,90,.55));
  animation:champCrownIn .42s cubic-bezier(.34,1.56,.64,1) forwards;
}
.champ-crown svg{ width:100%; height:auto; display:block; }
.champ-crown::before{
  content:""; position:absolute; inset:-34%; border-radius:50%;
  background:radial-gradient(circle, rgba(255,210,90,.55), rgba(255,210,90,0) 66%);
  opacity:0; z-index:-1; animation:champCrownGlow 1.1s ease-out .06s 1;
}
@keyframes champCrownIn{
  0%{   transform:translate(-50%,-22%) scale(0)    rotate(-14deg); opacity:0; }
  60%{  transform:translate(-50%,3%)   scale(1.12) rotate(4deg);  opacity:1; }
  82%{  transform:translate(-50%,0)    scale(.95)  rotate(-2deg); opacity:1; }
  100%{ transform:translate(-50%,0)    scale(1)    rotate(0);     opacity:1; }
}
@keyframes champCrownGlow{ 0%{ opacity:0; transform:scale(.6); } 40%{ opacity:.9; } 100%{ opacity:0; transform:scale(1.35); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .champ-crown{ animation-duration:.01s; } .champ-crown::before{ animation:none; } }
.heal-kit {
  position: absolute; left: 50%; top: 30%; width: 38px; z-index: 7; pointer-events: none;
  filter: drop-shadow(0 0 8px rgba(55,214,122,.6)); transform: translate(-50%,-50%) scale(.4); opacity: 0;
  animation: healKitPop 1.9s ease forwards;
}
@keyframes healKitPop {
  0%{ opacity:0; transform:translate(-50%,-50%) scale(.4);} 16%{ opacity:1; transform:translate(-50%,-50%) scale(1.12);}
  30%{ transform:translate(-50%,-50%) scale(1);} 78%{ opacity:1;} 100%{ opacity:0; transform:translate(-50%,-50%) scale(.92);}
}
.heal-num {
  position: absolute; left: 50%; top: 24%; z-index: 7; pointer-events: none;
  color: #37d67a; font-weight: 800; font-family: var(--fd, sans-serif); font-size: 18px;
  text-shadow: 0 2px 6px rgba(0,0,0,.6); opacity: 0; transform: translate(-50%,0);
  animation: healNum 1.9s ease forwards;
}
@keyframes healNum {
  0%{ opacity:0; transform:translate(-50%,0) scale(.8);} 20%{ opacity:1; transform:translate(-50%,-10px) scale(1);}
  78%{ opacity:1; transform:translate(-50%,-24px);} 100%{ opacity:0; transform:translate(-50%,-32px);}
}
/* The heal medkit + heal number run their full animation under reduce-motion too. Like the weapon
   on a HIT, the medkit on a HEAL is core game feedback (a fighter just restored HP), not decoration —
   the old rule forced opacity:0 and hid every heal for reduce-motion players. Both cues are one small
   GPU-composited element, so showing them costs nothing while making the fight readable for everyone. */

/* ── Real licensed weapon / skin photos: bigger + bolder than the vector art ── */
.atk-weapon.real { width: 192px; filter: drop-shadow(0 9px 20px rgba(0,0,0,.78)); }
/* On phones the fighter card is far smaller (~130-156px wide), so the desktop 192px weapon overflowed it
   and got clipped by the card's overflow:hidden — the weapon looked like it shot off the edge and vanished
   ("mobilde silahlar arkaplana kaçıyor"). Shrink it and pull it toward centre so it sits inside the card. */
@media (max-width:720px){
  .atk-weapon      { width: 104px; left: 53%; }
  .atk-weapon.flip { left: 47%; }
  .atk-weapon.real { width: 120px; }
}
.wpn-real    { width: 100%; height: auto; display: block; }
/* The revolver sprite has a heavy down-left grip → its whole-gun axis sits ~22° low,
   which (after the right-fighter flip) reads as "pointing at the ground". Rotating the
   IMAGE up neutralises it; because the parent flips on scaleX(-1) for the right fighter,
   this one rotation lands the gun ~horizontal for BOTH fighters. */
.wpn-revolver,
.atk-weapon img[src*="revolver"] { transform: rotate(-18deg); transform-origin: 50% 50%; }   /* barrel forward-up, NOT down (works for both fighters via the .flip mirror) */
.block-shield.real { width: 104px; top: 50%; }       /* covers the avatar — the hit zone */
.block-shield.real.bs-l { left: 66%; }                /* left fighter blocks a shot coming from the RIGHT */
.block-shield.real.bs-r { left: 34%; }                /* right fighter blocks a shot coming from the LEFT */
.shield-real { width: 100%; height: auto; display: block; filter: drop-shadow(0 5px 14px rgba(0,0,0,.65)); }
.block-shield.clink .shield-real { animation: shieldHit .36s ease; }   /* bright clink when a missed shot strikes the shield */
@keyframes shieldHit { 0%{ filter: brightness(2.3) drop-shadow(0 0 18px rgba(255,255,255,.95)); } 100%{ filter: drop-shadow(0 5px 14px rgba(0,0,0,.65)); } }
.heal-kit.real { width: 98px; top: 40%; }
.medkit-real { width: 100%; height: auto; display: block; }

/* ── Classic AWP scope reticle over the targeted fighter (fires with the sniper) ── */
.awp-scope-tgt {
  position: absolute; inset: 0; z-index: 8; pointer-events: none; opacity: 0;
  background: radial-gradient(circle at 50% 50%, rgba(0,0,0,0) 46%, rgba(0,0,0,.5) 72%, rgba(0,0,0,.9) 100%);
  animation: awpScope 1.4s ease forwards;
}
.awp-scope-tgt::before, .awp-scope-tgt::after { content:""; position:absolute; background: rgba(0,0,0,.78); }
.awp-scope-tgt::before { left:6%; right:6%; top:50%; height:1.5px; transform: translateY(-50%); }
.awp-scope-tgt::after  { top:6%; bottom:6%; left:50%; width:1.5px; transform: translateX(-50%); }
.awp-ring {
  position:absolute; left:50%; top:50%; width:60%; padding-bottom:60%; height:0;
  transform: translate(-50%,-50%); border:1.5px solid rgba(0,0,0,.72); border-radius:50%;
  box-shadow: 0 0 0 1.5px rgba(255,255,255,.14), inset 0 0 14px rgba(0,0,0,.4);
}
.awp-ring::after {
  content:""; position:absolute; left:50%; top:50%; width:7px; height:7px; transform: translate(-50%,-50%);
  border:1.2px solid rgba(255,56,56,.92); border-radius:50%; box-shadow:0 0 5px rgba(255,56,56,.6);
}
@keyframes awpScope { 0%{opacity:0;} 7%{opacity:1;} 86%{opacity:1;} 100%{opacity:0;} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .awp-scope-tgt { animation: none; opacity: 0; } }

/* ── Panel states ── */
.player-panel.winner         { border-color: rgba(238,179,81,.6) !important; box-shadow: 0 0 0 1px rgba(238,179,81,.28), 0 0 56px rgba(238,179,81,.14) !important; }
.player-panel.loser          { opacity: .46; filter: grayscale(.45) brightness(.85); }
.player-panel.winner-showcase{ transform: translateY(-6px); }
.player-panel.damage-pulse   { animation: dmgPulse .44s ease; }
@keyframes dmgPulse {
  0%,100% { box-shadow: inset 0 0 0 0 rgba(239,68,68,0); }
  30%,70% { box-shadow: inset 0 0 0 3px rgba(239,68,68,.9), 0 0 40px rgba(239,68,68,.42); }
}
.player-panel.move-left { animation: moveLeft 1.1s cubic-bezier(.4,0,.2,1) forwards; }
@keyframes moveLeft {
  0%   { transform: translateX(0) scale(1) }
  45%  { transform: translateX(-26%) scale(1.04) }
  100% { transform: translateX(0) scale(1) }
}

/* ═══════════════════════════════════════════
   CONTROL PANEL (centre)
═══════════════════════════════════════════ */
.control-panel {
  border-radius: var(--r); border: 1px solid var(--ln);
  background: linear-gradient(180deg,rgba(182,170,146,.09),rgba(0,0,0,.32));
  padding: 16px; display: flex; flex-direction: column; gap: 11px;
  align-self: start; position: sticky; top: 80px;
}
.prize-display {
  text-align: center;
  border: 1px solid rgba(238,179,81,.2); border-radius: var(--r2);
  background: rgba(238,179,81,.06); padding: 12px 14px;
}
.prize-label  { display: block; font-size: 10px; letter-spacing: .16em; color: var(--t3); text-transform: uppercase; margin-bottom: 5px; }
.prize-amount {
  font-family: var(--fd);
  font-size: clamp(32px,4vw,52px);
  color: var(--gold2); letter-spacing: .04em; word-break: break-all; display: block;
  line-height: 1.18; padding-top: .04em;
}
.battle-status {
  min-height: 40px; border: 1px solid var(--ln); border-radius: var(--r2);
  background: rgba(0,0,0,.22); display: grid; place-items: center; text-align: center;
  font-size: 12px; font-weight: 600; color: var(--t3); padding: 8px;
}
.battle-status.hot { border-color: rgba(182,170,146,.38); color: var(--p3); background: rgba(182,170,146,.08); }
.battle-status:empty{ display:none; }   /* during a duel the status text is cleared — collapse the box instead of leaving an empty rounded rectangle above the timer */

/* stake */
.stake-box {
  border: 1px solid var(--ln); border-radius: var(--r2);
  background: rgba(0,0,0,.22); padding: 11px;
  display: flex; flex-direction: column; gap: 8px;
}
.stake-box label  { font-size: 10px; color: var(--t3); text-transform: uppercase; letter-spacing: .12em; }
.stake-input-wrap { position: relative; }
.stake-prefix     { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--gold2); font-weight: 700; font-size: 15px; }
.stake-input {
  width: 100%; min-height: 40px;
  border: 1px solid var(--ln); border-radius: 10px;
  background: rgba(0,0,0,.3); color: var(--t1);
  padding: 0 11px 0 26px; font-size: 16px; font-weight: 700;
  outline: none; transition: border-color .2s;
  -moz-appearance: textfield;
}
.stake-input:focus            { border-color: var(--p); }
.stake-input::-webkit-inner-spin-button,
.stake-input::-webkit-outer-spin-button { -webkit-appearance: none; }
.quick-amounts { display: flex; gap: 5px; flex-wrap: wrap; }
.qa {
  flex: 1; min-width: 40px; min-height: 28px;
  border-radius: 7px; border: 1px solid var(--ln);
  background: rgba(182,170,146,.1); font-size: 12px; font-weight: 700; color: var(--p3);
  transition: background .16s;
}
.qa:hover { background: rgba(182,170,146,.26); }

/* buttons */
.btn-primary {
  width: 100%; min-height: 46px; border-radius: var(--r2);
  background: linear-gradient(135deg,var(--p2),var(--p));
  color: #fff; font-weight: 700; font-size: 15px; border: 0;
  box-shadow: 0 4px 18px var(--pg);
  transition: transform .16s, filter .16s, opacity .18s;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.btn-primary:hover:not(:disabled) { transform: translateY(-2px); filter: brightness(1.12); }
.btn-primary:disabled { opacity: .44; cursor: not-allowed; }
/* Champion Join button — MORE prominent: larger, brighter, uppercase, with a gentle pulse once a skin is
   picked (the button is enabled) so it clearly invites the click. */
#joinBtn{ min-height:54px !important; font-size:17px !important; font-weight:900 !important; letter-spacing:.6px !important; text-transform:uppercase !important; border-radius:14px !important; box-shadow:0 6px 24px var(--pg), inset 0 0 0 1px rgba(255,255,255,.08) !important; }
#joinBtn:not(:disabled){ background:linear-gradient(135deg,#ffd873,#f3a92f) !important; color:#231604 !important; animation:joinPulse 1.8s ease-in-out infinite; }
#joinBtn:not(:disabled):hover{ transform:translateY(-2px) !important; filter:brightness(1.08) !important; }
@keyframes joinPulse{ 0%,100%{ box-shadow:0 6px 24px var(--pg), inset 0 0 0 1px rgba(255,255,255,.1); } 50%{ box-shadow:0 8px 34px var(--pg), 0 0 24px -2px var(--accent,#f3b53f), inset 0 0 0 1px rgba(255,255,255,.16); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ #joinBtn:not(:disabled){ animation:none; } }
.btn-ghost {
  width: 100%; min-height: 42px; border-radius: var(--r2);
  background: rgba(255,255,255,.04); border: 1px solid var(--ln);
  color: var(--t2); font-weight: 600; font-size: 13px;
  transition: background .16s;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.btn-ghost:hover:not(:disabled) { background: rgba(182,170,146,.14); }
.btn-ghost:disabled { opacity: .44; cursor: not-allowed; }
.btn-verify {
  width: 100%; min-height: 36px; border-radius: 10px;
  background: rgba(0,0,0,.25); border: 1px solid rgba(182,170,146,.28);
  color: var(--p3); font-weight: 600; font-size: 12px;
  transition: background .16s;
  display: flex; align-items: center; justify-content: center; gap: 5px;
}
.btn-verify:hover { background: rgba(182,170,146,.12); }
.btn-sm { min-height: 32px; font-size: 12px; border-radius: 8px; }

/* verify panel */
.verify-panel { display: none; flex-direction: column; gap: 10px; border: 1px solid rgba(182,170,146,.22); border-radius: var(--r2); background: rgba(0,0,0,.38); padding: 14px; }
.verify-panel.open { display: flex; }
.vp-title   { font-size: 14px; font-weight: 700; color: var(--p3); }
.vp-desc    { font-size: 11px; color: var(--t3); line-height: 1.5; }
.vp-steps   { display: flex; flex-direction: column; gap: 9px; }
.vp-step    { display: flex; align-items: flex-start; gap: 9px; }
.vp-step-num { width: 22px; height: 22px; border-radius: 50%; background: var(--p); color: #fff; font-size: 11px; font-weight: 700; display: grid; place-items: center; flex-shrink: 0; margin-top: 2px; }
.vp-step-body { flex: 1; font-size: 11px; color: var(--t2); line-height: 1.5; }
.vp-step-body b { color: var(--p3); }
.vp-step-body code { display: block; font-family: var(--fm); font-size: 9px; color: var(--gold2); background: rgba(0,0,0,.4); border: 1px solid var(--ln); border-radius: 6px; padding: 5px 7px; margin-top: 4px; word-break: break-all; white-space: pre-wrap; max-height: 52px; overflow-y: auto; }
.vp-result  { margin-top: 6px; padding: 7px 10px; border-radius: 7px; font-size: 12px; font-weight: 600; border: 1px solid rgba(255,255,255,.09); background: rgba(0,0,0,.22); color: var(--t3); }
.vp-champ   { border-color: rgba(182,170,146,.4); color: var(--p3); background: rgba(182,170,146,.08); }
.vp-chall   { border-color: rgba(238,179,81,.35); color: var(--gold2); background: rgba(238,179,81,.07); }
.vp-odds    { display: flex; flex-direction: column; gap: 4px; }
.vp-odds-bar { height: 16px; border-radius: 999px; overflow: hidden; display: flex; border: 1px solid var(--ln); }
.vp-odds-left  { height: 100%; background: linear-gradient(90deg,var(--p2),var(--p)); display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: #fff; min-width: 24px; transition: width .6s ease; }
.vp-odds-right { height: 100%; background: linear-gradient(90deg,#f97316,#ef4444); display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: #fff; min-width: 24px; transition: width .6s ease; }
.vp-odds-labels { display: flex; justify-content: space-between; font-size: 10px; color: var(--t3); }

.arena-msg { min-height: 18px; font-size: 12px; color: var(--p3); text-align: center; line-height: 1.4; }
.arena-msg.error { color: var(--red2); }

/* challenger wait */
.challenger-wait-zone {
  flex: 1; display: grid; place-items: center;
  border: 1px dashed rgba(182,170,146,.14); border-radius: var(--r2);
  background: rgba(0,0,0,.1); padding: 14px;
  text-align: center; color: var(--t3); font-size: 12px; line-height: 1.5;
}

/* ═══════════════════════════════════════════
   BATTLE FX OVERLAY
═══════════════════════════════════════════ */
.battle-fx {
  position: absolute; inset: 0; z-index: 10;
  pointer-events: none; overflow: hidden; border-radius: 24px;
}
.projectile, .impact-fx, .explosion-fx,
.hit-flash, .winner-banner, .weapon-display, .dmg-popup {
  position: absolute; opacity: 0; pointer-events: none;
}

/* bullet */
.bullet { width: 20px; height: 6px; border-radius: 999px; }
.bullet .bullet-trail { position: absolute; right: 100%; top: 50%; transform: translateY(-50%); height: 4px; width: 130px; border-radius: 999px; background: linear-gradient(90deg,transparent,rgba(255,220,100,.65)); }
.bullet .bullet-head  { position: absolute; inset: 0; border-radius: 999px; background: linear-gradient(90deg,#fffde7,#f4cd84,#eeb351); box-shadow: 0 0 16px rgba(238,179,81,.95); }

/* rocket */
.rocket { width: 54px; height: 14px; }
.rocket .rocket-flame { position: absolute; right: 100%; top: 50%; transform: translateY(-50%); width: 28px; height: 14px; background: radial-gradient(circle at right,#fff 0%,#f97316 30%,#ef4444 60%,transparent 100%); border-radius: 999px 0 0 999px; filter: blur(1px); }
.rocket .rocket-body  { position: absolute; inset: 0; background: linear-gradient(180deg,#d1d5db,#6b7280 50%,#374151); border-radius: 4px 8px 8px 4px; }
.rocket .rocket-tip   { position: absolute; right: -11px; top: 1px; border-top: 6px solid transparent; border-bottom: 6px solid transparent; border-left: 12px solid #ef4444; }

/* satchel */
.satchel { width: 40px; height: 32px; border-radius: 8px; background: linear-gradient(135deg,#92400e,#78350f); border: 2px solid rgba(255,200,100,.2); display: grid; place-items: center; }
.satchel span { width: 11px; height: 11px; border-radius: 50%; background: #ef4444; box-shadow: 0 0 8px rgba(239,68,68,.85); animation: satBlink .38s ease infinite; }
@keyframes satBlink { 0%,100%{opacity:1} 50%{opacity:.2} }

/* c4 */
.c4 { width: 44px; height: 28px; border-radius: 6px; background: linear-gradient(135deg,#1e3a5f,#1e3a8a); border: 2px solid rgba(59,130,246,.38); display: grid; place-items: center; }
.c4 b { font-family: var(--fm); font-size: 10px; font-weight: 900; color: #93c5fd; letter-spacing: .1em; }

/* impact rings */
.impact-fx { width: 80px; height: 80px; margin: -40px 0 0 -40px; z-index: 11; }
.impact-ring { position: absolute; inset: 0; border-radius: 50%; border: 3px solid rgba(238,179,81,.72); transform: scale(.1); opacity: 0; }
.impact-spark { position: absolute; width: 4px; height: 13px; border-radius: 999px; background: linear-gradient(180deg,#fff,#f97316); transform-origin: bottom center; top: 50%; left: 50%; margin: -6px 0 0 -2px; opacity: 0; }
.blood-splat { position: absolute; inset: 9px; border-radius: 50%; background: radial-gradient(circle,rgba(239,68,68,.82) 0%,rgba(239,68,68,.28) 55%,transparent 75%); transform: scale(0); opacity: 0; }
.impact-fx.pop .impact-ring.r1 { animation: rPop .52s ease-out forwards; }
.impact-fx.pop .impact-ring.r2 { animation: rPop .52s ease-out .08s forwards; }
.impact-fx.pop .impact-ring.r3 { animation: rPop .52s ease-out .16s forwards; }
.impact-fx.pop .impact-spark   { animation: sFly .56s ease-out forwards; }
.impact-fx.pop .blood-splat    { animation: bPop .42s ease-out forwards; }
@keyframes rPop { 0%{transform:scale(.1);opacity:.95} 60%{opacity:.5} 100%{transform:scale(2.6);opacity:0} }
@keyframes sFly { 0%{opacity:1;transform:rotate(var(--a,0deg)) translateY(-6px) scale(1)} 100%{opacity:0;transform:rotate(var(--a,0deg)) translateY(-38px) scale(.25)} }
@keyframes bPop { 0%{transform:scale(0);opacity:.9} 55%{transform:scale(1.4);opacity:.55} 100%{transform:scale(1.7);opacity:0} }

/* damage popup */
.dmg-popup {
  font-family: var(--fd); font-size: 52px; font-weight: 900; letter-spacing: .04em;
  color: #ef4444; text-shadow: 0 0 30px rgba(239,68,68,.95), 0 2px 11px rgba(0,0,0,.95);
  white-space: nowrap; z-index: 20; transform: translateX(-50%);
}
.dmg-popup.show { animation: dmgFloat 1.25s ease-out forwards; }
@keyframes dmgFloat {
  0%   { opacity: 1; transform: translateX(-50%) translateY(0) scale(.84); }
  12%  { opacity: 1; transform: translateX(-50%) translateY(-6px) scale(1.12); }
  78%  { opacity: .7; transform: translateX(-50%) translateY(-42px) scale(1); }
  100% { opacity: 0; transform: translateX(-50%) translateY(-60px) scale(.9); }
}

/* hit flash */
.hit-flash { inset: 0; border-radius: inherit; }
.hit-flash-left  { right: auto; left: 0; top: 0; width: 42%; height: 100%; background: linear-gradient(to right, rgba(239,68,68,.34), rgba(239,68,68,.30) 50%, rgba(239,68,68,0) 100%); }
.hit-flash-right { left: auto; right: 0; top: 0; width: 42%; height: 100%; background: linear-gradient(to left, rgba(239,68,68,.34), rgba(239,68,68,.30) 50%, rgba(239,68,68,0) 100%); }
.hit-flash.flash { animation: flashAnim .5s ease-out; }
@keyframes flashAnim { 0%{opacity:1} 100%{opacity:0} }

/* explosion */
.explosion-fx { width: 20px; height: 20px; margin: -10px 0 0 -10px; z-index: 12; }
.exp-core     { position: absolute; inset: -22px; border-radius: 50%; background: radial-gradient(circle,#fff 0%,#f4cd84 22%,#f97316 48%,#ef4444 68%,transparent 100%); transform: scale(0); opacity: 0; }
.exp-ring     { position: absolute; border-radius: 50%; border: 6px solid rgba(249,115,22,.62); transform: scale(0); opacity: 0; }
.exp-ring.r1  { inset: -30px; }
.exp-ring.r2  { inset: -50px; border-width: 4px; }
.exp-ring.r3  { inset: -72px; border-width: 2px; }
.exp-debris   { position: absolute; width: 9px; height: 9px; border-radius: 50%; background: linear-gradient(135deg,#f4cd84,#f97316); top: 50%; left: 50%; margin: -4px; transform: scale(0); opacity: 0; }
.exp-shockwave{ position: absolute; inset: -65px; border-radius: 50%; border: 3px solid rgba(249,115,22,.42); transform: scale(0); opacity: 0; }
.explosion-fx.explode .exp-core         { animation: exCore .6s ease-out forwards; }
.explosion-fx.explode .exp-ring.r1      { animation: exRing .82s ease-out .04s forwards; }
.explosion-fx.explode .exp-ring.r2      { animation: exRing .92s ease-out .12s forwards; }
.explosion-fx.explode .exp-ring.r3      { animation: exRing 1s ease-out .2s forwards; }
.explosion-fx.explode .exp-debris.d1   { animation: exDebris .8s ease-out forwards; --dx:64px;--dy:-54px; }
.explosion-fx.explode .exp-debris.d2   { animation: exDebris .9s ease-out .05s forwards; --dx:-70px;--dy:-60px; }
.explosion-fx.explode .exp-debris.d3   { animation: exDebris .85s ease-out .1s forwards; --dx:52px;--dy:56px; }
.explosion-fx.explode .exp-debris.d4   { animation: exDebris .75s ease-out .08s forwards; --dx:-56px;--dy:42px; }
.explosion-fx.explode .exp-shockwave   { animation: exShock .72s ease-out forwards; }
@keyframes exCore    { 0%{transform:scale(0);opacity:1} 40%{transform:scale(1.12);opacity:.9} 100%{transform:scale(1.7);opacity:0} }
@keyframes exRing    { 0%{transform:scale(0);opacity:.85} 70%{opacity:.45} 100%{transform:scale(1.55);opacity:0} }
@keyframes exDebris  { 0%{transform:translate(0,0) scale(1);opacity:1} 100%{transform:translate(var(--dx,50px),var(--dy,-50px)) scale(.18);opacity:0} }
@keyframes exShock   { 0%{transform:scale(0);opacity:.62} 100%{transform:scale(2.2);opacity:0} }

/* screen shake */
.screen-shock { position: absolute; inset: 0; z-index: 5; pointer-events: none; border-radius: inherit; }
.screen-shock.shake { animation: scrShake .32s ease; }
@keyframes scrShake {
  0%,100% { transform: translate(0) }
  20%     { transform: translate(-5px,2px) }
  40%     { transform: translate(5px,-2px) }
  60%     { transform: translate(-3px,3px) }
  80%     { transform: translate(3px,-1px) }
}

/* winner banner */
.winner-banner {
  left: 50%; top: 11%;
  transform: translateX(-50%);
  min-width: min(500px,78vw); text-align: center;
  padding: 16px 26px; border-radius: 16px;
  background: linear-gradient(135deg,#8a2e1c,#eeb351,#f5c451);
  border: 1px solid rgba(194,239,206,.4);
  font-family: var(--fd);
  font-size: clamp(22px,3.5vw,46px);
  letter-spacing: .08em; color: #fff;
  box-shadow: 0 0 60px rgba(182,170,146,.52), 0 22px 56px rgba(0,0,0,.52);
  z-index: 16;
}
.winner-banner.show { animation: bannerPop 5.5s ease forwards; }
@keyframes bannerPop {
  0%    { opacity: 0; transform: translateX(-50%) translateY(-18px) scale(.86); }
  10%   { opacity: 1; transform: translateX(-50%) translateY(0) scale(1.05); }
  18%,88%{ opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
  100%  { opacity: 0; transform: translateX(-50%) translateY(-12px) scale(.96); }
}

/* ── v127 victory polish: punchier win moment ── */
.player-panel.winner { box-shadow: 0 0 0 2px rgba(245,197,66,.55), 0 0 84px rgba(245,185,65,.42) !important; }
.player-panel.winner-showcase { transform: translateY(-8px) scale(1.03); z-index: 5; }
.player-panel.loser { opacity: .38 !important; filter: grayscale(.62) brightness(.66) !important; transform: translateY(5px) scale(.975); }
.winner-banner { overflow: hidden; font-size: clamp(24px,3.9vw,52px); box-shadow: 0 0 84px rgba(245,185,65,.5), 0 22px 56px rgba(0,0,0,.55); }
.winner-banner::after {
  content:""; position:absolute; top:0; left:-60%; width:55%; height:100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent);
  transform: skewX(-18deg); opacity:0; pointer-events:none;
}
.winner-banner.show::after { animation: bannerShine 1.6s ease-in-out .4s; }
@keyframes bannerShine { 0%{ left:-60%; opacity:0; } 28%{ opacity:1; } 100%{ left:125%; opacity:0; } }

/* weapon display cards */
.weapon-display {
  top: 14%; padding: 7px 14px; border-radius: 999px;
  background: rgba(0,0,0,.72); border: 1px solid rgba(182,170,146,.28);
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 700; color: var(--p3);
  backdrop-filter: blur(10px); z-index: 14;
  opacity: 0; transition: opacity .4s;
}
.wd-left  { left: 4%; }
.wd-right { right: 4%; }

/* ═══════════════════════════════════════════
   SECTION BLOCKS
═══════════════════════════════════════════ */
.section-block {
  margin-top: 18px; border: 1px solid var(--ln); border-radius: var(--r);
  background: linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.014));
  padding: 20px;
}
.section-title { margin-bottom: 14px; }
.section-title h3 {
  font-family: var(--fd); font-size: clamp(24px,3vw,38px); letter-spacing: .04em; color: var(--t1);
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.lb-timer {
  font-family: var(--fm); font-size: 15px; color: var(--p3);
  border: 1px solid rgba(182,170,146,.28); border-radius: 7px;
  padding: 3px 9px; background: rgba(182,170,146,.08);
}
.two-col-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }

/* rows */
.queue-list, .log-list, .leaderboard-list, .history-list { display: flex; flex-direction: column; gap: 7px; }
.queue-row, .log-row, .lb-row, .hist-row, .empty-row {
  border: 1px solid var(--ln); border-radius: var(--r2);
  background: rgba(0,0,0,.18); padding: 11px 13px;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  font-size: 13px;
}
.queue-row b, .log-row b, .lb-row b, .hist-row b { color: var(--p3); font-weight: 700; }
.queue-row span, .log-row span, .lb-row span, .hist-row span { color: var(--t3); }
.lb-row:first-child { border-color: rgba(238,179,81,.28); background: rgba(238,179,81,.05); }
.lb-row:first-child b { color: var(--gold2); }
.empty-row { color: var(--t3); justify-content: center; }

/* ═══════════════════════════════════════════
   CHAT
═══════════════════════════════════════════ */
/* Chat positioning/layout is defined in the DESIGN REFRESH section at the end of this file. */
.chat-head { padding: 10px 13px; background: rgba(182,170,146,.12); border-bottom: 1px solid var(--ln); display: flex; align-items: center; justify-content: space-between; }
.chat-head strong { font-size: 13px; color: var(--p3); }
.chat-head #chatClose { width: 26px; height: 26px; border-radius: 7px; background: rgba(255,255,255,.06); color: var(--t3); font-size: 15px; display: grid; place-items: center; flex:0 0 auto; }
.chat-messages { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 9px; display: flex; flex-direction: column; gap: 5px; scrollbar-width: thin; scrollbar-color: var(--p) transparent; }
.chat-message { background: rgba(182,170,146,.08); border: 1px solid rgba(182,170,146,.14); border-radius: 9px; padding: 7px 9px; }
.chat-message b    { display: block; font-size: 11px; color: var(--p3); margin-bottom: 2px; }
.chat-message p    { font-size: 12px; color: var(--t1); line-height: 1.4; }
.chat-message span { font-size: 9px; color: var(--t3); display: block; margin-top: 3px; }
.chat-empty, .chat-login { text-align: center; color: var(--t3); font-size: 12px; padding: 18px; }
.chat-login a { color: var(--p3); }
.chat-form { padding: 9px; border-top: 1px solid var(--ln); display: flex; gap: 7px; }
.chat-form input { flex: 1; min-height: 34px; border: 1px solid var(--ln); border-radius: 7px; background: rgba(0,0,0,.4); padding: 0 9px; font-size: 12px; outline: none; color: var(--t1); transition: border-color .2s; }
.chat-form input:focus { border-color: var(--p); }
.chat-form button { min-height: 34px; width: 34px; border-radius: 7px; background: var(--p); color: #fff; font-weight: 900; font-size: 15px; display: grid; place-items: center; transition: background .16s; flex-shrink: 0; }
.chat-form button:hover { background: var(--p2); }

/* ═══════════════════════════════════════════
   AUTH PAGES
═══════════════════════════════════════════ */
.auth-page { display: grid; place-items: center; min-height: 100vh; padding: 22px; }
.auth-card {
  width: min(400px,96vw); border: 1px solid var(--ln); border-radius: 22px;
  background: linear-gradient(180deg,rgba(182,170,146,.09),rgba(0,0,0,.42));
  padding: 30px; box-shadow: 0 24px 80px rgba(0,0,0,.72);
  display: flex; flex-direction: column; gap: 13px;
}
.auth-card h1 { font-family: var(--fd); font-size: 46px; letter-spacing: .04em; background: linear-gradient(135deg,#fff,var(--p3)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.auth-card p   { color: var(--t3); font-size: 13px; }
.auth-card input { width: 100%; min-height: 42px; border: 1px solid var(--ln); border-radius: 11px; background: rgba(0,0,0,.4); color: var(--t1); padding: 0 13px; font-size: 14px; outline: none; transition: border-color .2s; }
.auth-card input:focus { border-color: var(--p); }
.auth-card label { font-size: 12px; color: var(--t3); display: flex; flex-direction: column; gap: 5px; }
.auth-card a { text-align: center; color: var(--p3); font-size: 12px; }
.auth-card .error { color: var(--red2); font-size: 12px; }

/* ═══════════════════════════════════════════
   INNER PAGES (wallet, profile, etc.)
═══════════════════════════════════════════ */
.form-card { border: 1px solid var(--ln); border-radius: var(--r2); background: rgba(0,0,0,.2); padding: 16px; display: flex; flex-direction: column; gap: 11px; }
.form-card h4  { font-size: 17px; color: var(--p3); }
.form-card label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--t3); }
.form-card input, .form-card select { min-height: 40px; border: 1px solid var(--ln); border-radius: 9px; background: rgba(0,0,0,.35); color: var(--t1); padding: 0 11px; font-size: 13px; outline: none; transition: border-color .2s; }
.form-card input:focus, .form-card select:focus { border-color: var(--p); }
.wallet-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(250px,1fr)); gap: 12px; }
code { display: block; font-family: var(--fm); font-size: 11px; color: var(--gold2); background: rgba(0,0,0,.35); border: 1px solid var(--ln); border-radius: 7px; padding: 9px; white-space: pre-wrap; word-break: break-all; }
.fair-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(210px,1fr)); gap: 11px; }
.fair-grid > div { border: 1px solid var(--ln); border-radius: var(--r2); background: rgba(0,0,0,.18); padding: 13px; }
.fair-grid span { display: block; font-size: 10px; color: var(--t3); text-transform: uppercase; letter-spacing: .1em; margin-bottom: 5px; }
.mini-list { display: flex; flex-direction: column; gap: 7px; }
.mini-row  { border: 1px solid var(--ln); border-radius: var(--r2); background: rgba(0,0,0,.18); padding: 11px 13px; display: flex; flex-direction: column; gap: 2px; }
.mini-row b    { color: var(--p3); font-size: 14px; }
.mini-row span { font-size: 12px; color: var(--t3); }
.mini-row .tx-link { color: var(--gold2, #e6b800); text-decoration: none; font-weight: 600; white-space: nowrap; }
.mini-row .tx-link:hover { text-decoration: underline; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.msg { color: var(--p3); font-size: 12px; text-align: center; }
.error-text, .error { color: var(--red2); }

/* leaderboard page */
.leaderboard-prize-pool { border: 1px solid rgba(238,179,81,.22); border-radius: var(--r); background: rgba(238,179,81,.06); padding: 18px; margin-bottom: 18px; text-align: center; }
.leaderboard-prize-pool span   { display: block; color: var(--t3); text-transform: uppercase; letter-spacing: .14em; font-size: 11px; margin-bottom: 7px; }
.leaderboard-prize-pool strong { font-family: var(--fd); font-size: clamp(38px,5vw,68px); color: var(--gold2); letter-spacing: .04em; }

/* filter buttons (activity) */
.activity-filters { display: flex; gap: 7px; margin-bottom: 13px; flex-wrap: wrap; }
.filter-btn { padding: 5px 13px; border-radius: 999px; border: 1px solid var(--ln); background: rgba(0,0,0,.2); font-size: 12px; font-weight: 600; color: var(--t3); transition: background .16s, color .16s; }
.filter-btn:hover, .filter-btn.active { background: rgba(182,170,146,.18); color: var(--p3); border-color: rgba(182,170,146,.34); }

/* ═══════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════ */
@media (max-width: 1150px) {
  /* Mobile header: hamburger + bell on the LEFT, logo CENTERED (flex:1 fills the middle so it can
     never overlap a side cluster), backpack + balance on the RIGHT. Quick-deposit "+" hidden (tap
     the balance to open the wallet) to save width. */
  .topbar-inner { display:flex !important; grid-template-columns:none !important; align-items:center; gap:5px; position:relative; }
  .mobile-menu  { display: flex; order:1; margin:0; flex:0 0 auto; }
  .account      { display:contents; }
  .notif-wrap   { order:2; flex:0 0 auto; margin:0; }
  .brand        { order:3; flex:1 1 auto; display:flex; justify-content:center; align-items:center; min-width:64px; margin:0; overflow:hidden; }
  .brand-beta   { display:none; }
  .canta-btn    { order:4; flex:0 0 auto; }
  .balance-group{ order:5; flex:0 1 auto; gap:4px; min-width:0; max-width:120px; }
  .balance-pill { min-width:0; overflow:hidden; }
  .balance-pill-main{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .bal-plus     { display:none !important; }
  .balance-pill { padding:5px 8px !important; }
  .profile-avatar-btn { width:32px !important; height:32px !important; }
  .profile-wrap { order:6; flex:0 0 auto; margin:0; }
  .topbar .brand .brand-logo { height:34px !important; width:auto; max-width:100%; object-fit:contain; }
  .nav {
    display: none; position: fixed; top: 68px; left: 0; right: 0;
    background: rgba(6,6,26,.98); border-bottom: 1px solid var(--ln);
    padding: 10px; flex-direction: column; z-index: 190;
  }
  .nav.open       { display: flex; }
  .nav a          { border-radius: 9px; padding: 10px 13px; }
  .account        { justify-self: end; }
  /* Keep the two fighters SIDE-BY-SIDE on mobile so shots fire horizontally (left↔right),
     not top-to-bottom. The control/queue panel drops full-width below them.
     minmax(0,1fr) (NOT plain 1fr = minmax(auto,1fr)) forces the two seats to EQUAL halves — plain
     1fr let the champion panel's content min-width balloon its column and squished the challenger
     seat to a sliver, clipping the challenger's avatar/ring (~47px cut on ~390px phones). min-width:0
     lets the panel contents shrink to fit their half instead of overflowing under overflow:hidden. */
  .arena-grid     { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap:10px; }
  .arena-grid .left-panel, .arena-grid .right-panel { min-width: 0; }
  .arena-grid .left-panel  { grid-column: 1; grid-row: 1; }
  .arena-grid .right-panel { grid-column: 2; grid-row: 1; }
  .arena-grid .control-panel { grid-column: 1 / -1; grid-row: 2; order: 0; position: static; }
  .player-panel   { min-height: auto; }
  .two-col-grid, .two-col { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .topbar-inner { width: calc(100% - 20px); min-height: 58px; }
  .brand b      { font-size: 18px; }
  .brand small  { display: none; }
  .page         { width: calc(100% - 18px); padding-top: 18px; }
  .arena        { padding: 10px; border-radius: 18px; }
  /* Two seats share ~170px each on a phone; trim the generous 18px panel padding so the avatar/ring
     and the "Next challenger" placeholder fit their half instead of spilling under overflow:hidden. */
  .player-panel { padding: 11px 8px; }
  .empty-seat   { padding: 12px 4px; }
  .arena-header { flex-direction: column; align-items: flex-start; }
  .hero-pool-display { width: 100%; text-align: center; }
}

/* ═══════════════════════════════════════════
   DUEL STANCE CLASSES (added by JS during fight)
═══════════════════════════════════════════ */
.player-panel.duel-left  .rust-char-wrap { transform-origin: 50% 85%; }
.player-panel.duel-right .rust-char-wrap { transform-origin: 50% 85%; }

/* "show" state for weapon display cards (JS sets opacity directly now) */
.weapon-display.show { opacity: 1 !important; }

/* Spark rotation vars set inline in arena.php */
.impact-spark.s0 { --a: 0deg;   transform: rotate(0deg)   translateY(-20px) scale(.1); }
.impact-spark.s1 { --a: 72deg;  transform: rotate(72deg)  translateY(-20px) scale(.1); }
.impact-spark.s2 { --a: 144deg; transform: rotate(144deg) translateY(-20px) scale(.1); }
.impact-spark.s3 { --a: 216deg; transform: rotate(216deg) translateY(-20px) scale(.1); }
.impact-spark.s4 { --a: 288deg; transform: rotate(288deg) translateY(-20px) scale(.1); }

/* ── Daily reward button ── */
.btn-daily {
  width: 100%; min-height: 38px; border-radius: var(--r2);
  background: rgba(238,179,81,.12);
  border: 1px solid rgba(238,179,81,.28);
  color: var(--gold2); font-weight: 700; font-size: 13px;
  transition: background .18s;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.btn-daily:hover  { background: rgba(238,179,81,.22); }
.btn-daily.claimed { opacity: .4; cursor: not-allowed; }

/* ── Challenger timer ring (red) ── */
.timer-prog-red {
  fill: none; stroke: var(--red); stroke-width: 10; stroke-linecap: round;
  stroke-dasharray: 327;
  filter: drop-shadow(0 0 6px rgba(239,68,68,.5));
}

/* ── Guest CTA in control panel ── */
.guest-cta {
  display: flex; flex-direction: column; gap: 8px;
  border: 1px solid var(--ln); border-radius: var(--r2);
  background: rgba(0,0,0,.18); padding: 14px; text-align: center;
}
.guest-cta p { font-size: 12px; color: var(--t3); line-height: 1.5; }

/* ── Arena grid symmetry fix ── */
.right-panel .timer-section { opacity: .55; }
.right-panel .timer-section .timer-inner small { color: var(--red2); }

/* ═══════════════════════════════════════════
   COINFLIP PAGE
═══════════════════════════════════════════ */

/* ── Stage ── */
.cf-stage {
  position: relative;
  min-height: 320px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  border-radius: 26px;
  border: 1px solid var(--ln2);
  background: radial-gradient(circle at 50% 40%,rgba(36,12,72,.98),rgba(6,6,26,.99) 72%);
  overflow: hidden;
  padding: 32px 20px;
  margin-bottom: 20px;
  box-shadow: 0 0 0 1px rgba(182,170,146,.08), 0 40px 100px rgba(0,0,0,.68);
}
.cf-stage::before {
  content:"";position:absolute;inset:0;
  background: radial-gradient(circle at 50% 0%, rgba(182,170,146,.12) 0%,transparent 60%);
  pointer-events:none;
}

/* ════════════════════════════════════════════════
   COINFLIP COIN — reliable 2D edge-flip (scaleX squash).
   The coin squashes horizontally to "edge-on" and back;
   at each edge-on point JS swaps the visible face. The
   swap interval lengthens as the toss decelerates, so the
   final face settles naturally on the winner — no snap,
   never blank, and renders identically in every browser.
   ════════════════════════════════════════════════ */
.cf-coin-wrap {
  position: relative;
  z-index: 2;
  transform-origin: 50% 50%;
  transform: translateY(0) scale(1);
  transform-style: preserve-3d;   /* let the stage perspective flow through to the coin's depth layers */
  will-change: transform;
}

/* Gentle toss arc, stays inside the stage (max ~58px lift). */
@keyframes coinThrow {
  0%   { transform: translateY(0)     scale(1);    }
  22%  { transform: translateY(-48px) scale(1.12); }
  46%  { transform: translateY(-58px) scale(1.16); }
  64%  { transform: translateY(-42px) scale(1.12); }
  84%  { transform: translateY(-12px) scale(1.04); }
  100% { transform: translateY(0)     scale(1);    }
}
.cf-coin-wrap.flipping { animation: coinThrow var(--throw-dur,2.8s) cubic-bezier(.3,.02,.3,1) forwards; }

.cf-coin {
  width: 150px;
  height: 150px;
  position: relative;
  box-shadow: 0 10px 28px rgba(0,0,0,.6);   /* box-shadow (NOT filter) so preserve-3d keeps the edge thickness */
  border-radius: 50%;
  will-change: transform;
}

.cf-face {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  display: none;            /* only the active face shows */
}
.cf-face-inner { width: 100%; height: 100%; }
.cf-face svg, .cf-face-inner svg { width: 100%; height: 100%; display: block; }

.cf-coin.show-red  .cf-face-red  { display: block; }
.cf-coin.show-blue .cf-face-blue { display: block; }
.cf-coin:not(.show-red):not(.show-blue) .cf-face-red { display: block; }

/* Winner glow (no post-land bounce — coin settles flat and clean) */
.cf-coin.landed-red  { filter: drop-shadow(0 0 28px rgba(234,179,8,.9)) drop-shadow(0 10px 28px rgba(0,0,0,.6)); }
.cf-coin.landed-blue { filter: drop-shadow(0 0 28px rgba(59,130,246,.9)) drop-shadow(0 10px 28px rgba(0,0,0,.6)); }
.cf-coin.settle { transform: scaleY(1); }

/* ── Stage message ── */
.cf-stage-msg {
  font-size: 15px;
  font-weight: 600;
  color: var(--t3);
  text-align: center;
  z-index: 2;
}

/* ── Result badge ── */
.cf-result-badge {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%) scale(.8);
  opacity: 0;
  font-family: var(--fd);
  font-size: 32px;
  letter-spacing: .06em;
  padding: 10px 28px;
  border-radius: 999px;
  white-space: nowrap;
  transition: opacity .3s, transform .3s;
  z-index: 3;
}
.cf-result-badge.show-red  { opacity: 1; transform: translateX(-50%) scale(1); background: rgba(239,68,68,.18); border: 1px solid rgba(239,68,68,.4); color: #fca5a5; }
.cf-result-badge.show-blue { opacity: 1; transform: translateX(-50%) scale(1); background: rgba(59,130,246,.18); border: 1px solid rgba(59,130,246,.4); color: #93c5fd; }

/* ── Create section ── */
.cf-create-section { margin-bottom: 18px; }
.cf-create-grid {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 18px;
  padding: 22px;
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(196,184,158,.04), rgba(0,0,0,.18));
  border: 1px solid var(--rust-ln);
}

/* Side picker */
.cf-side-picker {
  display: flex;
  align-items: center;
  gap: 14px;
}
.cf-side-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 16px 20px;
  border-radius: var(--r);
  border: 2px solid var(--ln);
  background: rgba(0,0,0,.2);
  cursor: pointer;
  transition: border-color .18s, background .18s, transform .18s;
  min-width: 100px;
}
.cf-side-btn:hover { transform: translateY(-2px); }
.cf-side-btn.active.cf-side-red  { border-color: rgba(239,68,68,.6); background: rgba(239,68,68,.1); }
.cf-side-btn.active.cf-side-blue { border-color: rgba(59,130,246,.6); background: rgba(59,130,246,.1); }
.cf-side-btn span {
  font-family: var(--fd);
  font-size: 22px;
  letter-spacing: .08em;
}
.cf-side-red  span { color: #fca5a5; }
.cf-side-blue span { color: #93c5fd; }
.cf-side-btn small { font-size: 11px; color: var(--t3); }

.cf-side-coin { width: 56px; height: 56px; }
.cf-side-coin svg { width: 100%; height: 100%; }

.cf-vs-divider {
  font-family: var(--fd);
  font-size: 28px;
  letter-spacing: .1em;
  color: var(--t3);
}

/* Wager section */
.cf-wager-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 4px;
  width: 100%;
  max-width: 360px;
  align-items: stretch;
}
.cf-wager-section .cf-wager-input,
.cf-wager-section input { text-align: center; font-size: 18px; }
.cf-wager-label { font-size: 12px; color: var(--t3); text-transform: uppercase; letter-spacing: .12em; text-align:center; }
.cf-create-btn { max-width: 100%; width:100%; min-height:50px; font-size:16px; }
.cf-side-picker { justify-content: center; }

/* ── Games list ── */
.cf-games-list { display: flex; flex-direction: column; gap: 10px; }
.cf-game-row {
  display: flex;
  align-items: center;
  gap: 14px;
  border: 1px solid var(--ln);
  border-radius: var(--r2);
  background: rgba(0,0,0,.18);
  padding: 14px 16px;
  transition: border-color .18s;
  flex-wrap: wrap;
}
.cf-game-row:hover { border-color: var(--ln2); }

/* Creator info */
.cf-game-creator {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 140px;
}
.cf-mini-coin {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 900;
  font-family: var(--fd);
  letter-spacing: 0;          /* letter-spacing offset the visual centre → removed */
  text-align: center;
  line-height: 1;
  text-indent: 0;
}
.cf-mini-coin > * { line-height: 1; }
.cf-mini-coin.red  { background: linear-gradient(135deg,#991b1b,#ef4444); color: #fca5a5; border: 1px solid rgba(239,68,68,.35); box-shadow: 0 0 12px rgba(239,68,68,.25); }
.cf-mini-coin.blue { background: linear-gradient(135deg,#1e3a8a,#3b82f6); color: #93c5fd; border: 1px solid rgba(59,130,246,.35); box-shadow: 0 0 12px rgba(59,130,246,.25); }

.cf-game-name { font-weight: 700; color: var(--t1); font-size: 14px; }
.cf-game-sub  { font-size: 11px; color: var(--t3); }

/* VS slot */
.cf-game-vs {
  display: flex;
  align-items: center;
  gap: 10px;
}
.cf-vs-text {
  font-family: var(--fd);
  font-size: 18px;
  color: var(--t3);
  letter-spacing: .1em;
}
.cf-empty-slot {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 2px dashed var(--ln2);
  display: grid;
  place-items: center;
  font-size: 16px;
  color: var(--t3);
}

/* Wager */
.cf-game-wager {
  font-family: var(--fd);
  font-size: 26px;
  letter-spacing: .04em;
  color: var(--gold2);
  white-space: nowrap;
  display: inline-flex; align-items: center; gap: 8px;
}
.cf-game-wager .cf-game-skin, .cf-game-wager .skin-stack .ss-th{ width:34px; height:34px; }

/* Actions */
.cf-game-actions { display: flex; gap: 8px; margin-left: auto; }

.cf-join-btn {
  min-height: 38px;
  padding: 0 18px;
  border-radius: 10px;
  background: linear-gradient(135deg,var(--p2),var(--p));
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  border: 0;
  transition: filter .16s, transform .16s;
  white-space: nowrap;
}
.cf-join-btn:hover { filter: brightness(1.12); transform: translateY(-1px); }
.cf-join-btn:disabled { opacity: .4; cursor: not-allowed; transform: none; }

.cf-cancel-btn {
  min-height: 38px;
  padding: 0 14px;
  border-radius: 10px;
  background: rgba(239,68,68,.1);
  border: 1px solid rgba(239,68,68,.25);
  color: var(--red2);
  font-size: 12px;
  font-weight: 600;
  transition: background .16s;
}
.cf-cancel-btn:hover { background: rgba(239,68,68,.2); }

/* ── History rows ── */
.cf-history-list .cf-game-row {
  opacity: .85;
}
.cf-history-row-result {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--t3);
  flex-wrap: wrap;
}
.cf-winner-badge {
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
}
.cf-winner-red  { background: rgba(239,68,68,.15); color: #fca5a5; border: 1px solid rgba(239,68,68,.3); }
.cf-winner-blue { background: rgba(59,130,246,.15); color: #93c5fd; border: 1px solid rgba(59,130,246,.3); }

/* Verify inline */
.cf-verify-btn {
  min-height: 30px;
  padding: 0 10px;
  border-radius: 8px;
  background: rgba(182,170,146,.1);
  border: 1px solid rgba(182,170,146,.25);
  color: var(--p3);
  font-size: 11px;
  font-weight: 600;
  transition: background .16s;
  cursor: pointer;
}
.cf-verify-btn:hover { background: rgba(182,170,146,.2); }
.cf-verify-panel {
  display: none;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  margin-top: 8px;
  border: 1px solid rgba(182,170,146,.2);
  border-radius: 10px;
  background: rgba(0,0,0,.3);
  padding: 12px;
  font-size: 11px;
}
.cf-verify-panel.open { display: flex; }
.cf-verify-panel b    { color: var(--p3); }
.cf-verify-panel code { font-family: var(--fm); font-size: 10px; color: var(--gold2); background: rgba(0,0,0,.4); border: 1px solid var(--ln); border-radius: 5px; padding: 5px 7px; word-break: break-all; }
.cf-verify-result { padding: 6px 10px; border-radius: 7px; font-weight: 600; font-size: 12px; }
.cf-verify-result.red  { background: rgba(239,68,68,.1);  color: #fca5a5; border: 1px solid rgba(239,68,68,.25); }
.cf-verify-result.blue { background: rgba(59,130,246,.1); color: #93c5fd; border: 1px solid rgba(59,130,246,.25); }

/* ─────────────────────────────────────
   WATCH MODAL (auto-spectate + replay)
   ───────────────────────────────────── */
body.cf-modal-lock{ overflow: hidden; }
/* v149 — Safety net: lock page scroll whenever ANY modal overlay is open, so every
   modal is TRULY centred. A lingering scrollbar offsets a flex-centred modal by ~half
   its width (~7px) — this catches modals that don't set a JS lock class (daily / tip /
   wallet / mute, and the rustpot watch modal). :has() is supported in all current
   browsers; older ones simply fall back to the previous behaviour (no regression). */
body:has(.cf-modal.open), body:has(.app-modal.open){ overflow: hidden; }

.cf-modal {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 80px 16px 24px;   /* clear the sticky top nav so the X is never under the menu */
  opacity: 1; transition: opacity .2s ease;   /* smooth close instead of an abrupt vanish (6c spectate→own-game hand-off) */
}
.cf-modal.open { display: flex; }
.cf-modal.cf-closing { opacity: 0 !important; pointer-events: none; }   /* fade out; JS removes .open after the fade */

.cf-modal-overlay {
  position: absolute;
  inset: 0;
  /* Translucent + blurred so the SITE stays visible behind the flip (user asked for this
     repeatedly). The blur keeps the centred coin the clear focus without hiding the page. */
  background:
    radial-gradient(120% 90% at 50% 34%, rgba(12,9,28,.30), rgba(6,6,14,.58) 72%);
  backdrop-filter: blur(13px) saturate(.85) brightness(.7);
  -webkit-backdrop-filter: blur(13px) saturate(.85) brightness(.7);
  animation: cfFadeIn .2s ease;
}

.cf-modal-card {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 480px;
  max-height: calc(100vh - 112px);
  overflow-y: auto;
  border-radius: 22px;
  border: 1px solid var(--ln2);
  background: linear-gradient(180deg, rgba(26,16,54,.80), rgba(10,9,26,.86));
  backdrop-filter: blur(22px) saturate(.92);
  -webkit-backdrop-filter: blur(22px) saturate(.92);
  box-shadow: 0 0 0 1px rgba(182,170,146,.14), 0 40px 120px rgba(0,0,0,.55);
  padding: 26px 24px 22px;
  animation: cfPop .28s cubic-bezier(.2,1.1,.4,1);
}

@keyframes cfFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes cfPop {
  0%   { opacity: 0; transform: translateY(16px) scale(.95); }
  100% { opacity: 1; transform: translateY(0)    scale(1); }
}

.cf-modal-close {
  position: absolute;
  top: 12px; right: 12px;
  width: 34px; height: 34px;
  border-radius: 10px;
  border: 1px solid var(--ln);
  background: rgba(0,0,0,.35);
  color: var(--t2);
  font-size: 15px;
  cursor: pointer;
  transition: background .16s, color .16s;
  z-index: 2;
}
.cf-modal-close:hover { background: rgba(239,68,68,.18); color: #fca5a5; }

/* Shared copy-link icon for watch modals — sits just left of the close button. */
.watch-copy{ position:absolute; top:12px; right:54px; width:34px; height:34px; border-radius:10px;
  border:1px solid var(--ln); background:rgba(0,0,0,.35); color:var(--t2); cursor:pointer; z-index:2;
  display:flex; align-items:center; justify-content:center; transition:background .16s,color .16s; }
.watch-copy svg{ width:17px; height:17px; }
.watch-copy:hover{ background:rgba(238,179,81,.18); color:#ffd166; }
.watch-copy.ok{ background:rgba(74,222,128,.22); color:#86efac; border-color:rgba(74,222,128,.5); }
/* RUSTPOT watch modal: roomy enough for the map, which is moved in for the replay. */
.cf-watch-card{ max-width:620px; }
.cf-watch-stage{ display:flex; justify-content:center; padding:4px 2px 2px; }
.cf-watch-stage .rp-map{ margin:0; }

.cf-modal-head { text-align: center; margin-bottom: 14px; }
.cf-modal-head .eyebrow { display: inline-block; }
.cf-modal-head h3 {
  font-family: var(--fd);
  font-size: 22px;
  letter-spacing: .03em;
  color: var(--t1);
  margin-top: 4px;
  word-break: break-word;
}

/* Players row */
.cf-modal-players {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-bottom: 8px;
}
.cf-modal-player {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  flex: 1;
  max-width: 150px;
  padding: 10px 8px;
  border-radius: 14px;
  border: 1px solid transparent;
  transition: border-color .25s, background .25s, transform .25s;
}
.cf-modal-player.winner {
  border-color: rgba(245,197,66,.5);
  background: rgba(245,197,66,.08);
  transform: translateY(-2px);
  box-shadow: 0 0 22px rgba(245,197,66,.18);
}
.cf-modal-pname {
  font-weight: 700;
  font-size: 14px;
  color: var(--t1);
  text-align: center;
  word-break: break-word;
  max-width: 130px;
}
.cf-modal-vs {
  font-family: var(--fd);
  font-size: 16px;
  color: var(--t3);
  letter-spacing: .08em;
}

/* Coin stage inside modal */
.cf-modal-stage {
  position: relative;
  display: grid;             /* grid place-items = rock-solid dead-centre */
  place-items: center;
  min-height: 356px;
  border-radius: 20px;
  border: 1px solid var(--ln2);
  background:
    radial-gradient(circle at 50% 36%, rgba(56,22,104,.55), rgba(8,8,24,.96) 70%),
    linear-gradient(180deg, rgba(16,12,34,.9), rgba(6,6,20,.98));
  box-shadow: inset 0 0 60px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.05);
  overflow: hidden;
  margin: 10px 0 16px;
}
/* Soft glow halo behind the coin — purely decorative, centred, never shifts layout. */
.cf-modal-stage::before {
  content: "";
  position: absolute;
  width: 260px; height: 260px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(238,179,81,.22), transparent 68%);
  filter: blur(8px);
  pointer-events: none;
  z-index: 0;
}
/* The coin always sits dead-centre in the grid cell. left/right/margin guards
   neutralise any stale positioning that older cached CSS may have applied. */
.cf-modal-stage .cf-coin-wrap {
  position: relative;
  z-index: 2;
  grid-area: 1 / 1;          /* same cell as the result overlay, both centred */
  margin: 0 auto;
  left: auto; right: auto;
}
.cf-modal-stage .cf-coin { width: 200px; height: 200px; }
/* Bigger, higher toss for the (now larger) modal stage */
.cf-modal-stage .cf-coin-wrap.flipping{ animation: coinThrowBig var(--throw-dur,2.8s) linear forwards !important; }
@keyframes coinThrowBig {
  0%   { transform: translateY(0)     scale(1);    }
  22%  { transform: translateY(-62px) scale(1.13); }
  46%  { transform: translateY(-78px) scale(1.17); }
  64%  { transform: translateY(-56px) scale(1.13); }
  84%  { transform: translateY(-18px) scale(1.05); }
  100% { transform: translateY(0)     scale(1);    }
}

.cf-modal-result {
  position: absolute !important;
  bottom: 16px;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) scale(.85) !important;
  opacity: 0;
  font-family: var(--fd);
  font-size: 27px;
  letter-spacing: .06em;
  padding: 8px 26px;
  border-radius: 999px;
  white-space: nowrap;
  transition: opacity .3s, transform .3s;
  z-index: 3;
  pointer-events: none;
}
.cf-modal-result.show-red  { opacity: 1; transform: translateX(-50%) scale(1) !important;
  background: linear-gradient(180deg, rgba(239,68,68,.28), rgba(239,68,68,.14));
  color: #fecaca; border: 1px solid rgba(239,68,68,.55);
  box-shadow: 0 6px 26px rgba(239,68,68,.35), inset 0 1px 0 rgba(255,255,255,.15); }
.cf-modal-result.show-blue { opacity: 1; transform: translateX(-50%) scale(1) !important;
  background: linear-gradient(180deg, rgba(59,130,246,.28), rgba(59,130,246,.14));
  color: #bfdbfe; border: 1px solid rgba(59,130,246,.55);
  box-shadow: 0 6px 26px rgba(59,130,246,.35), inset 0 1px 0 rgba(255,255,255,.15); }

/* Outcome line */
.cf-modal-outcome {
  text-align: center;
  font-size: 15px;
  font-weight: 700;
  color: var(--t2);
  min-height: 22px;
  margin-bottom: 12px;
}
.cf-modal-outcome.red  { color: #fca5a5; }
.cf-modal-outcome.blue { color: #93c5fd; }
.cf-modal-outcome.mine { color: var(--gold2); }

/* Fair block inside modal */
.cf-modal-fair { display: flex; flex-direction: column; gap: 8px; }
.cf-modal-fair .cf-verify-btn { align-self: center; }

@media (max-width: 540px) {
  .cf-modal-card { padding: 22px 16px 18px; }
  .cf-modal-head h3 { font-size: 19px; }
  .cf-modal-stage .cf-coin { width: 124px; height: 124px; }
  .cf-modal-players { gap: 8px; }
}

/* Clickable history rows */
.cf-history-clickable { cursor: pointer; transition: border-color .16s, background .16s, transform .12s; }
.cf-history-clickable:hover { border-color: var(--p3); background: rgba(182,170,146,.08); transform: translateY(-1px); }
.cf-watch-btn {
  min-height: 30px;
  padding: 0 12px;
  border-radius: 8px;
  background: linear-gradient(135deg, rgba(182,170,146,.25), rgba(196,184,158,.18));
  border: 1px solid rgba(196,184,158,.4);
  color: #f0e0bf;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: filter .16s;
}
.cf-watch-btn:hover { filter: brightness(1.2); }

/* ── Responsive ── */
@media (max-width: 700px) {
  .cf-create-grid { grid-template-columns: 1fr; }
  .cf-side-picker { flex-wrap: wrap; justify-content: center; }
  .cf-game-row { flex-wrap: wrap; }
  .cf-game-actions { width: 100%; }
  .cf-join-btn { flex: 1; }
}

/* Coin landing wobble */
/* ─────────────────────────────────────
   Coinflip stage enhancements
───────────────────────────────────── */
.cf-stage-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  position: relative;
  z-index: 2;
}
.cf-stage-info {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

/* Floating particles */
.cf-particles { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.cf-particle {
  position: absolute;
  width: 4px; height: 4px;
  border-radius: 50%;
  opacity: 0;
  animation: cfParticle 6s ease-in-out infinite;
  animation-delay: calc(var(--i) * 0.5s);
}
.cf-particle:nth-child(odd)  { background: rgba(239,68,68,.5);  left: calc(10% + var(--i)*7%); top: 80%; }
.cf-particle:nth-child(even) { background: rgba(59,130,246,.5); left: calc(5%  + var(--i)*7%); top: 85%; }
@keyframes cfParticle {
  0%   { opacity: 0; transform: translateY(0)   scale(1); }
  20%  { opacity: .8; }
  80%  { opacity: .3; }
  100% { opacity: 0; transform: translateY(-180px) scale(.3); }
}

/* Legend */
.cf-legend {
  display: flex;
  gap: 20px;
  z-index: 2;
  position: relative;
}
.cf-legend-item {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 600;
}
.cf-legend-item.red  { color: #fca5a5; }
.cf-legend-item.blue { color: #93c5fd; }
.cf-legend-dot {
  width: 10px; height: 10px; border-radius: 50%;
}
.cf-legend-item.red  .cf-legend-dot { background: #ef4444; box-shadow: 0 0 8px rgba(239,68,68,.7); }
.cf-legend-item.blue .cf-legend-dot { background: #3b82f6; box-shadow: 0 0 8px rgba(59,130,246,.7); }

/* Coin size upgrade */
.cf-coin { width: 180px; height: 180px; }

/* ═══════════════════════════════════════════
   INNER PAGE COMPONENTS
═══════════════════════════════════════════ */

/* ── Page header ── */
.page-head { margin-bottom: 24px; }
.page-title {
  font-family: var(--fd); letter-spacing: .04em; line-height: .92;
  font-size: clamp(38px,6vw,72px);
  background: linear-gradient(135deg,#fff 30%,var(--p3));
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ── Wallet balance overview ── */
.balance-overview {
  display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
  border: 1px solid var(--line); border-radius: var(--r);
  background: linear-gradient(135deg,rgba(182,170,146,.08),rgba(0,0,0,.3));
  padding: 22px 24px; margin-bottom: 18px;
}
.balance-lbl {
  display: block; font-size: 11px; text-transform: uppercase;
  letter-spacing: .14em; color: var(--t3); margin-bottom: 5px;
}
.balance-val {
  font-family: var(--fd); font-size: clamp(32px,4vw,52px);
  color: var(--gold2); letter-spacing: .04em;
}
.balance-stats {
  display: flex; gap: 10px; flex-wrap: wrap; margin-left: auto;
}
.bstat {
  border: 1px solid var(--line); border-radius: 11px;
  padding: 10px 16px; background: rgba(0,0,0,.2); text-align: center;
}
.bstat span { display: block; font-size: 11px; color: var(--t3); text-transform: uppercase; letter-spacing: .1em; margin-bottom: 3px; }
.bstat b    { display: block; font-size: 20px; font-weight: 700; color: var(--p3); }
.bstat.green b { color: var(--grn2); }
.bstat.red   b { color: var(--red2); }

/* Form messages */
.form-msg       { font-size: 13px; margin-top: 4px; color: var(--p3); min-height: 18px; }
.form-msg.error { color: var(--red2); }

/* Transaction rows */
.tx-type         { font-weight: 700; font-size: 12px; padding: 2px 8px; border-radius: 6px; }
.tx-type.deposit { background: rgba(74,222,128,.12); color: var(--pos); border: 1px solid rgba(74,222,128,.28); }
.tx-type.withdraw{ background: rgba(239,68,68,.12); color: var(--red2); border: 1px solid rgba(239,68,68,.22); }
.tx-status { font-size: 12px; color: var(--t3); }
.tx-status.pending   { color: var(--gold2); }
.tx-status.completed { color: var(--pos); }
.tx-status.rejected  { color: var(--red2); }
.tx-method { font-size: 12px; color: var(--t3); }
.tx-date   { font-size: 11px; color: var(--t3); margin-left: auto; }

/* ── Leaderboard hero ── */
.lb-hero {
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center; gap: 24px; flex-wrap: wrap;
  border: 1px solid rgba(238,179,81,.22); border-radius: var(--r);
  background: linear-gradient(135deg,rgba(238,179,81,.06),rgba(0,0,0,.3));
  padding: 28px 24px; margin-bottom: 18px;
}
.lb-hero::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(58% 120% at 24% 28%, rgba(238,179,81,.16), transparent 62%);
  animation:lbHeroGlow 5s ease-in-out infinite; }
.lb-hero-prize{ position:relative; z-index:1; }
.lb-hero-prize strong{ animation:lbPrizeGlow 3s ease-in-out infinite; }
@keyframes lbHeroGlow{ 0%,100%{ opacity:.55; } 50%{ opacity:1; } }
@keyframes lbPrizeGlow{ 0%,100%{ text-shadow:0 2px 10px rgba(238,179,81,.22); } 50%{ text-shadow:0 0 28px rgba(238,179,81,.6), 0 2px 10px rgba(238,179,81,.42); } }
.lb-hero-prize { text-align: center; }
.lb-hero-prize span   { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .16em; color: var(--t3); margin-bottom: 6px; }
.lb-hero-prize strong { display: inline-flex; align-items: center; justify-content: center; gap: .12em; font-family: var(--fd); font-size: clamp(46px,7vw,82px); color: var(--gold2); letter-spacing: .02em; line-height: 1; white-space: nowrap; }
.lb-hero-prize strong .coin-ico{ width:.6em; height:.6em; margin-right:0; vertical-align:baseline; flex:0 0 auto; filter:drop-shadow(0 2px 4px rgba(120,80,20,.5)); }
.lb-hero-prize small  { display: block; font-size: 13px; color: var(--t3); margin-top: 6px; }
.lb-hero-prize small span { display: inline; font-family: var(--fm); color: var(--p3); font-size: 14px; letter-spacing: .04em; }
.lb-prize-breakdown {
  display: flex; gap: 8px; flex-wrap: wrap; margin-left: auto;
}
.lb-prize-slot {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 10px 14px; border-radius: 12px;
  border: 1px solid var(--line); background: rgba(0,0,0,.2);
}
.lb-prize-slot span { font-size: 18px; }
.lb-prize-slot b    { font-size: 13px; font-weight: 700; color: var(--gold2); }
.lb-prize-slot.rank-1 { border-color: rgba(238,179,81,.4); background: rgba(238,179,81,.08); }
.lb-prize-slot.rank-2 { border-color: rgba(192,192,192,.3); }
.lb-prize-slot.rank-3 { border-color: rgba(205,127,50,.3); }

.lb-row-gold   { border-color: rgba(238,179,81,.4) !important; background: rgba(238,179,81,.06) !important; }
.lb-row-silver { border-color: rgba(192,192,192,.28) !important; }
.lb-row-bronze { border-color: rgba(205,127,50,.28) !important; }
.lb-rank-badge { font-size: 22px; flex-shrink: 0; }
.lb-rank-badge.rank-gold   { filter: drop-shadow(0 0 8px rgba(238,179,81,.7)); }
.lb-player     { flex: 1; }
.lb-player b   { display: block; font-size: 15px; font-weight: 700; color: var(--t1); }
.lb-player small { font-size: 11px; color: var(--t3); }
.lb-record     { display: flex; align-items: center; gap: 4px; font-size: 14px; }
.lb-wins       { color: var(--grn2); font-weight: 700; }
.lb-losses     { color: var(--red2); font-weight: 700; }
.lb-sep        { color: var(--t3); }
.lb-prize      { color: var(--gold2); font-weight: 700; font-size: 15px; white-space: nowrap; }

/* ── Fairness page ── */
.fairness-explainer {
  display: flex; flex-direction: column; gap: 12px;
  border: 1px solid var(--line); border-radius: var(--r);
  background: rgba(0,0,0,.18); padding: 20px; margin-bottom: 18px;
}
.fe-step { display: flex; align-items: flex-start; gap: 12px; }
.fe-num  {
  width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;
  background: var(--p); color: #fff; font-size: 13px; font-weight: 700;
  display: grid; place-items: center; margin-top: 1px;
}
.fe-body { font-size: 13px; color: var(--t2); line-height: 1.6; }
.fe-body b    { color: var(--p3); }
.fe-body code { font-family: var(--fm); font-size: 12px; color: var(--gold2); background: rgba(0,0,0,.35); border-radius: 5px; padding: 1px 6px; }

.fair-card { border: 1px solid var(--line); border-radius: var(--r2); background: rgba(0,0,0,.18); padding: 14px; }
.fair-card span { display: block; font-size: 10px; color: var(--t3); text-transform: uppercase; letter-spacing: .1em; margin-bottom: 7px; }

.fair-row-header {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-bottom: 6px;
}
.fair-event-badge {
  padding: 2px 10px; border-radius: 999px; font-size: 11px; font-weight: 700;
  background: rgba(182,170,146,.12); color: var(--p3); border: 1px solid rgba(182,170,146,.25);
}
.fair-event-badge.left_battle_win  { background: rgba(34,197,94,.1);  color: var(--pos); border-color: rgba(34,197,94,.25); }
.fair-event-badge.right_battle_win { background: rgba(239,68,68,.1);  color: var(--red2); border-color: rgba(239,68,68,.25); }
.fair-event-badge.timer_jackpot    { background: rgba(238,179,81,.1); color: var(--gold2);border-color: rgba(238,179,81,.25); }
.fair-date { font-size: 11px; color: var(--t3); margin-left: auto; }
.fair-hash { font-size: 10px; word-break: break-all; }

/* ── Activity page ── */
.act-row  { align-items: flex-start; flex-direction: column; gap: 3px; }
.act-row b { font-size: 14px; }
.act-row span { font-size: 12px; color: var(--t2); }
.act-row small { font-size: 10px; color: var(--t3); }
.act-def  { color: var(--t3); font-weight: 400; margin: 0 4px; }
.act-prize { color: var(--gold2); font-weight: 700; font-size: 14px; }

.form-hint { font-size:11px; color:var(--t3); margin-top:-4px; }

/* ═══════════════════════════════════════════
   ENHANCED VISUAL EFFECTS
═══════════════════════════════════════════ */

/* Prize pool pulse when updated */
@keyframes prizeUpdate {
  0%,100% { transform: scale(1); }
  50%      { transform: scale(1.06); color: var(--gold2); filter: brightness(1.3); }
}
.prize-amount.updated { animation: prizeUpdate .4s ease; }

/* Timer turns red when < 30s */
.timer-inner strong.danger {
  color: var(--red2) !important;
  animation: timerDanger .8s ease infinite;
}
.timer-prog.danger {
  stroke: var(--red) !important;
  filter: drop-shadow(0 0 10px rgba(239,68,68,.7));
}
@keyframes timerDanger {
  0%,100% { opacity: 1; }
  50%      { opacity: .6; }
}
/* Frozen timer while a lone Champion waits for a Challenger */
.timer-inner strong.waiting {
  color: var(--t3) !important;
  animation: timerWaiting 1.8s ease infinite;
}
@keyframes timerWaiting {
  0%,100% { opacity: .55; }
  50%      { opacity: .85; }
}

/* Balance pill flash on update */
@keyframes balUpdate {
  0%   { background: rgba(34,197,94,.35); color: var(--grn2); }
  100% { background: rgba(238,179,81,.09); color: var(--gold2); }
}
.balance-pill.updated { animation: balUpdate .8s ease forwards; }

/* Join button loading */
.btn-primary.loading {
  pointer-events: none;
  opacity: .75;
}
.btn-primary.loading::after {
  content: "";
  display: inline-block;
  width: 14px; height: 14px;
  border: 2px solid rgba(255,255,255,.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spin .7s linear infinite;
  margin-left: 8px;
  vertical-align: middle;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* HP bar label pulse on damage */
.health-label b.damaged {
  animation: hpDamage .5s ease;
}
@keyframes hpDamage {
  0%,100% { transform: scale(1); }
  40%      { transform: scale(1.3); }
}

/* Better empty seat glow */
.char-display:has(.empty-seat) {
  background: rgba(0,0,0,.15);
  border-style: dashed;
  border-color: rgba(196,184,158,.18);
}

/* Waiting status pulse */
.battle-status.waiting-pulse {
  animation: statusPulse 2s ease infinite;
}
@keyframes statusPulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .65; }
}

/* Score counter (W/L badge) */
.score-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 999px;
}
.score-badge.win  { background: rgba(34,197,94,.12);  color: var(--grn2); border: 1px solid rgba(34,197,94,.25); }
.score-badge.loss { background: rgba(239,68,68,.12);  color: var(--red2); border: 1px solid rgba(239,68,68,.22); }

/* Weapon display enhanced */
.weapon-display {
  transition: opacity .4s ease;
}
.wd-icon { font-size: 16px; }
.wd-name { font-size: 12px; font-weight: 700; color: var(--p3); }

/* Pulsing "online" dot */
.online-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--grn);
  box-shadow: 0 0 8px var(--grn);
  animation: onlinePulse 2s ease infinite;
  flex-shrink: 0;
}
@keyframes onlinePulse {
  0%,100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .5; transform: scale(.7); }
}

/* Queue count badge */
.queue-count-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--p);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  flex-shrink: 0;
}

/* Smooth balance transition */
.balance-pill {
  transition: background .3s, color .3s, border-color .3s;
}

/* Low HP warning state */
.player-panel.low-hp .health-track {
  border-color: rgba(239,68,68,.4);
  animation: lowHpBorder 1s ease infinite;
}
@keyframes lowHpBorder {
  0%,100% { border-color: rgba(239,68,68,.4); }
  50%      { border-color: rgba(239,68,68,.8); }
}

/* Round result flash */
.arena.result-flash-win  { animation: resultFlashWin  .5s ease; }
.arena.result-flash-loss { animation: resultFlashLoss .5s ease; }
@keyframes resultFlashWin  { 0%,100%{} 30%{ box-shadow: 0 0 0 2px rgba(238,179,81,.6), 0 40px 100px rgba(0,0,0,.68), inset 0 0 100px rgba(238,179,81,.12); } }
@keyframes resultFlashLoss { 0%,100%{} 30%{ box-shadow: 0 0 0 2px rgba(239,68,68,.5), 0 40px 100px rgba(0,0,0,.68), inset 0 0 100px rgba(239,68,68,.1); } }

/* ═══════════════════════════════════════════════════════════════
   2025 DESIGN REFRESH — professional, modern, less "AI template".
   Appended last so these rules win the cascade.
   ═══════════════════════════════════════════════════════════════ */


/* Remove the gimmicky grain/scanline overlays that read as "template". */
.grain, .scanlines { display:none !important; }

body{
  background:
    radial-gradient(1100px 600px at 80% -10%, rgba(198,158,96,.09), transparent 60%),
    radial-gradient(900px 500px at 0% 0%, rgba(170,150,120,.05), transparent 55%),
    var(--bg);
  color: var(--t1);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* ── Topbar: cleaner, tighter, glassy ── */
.topbar{
  background: linear-gradient(180deg, rgba(15,16,25,.84), rgba(11,11,18,.72));
  border-bottom: 1px solid rgba(238,179,81,.13);
  box-shadow: 0 4px 22px rgba(0,0,0,.36);
  -webkit-backdrop-filter: saturate(150%) blur(18px);
  backdrop-filter: saturate(150%) blur(18px);
}
.topbar-inner{ min-height: var(--topbar-h); width:min(1320px,95vw); gap:18px; }
.brand-icon{
  background: linear-gradient(145deg, var(--accent2), var(--accent));
  box-shadow: 0 6px 18px rgba(182,170,146,.28);
  border-radius: 12px;
}
.brand b{ color: var(--ink); letter-spacing:.06em; font-weight:400; }
.brand small{ color: var(--t3); }

/* Nav: flat, no pill-in-pill, clean underline on active */
.nav{
  background: transparent; border: 0; padding: 0; gap: 2px;
}
.nav a{
  color: var(--t2); font-weight: 600; font-size: 12.5px;
  border-radius: 10px; padding: 0 10px; min-height: 36px;
  border: 1px solid transparent;
}
@media (min-width: 1100px) and (max-width: 1540px){
  .nav a{ font-size: 11px; padding: 0 7px; }
}
.nav a:hover{ background: rgba(255,255,255,.05); color: var(--ink); }
.nav a.active{
  background: rgba(182,170,146,.14); color: var(--accent2);
  border-color: rgba(182,170,146,.30);
}
.daily-free-nav{ color: var(--gold2) !important; }

/* Account pills: subtle, modern */
.balance-pill{
  border-radius: 10px; border:1px solid rgba(238,179,81,.30);
  background: rgba(238,179,81,.08); color: var(--gold2);
}
.pill{
  border-radius: 10px; border:1px solid var(--ln2);
  background: rgba(255,255,255,.04); color: var(--t1);
}
.pill:hover{ background: rgba(255,255,255,.08); }
.pill.hot{
  background: linear-gradient(145deg, var(--accent2), var(--accent));
  border-color: transparent; color:#fff;
  box-shadow: 0 6px 16px rgba(182,170,146,.30);
}
.pill.hot:hover{ filter: brightness(1.06); }

/* Cards / sections: softer, flatter, less neon */
.section-block, .arena, .panel, .auth-card, .cf-card, .lb-card, .stat-card, .wallet-card{
  background: linear-gradient(180deg, var(--card2), var(--card));
  border: 1px solid var(--ln);
  border-radius: var(--radius);
  box-shadow: 0 1px 0 rgba(255,255,255,.02), 0 18px 50px rgba(0,0,0,.35);
}
.eyebrow{ color: var(--accent2); letter-spacing:.16em; }

/* Primary buttons everywhere → unified accent */
.btn-primary, .btn.primary, button.primary, .cta, .join-btn{
  background: linear-gradient(145deg, var(--accent2), var(--accent)) !important;
  border: 0 !important; color:#fff !important;
  box-shadow: 0 8px 22px rgba(182,170,146,.28) !important;
}
.btn-primary:hover, .btn.primary:hover, .join-btn:hover{ filter: brightness(1.06); }

/* Make the main content leave room for the fixed chat sidebar on wide screens */
@media (min-width: 1401px){
  body.chat-open main.page{ padding-right: 0; }
}

/* ══════════════════════════════════════════
   FULL-HEIGHT CHAT SIDEBAR (right side, under topbar)
   ══════════════════════════════════════════ */
.chat-drawer{
  position: fixed;
  top: var(--topbar-h);
  right: 0;
  bottom: 0;
  width: 340px;
  max-width: 88vw;
  z-index: 150;
  display: flex; flex-direction: column; align-items: stretch;
  background: linear-gradient(180deg, rgba(20,20,31,.98), rgba(11,11,18,.99));
  border-left: 1px solid var(--ln2);
  box-shadow: -16px 0 48px rgba(0,0,0,.4);
  transform: translateX(0);
  transition: transform .28s cubic-bezier(.4,0,.2,1);
}
/* Closed state slides it off-screen, leaving just the tab */
.chat-drawer.closed{ transform: translateX(100%); }

/* Re-open tab sits on the left edge of the panel */
.chat-toggle{
  position: absolute;
  left: -42px; top: 18px;
  width: 42px; min-height: 120px; padding: 0;
  flex-direction: column; gap: 8px;
  border-radius: 12px 0 0 12px;
  background: linear-gradient(145deg, var(--accent2), var(--accent));
  border: 1px solid rgba(255,255,255,.12); border-right: 0;
  box-shadow: -6px 0 18px rgba(182,170,146,.3);
  writing-mode: vertical-rl; text-orientation: mixed;
  font-size: 12px; letter-spacing: .12em; color:#fff;
}
.chat-toggle .chat-icon{ writing-mode: horizontal-tb; font-size:16px; }

/* The panel fills the whole drawer height now */
.chat-panel{
  width: 100%; height: 100%;
  border: 0; border-radius: 0;
  background: transparent;
  box-shadow: none;
  display: flex; flex-direction: column; overflow: hidden;
}
/* #12 — site logo pinned to the very top of the chat column, hard-left aligned */
.chat-drawer.closed .chat-panel{ display: flex; }   /* keep mounted; drawer slides */
.chat-head{
  padding: 14px 16px;
  background: rgba(182,170,146,.08);
  border-bottom: 1px solid var(--ln);
}
.chat-head strong{ color: var(--accent2); font-size: 14px; }
.chat-messages{ padding: 12px; gap: 3px; }
.chat-message{
  background: rgba(255,255,255,.035);
  border: 1px solid var(--ln);
  border-radius: 10px;
  transition: background .16s ease, border-color .16s ease;
}
.chat-message:hover{ background: rgba(238,179,81,.06); border-color: rgba(238,179,81,.2); }
.chat-message.chat-mentions-me{ background: rgba(238,179,81,.11) !important; border-color: rgba(238,179,81,.36) !important; box-shadow: inset 2px 0 0 var(--accent,#eeb351); }
.chat-message b{ color: var(--accent2); }
.chat-form{ padding: 12px; border-top: 1px solid var(--ln); }
.chat-form input{ border-radius: 10px; background: rgba(0,0,0,.35); }
.chat-form input:focus{ border-color: var(--accent); box-shadow: 0 0 0 3px rgba(238,179,81,.13); }
.chat-form button{ border-radius: 10px; background: var(--accent); }
.chat-form button:hover{ background: var(--accent2); }

/* On narrow screens the chat overlays content full-height instead of reserving space */
@media (max-width: 1099px){
  main.page{ padding-right: 0; }
  .chat-drawer{ width: 320px; }
}

/* ══════════════════════════════════════════
   GENERIC MODAL (used by Daily claim + others)
   ══════════════════════════════════════════ */
.app-modal{
  position: fixed; inset: 0; z-index: 2000;
  display: none; align-items: center; justify-content: center; padding: 20px;
}
.app-modal.open{ display: flex; }
/* The shared confirm dialog is opened FROM other modals (e.g. the withdraw sheet), so it must always sit
   above them — otherwise, being earlier in the DOM at the same z-index, it hides behind them. */
#confirmModal{ z-index: 2100 !important; }
.app-modal__overlay{
  position:absolute; inset:0; background: rgba(6,6,12,.72);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  animation: amFade .2s ease;
}
.app-modal__card{
  position: relative; z-index:1; width:100%; max-width: 380px;
  border-radius: 18px; border:1px solid var(--ln2);
  background: linear-gradient(180deg, var(--card2), var(--card));
  box-shadow: 0 30px 90px rgba(0,0,0,.6);
  padding: 28px 24px; text-align: center;
  animation: amPop .26s cubic-bezier(.2,1.1,.4,1);
}
@keyframes amFade{ from{opacity:0} to{opacity:1} }
@keyframes amPop{ 0%{opacity:0; transform: translateY(14px) scale(.96)} 100%{opacity:1; transform:none} }
.app-modal__close{
  position:absolute; top:12px; right:12px; width:32px; height:32px;
  border-radius:9px; border:1px solid var(--ln); background: rgba(255,255,255,.04);
  color: var(--t2); cursor:pointer;
}
.app-modal__close:hover{ background: rgba(239,68,68,.16); color:#fca5a5; }
.app-modal__icon{ font-size: 46px; line-height:1; margin-bottom: 10px; }
.app-modal__title{ font-family: var(--fd); font-size: 26px; letter-spacing:.03em; color: var(--ink); margin-bottom: 6px; }
.app-modal__amount{ font-family: var(--fd); font-size: 52px; color: var(--gold2); line-height:1; margin: 6px 0 4px; }
.app-modal__text{ color: var(--t2); font-size: 14px; margin-bottom: 18px; }
.app-modal__btn{
  width:100%; min-height: 46px; border:0; border-radius: 12px; cursor:pointer;
  font-weight:700; font-size: 15px; color:#fff;
  background: linear-gradient(145deg, var(--accent2), var(--accent));
  box-shadow: 0 8px 22px rgba(182,170,146,.3);
}
.app-modal__btn:hover{ filter: brightness(1.07); }
.app-modal__btn:disabled{ opacity:.55; cursor:default; filter:none; }
.app-modal__btn.gold{ background: linear-gradient(145deg, var(--gold2), var(--gold)); color:#231a02; box-shadow:0 8px 22px rgba(238,179,81,.3); }

/* Empty fighter-seat character silhouette */
.empty-char{ width: 96px; height: 134px; opacity:.9; display:block; margin: 0 auto 8px; }
.empty-seat{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; }
.empty-seat b{ color: var(--t2); font-size: 15px; }
.empty-seat span{ color: var(--t3); font-size: 12px; }

/* "Searching for a challenger" — the empty seat actively scans so the lobby never
   reads as frozen while a Champion waits for an opponent. Pure CSS, no JS timers. */
.es-ring{ /* rotation now handled by an SVG <animateTransform> (reliable centre in every browser — the old CSS transform-box:fill-box could rotate around the wrong origin, the "slides down then fixes" glitch) */ }.es-pulse{ transform-box: fill-box; transform-origin: 50% 50%; animation: esPulse 2.2s ease-out infinite; }
@keyframes esPulse{ 0%{ transform: scale(.55); opacity:.75; } 70%{ opacity:0; } 100%{ transform: scale(2.05); opacity:0; } }
.es-q{ animation: esQ 2.2s ease-in-out infinite; }
@keyframes esQ{ 0%,100%{ opacity:.45; } 50%{ opacity:.95; } }
.es-label{ display:inline-flex; align-items:baseline; }   /* static — no opacity pulse (waiting area must not blink) */.es-dots{ display:inline-block; width:1.05em; text-align:left; font-style:normal; }
/* Static "…" — the cycling ellipsis was read as the panel flickering ("sometimes 3 dots,
   sometimes 2"). A waiting seat is already visually calm; animating the dots gave it a
   twitch with no information in it. */
.es-dots::after{ content:"..."; }
@keyframes esDots{ 0%{ content:""; } 25%{ content:"."; } 50%{ content:".."; } 75%{ content:"..."; } 100%{ content:""; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .es-ring,.es-pulse,.es-q,.es-label,.es-dots::after{ animation: none; }
  .es-dots::after{ content:"..."; }
}

/* Lone Champion "holding the throne" — a calm golden pulse on their panel while they
   wait for a challenger, so the held seat reads as READY (paired with the scanning
   empty seat). Combat-safe: the class is only toggled on in the waiting state. */
.player-panel.champ-ready{
  border-color: rgba(255,201,94,.42);
  animation: champReady 2.6s ease-in-out infinite;
}
@keyframes champReady{
  0%,100%{ box-shadow: 0 0 0 1px rgba(255,201,94,.10), 0 0 22px -8px rgba(255,190,80,.32); }
  50%    { box-shadow: 0 0 0 1px rgba(255,201,94,.30), 0 0 38px -4px rgba(255,190,80,.58); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .player-panel.champ-ready{ animation:none; box-shadow: 0 0 0 1px rgba(255,201,94,.22); }
}

/* Guest CTA buttons — cleaner */
.guest-cta{ display:flex; flex-direction:column; gap:10px; align-items:stretch; text-align:center; }
.guest-cta p{ color: var(--t2); font-size: 14px; margin-bottom: 4px; }
.btn-ghost{
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  min-height: 44px; border-radius: 12px;
  border:1px solid var(--ln2); background: rgba(255,255,255,.04);
  color: var(--t1); font-weight:700; font-size:14px;
  transition: background .16s, border-color .16s;
}
.btn-ghost:hover{ background: rgba(255,255,255,.08); border-color: var(--accent); }

/* Call Bot button (coinflip own game) */
/* ═══════════════════════════════════════════════════════════════
   RUST THEME — industrial, weathered, survival aesthetic.
   Inspired by the Rust (Facepunch) game palette: burnt orange,
   gunmetal, rusted steel. Appended last to win the cascade.
   ═══════════════════════════════════════════════════════════════ */


body{
  background:
    radial-gradient(1100px 600px at 80% -10%, rgba(182,170,146,.12), transparent 60%),
    radial-gradient(900px 500px at 0% 0%, rgba(196,184,158,.06), transparent 55%),
    var(--rust-bg);
}

/* Topbar / brand */
.topbar{ background: rgba(15,13,24,.82); border-bottom:1px solid var(--rust-ln); }
.brand-icon{ background: linear-gradient(145deg, var(--rust3), var(--rust)); box-shadow:0 6px 18px rgba(182,170,146,.34); }
.brand b{ letter-spacing:.08em; }

/* Nav active = purple */
.nav a.active{ background: rgba(182,170,146,.18); color: var(--rust3); border-color: rgba(196,184,158,.32); }
.nav a:hover{ color:#fff; }

/* Cards → weathered metal panels */
.section-block, .arena, .panel, .auth-card, .cf-card, .lb-card, .stat-card,
.wallet-card, .player-panel, .cf-game-row, .app-modal__card, .chat-panel,
.cf-modal-stage, .section, .stat-box{
  background: linear-gradient(180deg, var(--rust-card2), var(--rust-card));
  border: 1px solid var(--rust-ln);
}
.eyebrow{ color: var(--rust3); }

/* Primary buttons → rust gradient */
.btn-primary, .btn.primary, button.primary, .cta, .join-btn, .cf-join-btn,
.app-modal__btn, #joinBtn, .chat-form button{
  background: linear-gradient(145deg, var(--rust3), var(--rust)) !important;
  border:0 !important; color:#fff !important;
  box-shadow: 0 8px 22px rgba(182,170,146,.32) !important;
}
.btn-primary:hover, .join-btn:hover, .cf-join-btn:hover{ filter:brightness(1.08); }

/* Chat accents */
.chat-drawer{ background: linear-gradient(180deg, rgba(34,28,24,.98), rgba(20,17,15,.99)); border-left:1px solid var(--rust-ln2); }
.chat-head{ background: rgba(182,170,146,.10); }
.chat-head strong, .chat-message b{ color: var(--rust3); }
.chat-toggle{ background: linear-gradient(145deg, var(--rust3), var(--rust)); box-shadow:-6px 0 18px rgba(182,170,146,.3); }

/* Prize pool / hero accents stay warm */
.hero-pool-display, .prize-pool-box{ border-color: rgba(196,184,158,.25); }

/* HP bar → rust health */
/* Old bottom-bar fills kept rust-tinted; the top HP bars use health colors
   (green→red) for clarity — see .health-section-top rules below. */
.hp-fill{
  background: linear-gradient(90deg, var(--rust2), var(--rust3)) !important;
}

/* Duel "VS" + accents */
.cf-vs-text, .vs-text{ color: var(--rust3); }

/* Section titles underline */
.section-title h3{ border-bottom-color: var(--rust-ln2); }

/* Champion/Challenger seat labels + VS → rust palette */
.seat-badge b{ color: var(--rust3) !important; }
.champion-badge .seat-badge b{ color: var(--gold2) !important; }
.cf-modal-stage strong, .arena strong[style*="red2"], .vs-badge strong{ color: var(--rust3) !important; }

/* ── Rust brand icon (SVG plate) ── */
.brand-icon-rust{
  width: 42px; height: 42px; padding: 0; background: transparent !important;
  box-shadow: none !important; display: inline-flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 4px 10px rgba(182,170,146,.4));
}
.brand-icon-rust svg{ width: 100%; height: 100%; }

/* ── Weathered metal texture on key panels (subtle, industrial) ── */
.arena, .section-block, .cf-card, .lb-card, .wallet-card, .auth-card{
  position: relative;
  background-image:
    linear-gradient(180deg, var(--rust-card2), var(--rust-card)),
    repeating-linear-gradient(135deg, rgba(0,0,0,.05) 0 2px, transparent 2px 5px);
  background-blend-mode: normal, overlay;
}
/* corner rivets on the arena + section blocks for that bolted-plate look */
.arena::before, .arena::after{
  content:""; position:absolute; width:7px; height:7px; border-radius:50%;
  background: radial-gradient(circle at 35% 35%, #5a4a42, #1a120e);
  box-shadow: inset 0 0 2px rgba(0,0,0,.8);
  top: 12px; pointer-events:none; z-index:1;
}
.arena::before{ left: 12px; }
.arena::after{ right: 12px; }

/* Warmer, grittier scrollbar */
::-webkit-scrollbar{ width: 10px; height: 10px; }
::-webkit-scrollbar-track{ background: var(--rust-bg2); }
::-webkit-scrollbar-thumb{ background: linear-gradient(180deg,#5a352a,#3a201a); border-radius: 6px; border: 2px solid var(--rust-bg2); }
::-webkit-scrollbar-thumb:hover{ background: linear-gradient(180deg,#7a4636,#4a281f); }

/* "LIVE ARENA" eyebrow → ember glow */
.eyebrow{ text-shadow: 0 0 12px rgba(196,184,158,.3); }

/* Hero title — slightly more rugged */
.page-hero h1, .hero-title{ text-shadow: 0 2px 20px rgba(182,170,146,.18); }

/* ── Modern brand wordmark ── */
.brand-text b{
  font-family: var(--fd, 'Bebas Neue', sans-serif);
  font-size: 25px; letter-spacing: .06em; line-height: .95;
  color: #f4ece6; display:flex; gap:.18em; align-items:baseline;
}
.brand-text .brand-accent{ color: var(--rust3); }
.brand-text small{
  display:block; font-size: 9.5px; letter-spacing: .34em; text-transform: uppercase;
  color: var(--t3); margin-top: 2px;
}
.brand-icon-rust{ filter: drop-shadow(0 3px 12px rgba(196,184,158,.45)); transition: transform .2s; }
.brand:hover .brand-icon-rust{ transform: rotate(-6deg) scale(1.05); }

/* ── Fix leftover purple in hero titles → rust gradient ── */
.arena-header h1, .page-hero h1, .hero-title, .auth-card h1{
  background: linear-gradient(135deg, #fff 28%, var(--rust3)) !important;
  -webkit-background-clip: text !important; -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}

/* ── Coinflip legend: keep dots + text vertically centered (fix shift) ── */
.cf-legend{ display:flex; gap:22px; justify-content:center; align-items:center; flex-wrap:wrap; }
.cf-legend-item{ display:inline-flex; align-items:center; gap:8px; line-height:1; }
.cf-legend-dot{ flex:0 0 auto; width:11px; height:11px; border-radius:50%; display:inline-block; }

/* ── Chat 'Login to chat' + messages: align tidy ── */
.chat-login-row, .chat-foot-note{ text-align:center; }

/* Inline button icon (SVG) */
.btn-ico{ width:17px; height:17px; vertical-align:-3px; margin-right:6px; display:inline-block; }
.btn-ghost{ display:inline-flex; align-items:center; justify-content:center; }

/* ═══════════════ LEVEL / XP ═══════════════ */
.level-card{ background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln); border-radius:14px; padding:18px; margin-bottom:16px; }
.level-head{ display:flex; align-items:center; gap:14px; margin-bottom:12px; }
.level-badge{ flex:0 0 auto; width:54px; height:54px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-family:var(--fd); font-size:18px; color:#fff; background:linear-gradient(145deg,var(--rust3),var(--rust)); box-shadow:0 6px 16px rgba(182,170,146,.35); }
.level-title{ font-weight:700; font-size:15px; color:var(--t1); }
.level-xp{ font-size:12.5px; color:var(--t2); margin-top:2px; }
.level-bar{ height:12px; border-radius:7px; background:rgba(0,0,0,.4); overflow:hidden; border:1px solid var(--rust-ln); }
.level-fill{ height:100%; background:linear-gradient(90deg,var(--rust2),var(--rust3)); border-radius:7px; transition:width .5s ease; box-shadow:0 0 12px rgba(196,184,158,.5); }
.level-hint{ font-size:11.5px; color:var(--t3); margin-top:8px; }

/* ═══════════════ AFFILIATE ═══════════════ */
.aff-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
@media(max-width:860px){ .aff-grid{ grid-template-columns:1fr; } }
.aff-code-box{ text-align:center; padding:18px; border-radius:12px; background:rgba(182,170,146,.08); border:1px dashed var(--rust-ln2); margin-bottom:14px; }
.aff-code-label{ font-size:11px; text-transform:uppercase; letter-spacing:.16em; color:var(--t3); margin-bottom:6px; }
.aff-code{ font-family:var(--fd); font-size:34px; letter-spacing:.1em; color:var(--rust3); }
.aff-link-row{ display:flex; gap:8px; }
.aff-link-input{ flex:1; min-height:44px; padding:0 14px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); font-size:13px; }
.aff-link-row .btn-primary{ min-height:44px; padding:0 22px; border-radius:10px; }
.aff-hint{ font-size:12px; color:var(--t3); margin-top:10px; }
.aff-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.aff-stat{ text-align:center; padding:16px 8px; border-radius:12px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); }
.aff-stat-num{ font-family:var(--fd); font-size:28px; color:var(--rust3); }
.aff-stat-lbl{ font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--t3); margin-top:4px; }
.aff-list{ display:flex; flex-direction:column; gap:8px; }
.aff-row{ display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:10px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); }
.aff-row-name{ font-weight:700; color:var(--t1); flex:1; }
.aff-row-lvl{ font-size:12px; color:var(--rust3); font-weight:700; }
.aff-row-date{ font-size:12px; color:var(--t3); }

/* ═══════════════ ADMIN ═══════════════ */
.admin-notice{ background:rgba(34,197,94,.12); border:1px solid rgba(34,197,94,.4); color:#f4cd84; padding:12px 16px; border-radius:10px; margin-bottom:16px; }
.admin-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(148px,1fr)); gap:12px; margin-bottom:20px; }
@media(max-width:520px){ .admin-stats{ grid-template-columns:repeat(2,1fr); } }
/* Stat-group label (Overview / Games / Last 24h) on the Stats page */
.adm-stats-group{ font-family:var(--fu); font-weight:800; font-size:12px; text-transform:uppercase; letter-spacing:.14em; color:var(--gold2); margin:4px 0 11px; display:flex; align-items:center; gap:10px; }
.adm-stats-group::after{ content:""; flex:1; height:1px; background:linear-gradient(90deg,var(--rust-ln),transparent); }
/* Admin page-by-page navigation (each section is its own page) */
.admin-nav{ display:flex; flex-wrap:wrap; gap:5px; margin-bottom:22px; padding:7px; background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(0,0,0,.16)); border:1px solid var(--rust-ln); border-radius:14px; }
.admin-nav-tab{ font-family:var(--fu); font-weight:700; font-size:13px; color:var(--t2); text-decoration:none; padding:8px 14px; border-radius:9px; background:transparent; border:1px solid transparent; transition:background .15s,border-color .15s,color .15s,transform .08s; }
.admin-nav-tab:hover{ color:var(--t1); border-color:var(--rust-ln); background:rgba(255,255,255,.05); }
.admin-nav-tab.active{ color:#1a1205; background:linear-gradient(180deg,#f4cd84,#eeb351); border-color:#eeb351; box-shadow:0 4px 14px rgba(238,179,81,.25); }
.admin-nav-tab:active{ transform:translateY(1px); }
@media(max-width:680px){ .admin-nav-tab{ flex:1 1 auto; text-align:center; padding:8px 8px; font-size:12px; } }
.admin-stat{ position:relative; text-align:center; padding:18px 10px 15px; border-radius:14px; background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln); overflow:hidden; transition:transform .12s ease, border-color .15s ease, box-shadow .15s ease; }
.admin-stat::before{ content:""; position:absolute; top:0; left:0; right:0; height:2px; background:linear-gradient(90deg,transparent,var(--gold2),transparent); opacity:.5; }
.admin-stat:hover{ transform:translateY(-2px); border-color:var(--p); box-shadow:0 10px 24px rgba(0,0,0,.28); }
.admin-stat-num{ font-family:var(--fd); font-size:25px; color:var(--rust3); display:inline-flex; align-items:center; gap:5px; justify-content:center; }
.admin-stat-num .coin-ico{ width:17px; height:17px; }
.admin-stat-lbl{ font-size:10.5px; text-transform:uppercase; letter-spacing:.09em; color:var(--t3); margin-top:5px; }
.admin-search{ display:flex; gap:8px; margin-bottom:14px; }
.admin-search input{ flex:1; min-height:42px; padding:0 14px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); }
.admin-search .btn-primary{ min-height:42px; padding:0 20px; border-radius:10px; }
.admin-users{ display:flex; flex-direction:column; gap:4px; }
.admin-uhead, .admin-urow{ display:grid; grid-template-columns:54px 1.6fr 1fr .6fr .7fr 2.4fr; gap:10px; align-items:center; padding:10px 12px; }
.admin-uhead{ font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--t3); border-bottom:1px solid var(--rust-ln); }
.admin-urow{ border-radius:9px; background:rgba(0,0,0,.2); border:1px solid var(--rust-ln); }
.admin-urow.is-banned{ opacity:.6; border-color:rgba(239,68,68,.4); }
.adm-id{ color:var(--t3); font-size:12px; }
.adm-user{ font-weight:700; color:var(--t1); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.adm-bal{ color:var(--gold2); font-weight:700; }
.adm-lvl{ color:var(--rust3); font-size:13px; }
.adm-wl{ color:var(--t2); font-size:13px; }
.adm-badge{ font-size:9px; font-style:normal; padding:2px 5px; border-radius:4px; letter-spacing:.05em; }
.adm-badge.admin{ background:rgba(196,184,158,.2); color:var(--rust3); }
.adm-badge.ban{ background:rgba(239,68,68,.2); color:#fca5a5; }
.adm-actions{ display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.adm-inline{ display:inline-flex; gap:4px; align-items:center; }
.adm-amt{ width:64px; min-height:32px; padding:0 8px; border-radius:7px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.4); color:var(--t1); font-size:12px; }
.adm-btn{ min-height:32px; padding:0 12px; border-radius:7px; border:0; cursor:pointer; font-size:12px; font-weight:700; color:#fff; background:var(--steel); }
.adm-btn:hover{ filter:brightness(1.15); }
.adm-ok{ background:linear-gradient(145deg,#16a34a,#15803d); }
.adm-no{ background:linear-gradient(145deg,#dc2626,#b91c1c); }
.admin-wreq{ display:flex; align-items:center; gap:16px; padding:12px 14px; border-radius:10px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); margin-bottom:6px; }
.admin-wreq form{ margin-left:auto; }

/* ═══════════════════════════════════════════════════════════════
   LANDING PAGE — gritty Rust survival splash
   ═══════════════════════════════════════════════════════════════ */
.landing{ width:100%; }
.landing .lp-section, .landing .lp-final{ width:min(1180px,92vw); margin:0 auto; }

/* HERO */
.lp-hero{ position:relative; overflow:hidden; padding:80px 0 70px; margin-bottom:20px; }
.lp-hero-bg{
  position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(900px 480px at 78% 8%, rgba(196,184,158,.18), transparent 62%),
    radial-gradient(700px 420px at 8% 90%, rgba(182,170,146,.14), transparent 60%),
    repeating-linear-gradient(135deg, rgba(0,0,0,.05) 0 3px, transparent 3px 7px);
}
.lp-hero-inner{ position:relative; z-index:1; width:min(1180px,92vw); margin:0 auto; text-align:center; }
.lp-eyebrow{
  display:inline-block; font-size:12px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--rust3); background:rgba(182,170,146,.1); border:1px solid var(--rust-ln2);
  padding:7px 16px; border-radius:999px; margin-bottom:24px; text-shadow:0 0 12px rgba(196,184,158,.3);
}
.lp-title{
  font-family:var(--fd,'Bebas Neue',sans-serif); font-size:clamp(54px,9vw,118px);
  line-height:.88; letter-spacing:.02em; margin:0 0 22px; color:#f4ece6;
  text-shadow:0 4px 30px rgba(0,0,0,.5);
}
.lp-title-accent{
  background:linear-gradient(135deg,var(--rust3),var(--rust));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.lp-sub{ max-width:620px; margin:0 auto 32px; font-size:18px; line-height:1.6; color:var(--t2); }
.lp-cta-row{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-bottom:46px; }
.lp-btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:54px; padding:0 32px; border-radius:13px; font-weight:800; font-size:16px;
  letter-spacing:.02em; cursor:pointer; transition:transform .15s, filter .15s, box-shadow .15s; text-decoration:none;
}
.lp-btn-primary{ background:linear-gradient(145deg,var(--rust3),var(--rust)); color:#fff; box-shadow:0 12px 30px rgba(182,170,146,.4); }
.lp-btn-primary:hover{ transform:translateY(-2px); filter:brightness(1.08); box-shadow:0 16px 38px rgba(182,170,146,.5); }
.lp-btn-ghost{ background:rgba(255,255,255,.05); color:var(--t1); border:1px solid var(--rust-ln2); }
.lp-btn-ghost:hover{ background:rgba(255,255,255,.1); transform:translateY(-2px); }
.lp-btn-lg{ min-height:60px; padding:0 44px; font-size:18px; }
.lp-stats{ display:flex; gap:48px; justify-content:center; flex-wrap:wrap; }
.lp-stat-n{ font-family:var(--fd); font-size:40px; color:var(--rust3); line-height:1; }
.lp-stat-l{ font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--t3); margin-top:6px; }

/* SECTIONS */
.lp-section{ padding:54px 0; }
.lp-section-alt{ background:rgba(0,0,0,.18); border-top:1px solid var(--rust-ln); border-bottom:1px solid var(--rust-ln); width:100%!important; }
.lp-section-alt .lp-sec-head, .lp-section-alt .lp-features{ width:min(1180px,92vw); margin-left:auto; margin-right:auto; }
.lp-sec-head{ text-align:center; margin-bottom:40px; }
.lp-sec-eyebrow{ display:block; font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--rust3); margin-bottom:10px; }
.lp-sec-head h2{ font-family:var(--fd); font-size:clamp(32px,5vw,52px); letter-spacing:.02em; color:#f4ece6; margin:0; }

/* MODES */
.lp-modes{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
@media(max-width:760px){ .lp-modes{ grid-template-columns:1fr; } }
.lp-mode{
  display:block; padding:34px; border-radius:18px; text-decoration:none;
  background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln);
  transition:transform .18s, border-color .18s, box-shadow .18s; position:relative; overflow:hidden;
}
.lp-mode::after{ content:""; position:absolute; inset:0; background:radial-gradient(400px 200px at 70% 0%,rgba(196,184,158,.08),transparent 70%); opacity:0; transition:opacity .2s; }
.lp-mode:hover{ transform:translateY(-4px); border-color:var(--rust-ln2); box-shadow:0 20px 50px rgba(0,0,0,.4); }
.lp-mode:hover::after{ opacity:1; }
.lp-mode-icon{ font-size:46px; margin-bottom:16px; }
.lp-mode h3{ font-family:var(--fd); font-size:30px; letter-spacing:.03em; color:#f4ece6; margin:0 0 10px; }
.lp-mode p{ color:var(--t2); line-height:1.6; margin:0 0 18px; font-size:15px; }
.lp-mode-link{ color:var(--rust3); font-weight:800; font-size:15px; }

/* FEATURES */
.lp-features{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
@media(max-width:860px){ .lp-features{ grid-template-columns:1fr 1fr; } }
@media(max-width:520px){ .lp-features{ grid-template-columns:1fr; } }
.lp-feature{ padding:24px; border-radius:14px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); }
.lp-feat-ico{ font-size:30px; margin-bottom:12px; }
.lp-feature h4{ font-size:17px; color:#f4ece6; margin:0 0 8px; }
.lp-feature p{ color:var(--t3); font-size:14px; line-height:1.55; margin:0; }

/* STEPS */
.lp-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
@media(max-width:760px){ .lp-steps{ grid-template-columns:1fr; } }
.lp-step{ text-align:center; padding:28px 20px; border-radius:14px; background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln); }
.lp-step-n{ width:52px; height:52px; margin:0 auto 16px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-family:var(--fd); font-size:24px; color:#fff; background:linear-gradient(145deg,var(--rust3),var(--rust)); box-shadow:0 8px 20px rgba(182,170,146,.35); }
.lp-step h4{ font-size:18px; color:#f4ece6; margin:0 0 8px; }
.lp-step p{ color:var(--t3); font-size:14px; line-height:1.55; margin:0; }

/* FINAL CTA */
.lp-final{ text-align:center; padding:64px 30px; margin:30px auto 50px; border-radius:22px;
  background:radial-gradient(700px 300px at 50% 0%,rgba(182,170,146,.16),transparent 70%), linear-gradient(180deg,var(--rust-card2),var(--rust-card));
  border:1px solid var(--rust-ln2); }
.lp-final h2{ font-family:var(--fd); font-size:clamp(34px,5vw,56px); color:#f4ece6; margin:0 0 12px; letter-spacing:.02em; }
.lp-final p{ color:var(--t2); font-size:17px; margin:0 0 28px; }

/* Landing pages don't reserve chat space awkwardly — full width hero */
body.chat-open .landing .lp-section-alt{ }

/* ── Affiliate custom code + tip modal fields ── */
.aff-custom{ margin-top:18px; padding-top:18px; border-top:1px solid var(--rust-ln); }
.aff-custom-title{ font-weight:700; color:var(--t1); margin-bottom:10px; font-size:14px; }
.aff-custom-row{ display:flex; gap:8px; }
.aff-custom-row input{ flex:1; min-height:44px; padding:0 14px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); font-family:var(--fd); font-size:18px; letter-spacing:.08em; text-transform:uppercase; }
.aff-custom-row .btn-primary{ min-height:44px; padding:0 20px; border-radius:10px; white-space:nowrap; }
.aff-msg{ padding:9px 12px; border-radius:9px; font-size:13px; margin-bottom:10px; }
.aff-msg.ok{ background:rgba(34,197,94,.12); border:1px solid rgba(34,197,94,.4); color:#f4cd84; }
.aff-msg.err{ background:rgba(239,68,68,.12); border:1px solid rgba(239,68,68,.4); color:#fca5a5; }

/* Tip modal */
.chat-head-actions{ display:flex; align-items:center; gap:8px; flex:0 0 auto; margin-left:auto; }
.chat-tip-btn{ width:auto!important; height:auto!important; min-height:30px; padding:0 12px!important; border-radius:8px; border:0; cursor:pointer; font-weight:700; font-size:12px; color:#0c0c12; background:linear-gradient(145deg,var(--gold2),var(--gold))!important; display:inline-flex!important; align-items:center; white-space:nowrap; }
.tip-field{ text-align:left; margin-bottom:12px; }
.tip-field label{ display:block; font-size:12px; text-transform:uppercase; letter-spacing:.1em; color:var(--t3); margin-bottom:5px; }
.tip-field input{ width:100%; min-height:44px; padding:0 14px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.4); color:var(--t1); font-size:15px; }
.tip-field input:focus{ border-color:var(--rust3); outline:none; }
.tip-msg{ min-height:18px; font-size:13px; margin-bottom:10px; }
.tip-msg.ok{ color:#f4cd84; }
.tip-msg.err{ color:#fca5a5; }

/* Admin tools section */
.admin-tools{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media(max-width:760px){ .admin-tools{ grid-template-columns:1fr; } }
.admin-tool label{ display:block; font-size:13px; color:var(--t2); margin-bottom:8px; font-weight:600; }
.admin-tool-row{ display:flex; gap:8px; }
.admin-tool-row input{ flex:1; min-height:42px; padding:0 14px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); }
.admin-tool-row .btn-primary{ min-height:42px; padding:0 18px; border-radius:10px; white-space:nowrap; }

/* ═══════════════ NOTIFICATIONS BELL ═══════════════ */
.notif-wrap{ position:relative; z-index:1100; }
.notif-bell{ position:relative; width:40px; height:40px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(255,255,255,.04); cursor:pointer; font-size:17px; display:inline-flex; align-items:center; justify-content:center; }
.notif-bell:hover{ background:rgba(255,255,255,.08); }
.notif-bell .notif-bell-ico{ display:inline-flex; align-items:center; justify-content:center; }
.notif-bell .notif-bell-ico svg{ width:20px; height:20px; color:var(--t2); }
.notif-bell:hover .notif-bell-ico svg{ color:var(--t1); }
/* Just a small GREEN dot when there are unread notifications — no number, no movement. */
.notif-badge{ position:absolute; top:-2px; right:-2px; min-width:10px; width:10px; height:10px; padding:0; border-radius:50%; background:#22c55e; color:transparent; font-size:0; line-height:0; border:none; box-shadow:0 0 0 2px var(--rust-bg2,#16120d), 0 1px 5px rgba(34,197,94,.65); }
.notif-panel{ position:absolute; top:50px; right:0; width:320px; max-height:420px; overflow-y:auto; background:linear-gradient(180deg,#1e1933,#10131e); border:1px solid var(--rust-ln2); border-radius:14px; box-shadow:0 20px 50px rgba(0,0,0,.6); z-index:1200; }
/* The dropdown normally anchors to the bell's right edge and opens leftward — fine when the bell sits
   on the RIGHT of the topbar. But on the compact topbar (≤1150px, where the hamburger appears) the bell
   moves to the LEFT next to the menu button, so opening leftward runs the panel past the LEFT edge of
   the screen and clips it ("bildirim sol tarafta kaybolarak açılıyor"). There, flip it to open
   RIGHTWARD from the bell: align its LEFT edge to the bell and clamp the width so it also cannot spill
   off the right. position:absolute is kept, so it still hangs directly under the bell at any topbar
   height. */
.notif-panel{ max-width:calc(100vw - 20px); }
@media (max-width:1150px){
  .notif-panel{ left:0; right:auto; width:min(320px, calc(100vw - 130px)); max-width:none; }
}
.notif-head{ padding:14px 16px; font-weight:700; color:var(--t1); border-bottom:1px solid var(--rust-ln); font-size:14px; }
.notif-list{ padding:6px; }
.notif-item{ padding:11px 12px; border-radius:9px; display:flex; flex-direction:column; gap:3px; }
.notif-item:hover{ background:rgba(255,255,255,.03); }
.notif-msg{ font-size:13px; color:var(--t1); line-height:1.4; }
.notif-time{ font-size:11px; color:var(--t3); }
.notif-empty{ padding:24px; text-align:center; color:var(--t3); font-size:13px; }

/* ═══════════════ REWARDS PAGE ═══════════════ */
.rw-level{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.rw-level-mid{ flex:1; min-width:200px; }
.rw-level-mid .level-bar{ margin-top:8px; }
.rw-level-claim{ flex:0 0 auto; }
.rw-level-claim .app-modal__btn{ min-width:160px; }
.rw-nothing{ color:var(--t3); font-size:13px; font-style:italic; }
.rw-hint{ font-size:12.5px; color:var(--t3); margin-top:14px; }
.rw-reset{ font-size:11px; color:var(--t3); font-weight:400; text-transform:none; letter-spacing:0; margin-left:8px; }

.rw-tasks{ display:flex; flex-direction:column; gap:10px; }
.rw-task{ display:flex; align-items:center; gap:16px; padding:14px 16px; border-radius:12px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); }
.rw-task-info{ flex:1; }
.rw-task-label{ font-weight:700; color:var(--t1); font-size:14px; margin-bottom:7px; }
.rw-task-bar{ height:8px; border-radius:5px; background:rgba(0,0,0,.4); overflow:hidden; border:1px solid var(--rust-ln); }
.rw-task-fill{ height:100%; background:linear-gradient(90deg,var(--rust2),var(--rust3)); border-radius:5px; transition:width .4s; }
.rw-task-prog{ font-size:11.5px; color:var(--t3); margin-top:5px; }
.rw-task-reward{ flex:0 0 auto; text-align:right; display:flex; flex-direction:column; align-items:flex-end; gap:6px; }
.rw-task-amt{ font-family:var(--fd); font-size:20px; color:var(--gold2); }
.rw-claim-btn{ min-height:34px; padding:0 18px; border-radius:9px; border:0; cursor:pointer; font-weight:800; font-size:13px; color:#0c0c12; background:linear-gradient(145deg,var(--gold2),var(--gold)); }
.rw-claim-btn:hover{ filter:brightness(1.08); }
.rw-claimed{ font-size:12px; color:#f4cd84; font-weight:700; }
.rw-locked{ font-size:12px; color:var(--t3); }

.rw-achs{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
@media(max-width:860px){ .rw-achs{ grid-template-columns:repeat(2,1fr); } }
@media(max-width:520px){ .rw-achs{ grid-template-columns:1fr 1fr; } }
.rw-ach{ text-align:center; padding:20px 12px; border-radius:14px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); transition:transform .15s; }
.rw-ach.unlocked{ border-color:var(--rust-ln2); background:linear-gradient(180deg,rgba(196,184,158,.08),rgba(0,0,0,.2)); }
.rw-ach.unlocked:hover{ transform:translateY(-3px); }
.rw-ach.locked{ opacity:.5; }
.rw-ach-icon{ font-size:34px; margin-bottom:10px; }
.rw-ach-name{ font-weight:700; color:var(--t1); font-size:14px; margin-bottom:5px; }
.rw-ach-desc{ font-size:12px; color:var(--t3); line-height:1.4; }
.rw-ach-count{ font-size:13px; color:var(--rust3); font-weight:700; }

/* ═══════════════════════════════════════════════════════════════
   MOBILE RESPONSIVENESS — fixes overflow + chat behavior
   ═══════════════════════════════════════════════════════════════ */
@media (max-width: 1099px){
  /* Chat must never push page content on tablet/mobile — it overlays instead */
  body.chat-open main.page{ padding-right: 0 !important; }
}
@media (max-width: 820px){
  /* Prevent any horizontal overflow site-wide (overflow-x on BODY ONLY — see body rule;
     html+body pair spawns a second vertical scrollbar) */
  html, body{ max-width:100%; }

  /* Chat drawer becomes a full-screen overlay, closed unless toggled open */
  .chat-drawer{ position:fixed; top:auto; bottom:0; right:0; left:0; width:100%; height:auto; z-index:300; }
  .chat-panel{
    position:fixed; top:0; right:0; bottom:0;
    width:min(340px,86vw); transform:translateX(100%);
    transition:transform .25s ease; box-shadow:-10px 0 40px rgba(0,0,0,.6);
  }
  body:not(.chat-closed) .chat-panel{ } /* default state handled by JS */
  .chat-drawer:not(.closed) .chat-panel{ transform:translateX(0); }
  .chat-drawer.closed .chat-panel{ transform:translateX(100%); }
  /* Floating toggle button bottom-LEFT (raffle FAB is bottom-right — they must not overlap) */
  .chat-toggle{
    position:fixed; left:14px; right:auto; bottom:14px; top:auto; transform:none;
    flex-direction:row; gap:6px; width:auto; height:auto; padding:11px 16px;
    border-radius:999px; writing-mode:horizontal-tb; box-shadow:0 8px 24px rgba(182,170,146,.45); z-index:301;
  }
  .chat-toggle .chat-label{ writing-mode:horizontal-tb; }
}
@media (max-width: 820px){
  /* On mobile the chat starts CLOSED so content uses full width */
  body.chat-open main.page{ padding-right:0 !important; }
}
@media (max-width: 680px){
  .lp-stats{ gap:26px; }
  .lp-title{ font-size:clamp(46px,15vw,70px); }
  .admin-uhead{ display:none; }  /* table header hidden; rows stack */
  .admin-urow{ grid-template-columns:1fr 1fr; gap:6px 10px; row-gap:6px; }
  .admin-urow .adm-actions{ grid-column:1 / -1; }
  .notif-panel{
    position:fixed; top:calc(var(--rr-header-h,60px) + 4px); right:8px; left:auto;
    width:min(340px, calc(100vw - 16px)); max-height:70vh;
  }
  .rw-task{ flex-direction:column; align-items:stretch; gap:10px; }
  .rw-task-reward{ flex-direction:row; align-items:center; justify-content:space-between; }
}

/* Chat level badge + right-click-to-tip hint */
.chat-message{ cursor:default; }
.chat-message b{ display:inline-flex; align-items:center; }
.chat-tip-hint{ padding:7px 14px; font-size:11px; color:var(--t3); border-bottom:1px solid var(--rust-ln); background:rgba(0,0,0,.15); }

/* ═══════════════ AFFILIATE (screenshot-style tiered) ═══════════════ */
.aff-top{ display:grid; grid-template-columns:1.4fr 1fr; gap:16px; margin-bottom:18px; }
@media(max-width:860px){ .aff-top{ grid-template-columns:1fr; } }
.aff-panel{ background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln); border-radius:16px; padding:22px; }
.aff-panel h3{ margin:0 0 12px; font-size:17px; color:var(--t1); }
.g{ color:#34d399; }
.aff-part-text,.aff-collect-text{ font-size:13px; color:var(--t2); line-height:1.6; margin:0 0 16px; }
.aff-metrics{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
@media(max-width:560px){ .aff-metrics{ grid-template-columns:1fr 1fr; } }
.aff-metric{ background:rgba(0,0,0,.25); border:1px solid var(--rust-ln); border-radius:12px; padding:14px 10px; text-align:center; }
.aff-metric-n{ font-size:22px; font-weight:800; color:var(--t1); }
.aff-metric-n.g{ color:#34d399; }
.pcttiny{ font-size:13px; }
.aff-metric-l{ font-size:11px; color:var(--t3); margin-top:4px; }
.aff-collect-btn{ width:100%; min-height:48px; border-radius:10px; border:0; cursor:pointer; font-weight:800; font-size:14px; letter-spacing:.04em; color:#fff; background:linear-gradient(145deg,#1f8a4c,#15663a); margin-bottom:14px; }
.aff-collect-btn:hover{ filter:brightness(1.1); }
.aff-collect-btn:disabled{ opacity:.6; cursor:default; }
.aff-link-wrap{ display:flex; gap:8px; margin-bottom:10px; align-items:stretch; }
.aff-link-input{ flex:1 1 auto; min-width:0; min-height:42px; padding:0 12px; border-radius:9px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); font-size:12px; }
.aff-link-wrap .btn-primary{ width:auto; flex:0 0 auto; min-width:0; min-height:42px; padding:0 16px; border-radius:9px; font-size:13px; }
.aff-custom-row{ display:flex; gap:8px; }
.aff-custom-row input{ flex:1; min-height:38px; padding:0 12px; border-radius:9px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); font-size:13px; text-transform:uppercase; }
.btn-ghost-sm{ min-height:38px; padding:0 16px; border-radius:9px; border:1px solid var(--rust-ln2); background:rgba(255,255,255,.05); color:var(--t1); cursor:pointer; font-weight:700; font-size:13px; }
.btn-ghost-sm:hover{ background:rgba(255,255,255,.1); }

.aff-levels-block{ background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln); border-radius:16px; overflow:hidden; }
.aff-levels-head{ display:grid; grid-template-columns:80px 1.4fr 1.6fr 1fr; gap:10px; padding:14px 20px; font-size:11px; letter-spacing:.1em; color:var(--t3); border-bottom:1px solid var(--rust-ln); text-transform:uppercase; }
.aff-level-row{ display:grid; grid-template-columns:80px 1.4fr 1.6fr 1fr; gap:10px; align-items:center; padding:20px; border-bottom:1px solid var(--rust-ln); }
.aff-level-row:last-child{ border-bottom:0; }
.aff-level-row.final{ border-left:3px solid #34d399; background:rgba(52,211,153,.04); }
.aff-lvl-shield{ width:48px; height:54px; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:800; color:var(--t2); background:linear-gradient(180deg,var(--steel),var(--steel2)); clip-path:polygon(50% 0,100% 22%,100% 75%,50% 100%,0 75%,0 22%); text-transform:uppercase; }
.aff-level-row.final .aff-lvl-shield{ color:#34d399; background:linear-gradient(180deg,#1f3a2c,#15261c); }
.aff-level-prog{ font-size:15px; font-weight:700; }
.aff-slash{ color:var(--t3); font-weight:400; }
.aff-level-bonus{ font-size:14px; color:var(--t2); }
.aff-level-earn{ font-size:18px; font-weight:800; text-align:center; color:var(--t1); }
@media(max-width:680px){
  .aff-levels-head{ display:none; }
  .aff-level-row{ grid-template-columns:48px 1fr; gap:8px 14px; }
  .aff-level-bonus,.aff-level-earn{ grid-column:2; text-align:left; }
}

/* ═══════════════ REWARDS RAKEBACK ═══════════════ */
.rb-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
@media(max-width:760px){ .rb-grid{ grid-template-columns:1fr; } }
.rb-card{ text-align:center; padding:24px 18px; border-radius:16px; background:linear-gradient(180deg,var(--rust-card2),var(--rust-card)); border:1px solid var(--rust-ln); }
.rb-card.rb-weekly{ border-color:rgba(238,179,81,.28); }
.rb-card.rb-monthly{ border-color:rgba(238,179,81,.3); }
.rb-period{ font-family:var(--fd); font-size:24px; color:var(--t1); letter-spacing:.04em; }
.rb-pct{ font-size:12px; color:var(--t3); margin-top:4px; }
.rb-amount{ font-family:var(--fd); font-size:32px; color:var(--gold2); margin:14px 0; }
.rb-claim{ min-width:140px; }
.rb-note{ display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:600; color:var(--t3); padding:9px 18px; min-width:140px; min-height:38px; box-sizing:border-box; border:1px dashed var(--rust-ln); border-radius:10px; background:rgba(255,255,255,.02); }
.rw-two{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
@media(max-width:760px){ .rw-two{ grid-template-columns:1fr; } }
.promo-row{ display:flex; gap:8px; }
.promo-row input{ flex:1; min-height:44px; padding:0 14px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.35); color:var(--t1); }
.promo-row .btn-primary{ min-height:44px; padding:0 20px; border-radius:10px; }
.promo-active{ background:rgba(52,211,153,.12); border:1px solid rgba(52,211,153,.4); color:#f4cd84; padding:10px 14px; border-radius:10px; margin-bottom:12px; font-size:13px; }
.wreq-amount{ font-family:var(--fd); font-size:30px; color:var(--gold2); margin-bottom:10px; }
.wreq-amount span{ font-size:18px; color:var(--t3); }
.wreq-met{ color:#f4cd84; font-size:13px; margin-top:10px; }
.wreq-note{ color:var(--t2); font-size:13px; margin-top:10px; line-height:1.5; }

/* Admin promo codes */
.admin-promos{ display:flex; flex-direction:column; gap:6px; }
.admin-promo{ display:flex; align-items:center; gap:14px; padding:11px 14px; border-radius:10px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); }
.admin-promo-code{ font-family:var(--fd); font-size:17px; color:var(--rust3); letter-spacing:.05em; }
.admin-promo-pct{ color:#34d399; font-weight:700; }
.admin-promo-uses{ font-size:12px; color:var(--t3); }
.admin-promo-status{ font-size:11px; padding:2px 8px; border-radius:5px; font-weight:700; }
.admin-promo-status.on{ background:rgba(52,211,153,.2); color:#f4cd84; }
.admin-promo-status.off{ background:rgba(239,68,68,.2); color:#fca5a5; }

/* Weapon card SVG icon */
.wd-icon{ display:flex; align-items:center; justify-content:center; height:38px; margin-bottom:4px; }
.wd-icon svg{ width:96px; height:auto; max-height:38px; filter:drop-shadow(0 2px 4px rgba(0,0,0,.5)); }

/* ═══════════════════════════════════════════════════════════════
   RUST ARENA SCENE — industrial backdrop behind the fighters
   (ground, metal wall, barrels, supply crate). Pure CSS, sits
   behind the character; the char-display already clips overflow.
   ═══════════════════════════════════════════════════════════════ */
.char-display:not(:has(.empty-seat)){
  background:
    /* warm haze */
    radial-gradient(120% 80% at 50% 10%, rgba(196,184,158,.07), transparent 60%),
    /* hazard warning stripes along the top */
    repeating-linear-gradient(45deg, rgba(196,184,158,.05) 0 10px, rgba(0,0,0,.06) 10px 20px),
    /* corrugated metal wall */
    repeating-linear-gradient(90deg, rgba(255,255,255,.025) 0 6px, rgba(0,0,0,.06) 6px 12px),
    /* ground plane (lower band) */
    linear-gradient(180deg, transparent 58%, rgba(40,28,20,.6) 58%, rgba(20,14,9,.85) 100%),
    rgba(0,0,0,.3);
}
/* bullet-hole / rust-pit pocking on the back wall */
.char-display:not(:has(.empty-seat))::after{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.5;
  background-repeat:no-repeat;
  background-image:
    radial-gradient(circle at 18% 22%, rgba(0,0,0,.5) 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 30% 16%, rgba(0,0,0,.4) 0 1px, transparent 2px),
    radial-gradient(circle at 72% 26%, rgba(0,0,0,.5) 0 2px, transparent 3px),
    radial-gradient(circle at 84% 18%, rgba(0,0,0,.4) 0 1px, transparent 2px),
    radial-gradient(circle at 60% 12%, rgba(0,0,0,.35) 0 1px, transparent 2px),
    radial-gradient(circle at 45% 30%, rgba(0,0,0,.4) 0 1.5px, transparent 2.5px),
    /* rust streaks bleeding down the wall */
    linear-gradient(180deg, rgba(168,52,31,.12) 0 1px, transparent 1px) ;
  background-size: 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 3px 40%;
  background-position: 0 0,0 0,0 0,0 0,0 0,0 0, 22% 0;
}
/* scene props layer */
.char-display:not(:has(.empty-seat))::before{
  content:""; position:absolute; left:0; right:0; bottom:0; height:48%; z-index:0; pointer-events:none;
  background-repeat:no-repeat; background-position:left bottom, right bottom, 70% bottom, center bottom; background-size:auto 62%, auto 54%, auto 38%, 100% 3px;
  background-image:
    /* left red barrel */
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='60'><rect x='6' y='6' width='28' height='52' rx='4' fill='%23a8341f' stroke='%23541608' stroke-width='1.5'/><rect x='6' y='16' width='28' height='4' fill='%23000' opacity='.25'/><rect x='6' y='42' width='28' height='4' fill='%23000' opacity='.25'/><ellipse cx='20' cy='7' rx='14' ry='4' fill='%23c14627'/><rect x='13' y='24' width='14' height='12' fill='%23e8c07a' opacity='.85'/></svg>"),
    /* right supply crate */
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='52' height='48'><rect x='4' y='8' width='44' height='38' rx='2' fill='%235a4a32' stroke='%232a2012' stroke-width='1.5'/><path d='M4 8 L48 46 M48 8 L4 46' stroke='%232a2012' stroke-width='1.5' opacity='.5'/><rect x='4' y='8' width='44' height='7' fill='%236b5838'/></svg>"),
    /* stacked sandbags (mid-right) */
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='60' height='40'><g fill='%236e5a3a' stroke='%233a2e1a' stroke-width='1'><ellipse cx='14' cy='32' rx='13' ry='7'/><ellipse cx='40' cy='32' rx='13' ry='7'/><ellipse cx='27' cy='20' rx='13' ry='7'/></g></svg>"),
    /* ground line */
    linear-gradient(90deg, transparent, rgba(196,184,158,.28), transparent);
  opacity:.55;
}
/* keep the fighter above the scene */
.char-display .rust-char-wrap{ position:relative; z-index:2; }
.char-display .player-color-name{ position:relative; z-index:2; }

/* ═══════════════ CHAT BADGES + ROLES + CONTEXT MENU ═══════════════ */
.chat-message b{ display:inline-flex; align-items:center; gap:5px; flex-wrap:wrap; }
.chat-msg-head{
  display:flex; align-items:center; gap:6px; margin-bottom:3px; flex-wrap:wrap;
}
.chat-lvl{
  display:inline-flex; align-items:center; justify-content:center;
  height:18px; padding:0 7px; flex:0 0 auto;
  font-size:11px; font-weight:800; line-height:1; border-radius:5px; color:#ffffff;
  background:linear-gradient(145deg,#eeb351,#8a2e1c);
  box-shadow:0 1px 3px rgba(0,0,0,.4);
  letter-spacing:.03em; white-space:nowrap;
}
.chat-lvl::before{ content:"LV "; font-size:8px; font-weight:900; opacity:.9; color:#ffffff; }
.chat-role{
  display:inline-flex; align-items:center; height:18px; padding:0 7px; flex:0 0 auto;
  font-size:9px; font-weight:900; line-height:1; border-radius:5px;
  letter-spacing:.06em; color:#ffffff; white-space:nowrap;
}
.chat-role-admin, .chat-role-mod{ background:none !important; padding:0 !important; }
.chat-role-admin{ color:#f04545 !important; }   /* crown (founder) = red */
.chat-role-mod{ color:#3db4f2 !important; }      /* shield (mod) = blue */
.chat-role-admin svg{ width:15px !important; height:15px !important; display:block !important; filter:drop-shadow(0 0 3px rgba(240,69,69,.5)) !important; }
.chat-role-mod svg{ width:14px !important; height:14px !important; display:block !important; filter:drop-shadow(0 0 3px rgba(61,180,242,.5)) !important; }
.chat-msg-head .chat-role.chat-role-admin{ color:#f04545 !important; background:none !important; padding:0 !important; height:18px !important; }
.chat-msg-head .chat-role.chat-role-mod{ color:#3db4f2 !important; background:none !important; padding:0 !important; height:18px !important; }
/* custom hover tooltip — appears directly above the badge */
.chat-role[data-tip]{ position:relative; cursor:default; }
/* Tooltip is rendered by JS as a position:fixed element on <body> so it escapes the
   chat scroll container's overflow clipping (a CSS ::after tooltip got cut off). */
.chat-name{ font-weight:700; font-size:13px; color:var(--t1); }
.chat-name.cn-admin{ color:#fca5a5; }
.chat-name.cn-mod{ color:#7dd3fc; }
.chat-msg-head .chat-ts{ margin-left:auto; font-size:10px; color:var(--t3); white-space:nowrap; }
.chat-name.cn-mod{ color:#7dd3fc; }
.chat-ts{ font-size:10px; color:var(--t3); }

.chat-ctx{
  position:fixed; z-index:400; min-width:170px; padding:6px;
  background:linear-gradient(180deg,var(--rust-card2),var(--rust-card));
  border:1px solid var(--rust-ln2); border-radius:12px; box-shadow:0 16px 40px rgba(0,0,0,.55);
}
.chat-ctx-name{ font-size:12px; font-weight:700; color:var(--rust3); padding:6px 10px 8px; border-bottom:1px solid var(--rust-ln); margin-bottom:4px; }
.chat-ctx-btn{ display:block; width:100%; text-align:left; padding:9px 10px; border-radius:8px; border:0; background:transparent; color:var(--t1); cursor:pointer; font-size:13px; font-weight:600; }
.chat-ctx-btn:hover{ background:rgba(255,255,255,.06); }
.chat-ctx-mod{ color:#fca5a5; }

/* ═══════════════════════════════════════════════════════════════
   CHAT ON LEFT SIDE + closed by default + pulsing re-open tab
   (consolidated — overrides all earlier positioning)
   ═══════════════════════════════════════════════════════════════ */
.chat-drawer{
  right:auto !important; left:0 !important;
  top: var(--topbar-h) !important; bottom:0 !important;
  width:344px !important; max-width:88vw !important;
  border-left:0 !important; border-right:1px solid var(--rust-ln2) !important;
  box-shadow:16px 0 48px rgba(0,0,0,.45) !important;
  transform:translateX(0);
  transition: transform .32s cubic-bezier(.4,0,.2,1);
  overflow: visible !important;            /* let the tab show outside */
}
.chat-drawer.closed{ transform:translateX(-100%) !important; }

/* Re-open tab: FIXED at the left screen edge, always at x:0.
   Independent of the drawer's slide transform so it can't drift off-screen. */
.chat-toggle{
  position:fixed !important;
  left:0 !important; right:auto !important; top:96px !important;
  width:42px !important; min-height:120px !important; padding:0 !important;
  display:flex !important; flex-direction:column !important; gap:8px !important;
  align-items:center !important; justify-content:center !important;
  border-radius:0 12px 12px 0 !important;
  background:linear-gradient(145deg, var(--rust3), var(--rust)) !important;
  border:1px solid rgba(255,255,255,.14) !important; border-left:0 !important;
  box-shadow:6px 0 18px rgba(182,170,146,.45) !important;
  writing-mode:vertical-rl; text-orientation:mixed;
  font-size:12px; letter-spacing:.12em; color:#fff; cursor:pointer;
  z-index:160 !important;
  transition: box-shadow .25s, filter .2s, opacity .25s, transform .25s;
}
.chat-toggle .chat-icon{ writing-mode:horizontal-tb; font-size:16px; }
.chat-toggle:hover{ filter:brightness(1.08); box-shadow:9px 0 26px rgba(196,184,158,.6) !important; }
/* When chat is OPEN, slide the tab away (drawer's own close button takes over) */
body.chat-open .chat-toggle{ opacity:0 !important; pointer-events:none !important; transform:translateX(-100%) !important; }

/* CHAT = PINNED LEFT SIDEBAR the page makes room for — it never overlays a game
   or page. On desktop it is always open and the content is shifted right by the
   chat width; the close button and re-open tab are hidden (can't be closed). On
   mobile it collapses to a toggle so it doesn't eat the screen. */
@media (min-width:1401px){
  .chat-drawer{ transform:translateX(0) !important; z-index:90 !important; }
  .chat-drawer.closed{ transform:translateX(0) !important; }     /* never hide on desktop */
  main.page{
    margin-left: 344px !important;
    width:auto !important; max-width:none !important;
    padding: 28px 20px 80px !important;   /* left gap 20px = matches the raffle-side gap (padding-right 364 − raffle 344); right is overridden to 364 below */
  }
  .chat-toggle, #chatClose{ display:none !important; }            /* no closing on desktop */
}
@media (max-width:1099px){
  main.page{ margin-left:auto !important; margin-right:auto !important; }   /* chat is a bottom drawer on mobile → centre the page, don't pin it left */
  .chat-drawer{ z-index:300 !important; }
}
.chat-drawer:not(.closed){ box-shadow:10px 0 34px rgba(0,0,0,.4) !important; }
/* Pulse the tab while the chat is CLOSED to invite opening */
body:not(.chat-open) .chat-toggle{ animation: chatPulse 3.4s ease-in-out infinite; }
@keyframes chatPulse{
  0%, 86%, 100%{ box-shadow:6px 0 18px rgba(182,170,146,.45); }
  91%{ box-shadow:11px 0 30px rgba(196,184,158,.8); }
  95%{ box-shadow:7px 0 22px rgba(196,184,158,.6); }
}
/* Glow ring that flares with the pulse */
body:not(.chat-open) .chat-toggle::after{
  content:""; position:absolute; inset:-3px; border-radius:0 14px 14px 0;
  border:2px solid rgba(196,184,158,.6); opacity:0; animation: chatRing 3.4s ease-in-out infinite;
}
@keyframes chatRing{ 0%,86%,100%{opacity:0;transform:scale(1);} 91%{opacity:.9;transform:scale(1.05);} }

@media (max-width: 820px){
  .chat-drawer{ top:auto !important; bottom:0 !important; left:0 !important; right:0 !important; width:100% !important; height:auto !important; max-height:80vh !important; z-index:300 !important; }
  .chat-drawer.closed{ transform:translateY(100%) !important; }
  .chat-toggle{ left:14px !important; right:auto !important; top:auto !important; bottom:14px !important; width:auto !important; min-height:0 !important; padding:7px 12px !important; gap:6px !important; flex-direction:row !important; border-radius:999px !important; writing-mode:horizontal-tb !important; border:1px solid rgba(255,255,255,.14) !important; font-size:12px !important; }
  .chat-toggle .chat-icon svg{ width:16px !important; height:16px !important; }
  .chat-toggle .chat-label{ font-size:12px !important; }
  .chat-toggle .chat-label{ writing-mode:horizontal-tb; }
}

/* Balance +/- group */
.balance-group{ display:inline-flex; align-items:center; gap:0; }
.balance-group .balance-pill{ border-radius:0; }
.bal-btn{
  display:inline-flex; align-items:center; justify-content:center; width:30px; height:32px;
  font-size:20px; font-weight:800; text-decoration:none; cursor:pointer; line-height:1;
  border:1px solid var(--rust-ln2); color:#fff; user-select:none;
}
.bal-plus{ border-radius:0 9px 9px 0; border-left:0; background:linear-gradient(180deg,#f6c860 0%,#e6a83a 52%,#cf9328 100%) !important; box-shadow:inset 0 1px 0 rgba(255,255,255,.5), inset 0 -2px 3px rgba(0,0,0,.16), 0 2px 7px rgba(0,0,0,.4), 0 0 13px rgba(230,168,58,.4) !important; color:#241a04 !important; font-weight:800 !important; }
.bal-minus{ border-radius:9px 0 0 9px; border-right:0; background:linear-gradient(145deg,#b9442b,#8a2e1c); }
.bal-btn:hover{ filter:brightness(1.15); }

/* Admin mod/muted badges + buttons */
.adm-badge.mod{ background:rgba(56,189,248,.2); color:#7dd3fc; }
.adm-badge.muted{ background:rgba(250,204,21,.2); color:#fde047; }
.adm-btn.adm-mod{ background:linear-gradient(145deg,#38bdf8,#0369a1); }

/* Deposit promo tag + tab focus highlight */
.promo-tag{ display:inline-block; font-size:10px; font-weight:800; padding:1px 7px; border-radius:5px; margin-left:6px; background:linear-gradient(145deg,#1f8a4c,#15663a); color:#fff; vertical-align:middle; }
.wallet-grid form.tab-focus{ border-color:var(--rust3) !important; box-shadow:0 0 0 2px rgba(196,184,158,.25); }

/* Profile default Rust avatar + activity feed */
.rust-default-av{ width:88px; height:88px; border-radius:14px; overflow:hidden; border:2px solid var(--rust3); box-shadow:0 0 16px rgba(196,184,158,.35); }
.rust-default-av svg{ width:100%; height:100%; display:block; }
.profile-activity{ display:flex; flex-direction:column; gap:6px; }
.pa-row{ display:flex; align-items:center; gap:12px; padding:11px 14px; border-radius:10px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); }
.pa-ico{ font-size:18px; flex:0 0 auto; }
.pa-msg{ flex:1; font-size:13px; color:var(--t1); }
.pa-time{ font-size:11px; color:var(--t3); flex:0 0 auto; }

/* Affiliate level table — 3 columns (no cases) */
.aff-levels-head{ grid-template-columns:80px 1.4fr 1.4fr !important; }
.aff-level-row{ grid-template-columns:80px 1.4fr 1.4fr !important; }
.aff-level-row.reached{ background:rgba(52,211,153,.06); }
.aff-level-row.reached .aff-lvl-shield{ color:#34d399; background:linear-gradient(180deg,#1f3a2c,#15261c); }
@media(max-width:680px){
  .aff-level-row{ grid-template-columns:48px 1fr !important; }
  .aff-level-earn{ grid-column:2; text-align:left; }
}

/* Deposit/withdraw modal select */
.modal-select{ width:100%; min-height:44px; padding:0 12px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.4); color:var(--t1); font-size:14px; }

/* Notification panel header + mark-all */
.notif-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.notif-mark-all{ font-size:11px; font-weight:600; color:var(--rust3); background:transparent; border:0; cursor:pointer; padding:2px 4px; white-space:nowrap; }
.notif-mark-all:hover{ text-decoration:underline; }

/* Rakeback countdown timer */
.rb-timer{ font-family:var(--fd); font-size:26px; color:var(--rust3); letter-spacing:.06em; margin:6px 0 2px; }
.rb-timer.ready{ color:#34d399; }

/* Referral activity table */
.ref-table{ display:flex; flex-direction:column; gap:4px; }
.ref-head,.ref-row{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:10px; align-items:center; padding:11px 14px; }
.ref-head{ font-size:11px; letter-spacing:.1em; color:var(--t3); text-transform:uppercase; border-bottom:1px solid var(--rust-ln); }
.ref-row{ border-radius:9px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); font-size:14px; }
.ref-name{ font-weight:700; color:var(--t1); }
.ref-lvl{ font-style:normal; font-size:10px; color:var(--rust3); background:rgba(196,184,158,.15); padding:1px 6px; border-radius:5px; margin-left:4px; }
.ref-wager{ color:var(--gold2); font-weight:700; }
@media(max-width:640px){ .ref-head{ display:none; } .ref-row{ grid-template-columns:1fr 1fr; gap:6px 10px; } }

/* Profile account info rows */
.acct-row{ display:flex; justify-content:space-between; align-items:center; padding:9px 0; border-bottom:1px solid var(--rust-ln); }
.acct-row:last-of-type{ border-bottom:0; }
.acct-k{ font-size:12px; color:var(--t3); text-transform:uppercase; letter-spacing:.08em; }
.acct-v{ font-weight:700; color:var(--t1); font-size:14px; }

/* ───── Coinflip create card polish ───── */
.cf-create-grid .cf-side-picker{ width:100%; justify-content:center; }
.cf-create-grid .cf-wager-section{ width:100%; max-width:340px; align-items:center; }
.cf-create-grid .cf-wager-label{ align-self:center; font-size:13px; color:var(--t2); text-transform:uppercase; letter-spacing:.08em; }
.cf-create-grid .stake-input-wrap{ width:100%; max-width:280px !important; }
.cf-create-grid .quick-amounts{ width:100%; max-width:280px !important; display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.cf-create-grid .quick-amounts .qa{ padding:9px 0; }
.cf-create-grid .cf-create-btn{ width:100%; max-width:280px; min-height:48px; font-size:15px; }
.cf-side-btn{ box-shadow:0 4px 14px rgba(0,0,0,.25); }
.cf-side-btn.active{ box-shadow:0 6px 20px rgba(0,0,0,.4); }
/* coinflip stage glow */
.cf-stage{ position:relative; }
.cf-games-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }

/* ───── Coinflip top grid: coin stage + create card side by side ───── */
.cf-top-grid{
  display:grid; grid-template-columns:1.1fr 1fr; gap:16px; align-items:stretch; margin-bottom:16px;
}
.cf-top-grid .cf-stage{ margin-bottom:0; height:100%; }
.cf-top-grid .cf-create-section{ margin-bottom:0; }
@media (max-width: 980px){ .cf-top-grid{ grid-template-columns:1fr; } }
/* Within the create card, keep side picker + wager stacked but tidy */
.cf-create-grid .cf-side-picker{ width:100%; justify-content:center; }
.cf-create-grid .cf-wager-section{ width:100%; max-width:none; align-items:center; display:flex; flex-direction:column; gap:12px; }
.cf-create-grid .stake-input-wrap{ width:100%; max-width:320px !important; }
.cf-create-grid .quick-amounts{ width:100%; max-width:320px !important; display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.cf-create-grid .cf-create-btn{ width:100%; max-width:320px; min-height:48px; font-size:15px; }

/* ───── Coinflip: Open Games + Recent Games side by side ───── */
.cf-lists-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; margin-bottom:16px; }
@media (max-width: 980px){ .cf-lists-grid{ grid-template-columns:1fr; } }
/* Inside each list column, stack games in a single column so two columns fit nicely */
.cf-games-col{ grid-template-columns:1fr !important; display:grid; gap:10px; }
/* Make the coin stage a bit more compact so the top row is balanced */
.cf-top-grid .cf-stage{ min-height:320px; }
.cf-top-grid .cf-coin-wrap{ transform:scale(.9); }

/* ───── Coinflip create card now stands alone (coin stage removed) ───── */
.cf-create-section{ max-width:560px; margin:0 auto 16px; }
.cf-create-section .cf-create-grid{ max-width:none; }
.cf-create-section .cf-side-picker{ justify-content:center; }

/* ═══ Coinflip: Create (left) + Open Games (right) top row, Recent full width ═══ */
.cf-main-grid{ display:grid; grid-template-columns:1.1fr 1fr; gap:16px; align-items:start; margin-bottom:16px; }
@media (max-width: 980px){ .cf-main-grid{ grid-template-columns:1fr; } }
/* Create card no longer centered/narrow — it fills its grid cell */
.cf-create-section{ max-width:none !important; margin:0 !important; }
.cf-main-grid .cf-create-grid{ max-width:none; }
/* Open Games column: each game stacks vertically inside the right cell */
.cf-main-grid #cfOpenGames.cf-games-col{ display:grid; grid-template-columns:1fr; gap:10px; }
/* Recent Games full width → responsive multi-column grid of cards */
.cf-history-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }

/* Global guard: never allow horizontal page scroll from topbar/grids.
   overflow-x lives on BODY ONLY (see the body rule above) — putting it on html too
   breaks body→viewport overflow propagation and spawns a SECOND vertical scrollbar
   (html + body both scroll = two nested scrollbars on the right). Keep html out of it. */
html, body { max-width: 100%; }
.account { gap: 7px; }

/* ═══════════════════════════════════════════════════════
   RUST THEME — ADVANCED TEXTURE & DEPTH PASS (v51+)
   Richer weathered-metal panels, rust streaks, bolted
   corners, ember vignette. Pure CSS, no images.
   ═══════════════════════════════════════════════════════ */

/* Deeper panel texture: brushed metal + faint rust mottling + top sheen */
.section-block, .arena, .cf-card, .lb-card, .wallet-card, .auth-card,
.player-panel, .app-modal__card, .form-card, .stat-box{
  background-image:
    /* top edge sheen */
    linear-gradient(180deg, rgba(255,255,255,.05) 0%, transparent 12%),
    /* diagonal brushed-metal grain */
    repeating-linear-gradient(122deg, rgba(0,0,0,.05) 0 2px, transparent 2px 6px),
    /* rust mottle blooms */
    radial-gradient(120px 80px at 88% 0%, rgba(182,170,146,.10), transparent 70%),
    radial-gradient(90px 60px at 6% 100%, rgba(122,45,18,.14), transparent 72%),
    /* base plate */
    linear-gradient(180deg, var(--rust-card2), var(--rust-card)) !important;
  background-blend-mode: overlay, overlay, screen, screen, normal !important;
}

/* Bolted-plate rivets on the four corners of major panels */
.section-block, .arena{ position: relative; }
.section-block::after{
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:inherit;
  background:
    radial-gradient(circle at 10px 10px,                     rgba(90,74,66,.9) 0 2px, transparent 2.6px),
    radial-gradient(circle at calc(100% - 10px) 10px,        rgba(90,74,66,.9) 0 2px, transparent 2.6px),
    radial-gradient(circle at 10px calc(100% - 10px),        rgba(90,74,66,.9) 0 2px, transparent 2.6px),
    radial-gradient(circle at calc(100% - 10px) calc(100% - 10px), rgba(90,74,66,.9) 0 2px, transparent 2.6px);
  opacity:.6;
}

/* Subtle ember vignette over the whole page for a darker, grittier mood */
body::after{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:0;
  background:
    radial-gradient(140% 100% at 50% -10%, transparent 55%, rgba(0,0,0,.34) 100%),
    radial-gradient(70% 60% at 50% 120%, rgba(122,45,18,.10), transparent 60%);
  mix-blend-mode: multiply;
}
.page-wrap, main, .landing{ position: relative; z-index: 1; }
.topbar{ position: sticky; top:0; z-index: 1000; }
.chat-drawer{ position: fixed; z-index: 300; }

/* Buttons: add a faint metal scratch + stronger ember glow on hover */
.btn-primary, .join-btn, .cf-join-btn, .app-modal__btn, #joinBtn{
  position: relative; overflow: hidden;
}
.btn-primary::after, .join-btn::after, .cf-join-btn::after, #joinBtn::after{
  content:""; position:absolute; inset:0;
  background: repeating-linear-gradient(118deg, rgba(255,255,255,.06) 0 1px, transparent 1px 7px);
  pointer-events:none;
}

/* Stat numbers + pot → hot ember gradient text */
.hero-stat b, .lp-stat b, .stat-box b, .prize-amount, #prizePool, .hero-pool-display strong{
  background: linear-gradient(180deg, #ffd9a0, #f4cd84 60%, #eeb351);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

/* Inputs: inset "stamped metal" look */
input, select, textarea{
  box-shadow: inset 0 2px 5px rgba(0,0,0,.4);
}
input:focus, select:focus, textarea:focus{ border-color: var(--rust3) !important; box-shadow: inset 0 2px 5px rgba(0,0,0,.4), 0 0 0 2px rgba(196,184,158,.18); }

/* Nav active tab → stamped ember plate */
.nav a.active{
  background: linear-gradient(180deg, rgba(196,184,158,.2), rgba(182,170,146,.14)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
}

/* Section title eyebrow gets a small ember bullet */
.section-title .eyebrow::before{ content:"▸ "; color: var(--rust2); }

/* Card hover: faint lift + warmer border */
.section-block:hover, .cf-game-row:hover, .lb-row:hover{
  border-color: rgba(196,184,158,.3) !important;
}

/* ═══════════════════════════════════════════════════════
   ARENA ATMOSPHERE — drifting embers + battle smoke (CSS)
   Sits in the scene, behind fighters; no JS dependency.
   ═══════════════════════════════════════════════════════ */
.char-display{ position: relative; overflow: hidden; }

/* Floating embers rising in the arena (only when occupied) */
.char-display:not(:has(.empty-seat)) .rust-char-wrap::before{
  content:""; position:absolute; left:-40%; right:-40%; top:0; bottom:0; z-index:0; pointer-events:none;
  background-image:
    radial-gradient(circle, rgba(196,184,158,.9) 0 1.4px, transparent 2px),
    radial-gradient(circle, rgba(196,184,158,.7) 0 1px, transparent 1.6px),
    radial-gradient(circle, rgba(194,239,206,.8) 0 1.2px, transparent 1.8px);
  background-size: 90px 140px, 130px 120px, 70px 160px;
  background-position: 10px 120px, 50px 80px, 80px 150px;
  animation: emberRise 7s linear infinite;
  opacity:.55;
}
@keyframes emberRise{
  0%{ background-position: 10px 130%, 50px 130%, 80px 130%; }
  100%{ background-position: 30px -30%, 20px -30%, 95px -30%; }
}

/* When a duel is live, a faint smoke layer drifts across the floor */
.arena[data-fighting="1"] .char-display::after,
.char-display.is-fighting::after{
  background-image:
    radial-gradient(60% 40% at 30% 90%, rgba(120,110,100,.16), transparent 70%),
    radial-gradient(50% 35% at 75% 95%, rgba(90,80,72,.14), transparent 70%);
  animation: smokeDrift 6s ease-in-out infinite alternate;
}
@keyframes smokeDrift{
  0%{ transform: translateX(-6px); }
  100%{ transform: translateX(8px); }
}

/* ═══ Admin per-user Settings modal ═══ */
.us-card{ max-width: 620px; width: 94vw; }
.us-badges{ display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 16px; align-items:center; }
.us-stat{ font-size:12px; color:var(--t3); }
.us-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.us-field{ display:flex; flex-direction:column; gap:5px; }
.us-field.us-wide{ grid-column:1 / -1; }
.us-field label{ font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--t3); }
.us-field label .us-cur{ text-transform:none; letter-spacing:0; color:var(--gold2); font-weight:700; margin-left:4px; }
.us-row{ display:flex; gap:6px; align-items:center; }
.us-input{ flex:1; min-height:38px; padding:0 10px; border-radius:8px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.4); color:var(--t1); font-size:14px; min-width:0; }
.us-toggles{ display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; padding-top:16px; border-top:1px solid var(--rust-ln); }
.us-toggles form{ margin:0; }
.adm-settings{ background:linear-gradient(145deg,var(--rust3),var(--rust)) !important; color:#fff !important; font-weight:700; padding:0 16px !important; }
@media (max-width:560px){ .us-grid{ grid-template-columns:1fr; } }
.us-saveall{ margin-top:14px; display:flex; justify-content:flex-end; }
.us-saveall-btn{ font-size:14px !important; font-weight:800 !important; padding:11px 30px !important; letter-spacing:.02em; }
.us-grid-actions{ margin-top:14px; }

/* ═══════════════════════════════════════════════════════
   UX POLISH PASS (v60+) — micro-interactions, transitions,
   loading states, focus rings, entrance animations.
   ═══════════════════════════════════════════════════════ */

/* Smooth, consistent transitions on interactive elements */
.btn-primary, .btn-ghost, .nav a, .cf-side-btn, .qa,
.section-block, .lb-row, .cf-game-row, .stat-box,
.notif-item, .chat-toggle, .balance-btn, .quick-amounts button{
  transition: transform .15s cubic-bezier(.34,1.56,.64,1),
              box-shadow .2s ease, background .2s ease, border-color .2s ease, opacity .2s ease;
}

/* Buttons lift slightly + glow on hover, press down on click */
.btn-primary:hover, .cf-create-btn:hover, #joinBtn:hover{
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(182,170,146,.4), 0 0 0 1px rgba(196,184,158,.3);
}
.btn-primary:active, .cf-create-btn:active, #joinBtn:active{ transform: translateY(0) scale(.985); }

/* Quick-amount + side buttons: tactile feedback */
.qa:hover, .quick-amounts button:hover{ transform: translateY(-1px); border-color: var(--rust3); }
.qa:active, .quick-amounts button:active{ transform: scale(.94); }
.cf-side-btn:hover{ transform: translateY(-2px); }

/* Cards gently raise on hover */
.lb-row:hover, .cf-game-row:hover{ transform: translateX(3px); }

/* Focus-visible rings for keyboard navigation (accessibility) */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible{
  outline: 2px solid var(--rust3);
  outline-offset: 2px;
  border-radius: 6px;
}

/* Entrance animation: fade + rise for section blocks on load */
@keyframes rrFadeUp{ from{ opacity:0; transform: translateY(12px); } to{ opacity:1; transform: translateY(0); } }
.section-block, .arena, .lb-card, .cf-main-grid, .cf-lists-grid, .two-col{
  animation: rrFadeUp .4s ease both;
}
/* Stagger a touch so multiple blocks cascade */
.section-block:nth-child(2){ animation-delay:.05s; }
.section-block:nth-child(3){ animation-delay:.1s; }
.section-block:nth-child(4){ animation-delay:.15s; }

/* Loading shimmer utility (for async lists before data arrives) */
@keyframes rrShimmer{ 0%{ background-position:-400px 0; } 100%{ background-position:400px 0; } }
.rr-skeleton{
  background: linear-gradient(90deg, rgba(255,255,255,.03) 25%, rgba(196,184,158,.10) 50%, rgba(255,255,255,.03) 75%);
  background-size: 800px 100%;
  animation: rrShimmer 1.3s infinite linear;
  border-radius: 8px; min-height: 44px;
}

/* Empty-state rows: softer, with a subtle pulse so they read as "waiting" */
.empty-row{ animation: rrEmptyPulse 2.4s ease-in-out infinite; }
@keyframes rrEmptyPulse{ 0%,100%{ opacity:.55; } 50%{ opacity:.85; } }

/* Toast/message feedback slides in */
.arena-msg:not(:empty), #cfMsg:not(:empty){
  animation: rrMsgIn .3s ease both;
}
@keyframes rrMsgIn{ from{ opacity:0; transform: translateY(-4px); } to{ opacity:1; transform: translateY(0); } }

/* Respect users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  /* NOTE: intentionally NO universal `*{ animation/transition-duration:.001ms }` freeze here. On a game
     site the outcome animations carry meaning — the weapon that fires on a HIT, the Rustpot ring closing
     in, the Quick Game reel spinning to its result. A blanket freeze made reduce-motion players see a
     spin-less reel, an instantly-jumping ring and no weapon on hits (only the shield/door on misses).
     Motion is reduced per-animation instead (glows, embers, parallax tilt, the recoil swing, etc. are
     switched off BY NAME below and throughout this file), matching the stated approach of disabling the
     DECORATIVE loops while the informative ones keep running. scroll-behavior is handled separately. */
}

/* ═══════════════════════════════════════════════════════
   COINFLIP EXPERIENCE POLISH (v61+) — spin glow, landing
   shockwave, punchier win reveal. Layers on the existing
   flip logic without changing the tumble math.
   ═══════════════════════════════════════════════════════ */

/* Motion glow while the coin is spinning (pulsing aura behind it) */
.cf-coin-wrap.flipping::before{
  content:""; position:absolute; left:50%; top:50%;
  width:180px; height:180px; transform:translate(-50%,-50%);
  border-radius:50%; z-index:-1; pointer-events:none;
  background: radial-gradient(circle, rgba(196,184,158,.35), transparent 68%);
  animation: cfSpinGlow .5s ease-in-out infinite alternate;
}
@keyframes cfSpinGlow{ from{ opacity:.4; transform:translate(-50%,-50%) scale(.85);} to{ opacity:.85; transform:translate(-50%,-50%) scale(1.12);} }

/* Landing shockwave ring — expands once when the coin settles */
.cf-coin.settle::after{
  content:""; position:absolute; left:50%; top:50%;
  width:150px; height:150px; transform:translate(-50%,-50%) scale(.4);
  border-radius:50%; pointer-events:none;
  border:3px solid rgba(196,184,158,.7);
  animation: cfShock .55s ease-out forwards;
}
@keyframes cfShock{
  0%{ opacity:.9; transform:translate(-50%,-50%) scale(.4); border-width:4px; }
  100%{ opacity:0; transform:translate(-50%,-50%) scale(1.9); border-width:1px; }
}
.cf-coin.landed-red.settle::after  { border-color: rgba(234,179,8,.75); }
.cf-coin.landed-blue.settle::after { border-color: rgba(59,130,246,.75); }

/* Punchier win badge: a celebratory pop + subtle float */
.cf-result-badge.show-red, .cf-result-badge.show-blue{
  animation: cfWinPop .5s cubic-bezier(.34,1.56,.64,1) both;
  font-weight: 800; text-shadow: 0 2px 8px rgba(0,0,0,.5);
  box-shadow: 0 8px 30px rgba(0,0,0,.4);
}
@keyframes cfWinPop{
  0%{ opacity:0; transform:translateX(-50%) scale(.5) translateY(8px); }
  60%{ opacity:1; transform:translateX(-50%) scale(1.12) translateY(0); }
  100%{ opacity:1; transform:translateX(-50%) scale(1) translateY(0); }
}

/* Coin lands with a slightly stronger, color-matched glow that lingers */
.cf-coin.landed-red  { filter: drop-shadow(0 0 34px rgba(239,68,68,1)) drop-shadow(0 10px 28px rgba(0,0,0,.6)); }
.cf-coin.landed-blue { filter: drop-shadow(0 0 34px rgba(59,130,246,1)) drop-shadow(0 10px 28px rgba(0,0,0,.6)); }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .cf-coin-wrap.flipping::before, .cf-coin.settle::after{ animation: none; opacity:0; }
}

/* ═══════════════════════════════════════════════════════
   ARENA FIGHTER LIFE (v62+) — subtle idle breathing/sway
   during a duel so fighters feel alive and tense, plus a
   weapon-ready bob. Pauses cleanly while taking a hit.
   ═══════════════════════════════════════════════════════ */

/* Gentle breathing + micro-sway while a duel is active.
   Applied to the SVG so it composes with the wrap's hit transforms. */
.player-panel.duel-left  .rust-char-wrap:not(.char-hit) svg,
.player-panel.duel-right .rust-char-wrap:not(.char-hit) svg{
  animation: fighterIdle 2.6s ease-in-out infinite;
}
@keyframes fighterIdle{
  0%,100% { transform: translateY(0) rotate(0deg) scale(1); }
  25%     { transform: translateY(-2px) rotate(-.6deg) scale(1.006); }
  50%     { transform: translateY(0) rotate(0deg) scale(1); }
  75%     { transform: translateY(-1px) rotate(.6deg) scale(1.004); }
}
/* Mirror the sway direction for the right fighter so they "face off" */
.player-panel.duel-right .rust-char-wrap:not(.char-hit) svg{ animation-name: fighterIdleR; }
@keyframes fighterIdleR{
  0%,100% { transform: translateY(0) rotate(0deg) scale(1); }
  25%     { transform: translateY(-2px) rotate(.6deg) scale(1.006); }
  50%     { transform: translateY(0) rotate(0deg) scale(1); }
  75%     { transform: translateY(-1px) rotate(-.6deg) scale(1.004); }
}

/* A faint ground shadow that pulses with the breathing for grounding */
.player-panel.duel-left  .rust-char-wrap::after,
.player-panel.duel-right .rust-char-wrap::after{
  content:""; position:absolute; bottom:-6px; left:50%; transform:translateX(-50%);
  width:60px; height:10px; border-radius:50%;
  background: radial-gradient(ellipse, rgba(0,0,0,.45), transparent 70%);
  animation: fighterShadow 2.6s ease-in-out infinite; z-index:1; pointer-events:none;
}
@keyframes fighterShadow{
  0%,100%{ width:60px; opacity:.45; }
  50%{ width:54px; opacity:.35; }
}

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .player-panel.duel-left .rust-char-wrap svg,
  .player-panel.duel-right .rust-char-wrap svg,
  .player-panel.duel-left .rust-char-wrap::after,
  .player-panel.duel-right .rust-char-wrap::after{ animation: none; }
}

/* Leaderboard wager amount (replaces W/L record) */
.lb-record{ display:flex; flex-direction:column; align-items:flex-end; line-height:1.1; }
.lb-wager-amt{ font-family:var(--fd); font-size:18px; font-weight:800;
  background:linear-gradient(180deg,#ffd9a0,#f4cd84 60%,#eeb351);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.lb-wager-lbl{ font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--t3); font-weight:700; }

/* ═══════════════════════════════════════════════════════
   TYPOGRAPHY & RHYTHM REFINEMENT (v64+)
   Tighter hierarchy, better readability, consistent spacing.
   ═══════════════════════════════════════════════════════ */

/* Body copy: comfortable reading rhythm */
body{ line-height: 1.55; letter-spacing: .005em; }

/* Paragraphs inside panels read a touch softer + roomier */
.section-block p, .lp-mode p, .level-hint, .arena-msg{
  line-height: 1.6;
}

/* Eyebrow → title: tighten the gap so they read as one unit */
.eyebrow{ margin-bottom: 6px; opacity: .92; }
.section-title{ margin-bottom: 16px; }
.section-title h3{ line-height: 1.05; }

/* Display headings: subtle text-shadow for depth on dark bg */
.section-title h3, .arena-header h1, .cf-modal-head h3{
  text-shadow: 0 2px 14px rgba(0,0,0,.35);
}

/* Consistent vertical rhythm between stacked sections */
.section-block + .section-block{ margin-top: 16px; }

/* Small print (labels, captions): clearer, slightly spaced */
small, .lb-wager-lbl, .hero-pool-display span, .stat-box .lbl{
  letter-spacing: .04em;
}

/* Numbers/money use tabular figures so they don't jitter */
.lb-wager-amt, .prize-amount, #prizePool, #heroPool, .balance-pill,
.hero-stat b, .lp-stat-n, .stat-box b, .timer-inner strong{
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* Links inside body copy: clear affordance */
.section-block a:not(.btn-primary):not(.btn-ghost){
  color: var(--rust3); text-decoration: none; border-bottom: 1px solid rgba(196,184,158,.3);
  transition: border-color .15s, color .15s;
}
.section-block a:not(.btn-primary):not(.btn-ghost):hover{
  color: var(--rust2); border-bottom-color: var(--rust2);
}

/* Slightly larger, more legible empty-state text */
.empty-row{ font-size: 13.5px; }

/* ═══════════════════════════════════════════════════════
   RICH EMPTY STATES (v65+) — thematic icon + headline +
   message + optional CTA. Replaces flat "No X yet" rows.
   ═══════════════════════════════════════════════════════ */
.empty-state{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; gap:8px; padding:34px 22px;
  border:1px dashed var(--rust-ln2); border-radius:14px;
  background: radial-gradient(120% 80% at 50% 0%, rgba(196,184,158,.05), transparent 70%), rgba(0,0,0,.16);
}
.empty-state-icon{
  font-size:40px; line-height:1; filter: drop-shadow(0 4px 14px rgba(196,184,158,.35));
  animation: emptyFloat 3.2s ease-in-out infinite;
}
@keyframes emptyFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-6px); } }
.empty-state-title{
  font-family:var(--fd); font-size:20px; letter-spacing:.04em; color:var(--t1);
}
.empty-state-msg{ font-size:13.5px; color:var(--t3); max-width:340px; line-height:1.5; }
.empty-state-cta{
  margin-top:8px; display:inline-flex; align-items:center; gap:6px;
  padding:9px 20px; border-radius:999px; font-weight:700; font-size:13px;
  color:#fff; text-decoration:none; border:0;
  background:linear-gradient(180deg, var(--rust2), var(--rust));
  box-shadow:0 6px 18px rgba(182,170,146,.35);
  transition: transform .15s cubic-bezier(.34,1.56,.64,1), box-shadow .2s;
}
.empty-state-cta:hover{ transform:translateY(-2px); box-shadow:0 9px 24px rgba(182,170,146,.45); }
.empty-state-cta:active{ transform:translateY(0) scale(.97); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .empty-state-icon{ animation:none; } }

/* ═══════════════════════════════════════════════════════
   TOAST NOTIFICATIONS (v66+) — floating feedback, bottom-right
   ═══════════════════════════════════════════════════════ */
.rr-toast-host{
  position: fixed; right: 18px; bottom: 18px; z-index: 100000;
  display: flex; flex-direction: column; gap: 10px;
  max-width: min(360px, 92vw); pointer-events: none;
}
/* desktop: the raffle drawer is docked on the right — shift the toasts clear of it so they never sit behind it */
@media (min-width:981px){ body.rfd-open .rr-toast-host{ right: 360px; } }
.rr-toast{
  pointer-events: auto;
  display: flex; align-items: center; gap: 11px;
  padding: 13px 14px; border-radius: 13px;
  background: linear-gradient(180deg, var(--rust-card2), var(--rust-card));
  border: 1px solid var(--rust-ln2);
  box-shadow: 0 12px 34px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05);
  color: var(--t1); font-size: 14px; font-weight: 600; line-height: 1.35;
  transform: translateX(120%); opacity: 0;
  transition: transform .34s cubic-bezier(.34,1.4,.64,1), opacity .3s;
  position: relative; overflow: hidden;
}
.rr-toast.show{ transform: translateX(0); opacity: 1; }
.rr-toast.hide{ transform: translateX(120%); opacity: 0; }
/* left accent bar by type */
.rr-toast::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background: var(--rust2); }
.rr-toast-info::before    { background: var(--rust3); }
.rr-toast-success::before { background: #22c55e; }
.rr-toast-money::before   { background: #eeb351; }
.rr-toast-error::before   { background: #ef4444; }
.rr-toast-win::before     { background: linear-gradient(180deg,#f4cd84,#f4cd84); }
.rr-toast-acquire::before { background: #22c55e; }
.rr-toast-acquire .rr-toast-ico{ color:#22c55e; }
.rr-toast-acquire{ box-shadow:0 12px 32px rgba(0,0,0,.42), 0 0 20px rgba(74,222,128,.22); }
.rr-toast-ico{ font-size: 19px; flex: 0 0 auto; }
.rr-toast-text{ flex: 1 1 auto; }
.rr-toast-x{
  flex: 0 0 auto; background: none; border: 0; color: var(--t3);
  font-size: 20px; line-height: 1; cursor: pointer; padding: 0 2px;
  transition: color .15s;
}
.rr-toast-x:hover{ color: var(--t1); }
/* win toast gets a celebratory glow */
.rr-toast-win{ box-shadow: 0 12px 34px rgba(196,184,158,.4), 0 0 0 1px rgba(244,205,132,.3); }
@media (max-width: 600px){
  .rr-toast-host{ right: 10px; left: 10px; bottom: 10px; max-width: none; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .rr-toast{ transition: opacity .2s; transform: none; }
  .rr-toast.show{ transform: none; }
  .rr-toast.hide{ transform: none; }
}

/* ═══════════════════════════════════════════════════════
   GRAND ANIMATION PASS (v67+) — ambient background motion,
   button shine, nav effects, glows, entrances. Everywhere.
   ═══════════════════════════════════════════════════════ */

/* ── Animated ambient background: drifting ember field + slow hue pulse ── */
html::before{
  content:""; position:fixed; inset:-20%; z-index:-2; pointer-events:none;
  background:
    radial-gradient(2px 2px at 12% 30%, rgba(196,184,158,.5), transparent),
    radial-gradient(2px 2px at 78% 60%, rgba(196,184,158,.45), transparent),
    radial-gradient(1.5px 1.5px at 45% 85%, rgba(194,239,206,.5), transparent),
    radial-gradient(2px 2px at 90% 18%, rgba(196,184,158,.4), transparent),
    radial-gradient(1.5px 1.5px at 30% 70%, rgba(182,170,146,.4), transparent),
    radial-gradient(2px 2px at 65% 40%, rgba(196,184,158,.35), transparent);
  background-size: 100% 100%;
  animation: bgEmberDrift 26s linear infinite, bgHue 18s ease-in-out infinite alternate;
  opacity:.6;
}
@keyframes bgEmberDrift{
  0%{ transform: translateY(0) translateX(0); }
  100%{ transform: translateY(-8%) translateX(3%); }
}
@keyframes bgHue{
  0%{ filter: hue-rotate(0deg) brightness(1); }
  100%{ filter: hue-rotate(-12deg) brightness(1.15); }
}

/* A slow rotating conic glow behind the whole page for depth */
html::after{
  content:""; position:fixed; top:50%; left:50%; width:160vmax; height:160vmax;
  transform:translate(-50%,-50%); z-index:-3; pointer-events:none; opacity:.06;
  background: conic-gradient(from 0deg, transparent, rgba(196,184,158,.5), transparent 30%, transparent 60%, rgba(182,170,146,.4), transparent);
  animation: bgConicSpin 50s linear infinite;
}
@keyframes bgConicSpin{ to{ transform:translate(-50%,-50%) rotate(360deg); } }

/* ── Buttons: shine sweep on hover + press ── */
.btn-primary, .cf-create-btn, #joinBtn, .empty-state-cta, .app-modal__btn, .join-btn{
  position: relative; overflow: hidden;
}
.btn-primary::before, .cf-create-btn::before, #joinBtn::before,
.empty-state-cta::before, .join-btn::before{
  content:""; position:absolute; top:0; left:-120%; width:60%; height:100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-20deg); transition: none; pointer-events:none;
}
.btn-primary:hover::before, .cf-create-btn:hover::before, #joinBtn:hover::before,
.empty-state-cta:hover::before, .join-btn:hover::before{
  animation: btnShine .75s ease;
}
@keyframes btnShine{ to{ left:140%; } }

/* Primary buttons get a subtle continuous pulse-glow to draw the eye */
.btn-primary, .cf-create-btn, #joinBtn{
  animation: btnIdleGlow 2.8s ease-in-out infinite;
}
@keyframes btnIdleGlow{
  0%,100%{ box-shadow: 0 4px 16px rgba(182,170,146,.28); }
  50%{ box-shadow: 0 6px 22px rgba(196,184,158,.45); }
}

/* ── Nav links: animated underline grow + lift ── */
.nav a{ position: relative; }
.nav a::after{
  content:""; position:absolute; left:50%; bottom:3px; width:0; height:2px;
  background: linear-gradient(90deg, var(--rust3), var(--rust2));
  border-radius:2px; transform:translateX(-50%);
  transition: width .25s cubic-bezier(.4,0,.2,1);
}
.nav a:hover::after{ width:62%; }
.nav a:hover{ transform: translateY(-1px); }
.nav a.active::after{ width:62%; }

/* ── Brand logo: gentle floating + glow throb ── */
.brand-logo, .brand img, .brand svg{ animation: none; }
/* ── Cards: hover glow lift on all panels ── */
.section-block{ transition: transform .25s cubic-bezier(.34,1.4,.64,1), box-shadow .3s, border-color .25s; }
.section-block:hover{
  transform: translateY(-3px);
  box-shadow: 0 14px 40px rgba(0,0,0,.4), 0 0 0 1px rgba(196,184,158,.25);
}

/* ── Stat boxes / numbers: subtle count-up shimmer ── */
.stat-box, .hero-stat, .lp-stat, .admin-stat{
  transition: transform .2s cubic-bezier(.34,1.56,.64,1);
}
.stat-box:hover, .hero-stat:hover, .lp-stat:hover{ transform: scale(1.04); }

/* Money figures get a soft glow pulse */
.prize-amount, #prizePool, #heroPool, .lb-wager-amt{
  animation: moneyGlow 3s ease-in-out infinite;
}
@keyframes moneyGlow{
  0%,100%{ filter: drop-shadow(0 0 0 transparent); }
  50%{ filter: drop-shadow(0 0 8px rgba(196,184,158,.5)); }
}

/* ── Balance pill: pulse on the +/- buttons ── */
.bal-btn{ transition: transform .15s cubic-bezier(.34,1.6,.64,1), background .2s; }
.bal-btn:hover{ transform: scale(1.15); }
.bal-btn:active{ transform: scale(.9); }

/* ── Eyebrow bullet: blinking ember ── */
.eyebrow::before{ animation: emberBlink 2s ease-in-out infinite; }
@keyframes emberBlink{ 0%,100%{ opacity:1; } 50%{ opacity:.4; } }

/* ── Page content entrance: fade-up cascade ── */
main.page > *{ animation: pageRise .5s ease both; }
main.page > *:nth-child(1){ animation-delay:.02s; }
main.page > *:nth-child(2){ animation-delay:.08s; }
main.page > *:nth-child(3){ animation-delay:.14s; }
main.page > *:nth-child(4){ animation-delay:.2s; }
main.page > *:nth-child(5){ animation-delay:.26s; }
@keyframes pageRise{ from{ opacity:0; transform: translateY(16px); } to{ opacity:1; transform: translateY(0); } }

/* ── Quick-amount chips: bouncy hover ── */
.qa, .quick-amounts button, .cf-side-btn{
  transition: transform .18s cubic-bezier(.34,1.7,.5,1), border-color .2s, background .2s, box-shadow .2s;
}
.qa:hover, .quick-amounts button:hover{ transform: translateY(-2px) scale(1.03); box-shadow:0 6px 16px rgba(182,170,146,.25); }

/* ── Notification bell: swing when it has unread ── */
.notif-bell.has-unread, #notifBell.has-unread{ animation: none; }
/* ── Timer ring: pulse ── */
.timer-ring, .timer-circle{ animation: timerPulse 2s ease-in-out infinite; }
@keyframes timerPulse{ 0%,100%{ filter: drop-shadow(0 0 0 transparent); } 50%{ filter: drop-shadow(0 0 10px rgba(196,184,158,.45)); } }

/* Respect reduced motion: kill the ambient + continuous loops */
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  html::before, html::after, .btn-primary, .cf-create-btn, #joinBtn,
  .brand-logo, .brand img, .brand svg, .prize-amount, #prizePool, #heroPool,
  .lb-wager-amt, .eyebrow::before, .notif-bell.has-unread, .timer-ring,
  .timer-circle, main.page > *{ animation: none !important; }
}

/* ═══════════════════════════════════════════════════════
   ANIMATION PASS 2 (v68+) — inputs, modals, side panels,
   chat, winner banner, finishing micro-motions.
   ═══════════════════════════════════════════════════════ */

/* Inputs: focus glow ring that grows in */
input, select, textarea{ transition: border-color .2s, box-shadow .25s, background .2s; }
input:focus, select:focus, textarea:focus{
  box-shadow: inset 0 2px 5px rgba(0,0,0,.4), 0 0 0 3px rgba(196,184,158,.18);
  animation: inputFocusPop .3s ease;
}
@keyframes inputFocusPop{ 0%{ box-shadow: inset 0 2px 5px rgba(0,0,0,.4), 0 0 0 0 rgba(196,184,158,.4); } 100%{ box-shadow: inset 0 2px 5px rgba(0,0,0,.4), 0 0 0 3px rgba(196,184,158,.18); } }

/* Coinflip watch modal: scale-in entrance */
.cf-modal.open .cf-modal-card, .cf-modal.show .cf-modal-card{
  animation: cfModalIn .35s cubic-bezier(.2,1.1,.4,1);
}
@keyframes cfModalIn{ 0%{ opacity:0; transform: translateY(20px) scale(.94); } 100%{ opacity:1; transform:none; } }

/* Chat drawer: messages slide in as they arrive */
.chat-message{ animation: chatMsgIn .3s ease; }
@keyframes chatMsgIn{ from{ opacity:0; transform: translateX(-12px); } to{ opacity:1; transform: translateX(0); } }

/* Chat panel slides + fades content when opening */
.chat-drawer:not(.closed) .chat-head{ animation: chatHeadIn .4s ease; }
@keyframes chatHeadIn{ from{ opacity:0; transform: translateY(-8px); } to{ opacity:1; transform:none; } }

/* Winner banner: dramatic entrance + glow throb */
.winner-banner:not(:empty), #winnerBanner:not(:empty){
  animation: winnerIn .5s cubic-bezier(.2,1.3,.4,1), winnerGlow 1.6s ease-in-out infinite .5s;
}
@keyframes winnerIn{ 0%{ opacity:0; transform: translateX(-50%) scale(.6) translateY(10px); } 60%{ transform: translateX(-50%) scale(1.08); } 100%{ opacity:1; transform: translateX(-50%) scale(1); } }
@keyframes winnerGlow{ 0%,100%{ filter: drop-shadow(0 0 6px rgba(196,184,158,.4)); } 50%{ filter: drop-shadow(0 0 18px rgba(196,184,158,.8)); } }

/* (Side-panel rows re-render on each poll, so no per-row entrance animation
   here — it would re-fire constantly and flicker. Chat messages append, so
   they keep their slide-in below.) */

/* Achievement badges: pop + shimmer on hover */
.ach-badge, .achievement, .reward-badge{
  transition: transform .2s cubic-bezier(.34,1.6,.5,1), box-shadow .25s;
}
.ach-badge:hover, .achievement:hover, .reward-badge:hover{
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 8px 22px rgba(182,170,146,.35);
}

/* Avatar / fighter portrait: subtle glow ring breathing on profile */
.profile-avatar, .pf-avatar{ animation: avatarGlow 3.5s ease-in-out infinite; }
@keyframes avatarGlow{ 0%,100%{ box-shadow: 0 0 0 2px rgba(196,184,158,.2); } 50%{ box-shadow: 0 0 18px 2px rgba(196,184,158,.4); } }

/* Tab/pill toggles: smooth slide */
.tab, .pill-toggle, .seg-btn{ transition: background .2s, color .2s, transform .15s; }
.tab:active, .seg-btn:active{ transform: scale(.96); }

/* Prize medals on leaderboard: gentle bob, staggered */
.lb-medal, .prize-tier{ animation: medalBob 3s ease-in-out infinite; }
.prize-tier:nth-child(2){ animation-delay:.3s; }
.prize-tier:nth-child(3){ animation-delay:.6s; }
@keyframes medalBob{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-4px); } }

/* Links in nav already underline; add icon wiggle on hover for fun */
.nav a:hover{ }
.nav a:hover::first-letter{ }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  input:focus, select:focus, textarea:focus,
  .cf-modal.open .cf-modal-card, .chat-message, .chat-drawer:not(.closed) .chat-head,
  .winner-banner:not(:empty), #winnerBanner:not(:empty),
  .log-row, .hist-row, .queue-row,
  .profile-avatar, .pf-avatar, .lb-medal, .prize-tier{ animation: none !important; }
}

/* Leaderboard: prevent long usernames from pushing wager off-screen */
.lb-player{ min-width: 0; }
.lb-player b{
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}
.lb-record{ flex: 0 0 auto; white-space: nowrap; }
@media (max-width: 600px){
  .lb-player b{ max-width: 42vw; }
  .lb-wager-amt{ font-size: 16px; }
}

/* ═══════════════════════════════════════════════════════
   RUSTFLIP SIDE PICKER + CHIP ANIMATIONS (v69+)
   ═══════════════════════════════════════════════════════ */

/* Active side coin gets a pulsing colored glow + the coin spins gently */
.cf-side-btn.active .cf-side-coin{ animation: sideCoinSpin 4s linear infinite; }
@keyframes sideCoinSpin{ to{ transform: rotateY(360deg); } }
.cf-side-btn.active.cf-side-red{ animation: sidePulseRed 2s ease-in-out infinite; }
.cf-side-btn.active.cf-side-blue{ animation: sidePulseBlue 2s ease-in-out infinite; }
@keyframes sidePulseRed{
  0%,100%{ box-shadow: 0 6px 20px rgba(239,68,68,.25); }
  50%{ box-shadow: 0 6px 26px rgba(239,68,68,.55); }
}
@keyframes sidePulseBlue{
  0%,100%{ box-shadow: 0 6px 20px rgba(59,130,246,.25); }
  50%{ box-shadow: 0 6px 26px rgba(59,130,246,.55); }
}
/* Pop transition when a side becomes active is handled by the existing
   .cf-side-btn transition (transform); the pulse glow below adds the rest. */

/* The "VS" between sides gets a subtle throb */
.cf-side-vs, .cf-vs{ animation: vsThrob 2.4s ease-in-out infinite; }
@keyframes vsThrob{ 0%,100%{ opacity:.7; transform: scale(1); } 50%{ opacity:1; transform: scale(1.1); } }

/* Quick-amount chip: a quick flash when clicked (active state) */
.qa:active, .quick-amounts button:active{ animation: chipFlash .3s ease; }
@keyframes chipFlash{ 0%{ background: rgba(196,184,158,.4); } 100%{ background: rgba(182,170,146,.12); } }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .cf-side-btn.active .cf-side-coin, .cf-side-btn.active.cf-side-red,
  .cf-side-btn.active.cf-side-blue, .cf-side-vs, .cf-vs{ animation: none !important; }
}

/* ═══════════════════════════════════════════════════════
   HP BAR ABOVE THE FIGHTER (v70+)
   ═══════════════════════════════════════════════════════ */
.health-section-top{
  margin: 4px 0 10px; padding: 0 4px;
}
.health-section-top .health-label{
  display:flex; justify-content:space-between; align-items:center;
  font-size:12px; font-weight:700; margin-bottom:4px; letter-spacing:.03em;
}
.health-section-top .health-label span{ color: var(--rust3); }
.health-section-top .health-label b{ color: var(--t1); font-family:var(--fd); font-size:16px; }
.health-section-top .health-track{
  height: 14px; border-radius: 999px; overflow: hidden;
  background: rgba(0,0,0,.45); border:1px solid var(--rust-ln2);
  box-shadow: inset 0 2px 4px rgba(0,0,0,.5);
}
.health-section-top .health-fill{
  height:100%; border-radius:999px; transition: width .45s cubic-bezier(.4,0,.2,1);
  background: linear-gradient(90deg, #22c55e, #4ade80) !important;
}
.health-section-top .health-fill-right{ background: linear-gradient(90deg, #22c55e, #4ade80) !important; }
/* Color shifts as HP drops (driven by inline width; we tint via low-hp class on the card) */
.player-panel.low-hp .health-section-top .health-fill{ background: linear-gradient(90deg, #ef4444, #f87171) !important; animation: hpDangerPulse 1s ease-in-out infinite; }
@keyframes hpDangerPulse{ 0%,100%{ filter:brightness(1); } 50%{ filter:brightness(1.3); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .player-panel.low-hp .health-section-top .health-fill{ animation:none; } }

/* ── Notification panel: force on top + solid + clickable (v72 fix) ── */
.notif-wrap{ z-index: 1100 !important; }
.notif-panel{
  z-index: 1200 !important;
  background: #10131e !important;       /* fully opaque so nothing shows through */
  pointer-events: auto !important;
}
.notif-panel, .notif-panel *{ pointer-events: auto; }
.notif-mark-all{ position: relative; z-index: 2; cursor: pointer; }
.notif-item{ pointer-events: auto; }

/* ═══════════════════════════════════════════════════════
   LEADERBOARD REDESIGN (v72) — labeled stat blocks, clean rows
   ═══════════════════════════════════════════════════════ */
.lb-row{
  display:flex !important; align-items:center; gap:14px;
  padding:14px 18px !important; border-radius:14px; margin-bottom:10px;
  background:linear-gradient(180deg,#221a15,#10131e) !important;
  border:1px solid var(--rust-ln2) !important;
}
.lb-row-gold{ border-color:rgba(238,179,81,.45) !important; background:linear-gradient(180deg,rgba(238,179,81,.08),#10131e) !important; }
.lb-row-silver{ border-color:rgba(200,200,210,.35) !important; }
.lb-row-bronze{ border-color:rgba(205,127,50,.35) !important; }
.lb-rank-badge{
  flex:0 0 auto; width:38px; height:38px; display:flex; align-items:center; justify-content:center;
  font-size:18px; font-weight:800; color:var(--t2); font-family:var(--fd);
}
.lb-player{ flex:1 1 auto; min-width:0; }
.lb-player b{ display:block; font-size:15px; font-weight:700; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.lb-player small{ display:block; font-size:11.5px; color:var(--t3); margin-top:2px; }
/* labeled stat blocks */
.lb-stat-block{
  flex:0 0 auto; display:flex; flex-direction:column; align-items:flex-end;
  min-width:88px; line-height:1.15;
}
.lb-stat-val{
  font-family:var(--fd); font-size:19px; font-weight:800; letter-spacing:.01em;
  background:linear-gradient(180deg,#ffd9a0,#f4cd84 60%,#eeb351);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.lb-stat-lbl{ font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--t3); font-weight:700; margin-top:1px; }
.lb-stat-prize .lb-stat-val{
  background:linear-gradient(180deg,#f4cd84,#22c55e); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.lb-stat-empty .lb-stat-val{ background:none; -webkit-text-fill-color:initial; color:var(--t3); }
/* Leaderboard avatars (medal ring for top 3) */
.lb-av{ flex:0 0 auto; width:44px; height:44px; border-radius:50%; overflow:hidden; display:grid; place-items:center; background:#1b212b; border:2px solid var(--rust-ln2); box-shadow:0 2px 8px rgba(0,0,0,.35); }
.lb-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.lb-av-fallback{ font-family:var(--fu); font-size:18px; font-weight:800; color:var(--t2); }
.lb-av.rank-gold{ border-color:#eeb351; box-shadow:0 0 0 2px rgba(238,179,81,.35), 0 4px 14px rgba(238,179,81,.4); }
.lb-av.rank-silver{ border-color:#cdd2dc; box-shadow:0 0 0 2px rgba(205,210,220,.3); }
.lb-av.rank-bronze{ border-color:#cd7f32; box-shadow:0 0 0 2px rgba(205,127,50,.3); }
/* Prize-breakdown strip under the hero */
.lb-prizes{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin:0 0 20px; }
.lb-prize-pill{ display:flex; flex-direction:column; align-items:center; gap:3px; min-width:120px; padding:12px 18px; border-radius:14px; background:linear-gradient(180deg,#1c2230,#12151f); border:1px solid var(--rust-ln2); }
.lb-prize-pill.rank-gold{ border-color:rgba(238,179,81,.5); background:linear-gradient(180deg,rgba(238,179,81,.12),#12151f); box-shadow:0 8px 22px rgba(238,179,81,.12); }
.lb-prize-pill.rank-silver{ border-color:rgba(205,210,220,.4); }
.lb-prize-pill.rank-bronze{ border-color:rgba(205,127,50,.4); }
.lb-prize-medal{ font-size:24px; line-height:1; }
.lb-prize-amt{ display:flex; align-items:center; gap:.18em; font-family:var(--fd); font-size:21px; font-weight:800; color:var(--gold2); }
.lb-prize-amt .coin-ico{ width:.62em; height:.62em; }
.lb-prize-place{ font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--t3); font-weight:700; }

/* ════════ 3D PODIUM (top 3) + leaderboard animation ════════ */
.lb-podium-wrap{ position:relative; overflow:hidden; perspective:1100px; margin:6px 0 26px; }
.lb-podium{ display:flex; align-items:flex-end; justify-content:center; gap:14px; transform-style:preserve-3d; transform:rotateX(11deg); perspective:1300px; }
.lb-pod{ position:relative; flex:1 1 0; max-width:212px; min-width:0; display:flex; flex-direction:column; align-items:center; transform-style:preserve-3d; }
.lb-pod-card{ position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; gap:3px; margin-bottom:12px; width:100%;
  animation:lbPodRise .7s cubic-bezier(.2,1.1,.4,1) both; }
.lb-pod-1 .lb-pod-card{ animation-delay:.05s; }
.lb-pod-2 .lb-pod-card{ animation-delay:.16s; }
.lb-pod-3 .lb-pod-card{ animation-delay:.26s; }
.lb-pod-trophy{ position:relative; z-index:2; font-size:34px; line-height:1; margin-bottom:2px;
  filter:drop-shadow(0 5px 11px rgba(238,179,81,.75)); transform-style:preserve-3d; animation:lbTrophy 4s ease-in-out infinite; }
.lb-pod-rays{ position:absolute; top:26px; left:50%; width:200px; height:200px; margin-left:-100px; pointer-events:none; z-index:0; opacity:.7;
  background:repeating-conic-gradient(from 0deg, rgba(255,213,110,.22) 0deg 7deg, transparent 7deg 19deg);
  -webkit-mask:radial-gradient(closest-side, #000 26%, transparent 70%); mask:radial-gradient(closest-side, #000 26%, transparent 70%);
  animation:lbRays 18s linear infinite; }
.lb-pod-av{ position:relative; width:74px; height:74px; border-radius:50%; overflow:hidden; display:grid; place-items:center;
  background:#1b212b; border:3px solid var(--rust-ln2); box-shadow:0 8px 22px rgba(0,0,0,.5); animation:lbFloat 3.6s ease-in-out infinite; }
.lb-pod-1 .lb-pod-av{ width:94px; height:94px; animation-duration:3.9s; }
.lb-pod-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.lb-pod-av span{ font-family:var(--fu); font-size:30px; font-weight:800; color:#cfd6dd; }
.lb-pod-av.rank-gold{ border-color:#eeb351; box-shadow:0 0 0 3px rgba(238,179,81,.4), 0 10px 30px rgba(238,179,81,.5); }
.lb-pod-av.rank-silver{ border-color:#cdd2dc; box-shadow:0 0 0 3px rgba(205,210,220,.35), 0 8px 22px rgba(0,0,0,.5); }
.lb-pod-av.rank-bronze{ border-color:#cd7f32; box-shadow:0 0 0 3px rgba(205,127,50,.35), 0 8px 22px rgba(0,0,0,.5); }
.lb-pod-1 .lb-pod-av::after{ content:""; position:absolute; inset:-9px; border-radius:50%; pointer-events:none;
  box-shadow:0 0 32px 7px rgba(238,179,81,.5); animation:lbPulse 2.4s ease-in-out infinite; }
.lb-pod-medal{ position:absolute; bottom:-2px; right:-2px; font-size:20px; filter:drop-shadow(0 2px 3px rgba(0,0,0,.55)); }
.lb-pod-1 .lb-pod-medal{ font-size:26px; }
.lb-pod-name{ font-weight:800; font-size:15px; color:var(--t1); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lb-pod-1 .lb-pod-name{ font-size:17px; color:#ffd98a; }
.lb-pod-sub{ font-size:11px; color:var(--t3); }
.lb-pod-wager{ display:flex; align-items:center; gap:.2em; font-family:var(--fd); font-size:18px; font-weight:800;
  background:linear-gradient(180deg,#ffd9a0,#f4cd84 60%,#eeb351); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.lb-pod-wager .coin-ico{ width:.62em; height:.62em; -webkit-text-fill-color:initial; }
.lb-pod.is-empty .lb-pod-card{ opacity:.45; }
/* the 3D pedestal block */
.lb-pod-base{ position:relative; width:100%; border-radius:12px 12px 5px 5px; display:flex; flex-direction:column; align-items:center; gap:4px;
  padding:13px 8px 11px; color:#1b150a; overflow:visible; transform-origin:bottom; transform-style:preserve-3d;
  background:linear-gradient(180deg, var(--pod-top,#2a2f3a), var(--pod-bot,#161a22));
  box-shadow:0 20px 32px rgba(0,0,0,.55), inset 0 2px 0 rgba(255,255,255,.3), inset 0 -12px 20px rgba(0,0,0,.4);
  animation:lbBaseGrow .85s cubic-bezier(.2,1,.3,1) both; }
.lb-pod-base::before{ content:""; position:absolute; top:0; left:0; right:0; height:30px; border-radius:11px 11px 0 0;
  background:linear-gradient(180deg, var(--pod-top2,#fff), var(--pod-top,#ffe48a));
  transform:rotateX(90deg); transform-origin:top center; box-shadow:inset 0 0 16px rgba(255,255,255,.25); }
.lb-pod-1 .lb-pod-base{ height:124px; --pod-top:#ffe48a; --pod-top2:#fff4c6; --pod-bot:#d2941b; animation-delay:.05s; }
.lb-pod-2 .lb-pod-base{ height:94px;  --pod-top:#eef2f8; --pod-top2:#ffffff; --pod-bot:#9aa3b2; animation-delay:.16s; }
.lb-pod-3 .lb-pod-base{ height:76px;  --pod-top:#f3bd92; --pod-top2:#ffdcbb; --pod-bot:#ab6530; animation-delay:.26s; }
.lb-pod-rank{ font-family:var(--fd); font-size:30px; font-weight:800; line-height:1; text-shadow:0 2px 4px rgba(255,255,255,.25); }
.lb-pod-prize{ display:flex; align-items:center; gap:.22em; font-family:var(--fd); font-size:28px; font-weight:800; color:#fff6e2;
  background:rgba(0,0,0,.36); padding:5px 16px; border-radius:999px; letter-spacing:.01em;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16), 0 2px 7px rgba(0,0,0,.35); text-shadow:0 1px 2px rgba(0,0,0,.55); }
.lb-pod-prize .coin-ico{ width:.8em; height:.8em; }
.lb-pod-shine{ position:absolute; inset:0; pointer-events:none; transform:translateX(-130%);
  background:linear-gradient(110deg, transparent 32%, rgba(255,255,255,.6) 50%, transparent 68%); }
.lb-pod-1 .lb-pod-shine{ animation:lbShine 3.4s ease-in-out 1.2s infinite; }

/* staggered entrance + 3D hover for the table rows (4+) */
.lb-rows .lb-row{ animation:lbRowIn .5s ease both; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.lb-rows .lb-row:hover{ transform:translateY(-2px) scale(1.012) !important; box-shadow:0 14px 28px rgba(0,0,0,.42); border-color:rgba(238,179,81,.32) !important; }
.lb-rank-badge{ transition:transform .18s ease; }
.lb-rows .lb-row:hover .lb-rank-badge{ transform:scale(1.12); }

@keyframes lbFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-7px); } }
@keyframes lbPodRise{ from{ opacity:0; transform:translateY(26px); } to{ opacity:1; transform:translateY(0); } }
@keyframes lbBaseGrow{ from{ transform:scaleY(.02); } to{ transform:scaleY(1); } }
@keyframes lbShine{ 0%{ transform:translateX(-130%);} 55%,100%{ transform:translateX(130%);} }
@keyframes lbPulse{ 0%,100%{ opacity:.5; } 50%{ opacity:1; } }
@keyframes lbRowIn{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:translateY(0); } }
@keyframes lbTrophy{ 0%{ transform:translateY(0) rotateY(0deg); } 50%{ transform:translateY(-7px) rotateY(180deg); } 100%{ transform:translateY(0) rotateY(360deg); } }
@keyframes lbRays{ to{ transform:rotate(360deg); } }
@keyframes lbConfetti{ 0%{ transform:translateY(0) rotateZ(0deg); opacity:0; } 8%{ opacity:.95; } 100%{ transform:translateY(380px) rotateZ(560deg); opacity:.18; } }
.lb-confetti{ position:absolute; inset:0; pointer-events:none; overflow:hidden; z-index:3; }
.lb-confetti i{ position:absolute; top:-16px; width:8px; height:13px; border-radius:1px; opacity:0; animation-name:lbConfetti; animation-timing-function:linear; animation-iteration-count:infinite; }

@media (max-width:560px){
  .lb-podium{ gap:7px; }
  .lb-pod-av{ width:58px; height:58px; } .lb-pod-1 .lb-pod-av{ width:72px; height:72px; }
  .lb-pod-av span{ font-size:23px; } .lb-pod-name{ font-size:13px; } .lb-pod-1 .lb-pod-name{ font-size:14px; }
  .lb-pod-sub{ font-size:10px; } .lb-pod-wager{ font-size:15px; }
  .lb-pod-1 .lb-pod-base{ height:104px; } .lb-pod-2 .lb-pod-base{ height:80px; } .lb-pod-3 .lb-pod-base{ height:66px; }
  .lb-pod-rank{ font-size:24px; } .lb-pod-crown{ font-size:24px; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .lb-pod-card,.lb-pod-base,.lb-pod-av,.lb-pod-trophy,.lb-pod-rays,.lb-pod-shine,.lb-pod-1 .lb-pod-av::after,.lb-confetti i,.lb-rows .lb-row{ animation:none !important; }
  .lb-confetti{ display:none; }
}

/* prize breakdown slots get a Prize label */
.lb-prize-slot{
  display:flex; flex-direction:column; align-items:center; gap:1px;
  padding:8px 10px; border-radius:10px; background:rgba(0,0,0,.25); border:1px solid var(--rust-ln);
}
.lb-prize-slot .lb-prize-rank{ font-size:15px; }
.lb-prize-slot b{ font-family:var(--fd); font-size:15px; color:var(--rust3); }
.lb-prize-slot em{ font-size:8px; letter-spacing:.12em; text-transform:uppercase; color:var(--t3); font-style:normal; font-weight:700; }
.lb-prize-slot.rank-1{ border-color:rgba(238,179,81,.4); background:rgba(238,179,81,.07); }
.lb-prize-slot.rank-1 b{ color:#f4cd84; }

@media (max-width:600px){
  .lb-row{ gap:8px; padding:12px !important; }
  .lb-av{ width:36px; height:36px; }
  .lb-rank-badge{ width:26px; font-size:15px; }
  .lb-stat-block{ min-width:64px; }
  .lb-stat-val{ font-size:15px; }
  .lb-player b{ max-width:38vw; }
}

/* ── Transaction history pagination ── */
.tx-pager{ display:flex; align-items:center; justify-content:center; gap:14px; margin-top:14px; }
.tx-pg-btn{
  padding:8px 16px; border-radius:9px; border:1px solid var(--rust-ln2);
  background:rgba(255,255,255,.04); color:var(--t1); font-weight:700; font-size:13px; cursor:pointer;
  transition: background .18s, transform .12s, opacity .2s;
}
.tx-pg-btn:hover:not(:disabled){ background:rgba(196,184,158,.15); transform:translateY(-1px); }
.tx-pg-btn:active:not(:disabled){ transform:translateY(0) scale(.97); }
.tx-pg-btn:disabled{ opacity:.4; cursor:not-allowed; }
.tx-pg-info{ font-size:13px; color:var(--t2); font-weight:600; font-variant-numeric:tabular-nums; }

/* ═══════════════════════════════════════════════════════
   ARENA — BOXING RING (v72 new game)
   ═══════════════════════════════════════════════════════ */
.page-sub{ color:var(--t3); font-size:14px; line-height:1.55; margin-top:6px; max-width:640px; }

.bx-ring{
  position:relative; height:420px; border-radius:18px; overflow:hidden;
  background:
    radial-gradient(120% 90% at 50% 10%, rgba(196,184,158,.10), transparent 60%),
    linear-gradient(180deg,#161226,#120d0a);
  border:1px solid var(--rust-ln2);
  display:flex; align-items:flex-end; justify-content:space-between;
  padding:0 6%;
}
/* canvas floor */
.bx-ring-floor{
  position:absolute; left:0; right:0; bottom:0; height:46%;
  background:
    repeating-linear-gradient(90deg, rgba(0,0,0,.18) 0 2px, transparent 2px 40px),
    linear-gradient(180deg,#2a2740,#151926);
  border-top:3px solid rgba(196,184,158,.4);
  box-shadow:inset 0 18px 40px rgba(0,0,0,.5);
}
/* ropes */
.bx-rope{ position:absolute; left:0; right:0; height:4px; background:linear-gradient(90deg,#f5c451,#f4cd84); opacity:.55; z-index:1; }
.bx-rope-top{ top:14%; } .bx-rope-mid{ top:26%; }
.bx-ropes-back{ position:absolute; inset:0 0 46% 0; border:2px solid rgba(196,184,158,.12); border-bottom:0; pointer-events:none; }
.bx-ring::before,.bx-ring::after{ /* corner posts */
  content:""; position:absolute; top:8%; bottom:40%; width:7px; border-radius:4px;
  background:linear-gradient(180deg,#f4cd84,#8a2e1c); z-index:2;
}
.bx-ring::before{ left:3%; } .bx-ring::after{ right:3%; }

.bx-fighter{ position:relative; z-index:3; width:160px; display:flex; flex-direction:column; align-items:center; transition:transform .2s; }
.bx-char{ width:130px; }
.bx-svg{ width:130px; height:auto; filter:drop-shadow(0 10px 18px rgba(0,0,0,.5)); transform-origin:50% 90%; }
.bx-fighter-red{ }
.bx-fighter-blue .bx-svg{ transform:scaleX(-1); }   /* face each other */

/* idle bob */
.bx-fighter:not(.bx-win):not(.bx-lose) .bx-svg{ animation:bxBob 1.6s ease-in-out infinite; }
@keyframes bxBob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-5px); } }
.bx-fighter-blue:not(.bx-win):not(.bx-lose) .bx-svg{ animation:bxBobB 1.6s ease-in-out infinite; }
@keyframes bxBobB{ 0%,100%{ transform:scaleX(-1) translateY(0); } 50%{ transform:scaleX(-1) translateY(-5px); } }

/* punch lunge */
.bx-fighter-red.bx-punch{ transform:translateX(40px); }
.bx-fighter-blue.bx-punch{ transform:translateX(-40px); }
.bx-fighter.bx-punch .bx-arm{ animation:bxJab .36s ease; transform-origin:0 0; }
@keyframes bxJab{ 0%{ transform:translateX(0) rotate(0); } 45%{ transform:translateX(8px) rotate(-12deg); } 100%{ transform:translateX(0) rotate(0); } }

/* hit reaction */
.bx-fighter.bx-hit .bx-svg{ animation:bxHit .36s ease; filter:drop-shadow(0 0 14px rgba(239,68,68,.9)) saturate(1.6); }
@keyframes bxHit{ 0%,100%{ transform:translateX(0) rotate(0);} 25%{ transform:translateX(-12px) rotate(-5deg);} 60%{ transform:translateX(6px) rotate(2deg);} }
.bx-fighter-blue.bx-hit .bx-svg{ animation:bxHitB .36s ease; }
@keyframes bxHitB{ 0%,100%{ transform:scaleX(-1) translateX(0) rotate(0);} 25%{ transform:scaleX(-1) translateX(12px) rotate(5deg);} 60%{ transform:scaleX(-1) translateX(-6px) rotate(-2deg);} }
.bx-fighter.bx-dodge .bx-svg{ animation:bxDodge .3s ease; }
@keyframes bxDodge{ 0%,100%{ opacity:1; } 50%{ opacity:.55; transform:translateY(-6px); } }

/* win / lose */
.bx-fighter.bx-win .bx-svg{ animation:bxCheer .7s ease infinite alternate; filter:drop-shadow(0 0 20px rgba(196,184,158,.8)); }
@keyframes bxCheer{ 0%{ transform:translateY(0);} 100%{ transform:translateY(-10px);} }
.bx-fighter.bx-lose .bx-svg{ transform:rotate(82deg) translateY(10px); opacity:.55; filter:grayscale(.6); transition:transform .6s, opacity .6s; }
.bx-fighter-blue.bx-win .bx-svg{ animation:bxCheerB .7s ease infinite alternate; }
@keyframes bxCheerB{ 0%{ transform:scaleX(-1) translateY(0);} 100%{ transform:scaleX(-1) translateY(-10px);} }
.bx-fighter-blue.bx-lose .bx-svg{ transform:scaleX(-1) rotate(82deg) translateY(10px); }

/* HP bars above fighters */
.bx-hp-wrap{ width:150px; margin-bottom:8px; z-index:4; }
.bx-hp-label{ display:flex; justify-content:space-between; font-size:12px; font-weight:700; color:var(--t1); margin-bottom:3px; }
.bx-hp-label b{ color:var(--rust3); font-weight:800; }
.bx-hp-track{ height:13px; border-radius:999px; background:rgba(0,0,0,.5); border:1px solid var(--rust-ln2); overflow:hidden; box-shadow:inset 0 2px 4px rgba(0,0,0,.5); }
.bx-hp-fill{ height:100%; width:100%; border-radius:999px; background:linear-gradient(90deg,#22c55e,#4ade80); transition:width .4s cubic-bezier(.4,0,.2,1); }
.bx-low .bx-hp-fill{ background:linear-gradient(90deg,#ef4444,#f87171); animation:bxHpDanger 1s ease-in-out infinite; }
@keyframes bxHpDanger{ 0%,100%{ filter:brightness(1);} 50%{ filter:brightness(1.35);} }

/* corner tags */
.bx-corner-tag{ margin-top:6px; font-size:10px; font-weight:800; letter-spacing:.1em; padding:3px 9px; border-radius:6px; z-index:4; }
.bx-tag-red{ background:rgba(239,68,68,.2); color:#fca5a5; }
.bx-tag-blue{ background:rgba(59,130,246,.2); color:#93c5fd; }

/* center VS / round */
.bx-center{ position:absolute; left:50%; top:34%; transform:translate(-50%,-50%); text-align:center; z-index:3; }
.bx-vs{ font-family:var(--fd); font-size:40px; color:var(--rust3); text-shadow:0 2px 12px rgba(0,0,0,.6); animation:bxVsPulse 2s ease-in-out infinite; }
@keyframes bxVsPulse{ 0%,100%{ transform:scale(1); opacity:.85;} 50%{ transform:scale(1.12); opacity:1;} }

/* floating damage / miss text */
.bx-float{ position:absolute; top:38%; left:50%; transform:translateX(-50%); font-family:var(--fd); font-size:26px; font-weight:800; pointer-events:none; z-index:6; animation:bxFloat .9s ease-out forwards; }
.bx-float-dmg{ color:#fca5a5; text-shadow:0 2px 8px rgba(0,0,0,.7); }
.bx-float-miss{ color:#cbd5e1; font-size:18px; }
@keyframes bxFloat{ 0%{ opacity:0; transform:translateX(-50%) translateY(0) scale(.6);} 25%{ opacity:1; transform:translateX(-50%) translateY(-14px) scale(1.1);} 100%{ opacity:0; transform:translateX(-50%) translateY(-46px) scale(1);} }

/* hit spark */
.bx-spark{ position:absolute; top:42%; left:50%; width:0; height:0; z-index:5; }
.bx-spark i{ position:absolute; width:18px; height:3px; background:linear-gradient(90deg,#fff,#f4cd84); border-radius:2px; transform-origin:0 50%; animation:bxSpark .5s ease-out forwards; }
@keyframes bxSpark{ 0%{ opacity:1; width:4px;} 100%{ opacity:0; width:26px; } }

/* winner banner */
.bx-winner-banner{ position:absolute; left:50%; top:18%; transform:translateX(-50%) scale(.6); opacity:0; z-index:7;
  background:linear-gradient(180deg,#1e1933,#10131e); border:1px solid rgba(196,184,158,.5);
  padding:12px 24px; border-radius:14px; font-family:var(--fd); font-size:24px; color:#f4cd84;
  box-shadow:0 12px 40px rgba(196,184,158,.4); white-space:nowrap; }
.bx-winner-banner.show{ animation:bxWinIn .5s cubic-bezier(.2,1.3,.4,1) forwards, bxWinGlow 1.6s ease-in-out infinite .5s; }
@keyframes bxWinIn{ to{ opacity:1; transform:translateX(-50%) scale(1);} }
@keyframes bxWinGlow{ 0%,100%{ box-shadow:0 12px 40px rgba(196,184,158,.4);} 50%{ box-shadow:0 12px 50px rgba(196,184,158,.7);} }

/* idle overlay */
.bx-idle-overlay{ position:absolute; inset:0; z-index:8; display:flex; align-items:center; justify-content:center; background:rgba(10,7,5,.55); backdrop-filter:blur(2px); }
.bx-idle-inner{ text-align:center; }
.bx-idle-icon{ font-size:46px; animation:bxBob 2.4s ease-in-out infinite; }
.bx-idle-title{ font-family:var(--fd); font-size:24px; color:var(--t1); margin-top:8px; }
.bx-idle-msg{ font-size:13px; color:var(--t3); margin-top:4px; }

.bx-fight-msg{ text-align:center; min-height:18px; font-size:13px; color:var(--rust3); margin-top:10px; }
.bx-fight-msg.err{ color:#f87171; }

/* layout grid */
.bx-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:16px; }
@media (max-width:880px){ .bx-grid{ grid-template-columns:1fr; } .bx-ring{ height:360px; } .bx-fighter{ width:120px;} .bx-char,.bx-svg{ width:104px;} }

/* corner picker */
.bx-corner-pick{ display:flex; align-items:center; gap:12px; justify-content:center; margin-bottom:14px; }
.bx-corner-btn{ flex:1; display:flex; flex-direction:column; align-items:center; gap:2px; padding:14px; border-radius:14px;
  background:rgba(255,255,255,.03); border:2px solid var(--rust-ln2); cursor:pointer; color:var(--t2); transition:transform .15s, border-color .2s, box-shadow .25s; }
.bx-corner-btn .bx-glove{ font-size:24px; }
.bx-corner-btn span{ font-family:var(--fd); font-size:18px; }
.bx-corner-btn small{ font-size:10px; color:var(--t3); }
.bx-corner-red.active{ border-color:#ef4444; box-shadow:0 6px 22px rgba(239,68,68,.35); color:#fff; }
.bx-corner-blue.active{ border-color:#3b82f6; box-shadow:0 6px 22px rgba(59,130,246,.35); color:#fff; }
.bx-corner-vs{ font-family:var(--fd); color:var(--t3); font-size:18px; }

/* open list */
.bx-open-row,.bx-recent-row{ display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:12px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); margin-bottom:9px; }
.bx-dot{ width:12px; height:12px; border-radius:50%; flex:0 0 auto; }
.bx-dot-red{ background:#ef4444; box-shadow:0 0 8px rgba(239,68,68,.6); }
.bx-dot-blue{ background:#3b82f6; box-shadow:0 0 8px rgba(59,130,246,.6); }
.bx-open-info,.bx-recent-info{ flex:1; min-width:0; }
.bx-open-info b,.bx-recent-info b{ display:block; font-size:14px; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bx-open-info small,.bx-recent-info small{ font-size:11px; color:var(--t3); }
.bx-open-wager{ font-family:var(--fd); font-size:17px; color:var(--rust3); }
.bx-btn-join,.bx-btn-bot{ padding:8px 16px; border-radius:9px; border:0; font-weight:700; font-size:13px; cursor:pointer; color:#fff; background:linear-gradient(180deg,var(--rust2),var(--rust)); transition:transform .15s, box-shadow .2s; }
.bx-btn-join:hover,.bx-btn-bot:hover{ transform:translateY(-2px); box-shadow:0 6px 16px rgba(182,170,146,.4); }
.bx-btn-cancel{ width:32px; height:32px; border-radius:8px; border:1px solid var(--rust-ln2); background:rgba(255,255,255,.04); color:var(--t3); cursor:pointer; }
.bx-btn-cancel:hover{ color:#f87171; border-color:rgba(239,68,68,.4); }

/* recent */
.bx-res-corner{ font-size:10px; font-weight:800; letter-spacing:.08em; padding:4px 9px; border-radius:6px; flex:0 0 auto; }
.bx-res-red{ background:rgba(239,68,68,.18); color:#fca5a5; }
.bx-res-blue{ background:rgba(59,130,246,.18); color:#93c5fd; }
.bx-recent-prize{ font-family:var(--fd); font-size:16px; color:#4ade80; }

/* verify panel rows reuse */
.vf-row{ display:flex; flex-direction:column; gap:2px; padding:8px 0; border-bottom:1px solid var(--rust-ln); }
.vf-row span{ font-size:11px; color:var(--t3); text-transform:uppercase; letter-spacing:.06em; }
.vf-row code{ font-size:12px; color:var(--rust3); word-break:break-all; }
.vf-note{ font-size:12px; color:var(--t3); line-height:1.5; margin-top:8px; }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .bx-fighter .bx-svg, .bx-idle-icon, .bx-vs, .bx-winner-banner.show{ animation:none !important; }
}


/* ═══════════════════════════════════════════════════════
   NAV REDESIGN (v75) — bigger animated icons, More dropdown,
   profile avatar dropdown.
   ═══════════════════════════════════════════════════════ */
.nav-ico{ font-size:17px; display:inline-block; transition:transform .25s cubic-bezier(.34,1.6,.5,1); }
.nav-ico svg{ width:20px; height:20px; display:block; }
.nav a:hover .nav-ico, .nav-more-btn:hover .nav-ico{ transform:scale(1.35) rotate(-8deg); }
.nav-txt{ }
@media (max-width:1200px){ .nav-txt{ display:none; } .nav-ico{ font-size:20px; } }

/* More dropdown */
.nav-more{ position:relative; display:inline-flex; }
.nav-more-btn{ display:inline-flex; align-items:center; gap:5px; min-height:36px; padding:0 12px; border-radius:10px;
  background:none; border:1px solid transparent; color:var(--t2); font-weight:600; font-size:12.5px; cursor:pointer; font-family:inherit; transition:background .18s,color .18s; }
.nav-more-btn:hover, .nav-more-btn.open{ background:rgba(182,170,146,.14); color:#fff; }
.nav-caret{ font-size:9px; opacity:.7; transition:transform .2s; }
.nav-more-btn.open .nav-caret{ transform:rotate(180deg); }
.nav-more-menu{ position:absolute; top:46px; left:0; min-width:180px; z-index:1200;
  background:#151926; border:1px solid var(--rust-ln2); border-radius:14px; padding:6px; box-shadow:0 18px 50px rgba(0,0,0,.6);
  animation:dropIn .2s ease; }
@keyframes dropIn{ from{ opacity:0; transform:translateY(-6px);} to{ opacity:1; transform:none;} }
.nav-more-menu a{ display:flex; align-items:center; gap:9px; padding:10px 12px; border-radius:9px; color:var(--t2); text-decoration:none; font-size:13.5px; font-weight:600; transition:background .15s,color .15s; }
.nav-more-menu a:hover{ background:rgba(182,170,146,.16); color:#fff; }
.nav-more-menu a.active{ background:rgba(182,170,146,.22); color:var(--rust3); }

/* Profile avatar dropdown */
.profile-wrap{ position:relative; }
.profile-avatar-btn{ width:42px; height:42px; border-radius:50%; border:2px solid var(--rust-ln2); cursor:pointer; padding:0; overflow:hidden;
  background:linear-gradient(145deg,var(--rust2),var(--rust)); display:flex; align-items:center; justify-content:center; transition:transform .18s, box-shadow .2s; }
.profile-avatar-btn:hover{ transform:scale(1.07); box-shadow:0 6px 18px rgba(182,170,146,.5); }
.profile-avatar-btn img{ width:100%; height:100%; object-fit:cover; }
.pa-fallback{ font-family:var(--fu); font-size:20px; color:#fff; }
.profile-menu{ position:absolute; top:52px; right:0; min-width:190px; z-index:1200;
  background:#151926; border:1px solid var(--rust-ln2); border-radius:14px; padding:6px; box-shadow:0 18px 50px rgba(0,0,0,.6); animation:dropIn .2s ease; }
.pm-head{ padding:10px 12px 8px; border-bottom:1px solid var(--rust-ln); margin-bottom:4px; }
.pm-head b{ display:block; color:var(--t1); font-size:14px; }
.pm-head small{ color:var(--rust3); font-size:11px; }
.profile-menu a{ display:flex; align-items:center; gap:9px; padding:10px 12px; border-radius:9px; color:var(--t2); text-decoration:none; font-size:13.5px; font-weight:600; transition:background .15s,color .15s; }
.profile-menu a:hover{ background:rgba(182,170,146,.16); color:#fff; }
.profile-menu a.pm-logout:hover{ background:rgba(239,68,68,.16); color:#fca5a5; }

/* Landing: 3 game cards */
.lp-modes-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
@media (max-width:900px){ .lp-modes-3{ grid-template-columns:1fr; } }

/* Wager requirement banner in withdraw */
.wreq-banner{ padding:12px 14px; border-radius:12px; margin-bottom:14px; font-size:13px; }
.wreq-banner-block{ background:rgba(239,68,68,.08); border:1px solid rgba(239,68,68,.3); }
.wreq-banner-ok{ background:rgba(34,197,94,.08); border:1px solid rgba(34,197,94,.3); color:#f4cd84; font-weight:600; }
.wreq-banner-head{ color:#fca5a5; font-weight:700; margin-bottom:8px; }
.wreq-amount{ font-family:var(--fd); font-size:22px; color:var(--t1); margin-bottom:6px; }
.wreq-amount span{ font-size:14px; color:var(--t3); }
.wreq-note{ color:var(--t2); margin-top:6px; }

/* ═══════════════════════════════════════════════════════
   RUSTFLIP REDESIGN — weapons header + recent flips strip
   ═══════════════════════════════════════════════════════ */
.rf-header{ position:relative; text-align:center; padding-top:8px; }
.rf-weapons{ display:flex; align-items:center; justify-content:center; gap:18px; margin-bottom:6px; opacity:.95; }
.rf-weapon{ height:38px; filter:drop-shadow(0 4px 10px rgba(0,0,0,.5)); }
.rf-gun{ width:150px; animation:rfGunFloat 4s ease-in-out infinite; }
.rf-knife{ width:104px; animation:rfKnifeFloat 4s ease-in-out infinite .5s; }
@keyframes rfGunFloat{ 0%,100%{ transform:translateY(0) rotate(-2deg);} 50%{ transform:translateY(-5px) rotate(2deg);} }
@keyframes rfKnifeFloat{ 0%,100%{ transform:translateY(0) rotate(3deg);} 50%{ transform:translateY(-6px) rotate(-3deg);} }
.rf-header .page-title{ margin:2px 0; }

.rf-recent-strip{ display:flex; align-items:center; gap:12px; padding:10px 16px; margin-bottom:16px;
  background:rgba(0,0,0,.25); border:1px solid var(--rust-ln); border-radius:12px; overflow-x:auto; }
.rf-strip-label{ font-size:10px; font-weight:800; letter-spacing:.14em; color:var(--rust3); white-space:nowrap; flex:0 0 auto; }
.rf-strip-items{ display:flex; gap:7px; }
.rf-strip-chip{ width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:800; color:#fff; flex:0 0 auto; }
.rf-chip-red{ background:linear-gradient(145deg,#ef4444,#991b1b); }
.rf-chip-blue{ background:linear-gradient(145deg,#3b82f6,#1e40af); }
.rf-strip-empty{ font-size:12px; color:var(--t3); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rf-gun,.rf-knife{ animation:none; } }

/* ═══════════════════════════════════════════════════════
   FAIRNESS — per-game formula cards
   ═══════════════════════════════════════════════════════ */
.fair-games{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:20px 0; }
@media (max-width:900px){ .fair-games{ grid-template-columns:1fr; } }
.fair-game-card{ background:linear-gradient(180deg, var(--card2), var(--card)); border:1px solid var(--rust-ln2); border-radius:16px; padding:20px; transition:transform .25s, box-shadow .3s, border-color .25s; }
.fair-game-card:hover{ transform:translateY(-3px); box-shadow:0 14px 40px rgba(0,0,0,.4), 0 0 0 1px rgba(196,184,158,.3); }
.fair-game-ico{ font-size:30px; margin-bottom:8px; }
.fair-game-card h4{ font-family:var(--fd); font-size:20px; letter-spacing:.04em; color:var(--t1); margin-bottom:8px; }
.fair-game-card p{ font-size:13px; color:var(--t2); line-height:1.5; margin-bottom:8px; }
.fair-game-card code{ display:block; background:rgba(0,0,0,.4); border:1px solid var(--rust-ln); border-radius:8px; padding:9px 11px; font-size:11.5px; color:var(--rust3); word-break:break-all; margin-bottom:8px; }
.fg-note{ font-size:12px !important; color:var(--t3) !important; }
.fg-note code{ display:inline; padding:1px 5px; background:rgba(182,170,146,.12); border:0; margin:0; }

/* ═══════════════════════════════════════════════════════
   NAV FIT (v76) — all items in the top bar, no More menu
   ═══════════════════════════════════════════════════════ */
@media (min-width:861px){ .nav{ display:flex; align-items:center; gap:2px; flex-wrap:nowrap; } }
.nav a{ white-space:nowrap; }
/* Hide labels on mid screens so every game/section icon still fits */
/* Was: .nav .nav-txt{display:none} across 861-1180. That never took effect — two later
   rules set display:inline !important, one for <=1099 and one for >=1100, which between
   them cover this entire range. The label-hiding it was written for has not happened at
   these widths for a long time; the sizing below is what actually applies. */
@media (min-width:861px) and (max-width:1180px){ .nav-ico{ font-size:19px; } .nav a{ padding:0 9px; } }
@media (min-width:1181px) and (max-width:1480px){ .nav a{ padding:0 7px; font-size:11.5px; } .nav{ gap:1px; } }

/* ═══════════════════════════════════════════════════════
   RPS MODAL (v76) — forced result modal
   ═══════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════
   STEAM LOGIN BUTTON
   ═══════════════════════════════════════════════════════ */
.auth-or{ display:flex; align-items:center; gap:12px; margin:4px 0; color:var(--t3); font-size:12px; }
.auth-or::before, .auth-or::after{ content:""; flex:1; height:1px; background:var(--rust-ln2); }
.steam-btn{
  display:flex; align-items:center; justify-content:center; gap:10px;
  width:100%; padding:13px 18px; border-radius:12px; text-decoration:none;
  font-weight:700; font-size:14px; color:#fff; cursor:pointer;
  background:linear-gradient(135deg,#1b2838,#2a475e);
  border:1px solid #66c0f4; transition:transform .15s, box-shadow .25s, filter .2s;
}
.steam-btn:hover{ transform:translateY(-2px); box-shadow:0 8px 24px rgba(102,192,244,.4); filter:brightness(1.08); }
.steam-btn:active{ transform:translateY(0) scale(.98); }
.steam-ico{ width:22px; height:22px; color:#66c0f4; flex:0 0 auto; }

/* ═══════════════════════════════════════════════════════
   MOBILE NAV DROPDOWN FIX (v77) — full-width rows with labels
   ═══════════════════════════════════════════════════════ */
@media (max-width:1099px){
  .nav{
    display:none !important; position:fixed; top:var(--rr-header-h,64px); left:0 !important; right:auto !important;
    width:100vw !important; max-width:100vw !important; min-width:100vw !important; margin:0 !important; box-sizing:border-box;
    flex-direction:column !important; gap:4px !important; flex-wrap:nowrap;
    background:#10131e; border:0; border-bottom:1px solid var(--rust-ln2);
    border-radius:0 0 18px 18px !important;
    padding:12px !important; z-index:1400; max-height:calc(100vh - var(--rr-header-h,64px)); overflow-y:auto;
    box-shadow:0 18px 50px rgba(0,0,0,.6);
  }
  .nav.open{ display:flex !important; animation:dropIn .2s ease; }
  .nav a{ display:flex !important; align-items:center; gap:12px; width:100%; padding:13px 16px !important;
    border-radius:11px; font-size:15px !important; justify-content:flex-start; }
  .nav .nav-txt{ display:inline !important; }
  .nav .nav-ico{ font-size:20px; width:26px; text-align:center; }
  .nav a.active{ background:rgba(182,170,146,.2); }
  /* Games row inside the panel: full-width, label + submenu inline beneath it */
  .nav-games-btn .nav-txt{ display:inline !important; }
  .nav-games-btn{ font-size:15px !important; padding:13px 16px !important; }
  .nav-games-menu .ngm-item{ padding-left:22px; }
  /* Fill the drawer width so the game cards and rows don't sit narrow inside a wide panel. */
  .nav-games-menu, #navGamesMenu{ width:100% !important; max-width:none !important; box-sizing:border-box; }
  #navGamesMenu .ngm-card{ width:100% !important; box-sizing:border-box; }
}
/* Tablet / wide-responsive: the full-width drawer read as empty and cheap — the links stretched across
   the whole screen while the game cards stayed narrow, leaving a big blank right side. Cap it to a
   proper left-hanging panel here; phones (≤560px) keep the natural full-width drawer. */
@media (min-width:561px) and (max-width:1099px){
  .nav.open{ width:340px !important; max-width:340px !important; min-width:0 !important;
    border-radius:0 0 18px 18px !important; border-right:1px solid var(--rust-ln2); }
}

/* ═══════════════════════════════════════════════════════
   CHAMPIONS — PROFILE-PICTURE FIGHTERS + WEAPON STRIKE (v78)
   No human body: just the avatar, struck by an animated weapon,
   vanishing on knockout.
   ═══════════════════════════════════════════════════════ */
.char-display{ position:relative; display:flex; align-items:center; justify-content:center; min-height:170px; }
.pfp-svg{ width:150px; height:150px; filter:drop-shadow(0 10px 22px rgba(0,0,0,.45)); }
.rust-char-wrap{ position:relative; transition:transform .2s; }
/* idle breathing */
.rust-char-wrap:not(.pfp-ko) .pfp-svg{ animation:pfpFloat 2.6s ease-in-out infinite; }
@keyframes pfpFloat{ 0%,100%{ transform:translateY(0) scale(1);} 50%{ transform:translateY(-6px) scale(1.01);} }
/* hit reaction — shake + red flash */
.rust-char-wrap.char-hit .pfp-svg{ animation:pfpHit .5s ease; }
@keyframes pfpHit{
  0%{ transform:translateX(0) rotate(0) scale(1); opacity:1; }
  16%{ transform:translateX(-11px) rotate(-7deg) scale(.92); opacity:0; filter:drop-shadow(0 0 20px rgba(239,68,68,.95)); }
  36%{ opacity:0; }
  50%{ transform:translateX(9px) rotate(4deg) scale(1.03); opacity:1; }
  100%{ transform:translateX(0) rotate(0) scale(1); opacity:1; }
}
/* knockout — profile picture suddenly disappears */
.rust-char-wrap.pfp-ko{ animation:pfpKO .5s cubic-bezier(.5,0,.75,0) forwards; }
@keyframes pfpKO{ 0%{ opacity:1; transform:scale(1) rotate(0);} 40%{ opacity:1; transform:scale(1.15) rotate(-4deg);} 100%{ opacity:0; transform:scale(.2) rotate(20deg);} }

/* animated weapon that swings in to strike */
.pfp-strike{ position:absolute; top:50%; width:84px; height:84px; z-index:6; pointer-events:none; }
.pfp-strike svg{ width:100%; height:100%; filter:drop-shadow(0 4px 8px rgba(0,0,0,.5)); }
.pfp-strike-left{ left:-10px; transform-origin:left center; animation:strikeL .5s ease; }
.pfp-strike-right{ right:-10px; transform-origin:right center; animation:strikeR .5s ease; }
@keyframes strikeL{ 0%{ transform:translateY(-50%) translateX(-60px) rotate(-60deg); opacity:0;} 35%{ transform:translateY(-50%) translateX(20px) rotate(10deg); opacity:1;} 60%{ transform:translateY(-50%) translateX(10px) rotate(-5deg);} 100%{ transform:translateY(-50%) translateX(-40px) rotate(-40deg); opacity:0;} }
@keyframes strikeR{ 0%{ transform:translateY(-50%) translateX(60px) scaleX(-1) rotate(-60deg); opacity:0;} 35%{ transform:translateY(-50%) translateX(-20px) scaleX(-1) rotate(10deg); opacity:1;} 60%{ transform:translateY(-50%) translateX(-10px) scaleX(-1) rotate(-5deg);} 100%{ transform:translateY(-50%) translateX(40px) scaleX(-1) rotate(-40deg); opacity:0;} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rust-char-wrap .pfp-svg, .pfp-strike{ animation:none !important; } }

/* Champions: centered waiting list + battle history */
.center-waiting{ margin-top:16px; border-top:1px solid var(--rust-ln); padding-top:14px; }
.center-waiting-head{ font-size:14px; font-weight:700; color:var(--t1); margin-bottom:10px; }
.center-waiting-head .eyebrow{ display:block; margin-bottom:2px; }
.center-waiting .queue-list{ max-height:200px; overflow-y:auto; }
.bh-row{ display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:12px; background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); margin-bottom:9px; }
.bh-ico{ font-size:20px; }
.bh-info{ flex:1; min-width:0; }
.bh-info b{ display:block; font-size:14px; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bh-info small{ font-size:11px; color:var(--t3); }
.bh-prize{ font-family:var(--fd); font-size:16px; color:#4ade80; }

/* =============================================================
   v2 — Steam-only auth · bigger animated menu · pro homepage
   (appended last so these win over earlier duplicate rules)
   ============================================================= */

/* ---- Steam buttons ---- */
.steam-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:11px;
  width:100%; min-height:50px; padding:0 22px;
  border-radius:13px; font-family:var(--fu); font-weight:700; font-size:15px; letter-spacing:.02em;
  color:#fff; cursor:pointer;
  background:linear-gradient(135deg,#2a3f5f 0%,#1b2838 55%,#0f1722 100%);
  border:1px solid rgba(102,192,244,.35);
  box-shadow:0 10px 28px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.07);
  transition:transform .18s ease, box-shadow .25s ease, border-color .25s ease;
}
.steam-btn .steam-ico{ width:22px; height:22px; color:#66c0f4; flex:0 0 auto; transition:transform .3s cubic-bezier(.34,1.6,.5,1); }
.steam-btn:hover{ transform:translateY(-2px); border-color:rgba(102,192,244,.7); box-shadow:0 16px 38px rgba(20,40,70,.55), 0 0 0 3px rgba(102,192,244,.12); }
.steam-btn:hover .steam-ico{ transform:scale(1.12) rotate(-6deg); }
.steam-btn:active{ transform:translateY(0); }
.steam-btn-lg{ min-height:60px; font-size:17px; }
.steam-btn-lg .steam-ico{ width:26px; height:26px; }

/* nav Steam pill */
.pill-steam{
  display:inline-flex; align-items:center; gap:8px;
  background:linear-gradient(135deg,#2a475e,#1b2838); border:1px solid rgba(102,192,244,.4); color:#fff; font-weight:700;
  transition:transform .18s ease, box-shadow .25s ease, border-color .2s;
}
.pill-steam .pill-steam-ico{ width:18px; height:18px; color:#66c0f4; transition:transform .3s cubic-bezier(.34,1.6,.5,1); }
.pill-steam:hover{ transform:translateY(-2px); border-color:rgba(102,192,244,.75); box-shadow:0 10px 24px rgba(20,40,70,.5); background:linear-gradient(135deg,#2a475e,#1b2838); }
.pill-steam:hover .pill-steam-ico{ transform:scale(1.15) rotate(-6deg); }

/* login page extras */
.auth-steam-card{ text-align:center; gap:16px; }
.auth-steam-card .steam-btn{ margin-top:4px; }
.steam-trust{ font-size:11px; color:var(--t3); letter-spacing:.02em; }
.auth-spectate{ display:block; color:var(--p3) !important; font-size:12px; opacity:.85; }
.auth-spectate:hover{ opacity:1; }

/* ---- Bigger, livelier top menu ---- */
.topbar-inner{ min-height:74px; }
.nav{ gap:4px; }
.nav a{
  display:inline-flex; align-items:center; gap:8px;
  padding:9px 14px; border-radius:12px; font-size:14.5px; font-weight:600; letter-spacing:.01em;
  transition:transform .2s cubic-bezier(.34,1.4,.5,1), background .2s, color .2s, box-shadow .25s;
}
.nav .nav-ico{ font-size:24px; line-height:1; display:inline-block; transition:transform .3s cubic-bezier(.34,1.8,.4,1), filter .25s; will-change:transform; }
.nav a:hover{ transform:translateY(-2px); background:rgba(182,170,146,.16); color:var(--t1); box-shadow:0 8px 20px rgba(182,170,146,.2); }
.nav a:hover .nav-ico{ animation:navIcoPop .5s cubic-bezier(.34,1.8,.4,1) forwards; filter:drop-shadow(0 6px 12px rgba(182,170,146,.6)); }
@keyframes navIcoPop{ 0%{transform:scale(1) rotate(0);} 40%{transform:scale(1.55) rotate(-14deg) translateY(-4px);} 65%{transform:scale(1.32) rotate(7deg) translateY(-1px);} 82%{transform:scale(1.46) rotate(-4deg);} 100%{transform:scale(1.42) rotate(-8deg) translateY(-2px);} }
.nav a.active{ background:rgba(182,170,146,.26); color:var(--p4); border:1px solid rgba(182,170,146,.4); }
.nav a.active .nav-ico{ transform:scale(1.18); filter:drop-shadow(0 3px 8px rgba(182,170,146,.45)); }
@media (max-width:980px){
  .topbar-inner{ min-height:64px; }
  .nav a{ font-size:13px; padding:9px 12px; }
  .nav .nav-ico{ font-size:19px; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .nav a:hover, .nav a:hover .nav-ico, .steam-btn:hover, .pill-steam:hover{ transform:none; }
}

/* =============================================================
   HOMEPAGE (.home)
   ============================================================= */
.home{ width:100%; max-width:1180px; margin:0 auto; padding:8px 0 60px; position:relative; z-index:1; }

/* hero */
.hm-hero{ position:relative; padding:54px 0 40px; overflow:hidden; }
.hm-hero-glow{
  position:absolute; inset:-40% 0 auto 0; height:520px; pointer-events:none;
  background:
    radial-gradient(closest-side at 30% 20%, rgba(182,170,146,.28), transparent 70%),
    radial-gradient(closest-side at 75% 10%, rgba(196,184,158,.18), transparent 70%);
  filter:blur(6px); opacity:.9;
  animation:hmGlow 9s ease-in-out infinite alternate;
}
@keyframes hmGlow{ from{ transform:translateY(-8px) scale(1);} to{ transform:translateY(8px) scale(1.04);} }
.hm-hero-inner{ position:relative; }
.hm-eyebrow{
  display:inline-block; font-family:var(--fm); font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--p3); padding:7px 14px; border:1px solid var(--ln2); border-radius:999px; background:rgba(182,170,146,.08);
}
.hm-title{
  font-family:var(--fd); font-weight:400; line-height:.94; margin:18px 0 14px;
  font-size:clamp(46px,8vw,104px); letter-spacing:.01em; color:var(--t1); text-shadow:0 6px 30px rgba(0,0,0,.5);
}
.hm-title-accent{
  background:linear-gradient(100deg,var(--p2),var(--p3) 45%,var(--gold2));
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.hm-sub{ max-width:620px; color:var(--t2); font-size:17px; line-height:1.55; }
.hm-cta{ display:flex; flex-wrap:wrap; gap:13px; margin:26px 0 26px; }
.hm-btn{
  display:inline-flex; align-items:center; gap:10px; min-height:52px; padding:0 26px; border-radius:13px;
  font-family:var(--fu); font-weight:700; font-size:15.5px; letter-spacing:.02em; cursor:pointer;
  transition:transform .18s ease, box-shadow .25s ease, filter .2s;
}
.hm-btn-primary{ color:#fff; background:linear-gradient(135deg,var(--p2),var(--p)); box-shadow:0 12px 30px rgba(182,170,146,.4); }
.hm-btn-primary:hover{ transform:translateY(-2px); filter:brightness(1.06); box-shadow:0 18px 40px rgba(182,170,146,.5); }
.hm-btn-ghost{ color:var(--t1); border:1px solid var(--ln2); background:rgba(255,255,255,.03); }
.hm-btn-ghost:hover{ transform:translateY(-2px); border-color:var(--p2); background:rgba(182,170,146,.1); }
.hm-btn-steam{ color:#fff; background:linear-gradient(135deg,#2a475e,#1b2838); border:1px solid rgba(102,192,244,.4); }
.hm-btn-steam svg{ width:22px; height:22px; color:#66c0f4; transition:transform .3s cubic-bezier(.34,1.6,.5,1); }
.hm-btn-steam:hover{ transform:translateY(-2px); border-color:rgba(102,192,244,.75); box-shadow:0 16px 38px rgba(20,40,70,.5); }
.hm-btn-steam:hover svg{ transform:scale(1.12) rotate(-6deg); }
.hm-chips{ display:flex; flex-wrap:wrap; gap:10px; }
.hm-chip{
  display:inline-flex; align-items:center; gap:8px; font-size:13.5px; color:var(--t2);
  padding:9px 15px; border-radius:999px; border:1px solid var(--ln); background:rgba(0,0,0,.25);
}
.hm-chip b{ color:var(--t1); font-weight:700; }
.hm-chip-dot{ width:8px; height:8px; border-radius:50%; background:var(--grn); box-shadow:0 0 0 0 rgba(34,197,94,.6); animation:hmPulse 1.8s ease-out infinite; }
@keyframes hmPulse{ 0%{ box-shadow:0 0 0 0 rgba(34,197,94,.55);} 70%{ box-shadow:0 0 0 8px rgba(34,197,94,0);} 100%{ box-shadow:0 0 0 0 rgba(34,197,94,0);} }

@media (max-width:880px){

  .hm-hero{ padding:36px 0 26px; }
  .hm-sub{ font-size:15px; }
}

/* ---- Withdraw modal: wager requirement panel ---- */
.wd-wager{ margin:4px 0 14px; padding:13px 14px; border-radius:12px; border:1px solid var(--ln2); background:rgba(0,0,0,.28); }
.wd-wager.locked{ border-color:rgba(238,179,81,.35); background:rgba(238,179,81,.06); }
.wd-wager-head{ display:flex; align-items:center; justify-content:space-between; font-size:13px; color:var(--t2); margin-bottom:9px; }
.wd-wager-head b{ font-family:var(--fm); font-size:13px; color:var(--gold2); }
.wd-wager-head b.ok{ color:var(--pos); }
.wd-wager-bar{ height:8px; border-radius:99px; background:rgba(255,255,255,.07); overflow:hidden; }
.wd-wager-bar span{ display:block; height:100%; width:0; border-radius:99px; background:linear-gradient(90deg,var(--gold),var(--gold2)); transition:width .5s ease; }
.wd-wager-bar span.met{ background:linear-gradient(90deg,var(--grn),var(--pos)); }
.wd-wager-note{ margin-top:9px; font-size:12px; line-height:1.45; color:var(--t3); }
.wd-wager.locked .wd-wager-note{ color:var(--gold2); }

/* ---- Champions: waiting list as side-by-side profile pictures + count ---- */
.cw-count{ font-size:13px; color:var(--t2); margin-bottom:10px; }
.cw-count b{ font-family:var(--fd); font-size:18px; color:var(--p3); margin-right:4px; }
.cw-avatars{ display:flex; flex-wrap:wrap; gap:8px; }
.cw-av{ width:42px; height:42px; border-radius:50%; overflow:hidden; flex:0 0 auto;
  border:2px solid var(--ln2); background:#10131e; display:grid; place-items:center;
  box-shadow:0 4px 12px rgba(0,0,0,.35); transition:transform .2s ease, border-color .2s; animation:cwIn .35s ease both; }
.cw-av:hover{ transform:translateY(-3px) scale(1.06); border-color:var(--p2); }
.cw-av img{ width:100%; height:100%; object-fit:cover; }
.cw-av span{ font-family:var(--fu); font-size:18px; color:var(--p3); }
.cw-empty{ font-size:13px; color:var(--t3); text-align:center; padding:14px 6px; }
@keyframes cwIn{ from{ opacity:0; transform:scale(.6);} to{ opacity:1; transform:scale(1);} }

/* ---- Rustflip: (rust emblem is now stamped directly on the coin face) ---- */

/* =============================================================
   v2 — purge brown/rust tints → fully professional purple bg
   ============================================================= */
/* panel mottle: swap the rust corner bloom for purple */
.section-block, .arena, .cf-card, .lb-card, .wallet-card, .auth-card,
.player-panel, .app-modal__card, .form-card, .stat-box{
  background-image:
    linear-gradient(180deg, rgba(255,255,255,.05) 0%, transparent 12%),
    repeating-linear-gradient(122deg, rgba(0,0,0,.05) 0 2px, transparent 2px 6px),
    radial-gradient(120px 80px at 88% 0%, rgba(182,170,146,.12), transparent 70%),
    radial-gradient(90px 60px at 6% 100%, rgba(196,184,158,.10), transparent 72%),
    linear-gradient(180deg, var(--card2), var(--card)) !important;
}
/* page vignette: purple instead of ember/orange */
body::after{
  background:
    radial-gradient(140% 100% at 50% -10%, transparent 55%, rgba(0,0,0,.34) 100%),
    radial-gradient(70% 60% at 50% 120%, rgba(182,170,146,.12), transparent 60%) !important;
}
/* bolted-corner rivets: neutral purple-grey instead of brown */
.section-block::after{
  background:
    radial-gradient(circle at 10px 10px, rgba(196,184,158,.45) 0 2px, transparent 2.6px),
    radial-gradient(circle at calc(100% - 10px) 10px, rgba(196,184,158,.45) 0 2px, transparent 2.6px),
    radial-gradient(circle at 10px calc(100% - 10px), rgba(196,184,158,.45) 0 2px, transparent 2.6px),
    radial-gradient(circle at calc(100% - 10px) calc(100% - 10px), rgba(196,184,158,.45) 0 2px, transparent 2.6px) !important;
  opacity:.4 !important;
}
/* scrollbar → purple */
::-webkit-scrollbar-thumb{ background: linear-gradient(180deg,#eeb351,#a9772e) !important; border-radius:6px; }

/* =============================================================
   v2 — Fairness page: tidy, gap-free grids
   ============================================================= */
.fairness-explainer{ display:grid !important; grid-template-columns:repeat(3,1fr); gap:14px; align-items:stretch; }
.fairness-explainer .fe-step{ background:linear-gradient(180deg, var(--card2), var(--card)); border:1px solid var(--ln); border-radius:14px; padding:16px; flex-direction:column; gap:10px; }
.fairness-explainer .fe-num{ width:32px; height:32px; font-size:15px; }
.fair-grid{ grid-template-columns:repeat(3,1fr); }
.fair-grid > div{ min-width:0; }
.fair-grid code{ display:block; word-break:break-all; font-size:11px; line-height:1.5; color:var(--p3); }
.fair-card code{ display:block; word-break:break-all; }
.fair-games{ margin:18px 0; }
@media (max-width:900px){ .fairness-explainer{ grid-template-columns:1fr; } .fair-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .fair-grid{ grid-template-columns:1fr; } }

/* Rustflip: respect the hidden attribute so the side picker only appears
   after the player presses Create Game (two-step create, no pre-screen). */
.cf-side-picker[hidden]{ display:none !important; }

/* Mobile: chat toggle = clean bottom-right pill (beats the desktop left-tab !important rule) */
@media (max-width:820px){
  .chat-toggle{
    left:auto !important; right:14px !important; top:auto !important; bottom:16px !important;
    width:auto !important; min-height:0 !important; height:auto !important; padding:11px 16px !important;
    flex-direction:row !important; gap:7px !important; border-radius:999px !important;
    writing-mode:horizontal-tb !important; text-orientation:mixed !important;
    border:1px solid rgba(255,255,255,.16) !important;
    box-shadow:0 8px 24px rgba(182,170,146,.45) !important; z-index:301 !important;
  }
  .chat-toggle .chat-label{ writing-mode:horizontal-tb !important; }
  .chat-toggle .chat-icon{ writing-mode:horizontal-tb !important; }
}

/* =============================================================
   v2 — FIX: nav breakpoint conflict (dropdown stuck open 681–1150px).
   Clean split at 1100px; tablet/mobile nav hidden until toggled.
   ============================================================= */
@media (max-width:1099px){
  .nav:not(.open){ display:none !important; }
  .nav.open{ display:flex !important; }
  .mobile-menu{ display:flex !important; }
}
@media (min-width:1301px){
  .nav{ display:flex !important; position:static !important; flex-direction:row !important;
        top:auto !important; left:auto !important; right:auto !important;
        background:transparent !important; border-bottom:0 !important; padding:0 !important; z-index:auto !important; }
  .mobile-menu{ display:none !important; }
}

/* ---- Rustflip: create-game modal (side + wager live in here) ---- */
.cf-create-cta{ display:flex; flex-direction:column; align-items:center; gap:10px; padding:10px 0 4px; }
.cf-create-open{ max-width:260px; width:100%; }
.cf-create-blurb{ color:var(--t3); font-size:13px; text-align:center; max-width:440px; line-height:1.5; }
.cf-create-card{ max-width:470px; }
.cf-create-card .cf-modal-head{ text-align:center; margin-bottom:18px; }
.cf-create-card .cf-side-picker{ justify-content:center; margin-bottom:20px; }
.cf-create-card .cf-wager-section{ display:flex; flex-direction:column; align-items:center; gap:12px; }
.cf-create-card .cf-wager-label{ align-self:flex-start; }
.cf-create-card .stake-input-wrap{ max-width:260px; width:100%; }
.cf-create-card .quick-amounts{ max-width:260px; width:100%; }
.cf-create-card .cf-create-btn{ max-width:260px; width:100%; margin-top:4px; }

/* ---- Creator tag (streamers / youtubers) — distinct pink/magenta ---- */
.chat-role-creator{
  display:inline-flex; align-items:center; justify-content:center; padding:0 !important; background:none !important;
  box-shadow:none !important; color:#f0abfc !important; vertical-align:middle;
}
.chat-role-creator svg{ width:14px !important; height:14px !important; display:block !important; filter:drop-shadow(0 0 3px rgba(240,171,252,.55)) !important; }
.chat-msg-head .chat-role.chat-role-creator{ color:#f0abfc !important; background:none !important; padding:0 !important; height:18px !important; }
.cn-creator{ color:#f0abfc !important; font-weight:700; }
.adm-badge.creator{ background:rgba(236,72,153,.16); color:#f0abfc; border:1px solid rgba(236,72,153,.4); }
.adm-btn.adm-creator{ border-color:rgba(236,72,153,.4); color:#f0abfc; }
.adm-btn.adm-creator:hover{ background:rgba(236,72,153,.14); }
.adm-btn.adm-api{ border-color:rgba(45,212,191,.4); color:#5eead4; }
.adm-btn.adm-api:hover{ background:rgba(45,212,191,.14); }
.cf-create-card{ max-height:90vh; overflow-y:auto; }

/* ── Chat: pinned message banner (admin pin / announcement) ── */
.chat-pinned{
  display:flex; align-items:flex-start; gap:9px; margin:0 0 6px; padding:10px 12px;
  background:linear-gradient(180deg, rgba(224,168,58,.14), rgba(224,168,58,.06));
  border:1px solid rgba(224,168,58,.34); border-radius:11px;
}
.chat-pinned-ico{ font-size:14px; line-height:1.3; flex:0 0 auto; }
.chat-pinned-body{ flex:1 1 auto; min-width:0; font-size:12.5px; line-height:1.4; }
.chat-pinned-author{ color:var(--gold); font-weight:800; }
.chat-pinned-text{ color:var(--t1); word-break:break-word; }
.chat-pinned-unpin{
  flex:0 0 auto; width:22px; height:22px; border-radius:6px; cursor:pointer;
  background:rgba(255,255,255,.06); border:1px solid var(--ln2); color:var(--t2); font-size:11px; line-height:1;
}
.chat-pinned-unpin:hover{ background:rgba(239,68,68,.16); color:#fff; }

/* per-message pin button (admins only) */
.chat-pin-btn{
  background:transparent; border:0; cursor:pointer; opacity:0;
  font-size:12px; padding:0 4px; line-height:1; transition:opacity .15s; color:var(--t3);
}
.chat-message:hover .chat-pin-btn{ opacity:.7; }
.chat-pin-btn:hover{ opacity:1 !important; transform:scale(1.15); }

/* muted-user notice with live countdown */
.chat-mute-notice{
  margin:0 0 6px; padding:9px 12px; border-radius:10px; font-size:12.5px; text-align:center;
  background:rgba(239,68,68,.12); border:1px solid rgba(239,68,68,.32); color:#fca5a5;
}
.chat-mute-notice b{ color:#fff; }
.cmn-reason{ display:block; margin-top:2px; font-size:11px; color:var(--t3); }
.chat-form.is-muted{ opacity:.6; }

/* === Mobile chat: proper bottom sheet (fixes the h:0 collapse caused by an
   older rule that made .chat-panel position:fixed). Panel must stay in-flow so
   the drawer has height; the drawer itself slides up from the bottom. === */
@media (max-width:820px){
  .chat-drawer{ position:fixed !important; left:0 !important; right:0 !important; bottom:0 !important; top:auto !important;
    width:100% !important; height:auto !important; max-height:80vh !important;
    transform:translateY(0); border-left:0 !important; border-top:1px solid var(--ln2);
    border-radius:16px 16px 0 0; z-index:300 !important; box-shadow:0 -16px 48px rgba(0,0,0,.55); }
  .chat-drawer.closed{ transform:translateY(100%) !important; }
  .chat-panel{ position:static !important; transform:none !important; width:100% !important;
    height:auto !important; max-height:80vh !important; }
  .chat-drawer:not(.closed) .chat-panel{ transform:none !important; }
  .chat-messages{ max-height:46vh; overflow-y:auto; }
}

/* Respect the hidden attribute on the pinned banner + mute notice (class display rules
   would otherwise override it and show an empty banner). */
.chat-pinned[hidden], .chat-mute-notice[hidden]{ display:none !important; }

/* ── Fix: homepage hero overflowed/clipped when the chat sidebar is open on
   mid-size desktops (8vw was sized for the full viewport, not the narrower
   content area). Scale it down while the chat is open. ── */
@media (min-width:1301px){
  body.chat-open .hm-title{ font-size:clamp(40px,6vw,80px); }
}

/* ── Top nav: ALL items are plain links with NAMES on desktop. The bar is
   widened and items are compact so all of them fit; if a very narrow desktop
   still can't fit them, the bar scrolls instead of clipping. <1100px → hamburger. ── */
@media (min-width:1100px){
  .topbar-inner{ width:min(1600px,98vw) !important; gap:14px !important; }
  .nav{ gap:2px !important; overflow-x:auto; scrollbar-width:none; }
  .nav::-webkit-scrollbar{ display:none; }
  .nav .nav-txt{ display:inline !important; }
  .nav .nav-ico{ font-size:17px; }
  .nav a{ padding:0 10px !important; font-size:13.5px !important; gap:7px !important; white-space:nowrap; }
}
@media (min-width:1100px) and (max-width:1460px){
  .nav a{ padding:0 5px !important; font-size:12px !important; gap:3px !important; }
  .nav .nav-ico{ font-size:15px; }
  .topbar-inner{ gap:8px !important; }
  .brand small{ display:none; }                 /* drop the "RAID ARENA" subline to free width */
}
@media (max-width:1099px){
  .nav.open .nav-txt{ display:inline !important; }   /* hamburger shows labels */
}

/* Chat is now a fixed OVERLAY that does not take layout space, so the arena
   keeps its normal 3-column layout whether the chat is open or closed —
   nothing reflows or shifts when the chat is toggled. */

/* ── Professional coin currency symbol (scales with surrounding font-size) ── */
.coin-ico{
  display:inline-block; width:1em; height:1em; vertical-align:-0.14em; margin-right:.32em;
  background:url('/assets/coin-3d.svg?v=1532') center/contain no-repeat;
  flex:0 0 auto; filter:drop-shadow(0 1px 2px rgba(0,0,0,.45));
  /* transform:scale(1.1) is DELIBERATELY still here.
     The coin looked rough because coin-3d.svg was not really vector: its face was three stacked
     256px PNGs, and this icon is painted at 13px in .qg-tile-amt, 16px in .qg-join-input-wrap and
     34px in .hm-promo-coins. Downscaling a 256px bitmap by 20x is what broke up along the mark's
     diagonals. The SVG is now genuinely resolution-independent, which is the actual fix.
     Baking this 1.1 into width/height instead would be tidier, but ~137 rules across style.css and
     partials.php override .coin-ico's width/height (58 in px, 21 in em) and every one of them was
     authored expecting this multiplier on top. Changing it silently resizes the coin in dozens of
     places the day before a beta, so it is a separate change with its own pass, not a drive-by. */
  transform:scale(1.1);   /* a notch bigger everywhere (uniform — applies over every width/height variant) */
}
.coin-ico.lg{ vertical-align:-0.12em; }
.stake-prefix .coin-ico{ margin-right:0; }

/* #10/#4 — prominent leading coin (like the balance) on the Tip amount + Quickgame fields, and the
   typed number itself takes the balance's gold tone (softer/dimmer than the stark white) so the
   amount reads "like the balance side" rather than a harsh white. */
.tip-amt-wrap .stake-prefix{ left:13px; z-index:2; }
.tip-amt-wrap .stake-prefix .coin-ico{ width:17px; height:17px; }
.tip-field .tip-amt-wrap input{ padding-left:36px !important; font-size:17px; font-weight:800; color:var(--gold2); }
.qg-stake-input .coin-ico{ opacity:1; }
.qg-stake-input input{ color:var(--gold2); }
.qg-join-input-wrap .coin-ico{ opacity:1 !important; width:16px !important; height:16px !important; }
.qg-join-input-wrap input{ color:var(--gold2); }

/* Wallet coin↔USD conversion UI */
.wallet-rate-note{
  margin:0 0 14px; padding:10px 14px; border-radius:12px; font-size:13.5px; color:var(--t2);
  background:rgba(182,170,146,.08); border:1px solid rgba(182,170,146,.22);
}
.wallet-rate-note b{ color:var(--p4); }
.conv-hint{ margin:7px 0 4px; min-height:16px; font-size:12.5px; color:var(--t3); }
.conv-hint b{ color:var(--gold2,#f5b740); }

/* The hidden attribute must win over the badge's display:flex / panel display,
   otherwise 'Mark all as read' can't actually hide the unread badge. */
.notif-badge[hidden]{ display:none !important; }
.notif-panel[hidden]{ display:none !important; }

/* ════════════════════════════════════════════════════════════
   GLOBAL: the HTML `hidden` attribute must always hide an element.
   Several components set display:flex/block on their base class, which
   silently overrides `hidden` and breaks JS show/hide (e.g. the unread
   badge, the mod-only Mute button, RPS verify/close). This guarantees
   every JS `el.hidden = true` actually hides — no page refresh needed.
   ════════════════════════════════════════════════════════════ */
[hidden]{ display:none !important; }

/* Decorative weapon-name cards are hidden — the fight is shown via projectiles
   + impacts; these labels overlapped the fighters (background-weapon bug). */
.weapon-display, .wd-left, .wd-right{ display:none !important; }

/* LIVE POT amount: keep the coin icon + number on ONE line (was wrapping). */
.hero-pool-amt{ display:inline-flex; align-items:center; justify-content:flex-end; white-space:nowrap; gap:.1em; }
.hero-pool-amt .coin-ico{ width:.8em; height:.8em; margin-right:.12em; }
/* Prize-pool amount likewise on one line */
.prize-amount{ display:inline-flex; align-items:center; justify-content:center; white-space:nowrap; gap:.06em; }
.prize-amount .coin-ico{ width:.74em; height:.74em; margin-right:.06em; }   /* icon slightly smaller than the number so the amount reads big */
.bet-amt{ display:inline-flex; align-items:center; gap:.12em; white-space:nowrap; }
/* .stat-box b{display:block} has higher specificity and was defeating the inline-flex above,
   so align-items:center never applied and the coin icon's negative vertical-align dropped the
   number — the "wager shifts down" bug. Re-assert flex centering with matching specificity. */
.stat-box b.bet-amt{ display:inline-flex; align-items:center; line-height:1; }
.bet-amt .coin-ico{ vertical-align:0; }
.bet-amt .coin-ico{ width:.85em; height:.85em; margin-right:0; }

/* Amount NUMBERS now live in an inner <span> (next to the coin icon). The
   gold gradient was applied to the parent, leaving the inner span transparent
   (invisible). Re-apply the fill directly to the number spans. */
#heroPool{
  background: linear-gradient(180deg,#ffd9a0,#f4cd84 60%,#eeb351);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.bet-amt #leftBet, .bet-amt #rightBet{ -webkit-text-fill-color:#f5b740; color:#f5b740; }

/* ── Weapon-fire projectiles ──
   These were forced into 44×44 squares for a half-finished "thrown weapon" idea
   (nothing ever populated .thrown-wpn), so they rendered as gold/grey blobs that
   looked like rocks. Restore the real shapes: a glowing AK tracer + a rocket. */
.projectile.bullet{ width:36px !important; height:9px !important; }
.projectile.rocket{ width:56px !important; height:15px !important; }
.thrown-wpn{ width:100%; height:100%; animation:wpnSpin .5s linear infinite; }
.thrown-wpn svg{ width:100%; height:100%; display:block; filter:drop-shadow(0 3px 7px rgba(0,0,0,.6)); }
@keyframes wpnSpin{ from{ transform:rotate(0deg); } to{ transform:rotate(360deg); } }

/* ── FIX: chat rank/level badges were greyed + mis-aligned ──
   The old generic ".chat-message span { color:var(--t3); display:block;
   margin-top:3px; font-size:9px }" rule was more specific than the badge
   classes, so the LEVEL + ROLE badges rendered grey and pushed down (looking
   shifted). Force them white, inline and aligned. */
.chat-msg-head .chat-lvl,
.chat-msg-head .chat-role{
  color:#ffffff !important;
  display:inline-flex !important;
  align-items:center !important;
  margin-top:0 !important;
  height:18px !important;
}
.chat-msg-head .chat-lvl{ font-size:11px !important; }
.chat-msg-head .chat-role{ font-size:9px !important; }
.chat-msg-head .chat-lvl::before{ color:#ffffff !important; }
.chat-msg-head .chat-name{ display:inline-flex !important; align-items:center !important; margin-top:0 !important; font-size:13px !important; }
.chat-msg-head .chat-ts{ display:inline-flex !important; margin-top:0 !important; }

/* ════════════════════════════════════════════════════════════
   RANKS & LEVELS — always WHITE & readable across the whole site
   (chat badges, affiliate level shields + referral level tags,
    leaderboard rank numbers, prize-tier rank labels). Several of
    these were rendering in muted grey/green and looked hard to
    read / mis-aligned. Force pure white everywhere.
   ════════════════════════════════════════════════════════════ */
.aff-lvl-shield,
.aff-level-row.reached .aff-lvl-shield,
.aff-level-row.final .aff-lvl-shield{ color:#ffffff !important; }
.ref-lvl{ color:#ffffff !important; }
.lb-rank-badge{ color:#ffffff !important; }
.lb-prize-rank{ color:#ffffff !important; }
.level-badge{ color:#ffffff !important; }
.chat-msg-head .chat-lvl,
.chat-msg-head .chat-role,
.chat-msg-head .chat-lvl::before{ color:#ffffff !important; }

/* ── Mobile topbar fit: the right cluster (☰ + bell + balance + profile) was
   overflowing on phones, cutting off the balance + deposit/withdraw steppers.
   Hide the +/- steppers on small screens (the balance pill itself opens the
   deposit modal — see app.js) so the whole topbar fits cleanly. */
@media (max-width: 680px){
  .bal-btn{ display:none !important; }
  .balance-pill{ cursor:pointer; }
  .balance-group{ gap:0 !important; }
}
@media (max-width: 680px){
  .balance-pill:active{ transform:scale(.95); }
}

/* ── Mobile topbar: the brand (icon + "RUST ROYALE") was ~239px wide and ate
   the space the balance + profile needed, pushing them off-screen. Shrink the
   brand on phones so the whole right cluster fits within the viewport. */
@media (max-width: 680px){
  .brand{ gap:7px !important; min-width:0 !important; }
  .brand-icon, .brand-icon-rust{ width:34px !important; height:34px !important; flex:0 0 auto !important; }
  .brand b, .brand-text b{ font-size:15px !important; letter-spacing:.02em !important; white-space:nowrap !important; }
}
@media (max-width: 430px){
  .brand-icon, .brand-icon-rust{ width:30px !important; height:30px !important; }
  .brand b, .brand-text b{ font-size:13px !important; }
  .account{ gap:6px !important; }
}

/* ── Coinflip: ENLARGED coin-flip stage (user request "coin-flip section
   enlarge"). Placed at the very end so it wins over the earlier ".cf-coin
   {180px}" rule. Taller stage + bigger coin = a bigger, more dramatic toss.
   Sized so the higher jump (coinThrowBig peak -78px) clears the top without
   clipping the coin. */
.cf-modal-stage{ min-height:450px !important; }
.cf-modal-stage .cf-coin{ width:158px !important; height:158px !important; }
@media (max-width:540px){
  .cf-modal-stage{ min-height:400px !important; }
  .cf-modal-stage .cf-coin{ width:124px !important; height:124px !important; }
}

/* ── Champions "Leave & Refund" button — shown only when the player can safely
   leave (waiting list, or lone champion with just their own stake). Muted/danger
   styling so it reads as secondary to the green "Join Fight" CTA. */
.btn-leave{
  width:100%; margin-top:10px; padding:13px 18px;
  border-radius:12px; cursor:pointer;
  font-size:15px; font-weight:700; letter-spacing:.01em;
  color:#fecaca;
  background:linear-gradient(180deg, rgba(127,29,29,.55), rgba(80,18,18,.6));
  border:1px solid rgba(239,68,68,.5);
  transition:transform .12s ease, box-shadow .2s ease, background .2s ease;
}
.btn-leave:hover{ background:linear-gradient(180deg, rgba(153,27,27,.7), rgba(100,20,20,.72)); box-shadow:0 8px 22px rgba(127,29,29,.4); }
.btn-leave:active{ transform:scale(.98); }
.btn-leave.loading{ opacity:.6; pointer-events:none; }

/* ── RPS move buttons polish + "kept hidden" hint. The move is no longer
   pre-selected or left on screen after creating, so picking is optional and
   stays secret (chance-style). Cleaner gradient buttons + clearer active state. */

/* ── Coinflip: Create form + Open Games side-by-side grid ─────────────────── */
.cf-layout{
  display:grid;
  grid-template-columns: minmax(300px, 380px) minmax(0, 1fr);
  gap:18px; align-items:start; margin-bottom:18px;
}
.cf-layout .section-block{ margin-bottom:0; height:100%; }
.cf-create-section{ position:relative; }
.cf-create-section .cf-side-picker{ margin-top:6px; }
.cf-create-section .cf-wager-section{ margin-top:14px; }
.cf-open-col .cf-games-list{ max-height:none; }
/* stack on tablet/mobile */
@media (max-width: 980px){
  .cf-layout{ grid-template-columns: 1fr; gap:14px; }
}

/* Latest-wins feed: gentle fade as it live-updates */
.hm-feed-row.hm-feed-new{ animation: hmFeedIn .4s ease; }
@keyframes hmFeedIn{ from{ opacity:.25; transform:translateY(-3px); } to{ opacity:1; transform:none; } }

/* ═══════════════════════════════════════════════════════════
   HOMEPAGE — animated game art for a livelier landing
   ═══════════════════════════════════════════════════════════ */
.hm-hero{ min-height:380px; }
.hm-hero-art{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.hm-float{
  position:absolute; left:var(--x); top:var(--y);
  width:var(--s); height:var(--s); display:block;
  opacity:.5; filter:drop-shadow(0 10px 22px rgba(0,0,0,.5));
  animation: hmFloat var(--dur,8s) ease-in-out var(--d,0s) infinite;
  will-change: transform;
}
.hm-float svg{ width:100%; height:100%; display:block; }
.hm-float.hm-dice{ font-size:var(--s); line-height:1; opacity:.42; width:auto; height:auto; }
@keyframes hmFloat{
  0%,100%{ transform:translateY(0) rotate(-8deg); }
  50%{ transform:translateY(-26px) rotate(10deg); }
}
/* breathing glow behind the title */
.hm-hero-glow{ animation: hmGlow 7s ease-in-out infinite; }
@keyframes hmGlow{ 0%,100%{ opacity:.9; transform:scale(1); } 50%{ opacity:1; transform:scale(1.07); } }
.hm-hero-inner{ z-index:2; }

/* game cards: gently bobbing icons (hover scale rule takes over on hover) */
.hm-game-ico{ animation: hmIcoBob 4s ease-in-out infinite; }
@keyframes hmIcoBob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-5px) rotate(-4deg); } }
.hm-game-champions .hm-game-ico{ animation-delay:0s; }
.hm-game-flip .hm-game-ico{ animation-delay:.6s; }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-float, .hm-hero-glow, .hm-game-ico{ animation:none !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ PREMIUM OVERRIDE LAYER (navy + indigo) — loaded last, wins specificity
   ════════════════════════════════════════════════════════════════════════ */


/* ── Slim icon-less top strip ─────────────────────────────────────────── */
.topstrip{
  position: sticky; top: 0; z-index: 1001;
  height: var(--topstrip-h);
  background: linear-gradient(180deg, #0a0c17, #0b0d18);
  border-bottom: 1px solid rgba(255,255,255,.05);
}
.topstrip-inner{
  width: min(1340px,98vw); margin: auto; height: 100%;
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  padding: 0 6px;
}
.topstrip-nav{ display: flex; align-items: center; gap: 4px; }
.topstrip-nav a{
  font-family: var(--fu); font-weight: 600; font-size: 13px; letter-spacing: .02em;
  color: var(--t2); padding: 6px 12px; border-radius: 8px;
  position: relative; transition: color .18s ease, transform .18s ease;
}
.topstrip-nav a::after{
  content:""; position:absolute; left:12px; right:12px; bottom:3px; height:2px;
  background: linear-gradient(90deg, var(--vio2), var(--vio3));
  transform: scaleX(0); transform-origin:left; border-radius:2px;
  transition: transform .22s cubic-bezier(.2,.9,.3,1);
}
.topstrip-nav a:hover{ color:#fff; transform: translateY(-1px); }
.topstrip-nav a:hover::after{ transform: scaleX(1); }
.topstrip-nav a.active{ color: var(--vio3); }
.topstrip-nav a.active::after{ transform: scaleX(1); }
.topstrip-free{
  font-family: var(--fu); font-weight:700; font-size:13px; letter-spacing:.02em;
  color:#1a1206; background: linear-gradient(135deg, var(--gold2), #eeb351);
  padding:6px 14px; border-radius:999px; transition: transform .18s ease, box-shadow .18s ease;
  box-shadow:0 4px 14px rgba(238,179,81,.28);
}
.topstrip-free:hover{ transform: translateY(-1px) scale(1.03); box-shadow:0 7px 20px rgba(238,179,81,.42); }

/* Stack the main bar beneath the strip + push fixed sidebars down */
.topbar{ top: var(--topstrip-h) !important; }
.chat-drawer{ top: calc(var(--topstrip-h) + var(--topbar-h)) !important; }
.control-panel{ top: calc(var(--topstrip-h) + 78px) !important; }
.nav-mob-extra{ display:none !important; }   /* desktop: these live in the top strip */

/* ── Bigger, animated main nav (games) ───────────────────────────────── */
.nav{ gap: 6px !important; }
.nav a{
  display:flex; align-items:center; gap:9px;
  font-family: var(--fu); font-weight:700; font-size:16px !important; letter-spacing:.02em;
  color: var(--t2) !important; padding: 0 16px !important; min-height: 46px !important;
  border-radius: 13px !important; border:1px solid transparent !important;
  position: relative; overflow: visible;
  transition: transform .2s cubic-bezier(.2,.9,.3,1), background .2s ease, color .2s ease, box-shadow .2s ease;
}
.nav .nav-ico{ font-size:22px; line-height:1; transition: transform .25s cubic-bezier(.2,1.4,.4,1), filter .2s ease; display:inline-block; }
.nav .nav-txt{ transition: transform .2s ease; }
.nav a::after{
  content:""; position:absolute; left:16px; right:16px; bottom:6px; height:2px; border-radius:2px;
  background: linear-gradient(90deg, var(--vio2), var(--vio3));
  transform: scaleX(0); transform-origin:center; transition: transform .25s cubic-bezier(.2,.9,.3,1);
}
.nav a:hover{
  color:#fff !important; transform: translateY(-3px);
  background: rgba(182,170,146,.10) !important;
  box-shadow: 0 10px 24px rgba(182,170,146,.20);
}
.nav a:hover .nav-ico{ transform: translateY(-2px) scale(1.22) rotate(-6deg); filter: drop-shadow(0 4px 10px rgba(182,170,146,.55)); }
.nav a:hover::after{ transform: scaleX(1); }
.nav a.active{
  color:#fff !important;
  background: linear-gradient(180deg, rgba(182,170,146,.30), rgba(182,170,146,.16)) !important;
  border-color: var(--vio-line) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 8px 22px rgba(182,170,146,.28);
}
.nav a.active .nav-ico{ filter: drop-shadow(0 3px 8px rgba(182,170,146,.6)); transform: scale(1.1); }
.nav a.active::after{ transform: scaleX(1); }
.daily-free-nav{ color: var(--gold2) !important; }
.daily-free-nav:hover .nav-ico{ animation: navGiftWiggle .5s ease; }
@keyframes navGiftWiggle{ 0%,100%{transform:rotate(0)} 25%{transform:rotate(-16deg) scale(1.2)} 75%{transform:rotate(16deg) scale(1.2)} }

@media (min-width:1100px) and (max-width:1540px){
  .nav a{ font-size:14px !important; padding:0 11px !important; min-height:42px !important; }
  .nav .nav-ico{ font-size:19px; }
}

/* ── Balance pill: coins + USD equivalent ────────────────────────────── */
.balance-group{ display:flex; align-items:center; gap:0; }
.balance-pill{
  display:flex; align-items:center; gap:8px;
  padding:7px 14px; background: linear-gradient(180deg,#171a2b,#12131f);
  border:1px solid var(--ln); border-top-color: rgba(255,255,255,.06);
  line-height:1.05;
}
.balance-pill-main{ font-family: var(--fu); font-weight:800; font-size:17px; color: var(--gold2); letter-spacing:.02em; }
.balance-pill-usd{ font-size:11px; font-weight:700; color: var(--t3); letter-spacing:.02em; }
.bal-btn{
  width:34px; height:38px; display:grid; place-items:center; font-size:20px; font-weight:700;
  border:1px solid var(--ln); background:#13141f; color:var(--t2); cursor:pointer;
  transition: transform .15s ease, background .15s ease, color .15s ease, box-shadow .15s ease;
}
.bal-minus{ border-radius:11px 0 0 11px; border-right:0; }
.bal-plus{ border-radius:0 11px 11px 0; border-left:0; }
.balance-pill{ border-radius:0; }
.bal-plus:hover{ background: linear-gradient(135deg,#f4cd84,#e0a236); color:#231a02; transform: translateY(-1px); box-shadow:0 6px 16px rgba(238,179,81,.32); }
.bal-minus:hover{ background: linear-gradient(135deg,#b23b3b,#e25555); color:#fff; transform: translateY(-1px); box-shadow:0 6px 16px rgba(226,85,85,.3); }

@media (max-width: 1099px){
  :root{ --topstrip-h: 0px; }
  .topstrip{ display:none; }
  .nav-mob-extra{ display:flex !important; }
  .balance-pill-usd{ display:none; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ PROFILE — flash, stats grid, unified history feed
   ════════════════════════════════════════════════════════════════════════ */
.profile-flash{ border:1px solid var(--vio-line); border-radius:12px; background: var(--vio-soft); padding:12px 16px; margin-bottom:16px; color:var(--vio3); font-weight:600; }
.profile-stats-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.pstat{ border:1px solid var(--ln); border-radius:12px; padding:11px 12px; background:rgba(0,0,0,.22); }
.pstat span{ display:block; font-size:11px; color:var(--t3); text-transform:uppercase; letter-spacing:.1em; margin-bottom:4px; }
.pstat b{ font-size:18px; color:var(--vio3); display:flex; align-items:center; gap:5px; }
.pstat-balance{ grid-column:span 3; background:linear-gradient(135deg, rgba(182,170,146,.16), rgba(0,0,0,.25)); border-color:var(--vio-line); }
.pstat-balance b{ color:var(--gold2); font-size:26px; font-family:var(--fu); }
.pstat-balance em{ display:block; font-style:normal; font-size:12px; color:var(--t2); margin-top:2px; }
.profile-av-img{ width:88px; height:88px; border-radius:50%; object-fit:cover; border:2px solid var(--vio2); box-shadow:0 0 16px rgba(182,170,146,.4); }

.hist-tabs{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.hist-tab{
  font-family:var(--fu); font-weight:700; font-size:13px; color:var(--t2);
  background:#13141f; border:1px solid var(--ln); border-radius:999px; padding:7px 14px; cursor:pointer;
  transition:transform .15s ease, background .15s ease, color .15s ease, border-color .15s ease;
}
.hist-tab:hover{ color:#fff; transform:translateY(-1px); border-color:var(--vio-line); }
.hist-tab.active{ color:#1c1408; background:linear-gradient(135deg, #f1c869, #e0a93b); border-color:transparent; box-shadow:0 6px 16px rgba(238,179,81,.30); }
.hist-feed{ display:flex; flex-direction:column; gap:8px; }
.hist-item{
  display:flex; align-items:center; gap:12px; padding:11px 14px;
  background:linear-gradient(180deg,#161926,#12131f); border:1px solid var(--ln); border-radius:13px;
  transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.hist-item:hover{ transform:translateX(3px); border-color:var(--vio-line); box-shadow:0 6px 18px rgba(0,0,0,.3); }
.hist-item-ico{ width:40px; height:40px; flex:0 0 auto; display:grid; place-items:center; font-size:20px; border-radius:11px; background:rgba(255,255,255,.04); border:1px solid var(--ln); }
.hist-ico-champions{ background:rgba(182,170,146,.14); }
.hist-ico-rustflip{ background:rgba(238,179,81,.13); }
.hist-ico-deposit{ background:rgba(43,185,100,.13); }
.hist-ico-withdraw{ background:rgba(226,85,85,.12); }
.hist-item-body{ flex:1 1 auto; min-width:0; }
.hist-item-top{ display:flex; align-items:center; gap:8px; }
.hist-item-top b{ font-size:14px; color:var(--t1); font-weight:700; }
.hist-item-tag{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; padding:2px 7px; border-radius:6px; }
.hist-item-tag.pos{ color:#86efc0; background:rgba(43,185,100,.16); }
.hist-item-tag.neg{ color:#ffb4b4; background:rgba(226,85,85,.16); }
.hist-item-body small{ display:block; font-size:11px; color:var(--t3); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hist-item-right{ flex:0 0 auto; text-align:right; }
.hist-item-amt{ display:flex; align-items:center; justify-content:flex-end; gap:4px; font-family:var(--fu); font-weight:800; font-size:16px; }
.hist-item-amt.pos{ color:#5fe39a; }
.hist-item-amt.neg{ color:#ff8d8d; }
.hist-item-amt.neu{ color:var(--t3); font-size:13px; }
.hist-item-time{ display:block; font-size:10px; color:var(--t3); margin-top:2px; }
@media (max-width:640px){ .profile-stats-grid{ grid-template-columns:repeat(2,1fr); } .pstat-balance{ grid-column:span 2; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ CHAT — avatar rows, tiered level badges, reply preview, hover actions
   ════════════════════════════════════════════════════════════════════════ */
.chat-online{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:700; color:var(--t2); margin-right:6px; }
.chat-online-dot{ width:8px; height:8px; border-radius:50%; background:#2bd47a; box-shadow:0 0 8px #2bd47a; animation:onlinePulse 2s ease-in-out infinite; }
@keyframes onlinePulse{ 0%,100%{opacity:1} 50%{opacity:.5} }

.chat-messages .chat-message{
  display:flex; gap:10px; align-items:flex-start;
  padding:4px 12px 4px 10px; border:0; background:transparent; position:relative;
}
.chat-messages .chat-message:hover{ background:rgba(255,255,255,.03); }
.chat-av{ flex:0 0 auto; width:30px; height:30px; border-radius:9px; overflow:hidden; display:grid; place-items:center; background:linear-gradient(145deg,#2a2740,#1b1930); border:1px solid var(--ln); }
.chat-av img{ width:100%; height:100%; object-fit:cover; }
.chat-av span{ font-family:var(--fu); font-weight:800; font-size:13px; color:var(--vio3); }
/* Outline icons for system broadcasters (announcement/mod/rain/races) — hollow line icons, no emoji */
.chat-sys-ico{ display:inline-flex; align-items:center; justify-content:center; color:var(--gold2); }
.chat-av .chat-sys-ico svg{ width:18px; height:18px; }
.chat-sys-ico-sm{ margin-right:4px; }
.chat-sys-ico-sm svg{ width:14px; height:14px; }
.chat-name.chat-name-system{ display:inline-flex !important; align-items:center; gap:1px; color:var(--gold2) !important; letter-spacing:.04em; }
.chat-body{ flex:1 1 auto; min-width:0; }
.chat-msg-head{ display:flex; align-items:center; gap:6px; }
.chat-lvl{
  font-family:var(--fm); font-weight:700; font-size:10px; color:#0c0d16;
  padding:1px 6px; border-radius:6px; line-height:1.5; min-width:20px; text-align:center;
}
.chat-lvl.lv-base{ background:#5b6072; color:#dfe3ee; }
.chat-lvl.lv-teal{ background:linear-gradient(135deg,#2dd4bf,#22a99a); }
.chat-lvl.lv-amber{ background:linear-gradient(135deg,#fbbf24,#eeb351); }
.chat-lvl.lv-gold{ background:linear-gradient(135deg,#f4cd84,#eeb351); }
.chat-lvl.lv-violet{ background:linear-gradient(135deg,#f5c451,#eeb351); color:#fff; }
.chat-name{ font-size:13px !important; font-weight:700; color:var(--t1) !important; display:inline !important; margin:0 !important; }
.chat-name.cn-admin{ color:#ff8d8d !important; }
.chat-name.cn-mod{ color:#7fd0ff !important; }
.chat-name.cn-creator{ color:#f0abfc !important; }
.chat-actions{ margin-left:auto; display:flex; gap:3px; opacity:0; transition:opacity .15s ease; }
.chat-message:hover .chat-actions{ opacity:1; }
.chat-act{ width:24px; height:24px; display:grid; place-items:center; border-radius:7px; background:rgba(255,255,255,.06); border:1px solid var(--ln); color:var(--t2); font-size:13px; cursor:pointer; transition:transform .12s ease, background .12s ease, color .12s ease; }
.chat-act:hover{ transform:translateY(-1px); background:var(--vio-soft); color:#fff; border-color:var(--vio-line); }
.chat-body p{ font-size:13px !important; color:var(--t1) !important; line-height:1.45; margin-top:2px; word-break:break-word; }
.chat-message-system .chat-av{ background:linear-gradient(145deg,#3a2f12,#241d0b); }
.chat-message-system .chat-body p{ color:var(--gold2) !important; font-weight:600; }
.chat-message-system .chat-name{ color:var(--gold2) !important; }

/* #2 — Rain + Tip (and other announcements) carry NO avatar; the WHOLE line — the title AND its text —
   now sits inside ONE compact soft site-gold panel (not just the title), at a reduced size so the
   announcements read as small system tags rather than full-height chat lines. */
.chat-message.chat-message-rain,
.chat-message.chat-message-tip{ margin-top:8px !important; }
/* (build 461) rain/tip now SHOW their hollow icon in the avatar slot, like announcement — no longer hidden. */
.chat-message.chat-message-rain .chat-body,
.chat-message.chat-message-tip  .chat-body{
  background:none !important; border:0 !important;
  border-radius:0; padding:0;
}
.chat-message.chat-message-rain .chat-msg-head,
.chat-message.chat-message-tip  .chat-msg-head{ gap:4px; }
.chat-message.chat-message-rain .chat-name,
.chat-message.chat-message-tip  .chat-name{
  background:none !important; border:0 !important; padding:0 !important; text-shadow:none !important;
  color:var(--gold2) !important; filter:none !important; font-weight:800 !important;
  font-size:11px !important; letter-spacing:.04em;
}
.chat-message.chat-message-rain .chat-body p,
.chat-message.chat-message-tip  .chat-body p{
  color:var(--gold2) !important; font-weight:600 !important; font-size:11px !important;
  line-height:1.35 !important; margin-top:1px !important;
}
/* Every announcement (system) line reads a touch smaller + tighter than a normal chat message. */
.chat-message-system{ padding-top:3px !important; padding-bottom:3px !important; }
.chat-message-system .chat-name{ font-size:11.5px !important; }
.chat-message-system .chat-body p{ font-size:11.5px !important; line-height:1.4 !important; }
.chat-message-system .chat-av{ width:26px !important; height:26px !important; }
.chat-message-system .chat-av .chat-sys-ico svg{ width:15px !important; height:15px !important; }
.chat-reply-quote{
  display:flex; align-items:center; gap:5px; margin:2px 0 1px; padding:2px 8px;
  border-left:2px solid var(--vio2); background:rgba(182,170,146,.08); border-radius:0 7px 7px 0;
  font-size:11px; color:var(--t3); max-width:100%; overflow:hidden;
}
.chat-reply-quote b{ color:var(--vio3); font-weight:700; flex:0 0 auto; }
.chat-reply-quote span{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.chat-reply-q-ico{ color:var(--vio2); }

/* reply context bar above the input */
.chat-reply-bar{
  display:flex; align-items:center; gap:8px; margin:0 10px 6px;
  padding:8px 10px; background:rgba(182,170,146,.1); border:1px solid var(--vio-line);
  border-radius:11px;
}
.chat-reply-ico{ color:var(--vio2); font-size:16px; }
.chat-reply-info{ flex:1 1 auto; min-width:0; line-height:1.2; }
.chat-reply-info b{ display:block; font-size:11px; color:var(--vio3); }
.chat-reply-info span{ display:block; font-size:11px; color:var(--t3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.chat-reply-cancel{ width:22px; height:22px; flex:0 0 auto; border-radius:6px; background:rgba(255,255,255,.07); border:0; color:var(--t2); cursor:pointer; }
.chat-reply-cancel:hover{ color:#fff; background:rgba(255,255,255,.14); }

/* ── RAIN BANNER ── */
.chat-rain{
  position:relative; margin:10px 12px 6px; padding:13px 14px; overflow:hidden;
  border-radius:14px; border:1px solid rgba(238,179,81,.4);
  background:linear-gradient(135deg, rgba(60,46,12,.95), rgba(36,28,12,.97));
  box-shadow:0 8px 22px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.06);
  animation:rainPop .4s cubic-bezier(.2,1.2,.4,1);
}
@keyframes rainPop{ from{ transform:scale(.94); opacity:0 } to{ transform:scale(1); opacity:1 } }
.chat-rain-glow{ position:absolute; inset:-40% -10% auto -10%; height:140%; background:radial-gradient(closest-side, rgba(238,179,81,.22), transparent 70%); pointer-events:none; animation:rainGlow 3.5s ease-in-out infinite; }
@keyframes rainGlow{ 0%,100%{transform:translateX(-12%)} 50%{transform:translateX(12%)} }
.chat-rain-top{ display:flex; align-items:center; justify-content:space-between; position:relative; }
.chat-rain-title{ font-family:var(--fu); font-weight:800; font-size:16px; letter-spacing:.04em; color:#ffe6a8; }
.chat-rain-pot{ display:flex; align-items:center; gap:6px; font-family:var(--fu); font-weight:800; font-size:20px; color:var(--gold2); }
.chat-rain-meta{ display:flex; align-items:center; gap:12px; margin:6px 0 10px; font-size:12px; color:#e9d6a8; position:relative; }
.chat-rain-meta b{ color:#fff; }
.chat-rain-timer b{ font-family:var(--fm); }
.chat-rain-usd{ margin-left:auto; color:#c8b78a; }
.chat-rain-actions{ display:flex; gap:8px; position:relative; }
.chat-rain-join{
  flex:1 1 auto; text-align:center; font-family:var(--fu); font-weight:800; font-size:15px; letter-spacing:.02em;
  color:#241704; background:linear-gradient(135deg,#ffd564,#eeb351); border:0; border-radius:11px; padding:11px;
  cursor:pointer; transition:transform .15s ease, box-shadow .15s ease, filter .15s ease;
  box-shadow:0 6px 16px rgba(238,179,81,.4);
}
.chat-rain-join:hover{ transform:translateY(-2px); box-shadow:0 10px 24px rgba(238,179,81,.55); }
.chat-rain-join.joined{ background:linear-gradient(135deg,#2bb964,#1f9a52); color:#fff; box-shadow:none; cursor:default; }
.chat-rain-tip{
  flex:0 0 auto; font-family:var(--fu); font-weight:800; font-size:15px; color:#ffe6a8;
  background:rgba(255,255,255,.06); border:1px solid rgba(238,179,81,.4); border-radius:11px; padding:11px 16px; cursor:pointer;
  transition:transform .15s ease, background .15s ease;
}
.chat-rain-tip:hover{ transform:translateY(-2px); background:rgba(238,179,81,.16); }

/* ── admin rain tool ── */
.admin-tool-rain .rain-live-badge{ margin-left:8px; font-size:11px; font-weight:800; color:#241704; background:linear-gradient(135deg,#ffd564,#eeb351); padding:2px 9px; border-radius:999px; }
.admin-tool-hint{ display:block; margin-top:7px; font-size:11px; color:var(--t3); line-height:1.4; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ HOMEPAGE GAME CARDS — animated, lift + sheen + icon motion on hover
   ════════════════════════════════════════════════════════════════════════ */
.hm-game{
  position:relative; overflow:hidden;
  transition:transform .28s cubic-bezier(.2,.9,.3,1), box-shadow .28s ease, border-color .28s ease;
  will-change:transform;
}
.hm-game::before{
  content:""; position:absolute; top:0; left:-120%; width:60%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.12), transparent);
  transform:skewX(-18deg); transition:left .6s ease; pointer-events:none;
}
.hm-game:hover{ transform:translateY(-8px) scale(1.015); border-color:var(--vio-line); box-shadow:0 22px 48px rgba(0,0,0,.5), 0 0 0 1px rgba(182,170,146,.25); }
.hm-game:hover::before{ left:130%; }
.hm-game .hm-game-ico{ display:inline-block; transition:transform .3s cubic-bezier(.2,1.4,.4,1); }
.hm-game:hover .hm-game-ico{ transform:scale(1.25) rotate(-8deg); filter:drop-shadow(0 6px 14px rgba(182,170,146,.5)); }
.hm-game:hover h3{ color:#fff; }
.hm-game .hm-game-go{ transition:transform .2s ease, color .2s ease; }
.hm-game:hover .hm-game-go{ transform:translateX(6px); color:var(--vio3); }

/* ════════════════════════════════════════════════════════════════════════
   ✦ INPUTS & MONEY BUTTONS — premium polish, focus rings, hover lift
   ════════════════════════════════════════════════════════════════════════ */
.stake-input, .amount-input input, .modal-select,
.tip-field input, .form-card input, .form-card select,
#rpsWager, .admin-tool input, .us-input{
  transition:border-color .18s ease, box-shadow .18s ease, background .18s ease !important;
}
.stake-input:focus, .amount-input input:focus, .modal-select:focus,
.tip-field input:focus, .form-card input:focus, .form-card select:focus,
#rpsWager:focus, .admin-tool input:focus, .us-input:focus, #chatInput:focus{
  outline:none !important;
  border-color:var(--vio2) !important;
  box-shadow:0 0 0 3px rgba(182,170,146,.22) !important;
  background:rgba(182,170,146,.06) !important;
}
.qa{ transition:transform .14s ease, background .14s ease, color .14s ease, border-color .14s ease !important; }
.qa:hover{ transform:translateY(-2px); border-color:var(--vio-line) !important; color:#fff !important; background:var(--vio-soft) !important; }
.qa:active{ transform:translateY(0) scale(.96); }
.btn-primary, .app-modal__btn{
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease !important;
}
.btn-primary:hover, .app-modal__btn:hover{ transform:translateY(-2px); box-shadow:0 10px 24px rgba(182,170,146,.3); }
.btn-primary:active, .app-modal__btn:active{ transform:translateY(0) scale(.985); }
/* chat send button + input bar */
.chat-form{ gap:8px; }
.chat-form input{ transition:border-color .18s ease, box-shadow .18s ease, background .18s ease; }
.chat-form button[type=submit]{
  transition:transform .15s ease, box-shadow .15s ease, filter .15s ease;
  background:linear-gradient(135deg,var(--vio),var(--vio2)) !important;
}
.chat-form button[type=submit]:hover{ transform:translateY(-1px) scale(1.05); box-shadow:0 6px 16px rgba(182,170,146,.4); }

/* ── CHAT REDESIGN FIXES: neutralize old generic span rule + tiered badges ── */
/* (0,2,1) beats the old non-important ".chat-message span" reset; !important badge rules still win) */
.chat-messages .chat-message span{ display:inline; font-size:inherit; margin-top:0; color:inherit; }
.chat-av span{ margin:0; }
.chat-reply-quote span{ font-size:11px; }
/* Drop the "LV " prefix so badges show just the number, like the reference */
.chat-msg-head .chat-lvl::before{ content:"" !important; }
.chat-msg-head .chat-lvl{
  padding:1px 7px !important; height:auto !important; min-width:20px;
  border-radius:6px !important; font-family:var(--fm) !important; line-height:1.6 !important;
}
.chat-msg-head .chat-lvl.lv-base{  color:#dfe3ee !important; background:#5b6072 !important; }
.chat-msg-head .chat-lvl.lv-teal{  color:#0c0d16 !important; background:linear-gradient(135deg,#2dd4bf,#22a99a) !important; }
.chat-msg-head .chat-lvl.lv-amber{ color:#0c0d16 !important; background:linear-gradient(135deg,#fbbf24,#eeb351) !important; }
.chat-msg-head .chat-lvl.lv-gold{  color:#0c0d16 !important; background:linear-gradient(135deg,#f4cd84,#eeb351) !important; }
.chat-msg-head .chat-lvl.lv-violet{ color:#ffffff !important; background:linear-gradient(135deg,#f5c451,#eeb351) !important; }
/* head spacing tidy */
.chat-msg-head{ gap:6px; flex-wrap:wrap; }
.chat-body{ overflow:hidden; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ FIXES PASS 2 — dropdown contrast, chat offset, select styling, polish
   ════════════════════════════════════════════════════════════════════════ */

/* (#6) Native <select> dropdown was dark-on-dark (options invisible until hover).
   Force readable option colors + a premium closed-state look with a custom arrow. */
select, .modal-select, .form-card select{
  -webkit-appearance:none; -moz-appearance:none; appearance:none;
  background-color:#161a28 !important; color:#e8eaf0 !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23eeb351' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important; background-position:right 12px center !important;
  padding-right:34px !important; cursor:pointer;
}
select option, .modal-select option, .form-card select option{
  background-color:#1a1e2e !important; color:#e8eaf0 !important;
  padding:8px 10px;
}
/* native <option> only honours a SOLID background-color — a gradient is ignored
   and falls back to the OS default (white), which with white text was invisible. */
select option:checked, .modal-select option:checked,
select option[selected], .modal-select option[selected]{
  background-color:#eeb351 !important; color:#1a1206 !important;
}
select option:hover, .modal-select option:hover{
  background-color:#2a3350 !important; color:#ffffff !important;
}
/* Firefox option colors */
@-moz-document url-prefix(){
  select option{ background-color:#1a1e2e; color:#e8eaf0; }
}

/* (#1) Chat pinned-left offset: align exactly under the sticky strip + bar (no gap). */
.chat-drawer{ top: calc(var(--topstrip-h) + 68px) !important; }
@media (min-width:1100px){
  main.page{ padding-top: 24px !important; }
}

/* (#5 coinflip) New side-avatar tiles for open games (replaces RED/BLUE coin + the
   removed "Your side if you join" text). Creator's photo on their side; other empty. */
.cf-side-avatar{
  width:46px; height:46px; flex:0 0 auto; border-radius:12px; overflow:hidden;
  display:grid; place-items:center; border:2px solid var(--ln);
  background:linear-gradient(145deg,#23263a,#171a28);
}
.cf-side-avatar img{ width:100%; height:100%; object-fit:cover; }
.cf-side-avatar span{ font-family:var(--fu); font-weight:800; font-size:18px; color:var(--vio3); }
.cf-side-avatar.cf-side-red{   border-color:#ef4444; box-shadow:0 0 14px rgba(239,68,68,.35); }
.cf-side-avatar.cf-side-blue{  border-color:#3b82f6; box-shadow:0 0 14px rgba(59,130,246,.35); }
.cf-side-avatar.cf-side-empty{ border-style:dashed; box-shadow:none; opacity:.7; }
.cf-side-avatar.cf-side-empty span{ color:var(--t3); }
.cf-game-vs{ display:flex; align-items:center; justify-content:center; }
.cf-game-open-side{ display:flex; align-items:center; justify-content:center; }

/* (#7) A little more life — section + card entrance, focus polish on the chat input,
   smoother modal pop. Subtle, GPU-friendly, respects reduced-motion. */
@keyframes rrRise{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:translateY(0); } }
.section-block, .level-card, .hist-item, .admin-stat, .hm-game{ animation:rrRise .45s cubic-bezier(.2,.8,.3,1) both; }
.hm-game:nth-child(2){ animation-delay:.06s; } .hm-game:nth-child(3){ animation-delay:.12s; }
.app-modal__card, .cf-modal-card{ animation:modalPop .32s cubic-bezier(.2,1.2,.4,1); }
@keyframes modalPop{ from{ opacity:0; transform: perspective(1200px) translateY(26px) rotateX(11deg) scale(.95); } to{ opacity:1; transform: perspective(1200px) translateY(0) rotateX(0deg) scale(1); } }
.chat-form input:focus{ outline:none; border-color:var(--vio2); box-shadow:0 0 0 3px rgba(182,170,146,.22); background:rgba(182,170,146,.06); }
/* buttons get a quick press feel everywhere */
button{ transition:transform .12s ease, filter .15s ease, box-shadow .15s ease; }
button:active:not(:disabled){ transform:translateY(1px) scale(.985); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .section-block, .level-card, .hist-item, .admin-stat, .hm-game,
  .app-modal__card, .cf-modal-card, .rps-modal-card{ animation:none !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ HOMEPAGE REDESIGN — promo row + Originals card grid (premium)
   ════════════════════════════════════════════════════════════════════════ */
.home{ width:min(1280px,100%); margin:0 auto; }

/* Promo row */
.hm-promo{ display:grid; grid-template-columns:1fr; gap:16px; margin-bottom:30px; }
@media (max-width:900px){ .hm-promo{ grid-template-columns:1fr; } }
.hm-promo-card{
  position:relative; overflow:hidden; border-radius:20px; padding:26px 28px;
  border:1px solid var(--ln); min-height:190px; display:flex; flex-direction:column; justify-content:center;
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(182,170,146,.22), transparent 55%),
    linear-gradient(180deg, #1a1d2e, #14162270);
  transition:transform .25s cubic-bezier(.2,.9,.3,1), box-shadow .25s ease, border-color .25s ease;
}
.hm-promo-rewards{
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(238,179,81,.2), transparent 55%),
    linear-gradient(180deg, #1d1a2c, #14162270);
}
.hm-promo-rewards:hover{ transform:translateY(-4px); border-color:rgba(238,179,81,.4); box-shadow:0 18px 44px rgba(0,0,0,.42); }
.hm-promo-welcome{ background-image:radial-gradient(120% 140% at 100% 0%, rgba(182,170,146,.24), transparent 55%), linear-gradient(180deg, #1a1d2e, #14162270); }
.hm-promo-glow{ position:absolute; top:-40%; right:-10%; width:60%; height:160%; border-radius:50%; background:radial-gradient(closest-side, rgba(182,170,146,.3), transparent 70%); filter:blur(8px); pointer-events:none; animation:promoGlow 6s ease-in-out infinite; }
.hm-promo-glow.gold{ background:radial-gradient(closest-side, rgba(238,179,81,.28), transparent 70%); }
@keyframes promoGlow{ 0%,100%{ transform:translateY(0) scale(1); opacity:.9 } 50%{ transform:translateY(10px) scale(1.06); opacity:.6 } }

.hm-promo-body{ position:relative; z-index:1; }
.hm-promo-eyebrow{ display:inline-block; font-family:var(--fu); font-weight:700; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--vio3); margin-bottom:10px; }
.hm-promo-eyebrow.gold{ color:var(--gold2); }
.hm-promo-title{ font-family:var(--fd); font-size:clamp(26px,3.4vw,40px); letter-spacing:.02em; line-height:1.04; color:#fff; }
.hm-promo-title .hm-accent{ background:linear-gradient(110deg, var(--vio3), #ffffff 40%, #ffffff 60%, var(--vio3)); background-size:230% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent; animation:hmAccentShimmer 5.5s linear infinite; }
@keyframes hmAccentShimmer{ 0%{ background-position:140% 0; } 100%{ background-position:-40% 0; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-promo-title .hm-accent{ animation:none; background-position:50% 0; } }
.hm-promo-sub{ color:var(--t2); font-size:14px; line-height:1.5; margin-top:8px; max-width:48ch; }
.hm-promo-level{ display:flex; align-items:center; gap:14px; margin-top:16px; }
.hm-promo-lvl-badge{ flex:0 0 auto; width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center;
  font-family:var(--fd); font-size:16px; color:#fff; background:linear-gradient(145deg,var(--vio2),var(--vio)); box-shadow:0 8px 20px rgba(182,170,146,.4);
  /* Rakam kutunun icinde YUKARIDA duruyordu. Sebep grid/place-items degil, FONT: Bebas Neue'nun
     ust bosluğu alt bosluğundan buyuk, yani glif kutusu ortalansa bile gorunen rakam yukari kayar.
     line-height:1 fazlaligi kirpar ve 1px asagi kaydirma optik merkezi yakalar — kutuyu buyutmeden,
     baska hicbir yerdeki rozeti etkilemeden. */
  line-height:1; padding-top:1px; }
.hm-promo-lvl-meta{ flex:1 1 auto; }
.hm-promo-lvl-bar{ height:7px; border-radius:5px; background:rgba(0,0,0,.4); overflow:hidden; border:1px solid var(--ln); }
.hm-promo-lvl-bar span{ display:block; height:100%; border-radius:5px; background:linear-gradient(90deg,var(--vio),var(--vio3)); box-shadow:0 0 12px rgba(182,170,146,.6); transition:width .6s ease; }
.hm-promo-lvl-meta small{ display:block; margin-top:5px; font-size:11px; color:var(--t3); }
.hm-promo-cta{ display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.hm-btn-gold{ display:inline-flex; align-items:center; gap:6px; font-family:var(--fu); font-weight:800; font-size:14px; color:#241704; background:linear-gradient(135deg,var(--gold2),#eeb351); padding:11px 18px; border-radius:11px; box-shadow:0 6px 16px rgba(238,179,81,.34); transition:transform .16s ease, box-shadow .16s ease; }
.hm-promo-rewards:hover .hm-btn-gold{ transform:translateY(-2px); box-shadow:0 10px 24px rgba(238,179,81,.5); }
.hm-promo-coins{ position:absolute; right:24px; bottom:18px; display:flex; gap:-6px; font-size:30px; opacity:.9; z-index:1; }
.hm-promo-coins .coin-ico{ width:34px; height:34px; margin-left:-10px; filter:drop-shadow(0 4px 8px rgba(0,0,0,.4)); animation:coinBob 3s ease-in-out infinite; }
.hm-promo-coins .coin-ico:nth-child(2){ animation-delay:.3s; } .hm-promo-coins .coin-ico:nth-child(3){ animation-delay:.6s; }
@keyframes coinBob{ 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(-6px) } }

/* Originals heading */
.hm-originals-head{ display:flex; align-items:baseline; gap:14px; margin:6px 2px 16px; }
.hm-originals-head h2{ font-family:var(--fd); font-size:clamp(24px,3vw,34px); letter-spacing:.03em; color:#fff; }
.hm-originals-head span{ font-size:13px; color:var(--t3); }

/* Game cards (rich) */

@media (max-width:900px){ .hm-games{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:390px){ .hm-games{ grid-template-columns:1fr; } }
.hm-game{
  position:relative; overflow:hidden; border-radius:18px; border:1px solid var(--ln);
  background:linear-gradient(180deg,#181b2a,#13141f); display:flex; flex-direction:column;
  text-decoration:none; min-height:280px;
}
.hm-game-badge{ position:absolute; top:14px; right:14px; z-index:3; font-family:var(--fu); font-weight:800; font-size:11px; letter-spacing:.06em; padding:4px 10px; border-radius:999px; }
.hm-game-badge.live{ color:#fff; background:linear-gradient(135deg,#ef4444,#b91c1c); box-shadow:0 0 0 3px rgba(239,68,68,.18); animation:badgePulse 2s ease-in-out infinite; }
.hm-game-badge.hot{ color:#241704; background:linear-gradient(135deg,#f4cd84,#eeb351); }
.hm-game-badge.new{ color:#fff; background:linear-gradient(135deg,var(--vio2),var(--vio)); }
@keyframes badgePulse{ 0%,100%{ box-shadow:0 0 0 3px rgba(239,68,68,.18) } 50%{ box-shadow:0 0 0 6px rgba(239,68,68,.06) } }
.hm-game-art{
  position:relative; height:150px; display:grid; place-items:center; overflow:hidden;
  background:
    radial-gradient(80% 120% at 50% 0%, rgba(182,170,146,.28), transparent 60%),
    repeating-linear-gradient(135deg, rgba(255,255,255,.025) 0 12px, transparent 12px 24px),
    linear-gradient(180deg,#20243a,#161827);
}
.hm-game-flip .hm-game-art{ background:radial-gradient(80% 120% at 50% 0%, rgba(238,179,81,.26), transparent 60%), repeating-linear-gradient(135deg, rgba(255,255,255,.025) 0 12px, transparent 12px 24px), linear-gradient(180deg,#2a2438,#161827); }
.hm-game-bigico{ font-size:64px; line-height:1; filter:drop-shadow(0 10px 22px rgba(0,0,0,.5)); transition:transform .35s cubic-bezier(.2,1.3,.4,1); }
.hm-game-art::before{ content:""; position:absolute; top:0; left:-130%; width:55%; height:100%; background:linear-gradient(100deg,transparent,rgba(255,255,255,.14),transparent); transform:skewX(-18deg); transition:left .65s ease; }
.hm-game-info{ padding:18px 20px 20px; display:flex; flex-direction:column; gap:7px; flex:1; }
.hm-game-info h3{ font-family:var(--fd); font-size:24px; letter-spacing:.03em; color:#fff; }
.hm-game-info p{ font-size:13px; color:var(--t2); line-height:1.5; flex:1; }
.hm-game-go{ font-family:var(--fu); font-weight:800; font-size:14px; color:var(--vio3); transition:transform .2s ease, color .2s ease; }
/* Hover */
.hm-game:hover{ transform:translateY(-8px); border-color:var(--vio-line); box-shadow:0 24px 50px rgba(0,0,0,.5), 0 0 0 1px rgba(182,170,146,.22); }
.hm-game:hover .hm-game-bigico{ transform:scale(1.18) rotate(-7deg); }
.hm-game:hover .hm-game-art::before{ left:130%; }
.hm-game:hover .hm-game-go{ transform:translateX(6px); color:#fff; }
.hm-game:hover .hm-game-info h3{ color:var(--vio3); }

/* Ensure the new full-bleed card art isn't boxed by the old .hm-game padding/bars */
.hm-game{ padding:0 !important; gap:0 !important; }
.hm-game::before, .hm-game::after{ display:none !important; content:none !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ GAME-PAGE PREMIUM FINISH (arena, coinflip, rps) + de-green HP defaults
   ════════════════════════════════════════════════════════════════════════ */

/* HP bar: kill the green default (JS sets violet→amber→red at runtime; this stops
   a green flash on load and recolors the track border). */
.health-track{ border-color:rgba(182,170,146,.22) !important; background:rgba(0,0,0,.5) !important; box-shadow:inset 0 1px 3px rgba(0,0,0,.5); }
.health-fill{ background:linear-gradient(90deg,#eeb351,#f4cd84) !important; box-shadow:0 0 12px rgba(182,170,146,.45) !important; }
.player-panel.low-hp .health-track{ border-color:rgba(239,68,68,.5) !important; }

/* Player panels — richer depth, refined accents */
.player-panel{
  background:linear-gradient(180deg, rgba(182,170,146,.05), rgba(255,255,255,.012)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.left-panel{ border-color:rgba(182,170,146,.3) !important; }
.left-panel::before{ background:linear-gradient(90deg,transparent,rgba(182,170,146,.6),transparent) !important; }
.player-panel:hover{ border-color:rgba(182,170,146,.45); }
.seat-badge b{ color:var(--vio3) !important; }

/* Prize display — make the live pot feel important */
.prize-display{
  background:radial-gradient(120% 140% at 50% 0%, rgba(238,179,81,.16), rgba(238,179,81,.05)) !important;
  border-color:rgba(238,179,81,.32) !important; box-shadow:0 6px 20px rgba(238,179,81,.1);
}
.prize-amount{ text-shadow:0 2px 16px rgba(238,179,81,.3); }

/* Empty seat — looks intentional, not "buggy" */
.empty-seat{ opacity:.92; }
.empty-seat .pfp-svg circle{ transition:stroke .3s; }
.char-display:has(.empty-seat){ background:radial-gradient(closest-side, rgba(182,170,146,.06), transparent 75%); }

/* Big arena Join button — premium gradient + glow */
.btn-primary, #joinBtn, .cf-create-btn{
  background:linear-gradient(135deg, var(--vio), var(--vio2)) !important;
  border:0 !important; color:#fff !important; font-weight:800 !important; letter-spacing:.02em;
  box-shadow:0 8px 22px rgba(182,170,146,.32) !important;
}
.btn-primary:hover, #joinBtn:hover:not(:disabled), .cf-create-btn:hover{
  filter:brightness(1.06); box-shadow:0 12px 30px rgba(182,170,146,.45) !important;
}
#joinBtn:disabled{ filter:grayscale(.4) brightness(.8); box-shadow:none !important; }

/* Coinflip side picker — bigger, clearer, glow on active */
.cf-side-btn{ transition:transform .18s cubic-bezier(.2,.9,.3,1), border-color .2s, background .2s, box-shadow .2s !important; }
.cf-side-btn:hover{ transform:translateY(-3px) scale(1.02) !important; }
.cf-side-btn.active.cf-side-red{ box-shadow:0 0 0 1px rgba(239,68,68,.4), 0 10px 26px rgba(239,68,68,.22) !important; }
.cf-side-btn.active.cf-side-blue{ box-shadow:0 0 0 1px rgba(59,130,246,.4), 0 10px 26px rgba(59,130,246,.22) !important; }
.cf-side-coin{ transition:transform .25s cubic-bezier(.2,1.3,.4,1); }
.cf-side-btn:hover .cf-side-coin{ transform:rotate(-8deg) scale(1.08); }
.cf-vs-divider{ color:var(--vio3) !important; }

.cf-game-row, .bh-row, .mini-row, .lb-row{
  transition:transform .14s ease, border-color .16s ease, box-shadow .16s ease;
}
.cf-game-row:hover{ transform:translateX(3px); border-color:var(--vio-line); }

/* Premium thin scrollbars site-wide */
*{ scrollbar-width:thin; scrollbar-color:rgba(182,170,146,.5) transparent; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:#0e1018; }
::-webkit-scrollbar-thumb{ background:linear-gradient(180deg,#eeb351,#8a6a1e); border-radius:8px; border:2px solid #0e1018; }
::-webkit-scrollbar-thumb:hover{ background:linear-gradient(180deg,#f5c451,#eeb351); }

/* Toasts — premium glass look */
.rr-toast{ backdrop-filter:blur(12px); border:1px solid var(--vio-line) !important; }

/* Section titles — accent underline */
.section-title h3{ position:relative; }
.eyebrow{ color:var(--vio3) !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ NAVY + GOLD CORRECTION — match the reference (deep navy, near-black chat,
     GOLD accents/CTAs, neutral slate borders). Loaded last → wins.
   ════════════════════════════════════════════════════════════════════════ */

body{
  background:
    radial-gradient(1100px 620px at 82% -12%, rgba(238,179,81,.055), transparent 60%),
    radial-gradient(820px 480px at 0% 0%, rgba(150,165,195,.04), transparent 55%),
    #0a0b12 !important;
}
.topbar{ background:rgba(8,9,15,.86) !important; border-bottom:1px solid rgba(255,255,255,.05) !important; }
.topstrip{ background:linear-gradient(180deg,#08090e,#0a0b11) !important; }

/* Cards / panels / surfaces → navy */
.section-block, .form-card, .level-card, .wallet-card, .admin-stat, .admin-tool,
.cf-game-row, .rps-open-row, .rps-recent-row, .bh-row, .hist-item, .balance-pill,
.app-modal__card, .cf-modal-card, .rps-modal-card, .notif-panel, .profile-menu{
  background:linear-gradient(180deg,#16181f,#101119) !important;
  border-color:rgba(255,255,255,.06) !important;
}

/* Chat → near-black (reference) */
.chat-drawer{ background:linear-gradient(180deg,#0a0b11,#06070c) !important; border-right:1px solid rgba(255,255,255,.05) !important; }
.chat-messages .chat-message:hover{ background:rgba(255,255,255,.022) !important; }
.chat-head{ background:#0a0b11 !important; border-bottom:1px solid rgba(255,255,255,.05); }
.chat-form{ background:#0a0b11 !important; border-top:1px solid rgba(255,255,255,.05); }
.chat-form input{ background:#14161f !important; border:1px solid rgba(255,255,255,.08) !important; }

/* GOLD primary CTAs (dark text for contrast) */
.btn-primary, #joinBtn, .cf-create-btn, #rpsCreateBtn, .app-modal__btn.gold,
.hm-btn-primary, .hm-btn-gold{
  background:linear-gradient(135deg,#f4cd84,#eeb351) !important;
  color:#221604 !important; border:0 !important; font-weight:800 !important;
  box-shadow:0 8px 22px rgba(238,179,81,.3) !important;
}
.btn-primary:hover, #joinBtn:hover:not(:disabled), .cf-create-btn:hover, #rpsCreateBtn:hover,
.app-modal__btn.gold:hover, .hm-btn-primary:hover{
  filter:brightness(1.05); box-shadow:0 12px 30px rgba(238,179,81,.46) !important;
}
#joinBtn:disabled{ filter:grayscale(.5) brightness(.7); box-shadow:none !important; }
.chat-form button[type=submit]{ background:linear-gradient(135deg,#f4cd84,#eeb351) !important; color:#221604 !important; }

/* Active nav + focus rings → gold */
.nav a.active{ background:linear-gradient(180deg, rgba(238,179,81,.22), rgba(238,179,81,.08)) !important; border-color:var(--vio-line) !important; box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 8px 22px rgba(238,179,81,.22) !important; }
.nav a:hover{ background:rgba(238,179,81,.08) !important; }
:focus-visible, input:focus, select:focus, textarea:focus, .chat-form input:focus,
.stake-input:focus, .amount-input input:focus, #rpsWager:focus, .us-input:focus{
  outline:none !important; border-color:#eeb351 !important; box-shadow:0 0 0 3px rgba(238,179,81,.22) !important;
}

/* HP bar → cyan→amber→red (clear, premium, no green/violet/gold-clash) */
.health-fill{ background:linear-gradient(90deg,#22d3ee,#67e8f9) !important; box-shadow:0 0 12px rgba(34,211,238,.42) !important; }
.health-track{ border-color:rgba(34,211,238,.2) !important; }
.player-panel.low-hp .health-track{ border-color:rgba(239,68,68,.5) !important; }

/* Top-tier chat badge (60+) → cyan instead of violet */
.chat-msg-head .chat-lvl.lv-violet{ background:linear-gradient(135deg,#22d3ee,#0891b2) !important; color:#04222b !important; }

/* Glows that were violet → gold on the things that should glow */
.hm-promo-glow{ background:radial-gradient(closest-side, rgba(238,179,81,.26), transparent 70%) !important; }
.brand-icon, .brand-icon-rust{ box-shadow:0 6px 18px rgba(238,179,81,.28) !important; }
.chat-toggle{ background:linear-gradient(145deg,#f4cd84,#eeb351) !important; box-shadow:6px 0 18px rgba(238,179,81,.4) !important; }
.level-badge, .hm-promo-lvl-badge{ background:linear-gradient(145deg,#f4cd84,#eeb351) !important; color:#221604 !important; box-shadow:0 8px 20px rgba(238,179,81,.4) !important; }
.level-fill, .hm-promo-lvl-bar span{ background:linear-gradient(90deg,#eeb351,#f4cd84) !important; box-shadow:0 0 12px rgba(238,179,81,.5) !important; }

/* Eyebrows / accent text → gold */
.eyebrow, .hm-promo-eyebrow, .hm-game-go, .seat-badge b{ color:#f4cd84 !important; }
.hm-promo-eyebrow.gold{ color:#f4cd84 !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ FIXES PASS 3 — Free Coins contrast, chat flush under header
   ════════════════════════════════════════════════════════════════════════ */
/* Free Coins was gold-text-on-gold (invisible). Make it dark text on a solid gold pill. */
.topstrip-free{
  background:linear-gradient(135deg,#f4cd84,#eeb351) !important;
  color:#241704 !important; font-weight:800 !important;
  padding:3px 12px !important; border-radius:999px !important;
  box-shadow:0 2px 10px rgba(238,179,81,.35) !important; border:0 !important;
  text-shadow:none !important;
}
.topstrip-free:hover{ filter:brightness(1.06); }

/* Chat sits flush directly under the sticky header (measured live as --rr-header-h),
   on desktop where it's a pinned sidebar. Mobile keeps the slide-in drawer as-is. */
@media (min-width:1100px){
  .chat-drawer{ top: var(--rr-header-h, 104px) !important; }
  main.page{ padding-top: 22px !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ COINFLIP — true 3D tumble (rotateX), depth + perspective
   ════════════════════════════════════════════════════════════════════════ */
.cf-modal-stage{ perspective: 850px; perspective-origin: 50% 44%; }
.cf-coin{ transform-style: preserve-3d !important; }
/* Both faces always rendered; backface-visibility shows only the one facing us. */
.cf-coin .cf-face{ display:block !important; backface-visibility:hidden; -webkit-backface-visibility:hidden; }
.cf-coin .cf-face-red{  transform: rotateX(0deg)   translateZ(17px); }
.cf-coin .cf-face-blue{ transform: rotateX(180deg) translateZ(17px); }
.cf-face-img{ width:100%; height:100%; display:block; border-radius:50%; -webkit-user-drag:none; user-select:none; pointer-events:none; -webkit-backface-visibility:hidden; backface-visibility:hidden; }
/* Subtle coin rim/thickness for a metal-disc feel. */
.cf-coin::before{
  content:""; position:absolute; inset:-2px; border-radius:50%;
  background:linear-gradient(180deg, rgba(255,255,255,.16), rgba(0,0,0,.35));
  transform: translateZ(-3px); z-index:-1;
}
/* The 3D landing angle is held by the flip animation's fill:forwards + the inline
   transform set in JS. The old non-important .cf-coin.settle{transform:scaleY(1)} is
   harmlessly overridden by both, so the winning face stays up. (Do NOT add an
   !important transform on .settle here — it would beat the animation and snap the
   coin back to the red face.) */
/* the landing glow ring is fine; keep the winner glow filters from earlier */
.cf-coin.landed-red  { filter: drop-shadow(0 0 30px rgba(239,68,68,.95)) drop-shadow(0 12px 30px rgba(0,0,0,.6)) !important; }
.cf-coin.landed-blue { filter: drop-shadow(0 0 30px rgba(59,130,246,.95)) drop-shadow(0 12px 30px rgba(0,0,0,.6)) !important; }

/* Clean toss arc on the wrapper — gentle rise/apex/fall + tiny settle (subtle scale). */
@keyframes coinThrow {
  0%   { transform: translateY(0)     scale(1);    }
  10%  { transform: translateY(5px)   scale(.96);  }   /* small dip */
  32%  { transform: translateY(-52px) scale(1.07); }   /* toss up */
  50%  { transform: translateY(-60px) scale(1.09); }   /* apex */
  72%  { transform: translateY(-36px) scale(1.05); }   /* falling */
  90%  { transform: translateY(0)     scale(1);    }   /* land */
  96%  { transform: translateY(-5px)  scale(1.02); }   /* tiny settle bounce */
  100% { transform: translateY(0)     scale(1);    }
}
@keyframes coinThrowBig {
  0%   { transform: translateY(0)      scale(1);    }
  10%  { transform: translateY(6px)    scale(.96);  }   /* small dip */
  32%  { transform: translateY(-100px) scale(1.40); }   /* toss up — big */
  50%  { transform: translateY(-110px) scale(1.40); }   /* apex — closest/biggest */
  72%  { transform: translateY(-60px)  scale(1.24); }   /* falling */
  90%  { transform: translateY(0)      scale(1);    }   /* land */
  96%  { transform: translateY(-6px)   scale(1.02); }   /* tiny settle bounce */
  100% { transform: translateY(0)      scale(1);    }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ ADMIN — Site Settings form
   ════════════════════════════════════════════════════════════════════════ */
.admin-settings-form{ background:var(--panel,#12131c); border:1px solid var(--ln,rgba(182,170,146,.16)); border-radius:16px; padding:18px; }
.admin-settings-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:14px; }
.adm-set{ display:flex; flex-direction:column; gap:6px; }
.adm-set > span{ font-size:.82rem; font-weight:700; color:var(--tx,#e7ecf5); }
.adm-set input[type=number], .adm-set input[type=text], .adm-set input[type=password], .adm-set input:not([type]){
  background:#0c0e16; border:1px solid var(--ln,rgba(182,170,146,.22)); color:#eef2f9;
  border-radius:10px; padding:10px 12px; font-size:.95rem; width:100%;
}
.adm-set input:focus{ outline:none; border-color:#eeb351; box-shadow:0 0 0 3px rgba(238,179,81,.18); }
.adm-set small{ color:var(--tx-dim,#9fb0c9); font-size:.72rem; }
.adm-set-check{ flex-direction:row; align-items:center; gap:10px; }
.adm-set-check input{ width:18px; height:18px; accent-color:#eeb351; }
.adm-set-check span{ font-size:.9rem; font-weight:700; }
.adm-set-divider{ margin:22px 0 12px; padding-top:14px; border-top:1px dashed var(--ln,rgba(182,170,146,.22)); font-weight:800; color:#f4cd84; letter-spacing:.02em; }
.admin-tool-hint code{ background:#0c0e16; border:1px solid var(--ln,rgba(182,170,146,.22)); padding:2px 6px; border-radius:6px; color:#f4cd84; font-size:.78rem; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ Feature toggles — chat OFF reclaims full width
   ════════════════════════════════════════════════════════════════════════ */
body.chat-off .chat-toggle,
body.chat-off .chat-drawer{ display:none !important; }
@media (min-width:1100px){
  body.chat-off main.page{ margin-left:auto !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ HOMEPAGE — spacing harmonization + polish (authoritative, wins cascade)
   Fixes the uneven gaps caused by two older CSS layers: now every major
   section is separated by a consistent 30px, and each section label hugs the
   content it introduces (16px), so the rhythm reads as intentional.
   ════════════════════════════════════════════════════════════════════════ */
.hm-promo{ margin:0 0 16px !important; }
.hm-originals-head{ margin:0 2px 16px !important; position:relative; padding-bottom:12px; border-bottom:1px solid var(--ln); align-items:flex-end !important; }
.hm-originals-head::after{ content:""; position:absolute; left:2px; bottom:-1px; width:56px; height:2px; background:linear-gradient(90deg,#eeb351,transparent); border-radius:2px; }

/* One consistent corner radius for every card on the page. */
.hm-promo-card, .hm-game, .hm-live-col{ border-radius:18px !important; }

/* Live strip: even padding + a touch more room before the "view all" link. */
.hm-live-col{ padding:20px !important; }
.hm-col-head{ margin-bottom:16px !important; }
.hm-top-all{ margin-top:12px !important; }

/* Promo + game cards: balanced inner padding so text isn't cramped or floating. */
.hm-promo-card{ padding:26px !important; }
.hm-game-info{ padding:18px !important; }

/* Tighten the gap between the two promo cards / game cards to match the
   section rhythm (was 18px — keep, it's consistent across all three grids). */
.hm-promo, .hm-games, .hm-live{ gap:18px !important; }

/* The promo "open games / players" pills container was renamed (.hm-chips →
   .hm-promo-chips) in the redesign but never re-styled — give it the row layout
   + spacing it lost, so the pills sit neatly below the CTA instead of cramped. */
.hm-promo-chips{ display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
/* Heading wraps its subtitle on narrow screens instead of overflowing. */
.hm-originals-head{ flex-wrap:wrap; }
.hm-originals-head h2{ line-height:1.05; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ FIXED HEADER + FLUSH CHAT (definitive)
   The body has overflow-x:hidden (needed to stop sideways scroll), and that
   silently breaks position:sticky — so the menu scrolled away instead of
   staying on top, and the fixed chat detached from it. Fix: anchor the whole
   header to the viewport with position:fixed (immune to ancestor overflow),
   pad the page content by the header height, and pin the chat flush beneath it.
   These are appended last so they win over the earlier conflicting rules.
   ════════════════════════════════════════════════════════════════════════ */
.topstrip{ position:fixed !important; top:0 !important; left:0 !important; right:0 !important; z-index:1001 !important; }
.topbar{   position:fixed !important; top:var(--topstrip-h) !important; left:0 !important; right:0 !important; z-index:1000 !important; }

/* Content clears the fixed header. Uses the JS-measured height when available
   (--rr-header-h), else the static strip+bar height — so there's no jump. */
body{ padding-top: var(--rr-header-h, calc(var(--topstrip-h) + var(--topbar-h))) !important; }

/* Chat sits flush right under the header on tablet + desktop (≥821px). Below
   that it's the mobile bottom-sheet, which keeps its own top:auto/bottom:0. */
@media (min-width:821px){
  .chat-drawer{
    top: var(--rr-header-h, calc(var(--topstrip-h) + var(--topbar-h))) !important;
    height: calc(100vh - var(--rr-header-h, calc(var(--topstrip-h) + var(--topbar-h)))) !important;
    bottom: 0 !important;
  }
}
@media (min-width:1100px){
  main.page{ padding-top: 18px !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ COINFLIP 3D FIX — `filter` on .cf-coin was flattening preserve-3d, which
   killed backface-visibility so BOTH faces showed (coin looked always-red).
   Move every shadow/glow onto .cf-coin-wrap (not a 3D context) so the flip
   shows the correct face again.
   ════════════════════════════════════════════════════════════════════════ */
.cf-coin{ filter:none !important; }
.cf-coin.landed-red, .cf-coin.landed-blue{ filter:none !important; }
.cf-coin-wrap{ filter: drop-shadow(0 10px 26px rgba(0,0,0,.55)); transition: filter .25s ease; }
.cf-coin-wrap.landed-red{  filter: drop-shadow(0 0 30px rgba(234,179,8,.9))  drop-shadow(0 10px 24px rgba(0,0,0,.6)); }
.cf-coin-wrap.landed-blue{ filter: drop-shadow(0 0 30px rgba(59,130,246,.9)) drop-shadow(0 10px 24px rgba(0,0,0,.6)); }

/* ════════════════════════════════════════════════════════════════════════
   ✦ CHAT — make reply/tip actions discoverable (were hover-only → looked gone)
   ════════════════════════════════════════════════════════════════════════ */
.chat-actions{ opacity:0 !important; }
.chat-message:hover .chat-actions{ opacity:1 !important; }
.chat-tip-btn:hover{ background:rgba(238,179,81,.18) !important; color:#f4cd84 !important; border-color:rgba(238,179,81,.4) !important; }
/* keep the level badge clearly visible */
.chat-msg-head .chat-lvl{ display:inline-flex !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ ADMIN — tabbed settings ("page by page") + Races top-10 prize grid
   ════════════════════════════════════════════════════════════════════════ */
.adm-tabs{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px; border-bottom:1px solid var(--rust-ln,rgba(182,170,146,.16)); padding-bottom:12px; }
.adm-tab{
  font-family:var(--fu); font-weight:700; font-size:13px; letter-spacing:.01em;
  color:var(--t2,#aeb6c8); background:rgba(255,255,255,.04); border:1px solid var(--rust-ln,rgba(182,170,146,.18));
  padding:9px 15px; border-radius:10px; cursor:pointer; transition:all .16s ease;
}
.adm-tab:hover{ color:#fff; background:rgba(255,255,255,.08); transform:translateY(-1px); }
.adm-tab.active{ color:#1a1206; background:linear-gradient(135deg,var(--gold2,#eeb351),#eeb351); border-color:transparent; box-shadow:0 5px 16px rgba(238,179,81,.32); }
.adm-panel{ display:none; animation:admPanelIn .26s ease; }
.adm-panel.active{ display:block; }
@keyframes admPanelIn{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:translateY(0); } }

.adm-race-prizes{ display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin:4px 0 12px; }
@media (max-width:900px){ .adm-race-prizes{ grid-template-columns:repeat(2,1fr); } }
.adm-race-prize{ display:flex; align-items:center; gap:8px; background:rgba(0,0,0,.28); border:1px solid var(--rust-ln,rgba(182,170,146,.16)); border-radius:10px; padding:7px 9px; }
.adm-race-prize:nth-child(1){ border-color:rgba(238,179,81,.55); box-shadow:inset 0 0 0 1px rgba(238,179,81,.18); }
.adm-race-prize:nth-child(2){ border-color:rgba(203,213,225,.45); }
.adm-race-prize:nth-child(3){ border-color:rgba(180,120,70,.5); }
.adm-race-rank{ font-family:var(--fu); font-weight:800; font-size:13px; color:var(--gold2,#eeb351); min-width:26px; }
.adm-race-prize input{ width:100%; min-height:38px; border:1px solid var(--rust-ln,rgba(182,170,146,.2)); border-radius:8px; background:rgba(0,0,0,.4); color:var(--t1,#eef2f9); padding:0 9px; font-size:13px; }
.adm-race-total{ font-family:var(--fu); font-weight:700; font-size:14px; color:var(--t1,#eef2f9); padding:10px 0; }
.adm-race-total b{ color:var(--gold2,#eeb351); font-size:17px; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ HOMEPAGE — animated game icons + polish
   ════════════════════════════════════════════════════════════════════════ */
.hm-game-art{
  position:relative; display:grid; place-items:center; overflow:hidden;
  background:
    radial-gradient(120px 90px at 50% 30%, rgba(238,179,81,.12), transparent 70%),
    linear-gradient(160deg, rgba(40,52,82,.55), rgba(12,16,28,.6));
}
.hm-game-art::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(closest-side, transparent 60%, rgba(0,0,0,.25));
}
.hm-ico{ width:78px; height:78px; position:relative; z-index:1; overflow:visible; filter:drop-shadow(0 6px 14px rgba(0,0,0,.45)); }
/* RUSTPOT icon = the real Rust map (rounded tile with a red Red-Zone rim). */
.hm-ico-rustpot-map{ border-radius:50%; object-fit:cover; display:block;
  border:2.5px solid rgba(255,72,72,.85); box-shadow:0 8px 20px rgba(0,0,0,.5), 0 0 14px rgba(255,45,45,.5);
  animation:rpIcoGlow 1.8s ease-in-out infinite; }
@keyframes rpIcoGlow{ 0%,100%{ box-shadow:0 8px 20px rgba(0,0,0,.5), 0 0 12px rgba(255,45,45,.45); } 50%{ box-shadow:0 8px 22px rgba(0,0,0,.55), 0 0 24px rgba(255,45,45,.85); } }
.hm-game:hover .hm-ico-rustpot-map{ animation:none; box-shadow:0 10px 26px rgba(0,0,0,.55), 0 0 30px rgba(255,45,45,.95); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-ico-rustpot-map{ animation:none; } }

/* ───────── 3D depth for the home game icons (CSS-only; inner SVG animations untouched) ───────── */
.hm-game-art{ perspective:760px; perspective-origin:50% 38%; }
.hm-ico-coin, .hm-ico-swords, .hm-ico-case, .hm-ico-casebattle{
  transform-style:preserve-3d;
  will-change:transform;
  animation:hmFloat3d 6.5s ease-in-out infinite;
  filter:drop-shadow(0 12px 18px rgba(0,0,0,.5)) drop-shadow(0 4px 6px rgba(0,0,0,.42));
}
/* RUSTPOT keeps its red Red-Zone glow AND gets the float (two animations, different properties). */
.hm-ico-rustpot-map{ animation:rpIcoGlow 1.8s ease-in-out infinite, hmFloat3d 6.5s ease-in-out infinite; }
@keyframes hmFloat3d{
  0%,100%{ transform:translateY(0) rotateX(0deg) rotateY(0deg); }
  50%{ transform:translateY(-7px) rotateX(8deg) rotateY(-9deg); }
}
/* Hover: freeze the float and hold a stronger 3D tilt toward the cursor. */
.hm-game:hover .hm-ico-coin, .hm-game:hover .hm-ico-swords, .hm-game:hover .hm-ico-case, .hm-game:hover .hm-ico-casebattle{
  animation:none; transform:translateY(-3px) rotateX(13deg) rotateY(-15deg) scale(1.06);
  transition:transform .26s cubic-bezier(.2,.8,.3,1);
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-ico-coin, .hm-ico-swords, .hm-ico-case, .hm-ico-casebattle{ animation:none !important; }
  .hm-ico-rustpot-map{ animation:none !important; }
}

/* ── Champions: crossed swords clash + travelling glint ── */
.hm-ico-swords .hm-sword{ transform-box:view-box; transform-origin:32px 32px; }
.hm-ico-swords .hm-sword-a{ animation:hmClashA 2.8s ease-in-out infinite; }
.hm-ico-swords .hm-sword-b{ animation:hmClashB 2.8s ease-in-out infinite; }
.hm-glint{ opacity:0; transform-box:fill-box; transform-origin:center; animation:hmGlint 2.8s ease-in-out infinite; }
@keyframes hmClashA{ 0%,16%{ transform:rotate(0deg);} 38%{ transform:rotate(-15deg) translateY(-1px);} 50%{ transform:rotate(7deg);} 58%{ transform:rotate(2deg);} 74%,100%{ transform:rotate(0deg);} }
@keyframes hmClashB{ 0%,16%{ transform:rotate(0deg);} 38%{ transform:rotate(15deg) translateY(-1px);} 50%{ transform:rotate(-7deg);} 58%{ transform:rotate(-2deg);} 74%,100%{ transform:rotate(0deg);} }
@keyframes hmGlint{ 0%,38%{ opacity:0; transform:scale(.4);} 50%{ opacity:1; transform:scale(1.5);} 64%,100%{ opacity:0; transform:scale(.4);} }
.hm-game:hover .hm-ico-swords .hm-sword-a{ animation-duration:1.1s; }
.hm-game:hover .hm-ico-swords .hm-sword-b{ animation-duration:1.1s; }

/* ── Rustflip: spinning/flipping gold coin ── */
.hm-ico-coin{ perspective:300px; }
.hm-coin-spin{ transform-origin:32px 32px; animation:hmCoinFlip 2.8s cubic-bezier(.45,.05,.55,.95) infinite; }
.hm-coin-disc{ fill:#eeb351; stroke:#b9831f; stroke-width:2; }
.hm-coin-inner{ fill:none; stroke:rgba(180,120,30,.5); stroke-width:1.5; stroke-dasharray:3 4; }
.hm-coin-bolt{ fill:#7a4f12; }
@keyframes hmCoinFlip{ 0%{ transform:scaleX(1);} 45%{ transform:scaleX(.08);} 50%{ transform:scaleX(.05);} 55%{ transform:scaleX(.08);} 100%{ transform:scaleX(1);} }
.hm-game:hover .hm-coin-spin{ animation-duration:1.2s; }

/* card lift + art glow on hover */
.hm-game{ transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.hm-game:hover{ transform:translateY(-4px); box-shadow:0 18px 44px rgba(0,0,0,.45); }
.hm-game:hover .hm-game-art{ background:
    radial-gradient(140px 100px at 50% 30%, rgba(238,179,81,.22), transparent 72%),
    linear-gradient(160deg, rgba(48,62,98,.7), rgba(12,16,28,.62)); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-coin-spin,.hm-sword-a,.hm-sword-b,.hm-glint{ animation:none !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ NAV — Games dropdown (rich), Rewards in-menu, profile-menu links
   ════════════════════════════════════════════════════════════════════════ */
.nav-games{ position:relative; display:inline-flex; }
.nav-games-btn{
  display:inline-flex; align-items:center; gap:7px; cursor:pointer;
  font-family:var(--fu); font-weight:700; font-size:14px; color:var(--t1);
  background:transparent; border:0; padding:8px 12px; border-radius:10px; transition:all .15s ease;
}
.nav-games-btn:hover{ background:rgba(255,255,255,.05); color:#fff; }
.nav-games-btn:focus-visible{ outline:none; }
.nav-games-btn.active{ color:var(--gold2); }
.nav-games-caret{ font-size:10px; transition:transform .2s ease; opacity:.7; }
.nav-games.open .nav-games-caret{ transform:rotate(180deg); }
.nav-games-menu{
  position:fixed; top:72px; left:16px; z-index:1200;
  padding:12px; display:flex; flex-direction:row; gap:12px;
  background:linear-gradient(180deg, #1a2336, #121826);
  border:1px solid rgba(182,170,146,.2); border-radius:18px;
  box-shadow:0 28px 70px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.05);
  animation:ngmIn .2s ease;
}
.nav-games-menu::before{ content:""; position:absolute; top:-6px; left:30px; width:12px; height:12px; background:#1a2336; border-left:1px solid rgba(182,170,146,.2); border-top:1px solid rgba(182,170,146,.2); transform:rotate(45deg); }
@keyframes ngmIn{ from{ opacity:0; transform:translateY(-8px); } to{ opacity:1; transform:translateY(0); } }

/* Large game cards (side by side) */
.ngm-card{ position:relative; width:176px; display:flex; flex-direction:column; overflow:hidden;
  border-radius:14px; text-decoration:none; border:1px solid rgba(182,170,146,.16);
  background:linear-gradient(170deg, rgba(26,34,56,.6), rgba(12,16,26,.7));
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.ngm-card:hover{ transform:translateY(-7px) scale(1.04); box-shadow:0 26px 56px rgba(0,0,0,.6); border-color:rgba(238,179,81,.45); }
#navGamesMenu .ngm-card:hover{ transform:translateY(-9px) scale(1.045) !important; box-shadow:0 28px 60px rgba(0,0,0,.62) !important; border-color:rgba(238,179,81,.5) !important; }
.ngm-card.active{ border-color:rgba(238,179,81,.45); }
.ngm-card::after{ content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.10) 48%,transparent 62%); transform:translateX(-130%); transition:transform .7s ease; }
.ngm-card:hover::after{ transform:translateX(130%); }
.ngm-art{ position:relative; height:96px; display:grid; place-items:center; overflow:hidden; }
.ngm-card-champions .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(124,77,178,.4), transparent 72%), linear-gradient(160deg, rgba(58,38,92,.6), rgba(12,16,28,.55)); }
.ngm-card-flip .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(238,179,81,.36), transparent 72%), linear-gradient(160deg, rgba(96,64,18,.55), rgba(12,16,28,.55)); }
/* build94 — Rustpot + Quick game cards were missing the art backdrop + hover glow the other
   cards have, so they looked frameless next to Champion/Rustflip. Add matching treatments. */
.ngm-card-rustpot .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(239,68,68,.36), transparent 72%), linear-gradient(160deg, rgba(92,26,26,.6), rgba(12,16,28,.55)); }
.ngm-card-quick   .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(74,222,128,.32), transparent 72%), linear-gradient(160deg, rgba(20,64,42,.6), rgba(12,16,28,.55)); }
.ngm-card-rustpot:hover{ border-color:rgba(248,113,113,.42) !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(248,113,113,.4) !important; }
.ngm-card-quick:hover{   border-color:rgba(74,222,128,.42)  !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(74,222,128,.4)  !important; }
.ngm-card-rustpot .ngm-bolts{ color:#ef4444; } .ngm-card-quick .ngm-bolts{ color:#f6c85a; }
.ngm-art-svg{ width:62px; height:62px; overflow:visible; filter:drop-shadow(0 5px 12px rgba(0,0,0,.45)); position:relative; z-index:1; }
.ngm-art-rustpot-map{ border-radius:50%; object-fit:cover; display:block;
  border:2px solid rgba(255,72,72,.7); box-shadow:0 0 13px rgba(255,45,45,.34); }
/* ── Monochrome UI icons: every icon in the nav menu (incl. game art) and on the
   profile page sits at the text colour (de-coloured). ── */
/* ── Remaining emoji icons (profile headers / history) sit at the text colour. ── */
.form-card > h4,
.hist-tab,
.hist-item-ico{ filter:grayscale(1) opacity(.92); }
.ngm-art-svg .hm-sword{ transform-origin:32px 32px; }
.ngm-meta{ padding:10px 12px 12px; }
.ngm-meta b{ display:block; color:#fff; font-size:14px; line-height:1.2; }
.ngm-meta small{ color:var(--t2); font-size:11px; }
.ngm-badge{ position:absolute; top:8px; right:8px; z-index:3; font-family:var(--fu); font-weight:800; font-size:9px; letter-spacing:.06em; padding:3px 7px; border-radius:6px; }
.ngm-badge.live{ background:linear-gradient(145deg,#ef4444,#b91c1c); color:#fff; }
.ngm-badge.hot{ background:linear-gradient(145deg,#eeb351,#b45309); color:#1a1206; }
.ngm-badge.new{ background:linear-gradient(145deg,#38bdf8,#0369a1); color:#fff; }
/* profile menu link rows pick up the same row look */
.profile-menu a{ display:flex; align-items:center; gap:9px; }

@media (max-width:1099px){
  /* In the collapsed/toggled nav panel, stack the cards full-width */
  .nav-games{ display:block; width:100%; }
  .nav-games-menu{ position:static; flex-direction:column; box-shadow:none; border:0; background:transparent; padding:6px 0 0; gap:8px; animation:none; }
  .nav-games-menu::before{ display:none; }
  .nav-games-btn{ width:100%; justify-content:flex-start; }
  .ngm-card{ width:100%; flex-direction:row; align-items:center; }
  .ngm-art{ width:84px; height:64px; flex:0 0 auto; }
  .ngm-art-svg{ width:44px; height:44px; }
  .ngm-badge{ position:static; margin-left:auto; }
  .ngm-meta{ padding:0 12px; }
}

/* ── Rewards: daily free coins card ── */
.rw-daily{ display:flex; align-items:center; gap:16px; padding:18px 20px; border-radius:16px;
  background:linear-gradient(135deg, rgba(238,179,81,.14), rgba(40,52,82,.4));
  border:1px solid rgba(238,179,81,.28); }
.rw-daily-ico{ font-size:34px; filter:drop-shadow(0 4px 10px rgba(0,0,0,.4)); animation:rwGift 2.8s ease-in-out infinite; }
@keyframes rwGift{ 0%,100%{ transform:rotate(-6deg) scale(1);} 50%{ transform:rotate(6deg) scale(1.08);} }
.rw-daily-body{ display:flex; flex-direction:column; gap:2px; }
.rw-daily-body b{ font-size:16px; color:#fff; }
.rw-daily-body span{ color:var(--t2); font-size:13px; }
.rw-daily-btn{ margin-left:auto; min-width:120px; }
.rw-daily-btn.claimed{ opacity:.6; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ CHAT TEXT + BALANCE → white (was gold/amber)
   ════════════════════════════════════════════════════════════════════════ */
.chat-message b, .chat-msg-head .chat-name, .chat-name{ color:#ffffff !important; }
.chat-name.cn-creator{ color:#f0abfc !important; }   /* creator name → pink (brand accent for creators) */
.chat-message p{ color:#a7adbe !important; }   /* user chat text → gray (was pure white) */
.chat-message-system p, .chat-message-system .chat-body p, .chat-message-system .chat-name{ color:#ffffff !important; }   /* system lines (rain/bonus/announce) stay bright */
/* keep role tints (these aren't yellow) */
.chat-name.cn-admin{ color:#fca5a5 !important; }
.chat-name.cn-mod{ color:#7dd3fc !important; }
/* balance number → white (coin icon stays gold) */
.balance-pill, .balance-pill-main, #balance{ color:#ffffff !important; }

/* Top strip removed → zero its height so the single menu sits flush at the very
   top and the body/chat offsets collapse to just the topbar height. */


/* Animated icons inside the Games dropdown (reuse homepage keyframes) */
.ngm-ico{ overflow:hidden; }
.ngm-svg{ width:30px; height:30px; display:block; }
.ngm-svg .hm-sword{ transform-origin:32px 32px; }   /* dropdown swords need the pivot (homepage scopes it) */

/* ── Admin: chat mute log ── */
.adm-mutes{ display:flex; flex-direction:column; gap:6px; }
.adm-mute-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 12px; border-radius:10px; background:rgba(0,0,0,.26); border:1px solid rgba(182,170,146,.14); font-size:13px; }
.adm-mute-row.active{ border-color:rgba(239,68,68,.4); background:rgba(239,68,68,.08); }
.adm-mute-act{ font-family:var(--fu); font-weight:800; font-size:10px; letter-spacing:.05em; color:#fca5a5; background:rgba(239,68,68,.16); padding:3px 7px; border-radius:6px; }
.adm-mute-act.un{ color:#86efac; background:rgba(34,197,94,.16); }
.adm-mute-user{ font-weight:700; color:#fff; }
.adm-mute-mins{ font-family:var(--fu); font-size:11px; color:var(--gold2,#f4cd84); }
.adm-mute-reason{ color:var(--t1,#e8eaf0); flex:1 1 200px; }
.adm-mute-reason em{ color:var(--t3,#6b7283); }
.adm-mute-by,.adm-mute-until{ color:var(--t2,#a7adbe); font-size:12px; margin-left:auto; }
.adm-mute-unmute-form{ margin:0; flex:0 0 auto; }
.adm-mute-unmute-btn{ appearance:none; border:1px solid rgba(134,239,172,.34); background:rgba(34,197,94,.12); color:#a7f3c0; border-radius:8px; padding:6px 10px; font:800 11px var(--fu); cursor:pointer; transition:background .15s,border-color .15s,transform .12s; }
.adm-mute-unmute-btn:hover{ background:rgba(34,197,94,.2); border-color:rgba(134,239,172,.55); transform:translateY(-1px); }

/* ════════════════════════════════════════════════════════════════════════
   ✦ HOMEPAGE — visual enrichment pass (premium depth, per-game theming)
   ════════════════════════════════════════════════════════════════════════ */
.home{ display:flex; flex-direction:column; gap:30px; }

/* Promo cards: deeper glass + animated aurora glow */
.hm-promo-card{ position:relative; overflow:hidden; border:1px solid rgba(182,170,146,.16);
  background:linear-gradient(160deg, rgba(28,38,64,.7), rgba(12,16,28,.72)); }
.hm-promo-glow{ position:absolute; width:340px; height:340px; border-radius:50%; top:-120px; right:-90px;
  background:radial-gradient(circle, rgba(56,189,248,.22), transparent 70%); filter:blur(8px);
  animation:hmAurora 9s ease-in-out infinite; pointer-events:none; }
.hm-promo-glow.gold{ background:radial-gradient(circle, rgba(238,179,81,.26), transparent 70%); }
@keyframes hmAurora{ 0%,100%{ transform:translate(0,0) scale(1); opacity:.85; } 50%{ transform:translate(-24px,18px) scale(1.12); opacity:1; } }

/* Game cards: per-game gradient art, sheen sweep on hover, premium border */
.hm-game{ position:relative; overflow:hidden; border:1px solid rgba(182,170,146,.16); border-radius:18px;
  background:linear-gradient(170deg, rgba(26,34,56,.6), rgba(12,16,26,.7)); isolation:isolate; }
.hm-game-art{ position:relative; min-height:150px; }
.hm-game-champions .hm-game-art{ background:
  radial-gradient(130px 100px at 50% 36%, rgba(124,77,178,.32), transparent 72%),
  linear-gradient(160deg, rgba(58,38,92,.55), rgba(12,16,28,.6)); }
.hm-game-flip .hm-game-art{ background:
  radial-gradient(130px 100px at 50% 36%, rgba(238,179,81,.3), transparent 72%),
  linear-gradient(160deg, rgba(96,64,18,.5), rgba(12,16,28,.6)); }
/* sheen sweep */
.hm-game::after{ content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(115deg, transparent 30%, rgba(255,255,255,.10) 45%, transparent 60%);
  transform:translateX(-120%); transition:transform .7s ease; }
.hm-game:hover::after{ transform:translateX(120%); }
.hm-game:hover{ transform:translateY(-5px); box-shadow:0 22px 50px rgba(0,0,0,.5); border-color:rgba(238,179,81,.3); }
.hm-game-badge{ z-index:3; }
.hm-game-info h3{ letter-spacing:.01em; }
.hm-game-go{ color:var(--gold2,#f4cd84); font-weight:700; }

/* Originals heading rhythm */
.hm-originals-head{ display:flex; align-items:baseline; gap:14px; margin-bottom:-6px; }
.hm-originals-head h2{ margin:0; font-family:var(--fu); font-size:22px; }
.hm-originals-head span{ color:var(--t2,#a7adbe); font-size:13px; }

/* Live strip: cards with subtle inner glow, animated feed rows */
.hm-live-col{ background:linear-gradient(170deg, rgba(26,34,56,.5), rgba(12,16,26,.62)); border:1px solid rgba(182,170,146,.14); border-radius:16px; }
.hm-feed-row{ transition:background .15s ease; animation:hmFeedIn .4s ease; }
.hm-feed-row:hover{ background:rgba(255,255,255,.04); }
@keyframes hmFeedIn{ from{ opacity:0; transform:translateX(-8px); } to{ opacity:1; transform:translateX(0); } }
.hm-feed-amt{ color:#86efac; font-weight:700; }
.hm-top-rank-1{ background:linear-gradient(145deg,#eeb351,#eeb351); color:#1a1206; }
.hm-top-rank-2{ background:linear-gradient(145deg,#cbd5e1,#94a3b8); color:#1a1206; }
.hm-top-rank-3{ background:linear-gradient(145deg,#c9803f,#a45a22); color:#fff; }

@media (max-width:760px){
  .home{ gap:22px; }
  .hm-game-art{ min-height:120px; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-promo-glow,.hm-feed-row{ animation:none !important; }
  .hm-game::after{ transition:none; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ GAME PAGES — visual enrichment (Champions / Rustflip / RPS)
   ════════════════════════════════════════════════════════════════════════ */

/* — Shared page headers: accent glow band behind the title — */
.rf-header, .page-head, .arena-header{ position:relative; }
.rf-header::before, .page-head::before{
  content:""; position:absolute; left:50%; top:-10px; transform:translateX(-50%);
  width:min(560px,90%); height:120px; pointer-events:none; z-index:-1;
  background:radial-gradient(60% 80% at 50% 0%, rgba(238,179,81,.16), transparent 70%);
  filter:blur(6px);
}
.rf-header .page-title, .page-head .page-title{
  background:linear-gradient(180deg,#ffffff,#cdd6e6); -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* ── Rustflip: premium side pickers + coins ── */
.cf-side-btn{ position:relative; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.cf-side-btn:hover{ transform:translateY(-3px); }
.cf-side-btn.active.cf-side-red{ box-shadow:0 0 0 1px rgba(239,68,68,.5), 0 14px 34px rgba(239,68,68,.28); }
.cf-side-btn.active.cf-side-blue{ box-shadow:0 0 0 1px rgba(56,140,248,.5), 0 14px 34px rgba(56,140,248,.28); }
.cf-side-coin{ position:relative; transition:transform .25s cubic-bezier(.2,1.3,.4,1); }
.cf-side-btn:hover .cf-side-coin{ transform:scale(1.08); }
.cf-vs-divider{ font-family:var(--fu); font-weight:800; color:var(--t2); letter-spacing:.08em; opacity:.7; }
.cf-create-btn{ position:relative; overflow:hidden; }
.cf-create-btn::after{ content:""; position:absolute; inset:0; background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.25) 45%,transparent 60%); transform:translateX(-130%); transition:transform .7s ease; }
.cf-create-btn:hover::after{ transform:translateX(130%); }

/* Coinflip open-game + history rows */
.cf-games-list .cf-game-row, .cf-game-card{ transition:transform .14s ease, border-color .14s ease, background .14s ease; }
.cf-games-list .cf-game-row:hover, .cf-game-card:hover{ transform:translateY(-2px); border-color:rgba(238,179,81,.3); }

/* ── Champions arena: ambient depth + richer pot pill ── */
.arena{ position:relative; }

.arena::before{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:0; border-radius:inherit;
  background:radial-gradient(420px 220px at 50% 0%, rgba(124,77,178,.14), transparent 70%);
}
.hero-pool-display{ position:relative; overflow:hidden; }
.hero-pool-amt{ text-shadow:0 0 18px rgba(238,179,81,.4); }
.hero-pool-display::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(115deg,transparent 40%,rgba(238,179,81,.14) 50%,transparent 60%);
  transform:translateX(-130%); animation:poolSheen 4.5s ease-in-out infinite;
}
@keyframes poolSheen{ 0%,70%{ transform:translateX(-130%);} 85%,100%{ transform:translateX(130%);} }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hero-pool-display::after, .cf-create-btn::after{ animation:none; transition:none; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ ACCOUNT PAGES — enrichment (Profile / Rewards / Leaderboard / Affiliate)
   ════════════════════════════════════════════════════════════════════════ */

/* page-hero gets the same soft glow band as the game headers */
.page-hero{ position:relative; }
.page-hero::before{
  content:""; position:absolute; left:50%; top:-6px; transform:translateX(-50%);
  width:min(620px,92%); height:130px; pointer-events:none; z-index:-1;
  background:radial-gradient(60% 80% at 50% 0%, rgba(238,179,81,.15), transparent 70%); filter:blur(6px);
}

/* ── Profile ── */
.level-card{ position:relative; overflow:hidden; }
.level-card::after{ content:""; position:absolute; top:-60px; right:-40px; width:220px; height:220px; border-radius:50%;
  background:radial-gradient(circle, rgba(238,179,81,.16), transparent 70%); pointer-events:none; animation:hmAurora 10s ease-in-out infinite; }
.level-fill{ background:linear-gradient(90deg,#eeb351,#eeb351) !important; box-shadow:0 0 12px rgba(238,179,81,.5); }
.pstat{ transition:transform .14s ease, border-color .14s ease, background .14s ease; }
.pstat:hover{ transform:translateY(-2px); border-color:rgba(238,179,81,.3); }
.pstat-balance{ background:linear-gradient(135deg, rgba(238,179,81,.14), rgba(40,52,82,.4)) !important; border-color:rgba(238,179,81,.3) !important; }
.profile-av-img, .rust-default-av{ transition:transform .2s ease, box-shadow .2s ease; }
.profile-av-img:hover, .rust-default-av:hover{ transform:scale(1.03); box-shadow:0 0 22px rgba(196,184,158,.45); }

/* ── Rewards: rakeback cards ── */
.rb-card{ position:relative; overflow:hidden; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.rb-card:hover{ transform:translateY(-4px); box-shadow:0 18px 40px rgba(0,0,0,.4); border-color:rgba(238,179,81,.3); }
.rb-card::before{ content:""; position:absolute; top:-50px; right:-30px; width:160px; height:160px; border-radius:50%;
  background:radial-gradient(circle, rgba(238,179,81,.14), transparent 70%); pointer-events:none; }

/* ── Leaderboard ── */
.lb-hero{ position:relative; overflow:hidden; }
.lb-hero::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(300px 160px at 50% 0%, rgba(238,179,81,.18), transparent 70%); }
.lb-hero-prize{ position:relative; }
/* Decorative 3D spinning coin in the leaderboard hero (reuses the hero-coin mechanics). */
.lb-hero-coin{ top:14px; right:20px; margin-top:0; width:82px; height:82px; }
@media (max-width:760px){ .lb-hero-coin{ display:none; } }
.lb-prize-slot.rank-1{ box-shadow:0 0 0 1px rgba(238,179,81,.45), 0 10px 26px rgba(238,179,81,.18); }
.lb-row{ transition:transform .14s ease, background .14s ease, border-color .14s ease; }
.lb-row:hover{ transform:translateX(3px); background:rgba(255,255,255,.04); }
.lb-rank-badge.rank-1{ background:linear-gradient(145deg,#eeb351,#eeb351) !important; color:#1a1206 !important; box-shadow:0 4px 14px rgba(238,179,81,.4); }
.lb-rank-badge.rank-2{ background:linear-gradient(145deg,#cbd5e1,#94a3b8) !important; color:#1a1206 !important; }
.lb-rank-badge.rank-3{ background:linear-gradient(145deg,#c9803f,#a45a22) !important; color:#fff !important; }

/* ── Affiliate ── */
.aff-panel{ position:relative; overflow:hidden; transition:border-color .16s ease, box-shadow .16s ease; }
.aff-panel:hover{ border-color:rgba(238,179,81,.25); }
.aff-partnership::before{ content:""; position:absolute; top:-70px; right:-50px; width:240px; height:240px; border-radius:50%;
  background:radial-gradient(circle, rgba(56,189,248,.16), transparent 70%); pointer-events:none; animation:hmAurora 11s ease-in-out infinite; }
.aff-metric{ transition:transform .14s ease; }
.aff-metric:hover{ transform:translateY(-2px); }
.aff-metric-n.g, .aff-metric-n{ text-shadow:0 0 14px rgba(238,179,81,.25); }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .level-card::after, .aff-partnership::before{ animation:none !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ MODALS — premium refinement (deposit/withdraw/tip/coinflip/rps/daily)
   ════════════════════════════════════════════════════════════════════════ */
/* deeper, more focused backdrop */
.app-modal__overlay, .cf-modal-overlay{
  background:rgba(6,7,14,.78) !important; -webkit-backdrop-filter:blur(9px); backdrop-filter:blur(9px);
}
/* gradient top-accent on every modal card */
.app-modal__card, .cf-modal-card{ position:relative; }
.app-modal__card::before, .cf-modal-card::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px; pointer-events:none; z-index:2;
  background:linear-gradient(90deg, transparent, var(--gold2,#f4cd84), transparent); opacity:.9;
  border-radius:18px 18px 0 0;
}
.app-modal__icon{ filter:drop-shadow(0 6px 16px rgba(238,179,81,.35)); animation:amIconPop .4s cubic-bezier(.2,1.4,.4,1); }
@keyframes amIconPop{ 0%{ transform:scale(.5); opacity:0; } 100%{ transform:scale(1); opacity:1; } }

/* modal buttons: sheen sweep on hover */
.app-modal__btn{ position:relative; overflow:hidden; transition:transform .14s ease, box-shadow .14s ease, filter .14s ease; }
.app-modal__btn::after{ content:""; position:absolute; inset:0; background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.28) 45%,transparent 60%); transform:translateX(-130%); transition:transform .6s ease; }
.app-modal__btn:hover::after{ transform:translateX(130%); }
.app-modal__btn:hover{ transform:translateY(-2px); }
.app-modal__amount{ text-shadow:0 0 22px rgba(238,179,81,.4); }
/* keep the close button pinned to the corner and above everything */
.app-modal__close, .cf-modal-close{ position:absolute !important; z-index:5 !important; transition:transform .14s ease, background .14s ease, color .14s ease; }
.app-modal__close:hover{ transform:rotate(90deg); }

/* select inside modals — clearer */
.modal-select{ transition:border-color .14s ease, box-shadow .14s ease; }
.modal-select:focus{ border-color:rgba(238,179,81,.5); box-shadow:0 0 0 3px rgba(238,179,81,.14); outline:none; }

.cf-modal-stage{ position:relative; }
.cf-modal-stage::before{ content:""; position:absolute; inset:0; pointer-events:none; border-radius:14px;
  background:radial-gradient(closest-side, transparent 55%, rgba(0,0,0,.35)); }
.cf-modal-stage > *{ position:relative; z-index:1; }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .app-modal__icon{ animation:none; }
  .app-modal__btn::after{ transition:none; }
}

/* ── Mobile: comfortable touch targets + rhythm ── */
@media (max-width:560px){
  .btn-primary, .app-modal__btn, .cf-create-btn, #joinBtn, #cfCreateBtn{ min-height:48px; }
  .home{ gap:18px; }
  .hm-promo-card{ padding:18px 16px; }
  .ngm-item{ padding:12px 14px; }
}

/* Cross-page "watch your game" toast — clickable, attention-grabbing */
.rr-toast-watch{ border:1px solid rgba(238,179,81,.5) !important; background:linear-gradient(135deg, rgba(238,179,81,.22), rgba(20,26,42,.96)) !important; }
.rr-toast-watch:hover{ filter:brightness(1.08); }
.rr-toast-watch .rr-toast-text{ font-weight:700; }

@media (max-width:1099px){ .ngm-art-rps.hm-rps3 .hm-rps-i{ font-size:20px; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-rps-i{ animation:none !important; } }

/* ── Win celebration: confetti burst (triggered by rrCelebrate on wins) ── */
.rr-confetti-host{ position:fixed; inset:0; pointer-events:none; z-index:9999; overflow:hidden; }
.rr-confetti{ position:absolute; top:-22px; border-radius:2px; opacity:0; will-change:transform,opacity;
  box-shadow:0 1px 3px rgba(0,0,0,.3);
  animation-name:rrConfettiFall; animation-timing-function:cubic-bezier(.3,.6,.5,1); animation-fill-mode:forwards; }
@keyframes rrConfettiFall{
  0%{ opacity:0; transform:translateY(-22px) translateX(0) rotate(0); }
  10%{ opacity:1; }
  100%{ opacity:0; transform:translateY(102vh) translateX(var(--drift,0)) rotate(calc(var(--rot,180deg) * 4)); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rr-confetti-host{ display:none !important; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ FIX BATCH — Play now, rewards spacing, Rustflip coin centering, game art
   ════════════════════════════════════════════════════════════════════════ */

/* "Play now" / any empty-state CTA → white & readable */
.empty-state-cta, .empty-state-cta:visited{ color:#fff !important; }
.empty-state-cta:hover{ color:#fff !important; filter:brightness(1.05); }

/* Homepage game card link ("Enter →" / "Play →") clearly visible */
.hm-game-go{ color:#f4cd84 !important; font-weight:800; }

/* Rewards promo card: breathing room above the button (was cramped) */
.hm-btn-rewards{ margin-top:16px !important; }
.hm-promo-rewards .hm-promo-body{ display:flex; flex-direction:column; align-items:flex-start; }

/* Rustflip result modal: coin stays dead-centre; result text overlays absolutely */
.cf-modal-stage{ position:relative; display:flex; align-items:center; justify-content:center; }
.cf-modal-stage .cf-coin-wrap{ margin-left:auto; margin-right:auto; }
.cf-modal-outcome{ text-align:center; }

/* Game art: a soft radial spotlight + bigger icon so it doesn't read as a flat square box */
.hm-game-art::after{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(closest-side at 50% 42%, rgba(255,255,255,.06), transparent 70%); }
.hm-game-art .hm-ico{ position:relative; z-index:1; }
.hm-ico-swords, .hm-ico-coin{ width:88px; height:88px; }
.ngm-art{ border-radius:13px; }
.ngm-art-svg{ width:70px; height:70px; }

/* ── Champions: centred "Time Left" timer (moved out of the side panels) ── */
.timer-section-center{ display:flex; flex-direction:column; align-items:center; gap:6px; margin:6px 0 14px; }
.timer-section-center .timer-label{ font-family:var(--fu); font-weight:800; font-size:12px; letter-spacing:.14em; color:var(--gold2,#f4cd84); }
.timer-section-center .timer-wrap{ position:relative; width:120px; height:120px; }
.timer-section-center .timer-inner{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.timer-section-center .timer-inner strong{ font-family:var(--fd); font-size:38px; line-height:1; color:#fff; }
.timer-section-center .timer-inner small{ font-size:11px; color:var(--t2); letter-spacing:.1em; }
.timer-section-center .timer-svg{ width:120px; height:120px; transform:rotate(-90deg); }

/* ── Rustflip flip polish: warmer, larger spin aura (on-brand gold) ── */
.cf-coin-wrap.flipping::before{
  width:230px !important; height:230px !important;
  background: radial-gradient(circle, rgba(238,179,81,.42), rgba(196,184,158,.16) 46%, transparent 72%) !important;
}

/* ── Rewards: claim buttons were reusing the full-width modal button (width:100%),
   which made the daily "Claim" button huge. Constrain them to compact inline pills. ── */
.rw-daily-btn{ width:auto !important; min-width:104px; min-height:0 !important; flex:0 0 auto;
  padding:11px 22px !important; font-size:14px !important; align-self:center; }
.rb-claim{ width:auto !important; min-height:0 !important; padding:9px 18px !important; font-size:13px !important; }
@media (max-width:560px){
  .rw-daily{ flex-wrap:wrap; }
  .rw-daily-btn{ margin-left:0 !important; width:100% !important; }
}

/* ════════════════════════════════════════════════════════════
   RPS PAGE — premium visual upgrade (v27)
   Bolder tactile move buttons w/ per-move color, dramatic VS
   stage, richer open/recent rows. Overrides the earlier plain rules.
   ════════════════════════════════════════════════════════════ */

/* Move picker — large tactile cards, per-move accent, springy emoji */
/* per-move colours */

/* VS stage — dramatic arena with depth + glow */
/* No idle bob — hands stay perfectly STILL until the reveal shake. The right hand's
   infinite bob used to outrank the left hand's shake (it's later in source + the right's
   shake is a 2-class selector), so during play() only the RIGHT hand appeared to shake
   and the hands also "shook" before any game. Removing the idle animation fixes both. */
/* (removed a duplicate .rps-shake + @keyframes rpsShake that overrode the infinite
   shake defined earlier — it made the LEFT hand shake once for 0.5s then freeze
   while the RIGHT hand kept shaking. Both hands now shake together continuously.) */

/* Open + recent rows — richer cards with hover lift + accent edge */


/* ── Champions centre timer: striking animated centerpiece (v27) ──
   The ring now actually depletes (dasharray fix above). Add an aura, gold
   progress, a gentle breathing number, and a clear red danger state. ── */
.timer-section-center .timer-wrap{ position:relative; }
.timer-section-center .timer-wrap::before{
  content:""; position:absolute; inset:-14px; border-radius:50%; z-index:0; pointer-events:none;
  background:radial-gradient(circle, rgba(238,179,81,.20), transparent 68%);
  animation:tmrAura 2.6s ease-in-out infinite;
}
@keyframes tmrAura{ 0%,100%{ opacity:.45; transform:scale(.94); } 50%{ opacity:.9; transform:scale(1.06); } }
.timer-section-center .timer-svg{ position:relative; z-index:1; }
.timer-section-center .timer-track{ stroke:rgba(255,255,255,.07); }
.timer-section-center .timer-prog{ stroke:var(--gold2,#fbbf24); filter:drop-shadow(0 0 9px rgba(238,179,81,.7)); }
.timer-section-center .timer-inner{ z-index:2; }
.timer-section-center .timer-inner strong{ animation:tmrBreath 2.6s ease-in-out infinite; }
@keyframes tmrBreath{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.05); } }

/* Lone/new champion (timer not started yet) — calm, dimmed, no breathing */
.timer-section-center .timer-inner strong.waiting{ color:var(--t2); animation:none; opacity:.75; }
.timer-section-center .timer-prog.waiting{ stroke:rgba(255,255,255,.12); filter:none; }

/* Danger (<30s) — red, faster pulse, hot aura */
.timer-section-center .timer-inner strong.danger{ color:#fca5a5 !important; animation:tmrBreathFast .7s ease-in-out infinite; }
.timer-section-center .timer-prog.danger{ stroke:#ef4444 !important; filter:drop-shadow(0 0 5px rgba(239,68,68,.55)) !important; }
@keyframes tmrBreathFast{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.11); } }
.timer-section-center:has(.timer-prog.danger) .timer-wrap::before{
  background:radial-gradient(circle, rgba(239,68,68,.30), transparent 66%); animation-duration:.8s;
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .timer-section-center .timer-wrap::before, .timer-section-center .timer-inner strong{ animation:none !important; }
}

/* Build marker read by the cache-detector in the footer stamp. Must match the
   "want" value in partials.php. Bump both together on every release. */


/* ============================================================
   AUTHORITATIVE MOBILE CHAT — last in the cascade so it wins.
   Fixes "chat won't close on mobile": the drawer is a bottom
   sheet that fully slides away when .closed, and the ✕ button
   is always visible + tappable. Desktop (>=1100px) keeps its
   permanent sidebar (handled earlier, untouched here).
   ============================================================ */
@media (max-width:1099px){
  #chatClose{ display:grid !important; place-items:center; width:34px !important; height:34px !important;
    font-size:18px !important; line-height:1 !important; background:rgba(255,255,255,.08) !important;
    color:#fff !important; border-radius:9px !important; cursor:pointer; flex:0 0 auto; }
  .chat-toggle{ display:inline-flex !important; }
}
@media (max-width:820px){
  .chat-drawer{ position:fixed !important; left:0 !important; right:0 !important; bottom:0 !important;
    top:auto !important; width:100% !important; height:auto !important; max-height:78vh !important;
    border-radius:18px 18px 0 0 !important; z-index:360 !important;
    transition:transform .28s ease !important; }
  .chat-drawer.closed{ transform:translateY(110%) !important; pointer-events:none !important; }
  .chat-drawer:not(.closed){ transform:translateY(0) !important; pointer-events:auto !important; }
}

/* ============================================================
   SITE FOOTER
   ============================================================ */
.site-footer{ margin-top:24px; border-top:1px solid var(--ln);
  background:linear-gradient(180deg, rgba(12,14,22,.32), rgba(11,13,20,.48));
  padding:32px clamp(16px,4vw,48px); }
.ftr-inner{ max-width:1100px; margin:0 auto; display:flex; flex-wrap:wrap; gap:26px;
  align-items:flex-start; justify-content:space-between; }
.ftr-brand{ max-width:330px; }
.ftr-logo{ font-family:var(--fd); font-size:24px; letter-spacing:.05em; color:var(--t1); }
.ftr-logo b{ color:var(--gold2); }
.ftr-tag{ color:var(--t3); font-size:13px; margin-top:8px; line-height:1.4; }
.ftr-links{ display:flex; flex-direction:column; gap:9px; }
.ftr-links a{ color:var(--t2); font-size:13px; text-decoration:none; transition:color .15s; }
.ftr-links a:hover{ color:var(--gold2); }
.ftr-meta{ max-width:340px; }
.ftr-18{ display:inline-block; font-weight:800; font-size:12px; color:#fca5a5;
  border:1px solid rgba(239,68,68,.5); border-radius:6px; padding:2px 8px; margin-bottom:8px; }
.ftr-meta p{ color:var(--t3); font-size:12px; line-height:1.55; margin:0 0 6px; }
.ftr-copy{ opacity:.7; }
@media (max-width:820px){
  .site-footer{ margin-bottom:84px; }   /* clear the floating chat pill */
  .ftr-inner{ flex-direction:column; gap:20px; }
}

/* Daily-reward nav pill while on cooldown — reads clearly as a countdown timer. */
#dailyFreeNav.on-cooldown{ font-variant-numeric:tabular-nums; letter-spacing:.02em; opacity:.85; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ RUSTFLIP COIN — DEFINITIVE FIX for the recurring "coin drifted to the left"
   (coin drifts to the left). Last in the cascade + #id specificity so it
   beats every earlier layered rule. Two causes addressed:
     1) The modal overlay was slightly translucent, so the two-column page
        behind it (create panel on the left, open-games list on the right)
        bled through and made the centred coin LOOK shoved left.
        → overlay is now FULLY opaque.
     2) Past sessions stacked grid + flex + `.cf-modal-stage > *{position:
        relative}` rules that fought each other. → force ONE centred grid
        cell and stack every child in it. The coin is centred with
        justify-self (NOT transform), so the flip animation's translateY/
        scale is left completely intact.
   ════════════════════════════════════════════════════════════════════════ */
#cfModal .cf-modal-overlay{
  /* Was solid #04040c (pure black) — this ID-specificity rule beat every .cf-modal-overlay
     override, which is why the replay backdrop stayed black. Now matches the WORKING
     quickgame backdrop so the site shows behind. */
  background:radial-gradient(120% 90% at 50% 34%, rgba(12,9,28,.20), rgba(6,8,14,.42) 72%) !important;
  backdrop-filter:blur(4px) saturate(.92) brightness(.86) !important;
  -webkit-backdrop-filter:blur(4px) saturate(.92) brightness(.86) !important;
}
#cfModal .cf-modal-stage{
  display:grid !important;
  grid-template:minmax(0,1fr) / minmax(0,1fr) !important;
  place-items:center !important;
  position:relative !important;
}
#cfModal .cf-modal-stage > *{ grid-area:1 / 1 !important; }
#cfModal .cf-particles{ position:absolute !important; inset:0 !important; width:auto !important; margin:0 !important; }
#cfModal .cf-coin-wrap{
  position:relative !important;
  justify-self:center !important; align-self:center !important;
  margin:0 !important; left:auto !important; right:auto !important;
  top:auto !important; bottom:auto !important; inset:auto !important;
  transform-origin:50% 50% !important;
}
#cfModal .cf-modal-result{
  position:absolute !important; left:50% !important; right:auto !important;
  top:auto !important; bottom:16px !important; margin:0 !important;
  justify-self:auto !important; align-self:auto !important;
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ RUSTFLIP win-moment polish — SAFE: only the wrapper glow + the result
   badge. Never touches .cf-coin's transform/filter (which would flatten the
   3D flip), so the flip animation is completely unaffected.
   ════════════════════════════════════════════════════════════════════════ */
#cfModal .cf-coin-wrap.landed-red{  animation: cfWinPulseRed  1.3s ease-out 1; }
#cfModal .cf-coin-wrap.landed-blue{ animation: cfWinPulseBlue 1.3s ease-out 1; }
@keyframes cfWinPulseRed{
  0%{   filter:drop-shadow(0 0 8px rgba(239,68,68,.4)); }
  35%{  filter:drop-shadow(0 0 58px rgba(239,68,68,1)) drop-shadow(0 0 20px rgba(255,255,255,.55)); }
  100%{ filter:drop-shadow(0 0 30px rgba(234,179,8,.9)) drop-shadow(0 10px 24px rgba(0,0,0,.6)); }
}
@keyframes cfWinPulseBlue{
  0%{   filter:drop-shadow(0 0 8px rgba(59,130,246,.4)); }
  35%{  filter:drop-shadow(0 0 58px rgba(59,130,246,1)) drop-shadow(0 0 20px rgba(255,255,255,.55)); }
  100%{ filter:drop-shadow(0 0 30px rgba(59,130,246,.9)) drop-shadow(0 10px 24px rgba(0,0,0,.6)); }
}
/* Result badge pops in with a slight overshoot (stays centred via translateX). */
#cfModal .cf-modal-result.show-red, #cfModal .cf-modal-result.show-blue{
  animation: cfBadgePop .5s cubic-bezier(.2,1.3,.4,1) 1;
}
@keyframes cfBadgePop{
  0%{   opacity:0; transform:translateX(-50%) scale(.6); }
  60%{  opacity:1; transform:translateX(-50%) scale(1.12); }
  100%{ opacity:1; transform:translateX(-50%) scale(1); }
}
#cfModal .cf-modal-player.winner{ box-shadow:0 0 28px rgba(245,197,66,.32) !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ GAMES MENU — more premium / exciting (last in cascade so it wins).
   Desktop sizing is scoped to >=1100px so the mobile column is untouched.
   ════════════════════════════════════════════════════════════════════════ */
@media (min-width:1100px){
  #navGamesMenu{
    padding:14px !important; gap:14px !important;
    background:linear-gradient(180deg,#1c2740,#0f1422) !important;
    border:1px solid rgba(150,170,210,.24) !important;
    box-shadow:0 30px 80px rgba(0,0,0,.65), 0 0 0 1px rgba(245,197,66,.07), inset 0 1px 0 rgba(255,255,255,.06) !important;
  }
  #navGamesMenu .ngm-card{ width:210px !important; border-radius:16px !important;
    background:linear-gradient(170deg, rgba(30,40,66,.7), rgba(12,16,26,.78)) !important; }
  #navGamesMenu .ngm-art{ height:126px !important; }
  #navGamesMenu .ngm-art-svg{ width:82px !important; height:82px !important; }
  #navGamesMenu .ngm-card:hover{ transform:translateY(-9px) scale(1.045) !important; box-shadow:0 28px 60px rgba(0,0,0,.66) !important; }
  #navGamesMenu .ngm-meta{ padding:12px 14px 15px !important; }
  #navGamesMenu .ngm-meta b{ font-size:15px !important; }
}
/* Soft glow behind each game's art for depth (all sizes, decorative). */
#navGamesMenu .ngm-art::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(72% 62% at 50% 40%, rgba(255,255,255,.10), transparent 70%); }
/* Hover CTA arrow after the game name. */
#navGamesMenu .ngm-meta b::after{ content:" →"; color:var(--gold2); opacity:0; margin-left:0; transition:opacity .18s ease, margin-left .18s ease; }
#navGamesMenu .ngm-card:hover .ngm-meta b::after{ opacity:1; margin-left:5px; }
/* Pulse the LIVE badge to draw the eye. */
#navGamesMenu .ngm-badge.live{ animation:ngmLivePulse 1.7s ease-in-out infinite; }
@keyframes ngmLivePulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(239,68,68,.55); } 70%{ box-shadow:0 0 0 6px rgba(239,68,68,0); } }

/* ── Chat header sound toggle (replaces the old "Live Chat" label) ── */
.chat-sound-toggle{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:10px; border:1px solid rgba(150,170,210,.18); background:rgba(255,255,255,.05); color:#fff; cursor:pointer; font-size:17px; line-height:1; padding:0; transition:background .15s ease, border-color .15s ease, transform .08s ease; }
.chat-sound-toggle:hover{ background:rgba(255,255,255,.10); border-color:rgba(245,197,66,.45); }
.chat-sound-toggle:active{ transform:scale(.9); }
.chat-sound-toggle.is-off{ opacity:.55; }
.chat-sound-toggle .snd-ico{ pointer-events:none; }

/* ── Games button icon: animate on hover AND while the menu is open ──
   The Games control is a <button class="nav-games-btn">, so the .nav a:hover
   icon rules never matched it. This makes the controller icon react. */
.nav-games-btn:hover .nav-ico,
.nav-games-btn[aria-expanded="true"] .nav-ico{ animation:ngmIcoWiggle .6s ease; filter:drop-shadow(0 6px 12px rgba(182,170,146,.55)); }
.nav-games-btn[aria-expanded="true"] .nav-games-caret{ transform:rotate(180deg); }
.nav-games-caret{ transition:transform .25s ease; display:inline-block; }
@keyframes ngmIcoWiggle{
  0%{ transform:scale(1) rotate(0); }
  25%{ transform:scale(1.28) rotate(-11deg); }
  50%{ transform:scale(1.22) rotate(9deg); }
  75%{ transform:scale(1.24) rotate(-5deg); }
  100%{ transform:scale(1.16) rotate(0); }
}

/* ── Games button: professional gamepad icon (replaces the 🎮 emoji) ── */
.nav-ico-games{ display:inline-flex; align-items:center; justify-content:center; color:var(--gold2,#f5c542); }
.nav-ico-games svg{ width:21px; height:21px; display:block; }
/* The gamepad keeps its gold on hover. Every other rail icon inherits its colour from the
   link, so they shift together; this one had its own rule flipping to white, which made it
   the only icon in the row that changed hue. The wiggle animation above is the hover cue. */
.nav-games-btn:hover .nav-ico-games{ color:var(--gold2,#f5c542); }
.nav-games-btn[aria-expanded="true"] .nav-ico-games{ color:var(--gold,#facc15); }

/* ── Dropdown Champions swords: animate the clash like the homepage card ──
   The dropdown swords are plain <g rotate(±45)> with no class, so nothing moved
   them. Drive the rotation in CSS (base ±45° baked into the keyframes). */
.ngm-card-champions .ngm-art-svg > g{ transform-box:view-box; transform-origin:32px 32px; }
.ngm-card-champions .ngm-art-svg > g:nth-of-type(1){ animation:ngmSwordA 2.6s ease-in-out infinite; }
.ngm-card-champions .ngm-art-svg > g:nth-of-type(2){ animation:ngmSwordB 2.6s ease-in-out infinite; }
.ngm-card-champions:hover .ngm-art-svg > g{ animation-duration:1.25s; }
@keyframes ngmSwordA{ 0%,18%{ transform:rotate(45deg);} 40%{ transform:rotate(29deg);} 50%{ transform:rotate(55deg);} 60%{ transform:rotate(48deg);} 74%,100%{ transform:rotate(45deg);} }
@keyframes ngmSwordB{ 0%,18%{ transform:rotate(-45deg);} 40%{ transform:rotate(-29deg);} 50%{ transform:rotate(-55deg);} 60%{ transform:rotate(-48deg);} 74%,100%{ transform:rotate(-45deg);} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .ngm-card-champions .ngm-art-svg > g, .nav-games-btn .nav-ico-games{ animation:none !important; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ SITE-WIDE ANIMATION / RICHNESS PASS
   Safe: entrance keyframes only set opacity:0 inside `from`, so if an
   animation never runs (reduced-motion / old browser) the element still
   shows. Hover/active rules fire only on interaction.
   ════════════════════════════════════════════════════════════════════════ */
@keyframes rrFadeUp{ from{ opacity:0; transform:translateY(11px); } to{ opacity:1; transform:translateY(0); } }
@keyframes rrPopIn{ 0%{ opacity:0; transform:scale(.965); } 100%{ opacity:1; transform:scale(1); } }

/* Major blocks gently rise in on load. */
.home .hm-promo{ animation:rrFadeUp .5s cubic-bezier(.2,.7,.3,1) both; }
.home .hm-originals-head{ animation:rrFadeUp .5s cubic-bezier(.2,.7,.3,1) .07s both; }
.home .hm-games{ animation:rrFadeUp .55s cubic-bezier(.2,.7,.3,1) .12s both; }
/* .section-block entrance is handled by scroll-reveal (JS-gated, below). */
.page-hero{ animation:rrPopIn .5s cubic-bezier(.2,.8,.3,1) both; }

/* Game cards rise with a small stagger. */
.hm-games .hm-game{ animation:rrFadeUp .5s cubic-bezier(.2,.7,.3,1) both; }
.hm-games .hm-game:nth-child(2){ animation-delay:.06s; }
.hm-games .hm-game:nth-child(3){ animation-delay:.12s; }
.hm-games .hm-game:nth-child(4){ animation-delay:.18s; }

/* Buttons: tactile press + hover (interaction only). */
.btn, .btn-primary, .hm-btn, .adm-btn, .cf-create-btn, .app-modal__btn{ transition:transform .12s ease, box-shadow .18s ease, filter .18s ease; }
.btn:active, .btn-primary:active, .hm-btn:active, .adm-btn:active, .cf-create-btn:active, .app-modal__btn:active{ transform:translateY(1px) scale(.985); }
.btn-primary:hover, .hm-btn-primary:hover, .cf-create-btn:hover{ filter:brightness(1.06); box-shadow:0 10px 26px rgba(245,197,66,.22); }

/* Primary/gold CTAs get a soft, slow glow so they feel alive. */
@keyframes rrCtaGlow{ 0%,100%{ box-shadow:0 8px 22px rgba(245,197,66,.16); } 50%{ box-shadow:0 10px 30px rgba(245,197,66,.32); } }
.hm-btn-primary, .hm-btn-gold{ animation:rrCtaGlow 3.2s ease-in-out infinite; }

/* Card hover lifts (hover only). */
.hm-promo-card, .lb-card, .wallet-row{ transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.hm-promo-card:hover{ transform:translateY(-3px); box-shadow:0 20px 46px rgba(0,0,0,.5); }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .home .hm-promo,.home .hm-originals-head,.home .hm-games,.section-block,.page-hero,
  .hm-games .hm-game,.hm-btn-primary,.hm-btn-gold{ animation:none !important; }
}

/* ── Rewards: daily + promo side by side ── */
.rw-daily-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:760px){ .rw-daily-row{ grid-template-columns:1fr; } }
.rw-promo-input{ display:flex; gap:8px; align-items:center; flex:0 0 auto; }
.rw-promo-input input{ width:150px; max-width:44vw; padding:10px 12px; border-radius:10px; border:1px solid rgba(150,170,210,.22); background:rgba(0,0,0,.28); color:#fff; font-weight:700; letter-spacing:.05em; text-transform:uppercase; font-size:13px; }
.rw-promo-input input::placeholder{ color:rgba(180,190,210,.5); letter-spacing:.06em; }
.rw-promo-input input:focus{ outline:none; border-color:rgba(245,197,66,.55); box-shadow:0 0 0 3px rgba(245,197,66,.12); }

/* ── Rewards: withdrawal playthrough (wager requirement) bar ── */
.rw-wager{ margin-top:14px; padding:14px 16px; border-radius:14px; background:rgba(182,170,146,.06); border:1px solid rgba(150,170,210,.16); }
.rw-wager-head{ display:flex; justify-content:space-between; align-items:center; font-size:13px; color:var(--t2,#aab3c5); font-weight:600; }
.rw-wager-head b{ color:#fff; font-variant-numeric:tabular-nums; }
.rw-wager-head b.met{ color:#3ddc84; }
.rw-wager-bar{ height:9px; border-radius:6px; background:rgba(0,0,0,.35); overflow:hidden; margin:8px 0 6px; }
.rw-wager-bar span{ display:block; height:100%; width:0; border-radius:6px; background:linear-gradient(90deg,var(--gold2,#f5c542),var(--gold,#facc15)); transition:width .5s ease; }
.rw-wager-bar span.met{ background:linear-gradient(90deg,#2fb46a,#3ddc84); }
.rw-wager small{ color:var(--t3,#8a93a6); font-size:12px; }

/* ── Scroll-reveal (only active once JS adds .reveal-ready — safe if JS is off) ── */
.reveal-ready{ opacity:0; transform:translateY(18px); transition:opacity .55s ease, transform .55s cubic-bezier(.2,.7,.3,1); will-change:opacity, transform; }
.reveal-ready.in-view{ opacity:1; transform:none; }

/* ════════════════════════════════════════════════════════════════
   PROFESSIONAL POLISH (v51) — additive, zero-conflict refinements.
   Each rule sets a property nothing else in the sheet sets, so this
   block is safe to remove wholesale with no side effects.
   ════════════════════════════════════════════════════════════════ */

/* 1) Branded text selection (was browser-default blue) */
::selection   { background: rgba(238,179,81,.30); color:#fff; text-shadow:none; }
::-moz-selection{ background: rgba(238,179,81,.30); color:#fff; text-shadow:none; }

/* 2) Tabular figures so money/stat digits align like a real cashier UI */
.balance-pill, .balance-pill-main, .app-modal__amount, .chat-rain-pot,
.rb-amount, .hm-top-wagered, .hm-chip, .rw-wager-head, .wd-wager-head{
  font-variant-numeric: tabular-nums; font-feature-settings:"tnum" 1;
}

/* 3) Keyboard focus ring (accessibility + polish; mouse clicks unaffected) */
a:focus-visible, button:focus-visible{
  outline: 2px solid rgba(238,179,81,.6); outline-offset: 2px;
}

/* 4) Smooth in-page scrolling (respects reduced-motion) */
html{ scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ html{ scroll-behavior:auto; } }

/* ── Muzzle flash (Champions) — brief burst at the barrel on each shot (v55) ── */
.muzzle-flash{
  width:52px; height:21px; pointer-events:none; z-index:7; border-radius:50%; opacity:0;
  transform-origin:center center; will-change:transform,opacity;
  background:radial-gradient(ellipse at 22% 50%, #ffffff 0%, #ffe9a8 24%, #ffb73a 52%, rgba(255,140,30,.55) 74%, transparent 86%);
  filter:drop-shadow(0 0 9px rgba(255,180,70,.9));
  animation:muzzlePop .18s ease-out forwards;
}
.muzzle-flash::before{       /* 4-point star burst behind the core */
  content:""; position:absolute; left:50%; top:50%; width:155%; height:155%; transform:translate(-50%,-50%);
  pointer-events:none;
  background:
    radial-gradient(ellipse 55% 7% at 50% 50%, rgba(255,238,172,.92), transparent 72%),
    radial-gradient(ellipse 7% 55% at 50% 50%, rgba(255,226,152,.6), transparent 72%);
}
.muzzle-flash.mf-rocket{ width:68px; height:29px;
  background:radial-gradient(ellipse at 22% 50%, #ffffff 0%, #fff0c0 22%, #ff9a3a 50%, rgba(255,90,30,.6) 74%, transparent 88%);
  filter:drop-shadow(0 0 13px rgba(255,140,50,.95)); }
/* ── Light gun smoke at the muzzle (rises + fades; subtle so it never clutters) ── */
.gun-smoke{
  width:32px; height:32px; margin:-16px 0 0 -16px; pointer-events:none; z-index:6; border-radius:50%; opacity:0;
  background:radial-gradient(circle at 50% 50%, rgba(196,196,200,.5), rgba(150,150,156,.24) 52%, transparent 74%);
  filter:blur(2px); animation:gunSmoke .64s ease-out forwards;
}
@keyframes gunSmoke{
  0%  { opacity:0;   transform:scale(.4) translateY(0); }
  30% { opacity:.5;  transform:scale(1) translateY(-6px); }
  100%{ opacity:0;   transform:scale(1.65) translateY(-20px); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .gun-smoke{ animation:none; opacity:0; } }
/* ── Thrown spinning axe projectile (real skin) ── */
.axe-proj{ width:64px; height:64px; margin:-32px 0 0 -32px; z-index:11; }
.axe-proj img{ width:100%; height:100%; display:block; filter:drop-shadow(0 3px 9px rgba(0,0,0,.62)); }
.axe-proj.spinning img{ animation:axeSpin .4s linear infinite; }
@keyframes axeSpin{ from{ transform:rotate(0deg);} to{ transform:rotate(360deg);} }
/* The thrown axe spins for EVERYONE, reduce-motion included — a hatchet that flies without rotating
   looks broken ("dümdüz atıyor"). This is game feedback, not decoration, so it is not switched off. */
/* ── Arena ambiance: a few slow warm embers drifting up behind the action ── */
.arena-ambiance{ position:absolute; inset:0; z-index:3; pointer-events:none; overflow:hidden; border-radius:26px; }
/* Decorative 3D depth floor — a perspective grid receding into the back of the arena.
   Sits at z-index:1 (behind the fighters at z-index:2), is a separate background sibling
   (never an ancestor of the fighter cards), so combat bullet/impact coordinates are unaffected. */
.arena-floor3d{ position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden; border-radius:24px; perspective:520px; perspective-origin:50% 36%; }
.arena-floor3d-grid{ position:absolute; left:-30%; right:-30%; bottom:-12%; height:64%; transform:rotateX(64deg); transform-origin:50% 100%; background-image:repeating-linear-gradient(0deg, transparent 0 38px, rgba(150,128,222,.16) 38px 40px), repeating-linear-gradient(90deg, transparent 0 38px, rgba(150,128,222,.14) 38px 40px); -webkit-mask-image:linear-gradient(to top, #000 8%, rgba(0,0,0,.4) 45%, transparent 86%); mask-image:linear-gradient(to top, #000 8%, rgba(0,0,0,.4) 45%, transparent 86%); }
.arena-ambiance i{
  position:absolute; bottom:-12px; width:4px; height:4px; border-radius:50%; opacity:0;
  background:radial-gradient(circle, rgba(255,198,122,.9), rgba(245,140,50,.5) 60%, transparent 76%);
  filter:blur(.4px); animation:arenaEmber linear infinite; will-change:transform,opacity;
}
.arena-ambiance i:nth-child(1){ left:12%; animation-duration:9s;   animation-delay:0s;   }
.arena-ambiance i:nth-child(2){ left:26%; animation-duration:11s;  animation-delay:2.4s; width:3px; height:3px; }
.arena-ambiance i:nth-child(3){ left:44%; animation-duration:8s;   animation-delay:1.1s; }
.arena-ambiance i:nth-child(4){ left:58%; animation-duration:12s;  animation-delay:3.6s; width:5px; height:5px; }
.arena-ambiance i:nth-child(5){ left:71%; animation-duration:10s;  animation-delay:.7s;  }
.arena-ambiance i:nth-child(6){ left:84%; animation-duration:9.5s; animation-delay:2s;   width:3px; height:3px; }
.arena-ambiance i:nth-child(7){ left:92%; animation-duration:11.5s;animation-delay:4.2s; }
@keyframes arenaEmber{
  0%   { transform:translateY(0) translateX(0);      opacity:0;   }
  14%  { opacity:.5; }
  72%  { opacity:.34; }
  100% { transform:translateY(-360px) translateX(16px); opacity:0; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .arena-ambiance i{ animation:none; opacity:0; } }
@keyframes muzzlePop{
  0%   { opacity:0; transform:translate(-50%,-50%) rotate(var(--a,0deg)) scaleX(.30) scaleY(.55); }
  28%  { opacity:1; transform:translate(-50%,-50%) rotate(var(--a,0deg)) scaleX(1.18) scaleY(1.06); }
  100% { opacity:0; transform:translate(-50%,-50%) rotate(var(--a,0deg)) scaleX(1.45) scaleY(.48); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .muzzle-flash{ animation-duration:.01s; } }

/* ── Bullet tracer streak (Champions, v56) — barrel→target, quick fade ── */
.shot-tracer{
  height:2.5px; pointer-events:none; z-index:6; opacity:0; border-radius:2px;
  transform-origin:0 50%; transform:rotate(var(--a,0deg));
  background:linear-gradient(90deg, rgba(255,210,110,0) 0%, rgba(255,213,120,.35) 55%, rgba(255,244,200,.95) 100%);
  filter:drop-shadow(0 0 5px rgba(255,200,90,.6));
  animation:tracerZip .30s ease-out forwards;
}
.shot-tracer.tracer-rocket{ height:4px;
  background:linear-gradient(90deg, rgba(255,150,70,0) 0%, rgba(255,150,70,.42) 55%, rgba(255,232,170,.95) 100%);
  filter:drop-shadow(0 0 9px rgba(255,140,50,.75)); }
@keyframes tracerZip{ 0%{opacity:0} 16%{opacity:1} 100%{opacity:0} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .shot-tracer{ display:none; } }

/* ── HP "lost health" ghost trail (Champions, v56) ── */
.health-ghost{
  position:absolute; top:0; left:0; height:100%; width:100%; z-index:0; pointer-events:none;
  border-radius:999px;
  background:linear-gradient(90deg, rgba(255,72,72,.9), rgba(255,140,140,.62));
  box-shadow:0 0 8px rgba(255,70,70,.45);
}
.health-fill-right ~ .health-ghost, .health-ghost{ /* keep behind the fill (fill comes later in DOM) */ }

/* ── Stronger impact burst (Champions, v56) — bigger, brighter sparks + rings ── */
.impact-fx .impact-spark{
  width:5px; height:20px;
  background:linear-gradient(180deg,#ffffff 0%,#ffd884 42%,#f97316 100%);
  box-shadow:0 0 7px rgba(255,175,65,.75);
}
.impact-fx .impact-ring{ border-color:rgba(255,184,72,.9); border-width:3.5px; }
@keyframes sFly{ 0%{opacity:1;transform:rotate(var(--a,0deg)) translateY(-4px) scale(1.15)} 100%{opacity:0;transform:rotate(var(--a,0deg)) translateY(-56px) scale(.2)} }

/* ── Coinflip landing ring burst (v57) ── */
.cf-land-burst{
  position:absolute; left:50%; top:50%; width:150px; height:150px; margin:-75px 0 0 -75px;
  border-radius:50%; pointer-events:none; z-index:-1; opacity:0; border:3px solid currentColor;
  animation:cfLandBurst .72s ease-out forwards;
}
.cf-land-red{ color:rgba(239,68,68,.9); }
.cf-land-blue{ color:rgba(59,130,246,.9); }
@keyframes cfLandBurst{ 0%{opacity:.85;transform:scale(.5)} 100%{opacity:0;transform:scale(2.1)} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .cf-land-burst{ display:none; } }


/* Winner hand: golden glow + a confident pulse (overrides the basic float). */

/* Loser hand: deflate, desaturate and sink — clearly defeated. */

/* ── Mobile: chat opens FULLSCREEN (they don't play while chatting) — v58 ── */
@media (max-width: 820px){
  .chat-drawer{ z-index:1200 !important; }
  .chat-panel{ width:100vw !important; left:0 !important; right:0 !important; max-width:none !important; }
  .chat-drawer:not(.closed) .chat-panel{ transform:translateX(0) !important; }
  .chat-drawer.closed .chat-panel{ transform:translateX(100%) !important; }
}

.cf-list-head{ display:flex !important; flex-direction:row !important; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.cf-list-head .cf-create-open-btn{ margin-left:auto; align-self:flex-start; }
.cf-list-head-l{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.cf-create-open-btn{ flex:0 0 auto; white-space:nowrap; text-decoration:none; }
.cf-recent-sep{ display:flex; align-items:center; gap:12px; margin:24px 4px 12px; color:var(--t3,#7a8398); font-size:.76rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.cf-recent-sep span{ flex:0 0 auto; }
.cf-recent-sep::before, .cf-recent-sep::after{ content:""; flex:1; height:1px; background:var(--ln,rgba(182,170,146,.16)); }

/* ── Index game cards: flickering lightning around the art (v60) ── */
.hm-bolts{ position:absolute; inset:0; pointer-events:none; overflow:hidden; z-index:0; }
.hm-bolts svg{ width:100%; height:100%; display:block; }
.hm-bolt{ fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; opacity:0;
  filter:drop-shadow(0 0 3px currentColor) drop-shadow(0 0 7px currentColor); }
.hm-game-champions .hm-bolts{ color:#f6c85a; }
.hm-game-flip       .hm-bolts{ color:#f0912e; }
.hm-bolt{ animation: hmBolt 3.6s steps(1,end) infinite; }
.hm-bolt.b2{ animation-delay:.6s; } .hm-bolt.b3{ animation-delay:1.2s; }
.hm-bolt.b4{ animation-delay:1.8s; } .hm-bolt.b5{ animation-delay:2.4s; } .hm-bolt.b6{ animation-delay:3s; }
@keyframes hmBolt{ 0%,100%{opacity:0} 2%{opacity:.95} 5%{opacity:.18} 7%{opacity:.8} 10%{opacity:0} }
.hm-game:hover .hm-bolt{ animation-duration:1.7s; }
/* charged glow aura on the card (themed), strongest on hover */
.hm-game-champions{ --hm-glow:rgba(246,200,90,.5); }
.hm-game-flip{ --hm-glow:rgba(240,145,46,.5); }
.hm-game:hover{ box-shadow:0 22px 50px rgba(0,0,0,.45), 0 0 26px var(--hm-glow,transparent); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-bolt{ animation:none; opacity:.22; } }

/* ── Games menu cards: subtle themed lightning + themed hover glow (v61) ── */
.ngm-bolts{ position:absolute; inset:0; pointer-events:none; overflow:hidden; z-index:0; }
.ngm-bolts svg{ width:100%; height:100%; display:block; }
.ngm-bolt{ fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; opacity:0;
  filter:drop-shadow(0 0 2px currentColor) drop-shadow(0 0 5px currentColor); }
.ngm-card-champions .ngm-bolts{ color:#f6c85a; }
.ngm-card-flip       .ngm-bolts{ color:#f0912e; }
.ngm-bolt{ animation: ngmBolt 4s steps(1,end) infinite; }
.ngm-bolt.nb2{ animation-delay:.9s; } .ngm-bolt.nb3{ animation-delay:1.8s; } .ngm-bolt.nb4{ animation-delay:2.7s; }
@keyframes ngmBolt{ 0%,100%{opacity:0} 3%{opacity:.72} 6%{opacity:.12} 8%{opacity:.55} 11%{opacity:0} }
.ngm-card:hover .ngm-bolt{ animation-duration:2s; }
.ngm-card-champions:hover{ border-color:rgba(246,200,90,.42) !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(246,200,90,.4) !important; }
.ngm-card-flip:hover{ border-color:rgba(238,179,81,.42) !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(238,179,81,.4) !important; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .ngm-bolt{ animation:none; opacity:.18; } }

/* ════════════════════════════════════════════════════════════════
   v62 — ROTATING electric ring around the icon (replaces flicker bolts)
   ════════════════════════════════════════════════════════════════ */
@keyframes hmSpin{ to{ transform: rotate(360deg); } }

/* Index cards */
.hm-bolts{ top:50% !important; left:50% !important; right:auto !important; bottom:auto !important;
  width:152px; height:152px; margin:-76px 0 0 -76px; border-radius:50%; overflow:visible !important; }
.hm-bolts svg{ display:none !important; }
.hm-bolts::before, .hm-bolts::after{ content:""; position:absolute; border-radius:50%;
  background: conic-gradient(from 0deg, transparent 0 14deg, currentColor 24deg, transparent 44deg 112deg, currentColor 130deg, transparent 152deg 236deg, currentColor 252deg, transparent 274deg);
  -webkit-mask: radial-gradient(closest-side, transparent 63%, #000 67%, #000 90%, transparent 96%);
          mask: radial-gradient(closest-side, transparent 63%, #000 67%, #000 90%, transparent 96%);
  filter: drop-shadow(0 0 6px currentColor); }
.hm-bolts::before{ inset:0; opacity:.9; animation: hmSpin 5.5s linear infinite; }
.hm-bolts::after{ inset:18px; opacity:.5; animation: hmSpin 8.5s linear infinite reverse; }
.hm-game:hover .hm-bolts::before{ animation-duration:3s; }
.hm-game:hover .hm-bolts::after{ animation-duration:5s; }

/* Games-menu cards (smaller) */
.ngm-bolts{ top:50% !important; left:50% !important; right:auto !important; bottom:auto !important;
  width:90px; height:90px; margin:-45px 0 0 -45px; border-radius:50%; overflow:visible !important; }
.ngm-bolts svg{ display:none !important; }
.ngm-bolts::before, .ngm-bolts::after{ content:""; position:absolute; border-radius:50%;
  background: conic-gradient(from 0deg, transparent 0 14deg, currentColor 24deg, transparent 44deg 112deg, currentColor 130deg, transparent 152deg 236deg, currentColor 252deg, transparent 274deg);
  -webkit-mask: radial-gradient(closest-side, transparent 60%, #000 65%, #000 90%, transparent 96%);
          mask: radial-gradient(closest-side, transparent 60%, #000 65%, #000 90%, transparent 96%);
  filter: drop-shadow(0 0 4px currentColor); }
.ngm-bolts::before{ inset:0; opacity:.85; animation: hmSpin 5s linear infinite; }
.ngm-bolts::after{ inset:12px; opacity:.45; animation: hmSpin 7.5s linear infinite reverse; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-bolts::before,.hm-bolts::after,.ngm-bolts::before,.ngm-bolts::after{ animation:none; } }

/* ── v62 — recent games render as 1-col horizontal rows, like open games ── */
.cf-history-list{ grid-template-columns:1fr !important; }
.cf-history-list .cf-game-row{ opacity:1 !important; }

/* v63 fix — Steam sign-in button sits compact top-right in the list header (override its width:100%) */
.cf-list-head .steam-btn.cf-create-open-btn{ width:auto; min-height:40px; padding:0 18px; font-size:14px; }

/* v63 fix — smaller rotating rings on mobile so they fit the compact art (no clipping) */
@media (max-width:1099px){
  .ngm-bolts{ width:56px; height:56px; margin:-28px 0 0 -28px; }
  .ngm-bolts::after{ inset:9px; }
  .hm-bolts{ width:120px; height:120px; margin:-60px 0 0 -60px; }
  .hm-bolts::after{ inset:14px; }
}

/* ════════════════════════════════════════════════════════════════════════
   v66 — MOBILE USABILITY PASS (touch-friendly; does not affect desktop)
   ════════════════════════════════════════════════════════════════════════ */

/* Kill the grey tap-flash on custom buttons; stop text auto-resizing on rotate */
*{ -webkit-tap-highlight-color: transparent; }
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; }

/* Tall modals must scroll inside the viewport instead of overflowing
   (landscape phones / short windows). Coin toss stays inside its own stage,
   so this never clips the animation. */
.cf-modal-card, .app-modal__card{
  max-height:92vh; overflow-y:auto; -webkit-overflow-scrolling:touch;
}
/* Scrolling inside chat or a modal shouldn't drag the page behind it */
.chat-body, .chat-drawer, .cf-modal-card, .app-modal__card, .cf-create-card{
  overscroll-behavior: contain;
}

/* Touch devices (any size): the two biggest mobile annoyances */
@media (hover: none) and (pointer: coarse){
  /* iOS Safari zooms in when focusing an input < 16px — force 16px to stop it */
  input, select, textarea{ font-size:16px !important; }

  /* Comfortable tap targets (~44px guideline) */
  .btn-primary, .btn-ghost, .cf-create-open-btn, .cf-create-btn, .cf-join-btn,
  .steam-btn, .app-modal__btn, .nav-link, .chat-send, .chat-toggle,
  .cf-cancel-btn, .rps-cancel-btn, .daily-claim-btn, .qa{
    min-height:44px;
  }
  /* Square-ish close buttons get a real tappable area */
  .cf-modal-close, .cf-create-close, .chat-close{
    min-width:44px; min-height:44px;
  }
}

/* Phone layout: a touch more breathing room on tappable game rows */
@media (max-width:560px){
  .cf-game-row{ padding-top:13px; padding-bottom:13px; }
}

/* v67 — Create-a-game modal: center the wager block directly under the RED/BLUE picker
   (the modal has no .cf-create-grid wrapper, so the grid-centering rules didn't apply). */
.cf-create-card{ text-align:center; }
.cf-create-card .cf-side-picker{ justify-content:center; }
.cf-create-card .cf-wager-section{ display:flex; flex-direction:column; align-items:center; width:100%; }
.cf-create-card .cf-wager-label{ align-self:center; text-align:center; }
.cf-create-card .stake-input-wrap,
.cf-create-card .quick-amounts,
.cf-create-card .cf-create-btn{ margin-left:auto !important; margin-right:auto !important; }

/* The Join button's off-centre bug is fixed in partials.php's last head style block, NOT here.
   It has to outrank market.css (which sets the button's width via .cf-skin-primary) and market.css
   loads after this file, so a rule here cannot win. Do not add a second fix at this level: an
   earlier attempt did, and the two interacted — `max-width:none` on the section made the auto
   margins a no-op while the cap moved to the children, which works but reads as two competing
   fixes for one bug. One fix, in the one place that can win. */

/* v148 — RED/BLUE side cards forced to EQUAL width so the picker is symmetric.
   They previously sized to their text ("Left Side" vs "Right Side"), making the
   two cards different widths and the whole picker look off-centre. */
.cf-create-card .cf-side-btn{ flex:0 1 134px; width:134px; min-width:0; box-sizing:border-box; }
.cf-create-card .cf-side-btn small{ white-space:nowrap; }

/* ════════════════════════════════════════════════════════════════════════
   v67 — FAST ORBITING SPARKS around the icon (replaces the rotating ring).
   Each pseudo-element is a tiny center dot whose box-shadow paints several
   glowing spark dots around a radius; spinning the element whips them around
   the icon, with a quick flicker for an electric feel. currentColor = themed.
   ════════════════════════════════════════════════════════════════════════ */
.hm-bolts::before, .hm-bolts::after,
.ngm-bolts::before, .ngm-bolts::after{
  background:none !important; -webkit-mask:none !important; mask:none !important;
  inset:auto !important; top:50% !important; left:50% !important;
  width:3px !important; height:3px !important; margin:-1.5px !important;
  border-radius:50%; filter:none !important;
}
.hm-bolts::before{
  box-shadow:58px 0 4px 1px currentColor, 29px 50px 4px 1px currentColor, -29px 50px 4px 1px currentColor,
             -58px 0 4px 1px currentColor, -29px -50px 4px 1px currentColor, 29px -50px 4px 1px currentColor;
  animation: sparkSpin 1.5s linear infinite, sparkFlick .28s steps(2,end) infinite !important;
}
.hm-bolts::after{
  box-shadow:44px 0 3px 1px currentColor, 0 44px 3px 1px currentColor, -44px 0 3px 1px currentColor,
             0 -44px 3px 1px currentColor, 31px 31px 3px 1px currentColor, -31px -31px 3px 1px currentColor;
  animation: sparkSpinR 1.05s linear infinite, sparkFlick .22s steps(2,end) infinite !important; opacity:.9;
}
.ngm-bolts::before{
  box-shadow:34px 0 3px 1px currentColor, 17px 29px 3px 1px currentColor, -17px 29px 3px 1px currentColor,
             -34px 0 3px 1px currentColor, -17px -29px 3px 1px currentColor, 17px -29px 3px 1px currentColor;
  animation: sparkSpin 1.4s linear infinite !important;
}
.ngm-bolts::after{
  box-shadow:24px 0 2px 1px currentColor, 0 24px 2px 1px currentColor, -24px 0 2px 1px currentColor, 0 -24px 2px 1px currentColor;
  animation: sparkSpinR 1s linear infinite !important; opacity:.8;
}
@keyframes sparkSpin{ to{ transform: rotate(360deg); } }
@keyframes sparkSpinR{ to{ transform: rotate(-360deg); } }
@keyframes sparkFlick{ 0%{ opacity:1; } 100%{ opacity:.55; } }
.hm-game:hover .hm-bolts::before{ animation-duration:.9s, .28s !important; }
.hm-game:hover .hm-bolts::after{ animation-duration:.7s, .22s !important; }
/* Compact mobile menu: drop the orbit (tiny icon box would clip it) */
@media (max-width:1099px){ .ngm-bolts{ display:none !important; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-bolts::before,.hm-bolts::after,.ngm-bolts::before,.ngm-bolts::after{ animation:none !important; }
}

/* v68 — Admin: labeled form fields (so each input says what to type) + Delete button */
.adm-field{ display:flex; flex-direction:column; gap:3px; }
.adm-field > span{ font-size:11px; color:var(--t3,#8a93a6); text-transform:uppercase; letter-spacing:.04em; }
.adm-field-btn{ align-self:flex-end; }
.adm-sub{ font-weight:400; color:var(--t3,#8a93a6); font-size:12px; }
.adm-btn-danger{ border-color:rgba(239,68,68,.5) !important; color:#fca5a5 !important; }
.adm-btn-danger:hover{ background:rgba(239,68,68,.16) !important; color:#fecaca !important; }
.admin-tool-row{ flex-wrap:wrap; align-items:flex-end; }

/* ════════════════════════════════════════════════════════════════════════
   RUSTPOT — battle-royale jackpot page
   ════════════════════════════════════════════════════════════════════════ */
.rp-header{ text-align:center; margin:6px auto 22px; max-width:720px; }
.rp-grid{ display:grid; grid-template-columns:1fr 320px; gap:18px; align-items:start; max-width:1180px; margin:0 auto; }
@media (max-width:900px){ .rp-grid{ grid-template-columns:1fr; } }
/* New single-column stage — map is the hero; join is a button→modal; lists sit below. */
.rp-stage{ max-width:760px; margin:0 auto; display:flex; flex-direction:column; gap:16px; }
/* Two-column layout: the LEFT column hugs the (slightly smaller) map exactly — no side gaps —
   and the side column (join → in pot → recent) takes the reclaimed width and grows. */
.rp-stage.rp-stage-2col{ display:grid; grid-template-columns:580px minmax(0,1fr); gap:20px; align-items:start; max-width:1180px; }
.rp-stage-2col .rp-map-col{ min-width:0; }
.rp-stage-2col .rp-side-col{ display:flex; flex-direction:column; gap:16px; min-width:0; }
.rp-stage-2col .rp-map{ max-width:100%; }   /* fill the 540px column exactly — no left/right gaps */
@media (max-width:1080px){
  .rp-stage.rp-stage-2col{ grid-template-columns:490px minmax(0,1fr); gap:16px; }
}
@media (max-width:860px){
  .rp-stage.rp-stage-2col{ grid-template-columns:1fr; }
  .rp-stage-2col .rp-map{ max-width:520px; margin-left:auto; margin-right:auto; }
}
.rp-join-bar{ display:flex; justify-content:center; }
.rp-join-open{ font-size:17px; font-weight:800; padding:14px 40px; border-radius:14px; cursor:pointer; letter-spacing:.01em;
  display:inline-flex; align-items:center; gap:10px; text-decoration:none; box-shadow:0 10px 26px rgba(0,0,0,.32); }
a.rp-join-open{ color:#10131b; }

/* IN POT card header carries the Join button in its top-right corner (compact) */
.rp-inpot-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.rp-inpot-head h3{ margin:0; }
.rp-skin-inline{ flex:0 0 auto; padding:8px 14px !important; font-size:12.5px !important; font-weight:800 !important; border-radius:10px !important; letter-spacing:0 !important; white-space:nowrap; box-shadow:0 6px 16px rgba(0,0,0,.28) !important; display:inline-flex; align-items:center; gap:7px; }
.rp-skin-inline svg{ width:15px; height:15px; }
a.rp-skin-inline{ text-decoration:none; }

.rp-map-card{ padding:16px; }
.rp-topline{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.rp-lab{ color:var(--t3,#7d8699); font-size:11px; text-transform:uppercase; letter-spacing:.12em; }
.rp-pot{ font-size:32px; font-weight:900; line-height:1.05; display:inline-flex; align-items:center; gap:6px; color:var(--gold2,#f3b53f); }
.rp-pot .coin-ico{ margin-right:0 !important; width:.82em !important; height:.82em !important; filter:drop-shadow(0 2px 6px rgba(243,168,62,.55)); align-self:center; }
.rp-pot #rpPot{ background:linear-gradient(180deg,#ffe694,#f3a83e); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f3b53f; filter:drop-shadow(0 2px 8px rgba(243,168,62,.4)); }
.rp-count{ font-size:24px; font-weight:800; color:#cdd6e6; line-height:1.1; }
.rp-count.rp-danger{ color:#f87171; animation:rpPulse .7s ease-in-out infinite; }
/* #4 — each 3-2-1 final-countdown number punches in */
.rp-count.pop{ color:#ff5b5b; animation:rpCountPop .5s cubic-bezier(.2,1.5,.5,1); }
@keyframes rpCountPop{ 0%{ transform:scale(2.1); opacity:0; text-shadow:0 0 22px rgba(255,80,80,.8); } 45%{ transform:scale(.86); opacity:1; } 100%{ transform:scale(1); opacity:1; text-shadow:0 0 10px rgba(255,80,80,.45); } }
@keyframes rpPulse{ 0%,100%{ opacity:1; } 50%{ opacity:.55; } }
.rp-status-wrap{ flex:1; text-align:center; }
.rp-status{ display:inline-block; font-size:13px; font-weight:700; color:#cbd5e6; padding:5px 12px; border-radius:999px;
            background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); }

.rp-map{ position:relative; width:100%; max-width:700px; margin:0 auto; aspect-ratio:1/1; border-radius:14px; overflow:hidden;
  background:#0e1622 url('/assets/rustpot-map.jpg?v=156') center/cover no-repeat;
  border:1px solid rgba(255,255,255,.07); }
.rp-map::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:2;
  background:radial-gradient(125% 125% at 50% 50%, transparent 56%, rgba(6,10,18,.58) 100%); }  /* subtle vignette so avatars pop */
.rp-map::after{ content:""; display:block; padding-bottom:100%; }   /* square-height FALLBACK: guarantees the map is never 0-height even if aspect-ratio fails to resolve (redzone/drops need a sized map) */

.rp-empty{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); max-width:80%; text-align:center;
  color:#eaf0fb; font-size:14px; font-weight:600; line-height:1.45; z-index:4; padding:14px 18px; border-radius:12px;
  background:rgba(8,12,20,.72); border:1px solid rgba(255,255,255,.12); backdrop-filter:blur(3px); box-shadow:0 8px 22px rgba(0,0,0,.45); }

@property --gcx { syntax:"<length-percentage>"; inherits:false; initial-value:50%; }
@property --gcy { syntax:"<length-percentage>"; inherits:false; initial-value:50%; }
@property --gr  { syntax:"<length-percentage>"; inherits:false; initial-value:0%; }   /* % of the (square) map → matches the ring; avatars & ring share one coordinate space */
.rp-gas{ position:absolute; inset:0; pointer-events:none; z-index:5; transition:--gr .45s cubic-bezier(.33,.7,.3,1), --gcx .45s cubic-bezier(.33,.7,.3,1), --gcy .45s cubic-bezier(.33,.7,.3,1), opacity .4s; opacity:0;
  --gcx:50%; --gcy:50%; --gr:320px;
  background:none; }   /* no red fill — only the .rp-ring LINE is shown */
.rp-gas.on{ opacity:1; }
.rp-ring{ position:absolute; border:3px solid rgba(255,70,70,.95); border-radius:50%; z-index:6; pointer-events:none;
  box-shadow:0 0 13px rgba(255,45,45,.82), inset 0 0 15px rgba(255,45,45,.52); transition:left .42s cubic-bezier(.33,.7,.3,1), top .42s cubic-bezier(.33,.7,.3,1), width .42s cubic-bezier(.33,.7,.3,1), height .42s cubic-bezier(.33,.7,.3,1), opacity .25s; opacity:0; transform:translate(-50%,-50%); will-change:transform; }
.rp-ring.on{ opacity:1; }
/* the big spread shadow above is the DANGER ZONE — everything OUTSIDE the safe circle is tinted red and
   clipped to the map (the map is overflow:hidden), so as the ring shrinks the red closes visibly inward.
   This makes the gradual close unmistakable instead of a thin line that's easy to miss. */

.rp-pl{ position:absolute; transform:translate(-50%,-50%); z-index:7; text-align:center; transition:opacity .4s, filter .4s, transform .3s; }
.rp-av{ width:30px; height:30px; border-radius:50%; border:2px solid var(--gold2,#f3b53f); object-fit:cover; display:block;   /* fixed size — avatars NEVER shrink, no matter how many join */
        box-shadow:0 3px 10px rgba(0,0,0,.6); background:#10131b; }
.rp-av-fb{ display:flex; align-items:center; justify-content:center; font-weight:800; font-size:13px; color:#10131b; }
.rp-nm{ font-size:11px; margin-top:3px; color:#fff; text-shadow:0 1px 3px #000; white-space:nowrap; font-weight:700; }
.rp-bt{ font-size:10px; color:var(--gold2,#f3b53f); text-shadow:0 1px 2px #000; }
.rp-pl.dead{ opacity:.32 !important; filter:grayscale(1) brightness(.4) !important; }
/* Elimination = explode and vanish (battle-royale). */
.rp-pl.pop{ animation:rpPop .42s cubic-bezier(.3,.05,.4,1) forwards; pointer-events:none; z-index:9; }
@keyframes rpPop{ 0%{ transform:translate(-50%,-50%) scale(1); opacity:1; } 38%{ transform:translate(-50%,-50%) scale(1.55); opacity:1; filter:brightness(1.9); } 100%{ transform:translate(-50%,-50%) scale(.08); opacity:0; } }
.rp-boom{ position:absolute; width:48px; height:48px; transform:translate(-50%,-50%); border-radius:50%; pointer-events:none; z-index:8;
  background:radial-gradient(circle, rgba(255,242,180,.95) 0%, rgba(255,120,40,.72) 34%, rgba(255,50,30,.28) 60%, transparent 72%);
  filter:drop-shadow(0 0 12px rgba(255,110,40,.7)); animation:rpBoom .62s ease-out forwards; }
@keyframes rpBoom{ 0%{ opacity:0; transform:translate(-50%,-50%) scale(.2);} 16%{ opacity:1; transform:translate(-50%,-50%) scale(1);} 100%{ opacity:0; transform:translate(-50%,-50%) scale(2.6);} }
.rp-pl.win{ z-index:10; }
.rp-pl.win .rp-av,.rp-pl.win .rp-av-fb{ border-color:#ffd166; box-shadow:0 0 18px rgba(255,205,80,.9), 0 3px 10px rgba(0,0,0,.6); animation:rpWinPulse 1s ease-in-out infinite alternate; }
@keyframes rpWinPulse{ 0%{ transform:scale(1.02);} 100%{ transform:scale(1.16);} }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rp-pl.pop{ animation:none; opacity:0; } .rp-boom{ animation:none; opacity:0; } .rp-pl.win .rp-av,.rp-pl.win .rp-av-fb{ animation:none; } }
.rp-pl.dead .rp-av{ border-color:#555; position:relative; }
.rp-pl.dead .rp-av::after{ content:"☠"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:16px; color:#fff; text-shadow:0 0 6px #000; }
.rp-pl.caught .rp-av{ animation:rpCaught .6s ease; }
@keyframes rpCaught{ 0%{ box-shadow:0 0 0 0 rgba(224,57,43,.9);} 100%{ box-shadow:0 0 0 28px rgba(224,57,43,0);} }
@keyframes rpScare{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,60,50,0); filter:brightness(1); } 22%,66%{ box-shadow:0 0 0 11px rgba(255,64,52,.8); filter:brightness(1.75) drop-shadow(0 0 7px #ff3c32); } 44%{ box-shadow:0 0 0 3px rgba(255,64,52,.35); filter:brightness(1.1); } }
.rp-pl.scare .rp-av{ animation:rpScare .62s ease; }
.rp-pl.win{ z-index:9; }
.rp-pl.win .rp-av{ border-color:var(--gold2,#f3b53f); animation:rpWinPulse 1.1s ease-in-out infinite; }
@keyframes rpWinPulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,209,102,.55);} 50%{ box-shadow:0 0 0 16px rgba(255,209,102,0);} }

.rp-banner{ position:absolute; inset:0; z-index:12; display:none; align-items:center; justify-content:center; flex-direction:column;
  background:radial-gradient(60% 50% at 50% 50%, rgba(8,10,16,.6), rgba(8,10,16,.88)); backdrop-filter:blur(2px); }
.rp-banner.show{ display:flex; animation:rpFade .4s ease; }
@keyframes rpFade{ from{ opacity:0;} to{ opacity:1;} }
.rp-ban-ttl{ font-size:12px; letter-spacing:.3em; color:var(--gold2,#f3b53f); text-transform:uppercase; }
.rp-ban-who{ font-size:clamp(26px,6vw,48px); font-weight:900; margin:6px 0; color:#fff; }
.rp-ban-amt{ font-size:22px; color:var(--gold2,#f3b53f); font-weight:800; }

.rp-players-line{ margin-top:10px; color:var(--t3,#7d8699); font-size:12px; }

/* Entrants + win-chance list (below the map) */
.rp-entrants{ display:flex; flex-direction:column; gap:8px; }
.rp-en-row{ display:flex; align-items:center; gap:11px; padding:9px 12px; border-radius:11px;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.06); }
.rp-en-av{ width:34px; height:34px; border-radius:50%; object-fit:cover; flex-shrink:0; border:1px solid rgba(255,255,255,.12); }
.rp-en-av-fb{ display:flex; align-items:center; justify-content:center; background:linear-gradient(180deg,#2a3346,#1b2230); color:#cdd6e3; font-weight:800; font-size:15px; }
.rp-en-main{ flex:1; min-width:0; }
.rp-en-top{ display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:5px; }
.rp-en-name{ color:#e7edf6; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-en-pct{ color:var(--gold2,#f3b53f); font-weight:800; font-size:13px; flex-shrink:0; }
.rp-en-bar{ height:6px; border-radius:999px; background:rgba(255,255,255,.07); overflow:hidden; }
.rp-en-bar span{ display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,#f3b53f,#e0392b); transition:width .5s ease; }
.rp-en-amt{ color:#aeb9cc; font-size:13px; font-weight:700; flex-shrink:0; white-space:nowrap; }
.rp-en-me{ border-color:rgba(238,179,81,.55); background:rgba(238,179,81,.08); }
.rp-en-you{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:#10131b;
  background:var(--gold2,#f3b53f); padding:1px 6px; border-radius:999px; margin-left:6px; vertical-align:middle; }

/* Collapsible Provably-fair toggle inside the watch modal */
.rp-vf-toggle{ width:100%; text-align:left; cursor:pointer; font-family:var(--fd); font-size:15px; color:#fff;
  background:rgba(120,150,255,.1); border:1px solid rgba(196,184,158,.25); border-radius:10px; padding:11px 14px;
  display:flex; align-items:center; gap:8px; }
.rp-vf-toggle:hover{ background:rgba(120,150,255,.18); }
.rp-vf-caret{ margin-left:auto; transition:transform .2s; }
.rp-vf-toggle.open .rp-vf-caret{ transform:rotate(180deg); }
.rp-vf-body{ margin-top:10px; }
.rp-players-line code{ font-size:11px; color:var(--t2,#aeb6c6); }

.rp-side .section-block{ padding:16px; }
.rp-wager-label{ display:block; font-size:12px; color:var(--t3,#7d8699); text-transform:uppercase; letter-spacing:.1em; margin-bottom:8px; text-align:center; }
.rp-join-card .stake-input-wrap, .rp-join-card .quick-amounts{ margin:0 auto 12px; max-width:280px; }
.rp-join-btn{ width:100%; min-height:48px; font-size:15px; }
.rp-note{ display:block; color:var(--t3,#7d8699); font-size:12px; margin-top:10px; line-height:1.5; }
.rp-recent{ display:flex; flex-direction:column; gap:7px; }
.rp-recent-row{ display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:10px; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.06); font-size:13px; }
.rp-recent-row b{ flex:0 1 auto; min-width:0; color:#e6ebf4; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rp-recent-pct{ flex:0 0 auto; color:#cfd6e4; font-weight:800; font-size:12px; }
.rp-recent-amt{ color:var(--gold2,#f3b53f); font-weight:700; margin-left:auto; }
.rp-recent-pot{ color:var(--t3,#7d8699); font-size:11px; }
.rp-watch{ margin-left:6px; padding:4px 10px; border-radius:8px; cursor:pointer; font-size:12px; font-weight:700;
  color:#10131b; background:linear-gradient(180deg,#ffd166,#f3b53f); border:0; transition:filter .15s, transform .1s; white-space:nowrap; }
.rp-watch:hover{ filter:brightness(1.08); }
.rp-watch:active{ transform:scale(.96); }
.rp-watch:disabled, .rp-watch.rp-watch-cool{ opacity:.5; cursor:default; filter:none; transform:none; pointer-events:none; }   /* View-button 3s cooldown: dimmed, countdown shown inside, not re-clickable */
.rp-verify-btn{ margin-left:6px; padding:4px 10px; border-radius:8px; cursor:pointer; font-size:12px; font-weight:700;
  color:#cfe0ff; background:rgba(255,255,255,.05); border:1px solid rgba(196,184,158,.35); transition:background .15s, border-color .15s; white-space:nowrap; }
.rp-verify-btn:hover{ background:rgba(120,150,255,.16); border-color:rgba(196,184,158,.6); }
.rp-verify{ margin-top:12px; padding:14px 14px 12px; border-radius:12px; border:1px solid rgba(196,184,158,.22);
  background:linear-gradient(180deg, rgba(20,26,40,.6), rgba(12,16,28,.55)); }
.rp-verify-modal{ margin-top:14px; max-height:280px; overflow-y:auto; }
.rp-verify-modal:empty{ display:none; }
.rp-vf-load{ color:var(--t2,#9aa6bd); font-size:13px; padding:6px 2px; }
.rp-vf-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.rp-vf-head b{ font-family:var(--fd); font-size:16px; color:#fff; letter-spacing:.02em; }
.rp-vf-x{ background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); color:#cdd6e3; width:26px; height:26px; border-radius:8px; cursor:pointer; line-height:1; }
.rp-vf-x:hover{ background:rgba(255,255,255,.12); }
.rp-vf-note{ font-size:12px; color:var(--t2,#9aa6bd); line-height:1.5; margin:0 0 10px; }
.rp-vf-note code{ background:rgba(120,150,255,.12); padding:1px 5px; border-radius:5px; font-size:11px; color:#cfe0ff; }
.rp-vf-grid{ display:flex; flex-direction:column; gap:6px; margin-bottom:10px; }
.rp-vf-kv{ display:flex; gap:8px; align-items:baseline; font-size:12px; }
.rp-vf-kv span{ flex:0 0 42%; color:var(--t3,#7d8699); }
.rp-vf-kv code{ flex:1; word-break:break-all; color:#dbe5f4; font-size:11.5px; background:rgba(255,255,255,.03); padding:3px 6px; border-radius:6px; }
.rp-vf-table{ width:100%; border-collapse:collapse; font-size:12px; }
.rp-vf-table th{ text-align:left; color:var(--t3,#7d8699); font-weight:600; padding:5px 8px; border-bottom:1px solid rgba(255,255,255,.08); }
.rp-vf-table td{ padding:5px 8px; border-bottom:1px solid rgba(255,255,255,.04); color:#cdd6e3; }
.rp-vf-table .rp-vf-hit{ background:rgba(238,179,81,.12); }

/* Champions battle "Watch" button + recap modal */
.bh-watch{ flex:0 0 auto; cursor:pointer; font-family:var(--fd); font-size:12.5px; font-weight:700; color:#cdd5ea;
  background:rgba(140,160,210,.1); border:1px solid rgba(140,160,210,.25); border-radius:999px; padding:6px 13px; white-space:nowrap;
  transition:background .15s, border-color .15s, color .15s; }
.bh-watch:hover{ background:rgba(238,179,81,.16); border-color:rgba(238,179,81,.4); color:#ffe6b0; }
.bh-watch-stage{ padding:6px 0 2px; }
.bhw-loading{ text-align:center; color:var(--t2,#9aa6bd); padding:34px 0; font-size:14px; }
.bhw-card{ display:flex; flex-direction:column; gap:16px; }
.bhw-vs{ display:flex; align-items:stretch; justify-content:center; gap:14px; }
.bhw-side{ flex:1; display:flex; flex-direction:column; align-items:center; gap:7px; padding:18px 12px 14px; border-radius:14px;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07); position:relative; }
.bhw-win{ border-color:rgba(238,179,81,.5); background:rgba(238,179,81,.07); box-shadow:0 0 22px rgba(238,179,81,.14); }
.bhw-lose{ opacity:.72; }
.bhw-av-wrap{ position:relative; display:inline-flex; }
.bhw-crown{ position:absolute; top:-18px; left:50%; transform:translateX(-50%); font-size:26px; filter:drop-shadow(0 3px 6px rgba(0,0,0,.55)); z-index:3; pointer-events:none; }
.bhw-av{ width:74px; height:74px; border-radius:50%; object-fit:cover; border:2px solid rgba(255,255,255,.16); }
.bhw-win .bhw-av{ border-color:var(--gold2,#f3b53f); }
.bhw-av-fb{ display:flex; align-items:center; justify-content:center; background:linear-gradient(180deg,#2a3346,#1b2230); color:#cdd6e3; font-weight:800; font-size:30px; }
.bhw-name{ font-size:15px; font-weight:700; color:#eaf0fb; text-align:center; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bhw-chance{ font-size:12px; color:var(--gold2,#f3b53f); font-weight:700; }
.bhw-out{ font-size:12px; color:var(--t3,#7d8699); text-transform:uppercase; letter-spacing:.08em; }
.bhw-mid{ align-self:center; font-family:var(--fd); font-size:18px; font-weight:800; color:var(--t3,#7d8699); }
.bhw-solo{ display:flex; flex-direction:column; align-items:center; gap:9px; padding:14px; }
.bhw-prize{ display:flex; align-items:center; justify-content:space-between; padding:13px 16px; border-radius:12px;
  background:rgba(0,0,0,.25); border:1px solid rgba(255,255,255,.07); }
.bhw-prize span{ color:var(--t3,#7d8699); font-size:13px; text-transform:uppercase; letter-spacing:.08em; }
.bhw-prize b{ font-size:22px; color:var(--gold2,#f3b53f); font-weight:900; }
.rp-vf-roll{ font-size:12.5px; color:#cdd6e3; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.07);
  border-radius:8px; padding:8px 11px; margin-bottom:10px; line-height:1.45; }
.rp-vf-roll b{ color:var(--gold2,#f3b53f); }

/* Polish: the Champions matchup card eases in each time a battle is opened. */
.bhw-card{ animation:bhwIn .34s cubic-bezier(.2,.8,.3,1) both; }
@keyframes bhwIn{ from{ opacity:0; transform:translateY(9px) scale(.985); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .bhw-card{ animation:none; } }

/* ── Mobile tuning for this session's new components ── */
@media (max-width:560px){
  .rp-join-open{ font-size:16px; padding:13px 30px; }
  .rp-en-av{ width:30px; height:30px; }
  .rp-en-name{ font-size:13px; }
  .rp-en-amt{ font-size:12px; }
  .bhw-vs{ gap:8px; }
  .bhw-side{ padding:15px 8px 12px; }
  .bhw-crown{ font-size:19px; top:-11px; }
  .bhw-av{ width:58px; height:58px; }
  .bhw-av-fb{ font-size:24px; }
  .bhw-name{ font-size:13px; }
  .bhw-mid{ font-size:15px; }
  .bhw-prize{ padding:11px 13px; }
  .bhw-prize b{ font-size:19px; }
  .rp-vf-kv{ flex-direction:column; gap:2px; }
  .rp-vf-kv span{ flex:none; }
}

/* Mobile polish for the v84–v87 additions (RUSTPOT redesign + Champions watch). */
@media (max-width:560px){
  .rp-join-open{ width:100%; max-width:340px; padding:13px 24px; font-size:16px; justify-content:center; }
  .rp-stage{ gap:13px; }
  .rp-en-amt{ font-size:12px; }
  .rp-en-av{ width:30px; height:30px; }
  .bhw-vs{ gap:9px; }
  .bhw-side{ padding:15px 8px 11px; }
  .bhw-crown{ font-size:19px; top:-11px; }
  .bhw-av{ width:58px; height:58px; }
  .bhw-av-fb{ font-size:24px; }
  .bhw-name{ font-size:13.5px; }
  .bhw-mid{ font-size:15px; }
  .bhw-prize b{ font-size:19px; }
  .bh-watch{ padding:5px 11px; font-size:12px; }
}
.rp-vf-table .rp-vf-hit td{ color:#ffe49b; font-weight:700; }
@media (max-width:560px){ .rp-av{ width:24px; height:24px; } .rp-nm{ font-size:10px; } }

/* RUSTPOT cards: red orbiting sparks (sparks inherit currentColor) + subtle accent */
.hm-game-rustpot .hm-bolts, .ngm-card-rustpot .ngm-bolts{ color:#ef4444; }
.hm-game-rustpot:hover{ border-color:rgba(224,57,43,.42); }
.hm-game-rustpot .hm-game-go{ color:#fca5a5; }

/* ============================================================
   v77 — PER-ICON "thunder": a fast bright lightning arc that whips AROUND
   each game symbol (not along its shape). SVG stroke-dash chase + flicker.
   ============================================================ */
.hm-game .hm-bolts, .ngm-card .ngm-bolts{ display:none; }   /* retire the old orbiting sparks */
.hm-led{ fill:none; stroke-linecap:round; }
.hm-led-core{ stroke:#e3faff; filter:drop-shadow(0 0 2px #aeeaff) drop-shadow(0 0 5px #4ab6ff) drop-shadow(0 0 10px #2f8bff); }
@keyframes hmLedRun{ to{ stroke-dashoffset:var(--led-end,-150); } }
@keyframes hmLedFlick{ 0%,54%,73%,100%{ opacity:1; } 62%{ opacity:.35; } 85%{ opacity:.7; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-led{ animation:none !important; opacity:.6; } .hm-rps3 .hm-rps-i{ animation:none !important; } }

/* A bright arc whips fast around each icon; slightly different speeds so they feel alive. */
.hm-led-orbit{ stroke-width:2.4; stroke-dasharray:24 165; --led-end:-189; animation:hmLedRun 1.0s linear infinite, hmLedFlick 1.6s steps(1,end) infinite; }
.hm-led-coin { stroke-width:2.4; stroke-dasharray:18 120; --led-end:-138; animation:hmLedRun .9s linear infinite,  hmLedFlick 1.4s steps(1,end) infinite; }
.hm-led-ring { stroke-width:2.8; stroke-dasharray:26 150; --led-end:-176; animation:hmLedRun 1.15s linear infinite, hmLedFlick 1.7s steps(1,end) infinite; }

/* ───────── Accessibility + interaction polish (v92) ───────── */
/* A clear focus ring for keyboard navigation only — mouse clicks are unaffected,
   so this adds zero visual noise for pointer users while making tab-nav usable. */
a:focus-visible, button:focus-visible, [role="button"]:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible{
  outline:2px solid var(--gold2,#f3b53f); outline-offset:2px;
}
/* Subtle interactive feedback on list rows (entrants + battle history). */
.rp-en-row{ transition:border-color .15s ease, background .15s ease, transform .12s ease; }
.rp-en-row:hover{ border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.05); transform:translateY(-1px); }
.rp-en-me:hover{ border-color:rgba(238,179,81,.7); }
.bh-row:hover{ border-color:rgba(238,179,81,.4); transform:translateY(-1px); }
.lb-row:hover{ transform:translateY(-1px); border-color:rgba(238,179,81,.32); }

/* ───────── Premium shine sweep across primary CTAs on hover (v97) ───────── */
.btn-primary{ position:relative; overflow:hidden; }
.btn-primary::before{
  content:""; position:absolute; top:0; left:-140%; width:55%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.38), transparent);
  transform:skewX(-18deg); pointer-events:none;
}
.btn-primary:hover:not(:disabled)::before{ left:140%; transition:left .6s ease; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .btn-primary::before{ display:none; } }

/* ───────── Ambient embers in the hero welcome card (thematic, behind text, v99) ───────── */
.hm-embers{ position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.hm-embers span{ position:absolute; bottom:-8px; width:4px; height:4px; border-radius:50%;
  background:radial-gradient(circle, rgba(255,184,92,.9), rgba(255,110,40,.35) 60%, transparent 72%);
  opacity:0; animation:emberRise linear infinite; }
.hm-embers span:nth-child(1){ left:8%;  width:3px; height:3px; animation-duration:7s;   animation-delay:0s;   }
.hm-embers span:nth-child(2){ left:20%; width:5px; height:5px; animation-duration:9s;   animation-delay:1.4s; }
.hm-embers span:nth-child(3){ left:33%; width:3px; height:3px; animation-duration:6.5s; animation-delay:3s;   }
.hm-embers span:nth-child(4){ left:46%; width:4px; height:4px; animation-duration:8.5s; animation-delay:.7s;  }
.hm-embers span:nth-child(5){ left:58%; width:3px; height:3px; animation-duration:7.5s; animation-delay:2.2s; }
.hm-embers span:nth-child(6){ left:70%; width:5px; height:5px; animation-duration:10s;  animation-delay:4s;   }
.hm-embers span:nth-child(7){ left:82%; width:3px; height:3px; animation-duration:6.8s; animation-delay:1s;   }
.hm-embers span:nth-child(8){ left:92%; width:4px; height:4px; animation-duration:9.5s; animation-delay:2.8s; }
@keyframes emberRise{
  0%{ transform:translateY(0) translateX(0); opacity:0; }
  12%{ opacity:.85; }
  70%{ opacity:.5; }
  100%{ transform:translateY(-190px) translateX(12px); opacity:0; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-embers{ display:none; } }

/* ───────── "Coming soon" game cards — homepage only, not clickable (v101) ───────── */
.hm-game-soon{ cursor:default; }
.hm-game-soon::before{ background:var(--ln2); opacity:.5; }
.hm-game-soon:hover{ transform:none; border-color:var(--ln); box-shadow:none; }
.hm-game-soon:hover::before{ width:4px; }
.hm-game-soon:hover::after{ opacity:0; }
.hm-game-soon .hm-game-info h3{ color:var(--t2); }
.hm-game-badge.soon{ color:#cfd6e2; background:linear-gradient(135deg,#3a4252,#262c38); border:1px solid var(--ln2); box-shadow:none; }
.hm-soon-go{ color:var(--t3) !important; opacity:.85; }

/* ───────── Mobile: center homepage grids instead of stretching / left-aligning (v101) ───────── */
.hm-games .hm-game:nth-child(5){ animation-delay:.24s; }
.hm-games .hm-game:nth-child(6){ animation-delay:.30s; }

/* Gentle breathing glow inside the Case Opening icon (v102) */
.hm-case-glow{ transform-box:view-box; transform-origin:32px 29px; animation:hmCaseGlow 2.6s ease-in-out infinite; }
@keyframes hmCaseGlow{ 0%,100%{ opacity:.55; transform:scale(.9); } 50%{ opacity:1; transform:scale(1.12); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-case-glow{ animation:none; } }

/* Leader (highest win chance) highlight in the IN POT list (v103) */
.rp-en-leader{ background:linear-gradient(90deg, rgba(243,182,60,.12), rgba(243,182,60,.03)); border-color:rgba(243,182,60,.35) !important; }
.rp-en-leader .rp-en-av{ box-shadow:0 0 0 2px rgba(243,182,60,.6), 0 0 12px rgba(243,182,60,.35); }
.rp-en-leader .rp-en-pct{ color:#ffd76a; }
.rp-en-crown{ margin-right:5px; font-size:.92em; filter:drop-shadow(0 1px 2px rgba(0,0,0,.5)); }

/* Tactile 3D press on primary buttons (v106) */
.btn-primary:active:not(:disabled){ transform:translateY(1px) scale(.985); box-shadow:0 2px 8px rgba(0,0,0,.32); transition:transform .06s ease, box-shadow .06s ease; }

/* Admin list pagination controls (v107) */
.adm-pg{ display:flex; align-items:center; justify-content:center; gap:14px; margin:16px 0 4px; }
.adm-pg-btn{ font-family:var(--fu); font-weight:700; font-size:13px; color:var(--t1); background:var(--card); border:1px solid var(--ln2); border-radius:9px; padding:7px 15px; cursor:pointer; transition:background .15s, border-color .15s, transform .1s; }
.adm-pg-btn:hover:not(:disabled){ border-color:var(--p); background:var(--bg2); }
.adm-pg-btn:active:not(:disabled){ transform:translateY(1px); }
.adm-pg-btn:disabled{ opacity:.4; cursor:default; }
.adm-pg-info{ font-family:var(--fm); font-size:12.5px; color:var(--t2); }
.adm-pg-btn[aria-disabled]{ opacity:.4; pointer-events:none; }
/* ── Affiliate / influencer analytics ── */
.adm-ip{ display:block; font-family:var(--fm); font-size:10.5px; color:var(--t3); margin-top:2px; letter-spacing:.02em; }
.aff-table, .aff-users{ display:flex; flex-direction:column; gap:4px; overflow-x:auto; }
.aff-row, .aff-head{ display:grid; grid-template-columns:1.4fr 1fr .55fr .55fr 1fr 1fr 1fr .8fr; gap:10px; align-items:center; padding:10px 12px; min-width:720px; }
.aff-head{ font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--t3); border-bottom:1px solid var(--rust-ln); }
.aff-row:not(.aff-head){ border-radius:9px; background:rgba(0,0,0,.2); border:1px solid var(--rust-ln); }
.aff-name{ font-weight:700; color:var(--t1); }
.aff-code-c{ font-family:var(--fm); font-size:12px; color:var(--p); }
.aff-ftd-n{ color:#4ade80; font-weight:800; }
.aff-view{ justify-self:start; }
.aff-back{ display:inline-block; margin-bottom:14px; }
.aff-detail-head{ background:rgba(0,0,0,.22); border:1px solid var(--rust-ln); border-radius:12px; padding:16px 18px; margin-bottom:14px; }
.aff-detail-head h4{ margin:0 0 12px; font-family:var(--fu); font-size:20px; color:var(--t1); }
.aff-code{ font-family:var(--fm); font-size:12px; color:var(--p); background:rgba(238,179,81,.12); padding:3px 8px; border-radius:7px; margin-left:8px; vertical-align:middle; }
.aff-stat-row{ display:flex; flex-wrap:wrap; gap:22px; margin-bottom:12px; }
.aff-stat{ display:flex; flex-direction:column; }
.aff-stat b{ font-family:var(--fd); font-size:22px; color:var(--gold2); display:flex; align-items:center; gap:.12em; }
.aff-stat span{ font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--t3); margin-top:2px; }
.aff-games{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; font-size:12px; color:var(--t2); border-top:1px solid var(--rust-ln); padding-top:12px; }
.aff-games > span{ color:var(--t3); }
.aff-games em{ font-style:normal; background:rgba(255,255,255,.05); border:1px solid var(--rust-ln); border-radius:7px; padding:4px 9px; }
.aff-games em b{ color:var(--p); margin-left:4px; }
.aff-urow, .aff-uhead{ display:grid; grid-template-columns:1.2fr .8fr .45fr .9fr .9fr 2fr 1fr 1fr .45fr; gap:8px; align-items:center; padding:8px 11px; min-width:880px; }
.aff-games-cell{ font-family:var(--fm); font-size:11.5px; color:var(--t2); white-space:nowrap; }
.aff-games-cell b{ color:var(--p); }
.aff-uhead{ font-size:10.5px; text-transform:uppercase; letter-spacing:.07em; color:var(--t3); border-bottom:1px solid var(--rust-ln); }
.aff-urow:not(.aff-uhead){ border-radius:8px; background:rgba(0,0,0,.2); border:1px solid var(--rust-ln); font-size:13px; }
.aff-urow.is-banned{ opacity:.6; border-color:rgba(239,68,68,.4); }
.aff-u-name{ font-weight:700; color:var(--t1); }
.aff-ip{ font-family:var(--fm); font-size:11.5px; color:var(--t2); }
.aff-ftd-yes{ color:#4ade80; font-weight:800; font-style:normal; }
.aff-ftd-no{ color:var(--t3); font-style:normal; }

/* "Tap to watch with sound" gate for deep-link replays (v111) */
.rr-tap2play{ position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; background:rgba(8,11,18,.78); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); cursor:pointer; animation:rrT2pIn .2s ease; }
@keyframes rrT2pIn{ from{ opacity:0 } to{ opacity:1 } }
.rr-tap2play-inner{ display:flex; align-items:center; gap:12px; font-family:var(--fu,sans-serif); font-weight:800; font-size:16px; letter-spacing:.01em; color:#fff; background:linear-gradient(135deg,var(--p,#7c5cff),var(--p2,#5b3fd6)); padding:16px 26px; border-radius:14px; box-shadow:0 16px 44px rgba(0,0,0,.55); border:1px solid rgba(255,255,255,.18); }
.rr-tap2play-ico{ display:inline-flex; width:30px; height:30px; align-items:center; justify-content:center; background:rgba(255,255,255,.2); border-radius:50%; font-size:13px; padding-left:2px; }

/* Topbar sound on/off toggle (v112) */
.snd-toggle{ display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:11px; border:1px solid var(--ln2); background:var(--card); font-size:16px; line-height:1; cursor:pointer; transition:background .15s, border-color .15s, transform .1s; flex:0 0 auto; }
.snd-toggle:hover{ border-color:var(--p); background:var(--bg2); }
.snd-toggle:active{ transform:translateY(1px); }
.snd-toggle.off{ opacity:.55; }

/* ════════════════════════════════════════════
   v127 — game stage ambiance (Coinflip / RPS / RUSTPOT)
   Decorative only: pointer-events:none, no JS / layout impact.
════════════════════════════════════════════ */
/* Coinflip: warmer glow around the spinning coin */
.cf-coin-wrap{ filter: drop-shadow(0 12px 30px rgba(0,0,0,.6)) drop-shadow(0 0 22px rgba(245,180,70,.22)); }
/* RUSTPOT: subtle warm top-light + vignette on the map for depth */
.rp-map::after{ content:""; position:absolute; inset:0; pointer-events:none; z-index:4; border-radius:14px;
  background:radial-gradient(130% 100% at 50% -10%, rgba(245,180,70,.08), transparent 50%);
  box-shadow:inset 0 0 46px rgba(0,0,0,.34); }

/* ════════════════════════════════════════════
   v129 — Races leaderboard: a living "champion" treatment for #1
   Pure CSS, scoped to the leaderboard. No JS / layout / logic impact.
════════════════════════════════════════════ */
.lb-row-gold{ position:relative; overflow:hidden; }
.lb-row-gold::after{
  content:""; position:absolute; top:0; left:-42%; width:36%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(245,200,90,.16), transparent);
  transform:skewX(-18deg); pointer-events:none;
  animation:lbLeaderShine 5s ease-in-out infinite;
}
@keyframes lbLeaderShine{ 0%,100%{ left:-42%; opacity:0; } 12%{ opacity:1; } 42%{ left:122%; opacity:0; } }
.lb-rank-badge.rank-gold{ animation:lbBadgePulse 2.4s ease-in-out infinite; }
@keyframes lbBadgePulse{
  0%,100%{ filter:drop-shadow(0 0 8px rgba(238,179,81,.7)); transform:scale(1); }
  50%    { filter:drop-shadow(0 0 14px rgba(245,180,60,.95)); transform:scale(1.08); }
}
.lb-hero-prize strong{ animation:lbPoolGlow 3.6s ease-in-out infinite; }
@keyframes lbPoolGlow{ 0%,100%{ text-shadow:0 0 18px rgba(238,179,81,.22); } 50%{ text-shadow:0 0 30px rgba(238,179,81,.5); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .lb-row-gold::after,.lb-rank-badge.rank-gold,.lb-hero-prize strong{ animation:none; } }

/* v130: gentle "claim me" glow on the daily reward button when it's ready (filter = no box-shadow clobber) */
.rw-daily-btn:not(.claimed){ animation: rwClaimPulse 2.3s ease-in-out infinite; }
@keyframes rwClaimPulse{ 0%,100%{ filter: drop-shadow(0 0 0 rgba(245,180,60,0)); } 50%{ filter: drop-shadow(0 0 9px rgba(245,180,60,.6)); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rw-daily-btn:not(.claimed){ animation:none; } }

/* v131: profile stat cards — subtle hover lift + a visual win-rate bar */
.pstat{ transition: transform .2s ease, border-color .2s ease, box-shadow .25s ease; }
.pstat:hover{ transform: translateY(-3px); border-color: var(--vio-line); box-shadow: 0 12px 26px rgba(0,0,0,.34); }
.pstat-wr-bar{ height:5px; border-radius:3px; background:rgba(0,0,0,.4); overflow:hidden; margin-top:8px; }
.pstat-wr-bar span{ display:block; height:100%; border-radius:3px; background:linear-gradient(90deg,#eeb351,#f4cd84); box-shadow:0 0 8px rgba(238,179,81,.45); transition:width .7s cubic-bezier(.2,.8,.3,1); }

/* v132: wallet balance — a "lit", premium focal point (CSS only, scoped to wallet) */
.balance-overview{ position:relative; overflow:hidden; }
.balance-overview::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(80% 120% at 18% -12%, rgba(238,179,81,.10), transparent 55%); }
.balance-main, .balance-stats{ position:relative; z-index:1; }
.balance-val{ animation:balValGlow 3.6s ease-in-out infinite; }
@keyframes balValGlow{ 0%,100%{ text-shadow:0 0 16px rgba(238,179,81,.22); } 50%{ text-shadow:0 0 30px rgba(238,179,81,.48); } }
.bstat{ transition:transform .18s ease, border-color .18s ease; }
.bstat:hover{ transform:translateY(-2px); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .balance-val{ animation:none; } }

/* v133: affiliate page — interactive metrics + referral rows (CSS only, scoped) */
.aff-metric{ transition:transform .18s ease; }
.aff-metric:hover{ transform:translateY(-3px); }
.ref-row{ transition:background .15s ease; }
.ref-row:hover{ background:rgba(245,180,60,.05); }

/* ════════════════════════════════════════════
   v141 — Provably-Fair interactive verifier (fairness page)
════════════════════════════════════════════ */
.pf-intro{ color:var(--t2); max-width:760px; line-height:1.6; margin:0 0 16px; font-size:14px; }
.pf-verify{ display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.pf-field{ display:flex; flex-direction:column; gap:6px; flex:1 1 240px; }
.pf-field.pf-field-sm{ flex:0 1 120px; }
.pf-field span{ font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--t3); }
.pf-field input{ background:rgba(0,0,0,.35); border:1px solid var(--ln); border-radius:10px; padding:11px 13px; color:var(--t1); font-family:var(--fm,monospace); font-size:13px; transition:border-color .15s, box-shadow .15s; }
.pf-field input:focus{ outline:none; border-color:var(--p); box-shadow:0 0 0 3px rgba(182,170,146,.18); }
.pf-verify .btn-primary{ flex:0 0 auto; }
.pf-out{ margin-top:16px; border:1px solid var(--ln); border-radius:14px; padding:16px 18px; background:rgba(0,0,0,.25); animation:pfFade .3s ease; }
@keyframes pfFade{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
.pf-out-head{ font-family:var(--fd); font-size:13px; letter-spacing:.06em; text-transform:uppercase; color:var(--gold2); margin:14px 0 8px; }
.pf-out-head:first-child{ margin-top:0; }
.pf-rrow{ display:flex; justify-content:space-between; gap:14px; align-items:center; padding:7px 0; border-bottom:1px solid rgba(182,170,146,.1); flex-wrap:wrap; }
.pf-rrow span{ font-size:12px; color:var(--t3); flex:0 0 auto; }
.pf-rrow code{ font-size:12px; color:var(--p3); word-break:break-all; text-align:right; }
.pf-rrow b{ color:#fff; font-size:14px; }
.pf-hint{ font-size:12.5px; color:var(--t3); line-height:1.5; margin:8px 0 0; }
.pf-err{ color:var(--red2,#f87171); font-size:14px; font-weight:600; }
@media (max-width:560px){ .pf-rrow{ flex-direction:column; align-items:flex-start; gap:2px; } .pf-rrow code{ text-align:left; } }

/* ════════════════════════════════════════════════════════════════════════
   v153 — Notched-phone safe areas. The viewport uses viewport-fit=cover, so on
   iPhone X+ the home-indicator bar overlaps bottom-fixed UI (chat input, the
   chat toggle, toasts). These env() insets are 0 on every non-notched device,
   so nothing changes elsewhere. @supports guards old browsers.
   ════════════════════════════════════════════════════════════════════════ */
@supports (padding: env(safe-area-inset-bottom)){
  @media (max-width:760px){
    /* keep the chat input row clear of the home-indicator bar */
    .chat-panel{ padding-bottom: env(safe-area-inset-bottom); }
    /* lift the floating chat toggle above the bar */
    .chat-toggle{ bottom: calc(14px + env(safe-area-inset-bottom)) !important; }
  }
  /* toasts float bottom-right on every size */
  .rr-toast-host{ bottom: calc(18px + env(safe-area-inset-bottom)); }
}

/* ════════════════════════════════════════════════════════════════════════
   v154 — SLEEKER LEADERBOARD CARDS. Podium rows get a colored glow + a left
   accent bar + a soft medallion halo behind the medal, #1 gets a slow shine
   sweep, and all rows get a smoother hover lift. Appended last to layer over
   the base .lb-* rules.
   ════════════════════════════════════════════════════════════════════════ */
.lb-row{
  position:relative; overflow:hidden;
  box-shadow:0 2px 10px rgba(0,0,0,.28);
  transition:transform .18s cubic-bezier(.2,.8,.3,1), box-shadow .2s, border-color .2s;
}
/* left accent bar on the podium */
.lb-row-gold::before, .lb-row-silver::before, .lb-row-bronze::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:4px; z-index:2;
}
.lb-row-gold::before{   background:linear-gradient(180deg,#ffe39a,#f5a623); }
.lb-row-silver::before{ background:linear-gradient(180deg,#f2f4f8,#aab0bd); }
.lb-row-bronze::before{ background:linear-gradient(180deg,#e6b07a,#b06d33); }
/* richer podium backgrounds + colored glow */
.lb-row-gold{
  background:linear-gradient(110deg,rgba(245,166,35,.16),rgba(16,19,30,.97) 60%) !important;
  border-color:rgba(245,166,35,.55) !important;
  box-shadow:0 4px 22px rgba(245,166,35,.18), inset 0 1px 0 rgba(255,221,150,.12);
}
.lb-row-silver{
  background:linear-gradient(110deg,rgba(200,206,218,.12),rgba(16,19,30,.97) 60%) !important;
  border-color:rgba(200,206,218,.45) !important;
  box-shadow:0 4px 18px rgba(200,206,218,.12);
}
.lb-row-bronze{
  background:linear-gradient(110deg,rgba(205,127,50,.14),rgba(16,19,30,.97) 60%) !important;
  border-color:rgba(205,127,50,.45) !important;
  box-shadow:0 4px 18px rgba(205,127,50,.13);
}
.lb-row:hover{ transform:translateY(-2px) !important; box-shadow:0 9px 26px rgba(0,0,0,.42); }
.lb-row-gold:hover{   box-shadow:0 9px 30px rgba(245,166,35,.3); }
.lb-row-silver:hover{ box-shadow:0 9px 28px rgba(200,206,218,.22); }
.lb-row-bronze:hover{ box-shadow:0 9px 28px rgba(205,127,50,.22); }
/* rank medallions: a soft colored halo behind the medal emoji + glow; #4+ a dark disc */
.lb-rank-badge{ background:rgba(255,255,255,.05); border-radius:50%; box-shadow:inset 0 0 0 1px rgba(255,255,255,.06); }
.lb-rank-badge.rank-gold{   font-size:21px; background:radial-gradient(circle at 50% 42%,rgba(245,166,35,.24),rgba(255,255,255,.04)); filter:drop-shadow(0 0 9px rgba(245,166,35,.85)); }
.lb-rank-badge.rank-silver{ font-size:20px; background:radial-gradient(circle at 50% 42%,rgba(200,206,218,.2),rgba(255,255,255,.04));  filter:drop-shadow(0 0 8px rgba(200,206,218,.7)); }
.lb-rank-badge.rank-bronze{ font-size:20px; background:radial-gradient(circle at 50% 42%,rgba(205,127,50,.22),rgba(255,255,255,.04)); filter:drop-shadow(0 0 8px rgba(205,127,50,.7)); }
/* #1 premium shine sweep across the card */
.lb-row-gold::after{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:1;
  background:linear-gradient(105deg,transparent 32%,rgba(255,236,180,.15) 48%,transparent 64%);
  background-size:220% 100%; animation:lbShine 5s ease-in-out infinite;
}
@keyframes lbShine{ 0%,100%{ background-position:150% 0; } 55%{ background-position:-50% 0; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .lb-row-gold::after{ animation:none; opacity:0; } }

/* ════════════════════════════════════════════════════════════════════════
   v154 — REAL 3D COIN FLIP. The coin previously only bobbed up/down (the toss
   arc) — it never rotated, so it didn't read as a "flip". The coin now spins
   end-over-end (rotateX) with perspective during the toss: face → thin edge →
   face. It ends on a multiple of 360° so the result face the JS reveals (via
   .show-red/.show-blue) is always upright. The existing toss arc, spin-glow and
   landing shockwave are untouched — this only adds the rotation that was missing.
   ════════════════════════════════════════════════════════════════════════ */
.cf-coin-wrap{ perspective: 950px; }
.cf-coin{ transform-style: preserve-3d; }
/* NOTE (v156): the coin's end-over-end rotation is driven by the Web Animations API in
   coinflip.js (flipCoinEl → coin.animate rotateX, 7 turns, lands on the winning face).
   The old CSS
/* ════════════════════════════════════════════════════════════════════════
   v159 — PLAYER PROFILE MODAL. Opened by clicking a chat avatar or the
   right-click "Profile" option. Shows level, total wagered, wins, losses,
   win rate from the read-only public endpoint (api/profile.php).
   ════════════════════════════════════════════════════════════════════════ */
.chat-av{ cursor:pointer; transition:box-shadow .15s ease, transform .15s ease; }
.chat-av:hover{ box-shadow:0 0 0 2px var(--gold2,#f3b53f); transform:translateY(-1px); }

.profile-card{ max-width:620px; }
.profile-head{ display:flex; align-items:center; gap:14px; text-align:left; margin-bottom:18px; }
.profile-av{ width:72px; height:72px; border-radius:50%; flex:0 0 auto; overflow:hidden;
  border:2px solid var(--gold2,#f3b53f); background:#10131b; display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 14px rgba(0,0,0,.5); }
.profile-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.profile-av span{ font-size:30px; font-weight:800; color:var(--gold2,#f3b53f); }
.profile-id{ min-width:0; }
.profile-name{ font-size:20px; font-weight:800; color:#fff; line-height:1.2; word-break:break-word; }
.profile-lvl{ font-size:13px; font-weight:700; color:var(--gold2,#f3b53f); margin-top:3px; text-transform:uppercase; letter-spacing:.06em; }
.profile-stats{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.profile-stat{ background:rgba(0,0,0,.32); border:1px solid rgba(182,170,146,.18); border-radius:12px; padding:14px 10px; text-align:center; }
.profile-stat-val{ font-size:22px; font-weight:900; color:#fff; line-height:1.1; }
.profile-stat-lbl{ font-size:11px; color:#a7adbe; margin-top:4px; text-transform:uppercase; letter-spacing:.07em; }
.profile-stat-wager .profile-stat-val{ color:var(--gold2,#f3b53f); }
.profile-stat-win   .profile-stat-val{ color:#34d399; }
.profile-stat-loss  .profile-stat-val{ color:#f87171; }
.profile-msg{ min-height:18px; margin-top:12px; font-size:13px; color:#a7adbe; text-align:center; }
.profile-msg.err{ color:#f87171; }
.profile-tip-history{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:12px; }
.profile-tip-col{ min-width:0; background:rgba(0,0,0,.24); border:1px solid rgba(182,170,146,.16); border-radius:12px; overflow:hidden; }
.profile-tip-head{ padding:10px 11px 8px; border-bottom:1px solid rgba(182,170,146,.12); display:flex; flex-direction:column; gap:2px; }
.profile-tip-head span{ color:#f1f3f7; font-size:12px; font-weight:850; text-transform:uppercase; letter-spacing:.055em; }
.profile-tip-head small{ color:#7f8798; font-size:10px; }
.profile-tip-list{ max-height:244px; overflow:auto; scrollbar-width:thin; }
.profile-tip-row{ appearance:none; width:100%; border:0; border-bottom:1px solid rgba(182,170,146,.08); background:transparent; color:inherit; padding:8px 9px; display:grid; grid-template-columns:30px minmax(0,1fr) auto; align-items:center; gap:8px; text-align:left; cursor:pointer; }
.profile-tip-row:last-child{ border-bottom:0; }
.profile-tip-row:hover{ background:rgba(255,255,255,.035); }
.profile-tip-av{ width:30px; height:30px; border-radius:50%; overflow:hidden; background:#10131b; border:1px solid rgba(243,181,63,.35); display:flex; align-items:center; justify-content:center; color:var(--gold2,#f3b53f); font-size:12px; font-weight:850; }
.profile-tip-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.profile-tip-who{ min-width:0; display:flex; flex-direction:column; gap:1px; }
.profile-tip-who b{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#e9edf5; font-size:12px; }
.profile-tip-who small{ color:#777f90; font-size:10px; }
.profile-tip-amt{ white-space:nowrap; color:var(--gold2,#f3b53f); font-size:12px; font-weight:850; display:inline-flex; align-items:center; gap:3px; }
.profile-tip-empty{ padding:18px 10px; color:#727b8d; text-align:center; font-size:11px; }
@media (max-width:640px){ .profile-card{ max-width:min(94vw,460px); } .profile-tip-history{ grid-template-columns:1fr; } .profile-tip-list{ max-height:180px; } }

/* ════════════════════════════════════════════════════════════════════════
   v162 — COINFLIP coin REAL 3D thickness. The flip coin now carries a stack of
   metallic discs along Z (built in coinflip.js) so it reads as a SOLID coin: edge-on
   during the tumble you see a ~14px gold rim instead of the coin vanishing to a line.
   Each disc uses `inset` (not a fixed px radius), so the edge scales with the coin at
   every breakpoint automatically.
   ════════════════════════════════════════════════════════════════════════ */
.cf-coin-edge-disc{
  position:absolute; inset:-2px; border-radius:50%;
  background:hsl(30 24% 36%);   /* per-depth metallic shade is set inline in JS; this is a fallback */
  /* NO backface-visibility cull: the discs must stay visible from every angle so the rim
     reads as a SOLID gold band edge-on (culling made it thin out / vanish mid-tumble). */
}
/* struck-metal dome on each face (highlight top-left, shade bottom-right) for relief */
.cf-coin .cf-face::after{
  content:""; position:absolute; inset:0; border-radius:50%; pointer-events:none;
  background:
    radial-gradient(circle at 32% 26%, rgba(255,255,255,.26), rgba(255,255,255,0) 48%),
    radial-gradient(circle at 72% 82%, rgba(0,0,0,.28),       rgba(0,0,0,0)       56%);
  backface-visibility:hidden; -webkit-backface-visibility:hidden;
}
/* ════════════════════════════════════════════════════════════════════════
   v166 — RUSTFLIP "only the winning coin shows" fix. The 31-disc metal rim
   (.cf-coin-edge-disc, built in coinflip.js, spanning Z −16…+16) sits just 1px
   behind each face (±17). In a preserve-3d context browsers cannot reliably
   depth-sort near-coplanar opaque planes, so face-on the front disc would paint
   OVER the winning face — the stray orange/tan blob seen on landing and on
   replay. The rim is only meaningful while the coin is edge-on mid-tumble, so:
   show the discs ONLY during the active flip, and force them hidden the instant
   the coin lands (or on a replay, which jumps straight to the landed face). The
   coin is face-on in all of those states, so a real coin shows no edge anyway. */
.cf-coin-edge-disc{ opacity:0; transition:opacity .15s ease; }
.cf-coin-wrap.flipping .cf-coin-edge-disc{ opacity:1; }
/* The flip's coinThrow (fill:forwards) leaves .flipping on the wrap after touchdown,
   so key the hide off the coin's .landed-* class — added the moment it lands and on
   every replay — with !important so it beats the .flipping rule above. */
.cf-coin.landed-red  .cf-coin-edge-disc,
.cf-coin.landed-blue .cf-coin-edge-disc{ opacity:0 !important; }

/* ════════════════════════════════════════════════════════════════════════
   v163 — 3D pass (2/3): CHAMPIONS arena depth. A receding perspective floor grid +
   a contact shadow under each fighter, so they stand ON a floor instead of floating.
   Pure decorative pseudo (z-index:0, behind the fighter at z-index:2, pointer-events:none).
   perspective() is in the TRANSFORM (not a property on .char-display), so it CANNOT affect
   the fighter SVG geometry / combat positioning. The weapon already has its own drop-shadow.
   ════════════════════════════════════════════════════════════════════════ */
.char-display:not(:has(.empty-seat))::before{
  content:""; position:absolute; left:50%; bottom:0; width:170%; height:56%;
  transform: translateX(-50%) perspective(480px) rotateX(66deg);
  transform-origin: 50% 100%;
  background:
    radial-gradient(ellipse 46% 22% at 50% 90%, rgba(0,0,0,.62), rgba(0,0,0,0) 72%),   /* contact shadow at the feet */
    repeating-linear-gradient(90deg, rgba(196,184,158,.11) 0 1px, transparent 1px 30px),
    repeating-linear-gradient(0deg,  rgba(196,184,158,.09) 0 1px, transparent 1px 26px);
  z-index:0; pointer-events:none;
  -webkit-mask-image: linear-gradient(0deg, #000 42%, rgba(0,0,0,0) 100%);
          mask-image: linear-gradient(0deg, #000 42%, rgba(0,0,0,0) 100%);
}
/* (fighter's own cast shadow is left as-is — overriding it here would clobber the
   .char-hit red-flash + duel-state filters that are managed elsewhere) */

/* ════════════════════════════════════════════════════════════════════════
   v165 — 3D pass (3/3): RUSTPOT map depth. The map reads as a lit crater/bowl, the
   avatars become raised metal TOKENS with cast shadows + a beveled rim, and the closing
   red-zone reads as a glowing energy WALL. No plane tilt — the reveal's %-based avatar
   positions and zone geometry are untouched, so everything stays perfectly aligned.
   ════════════════════════════════════════════════════════════════════════ */
.rp-map{
  box-shadow: inset 0 0 70px rgba(0,0,0,.62),    /* crater/bowl darkening at the rim */
              inset 0 10px 34px rgba(0,0,0,.42),  /* top inner shade → depth */
              0 22px 50px rgba(0,0,0,.5);          /* the whole board lifts off the page */
}
/* avatars become raised 3D tokens: a cast shadow + a beveled metal rim */
.rp-av, .rp-av-fb{
  box-shadow: 0 5px 9px rgba(0,0,0,.6),                /* cast shadow → floats above the map */
              0 1px 0 rgba(255,255,255,.28) inset,     /* top highlight (bevel) */
              0 -2px 4px rgba(0,0,0,.38) inset;        /* bottom inner shade (bevel) */
}
/* the closing red-zone reads as a thick glowing energy wall */
.rp-ring{
  box-shadow: 0 0 30px rgba(255,40,40,.75), 0 0 60px rgba(255,40,40,.35),
              inset 0 0 26px rgba(255,40,40,.5);   /* ONLY the ring itself is red — no danger-zone fill behind it (user: "the background shouldn't be red, only the circle") */
}

/* ============================================================
   Coin Flip — RED / BLACK theme
   The internal side token stays "red"/"blue" (no API/DB change),
   but the "blue" side is now presented as BLACK (charcoal field,
   cool silver accent) to match the new Rust-logo coin faces.
   ============================================================ */
.cf-side-coin-img{ width:100%; height:100%; object-fit:contain; display:block; -webkit-user-drag:none; user-select:none; filter: drop-shadow(0 3px 6px rgba(0,0,0,.45)); }

/* selection button — BLACK side */
.cf-side-btn.cf-side-blue span{ color:#d3dae6 !important; }
.cf-side-btn.active.cf-side-blue{
  border-color:rgba(150,162,182,.6) !important;
  background:rgba(38,42,50,.55) !important;
  box-shadow:0 0 0 1px rgba(150,162,182,.4), 0 10px 26px rgba(0,0,0,.45) !important;
  animation:none !important;
}
.cf-side-avatar.cf-side-blue{ border-color:#9aa4b6 !important; box-shadow:0 0 14px rgba(150,162,182,.32) !important; }

/* modal mini coin + result/outcome — BLACK side */
.cf-mini-coin.blue{
  background:linear-gradient(135deg,#0e0f12,#2b2e34) !important; color:#d3dae6 !important;
  border:1px solid rgba(150,162,182,.4) !important; box-shadow:0 0 12px rgba(150,162,182,.22) !important;
}
.cf-result-badge.show-blue{ background:rgba(38,42,50,.55) !important; border:1px solid rgba(150,162,182,.5) !important; color:#d3dae6 !important; }
.cf-modal-result.show-blue{
  background:linear-gradient(180deg, rgba(34,37,42,.95), rgba(20,21,24,.9)) !important;
  color:#e3e8f0 !important; border:1px solid rgba(150,162,182,.5) !important;
  box-shadow:0 6px 26px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.12) !important;
}
.cf-modal-outcome.blue{ color:#d3dae6 !important; }
.cf-winner-blue{ background:rgba(38,42,50,.55) !important; color:#d3dae6 !important; border:1px solid rgba(150,162,182,.4) !important; }
.cf-verify-result.blue{ background:rgba(38,42,50,.45) !important; color:#d3dae6 !important; border:1px solid rgba(150,162,182,.3) !important; }
.cf-legend-item.blue{ color:#d3dae6 !important; }
.cf-legend-item.blue .cf-legend-dot{ background:#3a3d44 !important; box-shadow:0 0 8px rgba(150,162,182,.6) !important; }

/* winner glow — BLACK side reads as a bright silver halo (black can't "glow") */
.cf-coin.landed-blue{ filter: drop-shadow(0 0 30px rgba(206,214,228,.92)) drop-shadow(0 12px 30px rgba(0,0,0,.6)) !important; }
.cf-coin.landed-blue.settle::after{ border-color:rgba(206,214,228,.72) !important; }
.cf-particle:nth-child(even){ background:rgba(206,214,228,.5) !important; }

/* ============================================================
   Coin Flip — WINNER's 3D victory celebration
   Fires only for the logged-in winner (JS adds .cf-celebrate):
   a big in-plane spin + scale pop, a brighter pulsing glow, and
   an expanding shockwave ring. Confetti fires separately.
   ============================================================ */
.cf-coin-wrap.cf-celebrate{ position:relative; z-index:5; animation: cfCelebrate 1.25s cubic-bezier(.2,.7,.25,1) 1; }
@keyframes cfCelebrate{
  0%{   transform: scale(1)    rotate(0deg);   }
  30%{  transform: scale(1.22) rotate(200deg); }
  62%{  transform: scale(1.06) rotate(330deg); }
  100%{ transform: scale(1)    rotate(360deg); }
}
.cf-coin-wrap.cf-celebrate .cf-coin{ animation: cfCelebGlow 1.25s ease-out 1; }
@keyframes cfCelebGlow{
  0%,100%{ filter: drop-shadow(0 0 20px rgba(255,196,90,.55)) drop-shadow(0 10px 26px rgba(0,0,0,.6)); }
  40%{     filter: drop-shadow(0 0 46px rgba(255,212,124,1)) drop-shadow(0 0 84px rgba(255,170,70,.8)) drop-shadow(0 10px 26px rgba(0,0,0,.6)); }
}
.cf-coin-wrap.cf-celebrate::after{
  content:""; position:absolute; left:50%; top:50%; width:62%; height:62%;
  transform:translate(-50%,-50%) scale(.4); border-radius:50%;
  border:3px solid rgba(255,205,110,.85); pointer-events:none; z-index:-1;
  animation: cfCelebRing 1.0s ease-out 1;
}
@keyframes cfCelebRing{
  0%{   transform:translate(-50%,-50%) scale(.4);  opacity:.9; }
  100%{ transform:translate(-50%,-50%) scale(2.5); opacity:0;  }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .cf-coin-wrap.cf-celebrate, .cf-coin-wrap.cf-celebrate .cf-coin{ animation:none; }
  .cf-coin-wrap.cf-celebrate::after{ display:none; }
}

/* ============================================================
   Tactile 3D depth for primary actions + cards (site-wide,
   complements the homepage card tilt). Press = pushes inward.
   ============================================================ */
.btn-primary{ transition: transform .14s cubic-bezier(.2,.7,.3,1), filter .2s, box-shadow .2s; }
.btn-primary:active:not(:disabled){ transform: translateY(1px) scale(.975); filter:brightness(1.05); }
.btn-daily:active:not(.claimed){ transform: translateY(1px) scale(.97); }
.hm-game:active{ transform: translateY(-3px) scale(.995); }     /* tap feedback (touch, where tilt is off) */
.hm-game-go{ transition: transform .25s cubic-bezier(.34,1.6,.5,1); }

/* ════════════════════════════════════════════════════════════
   SITE-WIDE 3D DEPTH PASS (v187)
   Raised, beveled elevation everywhere + smooth tilt + tactile
   3D buttons. Cosmetic only; reduced-motion handled at the end.
   ════════════════════════════════════════════════════════════ */

/* (a) Resting elevation + bevel → standalone cards look like raised slabs */
.hm-promo-card, .ngm-card, .rb-card, .fair-game-card, .stat-box,
.form-card, .auth-card, .cf-create-card, .aff-panel, .notif-panel,
.rps-modal-card, .pf-card, .lb-row-gold, .lb-row-silver, .lb-row-bronze {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.06),
    inset 0 -2px 7px rgba(0,0,0,.30),
    0 16px 34px -14px rgba(0,0,0,.60),
    0 5px 12px -7px rgba(0,0,0,.45);
}

/* (b) the cursor-tilt cards: smooth glide + 3D context + crisp rendering */
.hm-game, .hm-promo-card, .ngm-card, .rb-card, .fair-game-card, .stat-box {
  transition: transform .2s cubic-bezier(.2,.7,.3,1), box-shadow .25s ease, border-color .25s ease;
  transform-style: preserve-3d;
  position: relative;          /* anchor for the cursor glare overlay */
}
/* cursor-following light reflection ("glass" sheen) — JS positions it via --gx/--gy */
.card-glare{
  position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  opacity:0; transition:opacity .25s ease; z-index:4; mix-blend-mode:screen;
  background: radial-gradient(180px circle at var(--gx,50%) var(--gy,50%), rgba(255,255,255,.20), rgba(255,255,255,.06) 38%, transparent 62%);
}
/* deepen the shadow while lifted (works alongside the JS tilt) */
.hm-promo-card:hover, .rb-card:hover, .stat-box:hover {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.08),
    0 30px 56px -16px rgba(0,0,0,.65),
    0 10px 22px -9px rgba(0,0,0,.5);
}

/* (c) tactile 3D primary buttons — keep the colour glow, add a raised lip + press */
.btn-primary{
  box-shadow: 0 4px 18px var(--pg), inset 0 1px 0 rgba(255,255,255,.26), 0 4px 0 rgba(0,0,0,.22);
}
.btn-primary:hover:not(:disabled){
  box-shadow: 0 8px 24px var(--pg), inset 0 1px 0 rgba(255,255,255,.30), 0 6px 0 rgba(0,0,0,.24);
}
.btn-primary:active:not(:disabled){
  box-shadow: 0 3px 12px var(--pg), inset 0 1px 0 rgba(255,255,255,.20), 0 2px 0 rgba(0,0,0,.26);
}
/* ghost + verify buttons get a subtle raised edge + press too */
.btn-ghost, .btn-verify{ transition: background .16s, transform .14s cubic-bezier(.2,.7,.3,1), box-shadow .16s; box-shadow: 0 2px 0 rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.05); }
.btn-ghost:active:not(:disabled), .btn-verify:active{ transform: translateY(1px) scale(.985); box-shadow: 0 1px 0 rgba(0,0,0,.2); }

/* (d) avatars / coins read rounder with a soft contact shadow */
.cf-side-coin, .cf-mini-coin{ filter: drop-shadow(0 4px 7px rgba(0,0,0,.45)); }

/* (e) honour reduced-motion: kill all the tilt/lift motion (shadows stay) */
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-game, .hm-promo-card, .ngm-card, .rb-card, .fair-game-card, .stat-box{ transition:none; }
}

/* ════════════════════════════════════════════════════════════
   3D depth pass — part 2 (v188): nav, modals, dashboard
   ════════════════════════════════════════════════════════════ */

/* (a) the top nav now floats above the page (3D layering) */
.topbar{ box-shadow: 0 10px 30px -12px rgba(0,0,0,.7), 0 2px 0 rgba(0,0,0,.25); }

/* (b) modal cards: a touch of perspective context so the 3D pop reads, + deeper lift shadow */
.app-modal__card, .cf-modal-card{
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.07),
    0 40px 80px -24px rgba(0,0,0,.7),
    0 12px 30px -12px rgba(0,0,0,.55);
}

/* (c) dashboard / profile / wallet cards get the same raised-slab elevation */
.profile-card, .profile-activity, .wallet-card, .pf-out{
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.05),
    inset 0 -2px 6px rgba(0,0,0,.26),
    0 14px 30px -14px rgba(0,0,0,.55),
    0 4px 10px -6px rgba(0,0,0,.4);
}
.profile-card, .profile-activity, .wallet-card{
  transition: transform .26s cubic-bezier(.2,.7,.3,1), box-shadow .26s, border-color .26s;
}
.profile-card:hover, .profile-activity:hover, .wallet-card:hover{
  transform: translateY(-4px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.07),
    0 28px 52px -16px rgba(0,0,0,.62),
    0 9px 20px -9px rgba(0,0,0,.48);
}

/* ════════════════════════════════════════════════════════════
   Coin face fix (v190): solid backing under each face so the
   rust-red EDGE discs can NEVER show through as a "salmon disc"
   when the face image is mid-render / occluded in 3D.
   ════════════════════════════════════════════════════════════ */
.cf-coin .cf-face-red { background:#cd412a; border-radius:50%; backface-visibility:hidden; }
/* The "black" face backing must NOT be flat near-black: on a black landing the coin flips 180° and
   any 1-frame paint gap during the settle revealed this fill as a pitch-black blink ("a momentary
   simsiyah"). A subtle dark metallic gradient keeps the coin reading black while never being a flat
   pitch-black plate, so a momentary gap shows dark metal, not void (build 94.6). */
.cf-coin .cf-face-blue{ background:radial-gradient(circle at 42% 36%, #1d2028 0%, #15171d 60%, #101218 100%); border-radius:50%; backface-visibility:hidden; }
.cf-face-img{ position:relative; z-index:1; }

/* ════════════════════════════════════════════════════════════
   Weapon HOLD animation (v190) — the default atkWpn fades the gun
   to opacity:0 at 1.5s, which made a 3-round BURST lose its weapon
   before shots 2–3 (and the finisher flicker between shots). The
   .hold variant keeps the gun fully visible through all shots and
   only fades out at the very end. JS adds .hold for bursts + finisher.
   ════════════════════════════════════════════════════════════ */
.atk-weapon.hold      { animation: atkWpnHold     2.5s cubic-bezier(.2,1.5,.3,1) forwards; }
.atk-weapon.flip.hold { animation: atkWpnHoldFlip 2.5s cubic-bezier(.2,1.5,.3,1) forwards; }
@keyframes atkWpnHold {
  0%  { opacity:0; transform:translate(-50%,-50%) scale(.5) rotate(-3deg); }
  5%  { opacity:1; transform:translate(-50%,-50%) scale(.92) rotate(-1deg); }   /* visible before the first shot */
  13% { opacity:1; transform:translate(-50%,-50%) scale(1.18) rotate(2deg); }   /* punch in */
  22% { transform:translate(-50%,-50%) scale(1) rotate(0); }                    /* settled (~shot 1) */
  30% { transform:translate(-60%,-50%) scale(1.05) rotate(-2deg); }             /* recoil kick */
  40% { transform:translate(-50%,-50%) scale(1) rotate(0); }
  90% { opacity:1; transform:translate(-50%,-50%) scale(1); }                   /* HOLD visible through all burst rounds */
  100%{ opacity:0; transform:translate(-50%,-50%) scale(.92); }                 /* fade out AFTER the burst */
}
@keyframes atkWpnHoldFlip {
  0%  { opacity:0; transform:translate(-50%,-50%) scaleX(-1) scale(.5) rotate(3deg); }
  5%  { opacity:1; transform:translate(-50%,-50%) scaleX(-1) scale(.92) rotate(1deg); }
  13% { opacity:1; transform:translate(-50%,-50%) scaleX(-1) scale(1.18) rotate(-2deg); }
  22% { transform:translate(-50%,-50%) scaleX(-1) scale(1) rotate(0); }
  30% { transform:translate(-40%,-50%) scaleX(-1) scale(1.05) rotate(2deg); }
  40% { transform:translate(-50%,-50%) scaleX(-1) scale(1) rotate(0); }
  90% { opacity:1; transform:translate(-50%,-50%) scaleX(-1) scale(1); }
  100%{ opacity:0; transform:translate(-50%,-50%) scaleX(-1) scale(.92); }
}
/* .hold weapons (burst rounds + the FINISHER) run their full animation under reduce-motion too —
   the same reason as the default weapon above: the gun on a HIT is core game feedback, not
   decoration, and must look the same for every member with zero per-user setup. The old rule here
   forced opacity:0 under reduce-motion, which hid EVERY burst and finisher weapon for anyone with
   the OS "reduce motion" setting on — the "weapons still don't show" report that survived the
   default-weapon fix, because bursts and the finishing blow are exactly the weapons that get .hold. */

/* ════════════════════════════════════════════════════════════
   Unified Steam button (v190) — there were TWO .steam-btn defs, so
   it looked different per page and the dark navy fill vanished on the
   dark rustpot background. This single rule (last in cascade) makes it
   consistent everywhere and high-contrast: a SOLID bright-blue border +
   glow so it's clearly visible on any background. Size/layout variants
   (steam-btn-lg, cf-create-open-btn) are untouched.
   ════════════════════════════════════════════════════════════ */
.steam-btn{
  background: linear-gradient(135deg,#2a4f72 0%,#1b3349 55%,#16202c 100%) !important;
  border: 2px solid #66c0f4 !important;
  color:#fff !important;
  box-shadow: 0 8px 22px rgba(0,0,0,.45), 0 0 0 1px rgba(102,192,244,.30), inset 0 1px 0 rgba(255,255,255,.12) !important;
}
.steam-btn:hover{
  background: linear-gradient(135deg,#346089 0%,#214157 55%,#1a2735 100%) !important;
  border-color:#8fd3ff !important;
  box-shadow: 0 12px 30px rgba(0,0,0,.5), 0 0 0 3px rgba(102,192,244,.22), 0 0 20px rgba(102,192,244,.40) !important;
}
.steam-btn .steam-ico, .steam-btn svg{ color:#9fe0ff !important; }

/* ════════════════════════════════════════════════════════════
   3D coin selection swatches (v191) — the picker coins are now real
   3D coin images (tilted, rust edge, like the in-game coin). The old
   active animation was a flat rotateY(360) that collapsed the image
   edge-on; replace it with a gentle bob + hover lift so they stay
   lively WITHOUT breaking the 3D look.
   ════════════════════════════════════════════════════════════ */
.cf-side-btn.active .cf-side-coin{ animation: coinBob 2.4s ease-in-out infinite !important; }
@keyframes coinBob{ 0%,100%{ transform: translateY(0) scale(1); } 50%{ transform: translateY(-4px) scale(1.05); } }
.cf-side-btn .cf-side-coin{ transition: transform .25s cubic-bezier(.2,.7,.3,1); }
.cf-side-btn:hover .cf-side-coin{ transform: translateY(-3px) scale(1.06); }
.cf-side-coin-img{ filter: drop-shadow(0 5px 8px rgba(0,0,0,.5)); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .cf-side-btn.active .cf-side-coin{ animation:none !important; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ BLACK-WIN COIN FIX (v195) — ROOT CAUSE: a `filter` on .cf-coin flattens
   preserve-3d, so the rust edge-discs (appended after the faces in the DOM) paint
   ON TOP of the BLACK face → the coral disc seen on "BLACK WINS". A later rule
   (the silver black-win glow) had re-introduced that filter. Keep .cf-coin strictly
   filter-free and render every win glow on the WRAPPER (not a 3D context).
   ════════════════════════════════════════════════════════════════════════ */
.cf-coin.landed-blue, .cf-coin.landed-red{ filter:none !important; }
.cf-coin-wrap.landed-blue{ filter: drop-shadow(0 0 30px rgba(206,214,228,.85)) drop-shadow(0 12px 30px rgba(0,0,0,.6)) !important; }
.cf-coin-wrap.landed-red{  filter: drop-shadow(0 0 30px rgba(234,179,8,.9))   drop-shadow(0 12px 30px rgba(0,0,0,.6)) !important; }

/* Conversion-rate note: make the leading "$1" stand out */
.rate-lead{ font-weight:900; font-size:1.2em; color:#fff; }

/* ── Coinflip watch modal: player avatars + corner side-coin + stake/% (v197) ── */
.cf-modal-players{ display:flex; align-items:flex-start; justify-content:center; gap:18px; }
.cf-modal-player{ display:flex; flex-direction:column; align-items:center; gap:7px; min-width:120px; transition:opacity .25s ease, transform .25s ease; }
.cf-modal-av-wrap{ position:relative; width:66px; height:66px; }
.cf-modal-av{ width:66px; height:66px; border-radius:50%; overflow:hidden; background:#1b1f24; border:3px solid rgba(255,255,255,.12); display:flex; align-items:center; justify-content:center; box-shadow:0 6px 18px rgba(0,0,0,.45); }
.cf-modal-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.cf-modal-av span{ font-size:30px; font-weight:800; color:#cfd6dd; }
#cfModalRed  .cf-modal-av{ border-color:rgba(225,72,72,.85); }
#cfModalBlue .cf-modal-av{ border-color:rgba(120,130,140,.85); }
.cf-side-coin{ position:absolute; right:-4px; bottom:-4px; width:38px; height:38px; border-radius:50%; overflow:hidden; border:2px solid #0e1116; background:#0e1116; box-shadow:0 3px 8px rgba(0,0,0,.5); }
.cf-side-coin img{ width:100%; height:100%; object-fit:cover; display:block; }
.cf-modal-pname{ font-weight:800; font-size:15px; color:#eef2f5; max-width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cf-modal-pamt{ display:flex; align-items:center; gap:5px; font-weight:800; color:#ffcf4d; font-size:15px; }
.cf-modal-pamt .coin-ico{ width:15px; height:15px; }
.cf-modal-pct{ font-style:normal; font-weight:700; color:#8b949e; background:rgba(255,255,255,.06); padding:1px 8px; border-radius:999px; font-size:12.5px; }
.cf-modal-player.winner .cf-modal-av{ border-color:#ffcf4d; box-shadow:0 0 0 3px rgba(255,207,77,.25),0 6px 18px rgba(0,0,0,.5); }
.cf-modal-player.winner .cf-modal-pname{ color:#ffcf4d; }
.cf-modal-player.loser{ opacity:.5; }
.cf-modal-vs{ align-self:center; margin-top:34px; font-weight:900; color:#6b7480; letter-spacing:1px; }
@media (max-width:480px){
  .cf-modal-av,.cf-modal-av-wrap{ width:74px; height:74px; }
  .cf-modal-av span{ font-size:26px; }
  .cf-side-coin{ width:30px; height:30px; }
  .cf-modal-players{ gap:10px; }
  .cf-modal-player{ min-width:96px; }
  .cf-modal-vs{ margin-top:26px; }
}

/* ════════════════════════════════════════════════════════════════════════
   QUICK GAME (v198) — instant 3-way vertical roller
   ════════════════════════════════════════════════════════════════════════ */
.qg-header{ text-align:center; margin:18px 0 14px; }
.qg-tagline{ color:#9aa3ad; margin:6px 0 0; font-size:14px; }
.qg-arena{ max-width:560px; margin:0 auto; display:flex; flex-direction:column; align-items:center; gap:16px; }

/* The reel */
.qg-stage{ width:100%; display:flex; flex-direction:column; align-items:center; gap:10px; }
.qg-reel-viewport{ position:relative; width:100%; max-width:420px; height:264px; overflow:hidden;
  border-radius:18px; background:linear-gradient(180deg,#15181d,#10131a);
  border:1px solid rgba(255,255,255,.07); box-shadow:inset 0 0 40px rgba(0,0,0,.55); }
/* fade top + bottom edges so tiles roll in/out softly */
.qg-reel-viewport::before,.qg-reel-viewport::after{ content:""; position:absolute; left:0; right:0; height:64px; z-index:3; pointer-events:none; }
.qg-reel-viewport::before{ top:0;    background:linear-gradient(180deg,#10131a,rgba(16,19,26,0)); }
.qg-reel-viewport::after{ bottom:0; background:linear-gradient(0deg,#10131a,rgba(16,19,26,0)); }
.qg-reel{ display:flex; flex-direction:column; will-change:transform; }
.qg-marker{ position:absolute; left:0; right:0; display:none; z-index:2; pointer-events:none;
  border-top:2px solid rgba(255,207,77,.55); border-bottom:2px solid rgba(255,207,77,.55);
  background:linear-gradient(90deg,rgba(255,207,77,.10),rgba(255,207,77,.04),rgba(255,207,77,.10)); }
.qg-idle{ position:absolute; inset:0; z-index:4; display:flex; align-items:center; justify-content:center;
  color:#8b939d; font-size:14px; padding:0 24px; text-align:center; }

.qg-tile{ height:88px; flex:0 0 88px; display:flex; align-items:center; gap:12px; padding:0 18px; box-sizing:border-box; }
.qg-tile-av{ width:54px; height:54px; flex:0 0 54px; border-radius:50%; overflow:hidden; background:#1b1f24;
  display:flex; align-items:center; justify-content:center; border:2px solid rgba(255,255,255,.1); }
.qg-tile-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.qg-tile-av span{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-weight:800; color:#0e1116; font-size:20px; }
.qg-tile-info{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.qg-tile-name{ font-weight:800; color:#e9eef2; font-size:15px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.qg-tile-amt{ display:flex; align-items:center; gap:4px; color:#ffcf4d; font-weight:700; font-size:13px; }
.qg-tile-amt .coin-ico{ width:13px; height:13px; }
.qg-tile.peek{ background:rgba(255,255,255,.04); }
.qg-tile.win{ background:linear-gradient(90deg,rgba(255,207,77,.16),rgba(255,207,77,.04)); }
.qg-tile.win .qg-tile-av{ border-color:#ffcf4d; box-shadow:0 0 0 3px rgba(255,207,77,.25); }
.qg-tile.win .qg-tile-name{ color:#ffcf4d; }

.qg-result{ min-height:26px; font-weight:800; font-size:18px; opacity:0; transform:translateY(4px); transition:opacity .3s,transform .3s; display:flex; align-items:center; gap:6px; }
.qg-result.show{ opacity:1; transform:none; }
.qg-result.win{ color:#ffcf4d; }
.qg-result.lose{ color:#cbd3da; }
.qg-result .coin-ico{ width:18px; height:18px; }

/* Players row */
.qg-players{ display:flex; justify-content:center; gap:14px; flex-wrap:wrap; }
.qg-player{ display:flex; flex-direction:column; align-items:center; gap:5px; width:108px; transition:opacity .3s,transform .3s; }
.qg-player-av{ position:relative; width:60px; height:60px; border-radius:50%; overflow:hidden; background:#1b1f24; display:flex; align-items:center; justify-content:center; border:3px solid rgba(255,255,255,.12); }
.qg-player-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.qg-player-av span{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-weight:800; color:#0e1116; font-size:22px; }
.qg-you-tag{ position:absolute; bottom:-3px; left:50%; transform:translateX(-50%); background:#ffcf4d; color:#0e1116; font-size:9px; font-weight:900; padding:1px 6px; border-radius:999px; letter-spacing:.5px; }
.qg-player-name{ font-weight:700; font-size:13.5px; color:#e9eef2; max-width:108px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.qg-player-amt{ display:flex; align-items:center; gap:4px; color:#ffcf4d; font-weight:700; font-size:13px; }
.qg-player-amt .coin-ico{ width:13px; height:13px; }
.qg-player.win .qg-player-av{ border-color:#ffcf4d; box-shadow:0 0 0 3px rgba(255,207,77,.28),0 6px 16px rgba(0,0,0,.5); }
.qg-player.win .qg-player-name{ color:#ffcf4d; }
.qg-player.out{ opacity:.45; }

/* Controls */
.qg-controls{ width:100%; max-width:420px; display:flex; flex-direction:column; align-items:center; gap:12px; }
.qg-stake-row{ width:100%; display:flex; flex-direction:column; gap:6px; }
.qg-stake-label{ font-size:12px; color:#8b939d; font-weight:700; text-transform:uppercase; letter-spacing:.5px; }
.qg-stake-input{ display:flex; align-items:center; gap:8px; background:#15181d; border:1px solid rgba(255,255,255,.1); border-radius:12px; padding:10px 14px; }
.qg-stake-input .coin-ico{ width:18px; height:18px; flex:0 0 18px; }
.qg-stake-input input{ flex:1; background:transparent; border:0; outline:0; color:#fff; font-size:18px; font-weight:800; width:100%; }
.qg-stake-input input.bad{ animation:qgShake .4s; }
@keyframes qgShake{ 0%,100%{transform:translateX(0)} 25%{transform:translateX(-5px)} 75%{transform:translateX(5px)} }
.qg-chips{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.qg-chip{ background:#1b1f24; border:1px solid rgba(255,255,255,.1); color:#cbd3da; border-radius:999px; padding:7px 14px; font-weight:800; font-size:13px; cursor:pointer; transition:background .15s,border-color .15s; }
.qg-chip:hover{ background:#22272e; border-color:rgba(255,207,77,.5); }
.qg-chip-op{ color:#ffcf4d; }
.qg-play-btn{ width:100%; text-align:center; background:linear-gradient(180deg,#ffd95e,#f0a92c);
  color:#1a1205; border:0; border-radius:14px; padding:15px; font-size:17px; font-weight:900; cursor:pointer;
  display:flex; align-items:center; justify-content:center; gap:8px; text-decoration:none; transition:filter .15s,transform .05s; box-shadow:0 6px 18px rgba(240,169,44,.3); }
.qg-play-btn:hover{ filter:brightness(1.06); }
.qg-play-btn:active{ transform:translateY(1px); }
.qg-play-btn[disabled],.qg-play-btn.rolling{ filter:grayscale(.4) brightness(.85); cursor:default; }
.qg-play-sub{ font-size:12px; font-weight:700; opacity:.7; }
.qg-hint{ color:#7e868f; font-size:12px; text-align:center; margin:0; }

/* Provably fair */
.qg-fair{ width:100%; max-width:420px; }
.qg-fair-toggle{ width:100%; background:#15181d; border:1px solid rgba(255,255,255,.08); color:#9aa3ad; border-radius:12px; padding:10px; font-weight:700; font-size:13px; cursor:pointer; }
.qg-fair-panel{ margin-top:8px; background:#0e1116; border:1px solid rgba(255,255,255,.06); border-radius:12px; padding:12px 14px; font-size:12px; color:#9aa3ad; }
.qg-fair-panel div{ margin:4px 0; word-break:break-all; }
.qg-fair-panel code{ color:#cbd3da; }
.qg-fair-note{ margin:8px 0 0; color:#6b7079; }

/* Recent games */
.qg-recent{ max-width:560px; margin:22px auto 0; }
.qg-recent-label{ display:block; font-size:11px; font-weight:800; color:#7e868f; letter-spacing:1px; margin-bottom:8px; text-align:center; }
.qg-recent-items{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.qg-recent-item{ display:flex; align-items:center; gap:8px; background:#15181d; border:1px solid rgba(255,255,255,.07); border-radius:10px; padding:6px 12px; font-size:13px; }
.qg-recent-item.mine{ border-color:rgba(255,207,77,.45); }
.qg-recent-win{ color:#e9eef2; font-weight:700; }
.qg-recent-prize{ display:flex; align-items:center; gap:3px; color:#ffcf4d; font-weight:700; }
.qg-recent-prize .coin-ico{ width:12px; height:12px; }
.qg-recent-empty{ color:#7e868f; font-size:13px; }

/* Games-menu card */
.ngm-art-quick{ background:linear-gradient(135deg,#3a2f12,#1c1a24); display:flex; align-items:center; justify-content:center; }
.ngm-art-quick svg{ width:64px; height:64px; }
.qg-range{ display:flex; align-items:center; gap:5px; font-size:13.5px; font-weight:700; color:#cbd3da; }
.qg-range .coin-ico{ width:14px; height:14px; }
.qg-pot{ display:flex; align-items:center; gap:6px; font-size:17px; font-weight:900; color:#ffcf4d; white-space:nowrap; }
.qg-pot-label{ font-size:10px; font-weight:800; letter-spacing:1px; color:#8b939d; }
.qg-pot .coin-ico{ width:18px; height:18px; }
.qg-range-hint{ font-size:11px; font-weight:700; color:#7e868f; text-transform:none; letter-spacing:0; }
.qg-range-hint .coin-ico{ width:11px; height:11px; }

.qg-player.empty{ opacity:.6; }
.qg-player.empty .qg-player-av{ border-style:dashed; border-color:rgba(255,255,255,.2); background:transparent; }
.qg-player.empty .qg-player-name,.qg-player.empty .qg-player-amt{ color:#6b7079; }
.qg-seat-q{ font-size:26px; font-weight:400; color:#5a626b; line-height:1; }

.qg-btn-row{ width:100%; max-width:420px; display:flex; gap:10px; }
.qg-btn-row .qg-play-btn{ flex:1; }
.qg-bot-btn{ flex:0 0 auto; display:flex; align-items:center; justify-content:center; gap:7px; background:rgba(52,211,153,.12); border:1.5px solid rgba(52,211,153,.55); color:#34d399; border-radius:14px; padding:15px 18px; font-size:15px; font-weight:900; cursor:pointer; transition:background .15s,filter .15s,transform .05s; }
.qg-bot-btn:hover{ background:rgba(52,211,153,.2); }
.qg-bot-btn:active{ transform:translateY(1px); }
.qg-bot-btn[disabled]{ opacity:.5; cursor:default; }
.qg-bot-check{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border-radius:50%; background:linear-gradient(150deg,#5cf08f,#13a04f); color:#062012; box-shadow:inset 0 1px 1px rgba(255,255,255,.3); }
.qg-bot-check svg{ width:11px; height:11px; }

@media (max-width:480px){
  .qg-reel-viewport{ height:222px; }
  .qg-tile{ height:74px; flex-basis:74px; padding:0 14px; gap:10px; }
  .qg-tile-av{ width:46px; height:46px; flex-basis:46px; }
  .qg-player{ width:96px; }
  .qg-player-av{ width:52px; height:52px; }
  .qg-range{ font-size:12px; }
  .qg-pot{ font-size:15px; }
  .qg-bot-btn{ padding:14px; font-size:14px; }
}

/* Homepage Quick Game card art (v198) */
.hm-game-quick .hm-game-art{ background:radial-gradient(80% 120% at 50% 0%, rgba(255,183,71,.26), transparent 60%), repeating-linear-gradient(135deg, rgba(255,255,255,.025) 0 12px, transparent 12px 24px), linear-gradient(180deg,#2c2614,#161827); }
.hm-game-rustpot .hm-game-art{ background:radial-gradient(80% 120% at 50% 0%, rgba(239,68,68,.24), transparent 60%), repeating-linear-gradient(135deg, rgba(255,255,255,.025) 0 12px, transparent 12px 24px), linear-gradient(180deg,#2a1616,#161827); }
.hm-ico-quick{ width:72px; height:72px; }

/* ============================================================================
   QUICK GAME v2 — easyskins-style feed + reveal modal (v201)
   Reuses existing .qg-header/.qg-tagline/.qg-stake-input/.qg-chip/.qg-you-tag/
   .qg-bot-check/.coin-ico. New feed + modal below.
   ========================================================================== */
.qg-rules{ color:#7e868f; font-size:12.5px; max-width:620px; margin:6px auto 0; text-align:center; }

/* Top stake bar + create */
.qg-top{ max-width:620px; margin:18px auto 0; display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap; }
.qg-top-stake{ flex:1; min-width:240px; display:flex; flex-direction:column; gap:6px; }
.qg-create-btn{ flex:0 0 auto; background:linear-gradient(180deg,#ffd95e,#f0a92c); color:#1a1205; border:0; border-radius:14px; padding:14px 22px; font-size:15px; font-weight:900; cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; box-shadow:0 6px 18px rgba(240,169,44,.3); transition:filter .15s,transform .05s; height:48px; }
.qg-create-btn:hover{ filter:brightness(1.06); }
.qg-create-btn:active{ transform:translateY(1px); }
/* New Game button sits directly to the RIGHT of the stake input (chips + bounds stay below) */
.qg-stake-row{ display:flex; gap:10px; align-items:stretch; }
.qg-stake-row .qg-stake-input{ flex:1 1 auto; min-width:0; }
.qg-stake-row .qg-create-btn{ flex:0 0 auto; height:auto; white-space:nowrap; }
@media (max-width:520px){ .qg-stake-row{ flex-direction:column; } .qg-stake-row .qg-create-btn{ width:100%; justify-content:center; } }

/* Feed */
.qg-feed{ max-width:620px; margin:22px auto 0; display:flex; flex-direction:column; gap:24px; }
.qg-feed .qg-recent{ max-width:none; margin:0; }
.qg-section-label{ display:flex; align-items:center; gap:8px; font-size:11px; font-weight:800; color:#8b95a0; letter-spacing:1.5px; margin-bottom:12px; }
.qg-section-label::before{ content:""; width:16px; height:2px; border-radius:2px; background:linear-gradient(90deg, var(--gold2,#eeb351), transparent); }
.qg-open,.qg-recent{ display:flex; flex-direction:column; gap:12px; }
.qg-loading,.qg-empty{ color:#8a929d; font-size:13px; text-align:center; padding:26px 22px; background:radial-gradient(120% 80% at 50% -20%, rgba(238,179,81,.06), transparent 60%), linear-gradient(180deg,#1a1e26,#141821); border:1px solid rgba(255,255,255,.07); border-radius:16px; }

/* Open game card */
.qg-card{ position:relative; background:
    radial-gradient(120% 80% at 50% -12%, rgba(238,179,81,.10), transparent 55%),
    linear-gradient(180deg,#1c212b,#141821);
  border:1px solid rgba(255,255,255,.09); border-radius:18px; padding:16px 18px 18px; overflow:hidden;
  box-shadow:0 10px 30px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.05);
  transition:transform .18s cubic-bezier(.4,0,.2,1), border-color .18s, box-shadow .18s; }
.qg-card::before{ content:""; position:absolute; top:0; left:18px; right:18px; height:2px; opacity:.7;
  background:linear-gradient(90deg,transparent, rgba(238,179,81,.7), transparent); }
.qg-card:hover{ transform:translateY(-3px); border-color:rgba(238,179,81,.28);
  box-shadow:0 16px 40px rgba(0,0,0,.5), 0 0 0 1px rgba(238,179,81,.12), inset 0 1px 0 rgba(255,255,255,.06); }
.qg-card-head{ display:flex; align-items:center; gap:10px; margin-bottom:15px; padding-bottom:12px; flex-wrap:wrap; border-bottom:1px solid rgba(255,255,255,.06); }
.qg-card-id{ font-weight:800; font-size:13px; color:#dbe2e9; letter-spacing:.01em; }
.qg-card-range{ display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:#9aa3ad; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); border-radius:999px; padding:3px 10px; }
.qg-card-range .coin-ico{ width:12px; height:12px; }
.qg-card-range-open{ color:#7e868f; }
.qg-card-pot{ margin-left:auto; display:inline-flex; align-items:center; gap:6px; font-family:var(--fd,inherit); font-weight:900; font-size:16px; color:#ffd869;
  background:linear-gradient(180deg, rgba(255,207,77,.15), rgba(255,207,77,.05)); border:1px solid rgba(255,207,77,.3);
  border-radius:999px; padding:4px 12px 4px 10px; box-shadow:0 2px 10px rgba(240,168,44,.2), inset 0 1px 0 rgba(255,255,255,.12); text-shadow:0 1px 6px rgba(240,168,44,.4); }
.qg-card-pot-l{ font-size:9px; font-weight:800; letter-spacing:1px; color:#c99a3e; }
.qg-card-pot .coin-ico{ width:15px; height:15px; filter:drop-shadow(0 1px 3px rgba(200,140,40,.5)); }
.qg-card-seats{ display:flex; gap:10px; }
.qg-seat{ position:relative; flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; gap:6px;
  background:linear-gradient(180deg, rgba(255,255,255,.035), rgba(0,0,0,.18)); border:1px solid rgba(255,255,255,.06); border-radius:14px; padding:14px 6px 12px;
  transition:border-color .16s, background .16s, transform .16s; }
.qg-seat:not(.empty):hover{ transform:translateY(-2px); border-color:rgba(255,255,255,.14); }
.qg-seat.me{ border-color:rgba(255,207,77,.45); background:linear-gradient(180deg, rgba(255,207,77,.10), rgba(255,207,77,.02)); box-shadow:0 0 0 1px rgba(255,207,77,.15), 0 6px 18px rgba(200,140,40,.12); }
.qg-seat-av{ position:relative; width:56px; height:56px; border-radius:50%; overflow:hidden; background:#1b1f24; display:flex; align-items:center; justify-content:center; border:2px solid rgba(255,255,255,.12); }
.qg-seat:not(.empty) .qg-seat-av{ box-shadow:0 6px 16px rgba(0,0,0,.45), inset 0 0 0 1px rgba(255,255,255,.06), 0 0 0 3px rgba(255,255,255,.03); border-color:rgba(255,255,255,.22); }
.qg-seat.me .qg-seat-av{ border-color:rgba(255,207,77,.6); box-shadow:0 6px 16px rgba(200,140,40,.35), inset 0 0 0 1px rgba(255,207,77,.2); }
.qg-seat-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.qg-seat-av span{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-weight:800; color:#0e1116; font-size:20px; }
.qg-seat.empty .qg-seat-av{ border-style:dashed; border-color:rgba(255,255,255,.2); background:rgba(255,255,255,.015); }
.qg-seat.empty:hover .qg-seat-av{ border-color:rgba(238,179,81,.4); }
.qg-seat-plus{ font-size:24px; color:#5a626b; transition:color .16s; }
.qg-seat.empty:hover .qg-seat-plus{ color:rgba(238,179,81,.85); }
.qg-seat-name{ font-weight:700; font-size:12.5px; color:#e9eef2; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.qg-seat.empty .qg-seat-name{ color:#6b7079; }
.qg-seat-amt{ display:flex; align-items:center; gap:3px; color:#ffcf4d; font-weight:800; font-size:12.5px; }
.qg-seat-amt .coin-ico{ width:11px; height:11px; }
.qg-seat-pct{ color:#7e868f; font-weight:700; }
.qg-seat-tick{ position:absolute; top:-3px; right:-3px; width:20px; height:20px; border-radius:50%; background:linear-gradient(150deg,#5cf08f,#13a04f); display:flex; align-items:center; justify-content:center; border:2.5px solid #15181d; box-shadow:0 2px 6px rgba(15,120,68,.6), inset 0 1px 1px rgba(255,255,255,.35); }
.qg-seat-tick svg{ width:11px; height:11px; color:#062012; }
.qg-card-foot{ display:flex; align-items:center; gap:10px; margin-top:14px; }
.qg-card-foot-note{ font-size:12px; font-weight:700; color:#34d399; }
.qg-card-btn{ flex:1; display:inline-flex; align-items:center; justify-content:center; gap:7px; border:0; border-radius:12px; padding:12px; font-size:14.5px; font-weight:800; cursor:pointer; transition:filter .15s,transform .05s; }
.qg-join-row{ display:flex; gap:8px; align-items:stretch; width:100%; }
.qg-join-row .qg-card-btn{ flex:1 1 auto; }
.qg-join-box{ display:flex; flex-direction:column; gap:6px; width:100%; }
.qg-join-label{ display:flex; align-items:center; justify-content:center; gap:5px; font-size:11.5px; font-weight:800; letter-spacing:.03em; color:var(--gold2); }
.qg-join-range{ color:var(--t3); font-weight:700; }
.qg-join-range .coin-ico{ width:.7em; height:.7em; }
.qg-join-input-wrap{ position:relative; flex:0 0 auto; display:flex; align-items:center; }
.qg-join-input-wrap .coin-ico{ position:absolute; left:10px; width:15px; height:15px; pointer-events:none; opacity:.9; }
.qg-join-amt{ width:118px; flex:0 0 auto; min-height:46px; padding:0 10px 0 30px; border-radius:12px; border:2px solid rgba(238,179,81,.55); background:rgba(238,179,81,.08); color:#ffe9b8; font-family:var(--fd); font-weight:800; font-size:17px; text-align:left; -moz-appearance:textfield; box-shadow:inset 0 1px 4px rgba(0,0,0,.35); }
.qg-join-amt:focus{ outline:none; border-color:var(--gold2); background:rgba(238,179,81,.14); box-shadow:0 0 0 3px rgba(238,179,81,.18); }
.qg-join-amt::-webkit-inner-spin-button,.qg-join-amt::-webkit-outer-spin-button{ -webkit-appearance:none; margin:0; }
.qg-join-amt.bad{ border-color:#ef4444; background:rgba(239,68,68,.12); color:#ffd5d5; }
.qg-card-btn.join{ background:linear-gradient(180deg,#ffd95e,#f0a92c); color:#1a1205; }
.qg-card-btn.bot{ background:rgba(52,211,153,.14); border:1.5px solid rgba(52,211,153,.55); color:#34d399; }
.qg-card-btn.ready{ background:rgba(52,211,153,.08); border:1.5px solid rgba(52,211,153,.35); color:#34d399; cursor:default; }
.qg-card-btn[disabled]{ background:#1b1f24; color:#6b7079; cursor:default; }
.qg-card-btn:not([disabled]):hover{ filter:brightness(1.07); }
.qg-card-btn:not([disabled]):active{ transform:translateY(1px); }
.qg-card-btn .qg-bot-check{ width:18px; height:18px; }
.qg-join-odds{ font-size:11.5px; font-weight:800; background:rgba(26,18,5,.22); color:#1a1205; border-radius:7px; padding:2px 7px; letter-spacing:.02em; }

/* Recent game row */
.qg-rrow{ background:radial-gradient(110% 70% at 50% -15%, rgba(238,179,81,.06), transparent 55%), linear-gradient(180deg, rgba(255,255,255,.025), rgba(0,0,0,.16)); border:1px solid rgba(255,255,255,.07); border-radius:15px; padding:13px 15px; cursor:pointer; transition:border-color .15s, background .15s, transform .15s, box-shadow .15s; }
.qg-rrow:hover{ border-color:rgba(255,207,77,.35); background:radial-gradient(110% 70% at 50% -15%, rgba(238,179,81,.10), transparent 55%), linear-gradient(180deg, rgba(255,207,77,.05), rgba(0,0,0,.14)); transform:translateY(-2px); box-shadow:0 10px 26px rgba(0,0,0,.35); }
.qg-rrow.mine{ border-color:rgba(255,207,77,.28); }
.qg-rrow-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.qg-rrow-id{ font-weight:800; font-size:12px; color:#9aa3ad; }
.qg-rrow-fair{ font-size:11px; font-weight:700; color:#6b7079; border:1px solid rgba(255,255,255,.1); border-radius:999px; padding:2px 9px; }
.qg-rrow-seats{ display:flex; align-items:center; justify-content:center; gap:8px; }
.qg-rseat{ display:flex; flex-direction:column; align-items:center; gap:4px; }
.qg-rseat-av{ position:relative; width:42px; height:42px; border-radius:50%; overflow:hidden; background:#1b1f24; display:flex; align-items:center; justify-content:center; border:2px solid rgba(255,255,255,.12); }
.qg-rseat-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.qg-rseat-av span{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-weight:800; color:#0e1116; font-size:16px; }
.qg-rseat.win .qg-rseat-av{ border-color:#ffcf4d; box-shadow:0 0 0 2px rgba(255,207,77,.3); }
.qg-rseat.out{ opacity:.5; }
.qg-rseat-crown{ position:absolute; top:-9px; left:50%; transform:translateX(-50%); font-size:13px; }
.qg-rseat-amt{ display:flex; align-items:center; gap:2px; font-size:11px; font-weight:700; color:#cbd3da; }
.qg-rseat-amt .coin-ico{ width:10px; height:10px; }
.qg-rseat.win .qg-rseat-amt{ color:#ffcf4d; }
.qg-rvs{ font-size:10px; font-weight:800; color:#5a626b; }
.qg-rrow-win{ display:flex; align-items:center; justify-content:space-between; margin-top:10px; padding-top:10px; border-top:1px solid rgba(255,255,255,.06); }
.qg-rrow-win-name{ font-weight:800; font-size:13px; color:#3ddc8a; text-shadow:0 0 10px rgba(52,220,138,.35); }
.qg-rrow-win-amt{ display:flex; align-items:center; gap:4px; font-weight:800; color:#ffd869; text-shadow:0 1px 6px rgba(240,168,44,.3); }
.qg-rrow-win-amt .coin-ico{ width:13px; height:13px; }
.qg-rrow .qg-you-tag{ font-size:8px; padding:1px 5px; }

/* Reveal / Watch modal */
.qgm-overlay{ position:fixed; inset:0; z-index:1000; background:radial-gradient(120% 90% at 50% 34%, rgba(12,9,28,.28), rgba(6,8,14,.56) 72%); backdrop-filter:blur(12px) saturate(.85) brightness(.72); -webkit-backdrop-filter:blur(12px) saturate(.85) brightness(.72); display:flex; align-items:center; justify-content:center; padding:18px; }
.qgm-overlay[hidden]{ display:none; }
.qgm-box{ width:100%; max-width:520px; background:linear-gradient(180deg,rgba(26,16,54,.82),rgba(10,9,26,.88)); -webkit-backdrop-filter:blur(20px) saturate(.95); backdrop-filter:blur(20px) saturate(.95); border:1px solid rgba(255,255,255,.1); border-radius:18px; padding:18px; box-shadow:0 24px 60px rgba(0,0,0,.6); }
.qgm-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.qgm-title{ font-weight:900; font-size:17px; color:#e9eef2; }
.qgm-close{ background:#1b1f24; border:1px solid rgba(255,255,255,.1); color:#cbd3da; width:32px; height:32px; border-radius:9px; font-size:14px; cursor:pointer; }
.qgm-close:hover{ background:#22272e; }
.qgm-reels{ display:flex; gap:12px; justify-content:center; }
.qgm-col{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; gap:6px; transition:opacity .3s; }
.qgm-col-vp{ width:100%; height:120px; overflow:hidden; border-radius:14px; background:#0e1116; border:2px solid rgba(255,255,255,.08); position:relative; }
.qgm-col-reel{ display:flex; flex-direction:column; will-change:transform; }
.qgm-tile{ height:120px; display:flex; align-items:center; justify-content:center; }
.qgm-tile img,.qgm-tile span{ width:84px; height:84px; border-radius:50%; object-fit:cover; display:flex; align-items:center; justify-content:center; font-weight:800; color:#0e1116; font-size:30px; }
.qgm-col-name{ font-weight:700; font-size:12.5px; color:#e9eef2; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; opacity:0; transition:opacity .35s ease; }
.qgm-col-amt{ display:flex; align-items:center; gap:3px; font-size:11.5px; font-weight:700; color:#9aa3ad; opacity:0; transition:opacity .35s ease; }
.qgm-col.landed .qgm-col-name, .qgm-col.landed .qgm-col-amt{ opacity:1; }
.qgm-col-amt .coin-ico{ width:11px; height:11px; }
.qgm-col.dim{ opacity:.42; }
.qgm-col.win .qgm-col-vp{ border-color:#ffcf4d; box-shadow:0 0 0 3px rgba(255,207,77,.28),0 0 22px rgba(255,207,77,.35); }
.qgm-col.win .qgm-col-name{ color:#ffcf4d; }
.qgm-result{ min-height:26px; text-align:center; font-weight:900; font-size:18px; margin-top:16px; opacity:0; transform:translateY(4px); transition:opacity .3s,transform .3s; display:flex; align-items:center; justify-content:center; gap:6px; }
.qgm-result.show{ opacity:1; transform:none; }
.qgm-result.win{ color:#ffcf4d; }
.qgm-result.lose{ color:#cbd3da; }
.qgm-result .coin-ico{ width:18px; height:18px; }
.qgm-fair{ margin-top:16px; }
.qgm-fair-toggle{ width:100%; background:#0e1116; border:1px solid rgba(255,255,255,.08); color:#9aa3ad; border-radius:11px; padding:9px; font-weight:700; font-size:12.5px; cursor:pointer; }
.qgm-fair-panel{ margin-top:8px; background:#0e1116; border:1px solid rgba(255,255,255,.06); border-radius:11px; padding:11px 13px; font-size:11.5px; color:#9aa3ad; }
.qgm-fair-panel div{ margin:4px 0; word-break:break-all; }
.qgm-fair-panel code{ color:#cbd3da; }
.qgm-fair-note{ margin:8px 0 0; color:#6b7079; font-size:11px; }
.qgm-share{ display:flex; gap:8px; margin-top:10px; }
.qgm-share input{ flex:1; min-width:0; background:#0e1116; border:1px solid rgba(255,255,255,.08); border-radius:10px; color:#9aa3ad; font-size:12px; padding:9px 11px; }
.qgm-share-btn{ flex:0 0 auto; background:#1b1f24; border:1px solid rgba(255,255,255,.12); color:#cbd3da; border-radius:10px; padding:9px 14px; font-weight:700; font-size:12.5px; cursor:pointer; }
.qgm-share-btn:hover{ background:#22272e; }

@media (max-width:560px){
  .qg-top{ gap:10px; }
  .qg-create-btn{ width:100%; justify-content:center; }
  .qgm-col-vp{ height:96px; }
  .qgm-tile{ height:96px; }
  .qgm-tile img,.qgm-tile span{ width:66px; height:66px; font-size:24px; }
  .qg-seat-av{ width:48px; height:48px; }
  .qg-card-seats{ gap:7px; }
}

/* ============================================================================
   MONOCHROME EMOJI (v202) — colour emojis (bell, gift, chat system tags…) are
   desaturated to match the monochrome SVG nav icons. Wrap an inline emoji in
   <span class="emoji-mono">…</span>, or rely on the per-context rules below.
   ========================================================================== */
.emoji-mono{ filter: grayscale(1); opacity:.82; }
/* Chat system messages ("📢 ANNOUNCEMENT", "🛡️ MOD", "🌧️ RAIN", "🏁 RACES") —
   grey the whole system name incl. its leading emoji. */
.chat-message-system .chat-name{ filter: grayscale(1); }

/* ============================================================================
   $-STYLED COIN AMOUNTS (v203) — 100 coins = $1, so the whole-dollar digits are
   shown normally and the trailing 2 (cents) are muted/smaller. Emitted by
   coinHTML() (JS) and coin_html() (PHP). Colour is inherited from context.
   ========================================================================== */
.coin-d{ font-weight:inherit; vertical-align:baseline; line-height:inherit; }
/* The whole amount as ONE inline unit. In a flex/inline-flex parent with `gap`, this becomes
   a single flex item so the parent's gap can't open a space between the dollars and cents
   (the "1   90" bug); the digits inside it always sit flush together. */
.coin-amt{ display:inline-block; white-space:nowrap; vertical-align:baseline; line-height:inherit; }
.coin-amt .coin-d, .coin-amt .coin-c{ letter-spacing:normal; }
/* Live $-format INSIDE money inputs: the field's own text goes transparent (caret stays
   visible) and an aligned overlay shows the leading dollar digits bold + trailing cents
   muted. No commas in the overlay so it lines up char-for-char with the typed digits. */
.coin-fmt-holder{ position:relative; display:block; flex:1 1 auto; min-width:0; }
/* Money inputs always render their text in the visible theme color. The old transparent-text
   overlay is removed; this also overrides any gradient/transparent fill so the typed amount
   is never invisible. */
input.stake-input, #qgStake, #depAmount, #wdAmount, input[data-coinfmt]{ color:var(--t1) !important; -webkit-text-fill-color:var(--t1) !important; caret-color:var(--p); }
.coin-fmt-holder > input{ position:relative; z-index:1; color:transparent !important; -webkit-text-fill-color:transparent !important; caret-color:var(--p) !important; }
.coin-fmt-ghost{ position:absolute; top:0; left:0; right:0; bottom:0; z-index:2; pointer-events:none; user-select:none; -webkit-user-select:none; display:flex; flex-direction:row; flex-wrap:nowrap; align-items:center; white-space:nowrap; overflow:hidden; box-sizing:border-box; line-height:1; }
.coin-fmt-ghost .coin-d{ color:#eef0f6 !important; -webkit-text-fill-color:#eef0f6 !important; opacity:1 !important; font-weight:800; vertical-align:baseline; display:inline-block; flex:0 0 auto; white-space:nowrap; line-height:1; }
.coin-fmt-ghost .coin-c{ color:#eef0f6 !important; -webkit-text-fill-color:#eef0f6 !important; opacity:.45 !important; font-weight:800; vertical-align:baseline; display:inline-block; flex:0 0 auto; white-space:nowrap; line-height:1; }
.coin-fmt-holder > input::-webkit-inner-spin-button,
.coin-fmt-holder > input::-webkit-outer-spin-button{ -webkit-appearance:none; margin:0; }
.coin-fmt-holder > input[type=number]{ -moz-appearance:textfield; }
.coin-c{ font-size:1em; opacity:.5; font-weight:inherit; vertical-align:baseline; line-height:inherit; }
/* Coin-format numbers inside a GRADIENT-TEXT element (prize pool, hero stats) must carry
   the gradient on the spans themselves — otherwise the child .coin-d/.coin-c inherit the
   parent's transparent text-fill but have no background of their own and render INVISIBLE
   (this was the "prize pool shows no money" bug after the $-format rollout). */
.hero-stat b .coin-d, .hero-stat b .coin-c,
.lp-stat b .coin-d, .lp-stat b .coin-c,
.stat-box b .coin-d, .stat-box b .coin-c,
.prize-amount .coin-d, .prize-amount .coin-c,
#prizePool .coin-d, #prizePool .coin-c,
#heroPool .coin-d, #heroPool .coin-c,
.hero-pool-display strong .coin-d, .hero-pool-display strong .coin-c{
  background: linear-gradient(180deg, #ffd9a0, #f4cd84 60%, #eeb351);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

/* MAX (all-in) chip — gold accent to set it apart from preset amounts (v204). */
.qa.qa-max{ color:var(--gold2,#f3b63c); border-color:rgba(243,182,60,.5); font-weight:800; letter-spacing:.03em; }
.qa.qa-max:hover{ background:rgba(243,182,60,.14); border-color:rgba(243,182,60,.8); }

/* Coinflip watch modal: empty title (name-vs-name removed) collapses so it doesn't
   leave a gap and the close button has clear space. */
#cfModalTitle:empty{ display:none; }

/* QuickGame watch modal: visible copy-link button in the header (always shown during watch). */
.qgm-head-actions{ display:flex; align-items:center; gap:8px; }
.qgm-copy{ background:#1b1f24; border:1px solid rgba(255,255,255,.1); color:#cbd3da; width:32px; height:32px; border-radius:9px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .16s, color .16s; }
.qgm-copy svg{ width:16px; height:16px; }
.qgm-copy:hover{ background:#22272e; color:#fff; }
.qgm-copy.ok{ background:rgba(74,222,128,.22); color:#86efac; border-color:rgba(74,222,128,.5); }

/* ════════════════════════════════════════════════════════════════════════
   ✦ RUSTYLOOT THEME MATCH (build 38) — last in the cascade so it wins.
   Anchored to the live site's declared theme colour #151a2e (a true blue-navy,
   NOT purple). Surfaces lifted to match the reference; cards kept FLAT and clean
   (the earlier blue glow is dialled right down so panels read as solid navy like
   rustyloot.gg). Green primary "Login" pill + gold hero "Sign in" + gold accents.
   ════════════════════════════════════════════════════════════════════════ */



/* Page background — true blue-navy, almost flat (faintest cool depth only). */
body{
  background:
    radial-gradient(1100px 680px at 80% -14%, rgba(70,90,160,.05), transparent 62%),
    #151a2e !important;
}

/* Top chrome → blue-navy, glassy. */
.topbar{ background:rgba(20,24,44,.90) !important; border-bottom:1px solid rgba(140,160,210,.10) !important; }
.topstrip{ background:linear-gradient(180deg,#161b30,#141829) !important; border-bottom:1px solid rgba(255,255,255,.04) !important; }

/* Generic panels / surfaces → flat blue-navy. */
.section-block, .form-card, .level-card, .wallet-card, .admin-stat, .admin-tool,
.cf-game-row, .rps-open-row, .rps-recent-row, .bh-row, .hist-item, .balance-pill,
.app-modal__card, .cf-modal-card, .rps-modal-card, .notif-panel, .profile-menu{
  background:linear-gradient(180deg,#1e2440,#181d31) !important;
  border-color:rgba(140,160,210,.10) !important;
}

/* Chat column → blue-navy. */
.chat-drawer{ background:linear-gradient(180deg,#191e34,#141829) !important; border-right:1px solid rgba(140,160,210,.10) !important; }
.chat-head{ background:#171c30 !important; border-bottom:1px solid rgba(140,160,210,.10) !important; }
.chat-form{ background:#171c30 !important; border-top:1px solid rgba(140,160,210,.10) !important; }
.chat-form input{ background:#1c2139 !important; border:1px solid rgba(140,160,210,.14) !important; }
.chat-messages .chat-message:hover{ background:rgba(255,255,255,.025) !important; }

/* Home hero cards → flat navy, just a whisper of cool light at the top corner. */
.hm-promo-card{
  background:
    radial-gradient(130% 150% at 100% 0%, rgba(90,110,180,.10), transparent 58%),
    linear-gradient(180deg,#1e2440,#171c30) !important;
  border-color:rgba(140,160,210,.12) !important;
}
.hm-promo-welcome{
  background-image:
    radial-gradient(130% 150% at 100% 0%, rgba(90,110,180,.10), transparent 58%),
    linear-gradient(180deg,#1e2440,#171c30) !important;
}
.hm-promo-rewards{
  background:
    radial-gradient(130% 150% at 100% 0%, rgba(238,179,81,.10), transparent 58%),
    linear-gradient(180deg,#1f2340,#171c30) !important;
}
.hm-promo-glow{ opacity:.45 !important; }   /* tone the animated blob right down */

/* Game cards + their art panels → flat blue-navy grid, subtle top sheen only. */
.hm-game{ background:linear-gradient(180deg,#1c2139,#161a2c) !important; border-color:rgba(140,160,210,.10) !important; }
.hm-game-art{
  background:
    radial-gradient(85% 130% at 50% 0%, rgba(90,110,180,.12), transparent 62%),
    linear-gradient(180deg,#212744,#171c2e) !important;
}
.hm-game-flip .hm-game-art{
  background:
    radial-gradient(85% 130% at 50% 0%, rgba(238,179,81,.12), transparent 62%),
    linear-gradient(180deg,#222441,#171c2e) !important;
}
.hm-game-quick .hm-game-art{
  background:
    radial-gradient(85% 130% at 50% 0%, rgba(255,183,71,.12), transparent 62%),
    linear-gradient(180deg,#222441,#171c2e) !important;
}

/* Scrollbar on the new background. */
::-webkit-scrollbar-track{ background:#171c30 !important; }
::-webkit-scrollbar-thumb{ background:#2a3252 !important; border:2px solid #171c30 !important; }

/* ── Image wordmark logo (topbar + footer) ── */
.brand{ gap:8px; }
.brand-logo{ height:30px; width:auto; display:block; object-fit:contain; }
.ftr-logo{ display:inline-flex; align-items:center; }
.ftr-logo-img{ height:26px; width:auto; display:block; object-fit:contain; }
@media (max-width:560px){ .brand-logo{ height:26px; } }

/* ── Buttons, matching rustyloot.gg ──
   Top "Login" pill → vivid emerald green; hero "Sign in" → gold/amber. */
.pill-steam{
  background:linear-gradient(135deg,#28d873,#1cb15c) !important;
  border:1px solid rgba(40,216,115,.55) !important; color:#04210d !important; font-weight:800 !important;
  box-shadow:0 6px 18px rgba(40,216,115,.26) !important;
}
.pill-steam .pill-steam-ico, .pill-steam svg{ color:#04210d !important; }
.pill-steam:hover{
  background:linear-gradient(135deg,#33e07e,#20bd64) !important;
  border-color:rgba(40,216,115,.8) !important;
  box-shadow:0 12px 26px rgba(40,216,115,.4) !important;
}
.hm-btn-steam{
  background:linear-gradient(135deg,#ffc24d,#f5a623) !important;
  border:1px solid rgba(245,166,35,.55) !important; color:#3a2400 !important;
  box-shadow:0 8px 22px rgba(245,166,35,.28) !important;
}
.hm-btn-steam svg{ color:#3a2400 !important; }
.hm-btn-steam:hover{ background:linear-gradient(135deg,#ffce66,#ffb02e) !important; box-shadow:0 12px 30px rgba(245,166,35,.42) !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ TWEAKS (build 39): bigger logo, bold colourful Races prize pool.
   ════════════════════════════════════════════════════════════════════════ */


/* Logo polish (#9): a soft drop-shadow + subtle hover lift. Actual SIZE is set by the inline
   media-query rules in the header (desktop 80px / mobile enlarged), which win the cascade. */
.brand-logo{ filter:drop-shadow(0 2px 7px rgba(0,0,0,.55)); transition:transform .18s ease, filter .18s ease; }
.brand:hover .brand-logo{ transform:scale(1.04); filter:drop-shadow(0 3px 10px rgba(246,200,90,.35)); }
.ftr-logo-img{ height:42px !important; }

/* Races — make the PRIZE POOL huge and gold-gradient so it really pops. */
.lb-hero-prize > span:first-child{ font-size:14px !important; letter-spacing:.22em !important;
  background:linear-gradient(180deg,#ffe49a,#f5a623); -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent; font-weight:800; }
.lb-hero-prize strong{ font-size:clamp(40px,5vw,60px) !important; gap:.1em !important;
  filter:drop-shadow(0 5px 16px rgba(245,166,35,.45)) !important; }
.lb-hero-prize strong span{
  display:inline !important; font-size:1em !important; line-height:1 !important;
  background:linear-gradient(180deg,#fff6cf 0%,#ffd24a 36%,#f5a623 70%,#d07f1c 100%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent;
  text-shadow:0 2px 30px rgba(245,166,35,.35); }
.lb-hero-prize strong .coin-amt .coin-c{ font-size:1em !important; opacity:.55 !important; }
.lb-hero-prize strong .coin-ico{ width:.66em !important; height:.66em !important;
  filter:drop-shadow(0 4px 10px rgba(245,166,35,.55)) !important; }
.lb-hero-prize small{ font-size:14px !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ ADMIN — detailed per-user game history (build 40).
   ════════════════════════════════════════════════════════════════════════ */
.adm-gfilter .adm-gchip{ cursor:pointer; user-select:none; transition:all .14s ease; border:1px solid rgba(140,160,210,.16); }
.adm-gfilter .adm-gchip:hover{ border-color:rgba(245,166,35,.5); transform:translateY(-1px); }
.adm-gfilter .adm-gchip.is-on{ background:linear-gradient(135deg,rgba(245,166,35,.22),rgba(245,166,35,.10)); border-color:rgba(245,166,35,.65); color:#ffd98a; }
.adm-gfilter .adm-gchip.is-on b{ color:#ffe7ad; }

.adm-ghist{ margin-top:12px; border:1px solid rgba(140,160,210,.12); border-radius:12px; overflow:hidden; background:rgba(10,13,26,.35); }
.adm-ghist-head, .adm-ghist-row{ display:grid; grid-template-columns:1.1fr 1.1fr .9fr .85fr 1fr; gap:8px; align-items:center; padding:9px 14px; }
.adm-ghist-head{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--t3,#8b93b5); background:rgba(140,160,210,.06); border-bottom:1px solid rgba(140,160,210,.12); }
.adm-ghist-row{ border-bottom:1px solid rgba(140,160,210,.06); font-size:13.5px; }
.adm-ghist-row:last-of-type{ border-bottom:none; }
.adm-ghist-row:hover{ background:rgba(255,255,255,.025); }
.adm-gh-game{ font-weight:700; color:#dfe4f5; }
.adm-gh-game.gt-cf{ color:#7fb4ff; } .adm-gh-game.gt-ch{ color:#ffd98a; } .adm-gh-game.gt-rp{ color:#ff8a8a; }
.adm-gh-game.gt-qg{ color:#9ad6a0; } .adm-gh-game.gt-rps{ color:#c9a6f5; }
.adm-gh-stake{ display:inline-flex; align-items:center; gap:.25em; font-family:var(--fm,monospace); color:#e9edf8; }
.adm-gh-stake .coin-ico{ width:.95em; height:.95em; }
.adm-gh-res{ font-weight:800; font-size:12px; letter-spacing:.04em; }
.adm-res-win{ color:#34d77b; } .adm-res-loss{ color:#ff6b6b; } .adm-res-draw{ color:var(--t3,#8b93b5); }
.adm-gh-when{ font-family:var(--fm,monospace); font-size:12.5px; color:var(--t3,#8b93b5); }
.adm-ghist-empty{ padding:18px 14px; text-align:center; color:var(--t3,#8b93b5); font-size:13px; }
.adm-ghist-note{ padding:8px 14px; font-size:11.5px; color:var(--t3,#8b93b5); background:rgba(140,160,210,.04); border-top:1px solid rgba(140,160,210,.08); }
@media (max-width:560px){
  .adm-ghist-head, .adm-ghist-row{ grid-template-columns:.95fr 1fr .85fr .75fr .95fr; padding:8px 10px; font-size:12px; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ RUSTPOT winner reveal (build 41) — big avatar + #1 + animated reward.
   ════════════════════════════════════════════════════════════════════════ */
.rp-ban-av{ position:relative; width:clamp(96px,22vw,142px); height:clamp(96px,22vw,142px); border-radius:50%;
  display:flex; align-items:center; justify-content:center; margin-bottom:8px;
  border:3px solid var(--gold2,#f3b53f);
  box-shadow:0 0 0 6px rgba(243,181,63,.14), 0 14px 42px rgba(243,181,63,.38), 0 0 64px rgba(243,181,63,.25);
  background:radial-gradient(circle at 50% 35%, #2a3346, #141a26);
  animation:rpWinPop .55s cubic-bezier(.2,1.3,.5,1) both; }
.rp-ban-av img{ width:100%; height:100%; border-radius:50%; object-fit:cover; display:block; }
.rp-ban-av-ph{ font-size:clamp(40px,9vw,56px); }
.rp-ban-av-fb{ width:100%; height:100%; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:900; font-size:clamp(34px,8vw,50px); }
.rp-ban-rank{ position:absolute; bottom:-4px; right:-4px; background:linear-gradient(135deg,#ffd24a,#f5a623); color:#3a2400;
  font-family:var(--fd,inherit); font-weight:900; font-size:15px; letter-spacing:.02em; padding:3px 11px; border-radius:999px;
  border:2px solid rgba(0,0,0,.3); box-shadow:0 4px 12px rgba(245,166,35,.55); }
.rp-ban-ttl{ animation:rpFade .6s ease both; }
.rp-ban-rew{ margin-top:12px; font-size:11px; letter-spacing:.32em; text-transform:uppercase; color:var(--t3,#8b93b5); }
.rp-ban-amt{ font-size:clamp(36px,8vw,60px) !important; font-weight:900 !important; line-height:1; margin-top:3px;
  display:flex; align-items:center; justify-content:center; gap:.12em; width:100%;          /* full-width + centred → the count-up grows symmetrically, no horizontal jiggle */
  font-variant-numeric:tabular-nums; color:#ffd24a !important; -webkit-text-fill-color:#ffd24a !important;
  text-shadow:0 2px 16px rgba(245,166,35,.55); filter:drop-shadow(0 4px 16px rgba(245,166,35,.3)); }
.rp-ban-amt .coin-amt{ color:#ffd24a !important; -webkit-text-fill-color:#ffd24a !important; }
.rp-ban-amt .coin-d{ color:#ffe49a !important; -webkit-text-fill-color:#ffe49a !important; opacity:1 !important; }
.rp-ban-amt .coin-c{ color:#ffd24a !important; -webkit-text-fill-color:#ffd24a !important; opacity:.75 !important; }   /* cents stay clearly VISIBLE (was hidden by the old gradient → "if over 100, only 1" bug) */
.rp-ban-amt .coin-ico{ width:.62em; height:.62em; -webkit-text-fill-color:initial; filter:drop-shadow(0 3px 6px rgba(245,166,35,.5)); flex:0 0 auto; }
@keyframes rpWinPop{ 0%{ transform:scale(.4); opacity:0; } 60%{ opacity:1; } 100%{ transform:scale(1); opacity:1; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 42 — You-tag below avatar (#1), navy modal backdrop (#8), floating race skins (#9).
   ════════════════════════════════════════════════════════════════════════ */

/* #1 — "You" now sits BELOW the avatar (it was inside the clipping circle, covering the face). */
.qg-seat > .qg-you-tag, .qg-rseat > .qg-you-tag{
  position:static; transform:none; bottom:auto; left:auto; display:inline-block; margin:1px auto 0; }
.qg-rseat > .qg-you-tag{ margin-top:0; }

/* #8 — game modals show the (blurred) navy site behind instead of going near-black. */
.app-modal__overlay, .cf-modal-overlay{
  background:rgba(13,16,30,.58) !important;
  -webkit-backdrop-filter:blur(8px) saturate(115%) !important; backdrop-filter:blur(8px) saturate(115%) !important; }

/* #9 — race prize skins gently float up/down. */
@keyframes rrFloatY{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-9px); } }
.lb-prize-skin{ display:block; width:clamp(74px,16vw,112px); height:auto; margin:2px auto 0; object-fit:contain;
  filter:drop-shadow(0 12px 20px rgba(0,0,0,.5)); animation:rrFloatY 3.2s ease-in-out infinite; }
.lb-pod-1 .lb-prize-skin{ animation-duration:2.8s; }
.lb-pod-2 .lb-prize-skin{ animation-duration:3.5s; animation-delay:.35s; }
.lb-pod-3 .lb-prize-skin{ animation-duration:3.7s; animation-delay:.7s; }
.lb-prize-skin-sm{ width:30px; height:30px; object-fit:contain; vertical-align:middle; margin-right:4px;
  filter:drop-shadow(0 3px 6px rgba(0,0,0,.5)); animation:rrFloatY 3.4s ease-in-out infinite; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 43 — LIVE BETS feed (All Games / High Rollers / Lucky Wins).
   Replaces the old "Top players" column; updates live via JS (no refresh).
   ════════════════════════════════════════════════════════════════════════ */
.lbets{ margin-top:20px; }
.lbets-tabs{ display:flex; gap:9px; justify-content:center; margin-bottom:16px; flex-wrap:wrap; }
.lbets-tab{ display:inline-flex; align-items:center; gap:8px; padding:10px 18px; border-radius:12px;
  border:1px solid rgba(140,160,210,.14); background:rgba(255,255,255,.03); color:var(--t2,#aeb6cf);
  font-weight:700; font-size:13.5px; cursor:pointer; transition:all .15s ease; }
.lbets-tab .lbets-tab-i{ display:inline-flex; } .lbets-tab .lbets-tab-i svg{ width:17px; height:17px; }
.lbets-tab:hover{ border-color:rgba(238,179,81,.4); color:#fff; transform:translateY(-1px); }
.lbets-tab.is-on{ background:linear-gradient(135deg,rgba(238,179,81,.28),rgba(238,179,81,.1)); border-color:rgba(238,179,81,.6); color:#fff; }
.lbets-table{ border:1px solid rgba(140,160,210,.1); border-radius:16px; overflow:hidden; background:rgba(10,13,26,.42); }
.lbets-head, .lbets-row{ display:grid; grid-template-columns:1.1fr 1.5fr .85fr .8fr .9fr; align-items:center; gap:10px; padding:11px 18px; }
.lbets-head{ font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--t3,#7d8699); border-bottom:1px solid rgba(140,160,210,.1); }
.lbets-r{ text-align:right; justify-self:end; }
.lbets-row{ border-bottom:1px solid rgba(140,160,210,.05); }
.lbets-row.lbets-new{ animation:lbetsIn .55s cubic-bezier(.22,.72,.28,1); overflow:hidden; }   /* new bet GROWS in at the top, pushing the list down (top→bottom conveyor) */
.lbets-row:last-child{ border-bottom:none; }
.lbets-row:hover{ background:rgba(255,255,255,.025); }
@keyframes lbetsIn{ 0%{ max-height:0; opacity:0; padding-top:0; padding-bottom:0; border-bottom-width:0; } 45%{ opacity:.55; } 100%{ max-height:64px; opacity:1; } }
.lbets-game{ display:inline-flex; align-items:center; gap:11px; min-width:0; }
.lbets-gi{ width:32px; height:32px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.lbets-gi svg{ width:18px; height:18px; }
.g-flip{ color:#f0912e; background:rgba(240,145,46,.13);} .g-rps{ color:#7fb4ff; background:rgba(127,180,255,.13);}
.g-quick{ color:#f6c85a; background:rgba(246,200,90,.13);} .g-pot{ color:#ef4444; background:rgba(239,68,68,.13);}
.g-champ{ color:#f6c85a; background:rgba(246,200,90,.13);}
.lbets-gn{ font-weight:700; color:#dfe4f5; font-size:13.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lbets-user{ display:inline-flex; align-items:center; gap:9px; min-width:0; }
.lbets-av{ width:28px; height:28px; border-radius:50%; object-fit:cover; flex:0 0 auto; border:1px solid rgba(255,255,255,.1); }
.lbets-av-fb{ display:inline-flex; align-items:center; justify-content:center; background:linear-gradient(180deg,#2a3346,#1b2230); color:#cdd6e3; font-weight:800; font-size:12px; }
.lbets-un{ color:#e9eef2; font-size:13.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.lbets-lv{ flex:0 0 auto; font-size:11px; font-weight:800; color:#c9a6f5; }
.lbets-amt, .lbets-pay{ display:inline-flex; align-items:center; gap:.25em; justify-content:flex-end; font-family:var(--fm,monospace); }
.lbets-amt{ color:#e9edf8; } .lbets-amt .coin-ico, .lbets-pay .coin-ico{ width:14px; height:14px; }
.lbets-multi{ color:var(--t3,#8b93b5); font-weight:800; font-family:var(--fm,monospace); }
.lbets-multi.hot{ color:#34d77b; }
.lbets-pay{ color:var(--t3,#8b93b5); opacity:.7; } .lbets-pay.won{ color:#34d77b; opacity:1; }
.lbets-empty{ padding:24px; text-align:center; color:var(--t3,#8b93b5); }
@media (max-width:720px){
  .lbets-head, .lbets-row{ grid-template-columns:.7fr 1.3fr 1fr 1fr; gap:8px; padding:10px 12px; }
  .lbets-head span:nth-child(4), .lbets-row .lbets-multi{ display:none; }   /* drop Multi on narrow screens */
  .lbets-gn{ display:none; }                                                /* icon only → less text on mobile */
}

/* Wallet modal — Deposit/Withdraw toggle (replaces the "−"/"+" split; "+" opens both). */
.wallet-toggle{ display:flex; gap:6px; background:rgba(255,255,255,.04); border:1px solid rgba(140,160,210,.12);
  border-radius:13px; padding:5px; margin:2px auto 18px; width:-moz-fit-content; width:fit-content; }
.wallet-tab{ display:inline-flex; align-items:center; gap:6px; padding:9px 22px; border-radius:9px; border:none;
  background:transparent; color:var(--t2,#aeb6cf); font-weight:800; font-size:14px; cursor:pointer; transition:all .15s ease; }
.wallet-tab:hover{ color:#fff; }
.wallet-tab.is-on{ background:linear-gradient(135deg,#f5a623,#e08e15); color:#1a1205; box-shadow:0 4px 12px rgba(245,166,35,.35); }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 44 — Races hero compact "{X} WEEKLY RACE" + clean bg (#1/#3/#6);
   medals above the avatar (#4); live-bets level removed (#2).
   ════════════════════════════════════════════════════════════════════════ */
.lb-hero{ padding:20px 22px !important; gap:18px;
  background:linear-gradient(135deg,rgba(238,179,81,.05),rgba(12,15,28,.55)) !important; }
.lb-hero::before{ background:radial-gradient(70% 130% at 50% -10%, rgba(238,179,81,.13), transparent 60%) !important; }
.lb-hero::after{ display:none !important; }                       /* drop the messy second overlay */
.lb-hero-coin{ width:60px !important; height:60px !important; top:16px !important; right:18px !important; opacity:.9; }
.lb-race-title{ display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:.2em; margin:0; line-height:1; font-family:var(--fd); }
.lb-race-title .coin-ico{ width:.8em; height:.8em; filter:drop-shadow(0 2px 5px rgba(120,80,20,.5)); }
.lb-race-title span[data-countup]{ font-size:clamp(30px,4.4vw,50px); color:#ffd24a; -webkit-text-fill-color:#ffd24a;
  font-weight:900; text-shadow:0 2px 16px rgba(245,166,35,.5); letter-spacing:.01em; }
.lb-race-title em{ font-style:normal; font-size:clamp(20px,3vw,34px); color:#eef2fa; font-weight:800; letter-spacing:.05em; opacity:.95; }
.lb-hero-prize small{ margin-top:8px; }

/* #4 — 1/2/3 medals sit ABOVE the avatar, nudged a touch right. */
.lb-pod-medal{ top:-7px !important; right:-3px !important; left:auto !important; bottom:auto !important; }

/* #2 — user level removed from the live-bets feed; whole user cell is tappable → profile. */
.lbets-lv{ display:none !important; }
.lbets-user{ cursor:pointer; }

/* #13 — Rustflip stage was a purple→near-black radial that read as black; navy to match the theme. */
.cf-stage{ background:radial-gradient(circle at 50% 35%, rgba(40,48,78,.98), rgba(19,24,42,.99) 74%) !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 45 — chat REPLY text + clickable name (#11); header avatar level (#15); CHAT RULES (#17).
   ════════════════════════════════════════════════════════════════════════ */
/* #11 — reply button shows the word; name is clickable (opens the player menu). */
.chat-reply-btn{ font-size:10px !important; font-weight:800; letter-spacing:.05em; text-transform:uppercase;
  width:auto !important; min-width:0 !important; padding:2px 8px !important; border-radius:6px; line-height:1.5; }
.chat-name{ cursor:pointer; }
.chat-name:hover{ text-decoration:underline; }

/* #15 — user level badge in the corner of the header avatar. */
.profile-avatar-btn{ position:relative; overflow:visible; }
.pa-level{ position:absolute; bottom:-3px; right:-3px; min-width:16px; height:16px; padding:0 3px;
  display:inline-flex; align-items:center; justify-content:center; border-radius:8px;
  background:linear-gradient(135deg,#f5a623,#e08e15); color:#1a1205; font-size:10px; font-weight:900;
  border:2px solid var(--bg,#151a2e); line-height:1; box-shadow:0 2px 5px rgba(0,0,0,.4); }

/* #17 — CHAT RULES panel at the top of the chat. */
.chat-rules{ margin:8px 10px 0; border:1px solid rgba(140,160,210,.12); border-radius:10px; background:rgba(255,255,255,.025); overflow:hidden; }
.chat-rules summary{ cursor:pointer; list-style:none; padding:9px 12px; font-weight:800; font-size:12.5px; color:#dfe4f5; display:flex; align-items:center; gap:7px; user-select:none; }
.chat-rules summary::-webkit-details-marker{ display:none; }
.chat-rules summary::after{ content:"▾"; margin-left:auto; color:var(--t3,#8b93b5); transition:transform .2s; }
.chat-rules[open] summary::after{ transform:rotate(180deg); }
.chat-rules-ico{ font-size:13px; }
.chat-rules ul{ margin:0; padding:2px 12px 12px 12px; list-style:none; display:flex; flex-direction:column; gap:7px; }
.chat-rules li{ position:relative; padding-left:16px; font-size:12px; line-height:1.45; color:var(--t2,#aeb6cf); }
.chat-rules li::before{ content:""; position:absolute; left:2px; top:7px; width:5px; height:5px; border-radius:50%; background:#f5a623; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 46 — prize image UPLOAD UI (#4) + glowing backdrop behind the prize photo.
   ════════════════════════════════════════════════════════════════════════ */
.adm-race-prize{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:8px 10px;
  border:1px solid rgba(140,160,210,.1); border-radius:10px; background:rgba(0,0,0,.18); margin-bottom:8px; }
.adm-race-prize .adm-race-rank{ font-weight:800; color:var(--t3,#8b93b5); min-width:30px; }
.adm-race-prize > input[type=number]{ width:120px; }
.adm-prize-img{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-left:auto; }
.adm-prize-prev{ width:38px; height:38px; border-radius:8px; overflow:hidden; background:rgba(255,255,255,.04);
  border:1px solid rgba(140,160,210,.15); display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.adm-prize-prev img{ width:100%; height:100%; object-fit:contain; }
.adm-prize-info{ font-size:11px; color:var(--t3,#8b93b5); font-family:var(--fm,monospace); }
.adm-prize-clear{ font-size:11px; color:#ff9b9b; display:inline-flex; align-items:center; gap:4px; cursor:pointer; }
.adm-prize-upload{ position:relative; overflow:hidden; display:inline-flex; align-items:center; cursor:pointer; }
.adm-prize-upload input[type=file]{ position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; }
.adm-prize-upload span{ display:inline-flex; align-items:center; gap:5px; padding:7px 12px; border-radius:8px; font-size:12px; font-weight:700;
  background:linear-gradient(135deg,rgba(168,85,247,.25),rgba(168,85,247,.12)); border:1px solid rgba(168,85,247,.5); color:#e9d8ff; }
.adm-prize-upload:hover span{ background:rgba(168,85,247,.35); }

.lb-prize-skin-wrap{ position:relative; display:flex; align-items:center; justify-content:center; margin:4px auto 0; padding:6px; }
.lb-prize-skin-wrap::before{ content:""; position:absolute; inset:0; border-radius:16px; z-index:0;
  background:radial-gradient(60% 60% at 50% 45%, rgba(245,166,35,.22), rgba(245,166,35,.05) 60%, transparent 75%); }
.lb-pod-1 .lb-prize-skin-wrap::before{ background:radial-gradient(60% 60% at 50% 45%, rgba(255,210,74,.30), rgba(245,166,35,.08) 60%, transparent 78%); }
.lb-prize-skin-wrap .lb-prize-skin{ position:relative; z-index:1; margin:0; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 47 — Quick Game recent games: winner-on-both-ends result cards (#10).
   ════════════════════════════════════════════════════════════════════════ */
.qg-rrow-cells{ display:flex; align-items:flex-start; justify-content:center; gap:18px; margin:10px 0; }
.qg-rcell{ display:flex; flex-direction:column; align-items:center; gap:6px; }
.qg-rcell-av{ width:46px; height:46px; border-radius:50%; overflow:hidden; background:#1b2230; border:2px solid rgba(150,170,210,.42); display:grid; place-items:center; flex:0 0 auto; }
.qg-rcell-av img{ width:100%; height:100%; object-fit:cover; display:block; }
.qg-rcell-av span{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:800; color:#cdd6e3; }
.qg-rcell.win .qg-rcell-av{ border-color:#34d77b; box-shadow:0 0 0 2px rgba(52,215,123,.22); }
.qg-rcell.out{ opacity:.82; }
.qg-rcell.out .qg-rcell-av{ filter:grayscale(.32) brightness(.9); border-color:rgba(150,170,210,.5); }
.qg-rcell-tag{ font-size:10px; font-weight:900; letter-spacing:.05em; color:#46e08a; text-transform:uppercase; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 48 — Champion: smooth seat transitions + "next challenger" placeholder (stability).
   ════════════════════════════════════════════════════════════════════════ */
@keyframes champAvIn{ from{ opacity:0; transform:scale(.94); } to{ opacity:1; transform:none; } }
#leftAvatarDisplay .rust-char-wrap, #rightAvatarDisplay .rust-char-wrap{ animation:champAvIn .26s ease; }
/* empty/waiting seat does NOT get the entrance animation → it never flashes/blinks on any re-render */
.es-incoming .es-label{ color:#9ad6a0; }

/* #4 fix — medal sits ABOVE the avatar without being clipped: the photo clips in its own round
   layer, so the avatar box itself no longer needs overflow:hidden and the medal is fully visible. */
.lb-pod-av{ overflow:visible !important; }
.lb-pod-av-clip{ position:absolute; inset:0; border-radius:50%; overflow:hidden; display:grid; place-items:center; }
.lb-pod-av-clip img{ width:100%; height:100%; object-fit:cover; display:block; }
.lb-pod-medal{ z-index:3; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 49 — homepage game cards: LESS TEXT, MORE VISUAL.
     Descriptions removed; the art panel fills the card and the icons are larger;
     title + arrow collapse into one slim bar so the game's artwork is the focus.
   ════════════════════════════════════════════════════════════════════════ */
.hm-game{ min-height:264px; }
.hm-game-art{ flex:1 1 auto; min-height:204px; }
.hm-ico{ width:138px !important; height:138px !important; }
.hm-ico-swords, .hm-ico-coin{ width:146px !important; height:146px !important; }
.hm-ico-quick{ width:126px !important; height:126px !important; }
.hm-ico-rustpot-map{ width:140px !important; height:140px !important; }
.hm-ico-case, .hm-ico-casebattle{ width:132px !important; height:132px !important; }
.hm-game-info{ flex:0 0 auto; flex-direction:row; align-items:center; justify-content:space-between;
  gap:10px; padding:14px 18px; border-top:1px solid rgba(140,160,210,.08);
  background:linear-gradient(180deg, rgba(255,255,255,.02), transparent); }
.hm-game-info h3{ font-size:22px; margin:0; line-height:1.05; }
.hm-game-info p{ display:none !important; }
.hm-game-go{ font-size:15px; white-space:nowrap; }

/* build 49b — on mobile (1-column) keep the visual cards COMPACT so 6 games don't become a
   long scroll: the art becomes a fixed, shorter banner instead of a tall flex panel. */
@media (max-width:900px){
  .hm-game{ min-height:0; }
  .hm-game-art{ flex:0 0 auto; min-height:0; height:168px; }
  .hm-ico{ width:118px !important; height:118px !important; }
  .hm-ico-swords, .hm-ico-coin{ width:122px !important; height:122px !important; }
  .hm-ico-rustpot-map{ width:116px !important; height:116px !important; }
  .hm-ico-quick{ width:104px !important; height:104px !important; }
  .hm-ico-case, .hm-ico-casebattle{ width:110px !important; height:110px !important; }
  .hm-game-info{ padding:12px 16px; }
  .hm-game-info h3{ font-size:20px; }
}

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 50 — rewards rakeback cards: ascending TIERS (bronze→silver→gold),
     accent bar + soft glow + tier-coloured label, so the three read as a ladder.
   ════════════════════════════════════════════════════════════════════════ */
.rb-card{ position:relative; overflow:hidden; transition:transform .2s ease, box-shadow .2s ease; }
.rb-card::before{ content:""; position:absolute; top:0; left:0; right:0; height:3px; z-index:2; }
.rb-card::after{ content:""; position:absolute; top:-42%; left:50%; transform:translateX(-50%); width:150%; height:130px;
  border-radius:50%; filter:blur(30px); opacity:.55; z-index:0; pointer-events:none; }
.rb-card > *{ position:relative; z-index:1; }
.rb-card:hover{ transform:translateY(-4px); box-shadow:0 18px 40px rgba(0,0,0,.4); }
.rb-daily::before{ background:linear-gradient(90deg,#f0a23c,#c97a2c); }
.rb-daily::after{ background:radial-gradient(rgba(238,179,81,.26),transparent 70%); }
.rb-daily .rb-period{ color:#f3b05a; }
.rb-weekly::before{ background:linear-gradient(90deg,#f6d28a,#e0a445); }
.rb-weekly::after{ background:radial-gradient(rgba(238,179,81,.24),transparent 70%); }
.rb-weekly .rb-period{ color:#f4cd84; }
.rb-monthly{ border-color:rgba(245,166,35,.42) !important; }
.rb-monthly::before{ background:linear-gradient(90deg,#ffe08a,#f5a623); }
.rb-monthly::after{ background:radial-gradient(rgba(255,200,74,.30),transparent 70%); }
.rb-monthly .rb-period{ color:#ffd271; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 51 — Rustflip recent-flips strip: chips become mini RED/BLUE COINS
     (bevel + sheen + inner ring) to match the coin-duel theme.
   ════════════════════════════════════════════════════════════════════════ */
.rf-strip-chip{ width:28px; height:28px; position:relative; border:1px solid rgba(0,0,0,.3);
  box-shadow:inset 0 1.5px 2px rgba(255,255,255,.45), inset 0 -2px 3px rgba(0,0,0,.4), 0 2px 5px rgba(0,0,0,.3);
  text-shadow:0 1px 1px rgba(0,0,0,.45); }
.rf-strip-chip::before{ content:""; position:absolute; inset:3.5px; border-radius:50%; border:1px solid rgba(255,255,255,.2); pointer-events:none; }
.rf-chip-red{ background:radial-gradient(circle at 38% 30%, #ff7a7a, #ef4444 46%, #8f1717); }
.rf-chip-blue{ background:radial-gradient(circle at 38% 30%, #7fb0ff, #3b82f6 46%, #1a3a8f); }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 52 — 3D tilt for the homepage game cards (perspective container;
     the per-card rotateX/rotateY is set live by JS as the cursor moves).
   ════════════════════════════════════════════════════════════════════════ */

.hm-game{ will-change:transform; }
@media (hover: none){ .hm-game{ will-change:auto; } }

/* glare overlay for the 3D card tilt (cursor-tracked highlight; clipped by the card). */
.hm-glare{ position:absolute; inset:0; z-index:4; pointer-events:none; opacity:0; transition:opacity .25s ease; mix-blend-mode:overlay; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 53 — 3D tilt for rakeback tiers + quick-game result cards.
   ════════════════════════════════════════════════════════════════════════ */
.rb-grid{ perspective:1000px; perspective-origin:center; }
.qg-recent, #qgRecent, .qg-recent-list{ perspective:1100px; }
.rb-card, .qg-rrow{ will-change:transform; }
.tilt-glare{ position:absolute; inset:0; z-index:5; pointer-events:none; opacity:0; transition:opacity .25s ease; mix-blend-mode:overlay; border-radius:inherit; }
.qg-rrow{ position:relative; overflow:hidden; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 54 — Rustflip side coins: REAL 3D. Perspective + a rotateY tilt that
     oscillates (selected) / tilts on hover, plus a coloured depth glow.
   ════════════════════════════════════════════════════════════════════════ */
.cf-side-btn{ perspective:520px; }
.cf-side-coin{ transform-style:preserve-3d; }
.cf-side-btn:hover .cf-side-coin{ transform: rotateY(13deg) rotateX(7deg) scale(1.10) !important; }
.cf-side-btn.active .cf-side-coin{ animation: cfCoin3D 3.4s ease-in-out infinite !important; }
@keyframes cfCoin3D{
  0%,100%{ transform: rotateY(-11deg) rotateX(6deg) translateY(0)    scale(1.04); }
  50%    { transform: rotateY( 11deg) rotateX(6deg) translateY(-4px) scale(1.08); }
}
.cf-side-btn.active.cf-side-red  .cf-side-coin-img{ filter: drop-shadow(0 6px 10px rgba(0,0,0,.5)) drop-shadow(0 0 15px rgba(239,68,68,.65)); }
.cf-side-btn.active.cf-side-blue .cf-side-coin-img{ filter: drop-shadow(0 6px 10px rgba(0,0,0,.5)) drop-shadow(0 0 15px rgba(59,130,246,.65)); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .cf-side-btn.active .cf-side-coin{ animation:none !important; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 55 — #3 static 3D DEPTH (no transforms on positioned content):
     (a) arena 3D floor grid — brighter + scrolls toward the viewer + horizon glow,
     (b) Rustpot map card — raised 3D panel with the map recessed into a lit well.
   ════════════════════════════════════════════════════════════════════════ */
/* (a) Arena floor — deeper, brighter, moving grid */
.arena-floor3d-grid{
  background-image:
    repeating-linear-gradient(0deg,  transparent 0 38px, rgba(165,142,240,.30) 38px 40px),
    repeating-linear-gradient(90deg, transparent 0 38px, rgba(165,142,240,.22) 38px 40px) !important;
  animation: arenaFloorScroll 2.6s linear infinite;
}
@keyframes arenaFloorScroll{ from{ background-position:0 0, 0 0; } to{ background-position:0 40px, 0 0; } }
.arena-floor3d::after{ content:""; position:absolute; left:6%; right:6%; bottom:44%; height:2px; z-index:1; pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(180,160,255,.55), transparent); filter:blur(2px); }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .arena-floor3d-grid{ animation:none !important; } }

/* (b) Rustpot map card — raised panel; the map sits in a recessed, lit 3D well */
.rp-map-card{ position:relative;
  box-shadow: 0 34px 64px -22px rgba(0,0,0,.75), 0 2px 0 rgba(255,255,255,.05) inset, 0 0 0 1px rgba(150,170,210,.08); }
.rp-map{ position:relative;
  box-shadow: inset 0 3px 12px rgba(0,0,0,.6), inset 0 -2px 6px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.05);
  border-radius:14px; }

/* coin icon in the "Total Wagered" profile stat — sized to the value, centered with it. */
.profile-stat-wager .profile-stat-val{ display:inline-flex; align-items:center; gap:5px; }
.profile-stat-wager .profile-stat-val .coin-ico{ width:.85em; height:.85em; flex:0 0 auto; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 56 — chat menu (left-click + outline icons + "Tip"), Reply hover-only,
   Rustflip uses coin ICONS instead of the RED / BLACK words, and a plain
   neutral header-avatar fallback (no "coloured corners"; keep the level badge).
   ════════════════════════════════════════════════════════════════════════ */

/* #1 — header avatar: neutral fallback background (drops the gold gradient the user
   saw as "different colours in the corners"). The level badge (.pa-level) stays. */
.profile-avatar-btn{ background:linear-gradient(145deg,#272c40,#1b2030) !important; }

/* #2 — Reply / pin actions hover-only on desktop; on touch (no hover) keep them tappable. */
@media (hover:none){ .chat-actions{ opacity:1 !important; } }

/* #3 — chat player menu: icon + label aligned, hollow (outline) icons like the nav menu. */
.chat-ctx-btn{ display:flex !important; align-items:center; gap:9px; }
.chat-ctx-btn .nav-ico{ flex:0 0 auto; display:inline-flex; transition:none; }
.chat-ctx-btn .nav-ico svg{ width:17px; height:17px; display:block; }
.chat-ctx-btn:hover .nav-ico{ transform:none; }

/* #4 — Rustflip: coin ICON everywhere instead of the words RED / BLACK. */
.cf-coin-ico{ width:18px; height:18px; object-fit:contain; vertical-align:-4px; display:inline-block;
  filter:drop-shadow(0 2px 3px rgba(0,0,0,.45)); }
.cf-join-btn .cf-coin-ico{ width:17px; height:17px; vertical-align:-3px; margin-left:4px; }
.cf-modal-outcome .cf-coin-ico{ width:22px; height:22px; vertical-align:-5px; margin-left:3px; }
/* history-row coin = just the winning coin image (no coloured token, no RED/BLACK text) */
.cf-mini-coin.cf-mini-coin-img{ background:none !important; border:0 !important; box-shadow:none !important; }
.cf-mini-coin.cf-mini-coin-img img{ width:100%; height:100%; object-fit:contain; display:block; }
/* recent-flips strip chip = coin image (no coloured pill, no R / B letter) */
.rf-strip-chip.rf-strip-chip-img{ background:none !important; border:0 !important; box-shadow:none !important; width:24px; height:24px; }
.rf-strip-chip.rf-strip-chip-img img{ width:100%; height:100%; object-fit:contain; display:block; }

/* build 56b — Rustflip create-game side picker: the COIN is now the main visual
   (the user wants icons, not the words RED/BLACK). Make it a big centred coin
   instead of the small corner badge; keep the "Left/Right Side" hint below. */
#cfSidePicker .cf-side-coin{ position:relative !important; right:auto !important; bottom:auto !important;
  width:62px !important; height:62px !important; margin:0 auto !important;
  border:0 !important; background:none !important; box-shadow:none !important; border-radius:0 !important; overflow:visible !important; }
#cfSidePicker .cf-side-coin-img, #cfSidePicker .cf-side-coin img{ object-fit:contain !important; filter:drop-shadow(0 5px 9px rgba(0,0,0,.5)) !important; }
#cfSidePicker .cf-side-btn{ padding:18px 14px 14px !important; }
#cfSidePicker .cf-side-btn small{ font-size:12px; opacity:.85; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 57 — Quick Game slot reels get a real 3D CYLINDER (drum) look:
   tiles curve into shadow at the top & bottom like a physical reel, framed by
   a centred pay-line window that glows gold on the winning reel. CSS overlay
   only — the spin timing + winner logic are completely untouched.
   ════════════════════════════════════════════════════════════════════════ */
.qgm-col-vp{ background:radial-gradient(120% 80% at 50% 50%, #161b27 0%, #0e1116 70%) !important; }
/* the curved drum shading — content rolls into darkness top & bottom */
.qgm-col-vp::before{ content:""; position:absolute; inset:0; z-index:3; pointer-events:none; border-radius:inherit;
  background:linear-gradient(180deg,
    rgba(8,10,16,.97) 0%, rgba(8,10,16,.66) 13%, rgba(8,10,16,.14) 28%,
    rgba(8,10,16,0) 50%,
    rgba(8,10,16,.14) 72%, rgba(8,10,16,.66) 87%, rgba(8,10,16,.97) 100%); }
/* the pay-line window framing the centre tile */
.qgm-col-vp::after{ content:""; position:absolute; left:7px; right:7px; top:50%; transform:translateY(-50%);
  height:88px; z-index:2; pointer-events:none; border-radius:11px;
  border-top:1px solid rgba(255,255,255,.07); border-bottom:1px solid rgba(255,255,255,.07);
  box-shadow:0 0 14px rgba(0,0,0,.4) inset; }
.qgm-col.win .qgm-col-vp::after{ border-top-color:rgba(255,207,77,.5); border-bottom-color:rgba(255,207,77,.5);
  box-shadow:0 0 18px rgba(255,207,77,.25) inset; }
@media (max-width:560px){ .qgm-col-vp::after{ height:70px; } }

/* build 58 — the chat player menu must sit ABOVE the chat drawer (which is z-index:1200
   on mobile), otherwise a left-click "opens" it behind the chat and it looks like nothing
   happened. Lift it above everything but full-screen modals. */
.chat-ctx{ z-index:2400 !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 59 — Quick Game slot payoff: each reel gives a tactile "lock-in" pop
   the instant it stops (.landed, added left→right), and the winning reels fire a
   one-shot gold flash (.win). Pure CSS on hooks the spin code already sets.
   ════════════════════════════════════════════════════════════════════════ */
@keyframes qgmLand{ 0%{ transform:scale(1.022); } 60%{ transform:scale(.99); } 100%{ transform:scale(1); } }
.qgm-col.landed .qgm-col-vp{ animation:qgmLand .26s cubic-bezier(.3,1.5,.45,1); }
@keyframes qgmWinFlash{
  0%{   box-shadow:0 0 0 3px rgba(255,207,77,.28), 0 0 22px rgba(255,207,77,.35); }
  35%{  box-shadow:0 0 0 5px rgba(255,207,77,.75), 0 0 44px rgba(255,207,77,.9); }
  100%{ box-shadow:0 0 0 3px rgba(255,207,77,.28), 0 0 22px rgba(255,207,77,.35); } }
.qgm-col.win .qgm-col-vp{ animation:qgmWinFlash .7s ease 1; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .qgm-col.landed .qgm-col-vp, .qgm-col.win .qgm-col-vp{ animation:none !important; } }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 60 — Champion empty-seat clutter, user-menu sizing (desktop smaller,
   mobile full-screen action sheet).
   ════════════════════════════════════════════════════════════════════════ */

/* #9 — Champion: hide the "Wager 0 / Win Chance 0%" readouts under an EMPTY seat
   (that stray coin + text under a vacant character is the "coins falling" the user saw). */
.player-panel:has(.empty-seat) .player-stats{ display:none !important; }

/* #4 — the left-click user menu a touch smaller on desktop. */
.chat-ctx{ min-width:156px; padding:5px; }
.chat-ctx-btn{ padding:8px 9px !important; font-size:12.5px; }
.chat-ctx .chat-ctx-name{ font-size:11.5px; padding:5px 9px 7px; }
.chat-ctx-btn .nav-ico svg{ width:16px; height:16px; }

/* #5 — on mobile that same menu becomes a full-screen action sheet (big, easy to tap). */
@media (max-width:640px){
  .chat-ctx{ position:fixed !important; inset:0 !important; left:0 !important; top:0 !important; right:0 !important; bottom:0 !important;
    width:100% !important; max-width:none !important; min-width:0 !important; border:0 !important; border-radius:0 !important;
    padding:0 !important; display:flex !important; flex-direction:column; align-items:center; justify-content:center; gap:12px;
    background:rgba(9,8,18,.94) !important; backdrop-filter:blur(9px); -webkit-backdrop-filter:blur(9px);
    box-shadow:none !important; z-index:2400 !important; animation:cmFull .18s ease; }
  .chat-ctx[hidden]{ display:none !important; }
  .chat-ctx .chat-ctx-name{ text-align:center; font-size:17px; padding:0 0 16px !important; border:0 !important; margin:0 !important; color:var(--rust3); }
  .chat-ctx-btn{ width:84% !important; max-width:330px; justify-content:center; font-size:17px !important; padding:18px 20px !important;
    border-radius:14px !important; background:rgba(255,255,255,.06) !important; }
  .chat-ctx-btn .nav-ico svg{ width:20px; height:20px; }
}
@keyframes cmFull{ from{ opacity:0; } to{ opacity:1; } }

/* build 60 — admin "Call pot" checkbox rows (lay the box beside its label, not stretched). */
.adm-set-check{ flex-direction:row !important; align-items:center; gap:10px; flex-wrap:wrap; }
.adm-set-check > span{ order:1; }
.adm-set-check input[type=checkbox]{ order:0; width:38px; height:22px; flex:0 0 auto; appearance:none; -webkit-appearance:none; cursor:pointer;
  border-radius:999px; background:rgba(196,184,158,.25); position:relative; transition:background .18s; }
.adm-set-check input[type=checkbox]::after{ content:""; position:absolute; top:2px; left:2px; width:18px; height:18px; border-radius:50%; background:#fff; transition:transform .18s; }
.adm-set-check input[type=checkbox]:checked{ background:var(--rust,#eeb351); }
.adm-set-check input[type=checkbox]:checked::after{ transform:translateX(16px); }
.adm-set-check small{ flex:1 1 100%; order:2; color:var(--t3,#9aa6bd); font-size:.74rem; }

/* build 61 — Champion wager was shrinking to one digit and stacking "5"/"00" vertically
   (the flex item holding the amount was being shrunk to min-content). Pin it so the
   dollars+cents always sit inline on one row. */
.stat-box .bet-amt{ white-space:nowrap; min-width:0; max-width:100%; overflow:visible; }
.stat-box .bet-amt > span{ flex:0 0 auto; min-width:0; }
.stat-box .bet-amt .coin-amt{ display:inline-flex !important; align-items:baseline; white-space:nowrap !important; flex:0 0 auto; width:auto !important; }
.stat-box .bet-amt .coin-d, .stat-box .bet-amt .coin-c{ display:inline-block !important; white-space:nowrap !important; }

/* ════════════════════════════════════════════════════════════════════════
   ✦ build 61 — level badge colours to match the reference screenshot:
   1-9 slate · 10-19 cyan · 20-39 amber · 40-59 GREEN · 60+ BLUE.
   Final word (beats the older lv-gold=gold / lv-violet=cyan rules above).
   ════════════════════════════════════════════════════════════════════════ */
.chat-lvl.lv-base,   .chat-msg-head .chat-lvl.lv-base{   background:linear-gradient(135deg,#7c8aa8,#566179) !important; color:#0c0d16 !important; }
.chat-lvl.lv-teal,   .chat-msg-head .chat-lvl.lv-teal{   background:linear-gradient(135deg,#34d9ee,#0aa6c2) !important; color:#04222b !important; }
.chat-lvl.lv-amber,  .chat-msg-head .chat-lvl.lv-amber{  background:linear-gradient(135deg,#fbbf24,#eeb351) !important; color:#2a1b02 !important; }
.chat-lvl.lv-gold,   .chat-msg-head .chat-lvl.lv-gold{   background:linear-gradient(135deg,#62db52,#2fa83e) !important; color:#06230c !important; }
.chat-lvl.lv-violet, .chat-msg-head .chat-lvl.lv-violet{ background:linear-gradient(135deg,#5b8cff,#3a5fe0) !important; color:#ffffff !important; }

/* build 61's viewport pin for the coinflip X lived here with a hardcoded top:72px. Superseded: the
   offset is now derived from the header's real height in the COINFLIP MODAL block at the end of this
   file (--cf-x-top). Two hardcoded attempts (72px, then 70px) both landed inside the menu; do not add
   a third pixel here. */

/* build 61 — homepage Champion card: external champion.png as the hero visual,
   swords + bolts kept as animated accents on top. (Image is hot-linked from rustly.gg;
   if it ever fails to load the onerror hides it and the SVG art shows alone.) */
.hm-game-champions .hm-game-art{ position:relative; overflow:hidden; }
.hm-card-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center center;
  z-index:0; opacity:1; pointer-events:none; filter:saturate(1.08) contrast(1.04); transition:transform .45s ease, filter .45s ease;
  -webkit-mask-image:linear-gradient(180deg,#000 76%,rgba(0,0,0,.72)); mask-image:linear-gradient(180deg,#000 76%,rgba(0,0,0,.72)); }
.hm-game:hover .hm-card-img{ transform:scale(1.06); filter:brightness(1.13) saturate(1.14) drop-shadow(0 0 16px rgba(255,180,80,.35)); }
/* Rustly Originals cards: portrait art that the image FILLS edge-to-edge (cover, no letterbox gaps
   on the sides/top — "kartlar tam otursun"). The art is ~3:4 to match the portrait character images
   so cover crops almost nothing. Padding + mask are dropped so the image meets all four edges. */
.hm-game-art{ aspect-ratio:3/4 !important; min-height:0 !important; height:auto !important; flex:0 0 auto !important; }
.hm-card-img{ object-fit:cover !important; object-position:center top !important; -webkit-mask-image:none !important; mask-image:none !important; padding:0 !important; }

/* Bright embers that ORBIT the photo — bigger, glowing, and travel right around it. Ambient
   (always on) so mobile sees them; they speed up and brighten on desktop hover. Five embers
   (the 3 spans + ::before + ::after) ride staggered elliptical orbits at different sizes. */
.hm-sparks{ position:absolute; inset:0; z-index:3; pointer-events:none; }
.hm-sparks i, .hm-sparks::before, .hm-sparks::after{
  content:""; position:absolute; top:50%; left:50%; width:12px; height:12px; margin:-6px 0 0 -6px; border-radius:50%;
  background:radial-gradient(circle, #fff8e6 0%, #ffd884 34%, #ff9a32 68%, rgba(255,120,30,0) 100%);
  box-shadow:0 0 18px 6px rgba(255,165,60,.85), 0 0 40px 15px rgba(255,95,22,.45);
  animation:hmOrbit 5s linear infinite; will-change:transform; }
.hm-sparks i:nth-child(2){ animation-duration:5.8s; animation-delay:-2.0s; width:9px;  height:9px;  margin:-4.5px 0 0 -4.5px; }
.hm-sparks i:nth-child(3){ animation-duration:4.4s; animation-delay:-3.5s; width:14px; height:14px; margin:-7px 0 0 -7px; }
.hm-sparks::before{ animation-duration:6.2s; animation-delay:-2.7s; width:8px;  height:8px;  margin:-4px 0 0 -4px; }
.hm-sparks::after { animation-duration:4.9s; animation-delay:-4.4s; width:10px; height:10px; margin:-5px 0 0 -5px; }
.hm-game:hover .hm-sparks i, .hm-game:hover .hm-sparks::before, .hm-game:hover .hm-sparks::after{
  animation-duration:2.5s; box-shadow:0 0 22px 8px rgba(255,180,70,.95), 0 0 52px 20px rgba(255,100,25,.55); }
/* Elliptical orbit that hugs the photo; the scale dip gives a little front/back depth. */
@keyframes hmOrbit{
  0%   { transform:translate(120px, 0)     scale(1.15); }
  12.5%{ transform:translate(85px, -52px)   scale(1); }
  25%  { transform:translate(0, -74px)      scale(.8); }
  37.5%{ transform:translate(-85px, -52px)  scale(.85); }
  50%  { transform:translate(-120px, 0)     scale(1); }
  62.5%{ transform:translate(-85px, 52px)   scale(1.12); }
  75%  { transform:translate(0, 74px)       scale(1.28); }
  87.5%{ transform:translate(85px, 52px)    scale(1.12); }
  100% { transform:translate(120px, 0)      scale(1.15); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-sparks i, .hm-sparks::before, .hm-sparks::after{ animation:none !important; } }
.hm-game-champions .hm-game-art::after{ content:""; position:absolute; inset:0; z-index:0;
  background:radial-gradient(120% 90% at 50% 30%, transparent 40%, rgba(8,8,20,.55)); pointer-events:none; }
.hm-game-champions .hm-bolts, .hm-game-champions .hm-ico-swords{ position:relative; z-index:1; }
.hm-game-champions .hm-ico-swords{ opacity:.92; filter:drop-shadow(0 4px 12px rgba(0,0,0,.5)); }

/* build 61 — per-game min/max bet, shown under each game's stake box (admin-set). */
.stake-bounds{ display:flex; align-items:center; justify-content:center; gap:5px; flex-wrap:wrap;
  margin:7px 0 2px; font-size:11.5px; font-weight:600; color:var(--t3,#9aa6bd); letter-spacing:.02em; }
.stake-bounds .coin-ico{ width:.95em; height:.95em; vertical-align:-1px; }

/* ════════ build 62 — decisive overrides for recurring reports (appended last = wins cascade) ════════ */

/* (1) Champion WAGER must stay on ONE line — never stack "5" over "00" (Screenshot_1). */
.stat-box .bet-amt{ display:inline-flex !important; align-items:baseline !important; flex-wrap:nowrap !important; white-space:nowrap !important; max-width:100% !important; overflow:visible !important; min-width:0 !important; }
.stat-box .bet-amt > *{ flex:0 0 auto !important; }
.stat-box .bet-amt > span, .stat-box .bet-amt .coin-amt, .stat-box .bet-amt .coin-d, .stat-box .bet-amt .coin-c{ display:inline !important; white-space:nowrap !important; width:auto !important; vertical-align:baseline !important; }

/* (2) Deposit "≈ $X to pay" needs air under the input (Screenshot_2). */
.conv-hint{ margin:8px 0 4px !important; line-height:1.25 !important; }

/* (3) Chat messages were spaced too far from the top (Screenshot_3). */
.chat-messages{ gap:3px !important; }
.chat-messages .chat-message{ padding-top:3px !important; padding-bottom:3px !important; margin-top:0 !important; }
.chat-msg-head{ margin-bottom:1px !important; }

/* (4) Rustflip/Quick Game modals: the SITE must show (blurred) behind — not solid black.
   Mobile: keep the close (X) pinned above the sticky top-bar so it can't slide under it. */
.cf-modal-overlay{ background:linear-gradient(180deg,rgba(8,8,20,.34),rgba(5,5,14,.46)) !important;
  -webkit-backdrop-filter:blur(4px) saturate(.92) !important; backdrop-filter:blur(4px) saturate(.92) !important; }
.cf-modal-card{ background:linear-gradient(180deg,rgba(26,16,54,.82),rgba(10,9,26,.88)) !important;
  -webkit-backdrop-filter:blur(20px) saturate(.95) !important; backdrop-filter:blur(20px) saturate(.95) !important; }
/* (the second hardcoded X pin, top:70px, was here — same story as above, see --cf-x-top) */

/* (5) Coinflip Cancel was removed — the owner's open game shows a small waiting tag instead. */
.cf-waiting-tag{ display:inline-flex; align-items:center; gap:6px; font-size:.78rem; font-weight:700;
  color:var(--rust,#eeb351); opacity:.92; padding:6px 10px; }

/* build 63 — deposit promo code: Apply button + 7-day lock countdown */
.dep-promo-row{ display:flex; gap:8px; align-items:stretch; }
.dep-promo-row #depPromo{ flex:1 1 auto; min-width:0; }
.dep-promo-apply{ flex:0 0 auto; padding:0 16px; border:0; border-radius:10px; cursor:pointer; font-weight:800; font-size:.84rem;
  color:#1a1206; background:linear-gradient(135deg,var(--rust,#eeb351),#d99a22); transition:filter .15s, transform .05s; }
.dep-promo-apply:hover{ filter:brightness(1.08); }
.dep-promo-apply:active{ transform:translateY(1px); }
.dep-promo-apply:disabled{ opacity:.6; cursor:default; }
.dep-promo-note{ margin-top:7px; font-size:.78rem; line-height:1.35; color:var(--t3,#9aa6bd); min-height:1em; }
.dep-promo-note.on{ color:#7ee0a6; }
.dep-promo-note b{ color:#fff; font-weight:800; }
.promo-tag{ font-size:.66rem; font-weight:800; color:#1a1206; background:var(--rust,#eeb351); padding:2px 7px; border-radius:999px; vertical-align:middle; margin-left:6px; }

/* ════════ build 64 — modal backdrop lighten, chat compaction, mod delete/clear ════════ */

/* (A) Rustflip/coinflip modal: on mobile, backdrop-filter ITSELF can render as solid black
   (GPU compositing fails). So NO blur — just a light translucent tint so the site clearly
   shows behind, and a near-solid (but dark-purple, never black) card panel. */
/* (A) Rustflip/coinflip modals (create, etc.): translucent + blurred so the SITE shows
   behind — same recipe as the working quickgame modal. (backdrop-filter works fine here;
   the earlier "black" was a separate #cfModal ID rule, now fixed above.) */
.cf-modal-overlay{
  /* Uniform translucent tint (NOT a radial) so there is never a left/right imbalance or a hard
     black patch where the mobile GPU drops the blur — the site still shows faintly behind. */
  background: rgba(7,8,16,.42) !important;
  -webkit-backdrop-filter: blur(4px) saturate(.92) !important;
  backdrop-filter: blur(4px) saturate(.92) !important;
}
.cf-modal-card{
  background: linear-gradient(180deg, rgba(34,24,68,.95), rgba(20,16,40,.97)) !important;
}
/* The waiting/idle stage now uses the Rustpot Rust map, slightly blurred, as the backdrop. */
#cfModal .cf-modal-stage{
  background: linear-gradient(180deg, rgba(9,9,22,.42), rgba(6,6,18,.62)) !important;
}
#cfModal .cf-modal-stage::before{
  content:""; position:absolute; inset:-24px; width:auto; height:auto; border-radius:0;
  background:url('/assets/rustpot-map.jpg') center/cover no-repeat;
  filter:blur(7px) brightness(.6) saturate(.92);
  z-index:0; pointer-events:none;
}

/* (B) Chat messages — kill the extra top gap; tighten the whole row. */
.chat-messages{ gap:2px !important; }
.chat-messages .chat-message{ padding:3px 4px !important; margin:0 !important; align-items:flex-start !important; }
.chat-message .chat-body{ padding-top:0 !important; margin-top:0 !important; }
.chat-msg-head{ margin:0 0 1px !important; line-height:1.1 !important; min-height:0 !important; }
.chat-message .chat-body > p{ margin:1px 0 0 !important; line-height:1.3 !important; }
.chat-message .chat-av{ margin-top:1px !important; }

/* (C) Mod/admin chat tools: per-message delete + header Clear. */
.chat-del-btn{ filter:grayscale(.2); }
.chat-del-btn:hover{ filter:none; transform:scale(1.12); }
.chat-clear-btn{ display:inline-flex; align-items:center; gap:4px; font-size:.72rem; font-weight:800; cursor:pointer;
  border:1px solid rgba(239,68,68,.4); background:rgba(239,68,68,.14); color:#fca5a5; border-radius:8px; padding:3px 8px; margin-right:4px; }
.chat-clear-btn:hover{ background:rgba(239,68,68,.24); }
/* #4 — icon-only Clear (staff): compact square, sits right after the online count on the far left */
.chat-clear-btn.chat-clear-icon{ padding:0; width:26px; height:26px; gap:0; border-radius:7px; flex:0 0 auto; place-items:center; margin:0; }
.chat-clear-btn.chat-clear-icon svg{ width:14px; height:14px; }

/* ════════ build 65 — coin alignment (champion) + top-right balance spacing ════════ */
/* Champion WAGER boxes: icon + amount were on different baselines so the number dropped
   BELOW the coin. Force both onto one centred line. */
.stat-box .bet-amt{ align-items:center !important; line-height:1 !important; }
.stat-box .bet-amt .coin-ico{ align-self:center !important; vertical-align:middle !important; position:relative !important; top:0 !important; margin:0 2px 0 0 !important; }
.stat-box .bet-amt .coin-amt{ display:inline-flex !important; align-items:center !important; line-height:1 !important; }
.stat-box .bet-amt .coin-d, .stat-box .bet-amt .coin-c{ line-height:1 !important; vertical-align:middle !important; }

/* Top-right balance pill: the gap between the coin icon and the number was too wide,
   and the icon→[+] looked detached. Tighten it. */
.balance-pill{ gap:3px !important; }
.balance-group{ gap:0 !important; align-items:stretch !important; }
.balance-pill .coin-ico{ margin:0 !important; }
.balance-group .bal-plus{ align-self:stretch !important; }

/* ════════ build 66 — chat mod tools always visible + delete styling ════════ */
/* The delete/reply/pin row was opacity:0 until hover, so on desktop the staff delete
   button was invisible. Make the action row ALWAYS visible. */
.chat-actions{ opacity:1 !important; }
.chat-message .chat-actions{ opacity:1 !important; }
.chat-message:hover .chat-actions{ opacity:1 !important; }
.chat-del-btn{ background:rgba(239,68,68,.16) !important; border-color:rgba(239,68,68,.42) !important; color:#fca5a5 !important; }
.chat-del-btn:hover{ background:rgba(239,68,68,.28) !important; color:#fff !important; }

/* ════════ build 66b — races podium prize lift + coinflip recent rows (avatars+coins) ════════ */
/* Prize skin was overlapping the podium block; lift it off. */
.lb-prize-skin-wrap{ margin-bottom:14px !important; }
.lb-prize-skin{ margin-bottom:4px !important; }

/* Coinflip recent rows: profile pics + chosen coins on the left, winning coin on the right. */
.cf-row-side{ display:flex; align-items:center; gap:5px; min-width:0; }
.cf-row-av{ width:30px; height:30px; border-radius:8px; object-fit:cover; flex:0 0 auto; background:#0e1116; border:1px solid var(--ln); display:grid; place-items:center; font-weight:800; color:#cfd6dd; font-size:13px; }
.cf-row-coin{ width:22px; height:22px; display:inline-flex; flex:0 0 auto; }
.cf-row-coin img, .cf-row-wincoin img{ width:100%; height:100%; object-fit:contain; }
.cf-row-vs{ font-size:.66rem; font-weight:800; color:var(--t3); margin:0 2px; }
.cf-row-wincoin{ width:30px; height:30px; display:inline-flex; flex:0 0 auto; filter:drop-shadow(0 0 6px rgba(255,207,77,.4)); }

/* ════════ build 67 — coin hover spin, chat rules modal, profile XP bar ════════ */

/* (1) Hovering the balance gives the NUMBER a soft glow — no coin spin (user asked for a
   subtle glow on the money, not the coin symbol). */
.balance-pill .balance-pill-main, .balance-pill #balance{ transition:text-shadow .25s ease, filter .25s ease; }
.balance-group:hover .balance-pill-main, .balance-pill:hover .balance-pill-main,
.balance-group:hover #balance, .balance-pill:hover #balance{ text-shadow:0 0 9px rgba(245,197,66,.85), 0 0 18px rgba(245,197,66,.45); filter:brightness(1.12); }

/* (2) Chat rules: button on the LEFT of the header, opens a modal. */
.chat-head{ display:flex !important; align-items:center !important; justify-content:space-between !important; gap:8px; }
.chat-rules-btn{ display:inline-flex; align-items:center; gap:4px; font-size:.74rem; font-weight:800; cursor:pointer; border:1px solid var(--ln); background:rgba(255,255,255,.05); color:var(--t2); border-radius:8px; padding:4px 9px; flex:0 0 auto; }
.chat-rules-btn:hover{ background:var(--vio-soft); color:#fff; border-color:var(--vio-line); }
/* Tip Rain button — gold pill to the right of Chat Rules (#6) */
.chat-tiprain-btn{ display:inline-flex; align-items:center; gap:4px; font-size:.74rem; font-weight:800; cursor:pointer; border:1px solid rgba(238,179,81,.5); background:rgba(238,179,81,.14); color:#ffd98a; border-radius:8px; padding:4px 9px; flex:0 0 auto; transition:background .15s, color .15s, border-color .15s; }
.chat-tiprain-btn:hover{ background:rgba(238,179,81,.26); color:#ffe6b0; border-color:rgba(238,179,81,.85); }
.chat-tiprain-btn svg{ color:#f0b840; }
.chat-rules-modal{ position:fixed; inset:0; z-index:2600; display:flex; align-items:center; justify-content:center; padding:18px; }
.chat-rules-modal[hidden]{ display:none; }
.chat-rules-modal-overlay{ position:absolute; inset:0; background:rgba(8,8,20,.6); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
.chat-rules-modal-card{ position:relative; z-index:1; width:min(420px,92vw); max-height:80vh; overflow:auto; background:linear-gradient(180deg,rgba(30,22,58,.98),rgba(18,15,36,.99)); border:1px solid var(--vio-line); border-radius:16px; padding:22px; box-shadow:0 24px 60px rgba(0,0,0,.6); }
.chat-rules-modal-card h3{ margin:0 0 12px; font-family:var(--fd); font-size:1.15rem; color:#fff; display:flex; align-items:center; gap:8px; }
.chat-rules-modal-card ul{ margin:0; padding-left:18px; display:flex; flex-direction:column; gap:9px; }
.chat-rules-modal-card li{ color:var(--t2); font-size:.86rem; line-height:1.42; }
.chat-rules-modal-close{ position:absolute; top:12px; right:12px; width:30px; height:30px; border-radius:8px; border:1px solid var(--ln); background:rgba(255,255,255,.06); color:var(--t2); cursor:pointer; font-size:15px; }
.chat-rules-modal-close:hover{ background:rgba(255,255,255,.12); color:#fff; }

/* (3) Profile menu XP bar (like the homepage). */
.pm-xp-bar{ height:6px; border-radius:5px; background:rgba(0,0,0,.4); overflow:hidden; border:1px solid var(--ln); margin:6px 0 3px; }
.pm-xp-bar span{ display:block; height:100%; border-radius:5px; background:linear-gradient(90deg,#eeb351,#f4cd84); box-shadow:0 0 10px rgba(238,179,81,.5); transition:width .6s ease; }
.pm-xp-text{ display:block; font-size:.66rem; color:var(--t3); }

/* ════════ build 68 — chat real compaction + promo card full width ════════ */

/* CHAT: the head row had flex-wrap:wrap, so in a narrow panel the Reply/pin/delete buttons
   wrapped to a 2nd line (tall messages); absolute-positioning them then DISTORTED the Reply
   button. Keep them IN FLOW on one line; the name shrinks (ellipsis) to make room. */
.chat-msg-head{ flex-wrap:nowrap !important; margin-bottom:1px !important; min-height:0 !important; }
.chat-msg-head .chat-name{ flex:1 1 auto !important; min-width:0 !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }
/* level + role badges must NOT shrink or the row distorts (this is what pushed Reply around
   for admins/mods, who carry an extra ADMIN/MOD badge in the head). */
.chat-msg-head .chat-lvl, .chat-msg-head .chat-role{ flex:0 0 auto !important; }
.chat-actions{ position:static !important; margin-left:auto !important; flex:0 0 auto !important; gap:3px !important; opacity:1 !important; flex-wrap:nowrap !important; align-items:center !important; }
/* Head stays on a SINGLE row — the always-on action buttons (reply/mute/pin/delete that admins & mods
   see) never wrap onto a second line and skew the message; a long name truncates with an ellipsis. */
.chat-msg-head{ flex-wrap:nowrap !important; min-width:0 !important; }
.chat-msg-head .chat-name{ display:inline-block !important; min-width:0 !important; flex:0 1 auto !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }
.chat-messages{ gap:3px !important; }
.chat-messages .chat-message{ padding:3px 7px !important; margin:0 !important; }
.chat-message .chat-body{ padding-top:0 !important; margin-top:0 !important; }
.chat-message .chat-body > p{ margin:0 !important; line-height:1.28 !important; }
/* icon actions are 22px squares; the Reply button has TEXT so it must be auto-width
   (the .chat-act 22px rule was squashing "Reply" into an icon box). */
.chat-act{ width:22px !important; height:22px !important; flex:0 0 auto !important; }
.chat-reply-btn{ width:auto !important; min-width:auto !important; height:22px !important; padding:0 8px !important; line-height:20px !important; white-space:nowrap !important; display:inline-flex !important; align-items:center !important; }

/* PROMO card (rewards): was a 2-col grid; with the daily card removed it sat at half width
   with an empty right side. Make it span the full row and let the input fill the space. */
.rw-daily-row{ grid-template-columns:1fr !important; }
.rw-promo{ width:100% !important; }
.rw-promo-input{ flex:1 1 auto !important; }
.rw-promo-input input{ flex:1 1 auto !important; width:auto !important; max-width:none !important; }
#rwPromoBtn{ font-size:13px !important; font-weight:800 !important; padding:0 20px !important; min-height:44px !important; white-space:nowrap !important; flex:0 0 auto !important; width:auto !important; }

/* ════════ build 69 — confirm modal, bigger winning coin, race #3 fix ════════ */

/* Max/all-in confirm modal buttons */
.confirm-modal-actions{ display:flex; gap:10px; margin-top:8px; }
.confirm-modal-actions .app-modal__btn{ flex:1 1 0; min-width:0; }
.confirm-no{ background:rgba(255,255,255,.08) !important; color:var(--t1) !important; border:1px solid var(--ln) !important; }
.confirm-no:hover{ background:rgba(255,255,255,.14) !important; }

/* Rustflip recent: winning coin a bit bigger + highlighted */
.cf-row-wincoin{ width:38px !important; height:38px !important; filter:drop-shadow(0 0 8px rgba(255,207,77,.75)) !important; }

/* Race podium #3: the short base was shorter than its content, so the prize spilled BELOW
   it (looked "shifted down") and the corners showed artifacts. Center the content, clip the
   corners, and give #3 enough height. */
.lb-pod-base{ justify-content:center !important; overflow:hidden !important; }
.lb-pod-3 .lb-pod-base{ height:92px !important; }
@media (max-width:560px){ .lb-pod-3 .lb-pod-base{ height:80px !important; } }
/* #2 podium sits taller than #3 so the ranking reads 1 > 2 > 3 at a glance */
.lb-pod-2 .lb-pod-base{ height:110px !important; }
@media (max-width:560px){ .lb-pod-2 .lb-pod-base{ height:94px !important; } }

/* ════════ build 74 — Case Opening / Case Battle placeholder pages ════════ */
.soon-page{ max-width:560px; margin:64px auto; text-align:center; padding:0 20px; }
.soon-page .eyebrow{ display:inline-block; }
.soon-page .page-title{ margin:10px 0 0; }
.soon-page-msg{ color:var(--t2,#a7adbe); margin:16px auto 0; line-height:1.55; max-width:460px; }
.soon-page-back{ display:inline-flex; align-items:center; gap:6px; margin-top:26px; }
@media (max-width:560px){ .soon-page{ margin:44px auto; } }

/* ════════ build 79 — site-wide polish: title shimmer, button glow, eyebrow accent ════════ */

/* Slow gold shimmer sweeping across every page title (reduced-motion safe) */
.page-title{
  background:linear-gradient(108deg,#ffffff 0%,#eef2f8 30%,#ffe9b3 42%,#f6c24e 50%,#ffe9b3 58%,#c9d2e2 70%,#c9d2e2 100%) !important;
  background-size:240% 100% !important;
  -webkit-background-clip:text !important; background-clip:text !important;
  -webkit-text-fill-color:transparent !important; color:transparent !important;
  filter:drop-shadow(0 3px 16px rgba(238,179,81,.16));
  animation:titleShimmer 6.5s ease-in-out infinite;
}
@keyframes titleShimmer{ 0%,100%{ background-position:135% 0; } 50%{ background-position:-35% 0; } }

/* Primary buttons: a warmer 3D lift + gold glow on hover (on top of the existing sheen sweep) */
.btn-primary:hover:not(:disabled){ transform:translateY(-2px) scale(1.015); box-shadow:0 10px 26px rgba(238,179,81,.32), 0 2px 8px rgba(0,0,0,.35); }
.btn-primary:active:not(:disabled){ transform:translateY(0) scale(.99); }

/* Eyebrow label: a soft animated glow so the header feels alive */
.eyebrow{ animation:eyebrowGlow 4.5s ease-in-out infinite; }
@keyframes eyebrowGlow{ 0%,100%{ text-shadow:0 0 10px rgba(238,179,81,.10); } 50%{ text-shadow:0 0 18px rgba(238,179,81,.40); } }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .page-title, .eyebrow{ animation:none !important; } }

/* ════════ build 80 — Profile + Leaderboard polish ════════ */

/* ---- Profile ---- */
.level-card{
  background:linear-gradient(145deg, rgba(29,34,51,.96), rgba(21,25,38,.97)) !important;
  border:1px solid rgba(238,179,81,.16) !important;
  box-shadow:0 18px 44px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.04) !important;
  position:relative; overflow:hidden;
}
.level-card::after{ content:""; position:absolute; top:-45%; right:-8%; width:240px; height:240px;
  background:radial-gradient(circle, rgba(238,179,81,.15), transparent 65%); pointer-events:none; }
/* animated shine sweeping the XP bar */
.level-fill{ position:relative; overflow:hidden; }
.level-fill::after{ content:""; position:absolute; inset:0; border-radius:7px;
  background:linear-gradient(100deg, transparent 18%, rgba(255,255,255,.6) 50%, transparent 82%);
  transform:translateX(-100%); animation:xpShine 2.8s ease-in-out infinite; }
@keyframes xpShine{ 0%{ transform:translateX(-100%);} 60%,100%{ transform:translateX(120%);} }

/* stat tiles: lift + glow on hover; premium balance tile */
.pstat{ transition:transform .18s ease, box-shadow .25s ease, border-color .2s ease; }
.pstat:hover{ transform:translateY(-3px); border-color:rgba(238,179,81,.3); box-shadow:0 12px 26px rgba(0,0,0,.35); }
.pstat-balance{ box-shadow:0 0 0 1px rgba(238,179,81,.18), 0 14px 32px rgba(238,179,81,.12); }

/* avatar: gold ring + glow + gentle hover zoom */
.profile-av-img{ border:0 !important;
  box-shadow:0 0 0 3px rgba(238,179,81,.55), 0 0 26px rgba(238,179,81,.3) !important;
  transition:transform .25s ease, box-shadow .25s ease; }
.profile-av-img:hover{ transform:scale(1.04);
  box-shadow:0 0 0 3px rgba(244,205,132,.85), 0 0 34px rgba(238,179,81,.45) !important; }

/* ---- Leaderboard ---- */
.lb-row{ transition:transform .16s ease, box-shadow .25s ease, border-color .2s ease; }
.lb-row:hover{ transform:translateX(4px); border-color:rgba(238,179,81,.28); box-shadow:0 8px 22px rgba(0,0,0,.32); }
.lb-rank-badge{ box-shadow:0 4px 12px rgba(0,0,0,.3); }
/* a slow gold sweep across the #1 podium card so the champion spot feels alive */
.lb-pod-1 .lb-pod-card{ position:relative; overflow:hidden; }
.lb-pod-1 .lb-pod-card::after{ content:""; position:absolute; top:0; left:-150%; width:60%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(255,233,160,.22), transparent); transform:skewX(-18deg);
  animation:lbSweep 4.5s ease-in-out infinite; pointer-events:none; }
@keyframes lbSweep{ 0%{ left:-150%;} 55%,100%{ left:165%;} }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .level-fill::after, .lb-pod-1 .lb-pod-card::after{ animation:none !important; } }

/* ════════ build 81 — Wallet polish ════════ */
.balance-overview{
  background:linear-gradient(135deg, rgba(48,38,86,.5), rgba(14,12,28,.85)) !important;
  border:1px solid rgba(238,179,81,.2) !important;
  box-shadow:0 16px 40px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.balance-val{ text-shadow:0 2px 18px rgba(238,179,81,.35); }
.bstat{ transition:transform .18s ease, border-color .18s ease, box-shadow .22s ease; }
.bstat:hover{ transform:translateY(-3px); border-color:rgba(238,179,81,.3); box-shadow:0 10px 22px rgba(0,0,0,.3); }
/* deposit / withdraw cards: depth on hover (no transform — they hold inputs, so no bobbing) */
.wallet-grid form{ transition:box-shadow .25s ease, border-color .2s ease; }
.wallet-grid form:hover{ box-shadow:0 14px 34px rgba(0,0,0,.4); border-color:rgba(238,179,81,.22); }

/* ════════ build 82 — Rewards + Affiliate + Fairness premium pass ════════ */

/* Rewards: rakeback + promo cards */
.rb-card{ background:linear-gradient(180deg, #252b41, rgb(37 44 66)) !important; }
.rb-card.rb-daily{ border-color:rgba(238,179,81,.35) !important; }
.rb-amount{ text-shadow:0 2px 16px rgba(238,179,81,.35); }
.rb-card:hover{ border-color:rgba(238,179,81,.4) !important; }
.rw-daily.rw-promo{ background:radial-gradient(120% 140% at 100% 0%, rgba(182,170,146,.16), transparent 55%), linear-gradient(135deg, rgba(40,52,82,.42), rgba(14,16,28,.86)) !important;
  border:1px solid rgba(245,197,66,.20) !important; box-shadow:0 14px 36px rgba(0,0,0,.4); }

/* Affiliate: metric tiles + referral rows */
.aff-metric{ transition:transform .18s ease, box-shadow .25s ease, border-color .2s ease; }
.aff-metric:hover{ transform:translateY(-3px); border-color:rgba(238,179,81,.3); box-shadow:0 12px 26px rgba(0,0,0,.35); }
.aff-metric-n{ text-shadow:0 2px 14px rgba(238,179,81,.25); }
.ref-row{ transition:background .16s ease, transform .16s ease; }
.ref-row:hover{ background:rgba(238,179,81,.06); transform:translateX(3px); }

/* Fairness: cards + coin-duel game cards */
.fair-card{ transition:transform .18s ease, box-shadow .25s ease, border-color .2s ease; }
.fair-card:hover{ transform:translateY(-3px); border-color:rgba(238,179,81,.28); box-shadow:0 14px 32px rgba(0,0,0,.35); }
.fair-game-card{ transition:transform .18s ease, box-shadow .25s ease, border-color .2s ease; }
.fair-game-card:hover{ transform:translateY(-4px); border-color:rgba(238,179,81,.3); box-shadow:0 16px 36px rgba(0,0,0,.4); }

/* Games dropdown: homepage photo overlays the SVG art when uploaded (hidden via onerror if absent) */
.ngm-art-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; z-index:2; }
.ngm-art-photo::after{ content:""; }
.ngm-card .ngm-art-photo{ box-shadow:inset 0 -30px 40px -20px rgba(8,8,18,.7); }

/* ════════ Thin hair-like sparks roaming over the card photos (index + Games menu) ════════ */
.hm-game-art .hm-sparks, .ngm-art .hm-sparks{ position:absolute; inset:0; pointer-events:none; z-index:4; overflow:hidden; border-radius:inherit; }
.hm-game-art .hm-sparks i, .hm-game-art .hm-sparks::before, .hm-game-art .hm-sparks::after,
.ngm-art .hm-sparks i, .ngm-art .hm-sparks::before, .ngm-art .hm-sparks::after{
  content:""; position:absolute; width:1.5px; height:12px; border-radius:2px;
  background:linear-gradient(180deg, transparent, rgba(255,226,150,.95) 45%, rgba(255,200,110,.7), transparent);
  box-shadow:0 0 6px rgba(255,205,120,.9), 0 0 2px rgba(255,255,255,.8);
  opacity:0;
}
.hm-game-art .hm-sparks i:nth-child(1), .ngm-art .hm-sparks i:nth-child(1){ left:16%; top:62%; animation:sparkRoam 5.6s ease-in-out infinite; }
.hm-game-art .hm-sparks i:nth-child(2), .ngm-art .hm-sparks i:nth-child(2){ left:54%; top:74%; animation:sparkRoam 6.9s ease-in-out .8s infinite; }
.hm-game-art .hm-sparks i:nth-child(3), .ngm-art .hm-sparks i:nth-child(3){ left:80%; top:58%; animation:sparkRoam 6.1s ease-in-out 1.7s infinite; }
.hm-game-art .hm-sparks::before, .ngm-art .hm-sparks::before{ left:34%; top:80%; animation:sparkRoam 7.4s ease-in-out .4s infinite; }
.hm-game-art .hm-sparks::after,  .ngm-art .hm-sparks::after { left:68%; top:70%; animation:sparkRoam 6.5s ease-in-out 1.25s infinite; }
@keyframes sparkRoam{
  0%{ opacity:0; transform:translate(0,0) rotate(6deg) scale(.65); }
  14%{ opacity:1; }
  50%{ transform:translate(16px,-30px) rotate(-9deg) scale(1); }
  82%{ opacity:.95; }
  100%{ opacity:0; transform:translate(32px,-58px) rotate(11deg) scale(.55); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-game-art .hm-sparks i, .ngm-art .hm-sparks i, .hm-game-art .hm-sparks::before, .hm-game-art .hm-sparks::after, .ngm-art .hm-sparks::before, .ngm-art .hm-sparks::after{ animation:none !important; opacity:0 !important; } }

/* Footer right-side Rust emblem (crossed rifle + hatchet badge) */
.ftr-art{ margin-left:auto; align-self:center; display:flex; }
.ftr-art-svg{ width:106px; height:106px; display:block; filter:drop-shadow(0 5px 16px rgba(0,0,0,.55)); opacity:.92; }
@media (max-width:760px){ .ftr-art{ margin:6px auto 0; } .ftr-art-svg{ width:88px; height:88px; } }

/* Profile fixes: balance number vertical-align + Rustflip history icon shows gold (not greyed) */
/* Balance: lay icon + number as a single centered flex ROW. (display:block made the
   inline-block .coin-amt stack its dollars over the dimmed cents → "82" slid under "97".) */
.pstat-balance b{ display:flex !important; align-items:center; gap:0; line-height:1; white-space:nowrap; }
.pstat-balance b .coin-ico{ vertical-align:middle; width:.9em; height:.9em; flex:0 0 auto; margin-right:.3em; }
.pstat-balance b .coin-amt{ display:inline-flex !important; align-items:baseline; flex:0 0 auto; white-space:nowrap; line-height:1; }
.pstat-balance b .coin-amt .coin-d,
.pstat-balance b .coin-amt .coin-c{ display:inline-block !important; white-space:nowrap; vertical-align:baseline; line-height:1; }
/* Rustflip flip modal: the empty red/blue result pill (text removed) is hidden — the landed
   coin + outcome line already show the result. */
#cfModalResult{ display:none !important; }
.hist-item-ico.hist-ico-rustflip{ filter:opacity(.95); }   /* keep the coin gold instead of greyscaling it */
.hist-ico-rustflip .coin-ico{ width:22px; height:22px; }

/* Admin affiliate: clickable games cell → per-player game detail */
.aff-games-link{ color:inherit; text-decoration:none; cursor:pointer; border-radius:7px; padding:2px 6px; margin:-2px -6px; transition:background .15s, color .15s; display:inline-block; }
.aff-games-link:hover{ background:rgba(238,179,81,.14); color:var(--gold2); }
.aff-games-link b{ color:var(--gold2); }
.aff-pg-game{ display:inline-flex; align-items:center; gap:5px; font-weight:600; }
.aff-pg-game svg{ width:16px; height:16px; flex:none; }   /* size the game-icon SVGs — raw game_icon() svgs have no width/height, so they'd render huge */
.aff-pg-game .coin-ico{ width:.95em; height:.95em; }

/* ════════════ build 90 — user list fixes ════════════ */
/* #2 — homepage & games-menu: kill the rotating coin + orbiting LED dots; turn the sparks
   into thin hair-like filaments roaming over the photo (keeps the roam, drops the orbs). */
.hm-coin-spin{ animation:none !important; }
.hm-led-orbit, .hm-led-coin, .hm-led-core{ display:none !important; }
.hm-sparks i, .hm-sparks::before, .hm-sparks::after{
  width:2px !important; height:17px !important; border-radius:2px !important;
  background:linear-gradient(to bottom, rgba(255,245,225,0) 0%, #ffe6a6 38%, #ff9a32 82%, rgba(255,120,30,0) 100%) !important;
  box-shadow:0 0 7px 1px rgba(255,170,70,.7) !important; }

/* #5 — leaderboard avatars: keep the TOP of the face (it was cropping heads from the top). */
.lb-pod-av img, .lb-av img{ object-position:center top !important; }

/* #6a — Rustflip red coin was too red: soften the face + the red landing glow. */
.cf-coin .cf-face-red{ filter:saturate(.82) brightness(1.01); }
.cf-coin.landed-red{ filter:drop-shadow(0 0 13px rgba(230,96,74,.4)) drop-shadow(0 8px 22px rgba(0,0,0,.55)) !important; }
/* #6b — modal opens with a fade only; the scale-up made the static WATCH coin look like it self-grew. */
.cf-modal.open .cf-modal-card, .cf-modal.show .cf-modal-card{ animation:cfModalInFade .26s ease !important; }
@keyframes cfModalInFade{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:translateY(0); } }

/* #7 — every modal card shares the same #14192d background. */
.cf-modal-card, .cf-create-card, .qgm-box, .app-modal__card, .chat-rules-modal-card,
.fr-rules-card, .rfd-vmodal-card, .rfd-cmodal-card, .tv-card, .cs-result-card{ background:#14192d !important; border:1px solid var(--vio-line) !important; }

/* #9 — footer emblem: the uploaded Rust-characters image (footer-rust.png) sits over the
   crossed-weapons SVG; if the file is missing it removes itself and the SVG shows through. */
.ftr-art{ position:relative; }
.ftr-art-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; z-index:2; }

/* ════════════ build 92 — user list fixes ════════════ */
/* #7 — balance/coin amount must NEVER wrap (was splitting "10" / "00" onto 2 lines) */
.coin-amt{ display:inline-block; white-space:nowrap; }
.pstat b, .pstat-balance b{ white-space:nowrap; }
.pstat b .coin-amt, .pstat-balance b .coin-amt{ display:inline-block; }

/* #5 — logo: kill any stray border/outline/box-shadow/background (the thin coloured line) */
.brand, .brand-logo, .brand img{ border:0 !important; outline:0 !important; box-shadow:none !important; background:none !important; }

/* #8 — footer Rust-characters image: bigger + gentle sway/glow animation */
.ftr-art{ position:relative; width:158px; height:118px; }
.ftr-art-svg{ width:118px !important; height:118px !important; margin:0 auto; }
.ftr-art-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; z-index:2;
  animation:ftrCharSway 5.5s ease-in-out infinite; filter:drop-shadow(0 6px 14px rgba(0,0,0,.5)); transform-origin:50% 90%; }
/* When the real photo loads it sits on top of the decorative SVG; the SVG behind peeked out on
   the sides and read as a cut-off left edge. Hide the SVG whenever the photo is present (if the
   photo errors, onerror removes it and this selector stops matching, so the SVG returns). */
.ftr-art-photo ~ .ftr-art-svg{ display:none !important; }
.ftr-art-photo{ object-fit:contain !important; }
@keyframes ftrCharSway{ 0%,100%{ transform:translateY(0) rotate(-1.2deg); } 50%{ transform:translateY(-5px) rotate(1.2deg); } }
@media (max-width:760px){ .ftr-art{ width:132px; height:104px; margin:6px auto 0; } .ftr-art-svg{ width:100px !important; height:100px !important; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .ftr-art-photo{ animation:none; } }

/* ════════════════════════════ build 93 — owner fixes ════════════════════════════
   #2 footer de-cramped + emblem enlarged · #5 mobile Originals 2×2 · #6 Races #1 avatar
   no longer clipped at the top · #4 coin icon left of coin amounts in notifications/toasts.
   Appended last so it wins the cascade over earlier footer/grid/podium rules. */

/* ── Footer: compact — trimmed padding + a right-sized bottom-right emblem ── */
.site-footer{ padding:36px clamp(20px,5vw,56px) 30px !important; margin-top:14px !important; }
.ftr-inner{ max-width:1080px !important; gap:10px 40px !important; align-items:flex-start !important; }
.ftr-brand{ max-width:340px; }
.ftr-meta{ max-width:360px; }
.ftr-links{ gap:8px; }
.ftr-art{ width:150px !important; height:76px !important; align-self:flex-start !important; margin-top:-2px !important; }
.ftr-art-svg{ width:76px !important; height:76px !important; }
.ftr-art-photo{ filter:drop-shadow(0 6px 14px rgba(0,0,0,.5)); }
@media (max-width:820px){
  .site-footer{ padding:30px clamp(18px,5vw,40px) 26px !important; }
  .ftr-inner{ gap:16px !important; align-items:flex-start !important; }
}
@media (max-width:760px){
  .ftr-art{ width:126px !important; height:92px !important; margin:2px auto 0 !important; }
  .ftr-art-svg{ width:92px !important; height:92px !important; }
}

/* ── #5 Mobile: Rustly Originals cards as a 2×2 grid (was a single stacked column) ── */

/* ── #6 Races: keep the #1 avatar's glow ring + medal from being sliced flat at the top.
   The champion card has overflow:hidden (for its gold shine sweep) and the larger 94px
   avatar sits flush at the card's top edge, so its ring/medal got clipped. Cards are
   bottom-aligned, so top padding grows the card UPWARD — the avatar and the bases don't
   move, it just opens headroom above the avatar inside the clipped card. ── */
.lb-podium-wrap{ padding-top:22px; }
.lb-pod-1 .lb-pod-card{ padding-top:20px; }

/* ── #4 Coin icon sizing inside notification + toast text (icon sits left of the amount) ── */
.notif-msg .coin-ico,
.rr-toast-text .coin-ico{ width:.95em; height:.95em; vertical-align:-0.12em; margin-right:.26em; }

/* ════════ build 94.7 — bigger chat icons (user: "chat icons are too small") ════════
   The send (paper-plane) + emoji buttons in the chat input had ~18px icons in 34px buttons; bump
   both the buttons and their icons so they read clearly. The small action icons (reply / rules /
   clear / context-menu) get a modest bump too for consistency. */
.chat-form button{ width:38px !important; min-height:38px !important; }
.chat-form input{ min-height:38px !important; }
.chat-form button[type=submit] svg, .chat-emoji-btn svg{ width:23px !important; height:23px !important; }
.chat-rules-btn svg{ width:17px !important; height:17px !important; }
.chat-clear-btn svg{ width:16px !important; height:16px !important; }
.chat-reply-btn svg, .chat-reply-ico svg, .chat-reply-q-ico svg{ width:15px !important; height:15px !important; }
.chat-ctx-btn .nav-ico svg{ width:19px !important; height:19px !important; }

/* ════════ build 94.8 — Champion timer + wager (moved out of patch94.css, which truncates past ~30KB so these never loaded) ════════ */
/* (5) remove the glow/box background behind the centre timer ring */
.timer-section-center .timer-wrap::before{ display:none !important; background:none !important; animation:none !important; }
.timer-section-center:has(.timer-prog.danger) .timer-wrap::before{ display:none !important; background:none !important; }
/* (6) the Wager amount ("551") was tiny — make it read clearly (and keep Win Chance consistent) */
.player-stats .stat-box b{ font-size:25px !important; }
.player-stats .stat-box b.bet-amt .coin-ico{ width:.8em !important; height:.8em !important; }
@media (max-width:760px){ .player-stats .stat-box b{ font-size:22px !important; } }
/* On phones the two fighters sit side-by-side in narrow columns, so the 2-up Wager|Win Chance grid
   pushed "Win Chance" off the right edge (hidden). Stack them so both stats stay fully visible. */
@media (max-width:680px){
  .player-stats{ grid-template-columns:1fr !important; gap:6px !important; }
  .player-stats .stat-box{ min-width:0; }
  .player-stats .stat-box b{ font-size:19px !important; }
}

/* ── Chat @-mentions ─────────────────────────────────────────────────────────
   Highlight chips for tagged players, a "you were mentioned" message style, and the @ picker. */
.chat-form{ position: relative; }   /* anchor the @-picker above the input */
/* A tag is a gold name on a soft gold pill — only the NAME is highlighted, never the whole message. */
.chat-mention{
  color:#1c1304 !important; background:var(--gold); border-radius:5px;
  padding:1px 6px; font-weight:800; display:inline; white-space:nowrap;
}
.chat-mention.me{ background:var(--gold); color:#1c1304 !important; }
.chat-mention-pop{
  position:fixed; width:262px; max-width:calc(100vw - 16px); z-index:4000;
  min-width:262px; max-height:280px; overflow-y:auto; overflow-x:hidden;
  background:#161b2b; border:1px solid rgba(140,160,210,.22);
  border-radius:11px; padding:6px; box-shadow:0 12px 34px rgba(0,0,0,.55); display:block;
}
.chat-mention-pop[hidden]{ display:none; }
.chat-mention-item{
  display:flex; align-items:center; gap:9px; width:100%; box-sizing:border-box; padding:9px 12px; margin:0 0 2px; border:0; border-radius:8px;
  background:transparent; color:#e8eaf0; font-size:14px; font-weight:700; text-align:left; cursor:pointer;
  white-space:nowrap; word-break:normal; line-height:1.25;
}
.chat-mention-item:last-child{ margin-bottom:0; }
.chat-mention-item:hover, .chat-mention-item.sel{ background:rgba(238,179,81,.22); color:#ffe6b0; }
/* the shared .cm-name (skin cards) truncates with an ellipsis — here each name must stay on ONE line
   (never wrap a letter per line), names stacked vertically; a too-long name ellipsis-es gracefully */
.chat-mention-item .cm-name{ flex:1 1 auto; min-width:0; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; word-break:normal !important; color:inherit !important; font:700 14px var(--fu,inherit); }
.chat-mention-empty{ padding:10px 12px; color:var(--t3,#6b7283); font-size:13px; font-weight:600; }

/* ═══════════════════════════════════════════════════════════════════════
   ✦ AFFILIATE PAGE — table-based redesign (stat cards · code/link · chart · referred users · API key)
   ═══════════════════════════════════════════════════════════════════════ */
.affx-hero{ display:flex; align-items:flex-end; justify-content:space-between; gap:18px; flex-wrap:wrap; }
.affx-hero-sub{ color:var(--t2); font-size:14px; margin:0 0 2px; }
.affx-hero-sub .g{ color:var(--gold2); font-weight:800; }

.affx-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:16px 0 14px; }
@media (min-width:900px){ .affx-stats{ grid-template-columns:repeat(5,1fr); } }
.affx-stat{ position:relative; background:linear-gradient(180deg,#191d2b,#13151f); border:1px solid var(--ln); border-radius:14px; padding:14px 15px; min-width:0; }
.affx-stat-l{ display:flex; align-items:center; gap:5px; font-size:10.5px; font-weight:800; letter-spacing:.06em; color:var(--t3); text-transform:uppercase; white-space:nowrap; }
.affx-stat-n{ display:flex; align-items:center; gap:6px; margin-top:8px; font-family:var(--fu); font-weight:800; font-size:22px; color:var(--t1); font-variant-numeric:tabular-nums; }
.affx-stat-n.g{ color:var(--gold2); }
.affx-stat-n .coin-ico{ width:18px; height:18px; }
.affx-stat-ico{ color:var(--t2); flex:0 0 auto; }
.affx-tip{ width:15px; height:15px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; background:rgba(0,0,0,.3); border:1px solid var(--ln2); color:var(--t3); font-size:10px; font-weight:800; cursor:help; font-style:normal; }
.affx-stat-claim{ border-color:rgba(238,179,81,.34); background:linear-gradient(180deg,rgba(238,179,81,.10),#13151f); }
.affx-claim-btn{ margin-top:10px; width:100%; padding:7px; border:0; border-radius:9px; cursor:pointer; font-family:var(--fu); font-weight:800; font-size:12px; letter-spacing:.04em; color:#241803; background:linear-gradient(135deg,#ffd564,#eeb351); box-shadow:0 4px 12px rgba(238,179,81,.34); transition:filter .15s, transform .15s; }
.affx-claim-btn:hover{ filter:brightness(1.06); transform:translateY(-1px); }
.affx-claim-btn:disabled{ opacity:.7; cursor:default; transform:none; }

.affx-share{ display:grid; grid-template-columns:1fr; gap:12px; margin-bottom:0; align-items:end; }
@media (min-width:760px){ .affx-share{ grid-template-columns:1fr 1fr; column-gap:20px; } }
/* Get promo banners CTA: full-width bar directly under both boxes, slim and clean. */
.affx-banner-cta{ display:block; margin:12px 0 4px; grid-column:1 / -1; }
.affx-share-l{ display:block; font-size:12.5px; font-weight:800; color:var(--gold2); margin:0 0 7px; letter-spacing:.02em; }
.affx-copy-row{ display:flex; align-items:center; gap:0; background:#101219; border:1px solid var(--ln2); border-radius:11px; overflow:hidden; }
.affx-copy-ico{ display:flex; align-items:center; padding:0 4px 0 12px; color:var(--gold); flex:0 0 auto; }
.affx-copy-input{ flex:1 1 auto; min-width:0; background:transparent; border:0; outline:0; color:var(--t1); font-size:13.5px; font-weight:700; padding:12px 10px; font-family:var(--fm); }
.affx-copy-btn{ flex:0 0 auto; align-self:stretch; padding:0 18px; border:0; cursor:pointer; font-family:var(--fu); font-weight:800; font-size:12px; letter-spacing:.04em; color:#241803; background:linear-gradient(135deg,#ffd564,#eeb351); transition:filter .15s; }
.affx-copy-btn:hover{ filter:brightness(1.07); }
.affx-copy-btn.done{ background:linear-gradient(135deg,#2bb964,#1f9a52); color:#fff; }

.affx-card{ background:linear-gradient(180deg,#16192479,#12141d); border:1px solid var(--ln); border-radius:16px; margin-bottom:14px; overflow:hidden; }
.affx-card-title{ font-family:var(--fu); font-weight:800; font-size:14px; letter-spacing:.06em; color:var(--t1); text-transform:uppercase; margin:0; }
.affx-card-title-pad{ padding:16px 16px 0; }
.affx-chart-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:15px 16px 6px; }
.affx-range{ display:inline-flex; gap:4px; background:#0f1118; border:1px solid var(--ln); border-radius:9px; padding:3px; }
.affx-range button{ border:0; background:transparent; color:var(--t3); font-size:11.5px; font-weight:800; padding:5px 10px; border-radius:6px; cursor:pointer; transition:background .15s, color .15s; }
.affx-range button:hover{ color:var(--t1); }
.affx-range button.on{ background:rgba(238,179,81,.16); color:var(--gold2); }
.affx-chart-wrap{ padding:4px 8px 12px; }
.affx-chart{ width:100%; min-height:230px; }
.affx-chart-empty{ display:flex; align-items:center; justify-content:center; height:200px; color:var(--t3); font-size:13px; }
.affx-line{ fill:none; stroke:#eeb351; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 6px rgba(238,179,81,.4)); }
.affx-grid{ stroke:rgba(196,184,158,.10); stroke-width:1; }
.affx-axis{ fill:var(--t3); font-size:10px; font-family:var(--fm); }
.affx-dot{ fill:#ffd877; stroke:#0a0c15; stroke-width:1.4; }

.affx-table-scroll{ overflow-x:auto; }
.affx-table{ width:100%; border-collapse:collapse; min-width:680px; }
.affx-table th{ text-align:left; font-size:10.5px; font-weight:800; letter-spacing:.05em; color:var(--t3); text-transform:uppercase; padding:12px 14px; border-bottom:1px solid var(--ln); white-space:nowrap; }
.affx-table td{ padding:12px 14px; font-size:13.5px; color:var(--t1); border-bottom:1px solid rgba(196,184,158,.06); white-space:nowrap; font-variant-numeric:tabular-nums; }
.affx-table td.g{ color:var(--gold2); font-weight:700; }
.affx-table td .coin-ico{ width:14px; height:14px; }
.affx-table tbody tr:last-child td{ border-bottom:0; }
.affx-table tbody tr:hover td{ background:rgba(238,179,81,.04); }
.affx-td-user{ display:flex; align-items:center; gap:9px; }
.affx-av{ width:26px; height:26px; border-radius:50%; object-fit:cover; flex:0 0 26px; background:#222633; }
.affx-av-fb{ display:inline-flex; align-items:center; justify-content:center; font-weight:800; font-size:12px; color:#241803; background:linear-gradient(135deg,#ffd564,#eeb351); }
.affx-uname{ font-weight:700; color:var(--t1); }
.affx-td-date{ color:var(--t2); }
.affx-badge{ display:inline-block; font-size:10.5px; font-weight:800; letter-spacing:.03em; padding:3px 9px; border-radius:999px; background:rgba(196,184,158,.12); color:var(--t2); border:1px solid var(--ln2); }
.affx-badge.on{ background:rgba(43,185,100,.14); color:#5fd497; border-color:rgba(43,185,100,.34); }
.affx-badge-ftd{ background:rgba(238,179,81,.16); color:var(--gold2); border-color:rgba(238,179,81,.38); }
.affx-empty-row td{ text-align:center; color:var(--t3); padding:26px 14px !important; }
.affx-pager{ display:flex; align-items:center; justify-content:center; gap:12px; padding:12px; }
.affx-pg{ width:32px; height:32px; border-radius:8px; border:1px solid var(--ln2); background:#13151f; color:var(--t1); font-size:15px; font-weight:800; cursor:pointer; transition:background .15s; }
.affx-pg:hover:not(:disabled){ background:rgba(238,179,81,.14); border-color:rgba(238,179,81,.34); }
.affx-pg:disabled{ opacity:.35; cursor:default; }
.affx-pg-num{ min-width:28px; height:32px; display:inline-flex; align-items:center; justify-content:center; padding:0 10px; border-radius:8px; background:linear-gradient(135deg,#ffd564,#eeb351); color:#241803; font-weight:800; font-size:13px; }

.affx-apikey-card{ padding:16px; }
.affx-apikey-row{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.affx-apikey-sub{ color:var(--t3); font-size:12.5px; margin:5px 0 0; }
.affx-apikey-btn{ flex:0 0 auto; padding:10px 18px; border:1px solid rgba(238,179,81,.4); border-radius:10px; background:rgba(238,179,81,.10); color:var(--gold2); font-family:var(--fu); font-weight:800; font-size:13px; cursor:pointer; transition:background .15s; }
.affx-apikey-btn:hover{ background:rgba(238,179,81,.18); }
.affx-apikey-btn:disabled{ opacity:.7; cursor:default; }
.affx-apikey-out{ margin-top:14px; }

/* affiliate — change-code form */
.affx-codeform{ margin:0 0 16px; }
.affx-codeform-row{ display:flex; gap:10px; flex-wrap:wrap; }
.affx-code-edit{ flex:1 1 220px; min-width:0; background:#101219; border:1px solid var(--ln2); border-radius:11px; padding:12px 14px; color:var(--t1); font-size:14px; font-weight:700; font-family:var(--fm); outline:0; }
.affx-code-edit:focus{ border-color:rgba(238,179,81,.5); }
.affx-code-save{ flex:0 0 auto; padding:0 20px; border:1px solid rgba(238,179,81,.4); border-radius:11px; background:rgba(238,179,81,.12); color:var(--gold2); font-family:var(--fu); font-weight:800; font-size:13px; cursor:pointer; transition:background .15s; }
.affx-code-save:hover{ background:rgba(238,179,81,.2); }
.affx-codeform-hint{ display:block; margin-top:7px; color:var(--t3); font-size:11.5px; }
.affx-apikey-docs{ margin:12px 0 0; color:var(--t3); font-size:12px; line-height:1.5; }
.affx-apikey-docs code{ background:#0f1118; border:1px solid var(--ln); border-radius:5px; padding:1px 6px; color:var(--gold2); font-size:11.5px; word-break:break-all; }

/* chat context-menu: respect [hidden] (display:flex !important would otherwise show it) + red Delete */
.chat-ctx-btn[hidden]{ display:none !important; }
.chat-ctx-btn.chat-ctx-danger{ color:#fca5a5 !important; }
.chat-ctx-btn.chat-ctx-danger:hover{ background:rgba(239,68,68,.16) !important; color:#fff !important; }
.chat-ctx-btn.chat-ctx-mod .nav-ico{ opacity:.9; }

/* ── affiliate Commission Levels (gold) ── */
.afflv-card{ padding-bottom:6px; }
.afflv-list{ display:flex; flex-direction:column; gap:8px; padding:12px 14px 14px; }
.afflv-row{ display:flex; align-items:center; gap:14px; background:linear-gradient(180deg,#191d2b,#13151f); border:1px solid var(--ln); border-radius:12px; padding:11px 14px; transition:border-color .15s, background .15s; }
.afflv-row.on{ border-color:rgba(238,179,81,.45); background:linear-gradient(180deg,rgba(238,179,81,.10),#13151f); }
.afflv-badge{ flex:0 0 auto; min-width:54px; text-align:center; font-family:var(--fu); font-weight:800; font-size:13px; letter-spacing:.03em; color:#241803; background:linear-gradient(135deg,#ffd564,#eeb351); border-radius:8px; padding:6px 8px; }
.afflv-row:not(.on) .afflv-badge{ color:var(--gold2); background:rgba(238,179,81,.14); border:1px solid rgba(238,179,81,.3); }
.afflv-mid{ flex:1 1 auto; min-width:0; }
.afflv-prog-top{ display:flex; align-items:baseline; gap:6px; margin-bottom:5px; font-size:12.5px; }
.afflv-prog-val{ display:inline-flex; align-items:center; gap:4px; color:var(--gold2); font-weight:800; font-variant-numeric:tabular-nums; }
.afflv-prog-val .coin-ico{ width:13px; height:13px; }
.afflv-prog-goal{ color:var(--t3); font-weight:700; }
.afflv-bar{ height:6px; border-radius:99px; background:rgba(196,184,158,.12); overflow:hidden; }
.afflv-bar span{ display:block; height:100%; border-radius:99px; background:linear-gradient(90deg,#eeb351,#f4cd84); box-shadow:0 0 10px rgba(238,179,81,.45); }
.afflv-rates{ flex:0 0 auto; display:flex; flex-direction:column; gap:3px; text-align:right; }
.afflv-rate{ font-size:12px; color:var(--t2); white-space:nowrap; }
.afflv-rate b{ color:var(--gold2); font-weight:800; }
@media (max-width:560px){
  .afflv-row{ flex-wrap:wrap; gap:8px 12px; }
  .afflv-rates{ flex-direction:row; gap:12px; text-align:left; width:100%; }
}

/* quickgame stake input now shares the standard .stake-input look (same as coinflip/rustpot) */
.qg-stake-row .qg-stake-wrap{ flex:1 1 auto; min-width:0; }
.stake-input.bad{ animation:qgShake .4s; }

/* Champion watch — winner shown alone, centered, emphasised (crown anchored to the solo block) */
.bhw-solo{ position:relative; }
.bhw-solo .bhw-av{ width:92px; height:92px; border-color:var(--gold2,#f3b53f); box-shadow:0 0 26px rgba(238,179,81,.40); }
.bhw-solo .bhw-av-fb{ font-size:36px; }
.bhw-solo .bhw-crown{ top:-16px; font-size:26px; }
.bhw-solo .bhw-chance{ color:var(--gold2,#f3b53f); font-weight:700; font-size:12px; }

/* BETA badge beside the logo + keep the logo vertically centred in the top bar (chat-header level) */
.brand{ align-items:center; }
.brand-beta{
  display:inline-flex; align-items:center; align-self:center;
  font-size:10px; font-weight:800; letter-spacing:.10em; line-height:1;
  color:#0c0c12; text-transform:uppercase;
  background:linear-gradient(145deg, var(--gold2,#f4cd84), var(--gold,#eeb351));
  padding:3px 6px 2px; border-radius:6px; margin-left:2px;
  box-shadow:0 2px 8px rgba(238,179,81,.32); position:relative; top:-1px;
}
@media (max-width:560px){ .brand-beta{ font-size:9px; padding:2px 5px; } }
/* On mobile the collapsed menu button sits right beside the logo — hide the BETA chip there so it
   can't overlap the menu ("the BETA tag overlaps into the menu"). It still shows on desktop. */
@media (max-width:1150px){ .brand-beta{ display:none; } }

/* RAIN chat tag — animated falling rain (no longer plain text); TIP — gold coin chip */
.chat-rain-tag{ display:inline-flex; align-items:center; gap:5px; font-weight:800; font-size:11px; letter-spacing:.08em;
  color:#8fc8ff; background:linear-gradient(180deg, rgba(80,160,255,.18), rgba(80,160,255,.05));
  padding:2px 8px 2px 5px; border-radius:7px; border:1px solid rgba(120,180,255,.38); line-height:1; vertical-align:middle; }
.chat-rain-tag .crt-txt{ text-shadow:0 1px 4px rgba(40,110,210,.5); }
.crt-drops{ position:relative; width:15px; height:14px; display:inline-block; overflow:hidden; flex:0 0 15px; }
.crt-drops i{ position:absolute; top:-5px; width:1.6px; height:5px; border-radius:1px; background:linear-gradient(180deg,#d4ecff,#5aa0ff); opacity:0;
  animation:crtRain 1s linear infinite; }
.crt-drops i:nth-child(1){ left:2px;  animation-delay:0s; }
.crt-drops i:nth-child(2){ left:6px;  animation-delay:.28s; }
.crt-drops i:nth-child(3){ left:10px; animation-delay:.55s; }
.crt-drops i:nth-child(4){ left:13px; animation-delay:.78s; }
@keyframes crtRain{ 0%{ transform:translateY(-5px); opacity:0; } 18%{ opacity:.95; } 100%{ transform:translateY(15px); opacity:0; } }
.chat-tip-tag{ display:inline-flex; align-items:center; gap:4px; font-weight:800; font-size:11px; letter-spacing:.08em;
  color:#0c0c12; background:linear-gradient(145deg,var(--gold2,#f4cd84),var(--gold,#eeb351));
  padding:2px 8px; border-radius:7px; line-height:1; vertical-align:middle; box-shadow:0 2px 7px rgba(238,179,81,.3); }
.chat-tip-tag .coin-ico{ width:13px; height:13px; flex:0 0 13px; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .crt-drops i{ animation:none; opacity:.85; } }

/* ── Admin → Revenue dashboard (deposits / withdrawals / house commission) ── */
.rev-periods{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:14px 0 10px; }
.rev-pill{ display:inline-flex; align-items:center; padding:8px 16px; border-radius:9px; font-weight:700; font-size:13px;
  color:var(--t2); background:rgba(255,255,255,.04); border:1px solid var(--ln); text-decoration:none; transition:.15s; }
.rev-pill:hover{ color:var(--t1); border-color:var(--p); }
.rev-pill.on{ color:#0c0c12; background:linear-gradient(145deg,var(--gold2,#f4cd84),var(--gold,#eeb351)); border-color:transparent; }
.rev-custom{ display:inline-flex; align-items:center; gap:6px; padding:5px 8px; border-radius:9px; background:rgba(255,255,255,.04); border:1px solid var(--ln); }
.rev-custom.on{ border-color:var(--gold,#eeb351); }
.rev-custom input[type=date]{ background:rgba(0,0,0,.35); border:1px solid var(--ln); border-radius:7px; color:var(--t1); padding:6px 8px; font-size:13px; color-scheme:dark; }
.rev-arrow{ color:var(--t3); }
.rev-apply{ padding:7px 14px; border-radius:7px; border:0; background:var(--p); color:#fff; font-weight:700; font-size:13px; cursor:pointer; }
.rev-apply:hover{ filter:brightness(1.1); }
.rev-range-note{ color:var(--t2); font-size:12.5px; margin-bottom:14px; }
.rev-range-note b{ color:var(--t1); }
.rev-cards{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:18px; }
.rev-card{ background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.015)); border:1px solid var(--ln); border-radius:14px; padding:16px 18px; }
.rev-card-lbl{ color:var(--t3); font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; margin-bottom:8px; }
.rev-card-num{ font-size:26px; font-weight:800; color:var(--t1); display:flex; align-items:center; gap:6px; }
.rev-card-num .coin-ico{ width:20px; height:20px; }
.rev-card-num.neg{ color:#ff6b6b; }
.rev-dep{ border-color:rgba(90,200,140,.30); }
.rev-dep .rev-card-num{ color:#7fdca5; }
.rev-wd{ border-color:rgba(255,120,120,.30); }
.rev-wd .rev-card-num{ color:#ff9b9b; }
.rev-comm{ border-color:rgba(238,179,81,.45); background:linear-gradient(180deg, rgba(238,179,81,.10), rgba(238,179,81,.02)); }
.rev-comm .rev-card-num{ color:var(--gold2,#f4cd84); }
.rev-forfeit{ border-color:rgba(168,111,228,.38); background:linear-gradient(180deg, rgba(168,111,228,.10), rgba(168,111,228,.02)); }
.rev-forfeit .rev-card-num{ color:#c39cf0; }
.rev-tables{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.rev-tbl{ background:rgba(255,255,255,.025); border:1px solid var(--ln); border-radius:12px; overflow:hidden; }
.rev-tbl-head{ padding:11px 14px; font-weight:700; font-size:13px; color:var(--t1); background:rgba(255,255,255,.04); border-bottom:1px solid var(--ln); }
.rev-trow{ display:flex; justify-content:space-between; align-items:center; padding:10px 14px; border-bottom:1px solid rgba(255,255,255,.05); font-size:13px; }
.rev-trow:last-child{ border-bottom:0; }
.rev-trow span{ color:var(--t2); }
.rev-trow b{ color:var(--t1); display:inline-flex; align-items:center; gap:5px; font-weight:700; }
.rev-trow b .coin-ico{ width:14px; height:14px; }
.rev-trow-tot{ background:rgba(238,179,81,.06); }
.rev-trow-tot span, .rev-trow-tot b{ color:var(--gold2,#f4cd84); font-weight:800; }
.rev-foot-note{ color:var(--t3); font-size:11.5px; margin-top:14px; line-height:1.5; }
@media (max-width:860px){ .rev-cards{ grid-template-columns:1fr 1fr; } .rev-tables{ grid-template-columns:1fr; } }
@media (max-width:480px){ .rev-cards{ grid-template-columns:1fr; } .rev-custom{ width:100%; flex-wrap:wrap; } }

/* Admin user-history opponent column (#4) */
.adm-gh-vs{ font-size:12.5px; color:var(--t2,#c2ccde); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ── Legal / FAQ page (#14) ──────────────────────────────────────────────── */
.legal-tabs{ display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }
.legal-tab{ display:inline-block; padding:8px 14px; border-radius:10px; font-size:13px; font-weight:700;
  color:var(--t2,#aeb6cc); background:linear-gradient(180deg,var(--rust-card2,#1d2233),var(--rust-card,#151926));
  border:1px solid var(--rust-ln,rgba(140,160,210,.14)); text-decoration:none; transition:color .15s ease, border-color .15s ease, transform .12s ease; }
.legal-tab:hover{ color:#fff; border-color:rgba(238,179,81,.3); transform:translateY(-1px); }
.legal-tab.active{ color:#1c1408; background:linear-gradient(135deg,#f1c869,#e0a93b); border-color:transparent; box-shadow:0 6px 16px rgba(238,179,81,.28); }
.legal-doc{ line-height:1.7; color:var(--t2,#c2c9dc); width:100%; max-width:none; }
.legal-doc p{ max-width:1100px; }
.legal-doc h3{ margin:22px 0 8px; font-size:16px; color:#fff; font-weight:800; }
.legal-doc h3:first-of-type{ margin-top:8px; }
.legal-doc p{ margin:0 0 12px; }
.legal-doc a{ color:#f1c869; text-decoration:none; border-bottom:1px solid rgba(241,200,105,.35); }
.legal-doc a:hover{ border-bottom-color:#f1c869; }
.legal-updated{ font-size:12px; color:var(--t3,#6b7283); text-transform:uppercase; letter-spacing:.08em; margin-bottom:14px !important; }
.ftr-links-legal{ margin-top:6px; opacity:.92; }
.ftr-links-legal a{ font-size:12px; }

/* #5 — footer legal links never wrap mid-phrase (plenty of room) */
.ftr-links-legal{ flex-wrap:wrap; }
.ftr-links-legal a{ white-space:nowrap; }
.ftr-links a{ white-space:nowrap; }

/* #30 — View button on the creator's own open Rustflip */
.cf-view-btn{ display:inline-flex; align-items:center; gap:5px; padding:7px 13px; border:1px solid rgba(140,160,210,.25);
  background:rgba(140,160,210,.1); color:#cdd5ea; font:700 12px var(--fu,inherit); border-radius:9px; cursor:pointer; transition:background .15s, border-color .15s; }
.cf-view-btn:hover{ background:rgba(238,179,81,.16); border-color:rgba(238,179,81,.4); color:#ffe6b0; }
.cf-game-actions .cf-waiting-tag{ margin-left:8px; }

/* #34 — provably-fair badge under the footer copyright */
.ftr-fair-img{ display:block; max-width:96px; height:auto; margin-top:6px; opacity:.9; }

/* #25 — withdrawal transaction/scan link in profile history */
.wr-scan-link{ color:#f1c869; text-decoration:none; font-weight:700; border-bottom:1px solid rgba(241,200,105,.4); }
.wr-scan-link:hover{ color:#ffe6b0; }
.adm-wreq-acct{ font-size:12px; color:var(--t2,#aeb6cc); word-break:break-all; }

/* #3 — small copy buttons next to provably-fair / verify values in every game */
.fair-copy{ display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; margin-left:6px; vertical-align:middle;
  border:1px solid rgba(140,160,210,.28); background:rgba(140,160,210,.1); color:#cdd5ea; border-radius:6px; cursor:pointer;
  font-size:12px; line-height:1; padding:0; transition:background .14s, border-color .14s, color .14s; }
.fair-copy:hover{ background:rgba(238,179,81,.18); border-color:rgba(238,179,81,.45); color:#ffe6b0; }
.fair-copy.copied{ background:rgba(74,222,128,.2); border-color:rgba(74,222,128,.5); color:#bbf7d0; }

/* #36 — won skin shown in the Recent Flips feed (image + value; name on hover) */
.cf-row-wonskin{ display:inline-flex; align-items:center; gap:6px; }
.cf-row-wonskin img{ width:30px; height:30px; object-fit:contain; filter:drop-shadow(0 1px 3px rgba(0,0,0,.5)); }
.cf-row-stakedskins{ display:inline-flex; align-items:center; gap:4px; flex:0 0 auto; margin-right:2px; }
.cf-row-stakedskins img{ width:28px; height:28px; object-fit:contain; filter:drop-shadow(0 1px 3px rgba(0,0,0,.5)); }
.cf-row-stakedskins .skin-stack .ss-th{ width:28px; height:28px; }
.cf-row-wonval{ display:inline-flex; align-items:center; gap:3px; color:var(--gold2,#fbbf24); font-weight:800; font-size:13px; }

/* #36 — won skin in Rustpot / Quickgame recent-winners feeds */
.rp-recent-wonskin, .qg-rrow-win-skin{ display:inline-flex; align-items:center; gap:5px; color:var(--gold2,#fbbf24); font-weight:800; font-size:13px; }
.rp-recent-wonskin > img, .qg-rrow-win-skin > img, .cf-row-wonskin > img{ width:28px; height:28px; object-fit:contain; box-sizing:border-box; border:1.5px solid rgba(0,0,0,.55); border-radius:8px; background:rgba(0,0,0,.22); filter:drop-shadow(0 1px 3px rgba(0,0,0,.5)); }
/* keep the multi-skin (.ss-th) thumbnails the SAME size as the single-image ones so every recent row matches */
.qg-rrow-win-skin .skin-stack .ss-th, .rp-recent-wonskin .skin-stack .ss-th, .cf-row-wonskin .skin-stack .ss-th{ width:28px; height:28px; }

/* #26 — affiliate referral table: level + games columns */
.affx-lvl-chip{ display:inline-flex; align-items:center; justify-content:center; min-width:24px; height:22px; padding:0 6px;
  border-radius:6px; background:rgba(238,179,81,.14); color:#f1c869; font-weight:800; font-size:12px; }
.affx-td-lvl, .affx-td-games{ text-align:center; color:var(--t1,#e7edfa); font-weight:600; }

/* ════════ #11 — Quick Game visual polish (themed backdrop + card treatment, matching the other games) ════════ */
.qg-header{ position:relative; }
.qg-header .page-title{ position:relative; }
.qg-header::after{ content:""; position:absolute; left:50%; top:-30px; transform:translateX(-50%);
  width:440px; height:200px; max-width:90vw; pointer-events:none; z-index:-1;
  background:radial-gradient(60% 70% at 50% 40%, rgba(238,179,81,.12), transparent 70%); filter:blur(8px); }
.qg-tagline{ color:#aeb6cc; }
/* Stake panel → a real card with a soft gold edge + inner glow (was a bare row) */
.qg-top{ background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(0,0,0,.20));
  border:1px solid rgba(238,179,81,.16); border-radius:16px; padding:16px 18px;
  box-shadow:0 10px 30px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.04); align-items:center; }
.qg-stake-label{ font-weight:700; letter-spacing:.02em; color:#cdd5ea; }
/* Open-games + recent feeds sit on a faint board so the section reads as one arena */
.qg-arena, #qgOpen, #qgRecent{ position:relative; }
#qgOpen, #qgRecent{ background:radial-gradient(120% 140% at 50% 0%, rgba(238,179,81,.05), transparent 60%);
  border-radius:14px; }
.qg-card{ transition:transform .14s ease, box-shadow .14s ease, border-color .14s ease; }
.qg-card:hover{ transform:translateY(-2px); box-shadow:0 12px 26px rgba(0,0,0,.3); border-color:rgba(238,179,81,.3); }
/* Pot chip glow to match the gold economy accents elsewhere */
.qg-card-pot{ text-shadow:0 0 14px rgba(238,179,81,.25); }

/* ════════ #19 — phone-width polish (≤480px): tighten the new elements + common surfaces ════════ */
@media (max-width: 480px){
  /* Provably-fair copy buttons stay easily tappable but don't crowd the value */
  .fair-copy{ width:26px; height:26px; font-size:13px; margin-left:5px; }
  /* Won-skin chips in recent feeds: scale the thumb down a touch so rows don't wrap */
  .cf-row-wonskin img, .rp-recent-wonskin img, .qg-rrow-win-skin img{ width:24px; height:24px; }
  .cf-row-wonval, .rp-recent-wonskin, .qg-rrow-win-skin{ font-size:12px; }
  /* Quick Game stake card: full-width, comfortable tap targets */
  .qg-top{ padding:13px 13px; }
  .qg-top-stake{ min-width:0; flex:1 1 100%; }
  /* Affiliate table: let it scroll, keep the first column pinned-feel via readable padding */
  .affx-table th, .affx-table td{ padding:10px 10px; font-size:12.5px; }
  .affx-lvl-chip{ min-width:22px; height:20px; font-size:11px; }
  /* Withdrawal scan link wraps cleanly */
  .wr-scan-link{ display:inline-block; margin-top:2px; }
  /* Footer provably-fair badge centers nicely */
  .ftr-fair-img{ margin-left:auto; margin-right:auto; }
  /* Recent Battles prize never overflows its row */
  .bh-prize{ font-size:13px; }
}
/* Very small phones (≤360px): one more notch tighter so nothing clips */
@media (max-width: 360px){
  .qg-card-head{ flex-wrap:wrap; gap:4px; }
  .cf-game-row .cf-history-row-result{ font-size:12px; }
  .fair-copy{ width:24px; height:24px; }
}

/* ════════ #8/#11 — Quick Game PAGE background: ground the content in a themed arena (was "floating") ════════ */
.qg-page{ position:relative; max-width:760px; margin:10px auto 0; padding:22px 20px 30px; border-radius:20px;
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(238,179,81,.10), transparent 55%),
    radial-gradient(90% 60% at 50% 110%, rgba(122,45,18,.20), transparent 60%),
    linear-gradient(180deg, rgba(20,24,38,.78), rgba(12,15,25,.92));
  border:1px solid rgba(238,179,81,.14);
  box-shadow:0 24px 60px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.05);
  overflow:hidden; }
/* drifting decorative glow layer so the arena feels alive (like the other game stages) */
.qg-page-bg{ position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(40% 30% at 15% 20%, rgba(90,160,255,.10), transparent 70%),
    radial-gradient(45% 35% at 85% 30%, rgba(238,179,81,.08), transparent 70%);
  animation:qgPageDrift 14s ease-in-out infinite alternate; }
@keyframes qgPageDrift{ from{ transform:translate3d(-2%, -1%, 0) scale(1.02); opacity:.85; }
  to{ transform:translate3d(2%, 1%, 0) scale(1.06); opacity:1; } }
/* lift the real content above the glow */
.qg-page > .qg-header, .qg-page > .qg-top, .qg-page > .qg-feed{ position:relative; z-index:1; }
/* the inner stake card already has its own fill — soften its edge so it sits inside the arena nicely */
.qg-page .qg-top{ background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(0,0,0,.18)); }
.qg-page .qg-feed{ margin-top:18px; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .qg-page-bg{ animation:none; } }
@media (max-width: 560px){ .qg-page{ padding:16px 12px 22px; border-radius:16px; margin-top:6px; } }

/* ════════ Chat game-link preview card (paste a game's share link → pot + winner + Watch) ════════ */
.chat-game-card{ display:flex; flex-direction:column; gap:8px; margin-top:6px; padding:9px 11px;
  background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(0,0,0,.22));
  border:1px solid rgba(238,179,81,.18); border-radius:12px;
  box-shadow:0 6px 16px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.04); max-width:100%; }
.cgc-top{ display:flex; align-items:center; gap:10px; min-width:0; }
.cgc-bottom{ display:flex; align-items:center; justify-content:flex-start; gap:8px 10px; flex-wrap:wrap;
  border-top:1px solid rgba(255,255,255,.07); padding-top:8px; }
.cgc-load{ color:#8b93a7; font-size:12px; padding:4px 2px; }
.cgc-thumb{ width:46px; height:46px; flex:0 0 46px; border-radius:9px; object-fit:cover;
  background:#11151f; border:1px solid rgba(255,255,255,.08); }
.cgc-thumb-ico{ display:flex; align-items:center; justify-content:center; font-size:24px; color:var(--gold2,#eeb351);
  background:radial-gradient(120% 120% at 50% 0%, rgba(238,179,81,.18), rgba(20,24,38,.9)); }
.cgc-thumb-ico svg{ width:26px; height:26px; }
.cgc-info{ flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
.cgc-label{ font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:#f1c869; }
.cgc-win{ font-size:12px; color:#c7cee0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cgc-win b{ color:#eef2fb; }
.cgc-pot{ display:inline-flex; align-items:center; gap:3px; font-size:13px; font-weight:800; color:#ffe7a6;
  text-shadow:0 0 12px rgba(238,179,81,.25); }
.cgc-pot .coin-ico{ width:13px; height:13px; }
.cgc-watch{ flex:0 0 auto; align-self:center; display:inline-flex; align-items:center; justify-content:center;
  padding:5px 12px; border-radius:8px; font-size:11.5px; font-weight:800; text-decoration:none; cursor:pointer; white-space:nowrap;
  color:#cdd5ea; background:rgba(140,160,210,.1); border:1px solid rgba(140,160,210,.25);
  transition:background .15s ease, border-color .15s ease, color .15s ease; }
.cgc-watch:hover{ background:rgba(238,179,81,.16); border-color:rgba(238,179,81,.4); color:#ffe6b0; }
.cgc-btns{ display:flex; align-items:center; gap:6px; flex:0 0 auto; margin-left:auto; }
@media (max-width: 480px){ .chat-game-card{ max-width:100%; } .cgc-thumb{ width:40px; height:40px; flex-basis:40px; } }

/* Rain pot "rising" flourish — a subtle upward lift + gold glow while the number counts up */
#chatRainPot{ display:inline-block; transition:transform .18s ease, text-shadow .18s ease; }
#chatRainPot.rain-pot-rising{ animation:rainPotRise .9s ease-out; }
@keyframes rainPotRise{
  0%{ transform:translateY(2px); text-shadow:0 0 0 rgba(238,179,81,0); }
  40%{ transform:translateY(-2px); text-shadow:0 0 14px rgba(238,179,81,.55); }
  100%{ transform:translateY(0); text-shadow:0 0 8px rgba(238,179,81,.2); }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ #chatRainPot.rain-pot-rising{ animation:none; } }

/* ════════ Quick Game — site-hosted info banner (replaces the removed "New Game" button) ════════ */
.qg-top-info{ display:block; }
.qg-card-range-open{ color:#8fe3a3 !important; font-weight:700; }
.qg-join-firsthint{ color:#8fe3a3; font-weight:700; }

/* ════════ Show the POT SKINS (not just a coin total) across all games — "total skins across all games" ════════ */
/* Rustpot — skins dropped into the pot, under the Pot value */
.rp-pot-skins{ margin-top:7px; display:flex; flex-wrap:wrap; gap:5px; align-items:center; min-height:0; }
.rp-pot-skins:empty{ display:none; }
.rp-pot-skins .skin-stack{ transform:scale(1.05); transform-origin:left center; }
/* Quickgame — skins in each open game's pot, under the card head */
.qg-card-pot-skins{ display:flex; flex-wrap:wrap; gap:5px; align-items:center; padding:4px 2px 2px; }
.qg-card-pot-skins:empty{ display:none; }
/* Champion — show the pot as SKINS. When skins are in the pot the coin total is hidden so the skins
   lead (per "hide the prize pool, show the skins"); an empty pot still shows the value. */
.champ-pot-skins{ margin-top:8px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; justify-content:center; }
.champ-pot-skins:empty{ display:none; }
.champ-pot-skins .skin-stack{ transform:scale(1.12); transform-origin:center; }
/* The prize amount (gross pot) is ALWAYS shown, alongside the pot skins. */

/* ════════ Won-skins shown as a "priciest + N" stack (chat card thumb + recent winners) ════════ */
.cgc-thumb-stack{ position:relative; width:46px; height:46px; flex:0 0 46px; background:transparent !important; border:0 !important; padding:0; overflow:visible; }
.cgc-thumb-stack .skin-stack{ position:static; gap:0; }
.cgc-thumb-stack .ss-th{ width:46px; height:46px; }
.cgc-thumb-stack .skin-stack-more{ position:absolute; right:-5px; bottom:-5px; margin:0; font-size:10px; font-weight:800; padding:1px 5px; z-index:2; background:#2b3346; color:#e8edf7; box-shadow:0 2px 6px rgba(0,0,0,.5); }
@media (max-width: 480px){ .cgc-thumb-stack{ width:40px; height:40px; flex-basis:40px; } .cgc-thumb-stack .ss-th{ width:40px; height:40px; } }
/* in recent-winner rows the stack sits inline before the coin value */
.rp-recent-wonskin .skin-stack, .qg-rrow-win-skin .skin-stack, .cf-row-wonskin .skin-stack{ vertical-align:middle; }

/* ════════ Watch-modal "live views" badge (replaces the old coin-face badge that read like a camera) ════════ */
.cf-views-badge{ position:absolute; right:-5px; bottom:-5px; width:34px; height:34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; border:2.5px solid #11151d;
  box-shadow:0 3px 9px rgba(0,0,0,.55); z-index:3; }
.cf-views-badge svg{ width:19px; height:19px; display:block; }
.cf-views-red{ background:linear-gradient(135deg,#ff3b30,#c81e14); color:#fff; }      /* red side */
.cf-views-blue{ background:linear-gradient(135deg,#2a2f3a,#161a21); color:#ff4136; }  /* black side */
@media (max-width:560px){ .cf-views-badge{ width:28px; height:28px; right:-3px; bottom:-3px; } .cf-views-badge svg{ width:16px; height:16px; } }

/* ════════ Watch-modal: staked skins beside each avatar (red→left, blue→right) ════════ */
.cf-modal-player .cf-modal-pmain{ display:flex; align-items:center; justify-content:center; gap:8px; }
.cf-modal-pskins{ display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
.cf-modal-pskins:empty{ display:none; }
.cf-modal-pskins .skin-stack .ss-th{ width:40px; height:40px; }
.cf-modal-pskins .skin-stack-more{ font-size:11px; }
/* allow room for the skins next to the avatar */
.cf-modal-player{ max-width:210px !important; }
@media (max-width:560px){ .cf-modal-pskins .skin-stack .ss-th{ width:32px; height:32px; } .cf-modal-player{ max-width:170px !important; } }

/* Deployed-build stamp in the footer — dim, unobtrusive, but lets you confirm the live version. */
.ftr-build{ opacity:.5; font-size:.85em; letter-spacing:.02em; margin-left:4px; }

/* ════════ Watch-modal side-coin badge — the ACTUAL coin each player picked (clean 3D coin) ════════ */
.cf-modal-sidecoin{ position:absolute; right:-5px; bottom:-5px; width:36px; height:36px; border-radius:50%;
  overflow:visible; border:none; background:transparent; box-shadow:none; z-index:3;
  display:flex; align-items:center; justify-content:center; }
.cf-modal-sidecoin img{ width:100%; height:100%; object-fit:contain; display:block;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.6)); }
@media (max-width:560px){ .cf-modal-sidecoin{ width:30px; height:30px; right:-3px; bottom:-3px; } }

/* ════════ Rustpot pot-skins → bottom-LEFT corner of the map (was top-left) ════════ */
.rp-map{ position:relative; }
.rp-pot-skins-bl{ position:absolute; left:10px; bottom:10px; margin:0; z-index:6;
  background:rgba(8,10,18,.66); border:1px solid rgba(255,255,255,.08); border-radius:10px; padding:5px 7px;
  backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); max-width:64%; }
.rp-pot-skins-bl:empty{ display:none; }
.rp-pot-skins-bl .skin-stack{ transform:none; }
.rp-pot-skins-bl .skin-stack .ss-th{ width:34px; height:34px; }
/* ensure the pot-skins hover list floats ABOVE the countdown/timer everywhere */
.champ-pot-skins, .rp-pot-skins-bl, .champ-seat-skins{ position:relative; z-index:8; }

/* ════════ Rustpot red-zone close-call excitement (a near-winner drop on the wall edge) ════════ */
@keyframes rpNearEdge{ 0%,100%{ transform:scale(1); filter:none; } 40%{ transform:scale(1.18); filter:drop-shadow(0 0 8px #ffd34d) brightness(1.25); } }
.rp-av-wrap.rp-nearedge, .rp-nearedge{ animation:rpNearEdge .34s ease; z-index:20 !important; }
@keyframes rpRingThrob{ 0%,100%{ box-shadow:0 0 0 2px rgba(255,60,60,.6), inset 0 0 40px rgba(255,40,40,.25); } 50%{ box-shadow:0 0 0 4px rgba(255,90,90,.95), inset 0 0 70px rgba(255,60,60,.5); } }
.rp-ring.rp-ring-throb{ animation:rpRingThrob .34s ease; }

/* ════════════════ Homepage: BONUSES & REWARDS banner ════════════════ */
.hm-free{ display:flex; align-items:center; gap:22px; flex-wrap:wrap; margin:16px 0 8px;
  background:rgba(10,13,26,.42); border:1px solid rgba(140,160,210,.1);
  border-radius:16px; padding:18px 22px; }
.hm-free-hero{ display:flex; align-items:center; gap:18px; flex:1 1 260px; min-width:220px; }
.hm-free-hero-ico{ width:58px; height:58px; flex:none; display:flex; align-items:center; justify-content:center;
  color:var(--gold2,#eeb351); background:radial-gradient(62% 62% at 50% 42%, rgba(238,179,81,.15), transparent 72%); }
.hm-free-hero-ico svg{ width:40px; height:40px; }
.hm-free-hero-ttl{ font-family:var(--fd,inherit); font-size:clamp(22px,2.6vw,29px); font-weight:900; color:#fff; line-height:1.04; }
.hm-free-hero-sub{ color:var(--gold2,#eeb351); font-weight:700; font-size:13px; margin-top:4px; text-transform:uppercase; letter-spacing:.08em; opacity:.85; }
.hm-free-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px 26px; flex:2 1 420px; }
.hm-free-item{ display:flex; align-items:flex-start; gap:12px; text-decoration:none; padding:7px 8px; border-radius:11px; transition:background .14s; }
.hm-free-item:hover{ background:rgba(255,255,255,.04); }
.hm-free-i{ width:34px; height:34px; flex:none; display:flex; align-items:center; justify-content:center;
  color:#aeb7cb; transition:color .14s; }
.hm-free-i svg{ width:22px; height:22px; display:block; }
.hm-free-item:hover .hm-free-i{ color:var(--gold2,#eeb351); }
.hm-free-t b{ display:block; color:#eef2fb; font-weight:800; font-size:13.5px; }
.hm-free-t em{ display:block; color:#8b93a7; font-style:normal; font-size:12.5px; margin-top:1px; }
@media (max-width:620px){ .hm-free-grid{ grid-template-columns:1fr; } }

/* ════════════════ Homepage: ABOUT / SEO text (item 12) ════════════════ */
.hm-about{ display:grid; grid-template-columns:1fr 1fr; gap:14px 44px; margin:26px 0 6px;
  color:#9aa3b6; font-size:14px; line-height:1.62; }
.hm-about-h1{ font-family:var(--fd,inherit); font-size:clamp(22px,2.7vw,30px); font-weight:900; color:#fff; line-height:1.12; margin:0 0 10px; }
.hm-about h3{ color:#eef2fb; font-size:16px; font-weight:800; margin:18px 0 5px; }
.hm-about p{ margin:0 0 4px; }
.hm-about ul{ margin:2px 0 4px; padding-left:20px; }
.hm-about li{ margin:3px 0; }
.hm-about b{ color:#d7deec; }
.hm-about a{ color:var(--gold2,#eeb351); }
@media (max-width:820px){ .hm-about{ grid-template-columns:1fr; gap:2px; } }

/* ═══════════ Compact Games dropdown (item 11) — simple list, NO card art/images ═══════════ */
.nav-games-menu{ flex-direction:column !important; gap:3px !important; width:238px; padding:8px !important; }
.nav-games-menu::before{ left:24px; }
.ngm-card{ width:auto !important; flex-direction:row !important; align-items:center; gap:10px; min-height:44px; padding:6px 11px !important; border-radius:10px; overflow:visible !important; transition:background .14s ease !important; }
.ngm-card:hover{ transform:none !important; box-shadow:none !important; background:rgba(255,255,255,.055); }
.ngm-card::after{ display:none !important; }               /* no shine sweep in the list */
.ngm-art{ display:none !important; }                       /* remove the big card image/art */
.ngm-meta{ padding:0 !important; flex:1; min-width:0; }
.ngm-meta b{ font-size:13.5px; line-height:1.15; }
.ngm-meta small{ display:none !important; }                /* drop subtitle for the compact look */
.ngm-badge{ display:none !important; }
/* live activity chip on the right of each row (populated by app.js) */
.ngm-stat{ margin-left:auto; font-size:11.5px; font-weight:800; color:#8b93a7; white-space:nowrap; display:inline-flex; align-items:center; gap:4px; }
.ngm-stat .coin-ico{ width:12px; height:12px; flex:0 0 12px; }
.ngm-stat .coin-amt{ color:#ffe7a6; }
.ngm-stat.live::before{ content:""; width:7px; height:7px; border-radius:50%; background:#42d778; box-shadow:0 0 6px #42d778; display:inline-block; }
.ngm-stat-wait{ color:#f2b34a; }

/* ═══════ Centre pot amounts (Champion / Rustpot / Quick Game) — balance-style formatting ═══════
   The main figure is bold + prominent; the trailing cents are smaller + subdued, exactly like the
   header balance pill ("first digits prominent, like the balance system"). */
#prizePool .coin-d, #heroPool .coin-d, .rp-pot .coin-d, .qg-card-pot .coin-d, .qg-pot .coin-d{ font-weight:inherit !important; }
#prizePool .coin-c, #heroPool .coin-c, .rp-pot .coin-c, .qg-card-pot .coin-c, .qg-pot .coin-c{
  font-size:1em !important; opacity:.5 !important; font-weight:inherit !important; vertical-align:baseline !important; letter-spacing:0 !important;
}

/* ═══════ Canonical game icons — consistent sizing/colour wherever game_icon() is used ═══════ */
.fair-game-ico{ color:var(--gold2,#eeb351); line-height:0; }
.fair-game-ico svg{ width:32px; height:32px; display:inline-block; }
.hist-item-gico{ display:inline-flex; align-items:center; justify-content:center; color:#aeb7cb; flex:0 0 auto; }
.hist-item-gico svg{ width:18px; height:18px; display:block; }

/* Inline emoji-free UI icons (fight/queue/throne/seat/event) — scale to local font-size,
   currentColor so they inherit the surrounding text colour, aligned to sit on the text baseline. */
svg.ic{ width:1em; height:1em; vertical-align:-.14em; display:inline-block; flex:none; }

/* Emoji-free toast icons — tint per type (mirrors the accent bar colour) */
.rr-toast-info    .rr-toast-ico{ color:var(--rust3); }
.rr-toast-success .rr-toast-ico{ color:#22c55e; }
.rr-toast-money   .rr-toast-ico{ color:#eeb351; }
.rr-toast-error   .rr-toast-ico{ color:#ef4444; }
.rr-toast-win     .rr-toast-ico{ color:#f4cd84; }
/* Winner-showcase crown → gold */
.bhw-crown{ color:#f4cd84; }

/* ══════════════════════════════════════════════════════════════
   Nav "Games" menu — playful per-game icon hover animations
   (the "All Games" homepage feed keeps the plain static marks). */
.qg-q{ opacity:.9; }                 /* quickgame "?" marks — visible so the icon reads from afar */
.ngm-ico svg{ transform-origin:50% 50%; overflow:visible; transition:filter .2s ease; }

/* Champion — crown glows gold and shakes quickly */
@keyframes ngmCrownShake{ 0%,100%{transform:rotate(0)} 18%{transform:rotate(-10deg)} 38%{transform:rotate(8deg)} 58%{transform:rotate(-5deg)} 78%{transform:rotate(3deg)} }
.ngm-card-champions:hover .ngm-ico svg{ animation:ngmCrownShake .5s ease-in-out; filter:drop-shadow(0 0 7px rgba(238,179,81,.9)); }

/* Rustflip — coin does a full edge-on flip */
@keyframes ngmFlip{ 0%{transform:rotateY(0)} 100%{transform:rotateY(360deg)} }
.ngm-card-flip .ngm-ico{ perspective:220px; }
.ngm-card-flip:hover .ngm-ico svg{ animation:ngmFlip .7s cubic-bezier(.4,.05,.3,1); }

/* Rustpot — red circle gently pulses smaller then back */
@keyframes ngmPulse{ 0%,100%{transform:scale(1)} 50%{transform:scale(.76)} }
.ngm-card-rustpot:hover .ngm-ico svg{ animation:ngmPulse 1.15s ease-in-out infinite; filter:drop-shadow(0 0 7px rgba(239,68,68,.75)); }

/* Quick Game — a "?" fades into each square and gently bobs, staggered */
@keyframes ngmQIn{ 0%{opacity:0} 100%{opacity:1} }
@keyframes ngmQBob{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-.9px)} }
.ngm-card-quick:hover .qg-q{ animation:ngmQIn .35s ease-out forwards, ngmQBob 1s ease-in-out .35s infinite; }
.ngm-card-quick:hover .qg-q2{ animation-delay:.12s, .47s; }
.ngm-card-quick:hover .qg-q3{ animation-delay:.24s, .59s; }

/* Quickgame intro banner — plain, no boxed background (item: de-clutter) */

/* ── Rustpot pot-skins: centered strip BELOW the map, right above the fair-hash line ── */
.rp-pot-skins-below{ display:flex; justify-content:center; align-items:center; gap:6px; margin:11px 0 3px; flex-wrap:wrap; min-height:0; }
.rp-pot-skins-below:empty{ display:none; }
.rp-pot-skins-below .skin-stack{ transform:none; }
.rp-pot-skins-below .skin-stack .ss-th{ width:36px; height:36px; }

/* ── Rustpot recent winners: name + % on the LEFT, won-skin + prize + View on the RIGHT ── */
.rp-recent-row{ gap:10px; }
.rp-recent-l{ display:flex; align-items:center; gap:7px; min-width:0; flex:1 1 auto; }
.rp-recent-l .rp-recent-name{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rp-recent-r{ display:flex; align-items:center; gap:9px; margin-left:auto; flex:0 0 auto; }
.rp-recent-r .rp-recent-amt, .rp-recent-r .rp-recent-wonskin{ margin-left:0; }

/* Rustflip WAITING state (viewing your own open game before an opponent joins):
   a colorless coin with a centered "?" and "Waiting…" below — no throw animation. */
.cf-coin-wrap.cf-waiting{ position:relative; filter:grayscale(1) brightness(.72) contrast(.92); animation:none !important; transform:none !important; }
/* the pending coin is a PLAIN colourless disc — the Rust logo is hidden so only the "?" shows */
.cf-coin-wrap.cf-waiting .cf-face-img{ visibility:hidden !important; }
.cf-coin-wrap.cf-waiting .cf-face{ background:radial-gradient(circle at 50% 36%, #5a606c 0%, #3a3e47 58%, #24272e 100%) !important; }
.cf-coin-wrap.cf-waiting::after{
  content:"?"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--fd,system-ui,sans-serif); font-size:72px; font-weight:900; color:#c2c9d6;
  text-shadow:0 3px 10px rgba(0,0,0,.7); z-index:6; pointer-events:none;
}
.cf-outcome-waiting{ color:#9aa3b8 !important; font-weight:700; }

/* ── "Share to chat" button in the Rustflip modal (top-left) ── */
.cf-share-chat{ position:absolute; top:12px; right:96px; z-index:6; width:34px; height:34px; border-radius:10px;
  display:inline-flex; align-items:center; justify-content:center; gap:0;
  border:1px solid rgba(238,179,81,.30);
  background:linear-gradient(180deg, rgba(238,179,81,.15), rgba(0,0,0,.22)); color:#f1c869;
  cursor:pointer; transition:filter .15s ease, transform .06s ease; }
.cf-share-chat svg{ width:17px; height:17px; flex:none; }
.cf-share-chat span{ display:none; }   /* icon-only, grouped to the LEFT of the copy-link button — matches quickgame */
.cf-share-chat:hover{ filter:brightness(1.12); }
.cf-share-chat:active{ transform:translateY(1px); }

/* ── Chat game card: Join (open game) vs View (completed) ── */
.cgc-live{ color:#8fe3a3; font-weight:900; font-size:10px; letter-spacing:.05em; }
.cgc-open-card{ border-color:rgba(143,227,163,.34) !important; }
.cgc-join{ color:#08210f !important; background:linear-gradient(180deg,#7ee0a6,#43c47a) !important;
  border-color:rgba(0,0,0,.2) !important; box-shadow:0 2px 8px rgba(67,196,122,.32) !important; }

/* ── Rustflip modal (item 14): push the two players to the LEFT/RIGHT corners,
   with each player's stake amount + staked skins (3 max, then "3+") stacked BELOW their box. ── */
#cfModal .cf-modal-players{ justify-content:space-between !important; align-items:flex-start !important; gap:8px; padding:0 4px; }
#cfModal .cf-mplayer-left{ align-items:center; }
#cfModal .cf-mplayer-right{ align-items:center; }
#cfModal .cf-modal-vs{ align-self:center; margin-top:34px; }
.cf-modal-pskins-below{ display:flex; align-items:center; justify-content:center; gap:4px; margin-top:3px; min-height:0; }
.cf-modal-pskins-below:empty{ display:none; }
.cf-modal-pskins-below .skin-stack .ss-th{ width:34px; height:34px; }
.cf-modal-pskins-below .skin-stack-more{ font-size:10px; font-weight:800; }
@media (max-width:560px){ .cf-modal-pskins-below .skin-stack .ss-th{ width:28px; height:28px; } }

/* ── Champion MISS → the round slams a DOOR at the fighter's edge (never the avatar), with sparks ──
   Replaces the old shield-over-the-avatar. Positions MUST match shieldTarget() frac (88% / 12%). */
.block-door{
  position:absolute; top:50%; width:104px; opacity:0; z-index:8; pointer-events:none;
  transform:translate(-50%,-50%) scale(.9);
  transition:transform .1s ease-out, opacity .08s ease-out;
  filter:drop-shadow(0 6px 15px rgba(0,0,0,.6));
}
.block-door.in{ opacity:1; transform:translate(-50%,-50%) scale(1); }
.block-door.real.bs-l{ left:66%; }   /* left fighter: shield IN FRONT (facing the incoming shot from the right) */
.block-door.real.bs-r{ left:34%; }   /* right fighter: shield IN FRONT (facing the incoming shot from the left) */
.door-svg,.door-img{ width:100%; height:auto; display:block; filter:drop-shadow(0 5px 13px rgba(0,0,0,.62)); }
.block-door.clink{ animation:doorHit .34s ease; }
@keyframes doorHit{
  0%{ transform:translate(-50%,-50%) scale(1) rotate(0); }
  22%{ transform:translate(calc(-50% + 3px),-50%) scale(1.03) rotate(1.4deg); }
  55%{ transform:translate(calc(-50% - 2px),-50%) scale(1.01) rotate(-.8deg); }
  100%{ transform:translate(-50%,-50%) scale(1) rotate(0); }
}
/* spark burst at the point of impact */
.door-sparks{ position:absolute; width:8px; height:8px; transform:translate(-50%,-50%); pointer-events:none; }
.door-sparks::before{
  content:""; position:absolute; inset:-9px; border-radius:50%;
  background:radial-gradient(circle, rgba(255,228,150,.95), rgba(255,150,45,.55) 42%, transparent 72%);
  animation:doorSparkFlash .42s ease-out forwards;
}
.door-sparks::after{
  content:""; position:absolute; inset:-4px; border-radius:50%;
  box-shadow:0 0 0 2px rgba(255,205,95,.85), 0 0 12px 2px rgba(255,170,60,.6);
  animation:doorSparkRing .46s ease-out forwards;
}
@keyframes doorSparkFlash{ 0%{ transform:scale(.35); opacity:1; } 100%{ transform:scale(1.7); opacity:0; } }
@keyframes doorSparkRing{ 0%{ transform:scale(.3); opacity:.9; } 100%{ transform:scale(2.2); opacity:0; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .block-door{ transition:none; } .block-door.clink{ animation:none; } .door-sparks::before,.door-sparks::after{ animation:none; opacity:0; } }

.hm-qp-ico svg{ width:28px; height:28px; }   /* size homepage tile game icons (game_icon svgs have no width/height) */

/* ══════════════════════════════════════════════════════════════════════════════
   CASES — case-opening game (build 184)
   ══════════════════════════════════════════════════════════════════════════════ */
.cs-header{ text-align:center; margin:6px 0 22px; }
.cs-header .eyebrow svg{ width:14px; height:14px; vertical-align:-2px; margin-right:5px; }
.cs-sub{ max-width:640px; margin:8px auto 0; color:var(--t2); font-size:13.5px; line-height:1.55; }
.cs-sub a{ color:var(--accent2); }
.cs-tiers{ display:flex; flex-direction:column; gap:30px; }
.cs-tier-head{ display:flex; align-items:baseline; gap:12px; margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid var(--ln); }
.cs-tier-head h2{ font-family:var(--fd,inherit); font-size:22px; letter-spacing:.04em; color:var(--t1); }
.cs-tier-head span{ color:var(--t2); font-size:12.5px; }
.cs-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:16px; }

/* case card */
.cs-card{ position:relative; overflow:hidden; cursor:pointer; text-align:center; border:1px solid var(--ln);
  border-radius:16px; padding:18px 14px 16px; background:linear-gradient(180deg,var(--card2),var(--card));
  transition:transform .22s cubic-bezier(.34,1.3,.64,1), box-shadow .3s, border-color .25s; display:flex; flex-direction:column; align-items:center; gap:10px; }
.cs-card:hover{ transform:translateY(-5px); border-color:color-mix(in srgb, var(--ac) 55%, var(--ln)); box-shadow:0 18px 44px rgba(0,0,0,.45), 0 0 34px -8px var(--ac); }
.cs-card-glow{ position:absolute; inset:-40% 0 auto 0; height:150px; background:radial-gradient(60% 100% at 50% 0%, color-mix(in srgb, var(--ac) 45%, transparent), transparent 72%); opacity:.55; pointer-events:none; }
.cs-card-tierbadge{ position:absolute; top:10px; left:10px; font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; font-weight:800; color:var(--ac); background:color-mix(in srgb, var(--ac) 16%, transparent); border:1px solid color-mix(in srgb, var(--ac) 35%, transparent); border-radius:6px; padding:2px 6px; }
.cs-card-art{ position:relative; width:100%; height:96px; display:flex; align-items:center; justify-content:center; margin-top:6px; }
.cs-card-name{ font-weight:800; font-size:14.5px; color:var(--t1); letter-spacing:.01em; }
.cs-card-price{ display:inline-flex; align-items:center; gap:5px; font-weight:800; color:var(--gold2,#fbbf24); font-size:14px; }
.cs-card-price .coin-ico{ width:14px; height:14px; }
.cs-card-open{ margin-top:2px; font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#0b0e16;
  background:linear-gradient(180deg, color-mix(in srgb, var(--ac) 88%, #fff 8%), var(--ac)); border-radius:9px; padding:7px 20px; box-shadow:0 4px 14px -4px var(--ac); transition:filter .2s, transform .15s; }
.cs-card:hover .cs-card-open{ filter:brightness(1.08); }

/* CSS 3D crate */
.cs-crate{ position:relative; width:82px; height:76px; transform:rotateX(8deg); }
.cs-crate-body{ position:absolute; inset:14px 0 0 0; border-radius:9px; background:linear-gradient(160deg, color-mix(in srgb, var(--ac) 30%, #1a1f2e), #12151f); border:1.5px solid color-mix(in srgb, var(--ac) 40%, #000); box-shadow:inset 0 -10px 18px rgba(0,0,0,.5); }
.cs-crate-lid{ position:absolute; top:0; left:-4px; right:-4px; height:22px; border-radius:8px; background:linear-gradient(180deg, color-mix(in srgb, var(--ac) 55%, #2a3040), color-mix(in srgb, var(--ac) 20%, #171b28)); border:1.5px solid color-mix(in srgb, var(--ac) 50%, #000); box-shadow:0 4px 12px rgba(0,0,0,.5); }
.cs-crate-stripe{ position:absolute; left:50%; top:16px; width:14px; height:60px; transform:translateX(-50%); background:linear-gradient(180deg, color-mix(in srgb, var(--ac) 70%, #fff 10%), color-mix(in srgb, var(--ac) 40%, #000)); border-radius:3px; opacity:.85; box-shadow:0 0 10px -2px var(--ac); }
.cs-crate-shine{ position:absolute; inset:14px 0 0 0; border-radius:9px; background:linear-gradient(115deg, rgba(255,255,255,.22), transparent 45%); pointer-events:none; }
.cs-card:hover .cs-crate{ animation:csCrateBob 1.6s ease-in-out infinite; }
@keyframes csCrateBob{ 0%,100%{ transform:rotateX(8deg) translateY(0);} 50%{ transform:rotateX(8deg) translateY(-4px);} }

/* rarity accents */
.r-grey{ --rc:#8b98ab; } .r-blue{ --rc:#4f8fd6; } .r-purple{ --rc:#9a5fd6; }
.r-pink{ --rc:#d65f9a; } .r-red{ --rc:#e0503f; } .r-gold{ --rc:#f5b53f; }

/* modal */
.cs-modal{ position:fixed; inset:0; z-index:1200; display:none; }
.cs-modal.open{ display:block; }
.cs-modal-overlay{ position:absolute; inset:0; background:rgba(4,6,11,.72); backdrop-filter:blur(4px); }
.cs-modal-card{ position:relative; z-index:2; width:min(920px,94vw); max-height:92vh; overflow:auto; margin:4vh auto 0;
  background:linear-gradient(180deg,var(--card2),var(--card)); border:1px solid color-mix(in srgb, var(--ac,#e0663f) 40%, var(--ln)); border-radius:20px; padding:22px;
  box-shadow:0 30px 80px rgba(0,0,0,.6), 0 0 60px -20px var(--ac,#e0663f); }
.cs-modal-close{ position:absolute; top:14px; right:14px; width:34px; height:34px; border-radius:9px; border:1px solid var(--ln); background:rgba(0,0,0,.3); color:var(--t2); font-size:15px; cursor:pointer; z-index:5; }
.cs-modal-close:hover{ color:var(--t1); border-color:var(--rust3,#e0663f); }
.cs-modal-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:16px; }
.cs-modal-title{ display:flex; align-items:center; gap:12px; }
.cs-modal-crate{ width:34px; height:34px; border-radius:8px; background:linear-gradient(160deg, color-mix(in srgb, var(--ac,#e0663f) 55%, #1a1f2e), #12151f); border:1.5px solid color-mix(in srgb, var(--ac,#e0663f) 45%, #000); box-shadow:0 0 14px -4px var(--ac,#e0663f); }
.cs-modal-title h3{ font-size:20px; font-family:var(--fd,inherit); letter-spacing:.03em; color:var(--t1); }
.cs-modal-price{ display:inline-flex; align-items:center; gap:5px; font-weight:800; color:var(--gold2,#fbbf24); font-size:13.5px; }
.cs-modal-controls{ display:flex; align-items:center; gap:12px; }
.cs-count{ display:inline-flex; gap:4px; background:rgba(0,0,0,.28); border:1px solid var(--ln); border-radius:10px; padding:4px; }
.cs-count-btn{ width:34px; height:32px; border-radius:7px; border:none; background:transparent; color:var(--t2); font-weight:800; cursor:pointer; transition:.15s; }
.cs-count-btn:hover{ color:var(--t1); }
.cs-count-btn.active{ background:linear-gradient(180deg, color-mix(in srgb, var(--ac,#e0663f) 88%, #fff 8%), var(--ac,#e0663f)); color:#0b0e16; box-shadow:0 3px 10px -3px var(--ac,#e0663f); }
.cs-toggle{ display:inline-flex; align-items:center; gap:6px; color:var(--t2); font-size:12.5px; font-weight:700; cursor:pointer; user-select:none; }
.cs-toggle input{ accent-color:var(--ac,#e0663f); width:15px; height:15px; }

/* reels */
.cs-reels{ display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
.cs-reel{ position:relative; overflow:hidden; height:118px; border-radius:12px; border:1px solid var(--ln); background:linear-gradient(180deg, rgba(0,0,0,.34), rgba(0,0,0,.16)); }
.cs-reel-loading{ display:flex; align-items:center; justify-content:center; color:var(--t2); font-size:13px; }
.cs-reel-marker{ position:absolute; left:50%; top:0; bottom:0; width:2px; transform:translateX(-50%); background:linear-gradient(180deg, transparent, var(--rust3,#e0663f), transparent); box-shadow:0 0 12px 2px color-mix(in srgb, var(--rust3,#e0663f) 60%, transparent); z-index:4; }
.cs-reel-marker::before,.cs-reel-marker::after{ content:''; position:absolute; left:50%; transform:translateX(-50%); border:6px solid transparent; }
.cs-reel-marker::before{ top:-1px; border-top-color:var(--rust3,#e0663f); }
.cs-reel-marker::after{ bottom:-1px; border-bottom-color:var(--rust3,#e0663f); }
.cs-strip{ display:flex; height:100%; will-change:transform; }
.cs-cell{ flex:0 0 96px; width:96px; height:100%; padding:8px 6px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; border-right:1px solid rgba(255,255,255,.03); position:relative; }
.cs-cell::after{ content:''; position:absolute; inset:6px; border-radius:9px; border:1px solid color-mix(in srgb, var(--rc,#8b98ab) 40%, transparent); background:linear-gradient(180deg, color-mix(in srgb, var(--rc,#8b98ab) 14%, transparent), transparent 70%); pointer-events:none; }
.cs-cell-img{ width:52px; height:52px; display:flex; align-items:center; justify-content:center; position:relative; z-index:1; }
.cs-cell-img img{ max-width:100%; max-height:100%; object-fit:contain; filter:drop-shadow(0 2px 4px rgba(0,0,0,.5)); }
.cs-cell-ph{ font-weight:800; color:#eef2f8; font-size:17px; width:40px; height:40px; display:flex; align-items:center; justify-content:center; border-radius:9px; text-transform:uppercase;
  background:linear-gradient(158deg, color-mix(in srgb, var(--rc,#8b98ab) 42%, #1a2030), #0f131c);
  border:1px solid color-mix(in srgb, var(--rc,#8b98ab) 45%, transparent);
  box-shadow:0 0 12px -3px var(--rc,#8b98ab), inset 0 1px 0 rgba(255,255,255,.1); }
.cs-cnt-img .cs-cell-ph{ width:34px; height:34px; font-size:14px; border-radius:8px; }
.cs-cell-name{ font-size:9px; color:var(--t2); max-width:88px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; z-index:1; }
.cs-cell-val{ font-size:9.5px; font-weight:800; color:var(--rc,#8b98ab); display:inline-flex; align-items:center; gap:2px; z-index:1; }
.cs-cell-val .coin-ico{ width:9px; height:9px; }
.cs-reel.landed .cs-cell.is-win::after{ border-color:var(--rc); box-shadow:0 0 18px -2px var(--rc); animation:csWinPulse 1s ease-in-out infinite alternate; }
@keyframes csWinPulse{ from{ opacity:.7; } to{ opacity:1; } }

/* actions */
.cs-actions{ display:flex; gap:10px; align-items:center; justify-content:center; flex-wrap:wrap; }
.cs-open-btn{ min-width:180px; }
.cs-open-btn .coin-ico{ width:14px; height:14px; }
.cs-demo-btn{ }

/* result */
.cs-result{ margin-top:16px; border-top:1px solid var(--ln); padding-top:14px; text-align:center; }
.cs-res-head{ font-size:15px; color:var(--t1); margin-bottom:10px; }
.cs-res-head b{ color:var(--gold2,#fbbf24); }
.cs-res-net.pos{ color:#4ade80; font-weight:800; } .cs-res-net.neg{ color:#f87171; font-weight:800; }
.cs-res-demo{ color:var(--t2); font-size:12px; font-weight:600; }
.cs-res-items{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.cs-res-items .cs-cell{ flex:0 0 108px; width:108px; height:126px; border-radius:12px; border:1px solid color-mix(in srgb, var(--rc,#8b98ab) 40%, var(--ln)); background:linear-gradient(180deg, color-mix(in srgb, var(--rc,#8b98ab) 12%, var(--card2)), var(--card)); }

/* contents & odds */
.cs-contents{ margin-top:18px; border-top:1px solid var(--ln); padding-top:14px; }
.cs-contents-head{ font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--t2); font-weight:800; margin-bottom:10px; }
.cs-contents-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:8px; }
.cs-cnt{ display:flex; align-items:center; gap:10px; padding:8px; border-radius:10px; border:1px solid var(--ln); background:rgba(0,0,0,.2); border-left:3px solid var(--rc,#8b98ab); }
.cs-cnt-img{ width:38px; height:38px; flex:none; display:flex; align-items:center; justify-content:center; }
.cs-cnt-img img{ max-width:100%; max-height:100%; object-fit:contain; }
.cs-cnt-meta{ flex:1; min-width:0; display:flex; flex-direction:column; }
.cs-cnt-meta b{ font-size:12px; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cs-cnt-meta span{ font-size:11px; color:var(--gold2,#fbbf24); display:inline-flex; align-items:center; gap:3px; }
.cs-cnt-meta span .coin-ico{ width:10px; height:10px; }
.cs-cnt-odds{ font-size:12px; font-weight:800; color:var(--rc,#8b98ab); }
@media (max-width:600px){ .cs-modal-card{ padding:16px; } .cs-modal-head{ gap:10px; } .cs-cell{ flex-basis:80px; width:80px; } }

/* ── Cases: dedicated opening page + featured skin + sell (build 185) ── */
.cs-open-page{ max-width:920px; margin:0 auto; }
.cs-back{ display:inline-flex; align-items:center; gap:6px; color:var(--t2); font-weight:700; font-size:13px; margin-bottom:14px; transition:color .15s; }
.cs-back:hover{ color:var(--ac,#e0663f); }
.cs-back span{ font-size:18px; line-height:1; }
.cs-open-panel{ background:linear-gradient(180deg,var(--card2),var(--card)); border:1px solid color-mix(in srgb, var(--ac,#e0663f) 40%, var(--ln)); border-radius:20px; padding:22px;
  box-shadow:0 24px 64px rgba(0,0,0,.5), 0 0 60px -24px var(--ac,#e0663f); }
/* featured skin floating out of the crate on the card */
.cs-card-art{ perspective:520px; }
.cs-card-skin{ position:absolute; left:50%; top:44%; transform:translate(-50%,-50%); width:78px; height:78px; display:flex; align-items:center; justify-content:center; z-index:3; pointer-events:none;
  filter:drop-shadow(0 8px 14px rgba(0,0,0,.55)) drop-shadow(0 0 16px color-mix(in srgb, var(--ac) 45%, transparent)); transition:transform .25s cubic-bezier(.34,1.3,.64,1); }
.cs-card-skin img{ max-width:100%; max-height:100%; object-fit:contain; }
.cs-card:hover .cs-card-skin{ transform:translate(-50%,-58%) scale(1.08); }
.cs-crate{ transform-style:preserve-3d; }
.cs-crate-back{ position:absolute; inset:10px 8px 4px 8px; border-radius:9px; background:linear-gradient(160deg, #0d0f17, #05070c); border:1px solid rgba(0,0,0,.6); }
/* opened-result: skin + sell button stacked */
.cs-res-item{ display:flex; flex-direction:column; align-items:center; gap:6px; }
.cs-sell{ font-size:11px; font-weight:800; letter-spacing:.02em; border-radius:8px; padding:6px 12px; border:1px solid; display:inline-flex; align-items:center; gap:4px; }
.cs-sell .coin-ico{ width:11px; height:11px; }
.cs-sell.sold{ color:#4ade80; background:rgba(74,222,128,.12); border-color:rgba(74,222,128,.4); cursor:default; opacity:1; }
.cs-sell.demo{ color:var(--t2); background:rgba(255,255,255,.04); border-color:var(--ln); }
.cs-res-note{ margin-top:12px; font-size:11.5px; color:var(--t2); opacity:.85; }

/* CASES — rare-win celebration (build 188) */
.cs-res-jackpot{ position:relative; border-radius:14px; padding:14px 12px; overflow:hidden;
  border:1px solid color-mix(in srgb, var(--rc,#f5b53f) 55%, var(--ln));
  background:linear-gradient(180deg, color-mix(in srgb, var(--rc,#f5b53f) 12%, transparent), transparent 70%);
  box-shadow:0 0 34px -8px var(--rc,#f5b53f); animation:csJackGlow 1.6s ease-in-out infinite alternate; }
@keyframes csJackGlow{ from{ box-shadow:0 0 22px -10px var(--rc,#f5b53f); } to{ box-shadow:0 0 46px -6px var(--rc,#f5b53f); } }
.cs-res-burst{ position:absolute; left:50%; top:38%; width:8px; height:8px; transform:translate(-50%,-50%); pointer-events:none; z-index:0;
  background:radial-gradient(circle, color-mix(in srgb, var(--rc,#f5b53f) 70%, transparent), transparent 60%);
  animation:csBurst 900ms ease-out forwards; }
@keyframes csBurst{ 0%{ box-shadow:0 0 0 0 color-mix(in srgb, var(--rc,#f5b53f) 55%, transparent); opacity:.9; } 100%{ box-shadow:0 0 0 340px color-mix(in srgb, var(--rc,#f5b53f) 0%, transparent); opacity:0; } }
.cs-res-jackpot .cs-res-head{ position:relative; z-index:1; }
.cs-res-note a{ color:var(--accent2,#7dd3fc); }

/* CASES — live drops feed (build 190) */
.cs-drops{ display:flex; align-items:center; gap:12px; margin:0 0 22px; padding:10px 12px; border:1px solid var(--ln); border-radius:14px;
  background:linear-gradient(180deg, rgba(255,255,255,.02), transparent); overflow:hidden; }
.cs-drops-label{ flex:none; display:inline-flex; align-items:center; gap:7px; font:800 11px/1 var(--fu,inherit); letter-spacing:.12em; text-transform:uppercase; color:var(--t2); }
.cs-drops-dot{ width:8px; height:8px; border-radius:50%; background:#4ade80; box-shadow:0 0 8px #4ade80; animation:csDropPulse 1.4s ease-in-out infinite; }
@keyframes csDropPulse{ 0%,100%{ opacity:1; } 50%{ opacity:.35; } }
.cs-drops-track{ display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; flex:1; padding-bottom:2px; }
.cs-drops-track::-webkit-scrollbar{ display:none; }
.cs-drop{ flex:0 0 auto; display:flex; align-items:center; gap:8px; padding:6px 10px 6px 6px; border:1px solid var(--ln); border-radius:10px; background:rgba(0,0,0,.22); animation:csDropIn .4s ease; }
@keyframes csDropIn{ from{ opacity:0; transform:translateX(-8px); } to{ opacity:1; transform:none; } }
.cs-drop-img{ width:30px; height:30px; flex:none; display:flex; align-items:center; justify-content:center; }
.cs-drop-img img{ max-width:100%; max-height:100%; object-fit:contain; }
.cs-drop-meta{ display:flex; flex-direction:column; line-height:1.15; min-width:0; }
.cs-drop-meta b{ font-size:11.5px; color:var(--t1); max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cs-drop-meta span{ font-size:10px; color:var(--t3,var(--t2)); }
.cs-drop-net{ font-size:11px; font-weight:800; display:inline-flex; align-items:center; gap:2px; }
.cs-drop-net.pos{ color:#4ade80; } .cs-drop-net.neg{ color:#f87171; }
.cs-drop-net .coin-ico{ width:10px; height:10px; }

/* CASES — keep/sell buttons on results (build 191) */
.cs-sell.keep{ color:#0b0e16; cursor:pointer; border-color:transparent;
  background:linear-gradient(180deg, color-mix(in srgb, var(--rc,#4ade80) 30%, #7ee08a), color-mix(in srgb, var(--rc,#4ade80) 20%, #4ade80));
  transition:filter .15s, transform .1s; }
.cs-sell.keep:hover{ filter:brightness(1.08); }
.cs-sell.keep:active{ transform:translateY(1px); }
.cs-sell:disabled{ cursor:default; }
.cs-sellall{ font:800 11.5px/1 var(--fu,inherit); letter-spacing:.02em; border-radius:9px; padding:6px 14px; cursor:pointer; border:1px solid color-mix(in srgb,#4ade80 45%,var(--ln));
  color:#4ade80; background:rgba(74,222,128,.12); transition:filter .15s; margin-left:4px; vertical-align:middle; }
.cs-sellall:hover{ filter:brightness(1.1); }
.cs-sellall.done{ color:var(--t2); background:rgba(255,255,255,.05); border-color:var(--ln); cursor:default; }

/* CASES — open again (build 192) */
.cs-res-again{ text-align:center; margin-top:14px; }
.cs-again-btn{ font:800 12.5px/1 var(--fu,inherit); letter-spacing:.04em; text-transform:uppercase; color:#0b0e16; cursor:pointer; border:none; border-radius:10px; padding:10px 24px;
  background:linear-gradient(180deg, color-mix(in srgb, var(--ac,#e0663f) 88%, #fff 8%), var(--ac,#e0663f)); box-shadow:0 5px 16px -5px var(--ac,#e0663f); transition:filter .15s, transform .1s; display:inline-flex; align-items:center; gap:5px; }
.cs-again-btn:hover{ filter:brightness(1.08); }
.cs-again-btn:active{ transform:translateY(1px); }
.cs-again-btn .coin-ico{ width:13px; height:13px; }

/* CASES — grid filters + search (build 193) */
.cs-filters{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin:0 0 20px; }
.cs-filter-tabs{ display:inline-flex; gap:4px; background:rgba(0,0,0,.24); border:1px solid var(--ln); border-radius:12px; padding:4px; flex-wrap:wrap; }
.cs-filter-tab{ border:none; background:transparent; color:var(--t2); font:800 12px/1 var(--fu,inherit); letter-spacing:.02em; padding:8px 14px; border-radius:8px; cursor:pointer; transition:.15s; }
.cs-filter-tab:hover{ color:var(--t1); }
.cs-filter-tab.active{ background:linear-gradient(180deg, color-mix(in srgb, var(--rust3,#e0663f) 88%, #fff 8%), var(--rust3,#e0663f)); color:#0b0e16; box-shadow:0 3px 10px -3px var(--rust3,#e0663f); }
.cs-filter-search{ position:relative; display:inline-flex; align-items:center; }
.cs-filter-search svg{ position:absolute; left:11px; width:15px; height:15px; color:var(--t3,var(--t2)); pointer-events:none; }
.cs-filter-search input{ background:rgba(0,0,0,.24); border:1px solid var(--ln); border-radius:10px; color:var(--t1); font-size:13px; padding:9px 12px 9px 33px; width:200px; outline:none; transition:border-color .2s; }
.cs-filter-search input:focus{ border-color:color-mix(in srgb, var(--rust3,#e0663f) 55%, var(--ln)); }
.cs-filter-search input::placeholder{ color:var(--t3,var(--t2)); }
.cs-noresults{ text-align:center; color:var(--t2); padding:40px 0; font-size:14px; }
@media (max-width:560px){ .cs-filter-search input{ width:100%; } .cs-filters{ gap:10px; } .cs-filter-search{ flex:1; } }

/* CASES — custom case photo replaces the crate (build 202) */
.cs-card-art-photo{ align-items:center; justify-content:center; }
.cs-card-art-photo .cs-card-photo{ max-width:100%; max-height:120px; object-fit:contain; filter:drop-shadow(0 8px 14px rgba(0,0,0,.5)); }

/* CASES — case photo in the opening-page header */
.cs-modal-photo{ width:48px !important; height:48px !important; background:transparent !important; border:none !important; box-shadow:none !important; display:flex; align-items:center; justify-content:center; }
.cs-modal-photo img{ width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 3px 6px rgba(0,0,0,.5)); }

/* ── LEVEL REWARDS (wager ladder) — rewards.php ── */
.lvr-lead{color:var(--t2);font-size:14px;margin:2px 0 16px;max-width:680px;line-height:1.5}
.lvr-top{display:flex;gap:16px;flex-wrap:wrap;align-items:stretch;margin-bottom:18px}
.lvr-cur{flex:1;min-width:280px;display:flex;gap:14px;align-items:center;background:rgba(0,0,0,.22);border:1px solid var(--ln);border-radius:14px;padding:16px 18px}
.lvr-badge{flex:none;font:900 15px var(--fu);letter-spacing:.04em;padding:10px 14px;border-radius:11px;background:linear-gradient(135deg,#3a3f4d,#22262f);color:#fff;border:1px solid rgba(255,255,255,.12);box-shadow:0 4px 12px rgba(0,0,0,.35)}
.lvr-prog{flex:1;min-width:0}
.lvr-prog-head{display:flex;justify-content:space-between;font:700 12px var(--fu);color:var(--t2);margin-bottom:7px}
.lvr-bar{height:9px;border-radius:6px;background:rgba(255,255,255,.08);overflow:hidden}
.lvr-bar>span{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#e0663f,#ffb347);box-shadow:0 0 10px rgba(224,102,63,.5);transition:width .5s ease}
.lvr-prog-sub{font:600 11.5px var(--fu);color:var(--t3);margin-top:6px}
.lvr-claimbox{flex:none;min-width:220px;display:flex;flex-direction:column;justify-content:center;gap:10px;background:rgba(224,102,63,.08);border:1px solid rgba(224,102,63,.28);border-radius:14px;padding:16px 18px}
.lvr-claim-amt{display:flex;flex-direction:column;gap:2px}
.lvr-claim-lbl{font:700 11px var(--fu);text-transform:uppercase;letter-spacing:.06em;color:var(--t2)}
.lvr-claim-amt b{font:900 22px var(--fu);color:var(--gold2,#fbbf24);display:inline-flex;align-items:center;gap:5px}
.lvr-claim-amt b .coin-ico{width:16px;height:16px}
.lvr-ladder{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 10px}
.lvr-tier{flex:none;width:132px;background:rgba(0,0,0,.22);border:1px solid var(--ln);border-radius:13px;padding:14px 12px;text-align:center;position:relative}
.lvr-tier-top{font:700 12px var(--fu);color:var(--t2);text-transform:uppercase;letter-spacing:.05em}
.lvr-tier-amt{font:900 18px var(--fu);color:var(--t1);margin:8px 0;display:inline-flex;align-items:center;gap:5px}
.lvr-tier-amt .coin-ico{width:15px;height:15px}
.lvr-tier-badge{font:700 11px var(--fu);text-transform:uppercase;letter-spacing:.05em;color:var(--t3)}
.lvr-tier.lvr-ready{border-color:rgba(224,102,63,.5);background:rgba(224,102,63,.1)}
.lvr-tier.lvr-ready .lvr-tier-badge{color:#ffb347}
.lvr-tier.lvr-claimed{opacity:.6}
.lvr-tier.lvr-claimed .lvr-tier-badge{color:#4ade80}
.lvr-tier.lvr-locked{opacity:.72}

/* ── CROWN COINS pill (left of balance) ── */
.crown-coin-ico{display:inline-flex;align-items:center;line-height:0}
.crown-coin-ico svg{display:block}
.crown-pill .balance-pill-main{color:#f6c85a;font-weight:800}
@keyframes crownPulse{0%{transform:scale(1)}42%{transform:scale(1.13)}100%{transform:scale(1)}}
.crown-pill.updated{animation:crownPulse .5s ease}

/* ── Skin visibility: LIGHTER panels behind skins so they don't vanish on the dark UI (all games, modals) ── */
.ss-th{
  background: radial-gradient(circle at 50% 34%, #4b5470, #2b3141 82%) !important;
  border-radius: 8px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.09), 0 2px 5px rgba(0,0,0,.32);
}
.ss-th img, .cm-img, .cf-face-img, .rp-recent-wonskin, .qg-rrow-win-skin, .rp-skin-inline,
.skin-card img, .cf-modal-pskins img { filter: drop-shadow(0 3px 6px rgba(0,0,0,.55)); }
.skin-card, .rp-pot-skin, .cgc-thumb-stack, .sst-th { background-color: rgba(176,164,140,.16) !important; }

/* ── Raffle page — extra visual polish ── */
.rf-crownbar{position:relative;overflow:hidden}
.rf-crownbar::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.14),transparent);animation:rfShine 4.5s ease-in-out infinite}
@keyframes rfShine{0%{left:-60%}55%,100%{left:130%}}
.rf-card{position:relative}
.rf-card::before{content:"";position:absolute;inset:0;border-radius:20px;padding:1px;background:linear-gradient(180deg,rgba(246,200,90,.35),transparent 40%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.7}
.rf-prize{position:relative}
.rf-prize::after{content:"LIVE";position:absolute;top:12px;right:12px;font:800 9px var(--fu);letter-spacing:.08em;color:#fff;background:rgba(239,68,68,.9);padding:3px 8px 3px 15px;border-radius:20px}
.rf-prize::before{content:"";position:absolute;top:17px;right:44px;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 6px #fff;animation:rfPulse 1.3s ease-in-out infinite;z-index:1}
@keyframes rfPulse{0%,100%{opacity:1}50%{opacity:.35}}
.rf-prize img{transition:transform .3s ease}
.rf-card:hover .rf-prize img{transform:scale(1.06)}
.rf-tbox b{text-shadow:0 0 12px rgba(246,200,90,.4)}
.rf-avatars:hover .rf-av,.rf-avatars:hover .rf-av-fb{border-color:#f6c85a}
.rf-winrow{transition:border-color .18s ease}
.rf-winrow:hover{border-color:rgba(246,200,90,.4)}

/* ── Leaderboard top-3 podium enclosed in a framed trophy case ── */
.lb-podium-wrap{
  background:linear-gradient(180deg,rgba(36,40,52,.55),rgba(17,20,27,.74));
  border:1px solid rgba(246,200,90,.22);
  border-radius:22px;
  padding:32px 22px 24px !important;
  box-shadow:0 18px 46px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.05);
}

/* ── Skin hover list: scrollable with a "scroll" cue when it overflows ── */
.skin-tip-float{ scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.22) transparent; }
.skin-tip-float::-webkit-scrollbar{ width:7px; }
.skin-tip-float::-webkit-scrollbar-thumb{ background:rgba(255,255,255,.22); border-radius:4px; }
.skin-tip-float.has-scroll::after{ content:"⌄ scroll"; position:sticky; bottom:0; display:block; text-align:center; font:800 10px var(--fu); letter-spacing:.06em; color:#f6c85a; padding:6px 0 4px; margin-top:-2px; background:linear-gradient(180deg,transparent,rgba(13,15,20,.97) 55%); pointer-events:none; }

/* Raffle ticket-count input with a ticket icon in the corner */
.rf-tin-wrap{ position:relative; flex:none; }
.rf-tin-wrap .rf-tin{ padding-right:30px !important; }
.rf-tin-ico{ position:absolute; right:9px; top:50%; transform:translateY(-50%); pointer-events:none; display:inline-flex; line-height:0; }

/* Raffle enter: bigger button + wider input */
.rf-tin-wrap .rf-tin{ width:92px !important; padding:13px 30px 13px 12px !important; font-size:16px !important; }
.rf-enterbtn{ padding:13px 18px !important; font-size:15px !important; font-weight:800 !important; }
.lvr-claim-big{ font-size:26px !important; } .lvr-claim-big .coin-d{ font-weight:900; }

/* Raffle participants modal (10 at a time + Show More) */
.rfpart{ position:fixed; inset:0; background:rgba(0,0,0,.8); z-index:9998; display:none; align-items:center; justify-content:center; padding:20px; }
.rfpart.open{ display:flex; }
.rfpart-box{ background:var(--card); border:1px solid var(--ln); border-radius:18px; width:420px; max-width:100%; max-height:80vh; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 20px 60px rgba(0,0,0,.5); }
.rfpart-head{ display:flex; align-items:center; justify-content:space-between; padding:16px 18px; border-bottom:1px solid var(--ln); font:800 16px var(--fu); color:var(--t1); }
.rfpart-close{ background:none; border:none; color:var(--t2); font-size:20px; cursor:pointer; line-height:1; }
.rfpart-list{ overflow-y:auto; padding:10px 14px; display:flex; flex-direction:column; gap:7px; }
.rfpart-row{ display:flex; align-items:center; gap:10px; font:700 13px var(--fu); color:var(--t2); padding:6px 4px; }
.rfpart-row img,.rfpart-row .rf-av-fb{ width:30px; height:30px; margin:0; border-width:1px; }
.rfpart-row b{ margin-left:auto; color:#f6c85a; }
.rfpart-more{ margin:6px 14px 16px; padding:11px; background:rgba(246,200,90,.1); border:1px solid rgba(246,200,90,.3); color:#f6c85a; border-radius:10px; font:800 13px var(--fu); cursor:pointer; }
.rfpart-more:hover{ background:rgba(246,200,90,.18); }

/* Case contents price: tighten the gap between the coin icon and the digits (no gap between digit halves) */
.cs-cnt-meta span{ gap:2px !important; }
.cs-cnt-meta span .coin-amt{ display:inline-block !important; letter-spacing:0 !important; }
.cs-cnt-meta span .coin-amt .coin-d, .cs-cnt-meta span .coin-amt .coin-c{ letter-spacing:0 !important; margin:0 !important; }

/* Raffle verify — copy button per field */
.rfv-cwrap{ display:flex; gap:6px; align-items:stretch; }
.rfv-cwrap code{ flex:1; min-width:0; }
.rfv-copy{ flex:none; background:rgba(246,200,90,.14); border:1px solid rgba(246,200,90,.34); color:#f6c85a; border-radius:8px; padding:0 13px; font:800 11px var(--fu); cursor:pointer; white-space:nowrap; }
.rfv-copy:hover{ background:rgba(246,200,90,.24); }
.rfv-copy.done{ background:rgba(74,222,128,.18); border-color:rgba(74,222,128,.42); color:#4ade80; }

/* Profile Wagered: last digits same SIZE as the first (balance-style — prominence via dimming, not shrinking) */
.pstat b .coin-amt .coin-c, .pstat b .coin-c{ font-size:1em !important; }
/* Raffle verify rows: keep code + copy icon on one line */
.rfv-cwrap{ display:flex; gap:6px; align-items:center; }
.rfv-cwrap code{ flex:1; min-width:0; }
.rfv-cwrap .fair-copy{ flex:none; }

/* Cases live drops — hover card with the opener's avatar + name */
.cs-drop{ position:relative; }
.cs-drop-tip{ position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%); background:#1a2030; border:1px solid var(--ln); border-radius:12px; padding:8px 13px 8px 8px; display:flex; align-items:center; gap:9px; white-space:nowrap; opacity:0; visibility:hidden; transition:opacity .15s ease; z-index:60; box-shadow:0 10px 28px rgba(0,0,0,.55); pointer-events:none; }
.cs-drop:hover .cs-drop-tip{ opacity:1; visibility:visible; }
.cs-drop-tip-av img, .cs-drop-tip-fb{ width:30px; height:30px; border-radius:50%; object-fit:cover; }
.cs-drop-tip-fb{ display:inline-flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#3a3f4d,#22262f); color:#fff; font:800 13px var(--fu); }
.cs-drop-tip-name{ font:800 13px var(--fu); color:var(--t1); }

/* Fairness verifier — align the Verify button with the fields (was floating centered) */
.pf-verify{ justify-content:flex-start !important; }
.pf-verify .pf-field{ flex:1 1 200px; min-width:0; }
.pf-verify .pf-field-sm{ flex:0 1 130px; }
.pf-verify .btn-primary{ flex:0 0 auto; align-self:flex-end; min-width:130px; margin:0; }
@media(max-width:560px){ .pf-verify .btn-primary{ flex:1 1 100%; } }

/* Cases — won skins shown in a modal */
.cs-result-modal[hidden]{ display:none !important; }
.cs-result-modal{ position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; padding:20px; }
.cs-result-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.82); backdrop-filter:blur(2px); }
.cs-result-card{ position:relative; z-index:1; max-width:640px; width:100%; max-height:86vh; overflow-y:auto; background:var(--card); border:1px solid var(--ln); border-radius:18px; padding:26px 24px 22px; box-shadow:0 24px 70px rgba(0,0,0,.6); }
.cs-res-close{ position:absolute; top:12px; right:14px; background:rgba(255,255,255,.06); border:1px solid var(--ln); width:30px; height:30px; border-radius:8px; color:var(--t2); font-size:16px; cursor:pointer; line-height:1; z-index:3; }
.cs-res-close:hover{ color:var(--t1); background:rgba(255,255,255,.12); }

/* ═══ ONE consistent coin format EVERYWHERE (matches the balance): bright leading digits, dim trailing
   digits, SAME size, SAME colour — kills all the per-context gradients/black-digit inconsistencies. ═══ */
.coin-amt .coin-d, .coin-d{ opacity:1 !important; font-size:1em !important; font-weight:800 !important; -webkit-text-fill-color:currentColor !important; background:none !important; color:inherit !important; }
.coin-amt .coin-c, .coin-c{ opacity:.5 !important; font-size:1em !important; font-weight:800 !important; -webkit-text-fill-color:currentColor !important; background:none !important; color:inherit !important; }
/* Raffle prize price: dark pill + light digits (was a gold pill with black digits) so it matches the balance */
.rf-pv{ background:rgba(0,0,0,.32) !important; color:var(--t1) !important; border:1px solid rgba(246,200,90,.42); box-shadow:none !important; }
.rf-pv .coin-ico{ opacity:1; }

/* Raffle entrants: ticket icon before the count, count in white */
.rfpart-tix{ margin-left:auto !important; color:#fff !important; display:inline-flex; align-items:center; gap:4px; }

/* Page loading screen — R logo filling with yellow */
.page-loader{ position:fixed; inset:0; z-index:99999; background:var(--bg, #0a0c15); display:flex; align-items:center; justify-content:center; transition:opacity .45s ease; }
.page-loader.hide{ opacity:0; pointer-events:none; }
.pl-icon{ width:104px; height:104px; position:relative; background:rgba(238,179,81,.16);
  -webkit-mask:url(/assets/favicon-256.png?v=4) center/contain no-repeat; mask:url(/assets/favicon-256.png?v=4) center/contain no-repeat; }
.pl-icon::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:0; background:linear-gradient(180deg,#ffd873,#eeb351); animation:plFill 1.7s cubic-bezier(.45,0,.55,1) infinite; }
@keyframes plFill{ 0%{ height:0; } 50%{ height:100%; } 100%{ height:0; } }

/* ═══ Races podium — professional polish + entrance animation ═══ */
.lb-pod{ opacity:0; animation:lbPodIn .6s cubic-bezier(.2,.75,.3,1) forwards; }
.lb-pod-2{ animation-delay:.12s; } .lb-pod-1{ animation-delay:.28s; } .lb-pod-3{ animation-delay:.42s; }
@keyframes lbPodIn{ from{ opacity:0; } to{ opacity:1; } }
/* premium card surface */
.lb-pod-card{ background:linear-gradient(180deg,rgba(40,46,62,.92),rgba(19,23,33,.94)) !important; border-radius:16px !important; box-shadow:0 16px 38px rgba(0,0,0,.42) !important; }
.lb-pod-1 .lb-pod-card{ box-shadow:0 20px 50px rgba(240,184,64,.24), 0 16px 38px rgba(0,0,0,.5) !important; border:1px solid rgba(240,184,64,.5) !important; }
.lb-pod-2 .lb-pod-card{ border:1px solid rgba(200,205,215,.42) !important; }
.lb-pod-3 .lb-pod-card{ border:1px solid rgba(205,127,50,.45) !important; }
/* glowing medal ring on each podium avatar */
.lb-pod-1 .lb-pod-av{ box-shadow:0 0 0 3px #f0b840, 0 0 28px rgba(240,184,64,.6) !important; }
.lb-pod-2 .lb-pod-av{ box-shadow:0 0 0 3px #c8ccd6, 0 0 18px rgba(200,205,215,.4) !important; }
.lb-pod-3 .lb-pod-av{ box-shadow:0 0 0 3px #cd7f32, 0 0 18px rgba(205,127,50,.4) !important; }
/* names / wager weight */
.lb-pod-name{ font-weight:800 !important; letter-spacing:.01em; }
.lb-pod-wager{ font-weight:800 !important; }
.lb-pod-1 .lb-pod-wager{ color:#ffd873 !important; }
/* floating trophy on #1 */
.lb-pod-trophy{ animation:lbFloat 2.8s ease-in-out infinite; }
@keyframes lbFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-5px); } }
/* rank labels removed — position (centre/left/right) + medal/trophy convey the rank, cleaner + pro */
.lb-pod-rank{ display:none !important; }
/* animated shine sweep across #1's base */
.lb-pod-1 .lb-pod-shine{ background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.22),transparent 80%) !important; animation:lbShine 3.2s ease-in-out infinite !important; }
@keyframes lbShine{ 0%{ transform:translateX(-120%); } 55%,100%{ transform:translateX(220%); } }
/* list rows — cleaner hover + rank badge */
.lb-rank-badge{ font-weight:900 !important; }
.lb-row{ transition:transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease; }
.lb-row:hover{ box-shadow:0 6px 18px rgba(0,0,0,.35); }

/* ═══ Coin amount — IDENTICAL everywhere: leading digits + dimmed trailing digits ALWAYS side-by-side on the
   same baseline at the SAME size (never stack / shrink). Fixes the broken /profile wagered + makes the whole
   site match the balance. This is the final, highest-priority word on coin formatting. ═══ */
.coin-amt{ display:inline-flex !important; flex-direction:row !important; flex-wrap:nowrap !important; align-items:baseline !important; white-space:nowrap !important; vertical-align:baseline !important; gap:0 !important; width:auto !important; }
.coin-amt .coin-d, .coin-amt .coin-c{ display:inline-block !important; white-space:nowrap !important; line-height:1 !important; font-size:1em !important; font-weight:800 !important; vertical-align:baseline !important; letter-spacing:0 !important; -webkit-text-fill-color:currentColor !important; background:none !important; color:inherit !important; }
.coin-amt .coin-d{ opacity:1 !important; }
.coin-amt .coin-c{ opacity:.5 !important; }

/* Champion LAST 10 — 2-column side-by-side grid */
.arena-hist-grid{ display:grid !important; grid-template-columns:1fr 1fr; gap:10px; }
@media(max-width:640px){ .arena-hist-grid{ grid-template-columns:1fr; } }

/* Raffle recent winners — 2-column side-by-side grid (was stacked) */
.rf-win-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; width:100%; }
@media(max-width:640px){ .rf-win-grid{ grid-template-columns:1fr; } }
.rf-win-grid .rf-winrow{ margin:0 !important; max-width:none !important; }
#rfWin .rfpart-list{ padding:14px; }

/* Live drops — show only the dropped item's value (no profit/loss +/-) */
.cs-drop-val{ font-size:11px; font-weight:800; color:#f6c85a; display:inline-flex; align-items:center; gap:3px; white-space:nowrap; }
.cs-drop-val .coin-ico{ width:11px; height:11px; }

/* Per-case "what players pulled" list (under the case) */
.cs-casedrops{ display:flex; flex-direction:column; gap:6px; }
.csd-row{ display:flex; align-items:center; gap:10px; background:rgba(255,255,255,.03); border:1px solid var(--ln); border-radius:10px; padding:7px 10px; }
.csd-av img, .csd-fb{ width:26px; height:26px; border-radius:50%; object-fit:cover; display:inline-flex; align-items:center; justify-content:center; }
.csd-fb{ background:linear-gradient(135deg,#3a3f4d,#22262f); color:#fff; font:800 11px var(--fu); }
.csd-skin{ width:34px; height:26px; object-fit:contain; filter:drop-shadow(0 2px 4px rgba(0,0,0,.5)); }
.csd-meta{ display:flex; flex-direction:column; min-width:0; flex:1; line-height:1.2; }
.csd-meta b{ font-size:12px; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.csd-meta span{ font-size:10.5px; color:var(--t3); }
.csd-val{ font:800 12px var(--fu); color:#f6c85a; display:inline-flex; align-items:center; gap:3px; white-space:nowrap; }
.csd-val .coin-ico{ width:11px; height:11px; }

/* ═══ Fairness page — cohesive GOLD theme + fixed verifier button (was mixing rust/blue/standard colours) ═══ */
.fair-game-card{ border-color:var(--ln) !important; background:linear-gradient(180deg,rgba(40,46,62,.7),rgba(19,23,33,.72)) !important; }
.fair-game-card:hover{ border-color:rgba(246,200,90,.42) !important; box-shadow:0 16px 42px rgba(0,0,0,.45), 0 0 0 1px rgba(246,200,90,.22) !important; }
.fair-game-card h4{ color:var(--t1) !important; }
.fair-game-ico{ color:#f6c85a; }
.fair-game-card code, .fg-note code, .fairness-explainer code{ color:#f6c85a !important; border-color:rgba(246,200,90,.22) !important; background:rgba(0,0,0,.34) !important; }
.fairness-explainer .fe-step{ background:linear-gradient(180deg,rgba(40,46,62,.7),rgba(19,23,33,.72)) !important; border-color:var(--ln) !important; }
.fairness-explainer .fe-num{ background:linear-gradient(180deg,#ffd873,#f3b03e) !important; color:#1a1206 !important; box-shadow:0 4px 12px rgba(243,176,62,.32); font-weight:800; }
.fair-soon-badge{ background:rgba(246,200,90,.14) !important; color:#f6c85a !important; border:1px solid rgba(246,200,90,.3) !important; }
.pf-intro code{ color:#f6c85a !important; }
.pf-field input:focus{ border-color:rgba(246,200,90,.5) !important; box-shadow:0 0 0 3px rgba(246,200,90,.16) !important; }
/* verifier row — inputs grow, Verify button aligned to the end (not floating centred), gold + prominent */
.pf-verify{ align-items:flex-end !important; justify-content:flex-start !important; gap:12px !important; }
.pf-verify .pf-field{ flex:1 1 210px; min-width:0; }
.pf-verify .pf-field-sm{ flex:0 1 130px; }
.pf-verify .btn-primary{ background:linear-gradient(180deg,#ffd873,#f3b03e) !important; color:#1a1206 !important; border:none !important; font-weight:800 !important; letter-spacing:.02em; padding:12px 26px !important; border-radius:10px !important; flex:0 0 auto !important; align-self:flex-end !important; min-width:132px; margin:0 !important; box-shadow:0 6px 16px rgba(243,176,62,.34); transition:transform .15s ease, box-shadow .15s ease; }
.pf-verify .btn-primary:hover{ transform:translateY(-2px); box-shadow:0 10px 22px rgba(243,176,62,.44); }
@media(max-width:560px){ .pf-verify .btn-primary{ flex:1 1 100% !important; } }

/* ═══ Sign-in page — logo + glow + premium card ═══ */
.auth-page{ background:radial-gradient(circle at 50% 28%, rgba(238,179,81,.09), transparent 58%); }
.auth-steam-card{ position:relative; overflow:hidden; background:linear-gradient(180deg,rgba(30,34,46,.96),rgba(16,19,27,.98)) !important; border:1px solid rgba(246,200,90,.22) !important; box-shadow:0 30px 80px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.03) inset !important; padding-top:30px !important; }
.auth-glow{ position:absolute; top:-70px; left:50%; transform:translateX(-50%); width:300px; height:300px; border-radius:50%; background:radial-gradient(circle, rgba(238,179,81,.16), transparent 62%); pointer-events:none; animation:authGlow 4s ease-in-out infinite; }
@keyframes authGlow{ 0%,100%{ opacity:.5; transform:translateX(-50%) scale(.92); } 50%{ opacity:1; transform:translateX(-50%) scale(1.08); } }
.auth-logo{ position:relative; width:220px; max-width:74%; height:auto; margin:0 auto 4px; display:block; filter:drop-shadow(0 10px 26px rgba(238,179,81,.28)); }
.auth-steam-card h1{ position:relative; }
.auth-steam-card .steam-btn-lg{ position:relative; background:linear-gradient(180deg,#2a4d6e,#1b3450) !important; border:1px solid rgba(120,170,220,.3) !important; box-shadow:0 8px 22px rgba(20,50,90,.4) !important; transition:transform .15s ease, box-shadow .15s ease; }
.auth-steam-card .steam-btn-lg:hover{ transform:translateY(-2px); box-shadow:0 12px 28px rgba(20,50,90,.55) !important; }
.steam-trust{ position:relative; }

/* Fairness verifier — button below all inputs, reasonable size (was huge + mid-form) */
.pf-verify-actions{ margin-top:16px; }
.pf-verify-actions .btn-primary{ display:inline-block; background:linear-gradient(180deg,#ffd873,#f3b03e); color:#1a1206; border:none; font-weight:800; letter-spacing:.02em; padding:12px 34px; border-radius:10px; box-shadow:0 6px 16px rgba(243,176,62,.32); cursor:pointer; transition:transform .15s ease, box-shadow .15s ease; }
.pf-verify-actions .btn-primary:hover{ transform:translateY(-2px); box-shadow:0 10px 22px rgba(243,176,62,.44); }
/* unify Round History rows with the Seeds cards (same background/border) */
.fair-card, .mini-row{ background:linear-gradient(180deg,rgba(40,46,62,.7),rgba(19,23,33,.72)) !important; border:1px solid var(--ln) !important; border-radius:12px !important; }
.mini-row{ padding:12px 14px !important; margin-bottom:8px !important; }
/* round history "show more" pagination */
.fair-hist-more{ display:block; margin:14px auto 0; background:rgba(246,200,90,.12); color:#f6c85a; border:1px solid rgba(246,200,90,.32); border-radius:10px; padding:11px 22px; font-weight:700; font-size:13px; cursor:pointer; transition:background .15s ease; }
.fair-hist-more:hover{ background:rgba(246,200,90,.2); }
.mini-row.hist-hidden{ display:none; }

/* ══ Raffles side drawer (Ticket pill toggles it) ══ */
.rfd-drawer{ position:fixed !important; right:0; top:calc(var(--topstrip-h, 0px) + var(--topbar-h, 74px)) !important; bottom:0; width:344px; max-width:92vw; z-index:990 !important; transition:transform .32s cubic-bezier(.4,0,.2,1); }
.rfd-drawer.closed{ transform:translateX(106%); pointer-events:none; }
.rfd-panel{ height:100%; display:flex; flex-direction:column; background:linear-gradient(180deg, var(--bg2,#10131e), var(--bg,#0a0c15)); border-left:1px solid var(--ln); box-shadow:-10px 0 34px rgba(0,0,0,.45); }
.rfd-head{ display:flex; align-items:center; gap:8px; padding:13px 14px; border-bottom:1px solid var(--ln); flex:0 0 auto; }
.rfd-title{ font-weight:800; color:var(--t1); font-size:15px; }
.rfd-bal{ margin-left:auto; font-weight:800; color:#f6c85a; font-size:13px; display:inline-flex; align-items:center; }
.rfd-x{ background:rgba(255,255,255,.06); border:1px solid var(--ln); width:28px; height:28px; border-radius:8px; color:var(--t2); cursor:pointer; line-height:1; }
.rfd-x:hover{ color:var(--t1); background:rgba(255,255,255,.12); }
.rfd-body{ flex:1; overflow-y:auto; padding:10px; display:flex; flex-direction:column; gap:10px; }
.rfd-msg{ color:var(--t2); text-align:center; padding:34px 12px; line-height:1.6; }
.rfd-card{ background:rgba(255,255,255,.03); border:1px solid var(--ln); border-radius:12px; padding:12px; }
.rfd-card-top{ display:flex; align-items:center; gap:10px; }
.rfd-prize{ width:46px; height:36px; object-fit:contain; flex:0 0 auto; filter:drop-shadow(0 2px 5px rgba(0,0,0,.5)); }
.rfd-card-info{ flex:1; min-width:0; }
.rfd-card-info b{ display:block; font-size:13px; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rfd-pv{ font-size:12px; color:#f6c85a; display:inline-flex; align-items:center; gap:3px; }
.rfd-pv .coin-ico{ width:11px; height:11px; }
.rfd-cd{ font-size:11px; color:var(--t3); font-weight:700; white-space:nowrap; }
.rfd-avatars{ display:flex; gap:4px; margin:10px 0; overflow:hidden; will-change:transform; }
.rfd-av{ width:27px; height:27px; border-radius:50%; object-fit:cover; flex:0 0 auto; }
.rfd-av-fb{ background:linear-gradient(135deg,#3a3f4d,#22262f); color:#fff; display:inline-flex; align-items:center; justify-content:center; font:800 11px var(--fu); }
.rfd-av-more{ background:rgba(255,255,255,.08); color:var(--t2); display:inline-flex; align-items:center; justify-content:center; font:800 10px var(--fu); }
.rfd-noent{ font-size:12px; color:var(--t3); }
.rfd-stats{ display:flex; gap:14px; font-size:12px; color:var(--t2); margin-bottom:10px; }
.rfd-stats b{ color:var(--t1); }
.rfd-enter{ display:flex; gap:6px; }
.rfd-tin{ flex:1; min-width:0; background:rgba(0,0,0,.3); border:1px solid var(--ln); border-radius:8px; color:var(--t1); padding:8px 10px; font-size:13px; }
.rfd-enter-btn{ background:linear-gradient(180deg,#ffd873,#f3b03e); color:#1a1206; border:none; font-weight:800; border-radius:8px; padding:8px 16px; cursor:pointer; }
.rfd-enter-btn:hover{ filter:brightness(1.05); }
.rfd-enter-btn:disabled{ opacity:.6; cursor:default; }
.rfd-winner{ margin-top:10px; text-align:center; font-size:13px; color:#f6c85a; font-weight:700; padding:9px; background:rgba(246,200,90,.1); border:1px solid rgba(246,200,90,.28); border-radius:8px; animation:rfdWinIn .4s ease; }
@keyframes rfdWinIn{ from{ opacity:0; transform:scale(.94); } to{ opacity:1; transform:scale(1); } }
@media(max-width:560px){ .rfd-drawer{ width:100%; top:56px; } }

/* Raffle drawer on mobile/tablet: it OVERLAYS (no page push < 981px), so add a tap-to-close scrim
   behind it and lock the background scroll while it's open, so the layout can't be scrolled underneath. */
.rfd-scrim{ position:fixed; inset:0; background:rgba(6,7,14,.55); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
  z-index:988; opacity:0; pointer-events:none; transition:opacity .3s ease; }
@media(min-width:981px){ .rfd-scrim{ display:none !important; } }
@media(max-width:980px){
  /* ROOT-CAUSE FIX (build 345): the raffle drawer is ALWAYS-open, so body.rfd-open is ALWAYS set. This old
     scrim was therefore permanently covering the whole phone screen — a semi-transparent blurred overlay with
     pointer-events:auto — which is exactly the "frozen, washed-out, untouchable" mobile screen, and it also
     locked page scroll. The mobile sheet has its own .rfd-mscrim, so this one is obsolete: kill it on mobile
     and only lock scroll while the sheet is genuinely open. */
  .rfd-scrim{ display:none !important; opacity:0 !important; pointer-events:none !important; }
  body.rfd-mobile-showing{ overflow:hidden; }
}
@media(max-width:760px){ .rfd-drawer{ width:100%; } }

/* Raffles toggle button, bottom-right, white text, active-count above */
.rfd-toggle-wrap{ position:fixed !important; right:20px !important; bottom:20px !important; z-index:200 !important; display:flex; flex-direction:column; align-items:center; gap:7px; transition:opacity .25s, transform .25s; }
.rfd-active-badge{ display:inline-flex; align-items:center; gap:6px; background:rgba(18,21,31,.94); border:1px solid rgba(246,200,90,.4); color:#e7edfa; font-size:11px; font-weight:700; padding:5px 12px; border-radius:20px; box-shadow:0 4px 14px rgba(0,0,0,.45); }
.rfd-active-badge b{ color:#f6c85a; }
.rfd-active-dot{ width:7px; height:7px; border-radius:50%; background:#3ddc84; box-shadow:0 0 8px #3ddc84; flex:0 0 auto; }
.rfd-toggle{ display:flex !important; flex-direction:column; align-items:center; gap:2px; padding:11px 26px !important; min-height:0 !important; width:auto !important;
  border-radius:14px !important; background:linear-gradient(135deg,#f3b03e,#d88a1f) !important; border:1px solid rgba(255,255,255,.32) !important;
  box-shadow:0 8px 24px rgba(200,145,44,.5) !important; color:#fff !important; cursor:pointer !important;
  writing-mode:horizontal-tb !important; font-family:var(--fu,inherit); animation:rfdGlow 2.4s ease-in-out infinite; transition:transform .18s ease, filter .18s ease; }
.rfd-toggle:hover{ filter:brightness(1.06); transform:translateY(-2px); }
.rfd-toggle-label{ font-size:15px !important; font-weight:800; letter-spacing:.03em; color:#fff !important; }
.rfd-toggle-bal{ font-size:11px; font-weight:700; color:#fff !important; display:inline-flex; align-items:center; gap:3px; opacity:.96; }
.rfd-toggle-bal b{ color:#fff !important; }
@keyframes rfdGlow{ 0%,100%{ box-shadow:0 8px 24px rgba(200,145,44,.5); } 50%{ box-shadow:0 10px 30px rgba(255,196,80,.85), 0 0 0 5px rgba(255,196,80,.18); } }
body.rfd-open .rfd-toggle-wrap{ opacity:0 !important; pointer-events:none !important; transform:translateY(24px) !important; }

/* Raffles button flash when tickets change */
.rfd-toggle.rfd-bump{ animation:rfdBump .6s ease !important; }
@keyframes rfdBump{ 0%{ transform:scale(1); } 30%{ transform:scale(1.13); box-shadow:0 0 0 9px rgba(255,196,80,.32) !important; } 100%{ transform:scale(1); } }
/* Raffles panel: ticket count prominent with a left icon */
.rfd-bal{ margin-left:auto; display:inline-flex; align-items:center; gap:5px; font-weight:800; color:#f6c85a; font-size:15px; }
.rfd-bal-ico{ flex:0 0 auto; }
.rfd-bal b{ color:#f6c85a; font-weight:800; }

/* Raffles drawer cards: COMPACT, roughly square, so 3 fit without scrolling */
.rfd-card{ padding:0 !important; overflow:hidden; }
.rfd-prize{ width:auto; height:auto; display:flex; flex-direction:column; align-items:center; text-align:center; padding:11px 12px 7px; background:radial-gradient(120% 90% at 50% 0%, rgba(246,200,90,.14), transparent 62%); }
.rfd-prize img{ max-width:56%; max-height:60px; object-fit:contain; filter:drop-shadow(0 6px 13px rgba(0,0,0,.6)); }
.rfd-emoji{ font-size:38px; line-height:1; }
.rfd-name{ margin-top:6px; font-size:12.5px; font-weight:800; color:var(--t1); line-height:1.2; }
.rfd-pv{ margin-top:6px; font:900 12.5px var(--fu); color:var(--t1); background:rgba(0,0,0,.34); border:1px solid rgba(246,200,90,.42); border-radius:20px; padding:3px 12px; display:inline-flex; align-items:center; gap:5px; }
.rfd-pv .coin-ico{ width:12px; height:12px; }
.rfd-cd{ margin-top:6px; font-size:11px; color:var(--t3); font-weight:700; }
.rfd-avatars{ display:flex !important; flex-wrap:wrap; gap:4px; justify-content:center; margin:7px 12px 0 !important; overflow:hidden; max-height:24px; }
.rfd-avatars:empty{ display:none !important; margin:0 !important; }
.rfd-avatars .rfd-av, .rfd-avatars .rfd-av-fb, .rfd-avatars .rfd-av-more{ width:22px !important; height:22px !important; font-size:9px !important; }
.rfd-stats{ justify-content:center; padding:0 12px; margin-top:7px; font-size:11.5px; }
.rfd-enter{ padding:9px 12px 11px; gap:6px; }
/* ticket icon docked to the right inside the ticket input */
.rfd-tin-wrap{ position:relative; flex:1; min-width:0; display:flex; }
.rfd-tin-wrap .rfd-tin{ flex:1; width:100%; padding-right:30px !important; }
.rfd-tin-ico{ position:absolute; right:9px; top:50%; transform:translateY(-50%); pointer-events:none; opacity:.9; }

/* Remove up/down spinners on all number inputs (site-wide) */
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button{ -webkit-appearance:none !important; margin:0 !important; }
input[type=number]{ -moz-appearance:textfield !important; appearance:textfield !important; }

/* Gold/yellow-bordered buttons -> white (Tip Rain, View standings, Refresh, etc.) */
.chat-tiprain-btn{ border-color:rgba(255,255,255,.45) !important; background:rgba(255,255,255,.06) !important; color:#fff !important; }
.chat-tiprain-btn svg{ color:#fff !important; }
.chat-tiprain-btn:hover{ background:rgba(255,255,255,.13) !important; color:#fff !important; border-color:rgba(255,255,255,.72) !important; }
.hm-race-cta{ color:#fff !important; }
.hm-race-cta svg{ stroke:#fff !important; }
.mkt-sync{ border-color:rgba(255,255,255,.45) !important; color:#fff !important; }
.mkt-sync svg{ color:#fff !important; stroke:#fff !important; }

/* Raffles drawer PUSHES the page left when open (desktop) so it never covers content. The FOOTER
   stays put (full-width, centred) — the drawer just overlaps its decorative corner, which is fine. */
@media(min-width:981px){
  main.page{ transition: padding-right .32s cubic-bezier(.4,0,.2,1); }
  body.rfd-open main.page{ padding-right:364px !important; }
}

/* ══ Unified game colors: Champion=yellow, Rustpot=red, Rustflip=orange, Quickgame=purple ══ */

/* Champion -> yellow (was purple) */
.ngm-card-champions .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(246,200,90,.4), transparent 72%), linear-gradient(160deg, rgba(120,92,20,.55), rgba(12,16,28,.55)) !important; }
.ngm-card-champions:hover{ border-color:rgba(246,200,90,.5) !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(246,200,90,.45) !important; }
.ngm-card-champions .ngm-bolts, .ngm-card-champions .ngm-art-svg, .ngm-card-champions svg{ color:#f6c85a !important; }
/* Rustflip -> orange (was yellow) */
.ngm-card-flip .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(240,145,46,.4), transparent 72%), linear-gradient(160deg, rgba(110,64,18,.55), rgba(12,16,28,.55)) !important; }
.ngm-card-flip:hover{ border-color:rgba(240,145,46,.5) !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(240,145,46,.45) !important; }
.ngm-card-flip .ngm-bolts, .ngm-card-flip .ngm-art-svg, .ngm-card-flip svg{ color:#f0912e !important; }
/* Quickgame -> purple (was green) */
.ngm-card-quick .ngm-art{ background:radial-gradient(90px 70px at 50% 38%, rgba(246,200,90,.36), transparent 72%), linear-gradient(160deg, rgba(58,38,92,.6), rgba(12,16,28,.55)) !important; }
.ngm-card-quick:hover{ border-color:rgba(246,200,90,.5) !important; box-shadow:0 18px 40px rgba(0,0,0,.5), 0 0 18px rgba(246,200,90,.45) !important; }
.ngm-card-quick .ngm-bolts, .ngm-card-quick .ngm-art-svg, .ngm-card-quick svg{ color:#f6c85a !important; }
/* Rustpot stays red, icon colored by default */
.ngm-card-rustpot .ngm-bolts, .ngm-card-rustpot .ngm-art-svg, .ngm-card-rustpot svg{ color:#ef4444 !important; }

/* Homepage game cards -> unified game colors */
.hm-game-champions .hm-game-art{ background:radial-gradient(80% 120% at 50% 0%, rgba(246,200,90,.26), transparent 60%), linear-gradient(180deg,#2a2718,#161827) !important; }
.hm-game-champions .hm-game-ico, .hm-game-champions .hm-game-ico svg{ color:#f6c85a !important; }
.hm-game-flip .hm-game-art{ background:radial-gradient(80% 120% at 50% 0%, rgba(240,145,46,.26), transparent 60%), linear-gradient(180deg,#2a2218,#161827) !important; }
.hm-game-flip .hm-game-ico, .hm-game-flip .hm-game-ico svg{ color:#f0912e !important; }
.hm-game-quick .hm-game-art{ background:radial-gradient(80% 120% at 50% 0%, rgba(246,200,90,.26), transparent 60%), linear-gradient(180deg,#241f33,#161827) !important; }
.hm-game-quick .hm-game-ico, .hm-game-quick .hm-game-ico svg{ color:#f6c85a !important; }
.hm-game-rustpot .hm-game-ico, .hm-game-rustpot .hm-game-ico svg{ color:#ef4444 !important; }

/* Homepage quick-play card icons -> unified game colors */
.qp-arena .hm-qp-ico{ color:#f6c85a !important; }
.qp-pot .hm-qp-ico{ color:#ef4444 !important; }
.qp-flip .hm-qp-ico{ color:#f0912e !important; }
.qp-quick .hm-qp-ico{ color:#f6c85a !important; }
/* Live-bets / welcome-back feed game colors -> unified */
.g-champ{ color:#f6c85a !important; background:rgba(246,200,90,.13) !important; }
.g-flip{ color:#f0912e !important; background:rgba(240,145,46,.13) !important; }
.g-quick{ color:#f6c85a !important; background:rgba(246,200,90,.13) !important; }
.g-pot{ color:#ef4444 !important; background:rgba(239,68,68,.13) !important; }

/* Remove the glow/shine hover effects on game buttons (kept a plain subtle hover) */
.btn-primary, .cf-create-btn, #joinBtn, .cf-join-btn, .btn-skin-stake, .cf-skin-btn, .rp-skin-primary, .qg-join-btn{ animation:none !important; }
.btn-primary:hover::before, .cf-create-btn:hover::before, #joinBtn:hover::before, .empty-state-cta:hover::before, .join-btn:hover::before, .cf-join-btn:hover::before, .btn-skin-stake:hover::before{ animation:none !important; content:none !important; }
.btn-primary:hover, .cf-create-btn:hover, #joinBtn:hover, .cf-join-btn:hover{ box-shadow:none !important; }

/* Race podium rank numbers -> big & clean (1-2-3) */
.lb-pod-rank{ font-size:26px !important; font-weight:900 !important; line-height:1 !important; opacity:.95 !important; letter-spacing:0 !important; }
.lb-pod-1 .lb-pod-rank{ color:#ffd873 !important; }
.lb-pod-2 .lb-pod-rank{ color:#dfe6f2 !important; }
.lb-pod-3 .lb-pod-rank{ color:#e2a06a !important; }

/* ══ Rain widget -> dark teal/emerald theme (distinct dark color, not the site's blue/gold) ══ */
.chat-rain{ background:linear-gradient(180deg, rgba(11,42,40,.6), rgba(7,20,19,.55)) !important; border-color:rgba(238,179,81,.34) !important; }
.chat-rain-glow{ background:radial-gradient(circle, rgba(238,179,81,.24), transparent 70%) !important; }
.chat-rain-title{ color:#8ff0dc !important; }
.chat-rain-pot, #chatRainPot{ color:#ffffff !important; }
.chat-rain-meta{ color:#a7e8dc !important; }
.chat-rain-usd{ color:#79c7bb !important; }
.chat-rain-timer{ color:#f4cd84 !important; }
.chat-rain-tag{ background:rgba(238,179,81,.16) !important; color:#f6d492 !important; border-color:rgba(238,179,81,.42) !important; }
.chat-rain-join, .fr-join{ background:linear-gradient(180deg,#eab655,#cf9433) !important; color:#04120f !important; border-color:rgba(238,179,81,.5) !important; }
.chat-rain-join:hover, .fr-join:hover{ filter:brightness(1.08) !important; }
#rainBarFill, .rain-bar-fill, .fr-bar-fill{ background:linear-gradient(90deg,#eab655,#cf9433) !important; }

/* Profile stats (Wagered etc.): last 2 digits FULL brightness — they were 1em already, the dim opacity made them read as "small" */
.pstat b .coin-c, .profile-stats-grid .coin-c, .pstat .coin-amt .coin-c{ opacity:1 !important; font-size:1em !important; }

/* Market buy button: price a touch bigger */
.skin-btn{ font-size:15px !important; }
.skin-btn .coin-amt{ font-size:1.05em !important; }
.skin-btn .coin-ico{ width:14px !important; height:14px !important; }

/* Tip Rain button = Chat Rules button (identical look) */
.chat-tiprain-btn{ display:inline-flex !important; align-items:center !important; gap:4px !important; font-size:.74rem !important; font-weight:800 !important; border:1px solid var(--ln) !important; background:rgba(255,255,255,.05) !important; color:var(--t2) !important; border-radius:8px !important; padding:4px 9px !important; }
.chat-tiprain-btn:hover{ background:var(--vio-soft) !important; color:#fff !important; border-color:var(--vio-line) !important; }
.chat-tiprain-btn svg{ width:17px !important; height:17px !important; color:var(--t2) !important; }

/* Champion: staked skins as a connected bar BELOW the prize pool (not inside the frame) */
.champ-pot-skins-bar{ display:flex; flex-wrap:wrap; justify-content:center; gap:4px; margin:12px auto 4px; padding:9px 11px; max-width:94%; background:rgba(0,0,0,.24); border:1px solid var(--ln); border-radius:12px; }
.champ-pot-skins-bar:empty{ display:none !important; }
.champ-pot-skins-bar img, .champ-pot-skins-bar .pot-skin, .champ-pot-skins-bar > *{ width:34px !important; height:34px !important; object-fit:contain !important; }

/* Rustflip game row: value + skin with a bit more gap (swapped order) */
.cf-game-wager{ display:inline-flex !important; align-items:center !important; gap:9px !important; }

/* Rustpot center "Waiting for players" + animated dots (replaces "Be the first to drop in") */
.rp-empty{ align-items:center; justify-content:center; gap:1px; font-weight:700; }
.rp-dots{ display:inline-flex; align-items:flex-end; margin-left:2px; }
.rp-dots i{ width:4px; height:4px; border-radius:50%; background:currentColor; margin-left:3px; opacity:.35; animation:rpDot 1.35s infinite ease-in-out; }
.rp-dots i:nth-child(2){ animation-delay:.18s; }
.rp-dots i:nth-child(3){ animation-delay:.36s; }
@keyframes rpDot{ 0%,65%,100%{ opacity:.35; transform:translateY(0); } 32%{ opacity:1; transform:translateY(-4px); } }

/* Chat pinned message: bigger + nicer (was small/plain) */
.chat-pinned{ background:linear-gradient(180deg, rgba(246,200,90,.11), rgba(246,200,90,.04)) !important; border:1px solid rgba(246,200,90,.32) !important; border-radius:10px !important; padding:10px 12px !important; gap:9px !important; align-items:flex-start !important; }
.chat-pinned-ico{ font-size:16px !important; color:#f6c85a !important; }
.chat-pinned-ico svg{ width:17px !important; height:17px !important; }
.chat-pinned-body{ font-size:13.5px !important; line-height:1.5 !important; }
.chat-pinned-author{ color:#f6c85a !important; font-weight:800 !important; margin-right:5px; }
.chat-pinned-text{ color:#fff !important; }

/* Raffle panel "Ticket:" label */
.rfd-bal-lbl{ color:var(--t2); font-weight:700; font-size:13px; margin-right:1px; }

/* Weekly race card: top 3 racers (replaces the 3D coin) */
.hm-race-top3{ display:flex; flex-direction:column; gap:6px; }
.hm-race-t3{ display:flex; align-items:center; gap:8px; }
.hm-race-t3-rank{ width:16px; text-align:center; font-weight:900; font-size:13px; color:var(--t3); flex:0 0 auto; }
.hm-race-t3-1 .hm-race-t3-rank{ color:#ffd873; }
.hm-race-t3-2 .hm-race-t3-rank{ color:#dfe6f2; }
.hm-race-t3-3 .hm-race-t3-rank{ color:#e2a06a; }
.hm-race-t3 img, .hm-race-t3-ph{ width:26px; height:26px; border-radius:50%; object-fit:cover; flex:0 0 auto; background:linear-gradient(135deg,#3a3f4d,#22262f); }
.hm-race-t3-w{ display:inline-flex; align-items:center; gap:3px; font-weight:800; font-size:13px; color:var(--t1); white-space:nowrap; }
.hm-race-t3-w .coin-ico{ width:12px; height:12px; }

/* Affiliate LVL progress: align current value (icon+num) with the /goal text (was misaligned) */
.afflv-prog-top{ align-items:center !important; }
.afflv-prog-goal{ display:inline-flex !important; align-items:center !important; }

/* Footer shorter: cut the empty gap below + shrink the corner photo (it was setting the footer height) */
.site-footer{ margin-bottom:20px !important; }
.ftr-art{ height:70px !important; width:118px !important; align-self:center !important; }

/* Market: USD value under the name (small, muted) */
.skin-usd-line{ font-size:11.5px; color:var(--t3); font-weight:600; margin:0; }

/* Champion pot skins: connected to the prize pool with a small stem + SAME gold background */
.champ-pot-skins-bar{ background:rgba(238,179,81,.06) !important; border:1px solid rgba(238,179,81,.2) !important; border-radius:var(--r2) !important; margin:8px auto 4px !important; padding:8px 10px !important; position:relative; max-width:94%; display:flex; flex-wrap:wrap; justify-content:center; gap:5px; }
.champ-pot-skins-bar::before{ content:''; position:absolute; top:-8px; left:50%; transform:translateX(-50%); width:2px; height:8px; background:rgba(238,179,81,.4); }
.champ-pot-skins-bar:empty{ display:none !important; }
.champ-pot-skins-bar img, .champ-pot-skins-bar .pot-skin, .champ-pot-skins-bar > *{ width:32px !important; height:32px !important; object-fit:contain !important; background:rgba(0,0,0,.22); border-radius:6px; padding:2px; }

/* Promo Code button in profile dropdown: match the <a> links exactly (was misaligned) */
.profile-menu .pm-item-btn{ display:flex; align-items:center; gap:9px; padding:10px 12px; border-radius:9px; color:var(--t2); font-size:13.5px; font-weight:600; background:none; border:none; width:100%; text-align:left; cursor:pointer; font-family:inherit; transition:background .15s,color .15s; }
.profile-menu .pm-item-btn:hover{ background:rgba(182,170,146,.16); color:#fff; }
.profile-menu .pm-item-btn .nav-ico{ display:inline-flex; }

/* Footer: image fully visible (no clip) + tighter so the footer is shorter */
.ftr-art{ width:114px !important; height:60px !important; align-self:flex-start !important; overflow:visible !important; margin:0 0 0 auto !important; }
.ftr-art-photo{ position:absolute !important; inset:0 !important; width:100% !important; height:100% !important; object-fit:contain !important; object-position:center top !important; }
.site-footer{ margin-bottom:0 !important; }
.ftr-inner{ gap:8px 40px !important; align-items:center !important; }
.ftr-meta p{ margin:3px 0 !important; }
.ftr-brand .ftr-tag{ margin:4px 0 !important; }

/* Podium rank numbers were hidden by an old display:none — SHOW them, big & clear (1-2-3) */
.lb-pod-rank{ display:inline-block !important; font-size:34px !important; font-weight:900 !important; line-height:1 !important; opacity:1 !important; }
.lb-pod-1 .lb-pod-rank{ color:#ffd873 !important; }
.lb-pod-2 .lb-pod-rank{ color:#dfe6f2 !important; }
.lb-pod-3 .lb-pod-rank{ color:#e2a06a !important; }

/* ══ Champion center fixes ══ */
/* Remove the status text area ("Holding the throne", "Waiting for players", etc.) entirely */
.battle-status{ display:none !important; }
/* Prize pool and the staked-skins are TWO separate cards, connected only by a short vertical line.
   The 11px separation comes from the control-panel's own flex gap; the line bridges that gap. */
.prize-display{ border-radius:var(--r2) !important; border:1px solid rgba(238,179,81,.22) !important; margin:0 !important; }
.champ-pot-skins-bar{ width:auto !important; max-width:none !important; margin:0 0 2px !important; padding:11px 12px !important;
  background:rgba(238,179,81,.06) !important; border:1px solid rgba(238,179,81,.22) !important;
  border-radius:var(--r2) !important; display:flex; flex-wrap:wrap; justify-content:center; gap:7px; position:relative; }
/* the short connecting line, drawn in the gap directly above the skins card */
.champ-pot-skins-bar::before{ content:'' !important; position:absolute !important; top:-11px !important; left:50% !important;
  transform:translateX(-50%) !important; width:2px !important; height:11px !important; background:rgba(238,179,81,.45) !important; }
.champ-pot-skins-bar:empty{ display:none !important; }
/* Pot skins now render as a full grid of .cps-th (every staked skin visible). Make each thumb + its
   frame BIG so a single skin reads clearly and 2-3 don't shrink. Override the old "> *" 32px crush. */
.champ-pot-skins-bar{ gap:8px !important; padding:11px 12px !important; }
.champ-pot-skins-bar .cps-grid{ display:flex !important; flex-wrap:wrap !important; justify-content:center !important; align-items:center !important; gap:8px !important; position:relative !important; }
.champ-pot-skins-bar > *, .champ-pot-skins-bar img{ width:auto !important; height:auto !important; }
.champ-pot-skins-bar .cps-th{ width:56px !important; height:56px !important; flex:0 0 auto !important; display:flex !important;
  align-items:center !important; justify-content:center !important; border-radius:10px !important; padding:4px !important;
  background:radial-gradient(circle at 50% 34%, #4b5470, #2b3141 82%) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.09), 0 2px 6px rgba(0,0,0,.34) !important; }
.champ-pot-skins-bar .cps-th img{ width:100% !important; height:100% !important; object-fit:contain !important; filter:drop-shadow(0 3px 6px rgba(0,0,0,.5)) !important; }
/* keep the old .ss-th sizing too, in case it ever renders that variant */
.champ-pot-skins-bar .ss-th{ width:52px !important; height:52px !important; border-radius:10px !important; background:rgba(0,0,0,.25) !important; padding:4px !important; }
.champ-pot-skins-bar .ss-th img{ width:100% !important; height:100% !important; object-fit:contain !important; }
.champ-pot-skins-bar .ss-more{ width:52px !important; height:52px !important; font-size:14px !important; border-radius:10px !important; }

/* Podium base: stack rank + prize cleanly so 1-2-3 is clear (not overlapping) */
.lb-pod-base{ display:flex !important; flex-direction:column !important; align-items:center !important; justify-content:center !important; gap:3px !important; }
.lb-pod-prize{ font-size:12px !important; }

/* Footer: art back to the RIGHT (margin:0 auto was centring it and shoving the rest left) */
.ftr-art{ margin:0 0 0 auto !important; align-self:flex-start !important; }
.ftr-inner{ align-items:center !important; }

/* reCAPTCHA popup: NO blur (per request) + give the checkbox a sized container */
#rainCaptchaModal .app-modal__overlay{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; background:rgba(6,6,12,.55) !important; }
#rainCaptchaBox{ min-height:78px; min-width:300px; display:flex; align-items:center; justify-content:center; }
#rainCaptchaModal .app-modal__card{ max-width:340px; }

/* Raffle drawer: Recent winners section (below the active raffles, like the /raffle page) */
.rfd-recent{ margin-top:4px; padding-top:14px; border-top:1px solid var(--ln); }
.rfd-recent-title{ font-size:13px; font-weight:800; color:var(--t2); margin-bottom:10px; letter-spacing:.02em; text-transform:uppercase; }
.rfd-winrow{ display:flex; align-items:center; gap:9px; padding:7px 9px; border-radius:10px; background:rgba(255,255,255,.03); border:1px solid var(--ln); margin-bottom:7px; }
.rfd-winrow img, .rfd-winrow-ph{ width:36px; height:36px; object-fit:contain; flex:0 0 auto; display:flex; align-items:center; justify-content:center; font-size:20px; }
.rfd-winrow-main{ flex:1; min-width:0; display:flex; flex-direction:column; line-height:1.3; }
.rfd-winrow-main b{ font-size:12.5px; color:var(--t1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rfd-winrow-main span{ font-size:11px; color:var(--t3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rfd-winrow-tk{ font-size:11.5px; font-weight:700; color:#f6c85a; flex:0 0 auto; white-space:nowrap; }
/* Recent-winner "Verify" button + provably-fair modal (drawer, global) */
.rfd-verify{ flex:0 0 auto; background:rgba(140,160,210,.1); border:1px solid rgba(140,160,210,.25); color:#cdd5ea; border-radius:8px; padding:5px 10px; font:700 11px var(--fu); cursor:pointer; transition:background .15s, border-color .15s, color .15s; }
.rfd-verify:hover{ background:rgba(238,179,81,.16); border-color:rgba(238,179,81,.4); color:#ffe6b0; }
.rfd-vmodal{ position:fixed; inset:0; z-index:2000; align-items:center; justify-content:center; padding:16px; }
.rfd-vmodal-ov{ position:absolute; inset:0; background:rgba(6,8,15,.72); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.rfd-vmodal-card{ position:relative; z-index:1; width:min(460px,94vw); max-height:86vh; overflow-y:auto; background:linear-gradient(180deg,#151a27,#0b0e17); border:1px solid var(--ln); border-radius:16px; padding:22px 22px 18px; box-shadow:0 24px 60px rgba(0,0,0,.6); }
.rfd-vmodal-x{ position:absolute; top:12px; right:12px; width:30px; height:30px; border-radius:8px; background:rgba(255,255,255,.06); border:1px solid var(--ln); color:var(--t2); cursor:pointer; font-size:13px; line-height:1; }
.rfd-vmodal-x:hover{ color:var(--t1); background:rgba(255,255,255,.12); }
.rfd-vmodal-title{ font:800 17px var(--fu); color:var(--t1); margin-bottom:4px; }
.rfd-vmodal-sub{ color:var(--t3); font-size:12.5px; margin:0 0 16px; line-height:1.5; }
.rfd-vmodal-rows{ display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }
.rfd-v-row{ display:flex; flex-direction:column; gap:4px; }
.rfd-v-l{ font:700 10.5px var(--fu); text-transform:uppercase; letter-spacing:.04em; color:var(--t3); }
.rfd-v-v{ font-family:var(--fm,ui-monospace,monospace); font-size:12px; color:var(--t1); background:rgba(0,0,0,.34); border:1px solid var(--ln); border-radius:8px; padding:8px 10px; word-break:break-all; }
.rfd-vmodal-formula{ font-size:11.5px; color:var(--t3); line-height:1.55; background:rgba(246,200,90,.05); border:1px solid rgba(246,200,90,.16); border-radius:10px; padding:11px 13px; }
.rfd-vmodal-formula code{ color:#f6c85a; font-family:var(--fm,ui-monospace,monospace); font-size:11px; }

/* ══ Page headers: remove the big page-title everywhere, centre + slightly enlarge the eyebrow (build 309) ══ */
/* Remove the big page titles on EVERY page. Many pages use a bare <h1> (Fight for the Pot, Rewards &
   Rakeback, Skin Market, Ticket Raffles, Invite & Earn, Backpack, My Profile...) not .page-title, so
   hide any <h1> inside the content area — the centred eyebrow stays as the header. */
.page-title{ display:none !important; }
/* The <h1> stays hidden VISUALLY (same design as before) but is no longer display:none, because
   display:none strips it from the accessibility tree and search engines discount it. This clip
   pattern keeps the heading in the DOM flow-free and readable by screen readers / crawlers. */
main.page h1{ position:absolute !important; width:1px !important; height:1px !important;
  padding:0 !important; margin:-1px !important; overflow:hidden !important;
  clip:rect(0 0 0 0) !important; clip-path:inset(50%) !important;
  white-space:nowrap !important; border:0 !important; display:block !important; }
/* Centre the eyebrow within the content area. main.page already sits between the left chat (margin-left)
   and the right raffle drawer (padding-right when open), so centring here == the true page centre.
   inline-flex + a forced text-align:center on the wrapper is more reliable than margin:auto when the
   wrapper isn't a full-width block. */
/* Centre ONLY the page-title header (the container that holds the page's hidden <h1>) plus the known
   page-head wrappers and the profile top. Section headers (History / LAST GAMES, LIVE·OPEN, Queue, etc.)
   are deliberately NOT touched — the earlier broad `div:has(> .eyebrow)` + global `.eyebrow{margin:auto}`
   was shifting every one of them. */
div:has(> h1), .mkt-head, .mkt-head > div, .qg-header, .rp-header, .rf-header, .lb-page-head, .pf2{ text-align:center !important; }
/* Champion is the ONE page header that is a flex ROW rather than a block — it used to carry a second
   element on the right, and `justify-content:space-between` was left behind after that element went.
   With a single child, space-between pins it to the LEFT, and because the child is a flex item only
   as wide as its own text, the inherited text-align:center and the eyebrow's margin:auto had no room
   to work in. So every page centred its eyebrow and this one sat hard left. Made to behave like the
   block headers it sits beside; the mobile rule that forces align-items:flex-start is overridden here
   too, since it produced the same left-pinning on narrow screens. */
.arena-header{ justify-content:center !important; align-items:center !important; text-align:center !important; }
.arena-header-left{ flex:1 1 100% !important; display:block !important; text-align:center !important; }
div:has(> h1) > .eyebrow, .mkt-head > div > .eyebrow, .qg-header > .eyebrow, .rp-header > .eyebrow, .rf-header > .eyebrow, .lb-page-head > .eyebrow, .pf2 > .eyebrow{
  display:inline-flex !important; align-items:center !important; justify-content:center !important; margin-left:auto !important; margin-right:auto !important; width:fit-content; max-width:100%; font-size:14px !important; }

/* ══════════ FOOTER — corrected (build 312) ══════════
   Art positioning lives in the partials.php inline <style> (PHP isn't cached, so it always applies fresh).
   Here we only tidy the columns. */
.ftr-inner{ align-items:flex-start !important; }
.ftr-links{ gap:6px !important; }
body.chat-off .site-footer{ margin-bottom:0 !important; }

/* ══════════ RAFFLE DRAWER CARDS — beautify + bigger skins (item 4) + Enter always reachable with 3+ raffles (item 10) ══════════ */
/* Item 10 root cause: the last card's Enter button sat flush at the drawer's bottom edge; on mobile the floating
   chat pill covered it. Generous scroll padding + reliable touch scrolling make it reachable no matter how many raffles. */
/* Item 10 REAL root cause: .rfd-body is a flex child without min-height:0, so instead of scrolling it
   grew to fit its content and the bottom cards overflowed off-screen (bigger cards below exposed this).
   min-height:0 lets the flex child shrink so overflow-y:auto actually scrolls. */
.rfd-panel{ min-height:0 !important; }
.rfd-body{ min-height:0 !important; padding:12px 10px 22px !important; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
@media(max-width:760px){ .rfd-body{ padding-bottom:96px !important; } }
/* Item (build 313): HORIZONTAL raffle cards — skin on the LEFT, name/price/entrants/stats/Enter on the
   RIGHT. Kills the tall wasted vertical space. flex:0 0 auto keeps cards full-height so the body SCROLLS. */
.rfd-card{ flex:0 0 auto !important; display:flex !important; flex-direction:row !important; align-items:stretch !important; gap:13px !important; padding:12px !important; overflow:hidden !important;
  background:linear-gradient(180deg, rgba(40,44,60,.62), rgba(20,24,37,.74)) !important;
  border:1px solid rgba(246,200,90,.26) !important; border-radius:15px !important;
  box-shadow:0 8px 22px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.05) !important; }
.rfd-thumb{ flex:0 0 104px !important; width:104px !important; align-self:stretch !important; display:flex !important; align-items:center !important; justify-content:center !important;
  padding:8px !important; border-radius:12px !important; background:radial-gradient(120% 120% at 50% 30%, rgba(246,200,90,.17), rgba(0,0,0,.28) 70%) !important; border:1px solid rgba(246,200,90,.13) !important; }
.rfd-thumb img{ max-width:100% !important; max-height:100px !important; object-fit:contain !important; filter:drop-shadow(0 8px 16px rgba(0,0,0,.6)) !important; }
.rfd-thumb .rfd-emoji{ font-size:50px !important; }
.rfd-info{ flex:1 1 auto !important; min-width:0 !important; display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:6px !important; text-align:left !important; }
.rfd-name{ margin:0 !important; font-size:15px !important; font-weight:800 !important; text-align:left !important; white-space:normal !important; line-height:1.2 !important; }
.rfd-pv{ margin:0 !important; font-size:13px !important; padding:3px 12px !important; border-color:rgba(246,200,90,.5) !important; align-self:flex-start !important; }
.rfd-cd{ margin:0 !important; align-self:flex-start !important; font-size:12px !important; }
.rfd-avatars{ margin:1px 0 0 !important; justify-content:flex-start !important; flex-wrap:nowrap !important; max-height:none !important; overflow:visible !important; }
.rfd-info .rfd-avatars .rfd-av, .rfd-info .rfd-avatars .rfd-av-fb{ margin-left:-7px !important; border:1.5px solid #14161f !important; box-shadow:0 1px 3px rgba(0,0,0,.4); }
.rfd-info .rfd-avatars > :first-child{ margin-left:0 !important; }
.rfd-info .rfd-avatars .rfd-av-more{ margin-left:2px !important; padding:0 5px !important; width:auto !important; min-width:22px !important; }
.rfd-stats{ margin:0 !important; justify-content:flex-start !important; gap:14px !important; }
.rfd-enter{ padding:5px 0 0 !important; width:100% !important; margin-top:auto !important; display:flex !important; gap:8px !important; }
.rfd-tin-wrap{ flex:1 1 auto !important; min-width:0 !important; }
.rfd-enter-btn{ flex:0 0 auto !important; padding:9px 18px !important; box-shadow:0 4px 12px rgba(243,176,62,.32); }

/* ══ Raffle entrants modal (item 6) ══ */
.rfd-avatars{ cursor:pointer; transition:opacity .15s ease; }
.rfd-avatars:hover{ opacity:.82; }
.rfd-ent-list{ display:flex; flex-direction:column; gap:6px; margin-top:12px; }
.rfd-ent-row{ display:flex; align-items:center; gap:10px; padding:8px 10px; background:rgba(255,255,255,.04); border:1px solid var(--ln); border-radius:10px; }
.rfd-ent-row .rfd-av, .rfd-ent-row .rfd-av-fb{ width:30px !important; height:30px !important; flex:0 0 auto; border-radius:50%; }
.rfd-ent-name{ flex:1; min-width:0; font-weight:700; color:var(--t1); font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rfd-ent-tk{ flex:0 0 auto; font-size:12px; color:var(--t2); }
.rfd-ent-tk b{ color:#f6c85a; }
.rfd-ent-empty{ text-align:center; color:var(--t3); padding:20px 10px; font-size:13px; }

/* ══ Verify modal rows: copy button on the right of each value (item 1) ══ */
.rfd-v-vwrap{ display:flex; align-items:flex-start; gap:8px; }
.rfd-v-vwrap .rfd-v-v{ flex:1; min-width:0; }
.rfd-v-copy{ flex:0 0 auto; margin-left:0 !important; margin-top:5px; }

/* ══ Rustflip watch-modal: Join button under the empty opponent slot (item 5) ══ */
.cf-modal-join-slot{ margin-top:10px; display:flex; justify-content:center; }
.cf-modal-join{ display:inline-flex; align-items:center; gap:6px; padding:9px 22px; border:none; border-radius:10px; cursor:pointer;
  background:linear-gradient(180deg,#ffd873,#f3b03e); color:#1a1206; font-weight:800; font-size:13.5px;
  box-shadow:0 6px 16px rgba(243,176,62,.34); transition:filter .15s ease, transform .15s ease; }
.cf-modal-join:hover{ filter:brightness(1.05); transform:translateY(-1px); }

/* ══ Admin: coin_html price on race prize skins (item 11) ══ */
.adm-rp-skin-val-disp{ font:800 12px var(--fu,inherit); color:#f6c85a; display:inline-flex; align-items:center; gap:4px; white-space:nowrap; margin-left:2px; }
.adm-rp-skin-val-disp .coin-ico{ width:12px; height:12px; }

/* ══════════ RACES PAGE REDESIGN — "RACE FOR X / WEEKLY" synthwave podium (item 12) ══════════ */
.rc-eyebrow{ margin-bottom:14px; }
.rc-wrap{ position:relative; overflow:hidden; border-radius:22px; margin:0 0 26px; padding:26px 16px 32px;
  background:radial-gradient(120% 90% at 50% 0%, rgba(238,179,81,.12), transparent 58%), linear-gradient(180deg,#0c0f1a 0%,#10131e 52%,#141826 100%);
  border:1px solid rgba(238,179,81,.2); box-shadow:0 18px 50px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05); }
/* Retro-wave backdrop in the SITE colours (gold on navy, not purple): a warm sun glow + a perspective floor-grid */
.rc-bg{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.rc-sun{ position:absolute; left:50%; top:36%; width:min(400px,72%); aspect-ratio:1; transform:translate(-50%,-50%);
  background:radial-gradient(circle at 50% 55%, rgba(255,170,70,.32), rgba(238,179,81,.15) 45%, transparent 66%); filter:blur(6px); opacity:.8; }
.rc-grid{ position:absolute; left:50%; bottom:-2px; width:230%; height:50%; transform:translateX(-50%) perspective(320px) rotateX(64deg); transform-origin:bottom center;
  background-image:
    repeating-linear-gradient(to right, rgba(238,179,81,.16) 0 1px, transparent 1px 6.6%),
    repeating-linear-gradient(to top, rgba(238,179,81,.16) 0 1px, transparent 1px 13%);
  -webkit-mask-image:linear-gradient(to top,#000 4%, transparent 92%); mask-image:linear-gradient(to top,#000 4%, transparent 92%); opacity:.5; }
/* Hero */
.rc-hero{ position:relative; z-index:2; text-align:center; margin-bottom:22px; }
.rc-hero-top{ display:inline-flex; align-items:center; gap:8px; font:800 clamp(17px,3.4vw,26px)/1 var(--fu,sans-serif); font-style:italic; color:#eef; letter-spacing:.02em; text-shadow:0 2px 10px rgba(0,0,0,.5); }
.rc-hero-amt{ display:inline-flex; align-items:center; gap:4px; }
.rc-hero-top .coin-ico{ width:clamp(18px,3vw,24px); height:clamp(18px,3vw,24px); margin-right:0 !important; }
.rc-hero-pool{ color:#fff; }
.rc-hero-weekly{ margin:2px 0 8px; font:900 clamp(46px,12vw,104px)/0.86 var(--fu,'Arial Black',sans-serif); letter-spacing:.02em; text-transform:uppercase;
  background:linear-gradient(180deg,#ffe79a 0%,#ffc24d 42%,#f5951f 58%,#d0700f 100%); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent;
  filter:drop-shadow(1px 1px 0 #b85e0e) drop-shadow(2px 3px 0 #9a4c08) drop-shadow(3px 5px 0 #7a3d08) drop-shadow(0 9px 16px rgba(0,0,0,.55)); }
.rc-hero-timer{ display:inline-flex; align-items:center; gap:6px; font:700 13px var(--fu,sans-serif); color:#c9bfe6; }
.rc-hero-timer b{ color:#fff; }
/* Podium */
.rc-podium{ position:relative; z-index:2; display:flex; align-items:flex-end; justify-content:center; gap:clamp(8px,4vw,44px); padding-top:22px; }
.rc-pod{ position:relative; display:flex; flex-direction:column; align-items:center; width:clamp(94px,28%,178px); }
.rc-pod-1{ transform:translateY(-22px); }
.rc-pod.is-empty{ opacity:.5; }
/* Place tab behind the avatar */
.rc-tab{ position:static; margin:0 0 12px; display:inline-flex; align-items:baseline; gap:5px; padding:5px 14px; border-radius:8px; box-shadow:0 5px 12px rgba(0,0,0,.4); }
.rc-tab b{ font:900 15px var(--fu,sans-serif); line-height:1; color:#2a1c05; }
.rc-tab i{ font:800 9.5px var(--fu,sans-serif); font-style:normal; text-transform:uppercase; letter-spacing:.06em; color:rgba(42,28,5,.85); }
.rc-tab-gold{ background:linear-gradient(160deg,#ffe08a,#f0a92e); }
.rc-tab-gold b{ font-size:17px; }
.rc-tab-silver{ background:linear-gradient(160deg,#e9edf5,#aab4c6); }
.rc-tab-bronze{ background:linear-gradient(160deg,#f0b98a,#c17b45); }
/* Avatar */
.rc-av-wrap{ position:relative; z-index:1; }
.rc-av{ position:relative; z-index:1; border-radius:50%; overflow:hidden; background:linear-gradient(160deg,#2a2f3d,#1a1e28); display:grid; place-items:center; }
.rc-av img{ width:100%; height:100%; object-fit:cover; }
.rc-av span{ font:800 26px var(--fu,sans-serif); color:#fff; }
.rc-gold .rc-av{ width:92px; height:92px; border:3px solid #f2b63f; box-shadow:0 0 24px rgba(242,182,63,.42), 0 12px 24px rgba(0,0,0,.5); }
.rc-silver .rc-av{ width:76px; height:76px; border:3px solid #c3cbd8; box-shadow:0 0 16px rgba(195,203,216,.28), 0 10px 20px rgba(0,0,0,.5); }
.rc-bronze .rc-av{ width:76px; height:76px; border:3px solid #cf9463; box-shadow:0 0 16px rgba(207,148,99,.28), 0 10px 20px rgba(0,0,0,.5); }
/* Name + level + points */
.rc-name-row{ display:flex; align-items:center; justify-content:center; gap:6px; margin-top:15px; max-width:100%; }
.rc-lvl{ flex:0 0 auto; background:linear-gradient(180deg,#f2c14e,#d99a2b); color:#2a1c05; font:900 11px var(--fu,sans-serif); padding:2px 7px; border-radius:6px; box-shadow:0 2px 6px rgba(0,0,0,.35); }
.rc-name{ font:800 14px var(--fu,sans-serif); color:#fff; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rc-gold .rc-name{ font-size:15px; }
.rc-points{ margin-top:3px; font:700 11.5px var(--fu,sans-serif); color:#a99fce; letter-spacing:.04em; }
.rc-points b{ color:#fff; font-weight:900; }
/* Prize */
.rc-prize{ margin-top:11px; display:inline-flex; align-items:center; gap:7px; font:800 12.5px var(--fu,sans-serif); color:#fff; background:rgba(58,42,10,.55); border:1px solid rgba(242,182,63,.72); border-radius:22px; padding:6px 14px; box-shadow:0 6px 14px rgba(0,0,0,.4); }
.rc-prize-lbl{ font-size:10.5px; font-weight:800; letter-spacing:.06em; color:#c9bfa0; }
.rc-prize-amt{ display:inline-flex; align-items:center; gap:3px; color:#ffe7a6; }
.rc-prize-amt .coin-ico{ width:14px; height:14px; margin-right:0 !important; }
/* Race podium (top 3): wager + prize numbers read brighter — lead digits stay prominent (like the
   nav balance) and the last-2 "cents" are only lightly muted instead of half-dim (user: "looks dim"). */
.rc-points .coin-c, .rc-prize .coin-c{ opacity:.72; }
.rc-points .coin-d{ color:#ffffff; }
.rc-gold .rc-prize{ border-color:rgba(242,182,63,.72); background:rgba(58,42,10,.55); }
.rc-prize-skin{ margin-top:10px; }
.rc-prize-skin img{ max-height:80px; max-width:132px; object-fit:contain; filter:drop-shadow(0 6px 12px rgba(0,0,0,.55)); }
/* Small screens: tighten tabs so they don't crowd the avatars */
@media (max-width:560px){
  .rc-wrap{ padding:20px 10px 26px; }
  .rc-tab{ padding:4px 11px; margin-bottom:9px; } .rc-tab b{ font-size:13px; } .rc-tab-gold b{ font-size:14px; } .rc-tab i{ font-size:8.5px; }
  .rc-gold .rc-av{ width:74px; height:74px; } .rc-silver .rc-av, .rc-bronze .rc-av{ width:60px; height:60px; }
  .rc-name{ font-size:12px; } .rc-gold .rc-name{ font-size:12.5px; }
  .rc-points{ font-size:10px; } .rc-prize{ font-size:11px; padding:5px 10px; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rc-sun{ animation:none; } }

/* ══ Bonuses & Rewards — clean redesign: block layout (guaranteed content-height, kills the tall empty space),
   header on top, responsive card grid that looks less bare. ══ */
.hm-free{ display:block !important; height:auto !important; min-height:0 !important; flex:none !important; padding:20px 22px !important; }
.hm-free-hero{ display:flex !important; align-items:center; gap:16px; margin:0 0 16px !important; max-width:none !important; width:auto !important; flex:none !important; }
.hm-free-grid{ display:grid !important; grid-template-columns:repeat(auto-fit, minmax(238px, 1fr)) !important; grid-auto-rows:auto !important; align-content:start !important; gap:12px 16px !important; flex:none !important; height:auto !important; }
.hm-free-item{ align-items:center !important; gap:11px !important; padding:9px 13px !important; background:rgba(255,255,255,.025) !important; border:1px solid rgba(140,160,210,.09) !important; border-radius:12px !important; }
.hm-free-item:hover{ background:rgba(238,179,81,.06) !important; border-color:rgba(238,179,81,.28) !important; }
.hm-free-i{ width:34px !important; height:34px !important; border-radius:10px !important; background:rgba(238,179,81,.08) !important; }
.hm-free-item:hover .hm-free-i{ background:rgba(238,179,81,.16) !important; }

/* Bonuses & Rewards: the header row spans the full card while its content only fills the left side,
   which read as a lop-sided/"half-centred" band. A hairline rule under the header makes the band
   deliberate, and the icon tile + cards get a little more definition. Nothing is centred. */
.hm-free-hero{ position:relative; padding-bottom:14px !important; }
.hm-free-hero::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:linear-gradient(90deg, rgba(238,179,81,.34), rgba(238,179,81,.10) 42%, rgba(140,160,210,.06) 78%, transparent); }
.hm-free-hero-ico{ border-radius:14px; background:linear-gradient(160deg, rgba(238,179,81,.16), rgba(238,179,81,.05)) !important;
  border:1px solid rgba(238,179,81,.20); box-shadow:0 6px 18px rgba(0,0,0,.28); }
.hm-free-hero-sub{ opacity:.92; }
.hm-free-item{ border:1px solid rgba(140,160,210,.09) !important; transition:background .16s ease, border-color .16s ease, transform .16s ease !important; }
.hm-free-item:hover{ transform:translateY(-2px); }
.hm-free-i{ border:1px solid rgba(238,179,81,.14) !important; transition:background .16s ease, color .16s ease, border-color .16s ease !important; }
.hm-free-item:hover .hm-free-i{ border-color:rgba(238,179,81,.34) !important; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .hm-free-item:hover{ transform:none; } }

/* ══ In-field coin_html overlay for the Tip amount inputs (build 313) ══
   A real <input> can't split its digits into bright-dollars / dim-cents, so we make the input's own
   text transparent (caret stays visible) and paint a coin_html layer on top, perfectly aligned to the
   input's text start (padding-left:36px) and font. JS keeps it in sync as you type. */
.tip-amt-wrap.has-coinoverlay{ position:relative; }
.tip-field .tip-amt-wrap.has-coinoverlay input{ color:transparent !important; caret-color:var(--gold2,#eeb351) !important; -webkit-text-fill-color:transparent !important; }
.tip-field .tip-amt-wrap.has-coinoverlay input::placeholder{ color:rgba(150,160,180,.55) !important; -webkit-text-fill-color:rgba(150,160,180,.55) !important; }
.tip-coin-overlay{ position:absolute; left:36px; right:12px; top:0; bottom:0; display:flex; align-items:center; pointer-events:none; z-index:3;
  font-size:17px; font-weight:800; line-height:1; letter-spacing:0; color:var(--gold2,#eeb351); white-space:nowrap; overflow:hidden; }
.tip-coin-overlay:empty{ display:none; }
.tip-coin-overlay .coin-amt{ display:inline-flex; align-items:baseline; }

/* ══ Rain widget attention-glow — fired when the "Rain" bonus card is clicked (build 313) ══ */
@keyframes rainGlowPulse{
  0%{ box-shadow:0 0 0 0 rgba(246,200,90,0); filter:brightness(1); }
  15%{ box-shadow:0 0 0 3px rgba(246,200,90,.85), 0 0 46px 10px rgba(246,200,90,.6); filter:brightness(1.4) saturate(1.25); }
  50%{ filter:brightness(1.08); }
  100%{ box-shadow:0 0 0 0 rgba(246,200,90,0); filter:brightness(1); }
}
#chatRain.rain-glow-pulse{ animation:rainGlowPulse 1.25s ease-in-out 3 !important; border-radius:14px; position:relative; z-index:20 !important; }

/* ══ Custom skin-picker dropdown (admin raffle + races) — replaces the native <datalist> so each
   skin's price renders as coin_html (a native <option> can only show plain text). (build 314) ══ */
.skin-dd{ position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:60; max-height:340px; overflow-y:auto;
  background:#161922; border:1px solid rgba(246,200,90,.32); border-radius:11px; box-shadow:0 16px 40px rgba(0,0,0,.6); padding:5px; }
.skin-dd-head{ position:sticky; top:-5px; margin:-5px -5px 4px; padding:7px 10px; background:#12151c; border-bottom:1px solid rgba(246,200,90,.18); border-radius:11px 11px 0 0; font:700 11px var(--fu); letter-spacing:.03em; color:var(--t3); text-transform:uppercase; }
.skin-dd-row{ display:flex; align-items:center; gap:10px; padding:7px 9px; border-radius:8px; cursor:pointer; }
.skin-dd-row:hover{ background:rgba(246,200,90,.12); }
.skin-dd-row img, .skin-dd-noimg{ width:34px; height:34px; object-fit:contain; background:rgba(0,0,0,.34); border-radius:7px; flex:0 0 auto; }
.skin-dd-name{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:700 13px var(--fu); color:var(--t1); }
.skin-dd-val{ flex:0 0 auto; display:inline-flex; align-items:center; gap:2px; font:800 13px var(--fu); color:#f6c85a; }
.skin-dd-val .coin-ico{ margin-right:0 !important; width:13px !important; height:13px !important; }
.skin-dd-empty{ padding:12px; text-align:center; color:var(--t3); font-size:12px; }

/* ══ Small site-wide polish (build 319): on-theme text selection ══ */
::selection{ background:rgba(238,179,81,.30); color:#fff; text-shadow:none; }
::-moz-selection{ background:rgba(238,179,81,.30); color:#fff; text-shadow:none; }

/* ══ Consistent shine on the remaining gold buttons (modal / hero) — build 321 ══ */
.app-modal__btn.gold, .hm-btn-primary, .hm-btn-gold{ position:relative; overflow:hidden; }
.app-modal__btn.gold::before, .hm-btn-primary::before, .hm-btn-gold::before{
  content:""; position:absolute; top:0; left:-120%; width:60%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.34), transparent);
  transform:skewX(-20deg); pointer-events:none; z-index:1;
}
.app-modal__btn.gold:hover::before, .hm-btn-primary:hover::before, .hm-btn-gold:hover::before{ animation:btnShine .75s ease; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .app-modal__btn.gold::before, .hm-btn-primary::before, .hm-btn-gold::before{ display:none; } }

/* ══ Rustflip game cards — subtle depth + glow polish (build 326) ══ */
.cf-games-list .cf-game-row{ background:linear-gradient(180deg, rgba(30,34,49,.6), rgba(17,20,30,.58)) !important; box-shadow:0 6px 16px rgba(0,0,0,.3); }
.cf-games-list .cf-game-row:hover{ box-shadow:0 12px 26px rgba(0,0,0,.42), 0 0 0 1px rgba(238,179,81,.22) !important; }
.cf-game-wager .coin-ico{ filter:drop-shadow(0 1px 4px rgba(243,168,62,.5)); }

/* ══ Quick Game card hover (build 327) ══ */
.qg-card:hover{ transform:translateY(-2px); border-color:rgba(238,179,81,.28); box-shadow:0 12px 26px rgba(0,0,0,.4); }
.qg-card-range .coin-ico{ margin-right:0 !important; }

/* ══ Raffle-drawer attention glow (fired from the Raffle Rewards bonus card) — build 329 ══ */
@keyframes rfdGlowPulse{ 0%{ box-shadow:0 0 0 0 rgba(246,200,90,0);} 15%{ box-shadow:0 0 0 3px rgba(246,200,90,.78), 0 0 36px 8px rgba(246,200,90,.6); filter:brightness(1.15);} 50%{ filter:brightness(1.05);} 100%{ box-shadow:0 0 0 0 rgba(246,200,90,0);} }
.rfd-glow-pulse{ animation:rfdGlowPulse 1.3s ease-in-out 3 !important; position:relative; z-index:60 !important; border-radius:12px; }

/* Fix (build 330): the global eyebrow-centering squished the champion "Queue / Waiting List" header
   into one centred line. That header's eyebrow is meant to sit on its own line above the title. */
.center-waiting-head{ text-align:left !important; }
.center-waiting-head .eyebrow{ display:block !important; margin:0 0 2px !important; width:auto !important; justify-content:flex-start !important; }

/* ══════════ Raffles: always-open docked drawer + Create-a-Raffle (build 332) ══════════ */
.rfd-create-btn{ display:inline-flex; align-items:center; gap:5px; padding:6px 11px; border-radius:9px; font:800 12px var(--fu); cursor:pointer; white-space:nowrap;
  color:#1a1206; background:linear-gradient(180deg,#ffe08a,#f3a83e); border:none; box-shadow:0 3px 10px rgba(243,168,62,.4); transition:filter .15s, transform .1s; }
.rfd-create-btn:hover{ filter:brightness(1.07); } .rfd-create-btn:active{ transform:scale(.96); }
.rfd-head{ flex-wrap:wrap !important; gap:8px !important; }
.rfd-head .rfd-bal{ margin-left:auto; }

.rfd-cmodal{ position:fixed; inset:0; z-index:1200; display:flex; align-items:center; justify-content:center; padding:18px; }
.rfd-cmodal-ov{ position:absolute; inset:0; background:rgba(4,6,12,.72); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.rfd-cmodal-card{ position:relative; z-index:1; width:min(540px,96vw); max-height:90vh; overflow:auto; background:linear-gradient(180deg,#181b26,#0f121b); border:1px solid rgba(238,179,81,.24); border-radius:18px; padding:22px; box-shadow:0 30px 80px rgba(0,0,0,.6); }
.rfd-cmodal-x{ position:absolute; top:12px; right:12px; width:30px; height:30px; border-radius:8px; border:1px solid var(--ln2); background:rgba(255,255,255,.05); color:var(--t2); cursor:pointer; font-size:14px; }
.rfd-cmodal-x:hover{ color:#fff; border-color:rgba(238,179,81,.5); }
.rfd-cmodal-title{ font:900 20px var(--fu); color:var(--t1); }
.rfd-cmodal-sub{ font-size:12.5px; color:var(--t3); line-height:1.5; margin:6px 0 16px; }
.rfd-cmodal-lbl{ font:800 11px var(--fu); letter-spacing:.08em; text-transform:uppercase; color:var(--t2); margin:12px 0 8px; }
.rfd-cmodal-lbl span{ color:var(--t3); font-weight:600; text-transform:none; letter-spacing:0; }
.rfd-cmodal-skins{ display:grid; grid-template-columns:repeat(auto-fill,minmax(118px,1fr)); gap:10px; max-height:420px; overflow:auto; padding:2px; }
.rfd-cmodal-empty{ grid-column:1/-1; padding:32px 16px; text-align:center; color:var(--t3); font-size:12.5px; line-height:1.5; }
.rfd-cskin{ display:flex; flex-direction:column; gap:6px; padding:10px; border-radius:13px; cursor:pointer; text-align:center;
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.18)); border:1px solid var(--ln2); color:var(--t1); transition:border-color .14s, background .14s, transform .12s; }
.rfd-cskin:hover{ border-color:rgba(238,179,81,.42); transform:translateY(-2px); }
.rfd-cskin.on{ border-color:#f3a83e; background:rgba(238,179,81,.14); box-shadow:inset 0 0 0 1px rgba(238,179,81,.5); }
.rfd-cskin-img{ height:64px; display:flex; align-items:center; justify-content:center; border-radius:9px; background:radial-gradient(72% 72% at 50% 38%, rgba(238,179,81,.14), transparent 72%); }
.rfd-cskin-img img{ max-width:100%; max-height:100%; object-fit:contain; }
.rfd-cskin-nm{ font:600 12px var(--fu); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rfd-cskin-val{ display:inline-flex; align-items:center; justify-content:center; gap:4px; font:800 13px var(--fu); color:var(--gold2,#f3b53f); }
.rfd-cskin-val .coin-ico{ margin-right:0 !important; }
.rfd-cmodal-hours{ display:flex; gap:6px; flex-wrap:wrap; }
.rfd-cmodal-hours button{ flex:1 1 auto; min-width:48px; padding:9px 0; border-radius:10px; font:800 13px var(--fu); cursor:pointer;
  background:rgba(255,255,255,.04); border:1px solid var(--ln2); color:var(--t2); transition:all .14s; }
.rfd-cmodal-hours button:hover{ border-color:rgba(238,179,81,.4); color:var(--t1); }
.rfd-cmodal-hours button.on{ background:linear-gradient(180deg,#ffe08a,#f3a83e); color:#1a1206; border-color:transparent; }
.rfd-cmodal-go{ width:100%; margin-top:16px; padding:12px; border-radius:12px; font:800 14px var(--fu); cursor:pointer;
  color:#1a1206; background:linear-gradient(180deg,#ffe08a,#f3a83e); border:none; box-shadow:0 8px 22px rgba(243,168,62,.34); transition:filter .15s; }
.rfd-cmodal-go:hover:not(:disabled){ filter:brightness(1.07); }
.rfd-cmodal-go:disabled{ opacity:.5; cursor:not-allowed; }
.rfd-cmodal-msg{ margin-top:10px; text-align:center; font-size:12.5px; color:var(--t3); min-height:1em; }
.rfd-cmodal-msg.err{ color:#ff8a8a; }

/* Mobile raffle: a floating "Raffles" button opens the drawer as a bottom sheet (desktop stays docked) */
.rfd-mtoggle, .rfd-mclose, .rfd-mscrim{ display:none; }
@media(max-width:1400px){
  body.rfd-open main.page{ padding-right:clamp(16px,3vw,44px) !important; }   /* raffle un-docks here; the chat left-dock now collapses at this SAME 1300px breakpoint so both become FABs together */
  .rfd-mtoggle{ display:inline-flex !important; align-items:center; gap:7px; position:fixed; right:14px; bottom:14px; z-index:940;
    padding:10px 15px; border-radius:999px; border:1px solid rgba(255,255,255,.16); cursor:pointer;
    background:linear-gradient(145deg,#f4cd84,#eeb351); color:#1a1206; font:800 13px var(--fu, sans-serif); box-shadow:0 6px 18px rgba(0,0,0,.42); }
  .rfd-mtoggle svg{ flex:0 0 auto; }
  body.rfd-mobile-showing .rfd-mtoggle{ opacity:0; pointer-events:none; }
  .rfd-drawer{ position:fixed !important; left:0 !important; right:0 !important; top:auto !important; bottom:0 !important; width:100% !important; max-width:none !important;
    height:82vh !important; max-height:82vh !important; transform:translateY(101%) !important; transition:transform .32s cubic-bezier(.4,0,.2,1) !important;
    z-index:998 !important; border-radius:18px 18px 0 0 !important; border:1px solid var(--ln2) !important; margin:0 !important; }
  .rfd-drawer.rfd-mobile-open{ transform:translateY(0) !important; }
  .rfd-drawer .rfd-panel{ height:100% !important; max-height:100% !important; border-radius:18px 18px 0 0 !important; }
  .rfd-mclose{ display:inline-flex !important; align-items:center; justify-content:center; width:30px; height:30px; flex:0 0 auto; margin-left:6px;
    border-radius:8px; border:1px solid var(--ln2); background:rgba(255,255,255,.05); color:var(--t2); cursor:pointer; font-size:13px; }
  .rfd-mclose:hover{ color:#fff; }
  .rfd-mscrim{ display:block; position:fixed; inset:0; z-index:997; background:rgba(4,6,12,.55); opacity:0; pointer-events:none; transition:opacity .3s; }
  body.rfd-mobile-showing .rfd-mscrim{ opacity:1; pointer-events:auto; }
}

/* Champion fade fix (build 335): a reigning champion — just won, or holding the throne waiting for a
   challenger — must never show the grayed-out .loser fade. Higher specificity beats .player-panel.loser. */
.player-panel.winner, .player-panel.champ-ready,
.player-panel.winner.loser, .player-panel.champ-ready.loser{ opacity:1 !important; filter:none !important; }

/* Mobile: hide the Raffles button while the chat sheet is open (one floating action at a time) */
@media(max-width:980px){ body.chat-open .rfd-mtoggle{ opacity:0 !important; pointer-events:none !important; } }

/* Raffle card (build 338): prize value on the skin's top-right + creator on the bottom-left → shorter card */
.rfd-thumb{ position:relative !important; }
.rfd-thumb-pv{ position:absolute; top:6px; right:6px; z-index:2; display:inline-flex; align-items:center; gap:3px; padding:3px 7px; border-radius:8px;
  font:800 12px var(--fu); color:#ffe7a6; background:rgba(10,12,18,.84); border:1px solid rgba(238,179,81,.42); box-shadow:0 2px 8px rgba(0,0,0,.4); }
.rfd-thumb-pv .coin-ico{ margin-right:0 !important; width:12px !important; height:12px !important; }
.rfd-thumb-pv .coin-c{ opacity:.5; }
.rfd-thumb-by{ position:absolute; left:6px; bottom:6px; z-index:2; max-width:calc(100% - 12px); padding:2px 7px; border-radius:7px;
  font:700 10px var(--fu); color:#dfe1ea; background:rgba(10,12,18,.82); border:1px solid rgba(255,255,255,.1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* Framed RAIN / RAFFLE chat labels (build 341) — a clean bordered pill: no icon, no avatar, no background image */
.chat-tag{ display:inline-flex; align-items:center; padding:1px 9px; border-radius:7px; font:800 10.5px/1.5 var(--fu, sans-serif); letter-spacing:.1em; text-transform:uppercase; }
.chat-tag-rain{ color:#8fd0ff; border:1px solid rgba(124,196,255,.55); background:rgba(124,196,255,.1); }
.chat-tag-raffle{ color:#ffd98a; border:1px solid rgba(238,179,81,.6); background:rgba(238,179,81,.12); }
.chat-tag-tip{ color:#ffe1a0; border:1px solid rgba(238,179,81,.62); background:rgba(238,179,81,.14); }
.chat-message-rain .chat-body, .chat-message-raffle .chat-body, .chat-message-tip .chat-body{ margin-left:0 !important; }
.chat-message-raffle p, .chat-message-rain p, .chat-message-tip p{ color:var(--t2) !important; }

/* Recent-winner skin hover tooltip (build 341): name + price on hover.
   Anchored to the RIGHT of the thumbnail (extends INTO the drawer) so long skin names are never clipped
   on the left by the drawer's overflow (fixes "long skin names get clipped on the left"). */
.rfd-winrow-th{ position:relative; display:inline-flex; flex:0 0 auto; }
.rfd-winrow-tip{ position:absolute; left:calc(100% + 9px); top:50%; transform:translateY(-50%) translateX(-5px); z-index:40; min-width:120px; max-width:190px;
  display:flex; flex-direction:column; align-items:flex-start; gap:2px; padding:7px 10px; border-radius:10px; pointer-events:none; opacity:0; transition:opacity .14s, transform .14s;
  background:rgba(12,14,20,.98); border:1px solid rgba(238,179,81,.42); box-shadow:0 10px 26px rgba(0,0,0,.6); }
.rfd-winrow-th:hover .rfd-winrow-tip{ opacity:1; transform:translateY(-50%) translateX(0); }
.rfd-winrow-tip::before{ content:""; position:absolute; right:100%; top:50%; transform:translateY(-50%); border:6px solid transparent; border-right-color:rgba(238,179,81,.42); }
.rfd-winrow-tip b{ font:700 12px var(--fu, sans-serif); color:var(--t1); white-space:normal; line-height:1.25; }
.rfd-winrow-tip-pv{ display:inline-flex; align-items:center; gap:3px; font:800 13px var(--fu, sans-serif); color:#ffe7a6; }
.rfd-winrow-tip-pv .coin-ico{ margin-right:0 !important; width:13px !important; height:13px !important; }

/* Transactions/Bets amount → coin_html styling (build 342): dimmed last-2 digits + tight coin icon */
.hist-item-amt .coin-ico{ margin-right:0 !important; width:.82em !important; height:.82em !important; }
.hist-item-amt .coin-c{ opacity:.5; font-weight:inherit; }
.hist-item-amt .coin-amt, .hist-item-amt .coin-d{ font-variant-numeric:tabular-nums; }

/* ══ Mobile stability (build 343) ══
   The full-screen fixed vignette (body::after) uses mix-blend-mode, which on mobile Safari can force the
   whole page into a low-quality composited layer (looks "blurry") and intermittently swallows touches.
   Kill it on mobile. Also give the page-loader a CSS-only failsafe so it can NEVER stay covering the page. */
@media (max-width:980px){
  body::after{ display:none !important; }
  body::before{ mix-blend-mode:normal !important; }
}
.page-loader{ animation: plFailsafe 0s linear 7s forwards; }
@keyframes plFailsafe{ to{ opacity:0 !important; pointer-events:none !important; visibility:hidden !important; } }

/* ══════ MOBILE HARD RESET (build 345) ══════
   The phone view keeps coming back frozen/faded. This block forces a usable page on mobile no matter WHAT
   is wrong — a stuck loader, a leftover scrim/drawer/modal, a squished content column, or a backdrop-filter
   that mobile Safari chokes on. High-specificity + !important so it wins over everything above. */
@media (max-width:980px){
  /* 1) content column must be full-width and interactive — never squished by the docked-drawer offset */
  html body main.page,
  html body.rfd-open main.page,
  html body.chat-open main.page{ padding-right:0 !important; padding-left:0 !important; filter:none !important; opacity:1 !important; pointer-events:auto !important; }
  html, body{ overflow-x:hidden !important; }
  html body{ pointer-events:auto !important; filter:none !important; }
  /* 2) the splash loader may NEVER sit over the page on mobile */
  html body #pageLoader, html body .page-loader{ display:none !important; }
  /* 3) decorative full-screen fixed layers off (mix-blend / vignette break mobile compositing) */
  html body::after, html body::before{ display:none !important; }
  /* 4) the raffle drawer must be a hidden bottom-sheet unless the user opened it; its scrim gone otherwise */
  html body .rfd-drawer{ position:fixed !important; left:0 !important; right:0 !important; top:auto !important; bottom:0 !important; width:100% !important; max-width:none !important; transform:translateY(101%) !important; z-index:998 !important; }
  html body .rfd-drawer.rfd-mobile-open{ transform:translateY(0) !important; }
  html body:not(.rfd-mobile-showing) .rfd-mscrim{ opacity:0 !important; pointer-events:none !important; }
  /* 5) backdrop-filters on broad chrome are a known mobile-Safari freeze/blur source → drop them */
  html body .topbar{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
}

/* ═══ Mobile performance & compatibility (build 347) ═══════════════════════════════
   Phones choke on stacked backdrop-filters and blend-modes (the main cause of jank and
   the washed-out feel). Strip them on mobile — keep solid backgrounds so nothing looks
   broken, but the GPU stops thrashing. Desktop keeps the full frosted-glass treatment. */
@media (max-width:900px){
  .topbar{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; background:rgba(10,12,21,.975) !important; }
  .chat-drawer, .chat-panel, .chat-body, .rfd-drawer, .rfd-panel, .rfd-body,
  .cf-modal-overlay, .cf-modal-card, .app-modal__overlay, .app-modal__card,
  .rps-modal-overlay, .qgm-overlay, .rfd-vmodal, .rfd-cmodal, .rfd-mscrim, .rr-toast,
  .cs-modal, .cs-result-modal, .rfpart{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
  /* blend modes are the single most expensive thing for a mobile GPU */
  *{ mix-blend-mode:normal !important; }
  /* let the compositor drop offscreen work; keeps scrolling smooth on long pages */
  .section-block, .hm-quick, .market-grid, .inv-grid{ content-visibility:auto; contain-intrinsic-size:auto 600px; }
}

/* ═══ Remove amateur hover animations (build 348) ═══════════════════════════════════
   No card should lurch, bob, or bounce on hover. Keep at most a subtle static border/shadow. */
.qg-card:hover, .ngm-card-quick:hover, .hm-qp:hover{ transform:none !important; }
.qg-card:hover{ box-shadow:0 6px 16px rgba(0,0,0,.3) !important; }
.ngm-card-quick:hover{ box-shadow:0 8px 20px rgba(0,0,0,.4) !important; }
.ngm-card-quick:hover .qg-q, .ngm-card-quick:hover .qg-q2, .ngm-card-quick:hover .qg-q3{ animation:none !important; }
/* quick-amount chips: subtle, no scale/lift bounce */
.qa:hover, .quick-amounts button:hover{ transform:none !important; box-shadow:none !important; }

/* (build 348 footer-flex removed in 356 — body flex column was squishing content on every page
   by conflicting with the page's margin:auto centring and the chat's margin-left offset.) */

/* Race list level badge sits inline next to the name (same gold badge as the podium) */
.lb-lvl{ display:inline-block; vertical-align:middle; margin-right:6px; position:relative; top:-1px; }

/* Notification type icons (build 348) */
.notif-item{ display:flex !important; flex-direction:row !important; align-items:flex-start; gap:9px; }
.notif-ico{ flex:0 0 auto; width:26px; height:26px; display:grid; place-items:center; border-radius:8px; background:rgba(255,255,255,.06); color:var(--t2); margin-top:1px; }
.notif-ico svg{ width:15px; height:15px; }
.notif-msg{ flex:1 1 auto; min-width:0; }
.notif-time{ flex:0 0 auto; white-space:nowrap; align-self:flex-start; }
.notif-ico-rain{ color:#7fb2ff; background:rgba(127,178,255,.12); }
.notif-ico-raffle, .notif-ico-tip{ color:var(--gold2); background:rgba(238,179,81,.12); }
.notif-ico-pot{ color:#ffb454; background:rgba(255,180,84,.12); }
.notif-ico-win{ color:#f4cd84; background:rgba(238,179,81,.15); }
.notif-ico-level{ color:#5ad36d; background:rgba(90,211,109,.12); }

/* Rustpot: staked skins now sit inline just right of the Pot total, not below the map (build 348) */
.rp-pot-and-skins{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.rp-pot-skins-inline{ margin:0 !important; display:flex; align-items:center; }
.rp-pot-skins-inline:empty{ display:none; }
.rp-pot-skins-inline .sst-th{ width:32px !important; height:32px !important; }

/* Mobile: align the Raffles pill with the Live Chat pill on notched phones (same safe-area inset) */
@media (max-width:900px){
  .rfd-mtoggle{ bottom: calc(14px + env(safe-area-inset-bottom)) !important; }
}

/* ═══ Kill remaining amateur hover MOVEMENT site-wide (build 350) ═══════════════════
   Per request "remove ALL amateur animations": content cards, game tiles, list rows,
   avatars, stat boxes and their buttons no longer lift, grow or bob on hover. Static
   colour / border / shadow feedback stays (that reads as intentional, not amateur). */
.hm-game:hover, .lp-mode:hover, .fair-game-card:hover, .rw-ach.unlocked:hover,
.lb-row:hover, .lb-rows .lb-row:hover, .cf-history-clickable:hover,
.cw-av:hover, .profile-avatar-btn:hover, .chat-pin-btn:hover,
.stat-box:hover, .hero-stat:hover, .lp-stat:hover, .bal-btn:hover,
.bx-btn-join:hover, .bx-btn-bot:hover, .rps-move-btn:hover,
.qa:hover, .quick-amounts button:hover, .topstrip-free:hover{ transform:none !important; }

/* More content cards / stats / avatars — no hover lift (build 350, continued) */
.hm-promo-rewards:hover, .hm-promo-card:hover, .ngm-card:hover, #navGamesMenu .ngm-card:hover,
.rb-card:hover, .pstat:hover, .aff-metric:hover, .bstat:hover, .fair-card:hover, .fair-game-card:hover,
.cs-card:hover, .profile-av-img:hover, .chat-del-btn:hover, .chat-form button[type=submit]:hover{ transform:none !important; }

/* ═══ FULL hover-movement removal — buttons included (build 351) ═══════════════════
   Completes "remove ALL amateur animations": nothing on the site lifts, grows or shifts
   on hover anymore. Only static colour / border / shadow / brightness feedback remains. */
#navGamesMenu .ngm-card:hover, .adm-gfilter .adm-gchip:hover, .adm-tab:hover, .admin-stat:hover,
.aff-metric:hover, .affx-claim-btn:hover, .app-modal__btn:hover, .auth-steam-card .steam-btn-lg:hover,
.bal-btn:hover, .bal-minus:hover, .bal-plus:hover, .bh-row:hover, .brand:hover, .bstat:hover,
.btn-primary:hover, .bx-btn-join:hover, .bx-btn-bot:hover, .cf-games-list .cf-game-row:hover,
.cf-game-card:hover, .cf-history-clickable:hover, .cf-join-btn:hover, .cf-modal-join:hover,
.cf-side-btn:hover, .cgc-watch:hover, .chat-act:hover, .chat-av:hover, .chat-del-btn:hover,
.chat-form button[type=submit]:hover, .chat-pin-btn:hover, .chat-rain-join:hover, .chat-rain-tip:hover,
.cs-card:hover, .cw-av:hover, .empty-state-cta:hover, .fair-card:hover, .fair-game-card:hover,
.hist-tab:hover, .hm-btn-ghost:hover, .hm-btn-primary:hover, .hm-btn-steam:hover, .hm-game:hover,
.hm-promo-card:hover, .hm-promo-rewards:hover, .lb-row:hover, .lbets-tab:hover, .legal-tab:hover,
.lp-btn-ghost:hover, .lp-btn-primary:hover, .lp-mode:hover, .nav a:hover, .nav a:hover .nav-ico,
.nav-more-btn:hover, .ngm-card:hover, .pf-verify .btn-primary:hover, .pf-verify-actions .btn-primary:hover,
.pill-steam:hover, .profile-av-img:hover, .rust-default-av:hover, .profile-avatar-btn:hover, .pstat:hover,
.qa:hover, .quick-amounts button:hover, .qg-card:hover, .rb-card:hover, .rf-card:hover, .rfd-cskin:hover,
.rfd-toggle:hover, .rp-en-row:hover, .rps-btn-join:hover, .rps-btn-bot:hover, .rps-move-btn:hover,
.rps-open-list .rps-open-row:hover, .rps-open-card:hover, .rw-ach.unlocked:hover, .stat-box:hover,
.hero-stat:hover, .lp-stat:hover, .steam-btn:hover, .topstrip-free:hover, .topstrip-nav a:hover,
.tx-pg-btn:hover{ transform:none !important; }

/* Quickgame "View" button had no styling (transparent) — give it the same white/light look as the
   rustflip view button, verify button, and champions view button, for a consistent secondary-action style. */
.qg-card-btn.qg-view-btn{ background:rgba(140,160,210,.1); border:1px solid rgba(140,160,210,.25); color:#cdd5ea; }
.qg-card-btn.qg-view-btn:hover{ background:rgba(238,179,81,.16); border-color:rgba(238,179,81,.4); color:#ffe6b0; }

/* Unify primary gold CTA gradient (build 354) — Join / Claim buttons used slightly different golds
   (and one a different angle). Snap them to the one canonical theme gold for a consistent look. */
.qg-card-btn.join, .affx-claim-btn{ background:linear-gradient(180deg,#ffd873,#f3b03e) !important; }

/* Welcome cards: absolutely NO movement/animation on hover, at ANY width (fixes "the labels kept shifting"
   when the window is smaller — a stale rule + the icon bob were shifting the layout). */
.hm-qp:hover, .hm-qp:hover *{ transform:none !important; animation:none !important; }

/* Consistent footer on short pages (build 359) — HEIGHT ONLY (no body flex, so it can NEVER squish
   content sideways). Main fills the gap between the fixed header and the footer, so on short pages
   like /transactions & /rustflip the footer sits at the bottom instead of floating with a huge gap. */
@media (min-width:981px){
  main.page{ min-height: calc(100vh - var(--rr-header-h, calc(var(--topstrip-h) + var(--topbar-h))) - 150px); }
}

/* Notification GAME icon colours (build 359) */
.notif-ico-flip{ color:#f4cd84; background:rgba(244,205,132,.13); }
.notif-ico-quick{ color:#49a6f6; background:rgba(73,166,246,.13); }
.notif-ico-champ{ color:#5ad36d; background:rgba(90,211,109,.13); }
.notif-ico-case{ color:#4a9fe6; background:rgba(74,159,230,.13); }

/* ═══ Weekly race card + Discord slide — subtle living animation (build 360) ═══════════
   A slow diagonal light sheen sweeps across, the prize pool glows with a gentle pulse, and the
   Discord CTA breathes in Discord blurple. Tasteful, not flashy. */
@keyframes rrCardSheen{ 0%{ transform:translateX(-130%);} 55%,100%{ transform:translateX(130%);} }
@keyframes rrGlowPulse{ 0%,100%{ opacity:.55; text-shadow:0 0 10px rgba(238,179,81,.28);} 50%{ opacity:1; text-shadow:0 0 20px rgba(238,179,81,.5);} }
.hm-race::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none; border-radius:inherit;
  background:linear-gradient(115deg, transparent 32%, rgba(238,179,81,.11) 48%, transparent 64%);
  transform:translateX(-130%); animation:rrCardSheen 6.5s ease-in-out infinite; }
.hm-race-pool-amt{ animation:rrGlowPulse 3s ease-in-out infinite; }
.hm-race:hover::before{ animation-duration:2.6s; }
/* Discord slide: matching blurple sheen + a breathing CTA */
@keyframes rrDcCta{ 0%,100%{ box-shadow:0 0 0 1px rgba(88,101,242,.4), 0 0 14px rgba(88,101,242,.18);} 50%{ box-shadow:0 0 0 1px rgba(88,101,242,.7), 0 0 24px rgba(88,101,242,.45);} }
.hm-bslide-dc .hm-bs-cta{ animation:rrDcCta 2.4s ease-in-out infinite; border-radius:10px; }

/* ═══ Welcome cards: ZERO hover movement at ANY browser zoom (build 361) ═══════════════
   Even after removing the transform, fractional browser zoom re-rasterizes the hover box-shadow
   and makes the whole card appear to jump. Fix: no transform, no box-shadow, and no transform in
   the transition — the hover feedback is now purely a border-colour change. `html` prefix raises
   specificity so this wins over any stale inline index.php rule regardless of cascade order. */
html .hm-qp{ transition:border-color .18s ease, background-color .18s ease !important; will-change:auto !important; }
html .hm-qp:hover, html .hm-qp:hover *{ transform:none !important; animation:none !important; }
html .hm-qp:hover{ box-shadow:0 6px 16px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.05) !important; }

/* Betting-history "View" link — white secondary style, opens the game replay (build 362) */
.hist-item-view{ flex:0 0 auto; align-self:center; display:inline-flex; align-items:center; gap:5px; margin-left:14px;
  padding:7px 13px; border:1px solid rgba(140,160,210,.25); background:rgba(140,160,210,.1); color:#cdd5ea;
  font:700 12px var(--fu,inherit); border-radius:9px; text-decoration:none; white-space:nowrap;
  transition:background .15s, border-color .15s, color .15s; }
.hist-item-view:hover{ background:rgba(238,179,81,.16); border-color:rgba(238,179,81,.4); color:#ffe6b0; }
.hist-item-view svg{ width:14px; height:14px; }

/* Champion skins now live INSIDE the Prize Pool box (build 362) — drop the separate-box chrome
   (background / border / connector notch) and shrink the thumbnails so they read as part of the box. */
.champ-pot-skins-inside{ background:none !important; border:none !important; box-shadow:none !important;
  padding:0 !important; margin:9px 0 0 !important; max-width:100% !important; width:auto !important; gap:4px !important; }
.champ-pot-skins-inside::before{ display:none !important; }
.champ-pot-skins-inside .cps-grid{ gap:5px !important; }
.champ-pot-skins-inside .cps-th, .champ-pot-skins-inside .ss-th, .champ-pot-skins-inside .ss-more{ width:34px !important; height:34px !important; padding:2px !important; border-radius:7px !important; }

/* ═══ Admin: user backpack grid (build 366) ═══════════════════════════════════════════ */
.adm-backpack{ margin:14px 0 6px; padding:12px 14px; background:rgba(0,0,0,.2); border:1px solid var(--ln); border-radius:12px; }
.adm-bp-head{ display:flex; justify-content:space-between; align-items:center; font-size:12px; color:var(--t2); margin-bottom:10px; flex-wrap:wrap; gap:6px; }
.adm-bp-head b{ color:var(--gold2); } .adm-bp-total{ display:inline-flex; align-items:center; gap:4px; color:var(--t3); }
.adm-bp-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(78px,1fr)); gap:8px; }
.adm-bp-item{ position:relative; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; padding:6px;
  background:radial-gradient(circle at 50% 34%, #3a4155, #232838 82%); border:1px solid rgba(255,255,255,.08); border-radius:9px; }
.adm-bp-item img{ max-width:100%; max-height:68%; object-fit:contain; filter:drop-shadow(0 3px 5px rgba(0,0,0,.5)); }
.adm-bp-val{ position:absolute; bottom:3px; left:0; right:0; text-align:center; font-size:10px; font-weight:800; color:#ffe6b0; display:inline-flex; align-items:center; justify-content:center; gap:2px; }
.adm-bp-val .coin-ico{ width:9px; height:9px; }
.adm-bp-item.is-staked{ opacity:.72; border-color:rgba(238,179,81,.4); }
.adm-bp-staked{ position:absolute; top:3px; left:3px; font-size:8px; font-weight:900; text-transform:uppercase; letter-spacing:.04em; color:#231a05; background:var(--gold2); padding:1px 4px; border-radius:4px; }

/* ═══════════════════════════════════════════════════════════════════════════════════════
   VISUAL ENRICHMENT PASS (build 367) — pure cosmetic layers (glow / gradient / motion),
   no layout or logic touched. Rust dark + gold, premium, tasteful animation.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

/* ── Champion PRIZE POOL: premium panel + integrated prize tray (skins no longer a "patch") ── */
.prize-display{ position:relative; overflow:hidden;
  background:linear-gradient(180deg, rgba(238,179,81,.10), rgba(238,179,81,.03)) !important;
  border:1px solid rgba(238,179,81,.28) !important;
  box-shadow:0 10px 30px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06), inset 0 0 40px rgba(238,179,81,.06) !important; }
.prize-display::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0; border-radius:inherit;
  background:radial-gradient(90% 120% at 50% -15%, rgba(238,179,81,.22), transparent 68%);
  animation:rrPPGlow 4.2s ease-in-out infinite; }
@keyframes rrPPGlow{ 0%,100%{ opacity:.5; } 50%{ opacity:1; } }
.prize-label{ position:relative; z-index:1; }
.prize-amount{ position:relative; z-index:1; animation:rrPPAmt 3.4s ease-in-out infinite; }
@keyframes rrPPAmt{ 0%,100%{ text-shadow:0 2px 14px rgba(238,179,81,.28), 0 0 2px rgba(238,179,81,.2); }
                    50%{ text-shadow:0 2px 22px rgba(238,179,81,.55), 0 0 6px rgba(238,179,81,.4); } }
/* the skins as a recessed prize tray with a hairline gold divider above them */
.champ-pot-skins-inside{ position:relative; z-index:1; display:flex !important; justify-content:center !important; align-items:center !important;
  margin:12px -14px -12px !important; padding:12px 14px 13px !important;
  border-top:1px solid rgba(238,179,81,.16) !important;
  background:linear-gradient(180deg, rgba(0,0,0,.18), rgba(0,0,0,.04)) !important; border-radius:0 !important; }
.champ-pot-skins-inside::after{ display:none !important; }
.champ-pot-skins-inside .cps-grid{ display:flex !important; flex-wrap:wrap !important; justify-content:center !important; align-items:center !important; gap:8px !important; position:static !important; width:auto !important; }
.champ-pot-skins-inside .cps-th, .champ-pot-skins-inside .ss-th, .champ-pot-skins-inside .ss-more{
  width:50px !important; height:50px !important; padding:5px !important; border-radius:12px !important; flex:0 0 auto !important;
  display:flex !important; align-items:center !important; justify-content:center !important;
  background:radial-gradient(circle at 50% 30%, #3c4358, #232838 86%) !important;
  box-shadow:inset 0 0 0 1px rgba(238,179,81,.18), inset 0 1px 0 rgba(255,255,255,.08), 0 3px 8px rgba(0,0,0,.4) !important;
  transition:box-shadow .18s ease !important; }
.champ-pot-skins-inside .cps-th:hover{ box-shadow:inset 0 0 0 1px rgba(238,179,81,.55), 0 5px 14px rgba(238,179,81,.22) !important; }
.champ-pot-skins-inside .cps-th img, .champ-pot-skins-inside .ss-th img{ width:100% !important; height:100% !important; object-fit:contain !important; display:block !important; margin:0 !important; filter:drop-shadow(0 2px 5px rgba(0,0,0,.55)) !important; }
.champ-pot-skins-inside .skin-stack-tip{ position:absolute !important; }

/* ── Bonuses & Rewards list: gold accent bar slides in + icon glow on hover (no movement) ── */
.hm-free-item{ position:relative; overflow:hidden; transition:background .16s ease, border-color .16s ease !important; }
.hm-free-item::before{ content:""; position:absolute; left:0; top:8px; bottom:8px; width:0; border-radius:3px;
  background:linear-gradient(180deg,#ffd873,#f3b03e); box-shadow:0 0 10px rgba(238,179,81,.5); transition:width .2s ease; }
.hm-free-item:hover{ border-color:rgba(238,179,81,.32) !important; background:rgba(238,179,81,.055) !important; }
.hm-free-item:hover::before{ width:3px; }
.hm-free-i{ transition:background .16s ease, box-shadow .16s ease, color .16s ease !important; }
.hm-free-item:hover .hm-free-i{ box-shadow:0 0 16px rgba(238,179,81,.35), inset 0 0 0 1px rgba(238,179,81,.3); color:#ffe6b0 !important; }
.hm-free-item .hm-free-t b{ transition:color .16s ease; }
.hm-free-item:hover .hm-free-t b{ color:#ffe9c2; }

/* ── Chat RAIN tag: gentle teal glow pulse + brighter falling coins ── */
.chat-rain-tag{ animation:rrRainGlow 2.4s ease-in-out infinite; }
@keyframes rrRainGlow{ 0%,100%{ box-shadow:0 0 0 1px rgba(238,179,81,.28), 0 0 0 rgba(238,179,81,0); }
                       50%{ box-shadow:0 0 0 1px rgba(238,179,81,.55), 0 0 14px rgba(238,179,81,.4); } }
.crt-drops i{ background:linear-gradient(180deg,#c8fff2,#eab655) !important; box-shadow:0 0 3px rgba(238,179,81,.6); }

/* ── Discord banner slide: full blurple glow + a soft breathing halo ── */
.hm-bslide-dc{ position:relative; }
.hm-bslide-dc::before{ content:""; position:absolute; inset:0; pointer-events:none; border-radius:inherit; z-index:0;
  background:radial-gradient(70% 130% at 20% 50%, rgba(88,101,242,.22), transparent 70%);
  animation:rrDcHalo 3.6s ease-in-out infinite; }
@keyframes rrDcHalo{ 0%,100%{ opacity:.5; } 50%{ opacity:1; } }
.hm-bslide-dc > *{ position:relative; z-index:1; }

/* ── Primary gold CTAs: richer gradient + a light sweep on hover ── */
.qg-card-btn.join, .affx-claim-btn, .cf-join-btn, .rp-join-btn, .btn-primary, .create-game-btn{ position:relative; overflow:hidden; }
.qg-card-btn.join::after, .affx-claim-btn::after, .cf-join-btn::after, .rp-join-btn::after, .btn-primary::after, .create-game-btn::after{
  content:""; position:absolute; top:0; left:-60%; width:40%; height:100%; pointer-events:none;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent); transform:skewX(-18deg); opacity:0; }
.qg-card-btn.join:hover::after, .affx-claim-btn:hover::after, .cf-join-btn:hover::after, .rp-join-btn:hover::after, .btn-primary:hover::after, .create-game-btn:hover::after{
  animation:rrBtnSweep .7s ease; }
@keyframes rrBtnSweep{ 0%{ left:-60%; opacity:0; } 30%{ opacity:1; } 100%{ left:130%; opacity:0; } }

/* ── Section headings: subtle gold underline accent on the h3 ── */
.section-title h3{ position:relative; }
.section-title h3::after{ content:""; position:absolute; left:0; bottom:-5px; width:26px; height:2px; border-radius:2px;
  background:linear-gradient(90deg,#f3b03e, transparent); }

/* ── Level badges: refined gold chip (subtle, readable) ── */
.lb-lvl, .rc-lvl{ background:linear-gradient(180deg,#e8b552,#d4923a) !important; color:#231703 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28), 0 1px 2px rgba(0,0,0,.32) !important; }

/* ── Chat TIP tag: warm gold glow pulse (matches the rain tag) ── */
.chat-tip-tag{ animation:rrTipGlow 2.6s ease-in-out infinite; }
@keyframes rrTipGlow{ 0%,100%{ box-shadow:0 0 0 1px rgba(238,179,81,.3), 0 0 0 rgba(238,179,81,0); }
                      50%{ box-shadow:0 0 0 1px rgba(238,179,81,.55), 0 0 12px rgba(238,179,81,.35); } }

/* ── Big coin totals: soft gold aura (pot / prize) ── */
.rp-pot{ text-shadow:0 0 16px rgba(238,179,81,.28); }

/* ═══════════════════════════════════════════════════════════════════════════════════════
   VISUAL ENRICHMENT II (build 368) — market, game tables, nav, live bits + site-wide touches.
   Still pure cosmetic (glow / gradient), zero layout movement.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

/* Market / skin cards — hover glow + gold edge (no lift) */
.cs-card, .skin-card{ transition:border-color .16s ease, box-shadow .16s ease !important; }
.cs-card:hover, .skin-card:hover{ box-shadow:0 10px 26px rgba(0,0,0,.42), 0 0 0 1px rgba(238,179,81,.32), inset 0 0 26px rgba(238,179,81,.05) !important;
  border-color:rgba(238,179,81,.3) !important; }

/* Live "online" dot — soft green aura */
.online-dot{ box-shadow:0 0 7px rgba(74,222,128,.65), 0 0 0 1px rgba(74,222,128,.25) !important; }

/* Balance chip — premium gold sheen on hover */
.bal-btn{ transition:box-shadow .16s ease, border-color .16s ease !important; }
.bal-btn:hover{ box-shadow:0 0 0 1px rgba(238,179,81,.38), 0 5px 16px rgba(238,179,81,.16) !important; }

/* Nav links — warm hover tint */
.nav a:hover, .nav-link:hover{ color:#ffe7bd !important; }

/* Coinflip coin — subtle gold aura; VS badge — refined ring */
.cf-coin{ filter:drop-shadow(0 4px 10px rgba(0,0,0,.4)) drop-shadow(0 0 14px rgba(238,179,81,.22)); }
.cf-vs{ box-shadow:inset 0 0 0 1px rgba(238,179,81,.32), 0 0 14px rgba(238,179,81,.16); }

/* Leaderboard rows — faint gold wash on hover */
.lb-row{ transition:background .14s ease !important; }
.lb-row:hover{ background:rgba(238,179,81,.05) !important; }

/* Site-wide custom scrollbar — dark track, gold thumb (low specificity: yields to any custom bar) */
*::-webkit-scrollbar{ width:10px; height:10px; }
*::-webkit-scrollbar-track{ background:rgba(0,0,0,.2); }
*::-webkit-scrollbar-thumb{ background:linear-gradient(180deg, rgba(238,179,81,.5), rgba(238,179,81,.3)); border-radius:6px; border:2px solid transparent; background-clip:padding-box; }
*::-webkit-scrollbar-thumb:hover{ background:linear-gradient(180deg, rgba(238,179,81,.72), rgba(238,179,81,.5)); background-clip:padding-box; }

/* Inputs — gentle gold focus glow */
input:focus, textarea:focus, select:focus{ box-shadow:0 0 0 2px rgba(238,179,81,.22) !important; border-color:rgba(238,179,81,.48) !important; }

/* ═══════════════════════════════════════════════════════════════════════════════════════
   VISUAL ENRICHMENT III (build 369) — profile, cases, wallet, modals, raffle drawer.
   Pure cosmetic (glow / gradient / frame), zero layout movement.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

/* Profile — gold avatar frame + premium cards */
.pf-avatar{ box-shadow:0 0 0 3px rgba(238,179,81,.42), 0 0 22px rgba(238,179,81,.22), inset 0 0 0 1px rgba(0,0,0,.3) !important; }
.pf-card{ position:relative; transition:border-color .16s ease, box-shadow .16s ease !important; }
.pf-card:hover{ box-shadow:0 10px 26px rgba(0,0,0,.36), 0 0 0 1px rgba(238,179,81,.2) !important; }
.pf-out{ position:relative; overflow:hidden; }
.pf-out::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(80% 120% at 50% -10%, rgba(238,179,81,.1), transparent 66%); }
.pf-out > *{ position:relative; z-index:1; }

/* Cases — premium open panel + a slow living glow behind the reel */
.cs-open-panel{ position:relative; overflow:hidden;
  box-shadow:0 14px 40px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.05) !important; }
.cs-open-panel::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(60% 90% at 50% 40%, rgba(238,179,81,.1), transparent 70%); animation:rrPPGlow 5s ease-in-out infinite; }
.cs-open-panel > *{ position:relative; z-index:1; }
.cs-open-btn{ position:relative; overflow:hidden; }
.cs-open-btn::after{ content:""; position:absolute; top:0; left:-60%; width:40%; height:100%; pointer-events:none;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent); transform:skewX(-18deg); opacity:0; }
.cs-open-btn:hover::after{ animation:rrBtnSweep .7s ease; }

/* Wallet — premium cards + warm hover; deposit/withdraw icons glow */
.wallet-card, .wallet-row{ transition:border-color .16s ease, box-shadow .16s ease, background .16s ease !important; }
.wallet-card:hover, .wallet-row:hover{ box-shadow:0 8px 22px rgba(0,0,0,.34), 0 0 0 1px rgba(238,179,81,.24) !important; }
.wallet-tab:hover{ color:#ffe7bd !important; }
.wd-icon{ box-shadow:0 0 14px rgba(238,179,81,.16); }

/* Modals — skin thumbnail gold frame + gentle glow */
.cm-img{ box-shadow:inset 0 0 0 1px rgba(238,179,81,.18), 0 4px 12px rgba(0,0,0,.4) !important; }   /* static frame — no hover animation */

/* Raffle drawer — premium cards, glowing prize, winner rows shimmer */
.rfd-card{ transition:border-color .16s ease, box-shadow .16s ease !important; }
.rfd-card:hover{ box-shadow:0 8px 20px rgba(0,0,0,.36), 0 0 0 1px rgba(238,179,81,.24) !important; border-color:rgba(238,179,81,.3) !important; }
.rfd-prize{ text-shadow:0 0 12px rgba(238,179,81,.28); }
.rfd-enter-btn{ position:relative; overflow:hidden; }
.rfd-enter-btn::after{ content:""; position:absolute; top:0; left:-60%; width:40%; height:100%; pointer-events:none;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.3), transparent); transform:skewX(-18deg); opacity:0; }
.rfd-enter-btn:hover::after{ animation:rrBtnSweep .7s ease; }
.rfd-winrow-th{ box-shadow:inset 0 0 0 1px rgba(238,179,81,.2) !important; }

/* ═══════════════════════════════════════════════════════════════════════════════════════
   VISUAL ENRICHMENT IV (build 370) — chat bubbles, footer, empty states, finishing touches.
   Cosmetic only. Chat gets readable hover + coloured type accents; footer a gold hairline;
   empty-state art a gentle ambient float (decorative, not interactive — no hover jitter).
   ═══════════════════════════════════════════════════════════════════════════════════════ */

/* Chat — subtle hover highlight so the eye tracks the current line */
.chat-message{ transition:background .12s ease !important; border-radius:8px; }
.chat-message:hover{ background:rgba(255,255,255,.035) !important; }
/* You were mentioned — warm gold flag + glow */
.chat-mentions-me{ box-shadow:inset 3px 0 0 rgba(238,179,81,.85), 0 0 0 1px rgba(238,179,81,.14) !important; }
/* Unified gold left accent for ALL special/system message types (build 477) — rain/tip/raffle/announcement identical */
.chat-message-rain, .chat-message-tip, .chat-message-raffle, .chat-message-announcement, .chat-message-system{ box-shadow:inset 3px 0 0 var(--gold2,#f4cd84) !important; }

/* Footer — gold hairline across the top + warm link hover + brand glow */
.site-footer{ position:relative; }
.site-footer::before{ content:""; position:absolute; top:0; left:0; right:0; height:1px; pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(238,179,81,.42), transparent); }
.ftr-links a{ transition:color .14s ease; }
.ftr-links a:hover{ color:#ffe7bd !important; }
.ftr-brand{ filter:drop-shadow(0 0 12px rgba(238,179,81,.14)); }

/* Empty states — gentle ambient float on the decorative art (no layout shift) */
@keyframes rrFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-5px); } }
.empty-char{ animation:rrFloat 3.4s ease-in-out infinite; filter:drop-shadow(0 8px 12px rgba(0,0,0,.35)); }
.empty-icon{ animation:rrFloat 3.4s ease-in-out infinite; }

/* ═══════════════════════════════════════════════════════════════════════════════════════
   VISUAL ENRICHMENT V (build 371) — toasts, tabs, tactile press. Cosmetic only, no movement.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

/* Toast notifications — a soft type-coloured aura so wins/errors read at a glance */
.rr-toast{ transition:box-shadow .2s ease; }
.rr-toast-success{ box-shadow:0 12px 32px rgba(0,0,0,.42), 0 0 20px rgba(74,222,128,.22) !important; }
.rr-toast-money, .rr-toast-win{ box-shadow:0 12px 32px rgba(0,0,0,.42), 0 0 22px rgba(238,179,81,.3) !important; }
.rr-toast-error{ box-shadow:0 12px 32px rgba(0,0,0,.42), 0 0 20px rgba(239,68,68,.24) !important; }
.rr-toast-info{ box-shadow:0 12px 32px rgba(0,0,0,.42), 0 0 18px rgba(88,101,242,.22) !important; }

/* Tabs — smooth state changes + a gentle glow on the active tab (no extra underline) */
.tab, .admin-nav-tab, .seg-btn, .wallet-tab{ transition:color .16s ease, background .16s ease, box-shadow .16s ease, border-color .16s ease !important; }
.tab.active, .admin-nav-tab.active, .seg-btn.active, .wallet-tab.active{ text-shadow:0 0 10px rgba(238,179,81,.3); }

/* Tactile press feedback — a subtle dim on click (brightness only, nothing moves) */
button:active, .adm-btn:active, .qg-card-btn:active, .cf-join-btn:active, .rp-join-btn:active,
.rfd-enter-btn:active, .cs-open-btn:active, .affx-claim-btn:active, .bal-btn:active{ filter:brightness(.93) !important; }

/* ── Admin stats: presence + login/guest accents (build 372) ── */
.adm-stat-live .admin-stat-num{ color:#4ade80; display:flex; align-items:center; justify-content:center; gap:7px; }
.adm-stat-live .admin-stat-num::before{ content:""; width:9px; height:9px; border-radius:50%; background:#4ade80;
  box-shadow:0 0 9px rgba(74,222,128,.85); animation:rrAdmLive 1.8s ease-in-out infinite; flex:0 0 auto; }
@keyframes rrAdmLive{ 0%,100%{ opacity:1; transform:scale(1); } 50%{ opacity:.35; transform:scale(.82); } }
.adm-stat-login{ border-color:rgba(238,179,81,.3) !important; background:linear-gradient(180deg, rgba(238,179,81,.06), transparent) !important; }
.adm-stat-login .admin-stat-num{ color:#f3b03e; }
.adm-stat-guest{ border-color:rgba(140,160,210,.28) !important; background:linear-gradient(180deg, rgba(140,160,210,.05), transparent) !important; }
.adm-stat-guest .admin-stat-num{ color:#9fb0d8; }

/* ═══ Bonus reward tasks + account-info form (build 373) ═══ */
.rr-tasks{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; }
.rr-task{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:11px; padding:20px 14px 16px; border-radius:16px;
  background:linear-gradient(180deg, rgba(255,255,255,.035), rgba(0,0,0,.06)); border:1px solid var(--ln);
  transition:border-color .16s ease, box-shadow .16s ease; }
.rr-task:hover{ border-color:rgba(238,179,81,.3); box-shadow:0 10px 26px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.05); }
.rr-task.done{ opacity:.72; }
.rr-task-ico{ flex:0 0 auto; width:56px; height:56px; display:grid; place-items:center; border-radius:15px;
  background:rgba(238,179,81,.1); color:#f3b03e; border:1px solid rgba(238,179,81,.2); }
.rr-task-ico svg{ width:28px; height:28px; }
.rr-task-discord .rr-task-ico{ background:rgba(88,101,242,.12); color:#8b96f5; border-color:rgba(88,101,242,.28); }
.rr-task-x .rr-task-ico{ background:rgba(230,236,245,.08); color:#e6ecf5; border-color:rgba(230,236,245,.18); }
.rr-task-steam .rr-task-ico{ background:rgba(102,192,244,.1); color:#66c0f4; border-color:rgba(102,192,244,.26); }
.rr-task-body{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
.rr-task-body b{ display:block; font-size:14px; color:#eef1f7; line-height:1.25; }
.rr-task-body span{ font-size:11.5px; color:var(--t3); line-height:1.35; }
.rr-hl{ color:#f3b03e; font-weight:800; }
.rr-task-cta{ flex:0 0 auto; margin-top:auto; display:flex; flex-direction:column; align-items:center; gap:9px; width:100%; padding-top:4px; }
.rr-task-coin{ display:inline-flex; align-items:center; gap:4px; font-weight:800; color:#ffe6b0; font-size:15px; }
.rr-task-coin .coin-ico{ width:15px; height:15px; }
.rr-task-btn{ width:100%; padding:9px 14px; border-radius:10px; border:none; cursor:pointer; font:800 13px var(--fu,inherit);
  background:linear-gradient(180deg,#ffd873,#f3b03e); color:#231a05; transition:filter .14s ease, box-shadow .14s ease; }
.rr-task-btn:hover{ box-shadow:0 4px 14px rgba(238,179,81,.3); }
.rr-task-btn:active{ filter:brightness(.93); }
.rr-task-btn.done, .rr-task-btn:disabled{ background:rgba(140,160,210,.16); color:#9fb0c8; cursor:default; box-shadow:none; }
@media (max-width:820px){ .rr-tasks{ grid-template-columns:repeat(2, 1fr); } }
@media (max-width:440px){ .rr-tasks{ grid-template-columns:1fr; } }

.rr-pform-ov{ position:fixed; inset:0; z-index:9000; background:rgba(6,8,14,.72); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); display:grid; place-items:center; padding:20px; }
.rr-pform{ position:relative; width:min(430px,94vw); background:linear-gradient(180deg,#151a26,#0f131d); border:1px solid rgba(238,179,81,.2); border-radius:16px; padding:22px 22px 20px; box-shadow:0 24px 60px rgba(0,0,0,.5); }
.rr-pform h3{ margin:0 0 4px; font-size:18px; color:#f3f5fa; }
.rr-pform-sub{ margin:0 0 16px; font-size:12.5px; color:var(--t3); }
.rr-pform-sub .coin-ico{ width:13px; height:13px; vertical-align:-2px; }
.rr-pform label{ display:block; font-size:11.5px; color:var(--t3); margin-bottom:11px; font-weight:600; }
.rr-pform input{ width:100%; margin-top:5px; padding:10px 12px; border-radius:9px; background:rgba(0,0,0,.28); border:1px solid var(--ln); color:#eef1f7; font-size:14px; box-sizing:border-box; }
.rr-pform input:focus{ outline:none; border-color:rgba(238,179,81,.5); box-shadow:0 0 0 2px rgba(238,179,81,.2); }
.rr-pform-row2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.rr-pform-x{ position:absolute; top:12px; right:14px; background:none; border:none; color:var(--t3); font-size:24px; line-height:1; cursor:pointer; }
.rr-pform-x:hover{ color:#fff; }
.rr-pform-err{ min-height:16px; color:#ff8f8f; font-size:12px; margin-bottom:8px; }
.rr-pform-submit{ width:100%; padding:12px; font-size:14px; }

/* ── Admin: account-info forms table (build 373) ── */
.adm-forms-bar{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 14px; flex-wrap:wrap; }
.adm-forms-count{ color:var(--t2); font-size:13px; } .adm-forms-count b{ color:var(--gold2); font-size:15px; }
.adm-forms-dl{ display:inline-flex; align-items:center; }
.adm-forms-table-wrap{ overflow-x:auto; border:1px solid var(--ln); border-radius:12px; }
.adm-forms-table{ width:100%; border-collapse:collapse; font-size:13px; min-width:620px; }
.adm-forms-table th{ text-align:left; padding:10px 12px; background:rgba(0,0,0,.25); color:var(--t3); font-weight:700; font-size:11px; text-transform:uppercase; letter-spacing:.04em; border-bottom:1px solid var(--ln); }
.adm-forms-table td{ padding:10px 12px; border-bottom:1px solid rgba(255,255,255,.05); color:#dce1ec; }
.adm-forms-table tr:last-child td{ border-bottom:none; }
.adm-forms-table tr:hover td{ background:rgba(238,179,81,.04); }
.adm-forms-table a{ color:#9cc0ff; text-decoration:none; } .adm-forms-table a:hover{ color:#bcd4ff; }
.adm-forms-rid{ display:inline-block; font-size:10px; color:#231703; background:var(--gold2); padding:1px 5px; border-radius:4px; font-weight:800; vertical-align:middle; }

/* ── Admin backpack add / remove skins (build 374) ── */
.adm-bp-rm{ position:absolute; top:2px; right:2px; margin:0; z-index:2; }
.adm-bp-rm button{ width:18px; height:18px; border-radius:5px; border:none; background:rgba(220,60,60,.88); color:#fff; font-size:14px; line-height:1; cursor:pointer; display:grid; place-items:center; opacity:0; transition:opacity .12s ease; padding:0; }
.adm-bp-item:hover .adm-bp-rm button{ opacity:1; }
.adm-bp-rm button:hover{ background:#e23b3b; }
.adm-bp-add{ display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; align-items:center; }
.adm-bp-add input{ padding:8px 11px; border-radius:8px; background:rgba(0,0,0,.28); border:1px solid var(--ln); color:#eef1f7; font-size:13px; }
.adm-bp-add input[type=number]{ width:140px; }
.adm-bp-add input[name=skin_name]{ flex:1 1 190px; min-width:150px; }
.adm-bp-add input:focus{ outline:none; border-color:rgba(238,179,81,.5); }

/* ═══ Theming consistency pass (build 375) — pull off-tone page bits into the shared navy+gold theme.
   The base palette (:root) is already global, so this only nudges a few hardcoded spots that drifted
   (mostly the affiliate dashboard) toward the same card tone + gold accent the Rewards page uses. ═══ */
.affx-stat{ background:linear-gradient(180deg,#1c2139,#171c2c) !important; border-color:var(--ln2, rgba(140,160,210,.18)) !important; }
.affx-stat-claim{ background:linear-gradient(180deg,rgba(238,179,81,.12),#171c2c) !important; border-color:rgba(238,179,81,.34) !important; }
.aff-lvl-shield{ color:#f4cd84 !important; background:linear-gradient(180deg,#2e2a1c,#20200f) !important; }
.aff-code-box{ background:rgba(238,179,81,.05) !important; border:1px solid rgba(238,179,81,.14) !important; }

/* ═══ Card polish pass (build 379) — a consistent premium hover-glow on the cards that were still
   flat (coinflip/rustpot lobby cards, affiliate tier + API cards, case result). Border+shadow only,
   no movement, and it doesn't touch each card's own background so nothing clashes. ═══ */
.cf-create-card, .cf-watch-card, .rp-join-card, .rp-map-card, .afflv-card, .affx-apikey-card,
.cs-result-card, .cgc-open-card, .bhw-card {
  transition:box-shadow .17s ease, border-color .17s ease !important; }
.cf-create-card:hover, .cf-watch-card:hover, .rp-join-card:hover, .rp-map-card:hover,
.afflv-card:hover, .affx-apikey-card:hover, .cs-result-card:hover, .bhw-card:hover {
  box-shadow:0 10px 26px rgba(0,0,0,.34), 0 0 0 1px rgba(238,179,81,.24), inset 0 1px 0 rgba(255,255,255,.05) !important;
  border-color:rgba(238,179,81,.3) !important; }
/* affiliate tier rows: the reached tier gets a soft gold wash so progress reads at a glance */
.afflv-row.on{ background:linear-gradient(180deg, rgba(238,179,81,.07), transparent) !important; border-color:rgba(238,179,81,.26) !important; }
.afflv-row{ transition:background .16s ease, border-color .16s ease !important; }

/* ── Raffle create: value-based duration — info button, tier box, disabled options (build 383) ── */
.rfd-info-btn{ width:16px; height:16px; border-radius:50%; border:1px solid rgba(238,179,81,.4); background:rgba(238,179,81,.12); color:#f4cd84; font:italic 800 10px/1 Georgia, serif; cursor:pointer; margin-left:6px; vertical-align:middle; padding:0; display:inline-flex; align-items:center; justify-content:center; }
.rfd-info-btn:hover{ background:rgba(238,179,81,.22); }
.rfd-cmodal-maxnote{ font-size:11px; color:var(--t3); margin-left:8px; font-weight:600; }
.rfd-cmodal-info{ margin:6px 0 10px; padding:10px 12px; background:rgba(0,0,0,.24); border:1px solid var(--ln); border-radius:10px; display:flex; flex-direction:column; gap:3px; }
.rfd-cmodal-info b{ color:#eef1f7; font-size:12px; margin-bottom:2px; }
.rfd-cmodal-info span{ font-size:11.5px; color:var(--t2); }
.rfd-cmodal-hours button.off{ opacity:.32; cursor:not-allowed; text-decoration:line-through; }

/* ── Raffle card: creator avatar + name, overlaid on the bottom of the prize skin (build 387) ── */
.rfd-card{ position:relative !important; }
.rfd-creator{ position:absolute; left:5px; right:5px; bottom:5px; z-index:3; display:flex; align-items:center; gap:4px;
  padding:2px 7px 2px 2px; background:linear-gradient(180deg, rgba(8,10,16,.5), rgba(8,10,16,.92)); border:1px solid rgba(255,255,255,.1); border-radius:999px; -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); }
.rfd-creator-av{ width:17px; height:17px; border-radius:50%; object-fit:cover; flex:0 0 auto; border:1px solid rgba(238,179,81,.5); background:#11151f; }
.rfd-creator-noav{ display:inline-flex; align-items:center; justify-content:center; font-size:9px; font-weight:800; color:#231a05; background:linear-gradient(180deg,#ffd873,#f3b03e); }
.rfd-creator-nm{ font-size:10px; font-weight:700; color:#e6ebf5; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }

/* ── Races: rank 4+ wager & prize amounts → solid readable gold (was faint gradient / gold-green) ── */
.lb-stat-val, .lb-stat-prize .lb-stat-val{ background:none !important; -webkit-background-clip:border-box !important; background-clip:border-box !important; -webkit-text-fill-color:#f4cd84 !important; color:#f4cd84 !important; }

/* ── Rustpot LAST GAMES: winner avatar (build 389) ── */
.rp-recent-l{ display:flex !important; align-items:center !important; }
.rp-recent-av{ width:22px; height:22px; border-radius:50%; object-fit:cover; flex:0 0 auto; margin-right:7px; border:1px solid rgba(238,179,81,.32); background:#11151f; }
.rp-recent-av-fb{ display:inline-flex; align-items:center; justify-content:center; font-size:10px; font-weight:800; color:#231a05; background:linear-gradient(180deg,#ffd873,#f3b03e); }

/* ── @-mention picker: Steam avatars (build 390) ── */
.chat-mention-item{ display:flex !important; align-items:center !important; gap:8px !important; }
.cm-av{ width:22px; height:22px; border-radius:50%; object-fit:cover; flex:0 0 auto; border:1px solid rgba(238,179,81,.25); background:#11151f; }
.cm-av-fb{ display:inline-flex; align-items:center; justify-content:center; font-size:10px; font-weight:800; color:#231a05; background:linear-gradient(180deg,#ffd873,#f3b03e); }

/* ═══ Rewards page beautify (build 390) — rakeback cards + tiers table ═══ */
.rb-card{ position:relative; overflow:hidden; background:linear-gradient(180deg, rgba(255,255,255,.035), rgba(0,0,0,.06)) !important;
  border:1px solid var(--ln) !important; transition:border-color .16s ease, box-shadow .16s ease !important; }
.rb-card::before{ content:""; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg,#f3b03e,#ffd873); opacity:.9; }
.rb-card:hover{ border-color:rgba(238,179,81,.32) !important; box-shadow:0 12px 30px rgba(0,0,0,.36) !important; }
.rb-daily::before{ background:linear-gradient(90deg,#4fb3c4,#3fd0e0) !important; }
.rb-weekly::before{ background:linear-gradient(90deg,#8578dd,#a78bff) !important; }
.rb-monthly::before{ background:linear-gradient(90deg,#f3b03e,#ffd873) !important; }
.rb-amount{ text-shadow:0 0 14px rgba(238,179,81,.25); }
.rb-table{ width:100%; border-collapse:collapse; }
.rb-table th{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--t3); padding:9px 10px; border-bottom:1px solid var(--ln); text-align:center; }
.rb-table th:first-child{ text-align:left; }
.rb-table td{ padding:9px 10px; text-align:center; font-size:13px; color:#dbe0ec; border-bottom:1px solid rgba(255,255,255,.045); font-weight:700; }
.rb-table td:first-child{ text-align:left; color:var(--t2); }
.rb-table tr:last-child td{ border-bottom:none; }
.rb-tr-you td{ background:linear-gradient(90deg, rgba(238,179,81,.1), transparent) !important; color:#ffe6b0 !important; }
.rb-tr-you td:first-child{ color:#f4cd84 !important; }
.rb-you-tag{ display:inline-block; font-size:9px; font-weight:800; text-transform:uppercase; color:#231a05; background:linear-gradient(180deg,#ffd873,#f3b03e); padding:1px 5px; border-radius:4px; margin-left:6px; vertical-align:middle; }

/* ── Champion: loser side no longer darkens/greys out on the win transition (user request) ── */
.player-panel.loser{ opacity:1 !important; filter:none !important; }
/* ── Champion: the ELIMINATED fighter must LEAVE immediately (not dim → re-brighten → linger in the seat).
   Applied to the loser right after the kill; cleared automatically when a fresh fighter fills the seat. ── */
/* The beaten fighter's PERSON leaves (avatar + name + HP fade/drop away) but the SEAT itself stays — the
   frame + Challenger badge remain so the spot reads as EMPTY, not gone (user: "that spot should look empty, don't fully
   remove it"). The proper "Waiting for challenger" placeholder then fills in on the next state refresh. */
.player-panel.champ-out{ pointer-events:none !important; }
.player-panel.champ-out .char-display,
.player-panel.champ-out .player-name,
.player-panel.champ-out .health-section{ opacity:0 !important; transform:translateY(22px) scale(.9) !important; transition:opacity .42s ease, transform .42s ease !important; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .player-panel.champ-out .char-display, .player-panel.champ-out .player-name, .player-panel.champ-out .health-section{ transition:none !important; } }

/* ═══ Responsive fix (build 394): chat FAB bottom-LEFT on small screens (raffle FAB is bottom-right).
   Authoritative — overrides the older layered chat-toggle rules so the two FABs never collide. ═══ */
@media (max-width: 980px){
  .chat-toggle{
    position:fixed !important; left:14px !important; right:auto !important; bottom:14px !important; top:auto !important;
    transform:none !important; flex-direction:row !important; width:auto !important; height:auto !important; min-height:0 !important;
    padding:11px 16px !important; border-radius:999px !important; writing-mode:horizontal-tb !important; text-orientation:mixed !important;
    z-index:942 !important; box-shadow:0 6px 18px rgba(0,0,0,.42) !important; border:1px solid rgba(255,255,255,.16) !important; }
  .chat-toggle .chat-label, .chat-toggle .chat-icon{ writing-mode:horizontal-tb !important; }
  .chat-toggle .chat-icon{ font-size:16px !important; }
  /* when the chat is open on mobile, hide its own FAB so it doesn't sit over the panel */
  body.chat-open .chat-toggle{ opacity:0 !important; pointer-events:none !important; }
  /* safe-area bottom offset so the FABs clear iPhone home bars */
  .chat-toggle{ bottom: calc(14px + env(safe-area-inset-bottom)) !important; }
}

/* ═══ Responsive tiers (build 399) ═══
   ≥1201px : chat docked LEFT + raffle docked RIGHT (both open)
   981–1200: chat docked LEFT (open) + raffle collapses to a bottom-right FAB (raffle goes first)
   ≤980px  : chat = bottom-left FAB + raffle = bottom-right FAB (both collapse)
   This authoritative block keeps the chat a docked left sidebar down to 981px, overriding the older
   ≤1099px "chat becomes a bottom drawer" rules for the 981–1200 range so only the raffle collapses there. */
@media (min-width:1401px){
  .chat-drawer{ position:fixed !important; left:0 !important; right:auto !important;
    top:var(--topbar-h, 56px) !important; bottom:0 !important; width:344px !important; max-width:88vw !important;
    height:auto !important; max-height:none !important; transform:translateX(0) !important; z-index:90 !important;
    border-radius:0 !important; border-left:0 !important; border-right:1px solid var(--rust-ln2, rgba(140,160,210,.12)) !important; }
  .chat-drawer.closed{ transform:translateX(0) !important; }   /* docked — never hidden ≥1301px */
  body:not(.chat-off) main.page{ margin-left:344px !important; margin-right:auto !important; }
  body.chat-off main.page{ margin-left:auto !important; }         /* chat disabled → no empty left gap */
  .chat-toggle, #chatClose{ display:none !important; }         /* a docked chat can't be closed */
}

/* ── Steam task "every 24h" badge (build 401) ── */
.rr-task{ position:relative; }
.rr-task-badge{ position:absolute; top:10px; right:10px; z-index:2; font:800 9.5px var(--fu, sans-serif); text-transform:uppercase; letter-spacing:.04em;
  color:#66c0f4; background:rgba(102,192,244,.12); border:1px solid rgba(102,192,244,.3); padding:2px 7px; border-radius:999px; }

/* ── Chat header (Online / Chat Rules / clear) moved to the BOTTOM of the chat (build 401) ── */
.chat-panel > .chat-head{ order:10 !important; border-bottom:0 !important; border-top:1px solid var(--ln) !important; margin-top:0 !important; }

/* ── Backpack skin picker: show the coin value prominently (like the raffle picker) (build 403) ── */
.cm-val{ display:flex; align-items:center; justify-content:center; gap:4px; margin-top:5px; font:800 13px var(--fd, inherit); color:#ffe6b0; text-shadow:0 0 10px rgba(238,179,81,.25); }
.cm-val .coin-ico{ width:13px; height:13px; flex:0 0 auto; }

/* ── Races: Previous Races button + modal (build 404) ── */
.rc-topbar{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.rc-prev-btn{ display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:10px; cursor:pointer;
  background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(0,0,0,.1)); border:1px solid var(--ln); color:var(--t2); font:800 12.5px var(--fu,sans-serif);
  transition:border-color .16s ease, color .16s ease, box-shadow .16s ease; }
.rc-prev-btn:hover{ border-color:rgba(238,179,81,.4); color:#f4cd84; box-shadow:0 6px 16px rgba(0,0,0,.3); }
.rc-prev-btn svg{ flex:0 0 auto; }
.rc-prev-modal{ position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; padding:20px; }
.rc-prev-overlay{ position:absolute; inset:0; background:rgba(4,6,12,.72); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.rc-prev-card{ position:relative; z-index:1; width:min(560px,94vw); max-height:82vh; overflow-y:auto;
  background:linear-gradient(180deg,#1c2139,#141827); border:1px solid var(--ln); border-radius:16px; padding:20px; box-shadow:0 24px 60px rgba(0,0,0,.6); }
.rc-prev-card h3{ margin:0 0 14px; color:#f4cd84; font-size:17px; }
.rc-prev-close{ position:absolute; top:12px; right:12px; width:30px; height:30px; border-radius:8px; border:1px solid var(--ln); background:rgba(255,255,255,.05); color:var(--t2); cursor:pointer; font-size:14px; }
.rc-prev-close:hover{ color:#fff; }
.rc-prev-list{ display:flex; flex-direction:column; gap:10px; }
.rc-prev-empty{ color:var(--t3); font-size:13px; text-align:center; padding:20px; }
.rc-prev-row{ padding:11px 13px; background:rgba(0,0,0,.2); border:1px solid var(--ln); border-radius:11px; }
.rc-prev-when{ font-size:11.5px; color:var(--t3); font-weight:700; margin-bottom:7px; display:flex; align-items:center; gap:4px; }
.rc-prev-when .coin-ico{ width:12px; height:12px; }
.rc-prev-winners{ display:flex; flex-direction:column; gap:4px; }
.rc-prev-w{ font-size:12.5px; color:#dbe0ec; display:flex; align-items:center; gap:6px; }
.rc-prev-w b{ color:#f4cd84; min-width:26px; }
.rc-prev-prize{ margin-left:auto; color:#ffe6b0; font-weight:800; display:inline-flex; align-items:center; gap:3px; }
.rc-prev-prize .coin-ico{ width:12px; height:12px; }

/* ── Champion arena: keep the two fighter seats as EQUAL side-by-side halves when the container gets
   tight (narrow window, docked chat, or 150%+ zoom). The old rule forced a single column (1fr) to
   stack them, but a later build pins the challenger to grid-column 2 / row 1 — so instead of stacking
   it landed in an auto-sized IMPLICIT column and got squished to a sliver, clipping the challenger's
   avatar/ring under .arena{overflow:hidden}. Two equal minmax(0,1fr) tracks fix that at every width. ── */
@media (max-width: 1000px){
  .arena-grid{ grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important; }
  .arena-grid .left-panel, .arena-grid .right-panel{ min-width: 0 !important; }
  .player-panel{ min-height: 0 !important; }
  /* nothing inside a fighter seat may exceed its (now equal) half-width → no residual edge clip */
  .player-panel > *{ max-width: 100%; min-width: 0; }
  .player-panel .seat-badge{ flex-wrap: wrap; justify-content: center; }
}

/* ── Chat footer bar: compact + elegant — ALL buttons pushed to the RIGHT (build 415) ── */
.chat-panel > .chat-head{ padding:7px 11px !important; justify-content:flex-end !important; align-items:center !important; gap:8px !important; min-height:0 !important; }
.chat-panel > .chat-head .chat-clear-btn{ order:-1 !important; margin-right:0 !important; margin-left:0 !important; }   /* trash + trivia → far LEFT, adjacent (both are .chat-clear-btn) */
/* The volume slider starts the right-aligned group; Chat Rules follows it with a small gap. */
.chat-head .chat-vol{ display:inline-flex; align-items:center; margin-left:auto; flex:0 0 auto; position:relative; }
/* Sound collapsed to a hollow icon button (same outline look as Chat Rules); the level opens on click. */
.chat-vol-btn{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; padding:0; cursor:pointer; border:1px solid var(--ln); background:rgba(255,255,255,.05); color:var(--t2); border-radius:8px; flex:0 0 auto; line-height:0; }
.chat-vol-btn:hover, .chat-vol-btn[aria-expanded="true"]{ background:rgba(255,255,255,.08); color:#fff; border-color:var(--ln); }
/* the volume level, revealed on click — a small dark card matching the Chat Rules panel */
.chat-vol-pop{ position:absolute; bottom:calc(100% + 8px); right:0; z-index:40; display:flex; align-items:center; padding:10px 13px; border-radius:10px; background:#14192d; border:1px solid var(--vio-line); box-shadow:0 14px 34px rgba(0,0,0,.5); }
.chat-vol-pop[hidden]{ display:none; }
.chat-vol-pop .chat-vol-range{ width:120px; }

/* ═══ Staff tools: one bottom-right icon in the composer → upward menu (announce / clear / trivia) ═══
   These live inside .chat-form, so the blanket ".chat-form button" rules hit them — hence the
   high-specificity + !important resets so the button matches emoji/send and the items read as a menu. */
.chat-staff{ position:relative; flex:0 0 auto; display:inline-flex; order:-1; margin-right:auto; }
.chat-staff .chat-staff-btn{ width:26px !important; min-height:26px !important; height:26px !important; padding:0 !important; border-radius:8px !important; background:var(--vio-soft) !important; color:var(--gold2,#f4cd84) !important; border:1px solid var(--vio-line) !important; display:inline-flex !important; align-items:center; justify-content:center; place-items:center; cursor:pointer; line-height:0; box-shadow:none !important; }
.chat-staff .chat-staff-btn:hover, .chat-staff .chat-staff-btn[aria-expanded="true"]{ border-color:var(--vio-line) !important; background:#1a2036 !important; }
.chat-staff-menu{ position:absolute; bottom:calc(100% + 8px); left:0; z-index:60; min-width:176px; padding:6px !important; border-radius:12px !important; background:#14192d !important; border:1px solid var(--vio-line) !important; box-shadow:0 18px 40px rgba(0,0,0,.55) !important; display:flex; flex-direction:column; gap:2px; width:auto !important; min-height:0 !important; }
.chat-staff-menu[hidden]{ display:none; }
.chat-staff-title{ font:800 10.5px var(--fu,system-ui); letter-spacing:.08em; text-transform:uppercase; color:var(--t3) !important; padding:5px 9px 6px; }
.chat-staff .chat-staff-item{ display:flex !important; align-items:center; gap:9px; width:100% !important; min-height:0 !important; height:auto !important; padding:8px 10px !important; border:0 !important; background:transparent !important; color:var(--t2) !important; font:600 12.5px system-ui,sans-serif !important; text-align:left; border-radius:8px !important; cursor:pointer; box-shadow:none !important; place-items:initial !important; }
.chat-staff .chat-staff-item svg{ flex:0 0 auto; width:15px !important; height:15px !important; color:var(--gold2,#f4cd84) !important; }
.chat-staff .chat-staff-item:hover{ background:var(--vio-soft) !important; color:#fff !important; }
.chat-staff-emoji{ font-size:15px; width:16px; display:inline-flex; justify-content:center; flex:0 0 auto; }
.chat-staff .chat-staff-btn svg{ width:16px !important; height:16px !important; }
/* View cooldown: the button shows a live 3s/2s/1s count instead of a toast */
/* ── IZLEME DUGMELERI: ORTAK GERI SAYIM ─────────────────────────────────────────────────────────
   Bir View'a basildiginda TUM izleme dugmeleri ayni anda 3'ten geri sayar. Sayi CSS sayacindan
   geliyor (--rr-vcd), yani hicbir dugmenin innerHTML'ine dokunulmuyor — canli listeler yeniden
   cizildiginde bozulacak bir sey yok. Tiklanan dugme kendi icinde sayar (JS), digerleri burada. */
body.rr-view-cd{ counter-reset: rrvcd var(--rr-vcd, 3); }
body.rr-view-cd .cf-watch-btn,
body.rr-view-cd .cgc-watch,
body.rr-view-cd .champ-game-watch,
body.rr-view-cd .rp-watch,
body.rr-view-cd .bh-watch{
  pointer-events:none; opacity:.7; cursor:not-allowed; position:relative; color:transparent !important;
}
/* Orijinal etiket saydam, sayi ustune biniyor: dugme genisligi degismiyor, liste ziplamiyor. */
body.rr-view-cd .cf-watch-btn::after,
body.rr-view-cd .cgc-watch::after,
body.rr-view-cd .champ-game-watch::after,
body.rr-view-cd .rp-watch::after,
body.rr-view-cd .bh-watch::after{
  content: counter(rrvcd) "s";
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:#f4cd84; font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:.02em;
}
/* Tiklanan dugme JS ile kendi sayiyor; CSS katmanini onun uzerinde CIFT gostermeyelim. */
body.rr-view-cd .view-cooldown{ color:inherit !important; }
body.rr-view-cd .view-cooldown::after{ content:none; }

.view-cooldown{ opacity:.7 !important; cursor:not-allowed !important; }
.view-cooldown .cd-num{ font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:.02em; }

/* ═══ Language selector + chat-header order (item 6: language → online → chat rules → sound; close pinned right) ═══ */
.chat-head{ display:flex; align-items:center; }
.chat-head .chat-lang{ position:relative; flex:0 0 auto; order:-1; margin-right:auto; }
.chat-head #chatOnline{ order:1; }
.chat-head #chatRulesBtn{ order:3; }
.chat-head #chatVol{ order:4; margin-left:0 !important; }
.chat-head #creatorOpenBtn{ order:5; }
.chat-head .chat-head-actions{ order:9; }
.chat-lang-btn svg{ width:17px !important; height:17px !important; }
.chat-panel > .chat-head .chat-lang-btn svg{ width:14px !important; height:14px !important; }
.chat-lang-btn{ display:inline-flex; align-items:center; gap:4px; cursor:pointer; border:1px solid var(--ln); background:rgba(255,255,255,.05); color:var(--t2); border-radius:8px; padding:4px 9px; font-size:.74rem; font-weight:800; flex:0 0 auto; line-height:1; }
.chat-lang-btn:hover, .chat-lang-btn[aria-expanded="true"]{ background:rgba(255,255,255,.08); color:#fff; border-color:var(--ln); }
.chat-lang-menu{ position:absolute; bottom:calc(100% + 8px); left:0; z-index:60; min-width:132px; padding:6px; border-radius:10px; background:#14192d; border:1px solid var(--vio-line); box-shadow:0 14px 34px rgba(0,0,0,.5); display:flex; flex-direction:column; gap:2px; }
.chat-lang-menu[hidden]{ display:none; }
.chat-lang-item{ display:block; width:100%; text-align:left; padding:7px 10px; border:0; background:transparent; color:var(--t2); font:600 12.5px system-ui,sans-serif; border-radius:7px; cursor:pointer; }
.chat-lang-item:hover{ background:var(--vio-soft); color:#fff; }
.chat-vol-range{ -webkit-appearance:none; appearance:none; width:62px; height:4px; border-radius:999px; cursor:pointer; outline:none; flex:0 0 auto;
  background:linear-gradient(90deg, var(--gold2,#f4cd84) 0 var(--vol,85%), rgba(255,255,255,.15) var(--vol,85%) 100%); }
.chat-vol-range::-webkit-slider-thumb{ -webkit-appearance:none; appearance:none; width:12px; height:12px; border-radius:50%; background:var(--gold2,#f4cd84); border:2px solid rgba(18,13,7,.9); box-shadow:0 1px 4px rgba(0,0,0,.5); cursor:pointer; }
.chat-vol-range::-moz-range-thumb{ width:11px; height:11px; border:2px solid rgba(18,13,7,.9); border-radius:50%; background:var(--gold2,#f4cd84); cursor:pointer; }
.chat-vol-range::-moz-range-track{ height:4px; border-radius:999px; background:transparent; }
.chat-vol-range:focus-visible{ outline:2px solid rgba(238,179,81,.55); outline-offset:3px; }
.chat-panel > .chat-head .chat-rules-btn{ margin-left:6px !important; }   /* sits right after the volume slider in the right-aligned group */
.chat-panel > .chat-head .chat-online{ margin-right:0 !important; font-size:11.5px !important; }        /* Online → right group */
.chat-panel > .chat-head .chat-rules-btn{ padding:4px 9px !important; font-size:.7rem !important; }     /* Chat Rules → right group, compact */
.chat-panel > .chat-head .chat-lang-btn{ padding:4px 9px !important; font-size:.7rem !important; }     /* Language selector → identical size to Chat Rules (consistency) */
.chat-panel > .chat-head .chat-rules-btn, .chat-panel > .chat-head .chat-lang-btn{ height:28px !important; min-height:28px !important; box-sizing:border-box !important; align-items:center !important; }
.chat-panel > .chat-head .chat-rules-btn svg{ width:14px !important; height:14px !important; }
.chat-panel > .chat-head .chat-head-actions{ margin-left:0 !important; }                                /* close (mobile) stays in the right group */

/* ── Fairness round-history: copy button next to each hash (build 417) ── */
.fair-hash-row{ display:flex; align-items:flex-start; gap:6px; }
.fair-hash-row .fair-hash{ flex:1 1 auto; min-width:0; }
.fair-hash-row .fair-copy{ flex:0 0 auto; margin-left:0 !important; margin-top:1px; }

/* ── Market bulk-select tray (build 424) ── */
.mkt-bulk-bar{ position:fixed; left:0; right:0; bottom:0; z-index:996; display:flex; gap:12px; align-items:center;
  padding:13px clamp(12px,3vw,28px); background:linear-gradient(180deg,rgba(16,19,30,.96),rgba(11,13,20,.98));
  border-top:1px solid rgba(238,179,81,.3); box-shadow:0 -8px 26px rgba(0,0,0,.45); backdrop-filter:blur(8px);
  transform:translateY(115%); transition:transform .34s cubic-bezier(.2,.85,.3,1); pointer-events:none; }
.mkt-bulk-bar.open{ transform:translateY(0); pointer-events:auto; }
.mbb-items{ display:flex; gap:7px; overflow-x:auto; flex:1 1 auto; padding:2px; }
.mbb-chip{ position:relative; flex:0 0 auto; display:inline-flex; flex-direction:column; align-items:center; gap:2px;
  padding:5px 8px 4px; border:1px solid rgba(140,160,210,.25); border-radius:9px; background:rgba(255,255,255,.04); cursor:pointer; transition:border-color .15s,background .15s; }
.mbb-chip:hover{ border-color:rgba(239,68,68,.55); background:rgba(239,68,68,.12); }
.mbb-chip img{ width:40px; height:40px; object-fit:contain; }
.mbb-chip-c{ font-size:11px; font-weight:700; color:#f0e0bf; white-space:nowrap; }
.mbb-x{ position:absolute; top:-6px; right:-6px; width:16px; height:16px; border-radius:50%; background:#2b3346; color:#fff; font-size:9px; display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity .15s; }
.mbb-chip:hover .mbb-x{ opacity:1; }
.mbb-side{ display:flex; align-items:center; gap:10px; flex:0 0 auto; }
.mbb-total{ font-size:13px; color:var(--t2,#aeb6cf); font-weight:600; display:flex; align-items:center; gap:4px; }
.mbb-total b{ color:#f4cd84; font-size:15px; }
.mbb-count{ color:var(--t3,#8b93ab); font-weight:500; }
.mbb-buy{ padding:9px 18px; border:0; border-radius:9px; font-weight:800; font-size:13px; cursor:pointer; color:#241803; background:linear-gradient(135deg,#ffd564,#eeb351); transition:filter .15s; }
.mbb-buy:hover{ filter:brightness(1.07); } .mbb-buy:disabled{ opacity:.6; cursor:default; }
.mbb-clear{ padding:9px 12px; border:1px solid rgba(140,160,210,.25); border-radius:9px; background:transparent; color:var(--t2,#aeb6cf); font-weight:600; font-size:12px; cursor:pointer; }
.mbb-clear:hover{ border-color:rgba(239,68,68,.5); color:#fca5a5; }
.skin-card.sk-selected{ outline:2px solid #eeb351; outline-offset:1px; box-shadow:0 0 0 4px rgba(238,179,81,.18); }
.skin-card:not(.sk-selected):hover{ outline:1px solid rgba(238,179,81,.3); outline-offset:1px; }   /* faint hint that a card is click-to-select */
.skin-card{ position:relative; }
.sk-qty{ position:absolute; top:6px; right:6px; z-index:3; min-width:20px; height:20px; padding:0 5px; border-radius:10px; background:#eeb351; color:#241803; font-weight:800; font-size:11px; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 6px rgba(0,0,0,.55); pointer-events:none; }
.mbb-qty{ position:absolute; top:3px; left:3px; min-width:18px; height:18px; padding:0 4px; border-radius:9px; background:#eeb351; color:#241803; font-size:10.5px; font-weight:800; display:flex; align-items:center; justify-content:center; z-index:2; box-shadow:0 1px 3px rgba(0,0,0,.4); }
body.mkt-has-bulk .site-footer{ margin-bottom:96px !important; }
/* Float the chat + raffle action buttons above the tray so it never covers them */
body.mkt-has-bulk .chat-toggle, body.mkt-has-bulk .rfd-mtoggle{ bottom:84px !important; }
body.mkt-has-bulk .rfd-toggle-wrap{ bottom:90px !important; }
@media (max-width:560px){ .mkt-bulk-bar{ gap:8px; padding:8px 12px; } .mbb-chip img{ width:32px; height:32px; } .mbb-total{ font-size:12px; } .mbb-total b{ font-size:13px; } .mbb-count{ display:none; } .mbb-buy{ padding:8px 12px; font-size:12px; white-space:nowrap; } .mbb-clear{ display:none; } }

/* ── AI Live Support (build 432) ── */
.sup-btn{ position:relative; display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:10px; border:1px solid rgba(140,160,210,.16); background:rgba(255,255,255,.03); color:var(--t2,#aeb6cf); cursor:pointer; transition:background .15s, border-color .15s, color .15s; }
.sup-btn:hover{ background:rgba(238,179,81,.12); border-color:rgba(238,179,81,.4); color:#ffe6b0; }
.sup-btn .sup-ico svg{ width:20px; height:20px; }
.sup-live-dot{ position:absolute; top:6px; right:6px; width:7px; height:7px; border-radius:50%; background:#38d16a; box-shadow:0 0 0 2px rgba(16,19,30,.9), 0 0 6px rgba(56,209,106,.8); animation:supPulse 2s infinite; }
@keyframes supPulse{ 0%,100%{ opacity:1; } 50%{ opacity:.4; } }
.sup-panel{ position:fixed; bottom:20px; right:20px; z-index:1000; width:370px; max-width:calc(100vw - 32px); height:520px; max-height:calc(100vh - 100px); display:flex; flex-direction:column; border-radius:16px; overflow:hidden; background:linear-gradient(180deg,rgba(20,24,37,.98),rgba(14,17,27,.99)); border:1px solid rgba(238,179,81,.28); box-shadow:0 20px 60px rgba(0,0,0,.55); backdrop-filter:blur(10px); animation:supIn .28s cubic-bezier(.2,.85,.3,1); }
@keyframes supIn{ from{ opacity:0; transform:translateY(16px) scale(.98); } to{ opacity:1; transform:none; } }
.sup-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; border-bottom:1px solid rgba(140,160,210,.12); background:linear-gradient(180deg,rgba(238,179,81,.1),transparent); }
.sup-head-l{ display:flex; align-items:center; gap:10px; }
.sup-head-ico{ display:inline-flex; width:34px; height:34px; align-items:center; justify-content:center; border-radius:9px; background:rgba(238,179,81,.16); color:#f4cd84; }
.sup-head-ico svg{ width:19px; height:19px; }
.sup-head-title{ font-weight:800; font-size:14px; color:var(--t1,#e8ecf7); }
.sup-head-sub{ font-size:11px; color:var(--t3,#8b93ab); }
.sup-close{ width:30px; height:30px; border:0; background:transparent; color:var(--t2,#aeb6cf); font-size:14px; cursor:pointer; border-radius:8px; }
.sup-close:hover{ background:rgba(255,255,255,.06); color:#fff; }
.sup-body{ flex:1; overflow-y:auto; padding:14px; display:flex; flex-direction:column; gap:10px; scrollbar-width:thin; scrollbar-color:rgba(238,179,81,.5) transparent; }
.sup-msg{ display:flex; } .sup-msg.sup-user{ justify-content:flex-end; }
.sup-bubble{ max-width:82%; padding:9px 12px; border-radius:13px; font-size:13.5px; line-height:1.45; word-wrap:break-word; }
.sup-bot .sup-bubble{ background:rgba(255,255,255,.05); color:var(--t1,#e8ecf7); border:1px solid rgba(140,160,210,.12); border-bottom-left-radius:4px; }
.sup-user .sup-bubble{ background:linear-gradient(135deg,#ffd564,#eeb351); color:#241803; font-weight:600; border-bottom-right-radius:4px; }
.sup-typing{ display:inline-flex; gap:4px; align-items:center; }
.sup-typing span{ width:6px; height:6px; border-radius:50%; background:rgba(238,179,81,.8); animation:supBounce 1.1s infinite; }
.sup-typing span:nth-child(2){ animation-delay:.15s; } .sup-typing span:nth-child(3){ animation-delay:.3s; }
@keyframes supBounce{ 0%,60%,100%{ transform:translateY(0); opacity:.5; } 30%{ transform:translateY(-4px); opacity:1; } }
.sup-inputbar{ display:flex; align-items:flex-end; gap:8px; padding:10px 12px; border-top:1px solid rgba(140,160,210,.12); background:rgba(0,0,0,.2); }
.sup-inputbar textarea{ flex:1; resize:none; max-height:100px; padding:9px 12px; border-radius:10px; border:1px solid rgba(140,160,210,.2); background:rgba(255,255,255,.04); color:var(--t1,#e8ecf7); font:inherit; font-size:13.5px; line-height:1.4; outline:none; }
.sup-inputbar textarea:focus{ border-color:rgba(238,179,81,.5); }
.sup-send{ flex:0 0 auto; width:38px; height:38px; border:0; border-radius:10px; background:linear-gradient(135deg,#ffd564,#eeb351); color:#241803; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:filter .15s; }
.sup-send:hover{ filter:brightness(1.08); } .sup-send:disabled{ opacity:.6; cursor:default; }
.sup-send svg{ width:18px; height:18px; }
@media (max-width:480px){ .sup-panel{ bottom:0; right:0; left:0; width:100%; max-width:100%; height:100%; max-height:100%; border-radius:0; } }
.sup-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-top:2px; }
.sup-chip{ padding:6px 11px; border-radius:14px; border:1px solid rgba(238,179,81,.35); background:rgba(238,179,81,.08); color:#f0e0bf; font-size:12px; font-weight:600; cursor:pointer; transition:background .15s, border-color .15s; }
.sup-chip:hover{ background:rgba(238,179,81,.18); border-color:rgba(238,179,81,.6); }
.sup-head-actions{ display:flex; align-items:center; gap:2px; }
.sup-clear{ width:30px; height:30px; border:0; background:transparent; color:var(--t3,#8b93ab); cursor:pointer; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; }
.sup-clear:hover{ background:rgba(239,68,68,.12); color:#fca5a5; }
.sup-clear svg{ width:16px; height:16px; }

/* Market bulk tray: only as wide as the CENTER column (not under the chat / raffle rails) — build 439 */
@media (min-width:1100px){
  .mkt-bulk-bar{ left:344px; right:16px; border-radius:14px 14px 0 0; }
  body.rfd-open .mkt-bulk-bar{ right:344px; }
  body.chat-off .mkt-bulk-bar{ left:16px; }
}

/* ── Provably-fair user seed panel (build 443) ── */
.fair-seeds{ max-width:900px; margin:0 auto 22px; padding:20px 22px; border-radius:16px; background:linear-gradient(180deg,rgba(20,24,37,.7),rgba(14,17,27,.7)); border:1px solid rgba(238,179,81,.22); }
.fair-seeds-head{ margin-bottom:14px; }
.fair-seeds-head h2{ margin:0 0 4px; font-size:18px; color:var(--t1,#e8ecf7); }
.fair-seeds-sub{ font-size:13px; color:var(--t3,#8b93ab); line-height:1.45; }
.fair-seeds-grid{ display:grid; grid-template-columns:1fr 1fr auto; gap:14px; margin-bottom:16px; }
.fair-seed-field{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.fair-seed-field > span{ font-size:11.5px; color:var(--t3,#8b93ab); font-weight:600; }
.fair-seed-nonce{ min-width:90px; }
.fair-seed-val{ padding:9px 11px; border-radius:9px; background:rgba(0,0,0,.28); border:1px solid rgba(140,160,210,.16); overflow-x:auto; }
.fair-seed-val code{ font-size:12.5px; color:#f0e0bf; white-space:nowrap; }
.fair-seed-field input{ padding:9px 11px; border-radius:9px; background:rgba(255,255,255,.04); border:1px solid rgba(140,160,210,.2); color:var(--t1,#e8ecf7); font:inherit; font-size:13px; outline:none; }
.fair-seed-field input:focus{ border-color:rgba(238,179,81,.5); }
.fair-seeds-actions{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.fair-seeds-btn{ padding:10px 18px; border:0; border-radius:10px; font-weight:800; font-size:13px; cursor:pointer; color:#241803; background:linear-gradient(135deg,#ffd564,#eeb351); transition:filter .15s; }
.fair-seeds-btn:hover{ filter:brightness(1.07); } .fair-seeds-btn:disabled{ opacity:.6; cursor:default; }
.fair-seeds-note{ font-size:12px; color:var(--t3,#8b93ab); }
.fair-revealed{ margin-top:16px; padding:14px 16px; border-radius:11px; background:rgba(56,209,106,.07); border:1px solid rgba(56,209,106,.28); font-size:12.5px; color:var(--t2,#aeb6cf); line-height:1.7; }
.fair-revealed b{ color:#8fe3a8; display:block; margin-bottom:6px; }
.fair-revealed code{ color:#f0e0bf; word-break:break-all; }
.fair-revealed-formula{ margin-top:8px; color:var(--t3,#8b93ab); }
.fair-seeds-guest{ text-align:center; color:var(--t3,#8b93ab); padding:18px; }
@media (max-width:640px){ .fair-seeds-grid{ grid-template-columns:1fr; } }

/* Champion staked skins: their OWN tray BELOW the prize-pool box, not on its gold background. (build 448) */
#potSkins.champ-pot-skins-inside{ width:100% !important; max-width:100% !important; box-sizing:border-box !important; margin:10px auto 0 !important; padding:8px 10px !important; justify-content:center !important; background:rgba(0,0,0,.18) !important; border:1px solid rgba(140,160,210,.1) !important; border-radius:12px !important; }
#potSkins.champ-pot-skins-inside:empty{ display:none !important; }
#potSkins .cps-grid{ width:100% !important; margin:0 auto !important; justify-content:center !important; }

/* Chat game card: winner hidden until the viewer has watched the reveal (no spoiler). build 449 */
.cgc-win.cgc-spoiler-hidden{ color:var(--t3,#8b93ab); font-style:italic; font-weight:500; }

/* Distinct pills for each system broadcaster (announcement / races / bonus / mod) + a money-green TIP
   pill so it no longer looks identical to the gold raffle pill. (build 450) */
.chat-sys-tag{ display:inline-flex; align-items:center; padding:1px 9px; border-radius:7px; font:800 10.5px/1.5 var(--fu, sans-serif); letter-spacing:.1em; text-transform:uppercase; }
.chat-sys-tag-announcement, .chat-sys-tag-races, .chat-sys-tag-bonus, .chat-sys-tag-mod{ color:var(--gold2); border:1px solid rgba(238,179,81,.5); background:rgba(238,179,81,.13); }
.chat-tag-tip{ color:#8fe3a8; border:1px solid rgba(80,210,120,.55); background:rgba(80,210,120,.12); }

/* Icons inside the rain / tip / raffle chat pills (build 454) */
.chat-tag svg{ width:12px; height:12px; margin-right:4px; flex:0 0 auto; }
.chat-sys-tag svg{ width:12px; height:12px; margin-right:4px; flex:0 0 auto; }

/* Races: drifting embers/dust rising through the background — subtle animated Rust ambience (build 454) */
.rc-embers{ position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.rc-embers i{ position:absolute; bottom:-14px; width:5px; height:5px; border-radius:50%;
  background:radial-gradient(circle, rgba(244,205,132,.75), rgba(238,179,81,0) 70%);
  animation:rcEmber linear infinite; will-change:transform, opacity; }
@keyframes rcEmber{
  0%{ transform:translateY(0) translateX(0) scale(.5); opacity:0; }
  10%{ opacity:.85; }
  85%{ opacity:.45; }
  100%{ transform:translateY(-112%) translateX(var(--dx,12px)) scale(1.15); opacity:0; }
}
.rc-embers i:nth-child(1){ left:6%;  --dx:18px;  width:4px; height:4px; animation-duration:11s;   animation-delay:0s; }
.rc-embers i:nth-child(2){ left:14%; --dx:-14px; width:6px; height:6px; animation-duration:14s;   animation-delay:2.4s; }
.rc-embers i:nth-child(3){ left:22%; --dx:10px;  width:3px; height:3px; animation-duration:9s;    animation-delay:1.1s; }
.rc-embers i:nth-child(4){ left:30%; --dx:-20px; width:5px; height:5px; animation-duration:13s;   animation-delay:3.6s; }
.rc-embers i:nth-child(5){ left:38%; --dx:16px;  width:4px; height:4px; animation-duration:10s;   animation-delay:0.8s; }
.rc-embers i:nth-child(6){ left:46%; --dx:-10px; width:7px; height:7px; animation-duration:15s;   animation-delay:4.2s; }
.rc-embers i:nth-child(7){ left:54%; --dx:14px;  width:3px; height:3px; animation-duration:8.5s;  animation-delay:2s; }
.rc-embers i:nth-child(8){ left:62%; --dx:-18px; width:5px; height:5px; animation-duration:12s;   animation-delay:5s; }
.rc-embers i:nth-child(9){ left:70%; --dx:12px;  width:4px; height:4px; animation-duration:11.5s; animation-delay:1.6s; }
.rc-embers i:nth-child(10){ left:78%; --dx:-16px; width:6px; height:6px; animation-duration:13.5s; animation-delay:3s; }
.rc-embers i:nth-child(11){ left:86%; --dx:10px;  width:3px; height:3px; animation-duration:9.5s;  animation-delay:0.4s; }
.rc-embers i:nth-child(12){ left:92%; --dx:-12px; width:5px; height:5px; animation-duration:14.5s; animation-delay:4.6s; }
.rc-embers i:nth-child(13){ left:10%; --dx:8px;   width:3px; height:3px; animation-duration:10.5s; animation-delay:6s; }
.rc-embers i:nth-child(14){ left:50%; --dx:-8px;  width:4px; height:4px; animation-duration:12.5s; animation-delay:6.8s; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .rc-embers{ display:none; } }

/* Rain / tip / raffle broadcaster icons in the avatar slot — hollow, all the ONE Rust-gold so a coin
   rain, a ticket rain, a raffle and a tip read as the SAME family everywhere (not blue here, green there).
   Matches the unified gold banner + tags below; only the icon shape and the label word differ. */
.chat-sys-ico-rain{ color:var(--gold2); }
.chat-sys-ico-tip{ color:var(--gold2); }
.chat-sys-ico-raffle{ color:var(--gold2); }
.chat-av .chat-sys-ico-rain svg, .chat-av .chat-sys-ico-tip svg, .chat-av .chat-sys-ico-raffle svg{ width:18px; height:18px; }

/* Premium touch: soft coloured glow on the broadcaster badges + avatar icons (build 461) */
.chat-sys-tag{ box-shadow: 0 0 11px -4px currentColor; }
.chat-av .chat-sys-ico{ filter: drop-shadow(0 0 3px rgba(255,255,255,.18)); }
.chat-av .chat-sys-ico-rain, .chat-av .chat-sys-ico-tip, .chat-av .chat-sys-ico-raffle{ filter: drop-shadow(0 0 5px currentColor); }

/* ══ Visual polish (build 461) — additive, no layout changes ══════════════════════════════════════ */
/* themed text selection (was the browser default blue) */
::selection{ background:rgba(238,179,81,.30); color:#fff; text-shadow:none; }
::-moz-selection{ background:rgba(238,179,81,.30); color:#fff; text-shadow:none; }
/* keyboard-focus ring that matches the gold theme (polish + accessibility) */
:focus-visible{ outline:2px solid rgba(238,179,81,.55); outline-offset:2px; border-radius:5px; }
/* primary CTA: the glow now GROWS as the button lifts, and a crisp press state */
.btn-primary{ transition:transform .16s, filter .16s, opacity .18s, box-shadow .24s ease; }
.btn-primary:hover:not(:disabled){ box-shadow:0 10px 26px var(--pg), inset 0 1px 0 rgba(255,255,255,.14); }
.btn-primary:active:not(:disabled){ transform:translateY(0) scale(.99); filter:brightness(1.04); }

/* Rain / tip / raffle badge pills — coloured to match their avatar icons (build 463) */
.chat-sys-tag-rain, .chat-sys-tag-tip, .chat-sys-tag-raffle{ color:var(--gold2); border:1px solid rgba(238,179,81,.5); background:rgba(238,179,81,.10); }

/* ══ Unified Rust-gold look for ALL system broadcasters (rain/tip/raffle/announcement): SAME colour,
   SAME design — a nice gold/rust banner. Only the hollow icon + the label word differ. (build 465) ══ */
.chat-messages .chat-message.chat-message-announcement,
.chat-messages .chat-message.chat-message-rain,
.chat-messages .chat-message.chat-message-tip,
.chat-messages .chat-message.chat-message-trivia,
.chat-messages .chat-message.chat-message-raffle{
  border-radius:11px !important; margin-top:7px !important; padding:9px 11px 9px 13px !important;
  background:linear-gradient(100deg, rgba(238,179,81,.19), rgba(122,45,18,.12) 55%, rgba(238,179,81,.05)) !important;
  border:1px solid rgba(238,179,81,.36) !important;
  box-shadow:inset 3px 0 0 var(--gold2,#f4cd84), inset 0 0 22px rgba(238,179,81,.06), 0 2px 10px rgba(0,0,0,.28) !important;
}
/* icon + label + body text all in the ONE unified gold */
.chat-message-announcement .chat-sys-ico, .chat-message-rain .chat-sys-ico, .chat-message-tip .chat-sys-ico, .chat-message-trivia .chat-sys-ico, .chat-message-raffle .chat-sys-ico{ color:var(--gold2) !important; }
.chat-message-announcement .chat-body, .chat-message-rain .chat-body, .chat-message-tip .chat-body, .chat-message-trivia .chat-body, .chat-message-raffle .chat-body{ background:none !important; border:0 !important; }
.chat-message-announcement .chat-body p, .chat-message-rain .chat-body p, .chat-message-tip .chat-body p, .chat-message-trivia .chat-body p, .chat-message-raffle .chat-body p{ color:var(--gold2) !important; }
/* every broadcaster's label pill is the SAME gold badge */
.chat-sys-tag-rain, .chat-sys-tag-tip, .chat-sys-tag-raffle, .chat-sys-tag-announcement, .chat-sys-tag-races, .chat-sys-tag-bonus, .chat-sys-tag-mod{
  color:var(--gold2) !important; border:1px solid rgba(238,179,81,.5) !important; background:rgba(238,179,81,.13) !important;
}

/* Rust wasteland silhouette scene along the bottom of the Races background (build 464) */
.rc-scape{ position:absolute; left:0; right:0; bottom:0; width:100%; height:min(44%,240px); opacity:.5; pointer-events:none; z-index:0; }

/* "Create a Raffle" button — a touch smaller + more refined (build 468) */
.rfd-create-btn{ padding:4px 9px !important; font:800 11px var(--fu) !important; gap:4px !important; border-radius:8px !important; }
.rfd-create-btn svg{ width:12px !important; height:12px !important; }

/* Champion / Challenger badges: centred over the panel (aligned with the avatar) + a bold Rust look (build 468) */
.player-panel .seat-badge{ justify-content:center !important; text-align:center; }
.player-panel .seat-badge b{ font-family:var(--fd) !important; font-size:23px !important; letter-spacing:.07em !important; text-transform:uppercase; line-height:1; text-shadow:0 2px 8px rgba(0,0,0,.45); }
.player-panel .seat-badge small{ letter-spacing:.24em !important; font-weight:700; opacity:.85; }

/* (build 474) arena silhouette/haze removed — it read as a stray bar; keeping the clean original arena. */

/* Market bulk-select — now discoverable (build 469): a hint banner + a checkbox affordance on every card */
.mkt-bulk-hint{ display:flex; align-items:center; gap:8px; margin:0 0 12px; padding:8px 12px; border-radius:10px;
  font:600 12.5px var(--fu); color:var(--gold2); background:rgba(238,179,81,.09); border:1px dashed rgba(238,179,81,.32); }
.mkt-bulk-hint svg{ flex:0 0 auto; }
.skin-card{ cursor:pointer; }
.skin-card::after{ content:""; position:absolute; top:8px; left:8px; width:19px; height:19px; border-radius:6px; z-index:5;
  border:2px solid rgba(238,179,81,.5); background:rgba(16,12,8,.55); opacity:0; transition:opacity .15s ease, background .15s ease; pointer-events:none;
  display:flex; align-items:center; justify-content:center; font:900 12px var(--fu); color:#1a120a; }
.skin-card:hover::after{ opacity:.85; }
.skin-card.sk-selected::after{ content:"✓"; opacity:1; background:var(--gold2); border-color:var(--gold2); }

/* Champion: the skin selector ("Select a skin…") + instant-join make the separate Join / "Pick a Skin"
   button redundant — hide it (it's still clicked programmatically by the instant pick). (build 470) */
#joinBtn{ display:none !important; }

/* System-broadcaster icons: a clean, prominent, centred modern hollow icon in the avatar badge (build 470) */
.chat-message-system .chat-av{ display:flex !important; align-items:center; justify-content:center; }
.chat-message-system .chat-av .chat-sys-ico{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; }
.chat-message-system .chat-av .chat-sys-ico svg{ width:16px !important; height:16px !important; }


/* ══ Prediction / ticket-event widget (bottom-right) — build 476 ══════════════════════════════════ */
.pred-widget{ position:fixed; right:18px; bottom:96px; width:302px; max-width:calc(100vw - 32px); z-index:205;
  background:linear-gradient(160deg, rgba(30,24,16,.98), rgba(18,14,9,.98)); border:1px solid rgba(238,179,81,.34);
  border-radius:16px; box-shadow:0 14px 40px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05); overflow:hidden;
  font-family:var(--fu); animation:predIn .4s cubic-bezier(.2,.8,.3,1); }
@keyframes predIn{ from{ transform:translateY(20px) scale(.96); opacity:0; } to{ transform:none; opacity:1; } }
.pred-w-head{ display:flex; align-items:center; justify-content:space-between; padding:10px 12px;
  background:linear-gradient(90deg, rgba(238,179,81,.16), rgba(122,45,18,.1)); border-bottom:1px solid rgba(238,179,81,.2); }
.pred-w-title{ display:flex; align-items:center; gap:7px; font:800 12.5px var(--fd); letter-spacing:.06em; text-transform:uppercase; color:var(--gold2); }
.pred-w-min{ background:none; border:0; color:var(--gold2); font-size:20px; line-height:1; cursor:pointer; padding:0 4px; opacity:.75; }
.pred-w-min:hover{ opacity:1; }
.pred-w-body{ padding:12px; }
.pred-w-q{ font-weight:700; font-size:14px; color:var(--t1); line-height:1.3; margin-bottom:4px; }
.pred-w-reward{ font-size:11.5px; color:var(--t2); margin-bottom:10px; }
.pred-w-reward b{ color:var(--gold2); }
.pred-w-opts{ display:flex; flex-direction:column; gap:7px; }
.pred-opt{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%;
  padding:9px 11px; border-radius:10px; border:1px solid rgba(238,179,81,.2); background:rgba(255,255,255,.03);
  color:var(--t1); font:600 12.5px var(--fu); cursor:pointer; overflow:hidden; text-align:left; transition:border-color .15s, transform .1s; }
.pred-opt:hover:not(:disabled){ border-color:rgba(238,179,81,.5); }
.pred-opt:active:not(:disabled){ transform:scale(.99); }
.pred-opt:disabled{ cursor:default; }
.pred-opt.picked{ border-color:var(--gold2); box-shadow:inset 0 0 0 1px rgba(238,179,81,.5); }
.pred-opt-bar{ position:absolute; left:0; top:0; bottom:0; z-index:0; background:linear-gradient(90deg, rgba(238,179,81,.34), rgba(238,179,81,.12)); transition:width .5s cubic-bezier(.3,.8,.3,1); }
.pred-opt.picked .pred-opt-bar{ background:linear-gradient(90deg, rgba(238,179,81,.48), rgba(238,179,81,.2)); }
.pred-opt-lb{ position:relative; z-index:1; flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pred-opt-pc{ position:relative; z-index:1; flex:0 0 auto; font-weight:800; color:var(--gold2); font-size:12px; }
.pred-w-foot{ margin-top:9px; font-size:10.5px; color:var(--t3); text-align:center; }
.pred-widget.mini{ width:auto; }
.pred-widget.mini .pred-w-body{ display:none; }
.pred-widget.mini .pred-w-head{ cursor:pointer; border-bottom:0; }
.pred-widget.mini .pred-w-min{ display:none; }
@media (max-width:640px){ .pred-widget{ right:10px; bottom:84px; width:266px; } }

/* Admin — prediction events section (build 476) */
.adm-pred-wrap{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:18px; align-items:start; }
@media (max-width:900px){ .adm-pred-wrap{ grid-template-columns:1fr; } }
.adm-pred-create{ background:rgba(255,255,255,.03); border:1px solid rgba(238,179,81,.18); border-radius:14px; padding:16px; }
.ap-opt{ width:100%; padding:9px 11px; border-radius:9px; border:1px solid rgba(255,255,255,.12); background:rgba(0,0,0,.25); color:var(--t1); font:600 13px var(--fu); }
.adm-pred-msg{ margin-top:8px; font-size:12px; min-height:16px; }
.adm-pred-msg.ok{ color:#6ee7a0; } .adm-pred-msg.err{ color:#ff8a8a; }
.adm-pred-list{ display:flex; flex-direction:column; gap:12px; }
.adm-pred-empty{ color:var(--t3); font-size:13px; padding:20px; text-align:center; border:1px dashed rgba(255,255,255,.1); border-radius:12px; }
.ap-ev{ background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.1); border-radius:14px; padding:14px; }
.ap-ev-open{ border-color:rgba(238,179,81,.34); }
.ap-ev-settled{ opacity:.72; }
.ap-ev-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:4px; }
.ap-ev-head b{ font-size:14px; color:var(--t1); }
.ap-ev-badge{ flex:0 0 auto; font:800 9.5px var(--fu); letter-spacing:.1em; text-transform:uppercase; padding:3px 8px; border-radius:20px; }
.ap-badge-open{ background:rgba(110,231,160,.16); color:#6ee7a0; }
.ap-badge-closed{ background:rgba(238,179,81,.16); color:var(--gold2); }
.ap-badge-settled{ background:rgba(255,255,255,.08); color:var(--t3); }
.ap-ev-meta{ font-size:11.5px; color:var(--t3); margin-bottom:10px; }
.ap-ev-opts{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:10px; }
.ap-win-btn{ padding:7px 11px; border-radius:9px; border:1px solid rgba(238,179,81,.3); background:rgba(238,179,81,.06); color:var(--t1); font:600 12px var(--fu); cursor:pointer; transition:border-color .15s, background .15s; }
.ap-win-btn:hover:not(:disabled){ border-color:var(--gold2); background:rgba(238,179,81,.14); }
.ap-win-btn.won{ border-color:#6ee7a0; background:rgba(110,231,160,.16); color:#6ee7a0; }
.ap-win-btn:disabled{ cursor:default; }
.ap-win-btn b{ opacity:.7; font-weight:700; }
.ap-ev-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ap-act{ padding:6px 12px; border-radius:8px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.04); color:var(--t2); font:700 11.5px var(--fu); cursor:pointer; }
.ap-act:hover{ border-color:rgba(255,255,255,.3); color:var(--t1); }
.ap-del{ margin-left:auto; color:#ff8a8a; border-color:rgba(255,80,80,.25); }
.ap-hint{ font-size:11px; color:var(--gold2); }

/* ══ Predictions page — build 476 ══════════════════════════════════════════════════════════════════ */
.pred-page{ max-width:900px; margin:0 auto; padding:20px 16px 60px; }
.pred-hero{ position:relative; text-align:center; padding:36px 20px 30px; margin-bottom:24px; border-radius:20px; overflow:hidden;
  background:var(--card,#151926); border:1px solid rgba(238,179,81,.14); }
.pred-hero-title{ font:800 40px var(--fd); letter-spacing:.02em; margin:6px 0 8px; color:var(--t1); }
.pred-hero-sub{ color:var(--t2); font-size:14px; max-width:520px; margin:0 auto; line-height:1.5; }
.pred-hero-embers{ position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.pred-hero-embers i{ position:absolute; bottom:-6px; width:3px; height:3px; border-radius:50%; background:rgba(238,179,81,.5); animation:predEmber linear infinite; }
.pred-hero-embers i:nth-child(1){ left:15%; animation-duration:7s; }
.pred-hero-embers i:nth-child(2){ left:35%; animation-duration:9s; animation-delay:1.5s; }
.pred-hero-embers i:nth-child(3){ left:55%; animation-duration:6.5s; animation-delay:.8s; }
.pred-hero-embers i:nth-child(4){ left:72%; animation-duration:8.5s; animation-delay:2.2s; }
.pred-hero-embers i:nth-child(5){ left:88%; animation-duration:7.5s; animation-delay:1s; }
@keyframes predEmber{ from{ transform:translateY(0); opacity:0; } 10%{opacity:.8;} 90%{opacity:.5;} to{ transform:translateY(-120px); opacity:0; } }
.pred-none{ text-align:center; color:var(--t3); padding:40px 20px; font-size:14px; border:1px dashed rgba(255,255,255,.1); border-radius:16px; }
.pred-card{ background:var(--card,#151926); border:1px solid rgba(238,179,81,.22); border-radius:18px; padding:22px; box-shadow:0 12px 34px rgba(0,0,0,.35); }
.pred-card-top{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.pred-card-badge{ font:800 10px var(--fu); letter-spacing:.12em; padding:4px 10px; border-radius:20px; background:rgba(110,231,160,.16); color:#6ee7a0; }
.pred-card-badge.closed{ background:rgba(255,255,255,.08); color:var(--t3); }
.pred-card-reward{ font-size:11px; color:var(--t2); }
.pred-card-reward b{ color:var(--gold2); font-size:11px; }
.pred-card-q{ font:800 24px var(--fd); color:var(--t1); margin:0 0 18px; line-height:1.15; }
.pred-card-opts{ display:flex; flex-direction:column; gap:10px; }
.pred-lg-opt{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; padding:15px 16px; border-radius:12px;
  border:1px solid rgba(238,179,81,.22); background:rgba(255,255,255,.03); color:var(--t1); font:700 15px var(--fu); cursor:pointer; overflow:hidden; text-align:left; transition:border-color .15s, transform .1s; }
.pred-lg-opt:hover:not(:disabled){ border-color:rgba(238,179,81,.55); }
.pred-lg-opt:active:not(:disabled){ transform:scale(.995); }
.pred-lg-opt:disabled{ cursor:default; }
.pred-lg-opt.picked{ border-color:var(--gold2); box-shadow:inset 0 0 0 2px rgba(238,179,81,.6), 0 0 22px rgba(238,179,81,.16); background:rgba(238,179,81,.05); }
.pred-lg-check{ display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; margin-right:2px; border-radius:50%; background:var(--gold2,#f4cd84); color:#1a1206; font-size:12px; font-weight:900; line-height:1; vertical-align:-3px; }
.pred-lg-bar{ position:absolute; left:0; top:0; bottom:0; z-index:0; background:linear-gradient(90deg, rgba(238,179,81,.34), rgba(238,179,81,.12)); transition:width .55s cubic-bezier(.3,.8,.3,1); }
.pred-lg-opt.picked .pred-lg-bar{ background:linear-gradient(90deg, rgba(238,179,81,.48), rgba(238,179,81,.2)); }
.pred-lg-lb{ position:relative; z-index:1; flex:1 1 auto; min-width:0; }
.pred-lg-lb em{ font-style:normal; font-size:11px; color:var(--gold2); font-weight:700; }
.pred-lg-pc{ position:relative; z-index:1; flex:0 0 auto; text-align:right; font-weight:800; color:var(--gold2); font-size:16px; line-height:1.1; }
.pred-lg-pc small{ display:block; font-size:10px; color:var(--t3); font-weight:600; }
.pred-card-foot{ margin-top:16px; text-align:center; font-size:12px; color:var(--t3); }
.pred-hist-head{ display:flex; align-items:center; gap:12px; margin:34px 0 16px; }
.pred-hist-head span{ font:800 13px var(--fu); letter-spacing:.14em; text-transform:uppercase; color:var(--t3); }
.pred-hist-head:after{ content:""; flex:1; height:1px; background:linear-gradient(90deg, rgba(255,255,255,.12), transparent); }
.pred-hist{ display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:14px; }
.pred-hist-card{ background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.1); border-radius:14px; padding:15px; }
.pred-hist-q{ font-weight:700; font-size:14px; color:var(--t1); margin-bottom:12px; line-height:1.3; }
.pred-hist-opts{ display:flex; flex-direction:column; gap:6px; margin-bottom:10px; }
.pred-hist-opt{ display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:12.5px; color:var(--t2); padding:6px 9px; border-radius:8px; background:rgba(255,255,255,.02); }
.pred-hist-opt.won{ background:rgba(110,231,160,.12); color:#6ee7a0; font-weight:700; }
.pred-hist-meta{ font-size:11px; color:var(--t3); }
.pred-hist-meta b{ color:var(--gold2); }
@media (max-width:640px){ .pred-hero-title{ font-size:32px; } .pred-card-q{ font-size:20px; } }

/* Admin predictions enable toggle + nicer page empty state (build 478) */
.adm-pred-enable{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px 16px; margin-bottom:16px; border-radius:12px; background:rgba(238,179,81,.06); border:1px solid rgba(238,179,81,.22); font-size:13px; color:var(--t2); }
.adm-pred-enable b{ font-weight:800; }
.ap-toggle-btn{ padding:8px 16px; border-radius:9px; border:1px solid rgba(238,179,81,.4); background:rgba(238,179,81,.14); color:var(--gold2); font:800 12px var(--fu); cursor:pointer; white-space:nowrap; }
.ap-toggle-btn:hover{ background:rgba(238,179,81,.22); }
.pred-none-big{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:50px 24px; color:var(--t3); text-align:center; }
.pred-none-big svg{ color:var(--gold2); opacity:.7; margin-bottom:6px; }
.pred-none-big h3{ font:800 20px var(--fd); color:var(--t1); margin:0; }
.pred-none-big p{ max-width:400px; margin:0; font-size:13px; line-height:1.5; }

/* Mobile: smaller chat (bottom-left) + raffles (bottom-right) floating buttons (build 482) */
@media (max-width:640px){
  .chat-toggle{ left:11px !important; right:auto !important; bottom:11px !important; padding:8px 12px !important; gap:5px !important; }
  .chat-toggle, .chat-toggle .chat-label{ font-size:11.5px !important; }
  .chat-toggle svg, .chat-toggle .chat-icon{ width:14px !important; height:14px !important; font-size:13px !important; }
  .rfd-mtoggle{ right:11px !important; left:auto !important; bottom:11px !important; padding:8px 12px !important; gap:5px !important; font-size:11.5px !important; }
  .rfd-mtoggle svg{ width:14px !important; height:14px !important; }
}

/* Champion arena — subtle Rust industrial texture overlay, base colour untouched (build 482) */
.arena-grunge{ position:absolute; inset:0; z-index:0; pointer-events:none; border-radius:inherit; opacity:.75;
  background:
    radial-gradient(ellipse 65% 42% at 50% 112%, rgba(232,142,58,.16), rgba(180,90,40,.05) 45%, transparent 72%),
    radial-gradient(ellipse 120% 55% at 50% -12%, rgba(0,0,0,.3), transparent 62%),
    radial-gradient(circle at 8% 12%,  rgba(238,179,81,.06), transparent 24%),
    radial-gradient(circle at 92% 12%, rgba(150,70,28,.06),  transparent 24%),
    repeating-linear-gradient(135deg, rgba(238,179,81,.02) 0 1.5px, transparent 1.5px 48px),
    repeating-linear-gradient(45deg,  rgba(0,0,0,.045) 0 1.5px, transparent 1.5px 48px); }

/* ══ AUTHORITATIVE mobile floating-button layout (build 484) — beats ALL earlier conflicting rules.
   Chat = bottom-LEFT, Raffles = bottom-RIGHT, both compact. ══════════════════════════════════════ */
@media (max-width:820px){
  html body .chat-toggle{ left:12px !important; right:auto !important; top:auto !important; bottom:12px !important;
    width:auto !important; height:auto !important; min-height:0 !important; max-width:44vw !important; padding:8px 13px !important; gap:6px !important;
    flex-direction:row !important; border-radius:999px !important; writing-mode:horizontal-tb !important; text-orientation:mixed !important;
    font-size:12px !important; line-height:1 !important; z-index:640 !important; }
  html body .chat-toggle .chat-label{ writing-mode:horizontal-tb !important; font-size:12px !important; white-space:nowrap; }
  html body .chat-toggle .chat-icon, html body .chat-toggle .chat-icon svg{ width:15px !important; height:15px !important; font-size:14px !important; writing-mode:horizontal-tb !important; }
  html body .rfd-mtoggle{ right:12px !important; left:auto !important; top:auto !important; bottom:12px !important; max-width:44vw !important;
    padding:8px 13px !important; gap:6px !important; font-size:12px !important; z-index:640 !important; }
  html body .rfd-mtoggle svg{ width:15px !important; height:15px !important; }
}

/* #19 Nav hover: just white text — no background, shadow, lift or underline (build 490) */
.nav a:hover{ background:none !important; box-shadow:none !important; transform:none !important; color:#fff !important; }
.nav a:hover .nav-ico, .nav-more-btn:hover .nav-ico{ filter:none !important; transform:none !important; animation:none !important; }
.nav a:hover::after{ width:0 !important; }
/* #4 Notification icon ↔ text alignment (was top-aligned + nudged) */
.notif-item{ align-items:center !important; }
.notif-ico{ margin-top:0 !important; }

/* "Select all" button in the skin picker modal (build 491) */
.canta-modal__selall{ padding:9px 16px; border-radius:10px; border:1px solid rgba(238,179,81,.4); background:rgba(238,179,81,.1); color:#f5c451; font:800 12.5px var(--fu); cursor:pointer; white-space:nowrap; transition:background .15s; }
.canta-modal__selall:hover{ background:rgba(238,179,81,.2); }

/* Fairness page — seed copy buttons + tighter card layout (build 494) */
.fair-seed-val{ display:flex; align-items:center; gap:8px; }
.fair-seed-val code, .fair-seed-input input{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fair-copy{ flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; border-radius:9px; border:1px solid rgba(245,196,81,.32); background:rgba(245,196,81,.09); color:#f5c451; cursor:pointer; transition:background .15s, transform .08s, border-color .15s, color .15s; }
.fair-copy:hover{ background:rgba(245,196,81,.2); }
.fair-copy:active{ transform:scale(.9); }
.fair-copy.copied{ background:rgba(110,231,160,.22); border-color:#6ee7a0; color:#6ee7a0; }
.fair-rev-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.fair-rev-row code{ overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.fair-games{ display:grid !important; grid-template-columns:repeat(auto-fill, minmax(290px, 1fr)) !important; gap:14px !important; }

/* Active nav item = white with a soft GLOW (no frame/underline) — the icon glows brighter (build 518) */
.nav a.active{ background:none !important; border-color:transparent !important; box-shadow:none !important; transform:none !important; color:#fff !important; text-shadow:0 0 12px rgba(255,255,255,.4); }
.nav a.active .nav-ico{ transform:none !important; animation:none !important; color:#fff !important; filter:drop-shadow(0 0 8px rgba(255,255,255,.6)) drop-shadow(0 0 3px rgba(255,255,255,.45)) !important; }
.nav a.active::after{ width:0 !important; }

/* #21 — Your Seeds card full-width, matching the Verifier (build 498) */
.fair-seeds{ max-width:none !important; margin-left:0 !important; margin-right:0 !important; }

/* #13 — custom hover tooltip for the FTDs "i" on /affiliate (native title was unreliable) (build 498) */
.affx-tip{ position:relative; cursor:help; }
.affx-tip::after{ content:attr(data-tip); position:absolute; bottom:calc(100% + 9px); left:50%; transform:translateX(-50%) translateY(5px); width:230px; max-width:70vw; padding:10px 13px; border-radius:10px; background:#12151f; border:1px solid rgba(238,179,81,.32); color:#dfe3ee; font:600 12px/1.45 var(--fu, system-ui); text-align:center; opacity:0; pointer-events:none; transition:opacity .15s ease, transform .15s ease; z-index:60; box-shadow:0 10px 28px rgba(0,0,0,.55); white-space:normal; }
.affx-tip::before{ content:""; position:absolute; bottom:calc(100% + 3px); left:50%; transform:translateX(-50%) translateY(5px); border:6px solid transparent; border-top-color:rgba(238,179,81,.32); opacity:0; pointer-events:none; transition:opacity .15s ease, transform .15s ease; z-index:60; }
.affx-tip:hover::after, .affx-tip:hover::before{ opacity:1; transform:translateX(-50%) translateY(0); }

/* Champion arena — faint slow-rising embers (Rust wasteland atmosphere, subtle, base colour untouched) (build 500) */
.arena-embers{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; border-radius:inherit; }
.arena-embers span{ position:absolute; bottom:-8px; width:3px; height:3px; border-radius:50%; background:radial-gradient(circle, rgba(245,180,90,.8), rgba(200,90,30,0) 70%); filter:blur(.3px); animation:emberRise linear infinite; }
@keyframes emberRise{ 0%{ transform:translateY(0) translateX(0) scale(1); opacity:0; } 12%{ opacity:.55; } 88%{ opacity:.35; } 100%{ transform:translateY(-360px) translateX(14px) scale(.35); opacity:0; } }
.arena-embers span:nth-child(1){ left:10%; animation-duration:9s;  animation-delay:0s;   }
.arena-embers span:nth-child(2){ left:23%; animation-duration:11.5s; animation-delay:2.4s; }
.arena-embers span:nth-child(3){ left:38%; animation-duration:8.4s; animation-delay:4.1s; width:2px;height:2px; }
.arena-embers span:nth-child(4){ left:52%; animation-duration:12.6s; animation-delay:1.2s; }
.arena-embers span:nth-child(5){ left:64%; animation-duration:9.8s; animation-delay:5.3s; width:2px;height:2px; }
.arena-embers span:nth-child(6){ left:76%; animation-duration:10.7s; animation-delay:3.0s; }
.arena-embers span:nth-child(7){ left:87%; animation-duration:8.9s; animation-delay:6.2s; width:2px;height:2px; }
.arena-embers span:nth-child(8){ left:95%; animation-duration:11.2s; animation-delay:1.8s; }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .arena-embers{ display:none; } }

/* #15 — rustpot card hover frame matches its RED icon (other games are violet = already matched) (build 504) */
.hm-game-rustpot:hover{ border-color:#ef4444 !important; box-shadow:0 22px 48px rgba(0,0,0,.5), 0 0 0 1px rgba(239,68,68,.35) !important; }
.hm-game-rustpot:hover .hm-game-go{ color:#ff6b6e !important; }
.hm-game-rustpot:hover .hm-game-ico{ filter:drop-shadow(0 6px 14px rgba(239,68,68,.5)) !important; }

/* Raffle FAB must actually OPEN the drawer up to 1300px — high-specificity force-show when toggled (build 505) */
@media (max-width:1400px){
  html body.rfd-mobile-showing .rfd-drawer{ transform:translateY(0) !important; }
  html body:not(.rfd-mobile-showing) .rfd-drawer{ transform:translateY(101%) !important; }
}

/* #15 — each index game card's hover frame + arrow + icon-glow matches its ICON colour (build 515)
   (Champion gold #f6c85a · Flip orange #f0912e · Quick violet #f6c85a · Rustpot red already set) */
.hm-game-champions:hover{ border-color:#f6c85a !important; box-shadow:0 22px 48px rgba(0,0,0,.5), 0 0 0 1px rgba(246,200,90,.4) !important; }
.hm-game-champions:hover .hm-game-go{ color:#f6c85a !important; }
.hm-game-champions:hover .hm-game-ico{ filter:drop-shadow(0 6px 14px rgba(246,200,90,.5)) !important; }
.hm-game-flip:hover{ border-color:#f0912e !important; box-shadow:0 22px 48px rgba(0,0,0,.5), 0 0 0 1px rgba(240,145,46,.4) !important; }
.hm-game-flip:hover .hm-game-go{ color:#f0912e !important; }
.hm-game-flip:hover .hm-game-ico{ filter:drop-shadow(0 6px 14px rgba(240,145,46,.5)) !important; }
.hm-game-quick:hover{ border-color:#f6c85a !important; box-shadow:0 22px 48px rgba(0,0,0,.5), 0 0 0 1px rgba(246,200,90,.4) !important; }
.hm-game-quick:hover .hm-game-go{ color:#f6c85a !important; }
.hm-game-quick:hover .hm-game-ico{ filter:drop-shadow(0 6px 14px rgba(246,200,90,.5)) !important; }

/* Champion arena — distant RUST wasteland silhouette along the horizon (radio tower, oil derrick,
   rock formations, a wooden base, a monument tower). Dark, subtle, faded into the bg — enriches the
   scene without touching the base colour. No copyrighted art (stylised Rust-flavoured shapes). (build 517) */
.arena-firelight{ position:absolute; left:0; right:0; bottom:0; height:64%; z-index:0; pointer-events:none; border-radius:inherit;
  background:
    radial-gradient(128% 94% at 50% 124%, rgba(244,140,52,.28), rgba(200,86,28,.11) 42%, transparent 70%),
    radial-gradient(52% 48% at 50% 116%, rgba(255,172,76,.22), transparent 72%);
  mix-blend-mode:screen; }
.arena-firelight::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(58% 40% at 50% 120%, rgba(255,122,42,.12), transparent 66%);
  animation:arenaFireFlicker 5.5s ease-in-out infinite; }
@keyframes arenaFireFlicker{ 0%,100%{ opacity:.68; } 42%{ opacity:1; } 68%{ opacity:.8; } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .arena-firelight::after{ animation:none; } }
.arena-scenery{ position:absolute; left:0; right:0; bottom:0; height:min(52%,300px); z-index:0; pointer-events:none; opacity:.72;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1400' height='270' viewBox='0 0 1400 270' preserveAspectRatio='xMidYMax slice'%3E%3Cpath d='M0 270 L0 214 Q200 182 400 206 T800 200 T1200 212 T1400 196 L1400 270Z' fill='%230b0e16' opacity='.6'/%3E%3Cg fill='%23090c13' opacity='.72'%3E%3Cpath d='M168 270 L188 84 L208 270Z'/%3E%3Crect x='185' y='66' width='6' height='20'/%3E%3C/g%3E%3Cg stroke='%23090c13' stroke-width='2.6' opacity='.7' fill='none'%3E%3Cpath d='M176 150 L200 150 M172 194 L204 194 M169 230 L207 230'/%3E%3C/g%3E%3Cg fill='none' stroke='%23090c13' stroke-width='3.2' opacity='.62'%3E%3Cpath d='M428 270 L470 116 L512 270 M444 202 L496 202 M454 160 L486 160'/%3E%3C/g%3E%3Cpath d='M628 270 Q676 188 730 214 Q772 172 822 208 Q852 192 884 270Z' fill='%230a0d15' opacity='.66'/%3E%3Cg fill='%23090c13' opacity='.72'%3E%3Cpath d='M968 270 L968 188 L1030 160 L1092 188 L1092 270Z'/%3E%3Crect x='1012' y='212' width='20' height='58' fill='%23060810'/%3E%3Cpath d='M968 188 L1030 160 L1092 188' stroke='%23161010' stroke-width='2' fill='none' opacity='.6'/%3E%3C/g%3E%3Cg fill='%230b0e16' opacity='.56'%3E%3Cpath d='M1228 270 L1246 92 L1264 270Z'/%3E%3Crect x='1235' y='118' width='22' height='11'/%3E%3C/g%3E%3Crect x='0' y='266' width='1400' height='4' fill='%23000' opacity='.32'/%3E%3C/svg%3E") no-repeat center bottom / cover;
  -webkit-mask-image:linear-gradient(180deg, transparent 0%, #000 55%); mask-image:linear-gradient(180deg, transparent 0%, #000 55%); }

/* Rustflip header — title + Create button on one row, button compact + aligned with the title (build 519) */
.rf-header-flex{ display:flex; align-items:flex-end; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.rf-header-flex .rf-header-l{ min-width:0; }
.rf-head-btn{ width:auto !important; flex:0 0 auto; padding:11px 20px !important; font-size:13.5px !important; margin:0 !important; border-radius:11px !important; }
@media (max-width:560px){ .rf-header-flex{ align-items:stretch; } .rf-head-btn{ width:100% !important; text-align:center; } }

/* Rustflip "Create a game" button — compact, right side of the OPEN GAMES row (build 521) */
.cf-list-head{ display:flex !important; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.rf-list-btn{ width:auto !important; flex:0 0 auto; padding:9px 16px !important; font-size:13px !important; margin:0 !important; border-radius:10px !important; }
@media (max-width:520px){ .rf-list-btn{ width:100% !important; text-align:center; } }

/* Render performance — skip painting off-screen market cards + feed rows (build 522) */
.skin-card{ content-visibility:auto; contain-intrinsic-size:auto 264px; }
.hm-feed-row{ content-visibility:auto; contain-intrinsic-size:auto 44px; }

/* ══ Marketplace rarity colours (price-tiered, like a real skin site) — rarity strip under the
   image + a soft floor-glow + a rarity-tinted border/hover. (build 527) ══ */
.skin-card{ --rc:#8b98ab; }
.skin-card.sk-common{ --rc:#8b98ab; }
.skin-card.sk-uncommon{ --rc:#4f8fd6; }
.skin-card.sk-rare{ --rc:#4b6fe0; }
.skin-card.sk-epic{ --rc:#9a5fd6; }
.skin-card.sk-legendary{ --rc:#d65f9a; }
.skin-card.sk-mythic{ --rc:#f5b53f; }
.skin-card .skin-img{ position:relative; border-bottom:2px solid color-mix(in srgb, var(--rc) 72%, transparent); }
.skin-card .skin-img::before{ content:""; position:absolute; left:0; right:0; bottom:0; height:44%; z-index:0; pointer-events:none;
  background:radial-gradient(120% 100% at 50% 128%, color-mix(in srgb, var(--rc) 32%, transparent), transparent 72%); }
.skin-card .skin-img img{ position:relative; z-index:1; }
.skin-card{ border-color:color-mix(in srgb, var(--rc) 24%, rgba(255,255,255,.07)) !important; }
.skin-card:hover{ border-color:var(--rc) !important; box-shadow:0 12px 28px rgba(0,0,0,.45), 0 0 0 1px var(--rc), inset 0 0 30px color-mix(in srgb, var(--rc) 13%, transparent) !important; }

/* Empty states — a subtle Rust-crate icon above the "nothing here yet" text (build 529) */
.empty-row{ flex-direction:column !important; gap:4px; padding:26px 16px !important; text-align:center; }
.empty-row::before{ content:""; width:38px; height:38px; opacity:.42; flex:0 0 auto;
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a94a8' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5 12 4l9 4.5-9 4.5-9-4.5Z'/%3E%3Cpath d='M3 8.5v7L12 20l9-4.5v-7'/%3E%3Cpath d='M12 13v7' opacity='.5'/%3E%3C/svg%3E"); }

/* Crypto deposit modal note (build 530) */
.dw-np-note{ font-size:12.5px; line-height:1.5; color:var(--t3,#96a0b5); margin:2px 0 14px; }
.dw-np-note b{ color:var(--t2,#c2ccdd); }
.dw-min{ font-size:12px; color:var(--t3,#96a0b5); margin:12px 0 2px; }
.dw-min-warn{ font-size:10.5px; line-height:1.4; color:var(--t3,#96a0b5); margin:9px 0 2px; opacity:.9; }
.dw-min-warn.is-error{ color:#ffb4b4; font-weight:700; opacity:1; }
.dw-cta.is-off{ opacity:.45; pointer-events:none; filter:grayscale(.4); }

/* Withdraw modal fields — matched to the deposit panel look, so both modals are identical in size/style (build 531) */
.dw-wd-field{ display:flex; flex-direction:column; gap:6px; margin-top:13px; }
.dw-wd-field > span{ font:800 10px var(--fu,inherit); letter-spacing:.1em; text-transform:uppercase; color:var(--t3,#96a0b5); }
.dw-wd-field input, .dw-wd-field select.dw-select{ width:100%; box-sizing:border-box; padding:11px 13px; border-radius:11px; background:rgba(0,0,0,.28); border:1px solid var(--ln,rgba(255,255,255,.1)); color:var(--t1,#e7edfa); font:600 14px var(--fu,inherit); }
.wd-coins{ display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-top:6px; }
.wd-coin{ flex:0 0 calc((100% - 24px) / 4); display:flex; flex-direction:column; align-items:center; gap:6px; padding:10px 4px; border-radius:12px; border:1px solid var(--ln,#262c3b); background:rgba(0,0,0,.2); cursor:pointer; transition:border-color .15s, background .15s, transform .1s; }
.wd-coin:hover{ border-color:rgba(238,179,81,.4); }
.wd-coin:active{ transform:scale(.97); }
.wd-coin.is-on{ border-color:var(--gold2,#f4cd84); background:rgba(238,179,81,.08); box-shadow:inset 0 0 0 1px rgba(238,179,81,.4); }
.wd-coin-ico{ width:30px; height:30px; flex:0 0 auto; }
.wd-coin-nm{ font-size:11px; font-weight:700; color:var(--t1,#eef1f7); line-height:1.1; text-align:center; }
.wd-coin-nm em{ display:block; font-style:normal; font-size:8.5px; font-weight:700; color:var(--t3,#96a0b5); letter-spacing:.03em; margin-top:1px; }
.dw-wd-field input:focus, .dw-wd-field select.dw-select:focus{ outline:none; border-color:var(--gold2,#eeb351); box-shadow:0 0 0 3px rgba(238,179,81,.14); }
#withdrawModal .wd-wager{ margin-top:12px; }

/* Fairness explainer — themed step icons (lock / verify / formula) with a numbered badge (build 532) */
.fe-icobox{ position:relative; width:46px; height:46px; border-radius:13px; display:grid; place-items:center; flex-shrink:0;
  color:var(--gold2,#eeb351); background:linear-gradient(150deg, rgba(238,179,81,.16), rgba(238,179,81,.04)); border:1px solid rgba(238,179,81,.24); }
.fe-icobox svg{ width:24px; height:24px; }
.fe-n{ position:absolute; top:-7px; left:-7px; width:20px; height:20px; border-radius:50%; background:var(--p,#e0663f); color:#fff; font:800 11px var(--fu,inherit); display:grid; place-items:center; box-shadow:0 2px 6px rgba(0,0,0,.42); }

/* Affiliate hero — referral-network illustration + subtitle (build 534) */
.affx-hero{ display:flex; align-items:center; justify-content:space-between; gap:20px; }
.affx-hero-tx{ min-width:0; }
.affx-hero-sub{ margin:9px 0 0; font-size:13.5px; color:var(--t3,#96a0b5); max-width:440px; line-height:1.5; }
.affx-hero-art{ flex:0 0 auto; width:210px; max-width:40%; }
.affx-hero-art svg{ width:100%; height:auto; display:block; filter:drop-shadow(0 6px 14px rgba(0,0,0,.3)); }
@media (max-width:640px){ .affx-hero-art{ display:none; } .affx-hero-sub{ max-width:none; } }

/* Rakeback cards — accent bars (build 544) */
.rb-card{ position:relative; overflow:hidden; }
.rb-claim.rb-locked{ opacity:.62; cursor:not-allowed; filter:grayscale(.35); font-variant-numeric:tabular-nums; letter-spacing:.02em; }
.rb-claim.rb-locked:hover{ transform:none; }
.rb-card::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; opacity:.85; z-index:1; }
.rb-daily::before{ background:linear-gradient(180deg,#5ad36d,transparent 130%); }
.rb-weekly::before{ background:linear-gradient(180deg,#5aa9f0,transparent 130%); }
.rb-monthly::before{ background:linear-gradient(180deg,#f5b53f,transparent 130%); }

/* Market loading skeletons — card-shaped shimmer while skins load (build 536) */
.skin-skel{ border-radius:14px; min-height:236px; border:1px solid rgba(255,255,255,.05);
  background: linear-gradient(90deg, rgba(255,255,255,.035) 25%, rgba(196,184,158,.10) 50%, rgba(255,255,255,.035) 75%);
  background-size:800px 100%; animation:rrShimmer 1.3s infinite linear; }

/* Quickgame header subtitle (build 537) */
.qg-sub{ margin:7px 0 0; font-size:13.5px; color:var(--t3,#96a0b5); line-height:1.5; max-width:520px; }

/* Deposit/Withdraw calc — make the $ amount pop: big gold leading dollars, small dim cents (build 549) */
.dw-calc-recv{ display:inline-flex; align-items:baseline; gap:0; line-height:1; }
.dw-usd-cur{ color:var(--gold2,#eeb351); font-weight:800; font-size:1.05em; margin-right:1px; }
.dw-usd-d{ color:var(--gold2,#eeb351); font-weight:900; font-size:1.7em; letter-spacing:-0.01em; }
.dw-usd-c{ color:var(--gold2,#eeb351); font-weight:800; font-size:0.92em; opacity:.55; }

/* Bottom-right warning toast — shown when a social task window is closed too early (build 544) */
.rr-bwarn{ position:fixed; right:18px; bottom:18px; z-index:99999; display:flex; align-items:center; gap:11px; max-width:340px; padding:13px 16px; border-radius:12px; background:linear-gradient(150deg,#3a2226,#2a1418); border:1px solid rgba(224,80,63,.5); color:#ffd9d4; font:600 13px var(--fu,inherit); line-height:1.4; box-shadow:0 12px 32px rgba(0,0,0,.5); transform:translateY(24px); opacity:0; transition:transform .35s ease, opacity .35s ease; }
.rr-bwarn.show{ transform:translateY(0); opacity:1; }
.rr-bwarn svg{ color:#e0503f; flex:0 0 auto; }
@media (max-width:520px){ .rr-bwarn{ left:14px; right:14px; max-width:none; } }

/* Transactions header subtitle (build 547) */
.tx-head-sub{ margin:7px 0 0; font-size:13.5px; color:var(--t3,#96a0b5); line-height:1.5; max-width:540px; }

/* Marketplace AWP icon — a touch larger so it reads clearly (build 548) */

/* Leaderboard — highlight the viewer's own row (build 551) */
.lb-row.is-me{ background:linear-gradient(90deg, rgba(238,179,81,0.15), rgba(238,179,81,0.03)); box-shadow:0 0 0 1.5px rgba(238,179,81,0.45) inset; }
.lb-row.is-me .lb-rank-badge{ color:var(--gold2,#eeb351); }
.lb-you{ display:inline-block; margin-left:6px; padding:1px 7px; border-radius:6px; background:var(--gold2,#eeb351); color:#1a1206; font-size:10px; font-weight:900; letter-spacing:.04em; text-transform:uppercase; vertical-align:middle; }

/* Leaderboard podium — glow the viewer's own avatar (build 552) */
.rc-pod.is-me .rc-av{ box-shadow:0 0 0 2px var(--gold2,#eeb351), 0 0 20px rgba(238,179,81,0.45) !important; }

/* ══════════════ FINAL authoritative floating launchers (build 554) ══════════════
   On every narrow view (≤1300px — i.e. whenever the chat is NOT the docked desktop sidebar):
     • Live Chat  = compact pill, BOTTOM-LEFT
     • Raffles    = compact pill, BOTTOM-RIGHT
   They never overlap, never stretch full-width (right:auto/left:auto + max-width lock them),
   always sit above the page and stay tappable. LAST in the file → beats every earlier rule. */
@media (max-width:1400px){
  html body button.chat-toggle{
    display:inline-flex !important; position:fixed !important;
    left:13px !important; right:auto !important; top:auto !important;
    bottom:calc(13px + env(safe-area-inset-bottom,0px)) !important;
    width:auto !important; max-width:43vw !important; height:auto !important; min-height:0 !important; min-width:0 !important;
    flex-direction:row !important; align-items:center !important; justify-content:center !important; gap:7px !important;
    padding:9px 15px !important; border-radius:999px !important;
    writing-mode:horizontal-tb !important; text-orientation:mixed !important; transform:none !important;
    font-size:12.5px !important; line-height:1 !important; white-space:nowrap !important; overflow:hidden !important;
    z-index:946 !important; pointer-events:auto !important;
  }
  html body button.chat-toggle .chat-label{ writing-mode:horizontal-tb !important; font-size:12.5px !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }
  html body button.chat-toggle .chat-icon,
  html body button.chat-toggle .chat-icon svg,
  html body button.chat-toggle > svg{ writing-mode:horizontal-tb !important; width:16px !important; height:16px !important; flex:0 0 auto !important; }
  /* the icon span was inline → its SVG sat on the text baseline and dropped below the label; make it a
     centered flex box so glyph and "Live Chat" sit on the same line */
  html body button.chat-toggle .chat-icon{ display:inline-flex !important; align-items:center !important; justify-content:center !important; line-height:0 !important; margin:0 !important; }
  html body button.chat-toggle .chat-icon svg{ display:block !important; vertical-align:middle !important; }

  html body button.rfd-mtoggle{
    display:inline-flex !important; position:fixed !important;
    left:auto !important; right:13px !important; top:auto !important;
    bottom:calc(13px + env(safe-area-inset-bottom,0px)) !important;
    width:auto !important; max-width:43vw !important; min-width:0 !important;
    align-items:center !important; justify-content:center !important; gap:7px !important;
    padding:9px 15px !important; border-radius:999px !important; transform:none !important;
    font-size:12.5px !important; line-height:1 !important; white-space:nowrap !important; overflow:hidden !important;
    z-index:946 !important; pointer-events:auto !important;
  }
  html body button.rfd-mtoggle svg{ width:16px !important; height:16px !important; flex:0 0 auto !important; }

  /* keep clear of the marketplace bulk-action bar when it's up */
  html body.mkt-has-bulk button.chat-toggle, html body.mkt-has-bulk button.rfd-mtoggle{ bottom:calc(86px + env(safe-area-inset-bottom,0px)) !important; }

  /* When a sheet is open, hide only ITS OWN launcher so it doesn't sit over the open panel. */
  html body.chat-open button.chat-toggle{ opacity:0 !important; pointer-events:none !important; transform:translateY(170%) !important; }
  html body.rfd-mobile-showing button.rfd-mtoggle{ opacity:0 !important; pointer-events:none !important; transform:translateY(170%) !important; }
}

/* Reusable page-header subtitle (build 555) */
.page-head-sub{ margin:7px 0 0; font-size:13.5px; color:var(--t3,#96a0b5); line-height:1.5; max-width:560px; }
@media (max-width:640px){ .page-head-sub{ font-size:12.5px; } }

/* Market/inventory header subtitle (was missing since build 545) */
.mkt-head-sub{ margin:6px 0 0; font-size:13.5px; color:var(--t3,#96a0b5); line-height:1.5; max-width:560px; }
@media (max-width:640px){ .mkt-head-sub{ font-size:12.5px; } }

/* "Coming soon" pages — floating gold crate icon (build 556) */
.soon-page-ico{ width:88px; height:88px; margin:0 auto 8px; color:var(--gold2,#eeb351); opacity:.92; filter:drop-shadow(0 6px 22px rgba(238,179,81,.28)); animation:soonFloat 3.6s ease-in-out infinite; }
.soon-page-ico svg{ width:100%; height:100%; display:block; }
@keyframes soonFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-7px); } }
@media (prefers-reduced-motion: reduce) and (min-width:100000px){ .soon-page-ico{ animation:none; } }
@media (max-width:560px){ .soon-page-ico{ width:72px; height:72px; } }

/* Deposit/Withdraw AMOUNT INPUT — big, bold, gold so the number you enter stands out like the
   top-right balance pill (build 560). The receive-side $ is toned to secondary so the input leads. */
.dw-calc-val{ align-items:center !important; }
.dw-calc-val input#depAmount, .dw-calc-val input#wdAmount, .dw-calc-val input#dwUsd, .dw-calc-val input#wdUsd{
  font-family:var(--fu) !important; font-size:25px !important; font-weight:900 !important;
  color:var(--gold2,#eeb351) !important; -webkit-text-fill-color:var(--gold2,#eeb351) !important;
  letter-spacing:.01em !important; line-height:1 !important; text-align:center !important;
  flex:1 1 auto !important; width:auto !important; min-width:0 !important;
}
.dw-calc-val > .coin-ico{ width:19px !important; height:19px !important; flex:0 0 auto; }
/* $ pay/receive fields: keep the value LEFT so the "$" hugs its number ("$10.00", not "$   10.00"); the
   coin amount fields stay centred (that's the one the space-on-the-right fix was for). */
.dw-calc-val input#dwUsd, .dw-calc-val input#wdUsd{ text-align:left !important; }
/* receive side now secondary (was oversized in build 549) so the input is the focal point */
.dw-usd-d{ font-size:1.25em !important; }

/* Deposit/Withdraw calc — VERTICAL stack: coins on top, the typeable $ directly BELOW (build 568). Both
   sides are matching bordered boxes; the $ is now an editable field, two-way bound to the coin amount.
   The number spin-buttons are hidden — they were crowding the big gold value (the "nested/overlapping" overlap). */
.dw-calc.dw-calc--stack{ display:flex !important; flex-direction:column; grid-template-columns:none; gap:9px; align-items:stretch; }
.dw-calc--stack .dw-calc-side{ gap:6px; min-width:0; }
.dw-calc--stack .dw-calc-val{ border:1px solid var(--ln,#262c3b); background:rgba(0,0,0,.3); border-radius:11px; padding:10px 14px; }
.dw-calc--stack .dw-calc-val:focus-within{ border-color:rgba(238,179,81,.55); box-shadow:0 0 0 3px rgba(238,179,81,.12); }
.dw-calc-eqv{ align-self:center; color:var(--t3,#8a93a6); font-size:14px; font-weight:800; line-height:1; margin:-1px 0; }
.dw-pay-cur{ flex:0 0 auto; color:var(--gold2,#eeb351); font-family:var(--fu); font-weight:900; font-size:25px; line-height:1; margin-right:1px; }
.dw-calc-bonus{ flex:0 0 auto; }
.dw-calc-val input[type=number]::-webkit-outer-spin-button,
.dw-calc-val input[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.dw-calc-val input[type=number]{ -moz-appearance:textfield; appearance:textfield; }

/* Coin fields (depAmount/wdAmount) use the coin_html overlay so the LEADING digits read bright and the last
   two dim — like coins everywhere else. The raw input text is forced transparent (higher specificity than the
   gold rule) so it can NOT double up over the ghost the way build 568 did, and the ghost renders in gold. */
.dw-calc-val .coin-fmt-holder{ flex:1 1 auto; min-width:0; }
.coin-fmt-holder > input#depAmount, .coin-fmt-holder > input#wdAmount{ width:100% !important; color:transparent !important; -webkit-text-fill-color:transparent !important; }
.dw-calc-val .coin-fmt-ghost .coin-d{ color:var(--gold2,#eeb351) !important; -webkit-text-fill-color:var(--gold2,#eeb351) !important; opacity:1 !important; font-weight:900 !important; }
.dw-calc-val .coin-fmt-ghost .coin-c{ color:var(--gold2,#eeb351) !important; -webkit-text-fill-color:var(--gold2,#eeb351) !important; opacity:.5 !important; font-weight:900 !important; }

/* Transactions — "view on-chain" shown as a compact clickable link-icon pill (build 571) */
.wr-scan-ico{ display:inline-flex; align-items:center; gap:4px; margin-left:8px; padding:1px 8px 1px 6px; border-radius:999px;
  background:rgba(238,179,81,.12); border:1px solid rgba(238,179,81,.32); color:var(--gold2,#eeb351) !important; font-weight:700; font-size:11px;
  text-decoration:none !important; vertical-align:middle; transition:background .15s, border-color .15s; }
.wr-scan-ico:hover{ background:rgba(238,179,81,.2); border-color:rgba(238,179,81,.55); }
.wr-scan-ico svg{ flex:0 0 auto; }
.wr-scan-txt{ line-height:1; }

/* Admin wallet-request — the member's payout address with a copy icon right beside it (build 571) */
.adm-wreq-acct{ display:inline-flex; align-items:center; gap:5px; flex-wrap:wrap; }
.adm-wreq-addr{ font-family:var(--fm,monospace); word-break:break-all; }
.adm-wreq-copy{ flex:0 0 auto; margin-left:2px; }

/* Admin — withdrawal History management strip: wallet address + copy + on-chain tx link (build 571) */
.adm-wd-item{ background:rgba(255,255,255,.015); border-radius:10px; }
.adm-wd-item + .adm-wd-item{ margin-top:3px; }
.adm-wd-manage{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:8px 12px 12px; border-bottom:1px solid rgba(255,255,255,.05); }
.adm-wd-addr{ display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--t2,#9aa3ad); min-width:0; }
.adm-wd-addr code{ font-size:12px; color:var(--t1,#e9eef2); background:rgba(0,0,0,.28); border:1px solid var(--ln,#262c3b); border-radius:6px; padding:2px 7px; max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.adm-wd-copy{ flex:0 0 auto; }
.adm-wd-txlink{ display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:#5cc8ff; text-decoration:none; background:rgba(92,200,255,.1); border:1px solid rgba(92,200,255,.3); border-radius:7px; padding:4px 9px; }
.adm-wd-txlink:hover{ background:rgba(92,200,255,.18); }
.adm-wd-scanform{ display:inline-flex; align-items:center; gap:6px; flex:1 1 240px; min-width:200px; }
.adm-wd-scaninput{ flex:1 1 auto; min-width:0; font-size:12px; padding:7px 9px; border-radius:7px; background:rgba(0,0,0,.25); border:1px solid var(--ln,#262c3b); color:var(--t1,#e9eef2); }
.adm-wd-scaninput:focus{ outline:none; border-color:rgba(238,179,81,.5); }
.adm-wd-scanbtn{ flex:0 0 auto; white-space:nowrap; }
.adm-wd-editcell{ display:flex; align-items:center; justify-content:flex-end; }
.adm-wd-editbtn{ display:inline-flex; align-items:center; gap:5px; font-size:11px; padding:5px 10px; white-space:nowrap; }
.adm-wd-editrow{ display:none !important; padding:2px 12px 12px; gap:6px; }
.adm-wd-refundrow{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:8px 12px 12px; }
.adm-wd-refund-note{ font-size:11.5px; color:#e6b06a; font-weight:600; }
.adm-wd-item.is-open .adm-wd-editrow{ display:flex !important; }
.adm-wd-item.is-open{ outline:1px solid rgba(238,179,81,.25); outline-offset:-1px; }
/* Withdrawal-approval link modal */
.adm-link-modal{ position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; padding:20px; }
.adm-link-modal[hidden]{ display:none; }
.adm-link-overlay{ position:absolute; inset:0; background:rgba(4,7,14,.72); backdrop-filter:blur(3px); }
.adm-link-card{ position:relative; z-index:1; width:min(480px,100%); background:var(--bg2,#141a2b); border:1px solid var(--ln,#262c3b); border-radius:16px; padding:22px; box-shadow:0 24px 70px rgba(0,0,0,.6); }
.adm-link-card h4{ margin:0 0 8px; font-size:17px; color:var(--t1,#eef1f7); }
.adm-link-card p{ margin:0 0 14px; font-size:12.5px; line-height:1.5; color:var(--t3,#96a0b5); }
.adm-link-card input{ width:100%; box-sizing:border-box; font-size:13px; padding:11px 12px; border-radius:9px; background:rgba(0,0,0,.3); border:1px solid var(--ln,#262c3b); color:var(--t1,#eef1f7); }
.adm-link-card input:focus{ border-color:rgba(238,179,81,.55); box-shadow:0 0 0 3px rgba(238,179,81,.12); outline:none; }
.adm-link-err{ display:none; margin-top:8px; font-size:11.5px; font-weight:700; color:#ffb4b4; }
.adm-link-err.show{ display:block; }
.adm-link-actions{ display:flex; gap:9px; justify-content:flex-end; margin-top:16px; }
/* ═══════════════ BLOG (public + admin) ═══════════════ */
.blog-wrap{ max-width:1000px; margin:0 auto; }
.blog-none{ padding:40px; text-align:center; color:var(--t3); }
.blog-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:18px; }
.blog-card{ display:flex; flex-direction:column; border-radius:16px; overflow:hidden; background:linear-gradient(180deg,rgba(23,27,40,.75),rgba(15,18,28,.72)); border:1px solid var(--rust-ln,rgba(255,255,255,.08)); text-decoration:none; transition:transform .16s,border-color .16s,box-shadow .16s; }
.blog-card:hover{ transform:translateY(-4px); border-color:rgba(238,179,81,.35); box-shadow:0 16px 34px rgba(0,0,0,.4); }
.blog-card-img{ aspect-ratio:16/9; overflow:hidden; background:rgba(0,0,0,.3); display:grid; place-items:center; }
.blog-card-img img{ width:100%; height:100%; object-fit:cover; }
.blog-card-imgph{ font:800 22px var(--fd); color:rgba(238,179,81,.35); letter-spacing:.08em; }
.blog-card-body{ padding:15px 16px 16px; display:flex; flex-direction:column; gap:7px; flex:1; }
.blog-card-title{ font:800 16px var(--fu); color:var(--t1); margin:0; line-height:1.3; }
.blog-card-ex{ font-size:12.5px; color:var(--t3); margin:0; line-height:1.5; flex:1; }
.blog-card-date{ font-size:11px; color:var(--t3); font-weight:600; }
.blog-pager{ display:flex; gap:6px; justify-content:center; margin-top:24px; flex-wrap:wrap; }
.blog-pg{ min-width:34px; height:34px; display:inline-flex; align-items:center; justify-content:center; border-radius:9px; border:1px solid var(--rust-ln); color:var(--t2); text-decoration:none; font-weight:700; font-size:13px; }
.blog-pg.on,.blog-pg:hover{ border-color:var(--gold2); color:var(--gold2); }
.blog-single{ max-width:760px; margin:0 auto; }
.blog-back{ display:inline-block; margin-bottom:16px; color:var(--t3); text-decoration:none; font-size:13px; font-weight:600; }
.blog-back:hover{ color:var(--gold2); }
.blog-cover{ border-radius:16px; overflow:hidden; margin-bottom:22px; border:1px solid var(--rust-ln); }
.blog-cover img{ width:100%; display:block; }
.blog-title{ font:900 34px/1.15 var(--fu); color:var(--t1); margin:0 0 10px; letter-spacing:-.01em; }
.blog-meta{ color:var(--t3); font-size:13px; font-weight:600; margin-bottom:24px; }
.blog-body{ color:var(--t1); font-size:16px; line-height:1.75; }
.blog-body h2{ font:800 24px var(--fu); margin:32px 0 12px; color:var(--t1); }
.blog-body h3{ font:800 19px var(--fu); margin:26px 0 10px; color:var(--t1); }
.blog-body p{ margin:0 0 18px; color:var(--t2); }
.blog-body a{ color:var(--gold2); }
.blog-body ul,.blog-body ol{ margin:0 0 18px; padding-left:22px; color:var(--t2); }
.blog-body li{ margin-bottom:8px; }
.blog-body img{ max-width:100%; border-radius:12px; margin:16px 0; }
.blog-body blockquote{ border-left:3px solid var(--gold2); margin:18px 0; padding:4px 0 4px 18px; color:var(--t2); font-style:italic; }
.blog-body code{ background:rgba(0,0,0,.3); padding:2px 6px; border-radius:6px; font-size:.9em; }
.blog-faq{ margin-top:40px; border-top:1px solid var(--rust-ln); padding-top:26px; }
.blog-faq h2{ font:800 22px var(--fu); margin:0 0 14px; color:var(--t1); }
.blog-faq-item{ border:1px solid var(--rust-ln); border-radius:12px; margin-bottom:10px; overflow:hidden; }
.blog-faq-item summary{ padding:14px 16px; cursor:pointer; font-weight:700; color:var(--t1); font-size:14.5px; list-style:none; }
.blog-faq-item summary::-webkit-details-marker{ display:none; }
.blog-faq-item[open] summary{ color:var(--gold2); }
.blog-faq-a{ padding:0 16px 14px; color:var(--t2); font-size:14px; line-height:1.6; }
.blog-adm-wrap{ display:grid; grid-template-columns:1.4fr 1fr; gap:20px; align-items:start; }
@media(max-width:900px){ .blog-adm-wrap{ grid-template-columns:1fr; } .blog-grid{ grid-template-columns:1fr; } }
.blog-adm-editor{ display:flex; flex-direction:column; gap:12px; }
.blog-adm-actions{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:4px; }
.blog-adm-list{ display:flex; flex-direction:column; gap:8px; }
.blog-adm-item{ display:flex; justify-content:space-between; align-items:center; gap:10px; padding:12px 14px; border-radius:11px; background:rgba(255,255,255,.03); border:1px solid var(--rust-ln); flex-wrap:wrap; }
.blog-adm-item-main{ min-width:0; }
.blog-adm-item-main b{ color:var(--t1); font-size:14px; }
.blog-adm-badge{ display:inline-block; margin-left:8px; padding:2px 8px; border-radius:6px; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.blog-adm-badge.on{ background:rgba(110,231,160,.16); color:#6ee7a0; }
.blog-adm-badge.off{ background:rgba(255,255,255,.08); color:var(--t3); }
.blog-adm-slug{ font-size:11.5px; color:var(--t3); margin-top:3px; word-break:break-all; }
.blog-adm-item-act{ display:flex; gap:6px; flex:0 0 auto; }
.blog-more{ max-width:1000px; margin:48px auto 0; border-top:1px solid var(--rust-ln); padding-top:30px; }
.blog-more h2{ font:800 22px var(--fu); color:var(--t1); margin:0 0 16px; }
/* ═══ blog post — reading progress + refined header + share ═══ */
.blog-progress{ position:fixed; top:0; left:0; right:0; height:3px; background:transparent; z-index:300; pointer-events:none; }
.blog-progress #blogProgressBar{ display:block; height:100%; width:0; background:linear-gradient(90deg,var(--gold2,#eeb351),#f0912e); box-shadow:0 0 10px rgba(238,179,81,.5); transition:width .1s linear; }
.blog-article-head{ margin-bottom:24px; }
.blog-eyebrow{ display:inline-block; font:800 11px var(--fu); letter-spacing:.14em; text-transform:uppercase; color:var(--gold2,#eeb351); margin-bottom:12px; }
.blog-meta{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; color:var(--t3); font-size:13px; font-weight:600; margin-bottom:0; }
.blog-avatar{ width:30px; height:30px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; background:linear-gradient(135deg,var(--gold2,#eeb351),#b9791f); color:#1a1206; font:800 13px var(--fu); flex:0 0 auto; }
.blog-by{ color:var(--t1); }
.blog-dot{ width:3px; height:3px; border-radius:50%; background:var(--t3); opacity:.6; flex:0 0 auto; }
.blog-share{ margin-top:36px; padding-top:22px; border-top:1px solid var(--rust-ln); display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.blog-share-label{ font:800 13px var(--fu); color:var(--t2); }
.blog-share-btns{ display:flex; gap:8px; flex-wrap:wrap; }
.blog-share-btn{ display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:9px; border:1px solid var(--rust-ln); background:rgba(255,255,255,.03); color:var(--t1); font-size:13px; font-weight:700; text-decoration:none; cursor:pointer; transition:border-color .16s,background .16s,color .16s; }
.blog-share-btn:hover{ border-color:var(--gold2,#eeb351); background:rgba(238,179,81,.08); }
.blog-share-btn.is-copied{ border-color:#6ee7a0; color:#6ee7a0; background:rgba(110,231,160,.08); }
/* ═══ blog index — subtitle + featured first post ═══ */
.blog-hero-sub{ color:var(--t3); font-size:14.5px; margin:10px 0 0; max-width:540px; line-height:1.5; }
.blog-featured{ display:grid; grid-template-columns:1.25fr 1fr; gap:0; border-radius:18px; overflow:hidden; background:linear-gradient(180deg,rgba(23,27,40,.8),rgba(15,18,28,.78)); border:1px solid var(--rust-ln); text-decoration:none; margin-bottom:22px; transition:border-color .16s,box-shadow .16s,transform .16s; }
.blog-featured:hover{ border-color:rgba(238,179,81,.4); box-shadow:0 18px 40px rgba(0,0,0,.42); transform:translateY(-3px); }
.blog-featured-img{ min-height:280px; background:rgba(0,0,0,.3); display:grid; place-items:center; overflow:hidden; }
.blog-featured-img img{ width:100%; height:100%; object-fit:cover; }
.blog-featured-body{ padding:34px; display:flex; flex-direction:column; justify-content:center; gap:13px; }
.blog-featured-tag{ display:inline-block; align-self:flex-start; font:800 10px var(--fu); letter-spacing:.12em; text-transform:uppercase; color:var(--gold2,#eeb351); background:rgba(238,179,81,.12); padding:4px 10px; border-radius:6px; }
.blog-featured-title{ font:900 27px/1.2 var(--fu); color:var(--t1); margin:0; letter-spacing:-.01em; }
.blog-featured-ex{ font-size:14px; color:var(--t3); line-height:1.6; margin:0; }
.blog-featured-meta{ font-size:12px; color:var(--t3); font-weight:600; }
@media(max-width:760px){ .blog-featured{ grid-template-columns:1fr; } .blog-featured-img{ min-height:0; aspect-ratio:16/9; } .blog-featured-body{ padding:22px; } .blog-featured-title{ font-size:22px; } }
/* blog admin — cover upload + preview */
.blog-cover-row{ display:flex; gap:8px; align-items:center; }
.blog-cover-row input#blCover{ flex:1 1 auto; min-width:0; }
.blog-cover-row #blCoverUpload{ flex:0 0 auto; white-space:nowrap; }
.blog-cover-preview{ position:relative; margin-top:10px; border-radius:11px; overflow:hidden; border:1px solid var(--rust-ln); max-width:340px; }
.blog-cover-preview img{ display:block; width:100%; max-height:190px; object-fit:cover; }
.blog-cover-clear{ position:absolute; top:8px; right:8px; width:28px; height:28px; border-radius:8px; border:none; background:rgba(10,12,20,.82); color:#fff; font-size:14px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.blog-cover-clear:hover{ background:rgba(220,60,60,.9); }
/* blog admin — content formatting toolbar */
.blog-toolbar{ display:flex; gap:4px; flex-wrap:wrap; margin-bottom:6px; }
.blog-toolbar button{ min-width:32px; height:30px; padding:0 9px; border-radius:7px; border:1px solid var(--rust-ln); background:rgba(255,255,255,.03); color:var(--t2); font-size:12.5px; font-weight:700; cursor:pointer; transition:border-color .14s,background .14s,color .14s; }
.blog-toolbar button:hover{ border-color:var(--gold2,#eeb351); color:var(--gold2,#eeb351); background:rgba(238,179,81,.08); }
.blog-wordcount{ margin-top:6px; font-size:11.5px; color:var(--t3); font-weight:600; text-align:right; }
/* Deposit/Withdraw values: full-width, centered, bright gold — clearly readable. (An earlier field-sizing
   approach shrank the input to its content, which some browsers rendered tiny/clipped, so the value looked
   faint. This keeps it simple and unmistakable.) */
.dw-calc--stack .dw-calc-val{ justify-content:center !important; }
.dw-calc-val input#dwUsd, .dw-calc-val input#wdUsd,
.dw-calc-val input#depAmount, .dw-calc-val input#wdAmount{
  flex:1 1 auto !important; width:auto !important; min-width:0 !important; max-width:none !important;
  text-align:center !important; opacity:1 !important;
  color:var(--gold2,#f4cd84) !important; -webkit-text-fill-color:var(--gold2,#f4cd84) !important;
}
.rg-toggle-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 18px; border-radius:14px; background:linear-gradient(100deg,rgba(238,179,81,.1),rgba(122,45,18,.06)); border:1px solid rgba(238,179,81,.28); flex-wrap:wrap; }
.rg-toggle-info{ font-size:13.5px; color:var(--t2); line-height:1.55; flex:1 1 320px; }
/* Ticket Rain — a companion strip HUNG under the Coin Rain card by a short NEUTRAL (colourless) connector,
   coloured to MATCH the Coin Rain (gold). Same side margins (10px) as the Coin Rain card so it's exactly as
   wide. The Coin Rain card's 9px bottom margin is the gap the connector spans. */
.tr-strip{ position:relative; display:flex; align-items:center; gap:10px; margin:0 10px 12px; padding:11px 14px; border-radius:16px; background:radial-gradient(58% 90% at 82% 32%, rgba(255,206,84,.28), transparent 60%), radial-gradient(120% 120% at 10% 118%, rgba(150,96,20,.32), transparent 64%), linear-gradient(160deg, #2a1f0c 0%, #1b1407 48%, #0c0a05 100%); border:1px solid rgba(255,206,84,.42); box-shadow:0 12px 30px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,236,180,.16), inset 0 0 40px rgba(120,80,15,.3); }
.tr-strip::before{ content:""; position:absolute; top:-9px; left:50%; transform:translateX(-50%); width:2px; height:9px; border-radius:2px; background:linear-gradient(180deg, rgba(255,206,84,.15), rgba(255,206,84,.6)); }
.tr-strip::after{ content:""; position:absolute; top:-11px; left:50%; transform:translateX(-50%); width:6px; height:6px; border-radius:50%; background:rgba(255,206,84,.75); box-shadow:0 0 8px rgba(255,206,84,.45); }
.tr-strip-ico{ flex:0 0 auto; width:30px; height:30px; display:grid; place-items:center; border-radius:9px; background:rgba(238,179,81,.16); color:var(--gold2,#f4cd84); box-shadow:0 0 12px -3px var(--gold2); }
.tr-strip-ico svg{ width:18px; height:18px; }
.tr-strip-txt{ flex:1 1 auto; min-width:0; font-size:12.5px; color:var(--t2); line-height:1.3; }
.tr-strip-txt b{ display:block; font-family:var(--fu); font-weight:900; font-size:13.5px; letter-spacing:.01em; background:linear-gradient(180deg,#ffe694,#f3a83e); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f3a83e; filter:drop-shadow(0 2px 4px rgba(243,168,62,.35)); }
.tr-strip-sub{ display:block; color:rgba(235,225,200,.6); font-size:10.5px; margin-top:1px; }
.tr-strip-info{ flex:0 0 auto; width:21px; height:21px; border-radius:50%; border:1px solid rgba(238,179,81,.45); background:rgba(238,179,81,.12); color:var(--gold2,#f4cd84); font:800 11px system-ui,sans-serif; cursor:pointer; display:grid; place-items:center; transition:background .15s,transform .1s; }
.tr-strip-info:hover{ background:rgba(238,179,81,.26); transform:scale(1.08); }
/* Rustly Trivia — staff start modal */
.chat-trivia-btn{ font-size:14px !important; }
.tv-modal{ position:fixed; inset:0; z-index:400; display:flex; align-items:center; justify-content:center; padding:16px; }
.tv-overlay{ position:absolute; inset:0; background:rgba(6,8,14,.72); }
.tv-card{ position:relative; z-index:1; width:100%; max-width:400px; background:linear-gradient(180deg,#171b28,#0f121c); border:1px solid var(--rust-ln,rgba(130,150,185,.2)); border-radius:16px; padding:22px; box-shadow:0 24px 60px rgba(0,0,0,.5); }
.tv-close{ position:absolute; top:12px; right:12px; width:30px; height:30px; border-radius:8px; border:1px solid var(--rust-ln); background:rgba(255,255,255,.04); color:var(--t2); cursor:pointer; }
.tv-card h3{ font:800 18px var(--fu); color:var(--t1); margin:0 0 16px; }
.tv-field{ display:block; margin-bottom:12px; }
.tv-field span{ display:block; font-size:12px; font-weight:700; color:var(--t2); margin-bottom:5px; }
.tv-field input{ width:100%; box-sizing:border-box; padding:10px 12px; border-radius:10px; border:1px solid var(--rust-ln); background:rgba(0,0,0,.3); color:var(--t1); font-size:14px; }
.tv-field input:focus{ border-color:var(--gold2,#eeb351); outline:none; }
.tv-msg{ font-size:12.5px; color:#ff9a9a; min-height:16px; margin-bottom:6px; }
.tv-actions{ display:flex; gap:8px; margin-top:6px; }
.tv-btn{ padding:10px 16px; border-radius:10px; font:800 13px system-ui,sans-serif; cursor:pointer; border:1px solid transparent; }
.tv-btn-go{ flex:1; background:linear-gradient(180deg,var(--gold2,#eeb351),#c8912f); color:#1a1206; border:none; }
.tv-btn-ghost{ background:rgba(255,255,255,.04); border:1px solid var(--rust-ln); color:var(--t2); }
.tv-btn:hover{ filter:brightness(1.05); }
/* Reward Games — recent activity history */
.rg-hist{ margin-top:14px; }
.rg-hist-title{ font:800 11px var(--fu); text-transform:uppercase; letter-spacing:.1em; color:var(--t3); margin-bottom:8px; }
.rg-hist-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 12px; border-radius:9px; background:rgba(0,0,0,.2); border:1px solid var(--rust-ln); margin-bottom:5px; font-size:12.5px; }
.rg-hist-main{ color:var(--t1); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rg-hist-main b{ color:var(--gold2,#eeb351); }
.rg-hist-when{ flex:0 0 auto; color:var(--t3); font-size:11.5px; }
/* Admin — database size table */
.db-size-list{ margin-top:6px; }
.db-size-row{ display:grid; grid-template-columns:1fr 120px 100px; gap:12px; align-items:center; padding:8px 12px; border-radius:8px; font-size:12.5px; }
.db-size-row:nth-child(odd){ background:rgba(255,255,255,.02); }
.db-size-head{ font:800 11px var(--fu); text-transform:uppercase; letter-spacing:.08em; color:var(--t3); background:none !important; }
.db-size-nm{ color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.db-size-row > span:nth-child(2), .db-size-row > span:nth-child(3){ text-align:right; color:var(--t2); }
.db-size-b{ font-weight:700; color:var(--gold2,#eeb351) !important; }
.db-size-total{ margin-top:10px; font-size:13px; color:var(--t2); text-align:right; }
.db-size-total b{ color:var(--t1); }
@media(max-width:560px){ .db-size-row{ grid-template-columns:1fr 80px 76px; gap:8px; font-size:11.5px; } }
/* Live trivia banner in chat (visible to everyone while a round is active) */
.chat-trivia-banner{ display:flex; align-items:center; gap:8px; padding:8px 12px; margin:0 0 6px; border-radius:10px; background:var(--bg,#151a2e); border:1px solid var(--vio-line); font-size:12.5px; animation:ctbIn .42s cubic-bezier(.2,.7,.3,1); }
@keyframes ctbIn{ from{ opacity:0; transform:translateY(-7px); } to{ opacity:1; transform:translateY(0); } }
.ctb-badge{ flex:0 0 auto; font:800 11px var(--fu); color:#f4cd84; white-space:nowrap; }
.ctb-q{ flex:1 1 auto; min-width:0; color:var(--t1); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ctb-reward{ flex:0 0 auto; color:var(--gold2,#eeb351); font-weight:700; font-size:11.5px; white-space:nowrap; }
/* Ticket Rain chat messages reuse the normal RAIN styling (same colour) — only the avatar shows a ticket
   icon and the tag reads TICKETS. Handled in app.js via rrStyleKind, so no separate CSS is needed here. */
/* ── Rustly Trivia chat broadcaster — distinct PURPLE look (matches the live banner) ── */
.chat-sys-ico-trivia{ color:var(--gold2); }
.chat-av .chat-sys-ico-trivia svg{ width:18px; height:18px; }
.chat-av .chat-sys-ico-trivia{ filter: drop-shadow(0 0 5px currentColor); }
.chat-messages .chat-message.chat-message-trivia{ border-radius:11px !important; margin-top:7px !important; padding:9px 11px 9px 13px !important; background:linear-gradient(100deg, rgba(238,179,81,.19), rgba(122,45,18,.12) 55%, rgba(238,179,81,.05)) !important; border:1px solid rgba(238,179,81,.36) !important; box-shadow:inset 3px 0 0 var(--gold2,#f4cd84), inset 0 0 22px rgba(238,179,81,.06), 0 2px 10px rgba(0,0,0,.28) !important; }
.chat-message-trivia .chat-sys-ico{ color:var(--gold2) !important; }
.chat-message-trivia .chat-body{ background:none !important; border:0 !important; }
.chat-message-trivia .chat-body p{ color:var(--gold2) !important; }
.chat-sys-tag-trivia{ color:var(--gold2) !important; border:1px solid rgba(238,179,81,.55) !important; background:rgba(238,179,81,.16) !important; box-shadow:0 0 11px -4px var(--gold2); }
/* Pending-requests badge on the Deposit & Withdraw admin tab (players wait on withdrawal approvals) */
.adm-tab-badge{ display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 5px; margin-left:5px; border-radius:9px; background:#e5484d; color:#fff; font:800 11px/1 var(--fu); vertical-align:middle; box-shadow:0 0 10px -2px #e5484d; }
.admin-nav-tab.active .adm-tab-badge{ background:#1a1205; color:#ffb4b4; box-shadow:none; }

/* ══════════════════════════════════════════════════════════════════════════════
   AUTHORITATIVE small-screen drawer behaviour (build 697) — THE FINAL WORD.
   Placed last so no accumulated/legacy rule (and no stale cached asset) can leave
   a drawer open on a phone. Below the desktop dock (≤1400px):
     • Chat  = bottom sheet, CLOSED by default, opens only when its FAB is tapped.
     • Raffle= bottom sheet, CLOSED by default, opens only when its FAB is tapped.
   Both are gated on an explicit "showing" signal on <body> (chat-open /
   rfd-mobile-showing), exactly like the raffle already was — so even if some other
   script strips a drawer's .closed class, the drawer STAYS hidden on small screens.
   Desktop docking (≥1401px) is deliberately NOT touched by this block.
   ══════════════════════════════════════════════════════════════════════════════ */
@media (max-width:1400px){
  /* ---- CHAT ---- */
  html body .chat-drawer{
    position:fixed !important; left:0 !important; right:0 !important; bottom:0 !important; top:auto !important;
    width:100% !important; height:auto !important; max-height:80vh !important; max-width:none !important;
    border-radius:18px 18px 0 0 !important; border-left:0 !important; border-right:0 !important; z-index:360 !important;
    transition:transform .28s ease !important;
  }
  /* CLOSED (default) OR no explicit open signal → fully gone: off-screen + invisible + inert. */
  html body:not(.chat-open) .chat-drawer,
  html body .chat-drawer.closed{
    transform:translateY(115%) !important; visibility:hidden !important; pointer-events:none !important;
  }
  /* OPEN only when the FAB set body.chat-open AND the drawer isn't .closed. */
  html body.chat-open .chat-drawer:not(.closed){
    transform:translateY(0) !important; visibility:visible !important; pointer-events:auto !important;
  }
  .chat-toggle{ display:inline-flex !important; }

  /* ---- RAFFLE ---- (transform already gated by body.rfd-mobile-showing elsewhere; add inert-when-hidden) */
  html body:not(.rfd-mobile-showing) .rfd-drawer{ visibility:hidden !important; pointer-events:none !important; }
  html body.rfd-mobile-showing .rfd-drawer{ visibility:visible !important; pointer-events:auto !important; }
  .rfd-mtoggle{ display:inline-flex !important; }

  /* Never reserve desktop dock gutters on small screens. */
  html body main.page{ margin-left:auto !important; margin-right:auto !important; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   BUILD 698 — small, safe mobile polish (additive; no layout risk).
   Everything else in the responsive system audited clean; these are two genuine
   usability wins found in a deep mobile audit:
     1) Provably-fair hashes were ellipsis-truncated on phones — you could copy them
        but not read/verify them by eye. Make the hash/nonce <code> swipe-scrollable
        and fully selectable on small screens so all 64 chars are reachable. The copy
        button still works exactly as before.
   ══════════════════════════════════════════════════════════════════════════════ */
@media (max-width:820px){
  .fair-seed-val code{
    overflow-x:auto !important; text-overflow:clip !important;
    -webkit-overflow-scrolling:touch; user-select:all; -webkit-user-select:all;
    scrollbar-width:none;
  }
  .fair-seed-val code::-webkit-scrollbar{ display:none; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   BUILD 699 — stop iOS Safari's focus-zoom on form fields (real, pervasive mobile
   annoyance). Safari auto-zooms the whole page whenever a FOCUSED text field has a
   font-size below 16px, then leaves the layout shifted. ~19 fields across the site
   (chat, search, deposit/withdraw, market filters, fairness seeds, affiliate copy,
   quickgame share, tip/promo) were 12–15px and each triggered that zoom on iPhone.
   Bumping every focusable text field to 16px on phones is the standard cure; it only
   applies ≤820px so tablet/desktop sizing is untouched. Non-text inputs (range,
   checkbox, radio) never zoom and are intentionally excluded.
   ══════════════════════════════════════════════════════════════════════════════ */
@media (max-width:820px){
  input[type=text], input[type=number], input[type=email], input[type=search],
  input[type=tel], input[type=url], input[type=password], input:not([type]),
  textarea, select{ font-size:16px !important; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   BUILD 700 — prevent accidental double-tap-zoom on tappable controls.
   Rustly is a fast, tap-heavy UI (bet, join, open case, coinflip, spin). Without a
   touch-action hint, a quick double-tap on a control can zoom the page instead of
   registering two taps, and adds the legacy ~300ms click delay. This was the one
   standard mobile property still missing (safe-area insets, overscroll-behavior,
   tap-highlight-color and text-size-adjust were already handled). Applied only to
   genuinely tappable elements, so gesture surfaces (the Rustpot map, swipeable rows,
   scroll areas) keep their default touch behaviour.
   ══════════════════════════════════════════════════════════════════════════════ */
a, button, [role="button"], input[type="button"], input[type="submit"],
input[type="reset"], input[type="checkbox"], input[type="radio"], select, summary{
  touch-action: manipulation;
}

/* ══════════════════════════════════════════════════════════════════════════════
   BUILD 701 — two reported live-view glitches.
   (A) Raffle prize image showed up late (esp. right after you Enter a raffle). The
       list re-renders on Enter, which recreates the <img>; with no placeholder the
       box sat blank until the image (re)painted. Now a gift-emoji placeholder always
       sits behind the image and the image fades in on load — never a blank/late pop.
   ══════════════════════════════════════════════════════════════════════════════ */
.rfd-thumb-ph{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:50px; opacity:.45; pointer-events:none; z-index:0; }
.rfd-thumb-img{ position:relative; z-index:1; opacity:0; transition:opacity .28s ease; }
.rfd-thumb-img.on{ opacity:1; }

/* ══════════════════════════════════════════════════════════════════════════════
   BUILD 702 — Rustflip game cards overflowed narrow phones. The card is a single
   flex row [creator | VS | open-side | wager | actions]; its min-content (~388px)
   is wider than a ~330px mobile column, so the grid track (1fr, which floors at
   min-content) expanded past the screen and the right coin/side was clipped.
   Fix: cap the track (minmax(0,1fr)), let the flex children shrink (min-width:0),
   ellipsize the creator name, and tighten gaps/coins on small screens so the whole
   card fits without clipping. Scoped to ≤480px so desktop is untouched. */
@media (max-width:480px){
  .cf-games-col,
  .cf-main-grid #cfOpenGames.cf-games-col{ grid-template-columns:minmax(0,1fr) !important; }
  .cf-game-row, .cf-game-card{ min-width:0 !important; gap:9px !important; }
  .cf-game-row *, .cf-game-card *{ min-width:0 !important; }
  .cf-game-creator{ flex:1 1 auto !important; min-width:0 !important; }
  .cf-game-name, .cf-creator-name,
  .cf-game-creator .cf-game-name,
  .cf-game-row [class*=name]{ min-width:0 !important; max-width:100% !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }
  .cf-game-actions{ min-width:0 !important; flex-shrink:1 !important; }
}

/* BUILD 702 (cont.) — affiliate link copy row overflowed by ~7px on the smallest phones
   (icon + button are non-shrink; the row itself wasn't capped to its container). Cap it. */
@media (max-width:480px){
  .affx-share-col, .affx-copy-row{ min-width:0 !important; max-width:100% !important; }
  .affx-copy-row{ box-sizing:border-box !important; }
  .affx-copy-input{ min-width:0 !important; }
}

/* BUILD 705 — clickable links in chat messages (auto-detected http/https URLs). */
.chat-body p a.chat-link{ color:#f4cd84; text-decoration:underline; text-decoration-color:rgba(244,205,132,.45); text-underline-offset:2px; word-break:break-word; transition:color .12s,text-decoration-color .12s; }
.chat-body p a.chat-link:hover{ color:#ffdf9a; text-decoration-color:#ffdf9a; }

/* BUILD 705 — trivia banner now stacks an optional image below the question row. */
.chat-trivia-banner{ flex-direction:column; align-items:stretch; }
.chat-trivia-banner .ctb-row{ display:flex; align-items:center; gap:8px; min-width:0; }
.ctb-img-wrap{ display:block; margin-top:8px; border-radius:10px; overflow:hidden; line-height:0; border:1px solid rgba(238,179,81,.32); background:rgba(0,0,0,.28); }
.ctb-img{ display:block; width:100%; max-height:160px; object-fit:contain; }

/* BUILD 705 — Creator live-stream: everyone-visible LIVE strip + the creator's own panel. */
.chat-live-strip{ display:flex; flex-direction:column; gap:6px; margin:0 0 6px; }
.cls-item{ display:flex; align-items:center; gap:8px; padding:7px 11px; border-radius:10px; text-decoration:none; background:linear-gradient(100deg,rgba(239,68,68,.16),rgba(239,68,68,.06)); border:1px solid rgba(239,68,68,.4); transition:filter .15s,transform .12s; }
.cls-item:hover{ filter:brightness(1.08); transform:translateY(-1px); }
.cls-dot{ width:8px; height:8px; border-radius:50%; background:#ff4d4d; box-shadow:0 0 0 0 rgba(255,77,77,.55); animation:clsPulse 1.5s ease-out infinite; flex:0 0 auto; }
@keyframes clsPulse{ 0%{box-shadow:0 0 0 0 rgba(255,77,77,.55)} 70%{box-shadow:0 0 0 7px rgba(255,77,77,0)} 100%{box-shadow:0 0 0 0 rgba(255,77,77,0)} }
.cls-live{ font:800 10px var(--fu); letter-spacing:.1em; color:#ff6b6b; flex:0 0 auto; }
.cls-name{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--t1); font-weight:700; font-size:12.5px; }
.cls-watch{ flex:0 0 auto; font:700 11px var(--fu); color:#ff8a8a; }
.creator-panel{ margin:0 0 8px; padding:9px 11px; border-radius:12px; background:rgba(255,255,255,.03); border:1px solid rgba(238,179,81,.28); }
.creator-panel.cp-on{ background:linear-gradient(100deg,rgba(239,68,68,.14),rgba(238,179,81,.08)); border-color:rgba(239,68,68,.42); box-shadow:0 0 0 1px rgba(239,68,68,.14); }
.cp-head{ display:flex; align-items:center; gap:7px; margin-bottom:7px; }
.cp-dot{ width:8px; height:8px; border-radius:50%; background:#eeb351; flex:0 0 auto; }
.creator-panel.cp-on .cp-dot{ background:#ff4d4d; animation:clsPulse 1.5s ease-out infinite; }
.cp-title{ font:800 11px var(--fu); letter-spacing:.06em; text-transform:uppercase; color:#f4cd84; flex:1 1 auto; }
.creator-panel.cp-on .cp-title{ color:#ffb3b3; }
.cp-state{ font:800 10.5px var(--fu); letter-spacing:.08em; color:var(--t3); }
.creator-panel.cp-on .cp-state{ color:#ff6b6b; }
.cp-row{ display:flex; gap:7px; align-items:center; }
.cp-row input{ flex:1 1 auto; min-width:0; padding:8px 10px; border-radius:8px; border:1px solid rgba(255,255,255,.14); background:rgba(0,0,0,.3); color:var(--t1); font-size:12.5px; }
.cp-btn{ flex:0 0 auto; padding:8px 14px; border-radius:8px; border:0; cursor:pointer; font:800 12px var(--fu); color:#fff; }
.cp-go{ background:linear-gradient(180deg,#eeb351,#b8862f); } .cp-go:hover{ filter:brightness(1.08); }
.cp-end{ background:linear-gradient(180deg,#ef4444,#b91c1c); } .cp-end:hover{ filter:brightness(1.08); }
.cp-msg{ font-size:11.5px; color:var(--t3); margin-top:5px; } .cp-msg:empty{ margin-top:0; }

/* BUILD 705 — creator LIVE announcement rendered as an in-flow chat card (replaces the pinned strip). */
.chat-message.chat-live-card{ display:block; padding:0; background:none; border:0; }
.chat-live-card .clc-inner{ display:flex; align-items:center; gap:10px; padding:11px 13px; border-radius:12px; background:color-mix(in srgb, var(--clc-accent,#ef4444) 15%, transparent); border:1px solid color-mix(in srgb, var(--clc-accent,#ef4444) 55%, transparent); box-shadow:0 0 0 1px color-mix(in srgb, var(--clc-accent,#ef4444) 12%, transparent),0 6px 18px -10px color-mix(in srgb, var(--clc-accent,#ef4444) 60%, transparent); animation:ctbIn .4s cubic-bezier(.2,.7,.3,1); }
.clc-badge{ display:flex; align-items:center; gap:5px; padding:4px 9px; border-radius:8px; background:var(--clc-accent,#ef4444); color:#fff; font:800 10px var(--fu); letter-spacing:.12em; flex:0 0 auto; }
.clc-badge svg{ width:15px; height:15px; }
.clc-dot{ width:7px; height:7px; border-radius:50%; background:#fff; animation:clcPulse 1.4s ease-out infinite; }
@keyframes clcPulse{ 0%{box-shadow:0 0 0 0 rgba(255,255,255,.6)} 70%{box-shadow:0 0 0 6px rgba(255,255,255,0)} 100%{box-shadow:0 0 0 0 rgba(255,255,255,0)} }
.clc-body{ flex:1 1 auto; min-width:0; }
.clc-name{ font-weight:800; font-size:13.5px; color:var(--t1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.clc-sub{ font-size:11.5px; color:#ffb3b3; font-weight:600; }
.clc-watch{ flex:0 0 auto; display:inline-flex; align-items:center; gap:5px; padding:8px 14px; border-radius:9px; background:var(--clc-accent,#ef4444); color:#fff; font:800 12px var(--fu); text-decoration:none; transition:filter .12s,transform .12s; }
.clc-watch:hover{ filter:brightness(1.1); transform:translateY(-1px); }
.clc-kick .clc-badge, .clc-kick .clc-watch{ color:#0b0f1a; }

/* BUILD 705 — trivia image: upload-a-file button next to the URL box. */
.tv-img-row{ display:flex; gap:8px; align-items:center; }
.tv-img-row input[type=text]{ flex:1 1 auto; min-width:0; }
.tv-upload-btn{ flex:0 0 auto; padding:9px 14px; border-radius:9px; border:1px solid rgba(238,179,81,.4); background:rgba(238,179,81,.16); color:#f4cd84; font:800 12px system-ui,sans-serif; cursor:pointer; white-space:nowrap; }
.tv-upload-btn:hover{ background:rgba(238,179,81,.26); }
.tv-upload-btn:disabled{ opacity:.6; cursor:default; }
.tv-img-status{ font-size:11.5px; margin-top:5px; color:var(--t3,#9a927f); }
.tv-img-status.ok{ color:#6ee7a0; } .tv-img-status.err{ color:#ff8a8a; }
.tv-img-status:empty{ margin-top:0; }

/* ══════════════ BUILD 708 ══════════════ */
/* #10 Trivia image lightbox (click enlarges in a modal instead of opening the link) */
.rr-lightbox{ position:fixed; inset:0; z-index:99999; display:none; align-items:center; justify-content:center; background:rgba(4,7,15,.86); backdrop-filter:blur(4px); padding:24px; }
.rr-lightbox.on{ display:flex; }
.rr-lightbox-inner{ position:relative; max-width:min(92vw,760px); max-height:88vh; }
.rr-lightbox-img{ max-width:100%; max-height:88vh; border-radius:14px; box-shadow:0 24px 60px rgba(0,0,0,.6); display:block; }
.rr-lightbox-x{ position:absolute; top:-14px; right:-14px; width:36px; height:36px; border-radius:50%; border:0; background:#1a1f2e; color:#fff; font-size:24px; line-height:34px; cursor:pointer; box-shadow:0 4px 12px rgba(0,0,0,.5); }
.rr-lightbox-x:hover{ background:#242b3d; }
/* #10 Trivia reward = the site coin icon + number (matches the top-right balance) */
.ctb-reward{ display:inline-flex; align-items:center; gap:4px; }
.ctb-reward .coin-ico{ flex:0 0 auto; width:1.05em; height:1.05em; margin-right:0; }

/* ══════════ #13 (BUILD 708) — welcome-card games get the nav Games-menu hover feel ══════════
   The card lifts + scales and its icon animates on hover, matching the dropdown. Uses ONLY transforms
   (composited → never reflow), so the label can't shift — the old "the labels kept shifting" was a
   layout-affecting animation; these are not. The high-specificity `:not(.qp-soon)` selectors override
   the build-348 no-hover rules; Coming-Soon cards stay static. */
html .hm-qp:not(.qp-soon){ transition:transform .2s cubic-bezier(.2,.7,.3,1), border-color .18s ease, box-shadow .18s ease !important; will-change:transform !important; }
html .hm-qp:not(.qp-soon):hover{ transform:translateY(-6px) scale(1.035) !important; box-shadow:0 16px 34px rgba(0,0,0,.5), 0 0 0 1px var(--qp-accent,transparent), inset 0 1px 0 rgba(255,255,255,.09) !important; }
html .hm-qp:not(.qp-soon):hover .hm-qp-ico{ transform:none !important; }               /* icon box stays put — only its SVG animates, so the label never gets shoved */
html .hm-qp:not(.qp-soon):hover .hm-qp-ico svg{ animation:hmQpIcoPop .85s ease-in-out !important; transform-origin:50% 50%; }
html .hm-qp:not(.qp-soon):hover::after{ transform:translateX(135%) !important; }        /* the diagonal sheen sweeps across, like the nav cards */
@keyframes hmQpIcoPop{ 0%,100%{ transform:rotate(0deg) scale(1); } 28%{ transform:rotate(-10deg) scale(1.14); } 58%{ transform:rotate(8deg) scale(1.08); } 80%{ transform:rotate(-3deg) scale(1.03); } }

/* ══════════ #9 (BUILD 708) — mobile menu drawer beautified ══════════ */
@media (max-width:1099px){
  .nav.open{
    background:linear-gradient(180deg, #171c2c, #0e1220) !important;
    border:1px solid rgba(140,160,210,.14) !important; border-top:0 !important;
    border-radius:0 0 20px 20px !important;
    box-shadow:0 22px 60px rgba(0,0,0,.66), inset 0 1px 0 rgba(255,255,255,.05) !important;
    padding:14px !important; gap:5px !important;
  }
  .nav.open a, .nav.open .nav-games-btn{ border-radius:12px !important; transition:background .16s ease, transform .12s ease !important; }
  .nav.open a:hover, .nav.open .nav-games-btn:hover{ background:rgba(120,140,190,.12) !important; }
  .nav.open a:active{ transform:scale(.985) !important; }
  .nav.open a.active{ background:linear-gradient(90deg, rgba(246,200,90,.16), rgba(246,200,90,.05)) !important; box-shadow:inset 3px 0 0 var(--gold2,#eeb351) !important; }
  .nav.open .nav-ico{ opacity:.9; }
  .nav.open a.active .nav-ico{ color:var(--gold2,#eeb351); opacity:1; }
}

/* ══════════ #1 (BUILD 708) — Creator panel as a modal opened from left of "Chat Rules" ══════════ */
.creator-open-btn{ position:relative; }
.creator-open-btn .cob-dot{ width:6px; height:6px; border-radius:50%; background:#eeb351; margin-right:2px; flex:0 0 auto; display:inline-block; }
.creator-open-btn.is-live .cob-dot, .creator-open-btn .cob-dot.on{ background:#ff4d4d; box-shadow:0 0 7px rgba(255,77,77,.85); animation:clsPulse 1.5s ease-out infinite; }
.creator-open-btn.is-live{ color:#ff8a8a !important; border-color:rgba(239,68,68,.4) !important; }
.creator-modal{ position:fixed; inset:0; z-index:100000; display:flex; align-items:center; justify-content:center; padding:20px; }
.creator-modal[hidden]{ display:none; }
.creator-modal-ov{ position:absolute; inset:0; background:rgba(4,7,15,.72); backdrop-filter:blur(3px); opacity:0; transition:opacity .2s ease; }
.creator-modal.on .creator-modal-ov{ opacity:1; }
.creator-modal .creator-panel{ position:relative; z-index:1; width:100%; max-width:420px; margin:0 !important; padding:18px !important;
  border-radius:16px !important; background:linear-gradient(180deg,#1a1f2e,#12141f) !important; border:1px solid rgba(238,179,81,.34) !important;
  box-shadow:0 30px 70px rgba(0,0,0,.6) !important; transform:translateY(10px) scale(.98); opacity:0; transition:transform .22s cubic-bezier(.2,.7,.3,1), opacity .2s ease; }
.creator-modal.on .creator-panel{ transform:translateY(0) scale(1); opacity:1; }
.creator-modal.on .creator-panel.cp-on{ background:linear-gradient(180deg,rgba(239,68,68,.16),rgba(26,31,46,.98)) !important; border-color:rgba(239,68,68,.44) !important; }
.creator-modal .cp-head{ margin-bottom:11px; }
.cp-x{ margin-left:6px; flex:0 0 auto; width:26px; height:26px; border-radius:7px; border:0; background:rgba(255,255,255,.06); color:var(--t2); font-size:20px; line-height:1; cursor:pointer; }
.cp-x:hover{ background:rgba(255,255,255,.12); color:#fff; }
.cp-desc{ font-size:12px; color:var(--t3); line-height:1.5; margin:0 0 13px; } .cp-desc b{ color:#ffb3b3; font-weight:800; }
.creator-modal .cp-row{ flex-direction:column; align-items:stretch; gap:9px; }
.creator-modal .cp-row input{ width:100%; padding:11px 12px; font-size:13px; }
.creator-modal .cp-btn{ width:100%; padding:11px 14px; font-size:13px; }

/* Mobile touch-target polish: case filter tabs were ~28px tall — bump to a comfortable ≥38px on
   touch screens (desktop stays compact). */
@media (max-width:760px){
  .cs-filter-tab{ padding:11px 16px !important; min-height:38px; }
  .cs-filter-tabs{ gap:6px !important; }
}

/* ══════════ Market purchase notification (bottom-right) — dedicated, independent of the disabled toast() ══════════ */
#rrBuyToastHost{ position:fixed; right:16px; bottom:16px; z-index:100001; display:flex; flex-direction:column; gap:8px; align-items:flex-end; pointer-events:none; }
.rr-buy-toast{ display:inline-flex; align-items:center; gap:10px; max-width:330px; padding:12px 15px; border-radius:12px;
  background:linear-gradient(180deg,#1a2130,#12151f); border:1px solid rgba(74,222,128,.4);
  box-shadow:0 14px 34px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05); color:var(--t1,#e8ecf4);
  font:700 13px var(--fu,inherit); letter-spacing:.01em; transform:translateX(120%); opacity:0;
  transition:transform .34s cubic-bezier(.2,.8,.3,1), opacity .34s ease; }
.rr-buy-toast.in{ transform:translateX(0); opacity:1; }
.rr-buy-toast.out{ transform:translateX(120%); opacity:0; }
.rr-buy-toast .rbt-ico{ flex:0 0 auto; width:26px; height:26px; border-radius:50%; display:grid; place-items:center; background:rgba(74,222,128,.16); color:#4ade80; }
.rr-buy-toast .rbt-msg{ min-width:0; line-height:1.3; }
@media (max-width:560px){ #rrBuyToastHost{ right:10px; bottom:10px; left:10px; align-items:stretch; } .rr-buy-toast{ max-width:none; } }

/* ═══════════════════ System-message CARDS in chat (coin rain / ticket rain / raffle / tip / trivia /
   announcement / bonus / races) ═══════════════════
   Upgraded from the old compact one-line tags into designed, accent-tinted cards with a prominent icon
   badge — the look the operator asked for (gold coin/ticket reference). Each type carries its own accent
   via --sys-accent; coin/ticket/raffle stay site-gold, tips go green (money in), trivia goes blue. */
.chat-message.chat-message-system{
  --sys-accent:#f5c451;
  display:flex !important; align-items:center; gap:11px;
  margin:8px 2px !important; padding:11px 13px !important;
  border-radius:14px !important;
  background:linear-gradient(150deg, color-mix(in srgb, var(--sys-accent) 16%, transparent), color-mix(in srgb, var(--sys-accent) 4%, transparent)) !important;
  border:1px solid color-mix(in srgb, var(--sys-accent) 34%, transparent) !important;
  box-shadow:0 8px 22px -14px color-mix(in srgb, var(--sys-accent) 65%, transparent), inset 0 1px 0 rgba(255,255,255,.05) !important;
  animation:sysCardIn .38s cubic-bezier(.2,.7,.3,1);
}
@keyframes sysCardIn{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
.chat-message.chat-message-system.chat-message-trivia{ --sys-accent:#f4cd84; }     /* trivia now uses the ONE site gold, like every other broadcaster */
/* icon badge (left) */
.chat-message.chat-message-system .chat-av{
  flex:0 0 auto; width:40px !important; height:40px !important; min-width:40px; border-radius:12px !important;
  display:grid !important; place-items:center; overflow:visible;
  background:radial-gradient(circle at 32% 26%, color-mix(in srgb, var(--sys-accent) 34%, transparent), color-mix(in srgb, var(--sys-accent) 10%, transparent)) !important;
  border:1px solid color-mix(in srgb, var(--sys-accent) 42%, transparent) !important;
  box-shadow:0 2px 8px -3px color-mix(in srgb, var(--sys-accent) 60%, transparent);
}
.chat-message.chat-message-system .chat-av .chat-sys-ico,
.chat-message.chat-message-system .chat-av .chat-sys-ico-rain,
.chat-message.chat-message-system .chat-av .chat-sys-ico-raffle,
.chat-message.chat-message-system .chat-av .chat-sys-ico-tip,
.chat-message.chat-message-system .chat-av .chat-sys-ico-trivia{
  color:var(--sys-accent) !important; background:none !important; width:auto !important; height:auto !important;
}
.chat-message.chat-message-system .chat-av .chat-sys-ico svg{ width:21px !important; height:21px !important; }
.chat-message.chat-message-system .chat-av img{ width:40px !important; height:40px !important; border-radius:12px; }
/* body (right): tag + text */
.chat-message.chat-message-system .chat-body{ flex:1 1 auto; min-width:0; }
.chat-message.chat-message-system .chat-msg-head{ gap:6px; margin-bottom:1px; }
.chat-message.chat-message-system .chat-sys-tag,
.chat-message.chat-message-system .chat-name{
  display:inline-block !important; font:800 10px var(--fu) !important; letter-spacing:.12em !important;
  color:var(--sys-accent) !important; background:none !important; border:0 !important; padding:0 !important;
  text-shadow:none !important; filter:none !important;
}
.chat-message.chat-message-system .chat-body p{
  color:var(--t1) !important; font-weight:600 !important; font-size:12.5px !important;
  line-height:1.36 !important; margin:1px 0 0 !important;
}
/* keep the coin amounts / skin thumbs inside the text readable on the tinted card */
.chat-message.chat-message-system .chat-body p .coin-amt,
.chat-message.chat-message-system .chat-body p b{ color:#fff !important; }
@media (max-width:560px){
  .chat-message.chat-message-system{ gap:9px; padding:10px 11px !important; }
  .chat-message.chat-message-system .chat-av{ width:34px !important; height:34px !important; min-width:34px; }
  .chat-message.chat-message-system .chat-av .chat-sys-ico svg{ width:18px !important; height:18px !important; }
}

/* ═══ Rustly Guess docked at the TOP of the Raffles panel (when a guess is live) ═══
   Overrides the floating-widget positioning so the guess sits inline above the raffle list. */
#predWidget.pred-in-raffle{
  position:static !important; right:auto !important; bottom:auto !important; left:auto !important;
  top:auto !important; width:auto !important; max-width:none !important;
  margin:0 0 2px !important; z-index:1 !important; animation:predDockIn .34s cubic-bezier(.2,.7,.3,1);
  border-left:0 !important; border-right:0 !important; border-top:0 !important; border-radius:0 !important;   /* no left/right frame — full raffle width */
  border-bottom:1px solid var(--ln, rgba(255,255,255,.08)) !important;   /* just a divider above the Raffles header */
  box-shadow:none !important;
}
@keyframes predDockIn{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:none; } }
#predWidget.pred-in-raffle .pred-w-min{ display:none; }   /* no minimise when docked in the panel */
#predWidget.pred-in-raffle .pred-w-head{ padding-left:14px !important; padding-right:14px !important; }   /* align inner content with the header's padding */
#predWidget.pred-in-raffle .pred-w-body{ padding-left:14px !important; padding-right:14px !important; }

/* Blend the docked Guess INTO the dark raffle panel (the floating widget's bright-gold header + card
   glow clashed / "looked out of place"). Subdue the header to a dark gold-tint, gold title, no shimmer, and let
   the body sit on the panel background — so it reads as a native section, not a pasted-in card. */
#predWidget.pred-in-raffle{ background:transparent !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; animation:none !important; overflow:visible !important; }
#predWidget.pred-in-raffle::before{ display:none !important; }   /* kill the animated gold sheen border so it reads as part of the panel, not a pasted-in card */
#predWidget.pred-in-raffle .pred-w-head{
  background:transparent !important;
  border-top:0 !important; border-bottom:1px solid var(--ln) !important;   /* divider under the title — same line as the "Raffles" header */
  padding-top:13px !important; padding-bottom:13px !important;
}
#predWidget.pred-in-raffle .pred-w-head::after{ display:none !important; }
#predWidget.pred-in-raffle .pred-w-title{ display:inline-flex !important; align-items:center; gap:6px !important; color:#4a3400 !important; font-size:13px !important; font-weight:900 !important; letter-spacing:.03em !important; background:#fcd87e !important; padding:3px 11px !important; border-radius:8px !important; box-shadow:0 1px 3px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.42) !important; }
#predWidget.pred-in-raffle .pred-w-title svg{ filter:none !important; }
#predWidget.pred-in-raffle .pred-w-live{ color:#f0a3a3 !important; }
#predWidget.pred-in-raffle .pred-w-body{ background:transparent !important; }

/* Chat input remaining-character counter (160 cap) — sits at the right edge inside the input. */
.chat-form .chat-input-wrap{ flex:1 1 auto; min-width:0; position:relative; display:flex; }
.chat-form .chat-input-wrap #chatInput{ flex:1 1 auto; width:100%; padding-right:42px; }
.chat-char-count{ position:absolute; right:11px; top:50%; transform:translateY(-50%); font:700 10px var(--fu,inherit); letter-spacing:.02em; color:var(--t3,#9aa6bd); opacity:.55; pointer-events:none; transition:color .15s ease, opacity .15s ease; }
.chat-char-count.cc-low{ color:#f5c451; opacity:1; }
.chat-char-count.cc-min{ color:#f87171; opacity:1; }

/* Chat emotes render inline at a modest fixed size (they had NO size rule → images showed at their full
   natural resolution, so even one big emote could wallpaper the chat). This pairs with the per-message
   emote cap: a handful of emotes now sit neatly on the text line instead of covering the panel. */
.chat-emote{ height:26px; width:auto; max-width:84px; max-height:26px; vertical-align:middle; object-fit:contain; display:inline-block; margin:0 1px; }
.chat-reply-quote .chat-emote{ height:16px; max-height:16px; max-width:40px; }   /* smaller in the reply preview line */

/* Emote picker thumbnails fit their grid cell (the popup is an 8-col grid; images had NO size rule so
   full-res emotes blew the grid apart). */
.chat-emoji-pop .emote-pick img, .emote-pick img{ width:100%; height:26px; max-height:26px; object-fit:contain; display:block; }

/* Creator panel: go-live cooldown warning message (amber, distinct from the neutral status text). */
.cp-warn{ color:#f5c451 !important; font-weight:700; }

/* ════════ RAKEBACK CARDS — one border for all three ═════════════════════════════════════════
   Measured cascade before this rule:

       DAILY    .rb-card.rb-daily   border-color:rgba(238,179,81,.35) !important   ← amber
       WEEKLY   .rb-card            border:1px solid var(--ln) !important           ← neutral
       MONTHLY  .rb-card            border:1px solid var(--ln) !important           ← neutral

   So only DAILY carried the yellow frame, and against it the other two read as having no frame at
   all. There are amber rules on weekly and monthly too (lines ~2855, ~2856, ~8831) but they lose to
   the later `.rb-card` shorthand — dead declarations that would resurrect the inconsistency the
   moment anyone touched that shorthand. All three are pinned to the same neutral border here.

   `:not(:hover)` is deliberate: this needs to outrank `.rb-card.rb-daily` (0,2,0) without also
   outranking `.rb-card:hover`, so the amber hover feedback survives on all three cards. */
.rb-card.rb-daily:not(:hover),
.rb-card.rb-weekly:not(:hover),
.rb-card.rb-monthly:not(:hover){ border-color:var(--ln) !important; }

/* ════════ COINFLIP MODAL — the X must clear the header, at every width ══════════════════════════
   Measured heights: .topbar-inner has a 74px min-height at top level and 64px at ≤980px, plus the
   bar's own 1px border, and it can render TALLER still because its content (34px brand logo, the
   balance pill, nav items) sits inside its own padding. --topstrip-h is 0px.

   The close button was pinned to the viewport at a hardcoded top:72px, then top:70px — both landing
   right on that boundary, which is why it kept ending up inside the menu. It has been "fixed" twice
   that way already; a third magic number would fail the same way on the next layout tweak.

   So the offset is derived instead: the tallest header rule (74px) plus the strip plus a real gap.
   The card is brought down to sit just under the X and its height reduced to match — the modal is a
   little smaller, which is what was asked for, and the X now overlaps the card's own top-right
   corner rather than floating over the nav.

   The viewport pin itself is kept on mobile ON PURPOSE: the card scrolls internally there, and an
   absolutely-positioned X scrolls out of reach with it. That was the original bug behind the pin. */
:root{
  /* One place for "the first y a floating element may occupy". 74px is the tallest .topbar-inner
     min-height in this file; the bar adds its own 1px border and its content can push it further,
     so the +10 is real clearance rather than decoration. Anything pinned or stuck below the header
     should derive from this instead of guessing a pixel — two separate attempts at guessing (the
     coinflip X at 72 then 70) both landed inside the menu. */
  --rr-below-header: calc(var(--topstrip-h, 0px) + 74px + 10px);
  --cf-x-top: var(--rr-below-header);
}

/* The arena's prize/timer panel sticks while the page scrolls, and it was doing so at a literal 80px
   — 5px below a 75px header, the same margin that made the coinflip card tuck under the nav. Derived
   now, so it cannot be squeezed out by a taller bar.

   Two other literal pins were checked and deliberately left alone: `.nav`'s top:68px is dead (a later
   rule makes it position:static), and `.nav-games-menu` at top:72px is a DROPDOWN — overlapping the
   bar by a few pixels is how it reads as attached to it, and its z-index already puts it on top. */
.control-panel{ top: var(--rr-below-header) !important; }

/* Desktop: the X is absolute inside the card, so it cannot hit the header — but the CARD itself was
   starting at 80px, only ~5px below a 75px header. Give it room and take the height back. */
.cf-modal{ padding-top: calc(var(--cf-x-top) + 4px) !important; padding-bottom: 22px !important; }
.cf-modal-card{ max-height: calc(100vh - var(--cf-x-top) - 34px) !important; }

@media (max-width:640px){
  /* The X is absolute INSIDE the card (exactly like desktop) so it always lands on the card's
     top-right corner — it can no longer float in mid-air above a vertically-centred card, which is
     what "position:fixed to the header line" produced when the card sat lower than that line. The
     modal (z-index 2000) covers the sticky header (z-index 1000), so a corner X never hits the menu. */
  .cf-modal-close{
    position: absolute !important;
    top: 12px !important;
    right: 12px !important;
    z-index: 3000 !important;
  }
  .cf-modal{ padding-top: calc(var(--cf-x-top) - 6px) !important; padding-bottom: 16px !important; }
  .cf-modal-card{ max-height: calc(100vh - var(--cf-x-top) - 26px) !important; }
}

/* ════════ CHAMPION ARENA — one light source, and nothing arguing with it ════════════════════════
   The arena had six decorative layers running at once: a floating-dot ambience, a purple perspective
   grid, grunge, an orange firelight, a scenery silhouette and eight embers. Two of them were pulling
   in opposite directions at almost equal strength — a saturated violet grid at rgba(165,142,240,.30)
   over a warm firelight at rgba(244,140,52,.28). Opposite colour temperatures in the same space do
   not read as richness; they cancel into a muddy brown-violet, and neither looks chosen. The grid was
   also declared twice, the later rule running at nearly double the earlier one's strength.

   The subject decides the direction. This is Rust: sodium worklight, rusted steel, concrete dust —
   not an arcade floor. So the violet goes, and the fire between the two fighters becomes the single
   thing the scene is lit by. Everything else drops back far enough to be atmosphere rather than
   pattern: the floor keeps a hint of structure instead of a neon lattice, the embers thin out from
   confetti to a few sparks, and the silhouette sits back as depth.

   Spending the boldness in one place is the whole point — the warm low light is what should be
   remembered, so nothing else is allowed to compete with it.

   MEASURED afterwards in a real browser, because "recomposed around one light" was a claim, not a
   fact. What is true: the violet is gone. The grid resolves to rgba(196,206,224,.055) at opacity .5
   against the old rgba(165,142,240,.30) — the same lines eleven times fainter and no longer tinted.

   The fire took two goes. Centred at 126% of a 268px layer it sat ~68px BELOW the panel, so only the
   gradient's faded edge was ever drawn and the measured warmth barely moved. The layer itself starts
   150px down, which is what makes percentages misleading here: even 102% was still outside. At 92%
   the bright core finally lands inside the panel, and the rendered profile becomes a light source
   rather than a rumour — warmth (red minus blue) measured down the panel:

       45-70%   -32 … -30   cool, untouched
       75%      -27
       80%      -18
       85%       -8
       90%       +2         crosses into warm
       95%      +15

   Against the original background the bottom band is +38 warmer and the middle and top are
   unchanged, which is the whole intent: one source, low, with nothing above competing. */

/* the violet lattice: gone. A faint cool floor haze keeps the ground reading as ground. */
.arena-floor3d-grid{
  background-image:
    repeating-linear-gradient(0deg,  transparent 0 46px, rgba(196,206,224,.055) 46px 47px),
    repeating-linear-gradient(90deg, transparent 0 46px, rgba(196,206,224,.040) 46px 47px) !important;
  opacity:.5 !important;
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 55%, #000 100%);
          mask-image: linear-gradient(180deg, transparent 0%, #000 55%, #000 100%);
}
.arena-floor3d::after{
  background:linear-gradient(90deg, transparent, rgba(214,222,236,.16), transparent) !important;
}

/* the violet wash over the whole panel, which was lifting everything toward the grid's temperature */
.arena::before{
  background:radial-gradient(520px 260px at 50% 0%, rgba(226,214,190,.05), transparent 72%) !important;
}

/* THE SIGNATURE: one warm source, low and centred, where the fire between the fighters would be.
   Slightly stronger and reaching a little higher than before, because it is now carrying the scene
   on its own rather than fighting for attention. */
/* Centred at 126% of a 268px-tall layer, the bright core of this ellipse sat ~68px BELOW the panel
   and only its faded edge was ever drawn — measured warmth at the bottom band was -15 against -30
   elsewhere, i.e. barely there. Brought up to 102% with a shorter vertical radius so the hot part
   lands inside the panel, where a fire between two fighters would actually be. */
.arena-firelight{
  background:
    radial-gradient(120% 78% at 50% 92%, rgba(252,158,66,.40), rgba(206,88,26,.16) 44%, transparent 76%),
    radial-gradient(64% 40% at 50% 90%, rgba(255,186,96,.32), transparent 66%) !important;
}
.arena-firelight::after{
  background:radial-gradient(44% 28% at 50% 91%, rgba(255,132,44,.22), transparent 66%) !important;
}

/* quieter surround: the dark has to stay dark for the firelight to have anything to work against */
.arena-grunge{ opacity:.62 !important; }
.arena-scenery{ opacity:.34 !important; }

/* sparks, not confetti — four visible instead of eight, and dimmer */
.arena-embers span:nth-child(n+5){ display:none !important; }
.arena-embers span{ opacity:.5 !important; }
.arena-ambiance i{ opacity:.28 !important; }

@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .arena-embers, .arena-ambiance{ display:none !important; }
}
/* Same fault as the banner, found by the same screen check: .arena-ambiance floats 4x4 particles
   across the arena and they pass over the Verify Round button. Fainter than the banner's orbs
   (0.28 against 0.86) so it does not obscure the label the way those did, but it is still animation
   running over a control on a device that pays for every repaint. The arena keeps its atmosphere on
   a desktop; a phone gets the fire and the scenery, which are static. */
@media (max-width:720px){
  .arena-ambiance, .arena-embers{ display:none !important; }
}

/* The warm pool is drawn with a % of WIDTH for its horizontal radius and a % of HEIGHT for its
   vertical one, so its shape follows the panel's. Measured across the three layouts:

       desktop 1100x420   pool 3.46 : 1  — wide and low, a fire on the floor
       tablet   780x430   pool 2.39 : 1  — still low
       mobile   360x560   pool 0.85 : 1  — TALLER than wide: a column standing up the screen

   Below 1.0 it stops being a fire on the ground and becomes a vertical shaft of light, which is a
   different picture entirely. The panel is roughly four times taller relative to its width on a
   phone, so the percentages have to change with it. Widening the horizontal radius and cutting the
   vertical one puts the pool back on the floor (1.97 : 1) without touching the desktop composition. */
@media (max-width:720px){
  .arena-firelight{
    background:
      radial-gradient(185% 52% at 50% 92%, rgba(252,158,66,.40), rgba(206,88,26,.16) 46%, transparent 76%),
      radial-gradient(102% 28% at 50% 90%, rgba(255,186,96,.32), transparent 66%) !important;
  }
  .arena-firelight::after{
    background:radial-gradient(76% 20% at 50% 91%, rgba(255,132,44,.22), transparent 66%) !important;
  }
  /* the floor lines get proportionally huge on a narrow panel — tighten them so they still read as a floor */
  .arena-floor3d-grid{
    background-image:
      repeating-linear-gradient(0deg,  transparent 0 30px, rgba(196,206,224,.055) 30px 31px),
      repeating-linear-gradient(90deg, transparent 0 30px, rgba(196,206,224,.040) 30px 31px) !important;
  }
}

/* ════════ VISIBLE KEYBOARD FOCUS ══════════════════════════════════════════════════════════════
   Measured across the stylesheet: 34 rules remove the focus outline and 4 give one back, but the
   removals carry !important and the replacements do not. Resolving the cascade for each control:

       button / a / .brand   :focus-visible   → outline: none !important
       input / select / textarea              → outline: none !important

   So there was no keyboard focus indicator anywhere. Some inputs shift their border on focus, which
   is at least discoverable; buttons, links and the logo gave nothing at all, and tabbing through the
   nav was invisible. That is a real barrier, not a polish item.

   Restored on :focus-visible only, so a mouse click still never draws a ring — the outline appears
   for keyboard and assistive navigation, which is the whole point of the pseudo-class. Specificity
   is matched element-for-element (a:focus-visible against a:focus, both 0,1,1) so these win on
   source order rather than by escalating into a specificity fight. Amber, because it is the one
   accent that reads on both the dark cards and the gold buttons. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible{
  outline: 2px solid rgba(238,179,81,.92) !important;
  outline-offset: 2px !important;
}
/* on a dark panel the ring needs a sliver of separation to stay legible against the card edge */
.arena a:focus-visible, .arena button:focus-visible,
.panel a:focus-visible, .panel button:focus-visible,
.app-modal a:focus-visible, .app-modal button:focus-visible{
  outline-offset: 3px !important;
}

/* ════════ MOBILE USABILITY ═════════════════════════════════════════════════════════════════════
   Two measured faults, not a general tidy-up.

   1. THE ZOOM TRAP. 32 form controls across the site set a font-size below 16px — chat at 12px,
      login at 14px, deposit/withdraw/tip/promo fields at 13px. Safari on iOS responds to focusing
      any control under 16px by zooming the page in, and it does not zoom back out when the field
      is blurred. So tapping the chat box left the whole site magnified and the player had to pinch
      out by hand, every time. Raising the controls to 16px on phones removes the trigger entirely;
      it is the single change that most affects how the site feels to use on a phone.

   2. TAP TARGETS. 50 selectors give buttons a height under 40px, some as small as 30px
      (.cf-watch-btn, .cf-verify-btn) against a 44px guideline. On a phone that is a mis-tap. Raised
      to 44 for things that are actually pressed — deliberately NOT for the icons and spinners that
      live inside buttons, which would otherwise inflate their parents.

   Scoped to 720px and below so nothing about the desktop layout moves. */
@media (max-width:720px){

  /* 1 — never let a control sit under the iOS zoom threshold */
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
  select,
  textarea{
    font-size:16px !important;
  }
  /* the coin overlay that sits on top of a money input has to track it exactly, or the digits
     it draws stop lining up with the ones being typed */
  .coin-fmt-ghost{ font-size:16px !important; }

  /* 2 — a finger needs 44px */
  button,
  .btn, .btn-primary, .btn-sm, a.btn, [role="button"],
  .adm-btn, .chat-form button,
  .cf-join-btn, .cf-cancel-btn, .cf-watch-btn, .cf-verify-btn,
  .btn-daily, .btn-verify, .rr-claim, .skin-btn{
    min-height:44px !important;
  }
  /* …but the decoration inside them keeps its own size */
  .btn-ico, .ic, button svg, a.btn svg,
  .btn-primary.loading::after, .btn.loading::after{
    min-height:0 !important;
  }
  /* icon-only controls stay square rather than becoming tall slots */
  .profile-avatar-btn, .rr-toast-x, .app-modal__close, .cf-modal-close{
    min-width:44px !important;
    min-height:44px !important;
  }
}

/* ════════ MOBILE VIEWPORT HEIGHT ══════════════════════════════════════════════════════════════
   17 interactive containers size themselves in vh — modals, the chat drawer, the notification
   panel. On a phone `100vh` is the viewport WITHOUT the address bar, which is taller than what you
   can actually see while the bar is showing. So a modal at 92vh, or the chat drawer pinned to
   calc(100vh - header), runs off the bottom: the drawer's message box and a modal's confirm button
   end up below the fold, and scrolling cannot reach them because the container is what overflows.

   Written as a vh declaration followed by a dvh one, which is the pattern this codebase already
   uses in patch94.css for the wallet modals — a browser without dvh simply ignores the second line
   and keeps the first. An @supports block was written here first and replaced: it does the same job
   but adds a second way of expressing one idea, and the existing pattern is already documented.

   Selectors match the specificity of what they override — `html body .chat-drawer` exists at
   (0,1,2) with !important, so a bare `.chat-drawer` here would silently lose. */
@media (max-width:720px){
  html body .chat-drawer{
    height:calc(100vh - var(--rr-header-h, 64px)) !important;
    height:calc(100dvh - var(--rr-header-h, 64px)) !important;
    max-height:78vh !important; max-height:78dvh !important;
  }
  html body .chat-panel{ max-height:80vh !important; max-height:80dvh !important; }
  .rfd-drawer{ height:82vh !important; height:82dvh !important;
               max-height:82vh !important; max-height:82dvh !important; }
  .notif-panel{ max-height:70vh !important; max-height:70dvh !important; }
  .sup-panel{ max-height:calc(100vh - 100px) !important; max-height:calc(100dvh - 100px) !important; }

  .cf-modal-card{ max-height:calc(100vh - var(--cf-x-top) - 26px) !important;
                  max-height:calc(100dvh - var(--cf-x-top) - 26px) !important; }
  .app-modal__card, .cs-modal-card{ max-height:92vh !important; max-height:92dvh !important; }
  .chat-rules-modal-card{ max-height:80vh !important; max-height:80dvh !important; }
  .rfd-vmodal-card{ max-height:86vh !important; max-height:86dvh !important; }
  .rfd-cmodal-card{ max-height:90vh !important; max-height:90dvh !important; }
  .cf-create-card{ max-height:90vh !important; max-height:90dvh !important; }
}

/* Two admin values force `white-space:nowrap` without a scroller under them: a withdrawal wallet
   address (34-42 chars) and the settings divider's code. On a phone those push the page sideways.
   Everything else that was checked came back correct and is deliberately left alone — bare <code>
   already wraps (white-space:pre-wrap; word-break:break-all), .fair-seed-input truncates with an
   ellipsis, and .fair-seed-val's nowrap is paired with overflow-x:auto so it scrolls on purpose. */
@media (max-width:720px){
  .adm-wd-addr code, .adm-set-divider code{
    white-space:normal !important;
    overflow-wrap:anywhere;
    word-break:break-all;
  }
}

/* ════════ MOBILE, MEASURED IN A REAL BROWSER ═══════════════════════════════════════════════════
   The earlier pass at this set min-height on a list of selectors picked by reading the stylesheet.
   Rendering the pages at 390x844 in Chrome and measuring every visible control showed what that
   missed: min-height does nothing for WIDTH, and the list did not include the controls people
   actually press most. Measured, before this block:

       .rb-claim    140x38, 161x38, 170x38   the reward claim buttons
       #menuToggle   38x44                   too narrow, not too short
       #cantaBtn     40x44   #notifBell 40x44
       .brand        51x34
       .ftr-soc      40x40   .ftr-mail 137x20

   And text the same way: .hm-qp-soon at 8px, .rr-task-badge 9.5px, .eyebrow 10px — sizes that are
   legible on a monitor and not on a phone held at arm's length.

   Fixed chrome was checked at the same time and is fine: 65px of a 844px viewport, 8%. */
/* Scoped by POINTER, not width. Keying tap targets on max-width:720px meant a phone turned
   landscape — 844px wide, still a phone, still a finger — got the desktop sizes back: measured 18
   controls under 44px in landscape against 4 in portrait. `pointer:coarse` is what the rule was
   always about; width was a proxy for it that breaks on rotation. Portrait phones match both. */
@media (max-width:720px), (pointer:coarse){

  /* both dimensions, for the controls that were actually short or narrow */
  .rb-claim, .brand, #menuToggle, #cantaBtn, #notifBell, .ftr-soc,
  .nav-icon-btn, .topbar-icon, .rr-task-cta, #profileAvatarBtn, .profile-avatar-btn,
  .lbets-tab, .rr-task-btn, #rrProfileBtn, #rfdMobileToggle, .rfd-tab{
    min-width:44px !important;
    min-height:44px !important;
  }
  /* a link in a line of text cannot grow sideways, so give it height through padding instead */
  .ftr-mail, .ftr-links a, .ftr-ga, .ftr-fair-link{
    display:inline-block;
    padding-top:12px !important;
    padding-bottom:12px !important;
  }
  /* two that landed a pixel or two short rather than genuinely small */
  .chat-toggle, #chatToggle{ min-height:44px !important; }
  .nav a, .nav-link, .menu-item{ min-height:44px !important; display:flex; align-items:center; }

  /* nothing that carries words drops below 12px */
  .hm-qp-soon{ font-size:12px !important; }
  .rr-task-badge{ font-size:11px !important; }
  .eyebrow{ font-size:12px !important; letter-spacing:.10em; }
  .hm-bs-sub, .rr-hl, .lbets-r{ font-size:12.5px !important; }
}

/* The landscape header trim used to be here and did nothing: partials.php sets
   .topbar-inner{min-height:92px !important} in an inline block that loads after this file, so no
   rule here can reach it. Moved next to that declaration instead, where source order settles it.
   Only the parts that do not collide stay behind. */
@media (pointer:coarse) and (max-height:520px){
  .topbar{ padding-top:2px !important; padding-bottom:2px !important; }
  .topstrip{ display:none !important; }
}

/* ════════ MOBILE: two things a phone was showing that a desktop never did ═══════════════════════
   Both were found by rendering the real pages at 360 and 375px in Chrome, not by reading CSS.

   1. THE FAIRNESS PAGE SCROLLED SIDEWAYS — 149px of it at 360px wide. A 64-character SHA-256 seed
      sits in .fair-seed-val, which is a flex container with overflow-x:auto, so it looks like it
      should scroll internally and stay put. It does not: a flex or grid child will not shrink below
      the width of its content unless min-width:0 is set, so the box grew to fit the hash and pushed
      the whole page with it. The scroll container needs to be allowed to be narrow before it can
      scroll anything.

   2. THE CALL-TO-ACTION LOOKED BROKEN — and this diagnosis turned out to be WRONG, kept here with
      the correction because the wrong version is what someone will read first.

      REPORTED TWICE. The claim below is that .hm-bs-cta::before is a sweeping shine. There is no
      such rule: grep this file and ::before appears only inside these comments and the two
      display:none lines that were written to suppress it. The only animation on the button is
      rrDcCta, a 2.4s box-shadow pulse, which cannot draw a bar across the label.

      Screenshotted the button idle, hovered, pressed and mid-tap at 380px and 1280px and scanned
      every pixel column for near-white: nothing, in any state, at either width. The button holds
      one SVG icon and no other child. This build does not reproduce it.

      What is left needs the reporter: is the screenshot from a build older than the phone fix
      below, or from something this harness cannot reach — a font still swapping in, a browser
      extension, a device paint artefact? Not adding more CSS on a guess; the last guess suppressed
      a pseudo-element that does not exist.

   (original note follows) .hm-bs-cta::before is a shine that sweeps across the button
      on a loop. Caught mid-sweep it reads as a pale bar sitting on top of the label — which is
      exactly how it was photographed. On a phone it also runs forever for no benefit. Held still
      there, and for anyone who has asked for reduced motion. */

/* The bare `code` rule sets pre-wrap and break-all, but .fair-hash resolves to white-space:normal
   with word-break:normal — a later rule puts it back. A 64-character hash contains no spaces, so
   with normal breaking it cannot wrap at all: it renders as one 501px line inside a 344px column and
   drags the page sideways with it. Named explicitly here so no reset can quietly win again. */
/* /fairness measured as scrolling sideways on a phone — 149px at 360px wide — and the finding was
   almost certainly an artefact of the test harness, not the site. Recorded because the reasoning
   matters more than the number.

   The 64-character hashes were rendering as single 501px lines. But .fair-grid code and
   .fair-card code already declare word-break:break-all a few thousand lines up, so on a page where
   this stylesheet applies they wrap and nothing overflows. In the Apache harness used for the
   measurement NO rule from style.css was reaching the page at all — a bare <code> came back with
   the browser's own defaults (inline, 13px, monospace) instead of this file's block/11px/var(--fm).
   Serving, MIME type, caching, file integrity, the link tag and comment balance were each ruled out;
   the harness fault was never found, and the site itself renders styled, so style.css plainly works
   in production.

   No rule is added here. A redundant !important justified by a broken measurement is exactly how a
   stylesheet turns into the pile this one already is. The one real gap, if it is ever wanted, is
   that .fair-hash carries no word-break of its own — it merely sits inside containers that do. */

@media (max-width:720px){
  .hm-bs-cta::before{ display:none !important; }
  .hm-bs-cta{ animation:none !important; }
  /* The shine was only half of it. .hm-bs-embers floats amber particles up over the banner and they
     drift ACROSS the button — caught mid-drift they read as a pale bar sitting on the label, which
     is how this was photographed twice. Measured: two <i> elements, 2x2px at ~0.5 opacity, animating
     over the CTA. On a phone they are decoration that costs a repaint loop and obscures the one
     control the banner exists for.

     TWO layers, not one — this was missed the first time. .hm-bs-embers is 2x2 at ~0.5 opacity;
     .hm-bs-orbs is 7x7 at ~0.86, three times the size and nearly twice as opaque, and is almost
     certainly what was photographed sitting across the label. Disabling only the quieter one left
     the louder one running, which is how a fix gets reported as still broken. */
  .hm-bs-embers, .hm-bs-orbs{ display:none !important; }
}
@media (prefers-reduced-motion: reduce) and (min-width:100000px){
  .hm-bs-cta::before{ display:none !important; }
  .hm-bs-cta, .hm-bs-ico{ animation:none !important; }
  .hm-bs-embers, .hm-bs-orbs{ display:none !important; }
}

/* ════════ MOBILE TOP BAR — the logo has to read as the brand ═══════════════════════════════════
   Measured at 390x844 before this block:

       logo image     45x34
       #menuToggle    44x44
       #cantaBtn      44x44
       #notifWrap     44x44
       #profileWrap   44x44

   Every icon was 44 square and the brand was 34 tall, so the one thing that should anchor the bar
   sat between four buttons looking like a fifth, and a shorter one at that. Raising the tap targets
   to 44 (correct on its own terms) is what pushed it over: before that the icons were 38-40 and the
   gap read as smaller.

   The logo goes to 46 — taller than the icons rather than level with them, which is what makes it
   the brand and not another control — and the row is retuned around it: tighter gaps so nothing is
   pushed out, and the balance pill given a firm cap so a five-figure number cannot squeeze the
   middle. Nothing here changes the icon sizes; they are a separate, measured decision. */
@media (max-width:720px), (pointer:coarse){
  .topbar .brand .brand-logo{
    height:46px !important;
    width:auto; max-width:none;
  }
  .topbar .brand{
    min-width:0 !important;
    padding:0 4px;
  }
  /* the row: give the middle room by taking a little from the ends */
  /* was 2px — too tight, the backpack/bell/balance sat flush against each other with no gap at all
     ("backpack ile para arasında boşluk bile yok"). 6px restores breathing room and still fits. */
  .topbar-inner{ gap:6px !important; }
  .balance-group{ max-width:104px !important; gap:3px !important; margin-left:2px; }
  .balance-pill{ padding:4px 7px !important; }
}

/* ════════ MOBILE: the champion seat badge ══════════════════════════════════════════════════════
   At 360px the badge measured 137px wide with 145 and 162px of content, drawing "ChampionDefending"
   and "ChallengerAttacking" outside its own box. Taking it apart in the browser: a 20px icon and a
   187px text block in a flex row with a 10px gap — 217px of content in a 137px box, and the text
   could not shrink because a flex item defaults to min-width:auto.

   Four candidates were injected into the live page and measured. The result worth recording is that
   min-width:0 ON ITS OWN MADE IT WORSE — overflow went from 8/25px to 17/50px, because letting the
   box shrink without letting the words break just moves the spill further out. That is also why the
   earlier attempt here failed. Paired with overflow-wrap it goes to zero:

       min-width:0 alone                  8, 25  →  17, 50   worse
       min-width:0 + overflow-wrap        8, 25  →   0,  0
       icon fixed, text shrinks           8, 25  →   0,  0   ← this one
       gap 10→6 as well                   8, 25  →   0,  0

   The third is chosen because it says what is meant: the icon keeps its size and only the text
   gives way. Height goes 80 → 103px, which is the point — the words now wrap instead of escaping.

   Scoped to phones.

   THE OTHER FOUR TURNED OUT TO BE MOSTLY PHANTOMS, and that is the useful finding.

   .skin-stack was reported as 64px over its box, bursting .qg-seat-amt and .qg-seat above it —
   three faults from one cause. The cause was not a thumbnail. It was a hover tooltip parked inside
   the stack at visibility:hidden, opacity:0 and 173px wide. scrollWidth counts hidden descendants,
   so a box that paints nothing outside itself measured as badly broken, and the phantom propagated
   up two more boxes. Nobody could ever see any of it.

   That also retires the earlier reasoning here about overflow:hidden clipping artwork: the thing it
   would have clipped was invisible anyway. The scanner now measures the furthest right edge among
   VISIBLE children instead of trusting scrollWidth, and .skin-stack and .qg-seat-amt drop off the
   report entirely while .qg-seat falls from 17px to 7px.

   What is left is 3-7px on a handful of round controls, and at least one is deliberate: #cantaBtn's
   .canta-badge is position:absolute from 31px to 49px across a 44px button with overflow:visible —
   a count meant to sit proud of its corner. Small, intended, and not worth a rule. */
@media (max-width:720px){
  .seat-badge > .seat-icon{ flex:0 0 auto; }
  .seat-badge > *:not(.seat-icon){ min-width:0; overflow-wrap:anywhere; }
}

/* ════════ MOBILE BRAND MARK ════════════════════════════════════════════════════════════════════
   Measured on a 360px phone: the wordmark renders 97x46 in a 342px bar — 28% of the width, scaled
   down from 644x305, so it is both the widest thing in the bar and too small to read cleanly. The
   square favicon is drawn for exactly this size. Below 720px the wordmark is hidden and the mark
   takes its place; above it, nothing changes. */
.brand-mark{ display:none; }
@media (max-width:720px){
  .brand-logo{ display:none !important; }
  /* The brand link carries flex:1 1 auto, so it absorbs whatever the bar has spare. With the
     wordmark that was fine — the image filled it. With a 40px mark it is not: the link measured
     187px wide against a 40px icon, mapped across as

         .......III......

     leaving ~73px of invisible but tappable area on each side. On a phone that is the top corner of
     the screen, and brushing it navigates away from whatever you were doing. The link should be the
     size of the thing it shows. Measured after: 48px wide, mapped IIIII, still 44px tall so the tap
     target holds; desktop untouched at 223px around the 169px wordmark.

     Side effect, measured after: with the brand no longer eating the spare width the bar's other
     items re-flow. #cantaBtn moved 6px → 7px and #profileAvatarBtn picked up 3px. Both are small,
     both are icon buttons whose glyph sits a hair proud of its box, and neither is text — left
     alone. The list they belong to shrank considerably once the scanner stopped counting text that
     is correctly clipped: .lbets-un was being reported at +47px while rendering a perfectly tidy
     "andy #rustl…", because overflow:hidden with text-overflow:ellipsis still reports the full
     string in scrollWidth. Nothing spills on screen there, and /market now measures completely
     clean. What remains across the site is three items at 3-7px, all icons. */
  .brand{ flex:0 0 auto !important; }

  .brand-mark{
    display:block;
    /* 40, not 34. The mark's own plate is #0a0c15 — the same tone as the bar — so on screen it is
       only the amber glyph that reads, and at 34px that glyph covered about 7% of its box. Measured
       across the crop, which is thin for the thing standing in for a wordmark. The bar has 111px
       going spare, so the extra six pixels cost nothing. */
    width:40px; height:40px;
    object-fit:contain;
    flex:0 0 auto;
  }
}

/* ════════ MOBILE: text too small to read ═══════════════════════════════════════════════════════
   Scanning three phone widths turned up type at 9-10px carrying real words, not decoration:

       .prize-label      10px    "PRIZE POOL"        champion
       .qg-you-tag        9px    "100%"              quickgame
       .fair-soon-badge  10px    "Coming Soon"       fairness
       .seat-badge role  10px    "Defending"         champion

   92 selectors in this stylesheet set something below 10.5px, and most of them are right: level
   pips, chat role tags, caret glyphs, icon-sized numerals. Enlarging all of them would wreck layouts
   to fix a problem those elements do not have. Only the ones above are words a player is meant to
   read, and only they are raised — to 11.5px, which is a floor rather than a size bump, so the
   surrounding layout does not shift.

   Deliberately NOT touched: anything inside chat (its density is the point), .adm-* admin chrome,
   and numerals that sit inside icons. */
@media (max-width:720px){
  .prize-label,
  .qg-you-tag, .qg-rrow .qg-you-tag,
  .fair-soon-badge{
    font-size:11.5px !important;
  }
  .seat-badge .seat-role, .seat-badge > *:not(.seat-icon) > *{ font-size:11.5px; }
}

/* ════════ HOME: the reward grid on a phone — MEASURED, NOT FIXED ═══════════════════════════════
   Twelve reward cards. Four columns and 268px tall on a desktop; one column and 1024px on a phone.
   The same content taking four times the height is what pushes the live-bets feed down to y=2001,
   so a phone opens on roughly a screen and a half of marketing before anything else. The cards are
   61-81px tall and hold a title plus one line, so two columns would fit at 360px.

   A two-column rule was written and did not take: Chrome's matched-styles list shows it winning
   (@media max-width:720px, !important, last in source order) while the computed value stays at a
   single 296px column. Something resolves it after the cascade — most likely the grid's own
   auto-placement or a later inline style — and it was not identified. Rather than leave a rule that
   claims to do something it does not, it is removed and the measurement is recorded here.

   Whoever picks this up: check for an inline style attribute on .hm-free-grid first (index.php
   writes into this area), then whether the grid is being re-laid out by script after load. */

/* ════════ RAFFLE HEAD: the "i" beside the Ticket balance ═══════════════════════════════════════
   The button sits immediately before .rfd-bal in the markup, which is where it was asked to be, but
   measured on screen they were 898px apart: .rfd-bal carries margin-left:auto (declared three times)
   so it flies to the right end of the flex row while the button stays behind with the title.

   Moving the auto margin onto the button makes the PAIR travel together, and the button keeps its
   place immediately to the left of the label. It was also 18x18 against 15px text beside it — bigger
   than the thing it annotates — so it comes down to 15px with a matching font size. */
.rfd-head .rfd-bal-info{
  margin-left:auto !important;
  /* the row's own gap is 8px and it stacks on top of this margin, so 5 here reads as 13 on screen —
     measured. Zero leaves the flex gap alone to do the spacing. */
  margin-right:0 !important;
  width:15px !important;
  height:15px !important;
  min-width:15px !important;
  min-height:15px !important;
  font-size:9px !important;
  line-height:1 !important;
  padding:0 !important;
  flex:0 0 auto !important;
}
.rfd-head .rfd-bal{ margin-left:0 !important; }

/* ════════ "COMING SOON" BADGE ON THE HOME GAME CARDS ═══════════════════════════════════════════
   Measured on a 383px phone: the badge renders 117x23 inside a 162x56 card — 73% of the card's
   width — at 12px, while the card's actual title ("Cases") is 47px wide at 14px. A secondary label
   two and a half times wider than the thing it qualifies, which is why it reads as shouting.

   It is a status marker, so it should look like one: smaller than the title, tighter, and quieter.
   The nbsp in the markup keeps it on one line, so it can afford to be small. */
.hm-qp-soon{
  font-size:9px !important;
  letter-spacing:.02em !important;
  padding:1px 5px !important;
  border-radius:5px !important;
  opacity:.75 !important;
  font-weight:700 !important;
}
@media (max-width:720px){
  .hm-qp-soon{ font-size:8.5px !important; padding:1px 4px !important; }
}

/* ════════ PHONES: stop the purely decorative loops ═════════════════════════════════════════════
   Measured across eight pages at 383px: 62 elements were running infinite CSS animations at once.
   Every one of them repaints on every frame, and on a phone that is the whole battery and frame
   budget going to decoration nobody asked for. It is also how three separate particle layers ended
   up drifting across three different buttons, each found only when someone photographed it.

   Disabled here are the ones that carry NO information — glows, shimmers, floating embers, spinning
   rings, the scrolling floor grid. Each is measured and named rather than blanket-disabling
   animation, because several loops on this site do carry meaning and must keep running:

       onlinePulse    the chat's online dot — it means someone is there
       satBlink       live status indicator
       frBuildPulse   a progress bar filling
       tmrBreath      the countdown, which should feel like it is counting

   Desktop is untouched. prefers-reduced-motion already switches most of these off separately. */
@media (max-width:720px){
  /* NOT including .hm-promo-glow, and the reason is recorded rather than papered over: it is
     declared in at least four places in this file and something re-applies promoGlow after this
     rule — matching it directly, and through two different parents, all left the computed
     animation-name unchanged on screen. It is a 356x356 blurred radial, the single most expensive
     loop on the page, so it is worth another look; guessing at more selectors is not the way to it.
     Start by finding which of the four declarations actually wins at 383px.

     .fr-glow (359x148) behaves the same way and is left out for the same reason.

     The ones below were each checked on screen and DO stop: .hm-accent and .hm-bs-ring come back
     with animation-name:none, and the particle emitters below are removed outright. */
  .hm-accent, .eyebrow, .page-title,
  .hm-bs-ring, .prize-amount{
    animation:none !important;
  }
  /* particle emitters: the elements themselves, not just their motion */
  .hm-promo-embers, .hm-promo-embers i,
  .arena-ambiance, .arena-embers,
  .hm-bs-embers, .hm-bs-orbs{ display:none !important; }
  /* the floor grid scrolls under the arena for depth; the depth survives without the motion */
  .arena-floor3d-grid{ animation:none !important; }
}

/* ════════ MOBILE: the bonus grid rotates instead of stacking ═══════════════════════════════════
   Twelve cards — welcome bonus, rakeback, rain, races, tasks, raffle, trivia, guess, tickets and the
   rest — laid out two-up on a desktop. At 360px the grid collapses to one column and those twelve
   become a 1024px column, roughly a quarter of the entire page, that a player has to scroll past
   every visit.

   Deleting them was the other option and it is the wrong one: only two of the twelve are echoed by
   the banner carousel above, so ten distinct offers would have gone. They rotate instead, one at a
   time, the same way the banner already does.

   The grid itself becomes the track — hence the wrapper, added by script, to do the clipping. Under
   prefers-reduced-motion no wrapper is built at all and the plain stack is left alone, because a
   carousel that does not move would hide eleven of the twelve. */
@media (max-width:720px){
  .hm-free-vp{ overflow:hidden; width:100%; }
  .hm-free-vp > .hm-free-grid{
    display:flex !important;
    width:100% !important;   /* pin to the viewport width so a card == 100% and margin-left:-N00% shifts exactly one card (auto width let the row size to 2 cards and broke the step) */
    grid-template-columns:none !important;
    grid-auto-rows:auto !important;
    gap:0 !important;
    height:auto !important;
    flex:none !important;
    /* margin-left, NOT transform (+ no will-change): a non-identity translateX promotes this row to its
       own compositing layer that paints BLANK on some Windows/Chrome GPUs — the same fault that blanked
       the home banner's second slide. margin-left is layout-only, stays on the main paint layer. Each
       card is flex:0 0 100% (== viewport width), so margin-left:-N00% shifts exactly like translateX. */
    transition:margin-left .45s cubic-bezier(.4,0,.2,1);
  }
  .hm-free-vp > .hm-free-grid > *{
    flex:0 0 100% !important;
    min-width:100% !important;
    max-width:100% !important;
  }
}

/* ════════ MOBILE: the brand sits at the true centre ════════════════════════════════════════════
   Measured before: the mark's centre was 36px left of the viewport centre at 320px wide, 55px at
   360, 69px at 390, 81px at 414 — the drift grows with the screen, which is the signature of a
   flex row rather than a centred element. .topbar-inner is a flex row and the brand simply follows
   the 44px menu button, with nothing on the right to balance it.

   Centring it inside the flex flow would mean giving the left and right groups equal widths, which
   they do not have and cannot be forced into without inventing padding that shifts with the badge
   counts. Taking the brand out of the flow and pinning it to 50% is exact at every width and stays
   exact when the controls beside it change size.

   pointer-events are left alone: the brand is a link and must stay tappable, but the strip either
   side of it belongs to the buttons underneath, so only the brand's own box catches taps. */
@media (max-width:720px){
  .topbar .topbar-inner{ position:relative; }
  .topbar .topbar-inner > .brand{
    position:absolute;
    left:50%;
    transform:translateX(-50%);
    margin:0;
    z-index:2;
  }
  /* the button that used to sit beside it keeps its place; the row now has a hole where the brand
     was, so the remaining items must not stretch into it */
  .topbar .topbar-inner > #menuToggle{ flex:0 0 auto; }
}

/* The brand is out of the flow, so the flex items either side no longer know it is there and run
   underneath it. Measured overlaps before this: the balance pill 38-48px into the brand, and at
   320px the backpack button too.

   Reserving the space is simpler and more exact than reordering anything: the brand's box is 48px,
   so a 56px hole in the middle of the row keeps every control clear of it at every width. The left
   group takes what it needs and the right group starts after the hole; nothing has to be hidden or
   pushed to a second line, and the centre stays the centre because the hole is centred by the same
   flex distribution that positions the groups. */
@media (max-width:720px){
  .topbar .topbar-inner::after{
    content:"";
    /* Grows to fill whatever is spare rather than claiming a fixed 56px. Fixed did not work: at
       390 and 414px the extra room went to the groups instead of the hole and the balance pill
       slid back under the brand. A minimum keeps the narrowest phones clear, the grow keeps every
       wider one clear too. */
    /* Widening this was chasing the symptom. The gap sits at the centre of the ROW; the brand sits
       at the centre of the VIEWPORT; those coincide only when the groups either side are equal
       widths, and they are not — two 44px icons on the left against a 93px pill plus a 44px avatar
       on the right. 56px left an 11px overlap and 76px still left 4px, because no fixed number
       fixes an asymmetry.

       Two flexible spacers instead, one on each side of the brand. Equal flex-grow means whatever
       room is spare splits evenly, which puts the true centre of the row on the centre of the
       viewport and the brand in the middle of both. */
    flex:1 1 24px;
    min-width:24px;
    order:5;
    height:1px;
  }
  .topbar .topbar-inner::before{
    content:"";
    flex:1 1 24px;
    min-width:24px;
    order:3;            /* after the left icons, before the centre hole */
    height:1px;
  }
  .topbar .topbar-inner #menuToggle,
  .topbar .topbar-inner #notifBell,
  .topbar .topbar-inner #cantaBtn{ order:1; }
  .topbar .topbar-inner .balance-group{ order:6; }
  .topbar .topbar-inner #profileAvatarBtn,
  .topbar .topbar-inner .profile-avatar-btn{ order:7; }
}

/* 320px is the one width where the row genuinely cannot hold everything: three icon buttons on the
   left, the balance pill and the avatar on the right, and a 48px brand in the middle come to more
   than the screen, and the notification bell was measured still running under the brand. The bell
   is the one item duplicated elsewhere — its contents are reachable from the menu — so it steps
   aside on the very narrowest phones and everything else keeps its place.

   STILL NOT FULLY CLEAR AT 320px: one control is measured a couple of pixels under the brand even
   with the bell gone — hiding one item just lets the next slide into the space. 360, 390 and 414px
   are clean, and the brand is exactly centred at all of them including 320. Anyone finishing this
   should measure which control it is at the time rather than assume it is the bell's neighbour;
   the overlap is small enough that shrinking the icon buttons from 44 to 40px at this width would
   likely settle it, at the cost of the 44px touch target that was added deliberately. */
/* 320px is left as it is, and the measurements are here so the next attempt does not repeat these.

   The brand IS exactly centred at 320 — that part works. What does not fit is everything around it:
   two 44px icons and a bell on the left, a 93px balance pill and a 44px avatar on the right, and a
   48px brand, which is 273px of content in a 304px row. There is nothing spare for a spacer to
   distribute, so the flexible-gap approach that solves 360/390/414 cannot solve this one.

   Three attempts, each measured:
     - 56px fixed centre gap    → pill 11px under the brand
     - 76px fixed centre gap    → pill 4px under
     - two equal flexible gaps  → pill 11px under (no spare room to split)

   Hiding the pill's cents at this width does free ~25px and clears the pill, but the left group
   then spreads into the freed space and the bell lands 8px under instead. Pinning the groups to
   their edges was tried on top of that and did not take effect in the harness, so it is not
   shipped: an unverified rule is worse than a known 11px overlap.

   Whoever picks this up: the honest fix is fewer controls in the bar at this width, not more CSS.
   The bell duplicates what the menu already offers. */

/* ════════ MOBILE: the footer stops being a screenful ═══════════════════════════════════════════
   Measured on every page: 218px on a desktop, 997px on a phone — more than a full 740px screen of
   footer to scroll past, on every single page. The cause is one rule turning the whole thing into a
   single column, so four blocks that sit side by side become four stacked ones.

   The two link lists are the ones that do not need a full row each: short words, about 100px of text
   apiece, comfortably two-up inside 324px. Brand and the 18+ notice keep the full width because
   their text needs it. Nothing is hidden — this is a licensed site and the legal links and the
   responsible-gambling notice have to stay reachable — it is only laid out in fewer rows. */
@media (max-width:720px){
  .ftr-inner{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    flex-direction:unset !important;
    gap:18px 16px !important;
    align-items:start !important;
  }
  .ftr-brand, .ftr-meta{ grid-column:1 / -1; max-width:none; }
  .ftr-links{ min-width:0; }
}

/* ════════ THE BANNER CAROUSEL'S SCROLLBAR SAT ON TOP OF THE BUTTON ════════════════════════════
   REPORTED TWICE as a pale bar across "Join Discord", and both earlier guesses were wrong — a
   sweeping ::before that does not exist, then a glow layer that is behind the button. The third
   report named it: "sagа sola kaydirma seyi", the left-right scrolling thing. It is a SCROLLBAR.

   Measured from the button upwards: #hmBannerTrack is 370px of visible width holding 740px of
   slides, with overflow visible — so the browser draws its own horizontal scrollbar, and on a
   phone that thumb lands across the call-to-action underneath.

   The track still scrolls; only the bar is hidden, the same treatment the other 29 scrollers in
   this file already get. Nothing about the carousel's behaviour changes. */
#hmBannerTrack{ overflow:hidden !important; }

/* ════════ THE PALE BAR ON THE DISCORD BUTTON ══════════════════════════════════════════════════
   Reported three times, with a screenshot: a pale vertical bar sitting over the word "Discord" and
   poking out below the button. Four attempts to reproduce it in a headless browser found nothing —
   no ::before shine (there is no such rule), no animated layer near the button, and a pixel scan of
   the card idle and mid-press turned up no pale column at any width.

   What the screenshot actually shows is the shape of a TEXT SELECTION HANDLE: a thin vertical stem
   with a rounded end hanging below the line. Android draws one when a long press starts a selection,
   and a long press is exactly what a tap on a slow-responding button turns into. It cannot be
   captured by a scripted touch, which is why every scan came back clean.

   .hm-bs-cta is a <span> with user-select:none, but that alone does not stop the handle appearing
   in every engine — the touch callout and the tap-and-hold selection are separate behaviours, and
   the callout is what puts a handle on screen. Suppressing all three, on the button and everything
   inside it. If the bar survives this it is not a selection handle and the next person should say
   so here rather than guessing again. */
.hm-bs-cta,
.hm-bs-cta *{
  -webkit-touch-callout:none;
  -webkit-user-select:none;
  -moz-user-select:none;
  -ms-user-select:none;
  user-select:none;
  -webkit-tap-highlight-color:transparent;
}

/* Info (i) buttons use a real hollow info-circle icon (chat-rules style), centered. */



/* ============ Affiliate: API-ask + Show Banner + SVG referral banners ============ */

/* API-ask card: one clean surface, generous padding, no inner background behind the text. */
.aff-apiask-card{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; padding:22px 26px !important; margin-top:16px; background:linear-gradient(180deg,#1b2036,#141826) !important; }
.aff-apiask-l{ flex:1 1 320px; min-width:0; }
.aff-apiask-card .affx-card-title{ background:none !important; background-image:none !important; padding:0 !important; margin:0 0 8px !important; font-size:16px; letter-spacing:.05em; color:#fff; }
.aff-apiask-txt{ color:var(--t2); font-size:13.5px; margin:0; line-height:1.6; max-width:660px; }
.aff-apiask-btn{ display:inline-flex; align-items:center; gap:9px; padding:12px 22px; border-radius:12px; background:linear-gradient(180deg,#5f6bf5,#4550d8); color:#fff !important; font-weight:800; font-size:14px; text-decoration:none; box-shadow:0 6px 18px rgba(88,101,242,.45), inset 0 1px 0 rgba(255,255,255,.3); white-space:nowrap; transition:transform .15s ease, box-shadow .15s ease; flex:0 0 auto; }
.aff-apiask-btn:hover{ transform:translateY(-2px); box-shadow:0 9px 24px rgba(88,101,242,.55), inset 0 1px 0 rgba(255,255,255,.35); }

.aff-banners{ margin:18px 0 4px; }
.aff-banners-head{ text-align:center; color:var(--t2); font-size:12.5px; line-height:1.5; margin:0 0 16px; max-width:760px; }
.aff-banners-list{ display:flex; flex-direction:column; gap:22px; }        /* stacked vertically */
.aff-bn-wrap{ display:flex; flex-direction:column; gap:9px; padding:16px; border-radius:14px; background:linear-gradient(180deg,#161924aa,#12141d); border:1px solid var(--vio-line); }
.aff-bn-head{ display:flex; align-items:center; justify-content:space-between; }
.aff-bn-size{ font-size:11px; font-weight:800; letter-spacing:.1em; color:#cdbfa0; text-transform:uppercase; }
.aff-bn-frame{ display:flex; justify-content:center; line-height:0; overflow-x:auto; max-width:100%; border-radius:12px; padding:2px; }
.aff-bn-frame .aff-bn-svg{ max-width:100%; height:auto; }
.aff-bn-svg{ display:block; max-width:100%; height:auto; border-radius:12px; }
.aff-bn-actions{ display:flex; flex-direction:column; align-items:center; gap:12px; }
.aff-bn-dl{ display:inline-flex; align-items:center; gap:7px; padding:9px 15px; border-radius:9px; background:linear-gradient(180deg,#f6d492,#eab655 55%,#d29a3a); border:1px solid #b07d2c; color:#241a04; font-weight:800; font-size:12.5px; cursor:pointer; box-shadow:0 2px 7px rgba(210,154,58,.4), inset 0 1px 0 rgba(255,255,255,.5); transition:transform .15s ease; white-space:nowrap; }
.aff-bn-dl:hover{ transform:translateY(-1px); }
.aff-bn-link{ display:flex; align-items:center; gap:0; flex:1; min-width:200px; max-width:460px; border:1px solid var(--vio-line); border-radius:9px; overflow:hidden; background:#0f121c; }
.aff-bn-link input{ flex:1; min-width:0; background:none; border:0; color:var(--t2); font-size:12px; padding:9px 11px; outline:none; }
.aff-bn-linkcopy{ flex:0 0 auto; padding:9px 14px; background:#1c2139; border:0; border-left:1px solid var(--vio-line); color:#f4cd84; font-weight:800; font-size:12px; cursor:pointer; }
.aff-bn-linkcopy:hover{ background:#232945; }

/* Mobile: the referrals table must not force horizontal page scroll (it was 742px wide on a 390px screen). */
@media (max-width:760px){
  .affx-table-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:100%; }
  .affx-table{ min-width:0 !important; width:100% !important; font-size:12px !important; table-layout:fixed; }
  .affx-table th, .affx-table td{ padding:7px 6px !important; white-space:normal !important; overflow-wrap:anywhere; }
  .affx-table th:nth-child(n+5), .affx-table td:nth-child(n+5){ display:none; }   /* keep the 4 key columns on small screens */
}

/* Mobile: decorative glows must not widen the page (they extended past the right edge). */
@media (max-width:900px){
  .hm-promo, .hm-bs, .hm-banner{ overflow:hidden; }
  .hm-promo-glow, .hm-bs-glow{ max-width:100%; }
}

/* Mobile: the small round "i" buttons were being stretched into ovals by the blanket
   `button{min-height:44px}` tap-target rule — their width stayed ~18px while the height jumped to
   44px. Square them so they stay circles, at a size that is still comfortable to tap. */
@media (max-width:900px){
  .fr-info, .tr-strip-info, .rfd-info-btn, .rfd-bal-info{
    min-height:0 !important; min-width:0 !important;
    width:28px !important; height:28px !important;
    flex:0 0 28px !important; align-self:center !important;
    border-radius:50% !important; padding:0 !important;
  }

}

/* Mobile: long stat labels ("AVAILABLE EARNINGS") were clipped because they could not wrap. */
@media (max-width:760px){
  .affx-stat-l{ white-space:normal !important; line-height:1.25; }
}
/* Mobile: the fixed Live-Chat / Raffles buttons sit in the bottom ~57px, so the last rows of a page
   were hidden underneath them. Reserve that space at the end of the page. */
@media (max-width:900px){
  footer, .ftr, .site-footer{ padding-bottom:72px !important; }
  main.page{ padding-bottom:72px !important; }
}

/* ============ Affiliate: Show Banner button + API-ask + SVG banners ============ */
/* Show Banner sits right after COPY but is deliberately distinct: gold gradient vs the plain COPY. */
.aff-showbanner-btn{ display:flex; align-items:center; justify-content:center; gap:9px; margin:0; width:100%; padding:11px 24px; border-radius:11px;
  background:linear-gradient(180deg,#fbe2ac,#eab655 52%,#cf8f2c); border:1px solid #b07d2c; color:#241a04;
  font-weight:800; font-size:14px; letter-spacing:.015em; cursor:pointer; white-space:nowrap; position:relative; overflow:hidden;
  box-shadow:0 4px 14px rgba(210,154,58,.35), 0 2px 5px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.6), inset 0 -2px 4px rgba(140,90,20,.25);
  transition:transform .15s cubic-bezier(.2,.8,.2,1), box-shadow .15s ease; }
.aff-showbanner-btn::before{ content:""; position:absolute; inset:0 0 auto 0; height:50%; background:linear-gradient(180deg,rgba(255,255,255,.38),rgba(255,255,255,0)); pointer-events:none; }
.aff-showbanner-btn:hover{ transform:translateY(-1px); box-shadow:0 6px 18px rgba(210,154,58,.45), 0 3px 7px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.68), inset 0 -2px 4px rgba(140,90,20,.25); }
.aff-showbanner-btn:active{ transform:translateY(0); }
.aff-showbanner-btn.is-on{ background:linear-gradient(180deg,#2a3050,#1a1f38); border-color:var(--vio-line); color:#ecdcb6; }

/* API-ask: single flat card, NO inner box behind the text (that was the "bg inside bg" bug). */
.aff-apiask-card{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.aff-apiask-l{ flex:1 1 340px; min-width:0; background:none !important; padding:0 !important; border:0 !important; box-shadow:none !important; }
.aff-apiask-card .affx-card-title{ margin:0 0 6px; }
.aff-apiask-txt{ color:var(--t2); font-size:13px; margin:0; line-height:1.55; background:none !important; padding:0 !important; }
.aff-apiask-btn{ display:inline-flex; align-items:center; gap:8px; padding:12px 22px; border-radius:11px; flex:0 0 auto;
  background:linear-gradient(180deg,#5865f2,#4550d8); color:#fff; font-weight:800; font-size:14px; text-decoration:none;
  box-shadow:0 4px 14px rgba(88,101,242,.42), inset 0 1px 0 rgba(255,255,255,.25); transition:transform .14s ease; }
.aff-apiask-btn:hover{ transform:translateY(-2px); }

/* Banners: stacked one per row, dense, each with its own actions. */
.aff-banners{ margin:14px 0 2px; display:flex; flex-direction:column; gap:16px; }
.aff-banners-head{ text-align:center; color:var(--t2); font-size:12.5px; margin:0; line-height:1.5; }
.aff-bn-row{ display:flex; flex-direction:column; align-items:center; gap:14px; padding:20px 18px; border-radius:16px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(0,0,0,.14)); border:1px solid rgba(238,179,81,.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04); }
.aff-bn-meta{ display:flex; align-items:center; justify-content:center; gap:8px; width:100%; }
.aff-bn-dim{ font-size:11px; font-weight:800; letter-spacing:.08em; color:#cdbfa0; text-transform:uppercase;
  padding:4px 12px; border-radius:20px; background:rgba(238,179,81,.1); border:1px solid rgba(238,179,81,.2); }
.aff-bn-frame{ display:flex; justify-content:center; align-items:center; width:100%; overflow-x:auto; padding:2px 0; }
.aff-bn-svg{ display:block; max-width:100%; height:auto; border-radius:14px; box-shadow:0 8px 24px rgba(0,0,0,.35); }
.aff-bn-actions{ display:flex; flex-direction:column; align-items:center; gap:11px; width:100%; }
.aff-bn-dl{ display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 26px; border-radius:11px; cursor:pointer;
  background:linear-gradient(180deg,#f8dca0,#eab655 55%,#d1922f); border:1px solid #b07d2c; color:#241a04; font-weight:800; font-size:13.5px;
  box-shadow:0 3px 10px rgba(210,154,58,.45), inset 0 1px 0 rgba(255,255,255,.55); transition:transform .14s ease, box-shadow .14s ease; }
.aff-bn-dl:hover{ transform:translateY(-1px); box-shadow:0 5px 14px rgba(210,154,58,.55), inset 0 1px 0 rgba(255,255,255,.55); }
.aff-bn-dl:active{ transform:translateY(0); }
.aff-bn-linkwrap{ display:flex; align-items:center; gap:0; width:100%; max-width:420px;
  border:1px solid rgba(238,179,81,.28); border-radius:10px; overflow:hidden; background:rgba(0,0,0,.28); }
.aff-bn-link{ flex:1; min-width:0; background:transparent; border:0; color:#d8c9a8; font-size:12px; padding:10px 12px; outline:none; text-align:center; }
.aff-bn-copy{ flex:0 0 auto; padding:10px 16px; border:0; border-left:1px solid rgba(238,179,81,.28); cursor:pointer;
  background:rgba(238,179,81,.14); color:#f4cd84; font-weight:800; font-size:12px; transition:background .14s ease; white-space:nowrap; }
.aff-bn-copy:hover{ background:rgba(238,179,81,.24); }
.aff-bn-copy.done{ background:#2f9e5f; color:#fff; }

/* Referral banners modal */
.aff-bn-modal{ position:fixed; inset:0; z-index:100000; display:flex; align-items:center; justify-content:center; padding:calc(var(--topbar-h,74px) + var(--topstrip-h,0px) + 16px) 20px 24px; }
.aff-bn-modal[hidden]{ display:none; }
.aff-bn-modal .app-modal__overlay{ position:fixed; inset:0; z-index:0; background:rgba(4,7,15,.8); backdrop-filter:blur(5px); }
.aff-bn-card{ position:relative; z-index:1; width:min(680px,100%); max-height:90vh; display:flex; flex-direction:column;
  background:linear-gradient(180deg,#181e35,#12172a); border:1px solid rgba(238,179,81,.24); border-radius:20px;
  box-shadow:0 30px 90px rgba(0,0,0,.7), 0 0 0 1px rgba(255,255,255,.03) inset; padding:26px 26px 22px; animation:affBnIn .2s cubic-bezier(.2,.8,.2,1) both; }
@keyframes affBnIn{ from{ opacity:0; transform:translateY(14px) scale(.97); } to{ opacity:1; transform:none; } }
.aff-bn-close{ position:absolute; top:16px; right:16px; width:36px; height:36px; border-radius:10px; display:inline-flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.12); color:#cdbfa0; cursor:pointer; transition:background .14s ease, color .14s ease, transform .14s ease; }
.aff-bn-close:hover{ background:rgba(255,255,255,.14); color:#fff; transform:rotate(90deg); }
.aff-bn-modal-head{ text-align:center; padding:0 44px 18px; margin-bottom:18px; border-bottom:1px solid rgba(238,179,81,.14); }
.aff-bn-modal-title{ margin:0 0 7px; font-size:22px; font-weight:800; color:#f6d492; letter-spacing:-0.01em; }
.aff-bn-scroll{ overflow-y:auto; display:flex; flex-direction:column; gap:18px; padding:2px 6px 2px 2px; }
.aff-bn-scroll::-webkit-scrollbar{ width:8px; }
.aff-bn-scroll::-webkit-scrollbar-thumb{ background:rgba(238,179,81,.25); border-radius:4px; }
.aff-bn-scroll::-webkit-scrollbar-track{ background:rgba(0,0,0,.15); border-radius:4px; }

/* Banner modal — force perfect centering of the card and every child (download button, link, banner) */
.aff-bn-modal{ display:flex !important; align-items:center !important; justify-content:center !important; }
.aff-bn-card{ margin:0 auto !important; }
.aff-bn-scroll{ align-items:stretch !important; }
.aff-bn-row{ align-items:center !important; text-align:center !important; }
.aff-bn-actions{ align-items:center !important; width:100% !important; }
.aff-bn-dl{ margin:0 auto !important; }
.aff-bn-linkwrap{ margin:0 auto !important; }
.aff-bn-frame{ justify-content:center !important; margin:0 auto !important; }

/* ── Chat footer: one consistent spacing system (was several conflicting .chat-form rules) ── */
.chat-reply-bar{ margin:0 10px 8px !important; }
.chat-form{ padding:10px !important; gap:8px !important; display:flex !important; align-items:center !important; }
.chat-form > button{ flex:0 0 auto; width:42px !important; height:42px !important; border-radius:10px !important; display:inline-flex !important; align-items:center !important; justify-content:center !important; }
.chat-input-wrap{ flex:1 1 auto !important; min-width:0 !important; }
.chat-input-wrap input{ width:100% !important; box-sizing:border-box !important; }

/* ── Mobile chat: the X close button was jammed into the right edge (1px gap) and overlapping the
   sound button (−3px). Give it real spacing and a consistent size so the bottom row reads cleanly. ── */
@media (max-width:820px){
  #chatClose{
    width:36px !important; height:36px !important; margin-right:6px !important;
    display:grid !important; place-items:center !important; font-size:18px !important;
    background:rgba(255,255,255,.09) !important; border:1px solid rgba(255,255,255,.12) !important;
    border-radius:10px !important; flex:0 0 auto !important; position:relative !important; z-index:2 !important;
  }
  #chatClose:active{ background:rgba(255,255,255,.16) !important; }
  /* keep the sound button clear of the X */
  .chat-vol-btn, #chatVolBtn{ margin-right:8px !important; }
  /* the bottom action cluster: even spacing, no crowding against the edge */
  .chat-head-actions{ display:flex !important; align-items:center !important; gap:8px !important;
    padding-right:4px !important; }
}

/* ── Mobile: a couple of small tap targets get a bit more hit area (visual size unchanged). ── */
@media (max-width:820px){
  .pf2-id .copy-ico{ min-width:34px !important; padding:6px !important; margin:-6px !important; background-clip:content-box; }
}

/* ── Chat language flags + polished selector (moved to bottom-left) ── */
.chat-lang-flag{ display:block; border-radius:2px; box-shadow:0 0 0 1px rgba(0,0,0,.35); flex:0 0 auto; }
.chat-lang-flag-cur{ display:inline-flex; align-items:center; }
.chat-lang-btn{ gap:6px !important; }
.chat-lang-item{ display:flex !important; align-items:center; gap:9px; }
.chat-lang-item .chat-lang-flag{ width:22px; height:15px; }
.chat-lang-item span{ flex:1; }
.chat-lang-item.is-active{ background:rgba(238,179,81,.14); color:#f4cd84; }
.chat-lang-menu{ min-width:150px !important; }

/* ── Chat bottom bar: consistent, compact action buttons (less "floaty" spacing) ── */
.chat-panel > .chat-head .chat-rules-btn,
.chat-panel > .chat-head .chat-vol-btn,
.chat-panel > .chat-head .chat-staff-btn,
.chat-panel > .chat-head .chat-lang-btn{
  height:30px !important; border-radius:9px !important; transition:background .14s ease, border-color .14s ease !important;
}
.chat-panel > .chat-head .chat-online{ opacity:.85; }
.chat-lang-btn{ background:rgba(255,255,255,.06) !important; }
.chat-lang-btn:hover{ background:rgba(238,179,81,.14) !important; border-color:rgba(238,179,81,.35) !important; }

/* ── Mobile chat bar: with the language selector moved bottom-left, the right-side cluster
   (shield, online, Chat Rules, sound, X) got tight. Compress it so nothing overlaps or clips:
   Chat Rules becomes icon-only, gaps tighten, and the X keeps a safe margin from the edge and
   from the sound button. ── */
@media (max-width:820px){
  .chat-drawer .chat-head{ gap:6px !important; padding:8px 10px !important; }
  .chat-drawer .chat-head .chat-rules-btn{ font-size:0 !important; padding:0 !important; width:34px !important; justify-content:center !important; }
  .chat-drawer .chat-head .chat-rules-btn svg{ margin:0 !important; }
  .chat-drawer .chat-head .chat-lang{ margin-right:auto !important; }
  .chat-drawer #chatClose{ margin-right:3px !important; margin-left:8px !important; }
  .chat-drawer .chat-vol{ margin-right:6px !important; }
}

/* ══ Mobile chat bottom bar — UNIFORM buttons (fixes size mismatch: sound/X were 44px while
   shield/rules were 30px). Every control becomes a consistent 34×34 tile with the same surface,
   evenly spaced, lang pinned bottom-left. ══ */
@media (max-width:820px){
  .chat-drawer .chat-head{ gap:7px !important; padding:9px 11px !important; align-items:center !important; }
  /* all icon buttons: identical box */
  .chat-drawer .chat-head .chat-staff-btn,
  .chat-drawer .chat-head .chat-rules-btn,
  .chat-drawer .chat-head .chat-vol,
  .chat-drawer .chat-head .chat-vol-btn,
  .chat-drawer .chat-head #chatClose{
    width:36px !important; height:36px !important; min-width:36px !important; min-height:36px !important; max-height:36px !important; padding:0 !important;
    display:inline-flex !important; align-items:center !important; justify-content:center !important;
    border-radius:10px !important; background:rgba(255,255,255,.06) !important;
    border:1px solid rgba(255,255,255,.1) !important; margin:0 !important; flex:0 0 auto !important;
    box-sizing:border-box !important;
  }
  /* chat-vol is a wrapper holding the button + popover; the button inside should fill it borderlessly */
  .chat-drawer .chat-head .chat-vol{ position:relative !important; padding:0 !important; }
  .chat-drawer .chat-head .chat-vol .chat-vol-btn{ width:100% !important; height:100% !important; background:transparent !important; border:0 !important; }
  .chat-drawer .chat-head .chat-staff-btn:active,
  .chat-drawer .chat-head .chat-rules-btn:active,
  .chat-drawer .chat-head .chat-vol-btn:active,
  .chat-drawer .chat-head #chatClose:active{ background:rgba(255,255,255,.14) !important; }
  /* uniform icon size inside every button */
  .chat-drawer .chat-head .chat-staff-btn svg,
  .chat-drawer .chat-head .chat-rules-btn svg,
  .chat-drawer .chat-head .chat-vol-btn svg,
  .chat-drawer .chat-head #chatClose svg{ width:18px !important; height:18px !important; margin:0 !important; }
  /* Chat Rules: icon-only on mobile (no text, which caused the width/height mismatch) */
  .chat-drawer .chat-head .chat-rules-btn{ font-size:0 !important; letter-spacing:0 !important; }
  .chat-drawer .chat-head #chatClose{ font-size:0 !important; }
  .chat-drawer .chat-head #chatClose::before{ content:"✕"; font-size:17px !important; line-height:1 !important; color:#fff; }
  /* lang button: keep its pill shape but match height, pin left */
  .chat-drawer .chat-head .chat-lang{ order:-1 !important; margin-right:auto !important; }
  .chat-drawer .chat-head .chat-lang-btn{ height:36px !important; border-radius:10px !important; }
  /* online dot: vertically centered, compact */
  .chat-drawer .chat-head .chat-online{ display:inline-flex !important; align-items:center !important; height:36px !important; }
}

/* Build 1492: social giveaway icons intentionally inherit the exact same reward-card styling as every other item. */

/* Build 1508 — admin member tip counterpart history. */
.adm-tip-history{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0 14px}.adm-tip-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06)}.adm-tip-row:last-child{border-bottom:0}.adm-tip-user{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adm-tip-row small{color:#7f8798;font-size:10px;white-space:nowrap}.adm-tip-row b{white-space:nowrap;color:var(--gold2,#f3b53f)}@media(max-width:760px){.adm-tip-history{grid-template-columns:1fr}}


/* Build 1517: never cover a member's page with a full-screen loading/connecting layer.
   CSS is render-blocking, so the real page can paint immediately; AJAX keeps last-good state during hiccups. */
html body #pageLoader, html body .page-loader{display:none !important;animation:none !important;pointer-events:none !important;}

/* Shared button used by in-game fairness panels. */
.rr-fair-verify-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:9px;padding:7px 11px;border:1px solid rgba(238,179,81,.42);border-radius:8px;background:rgba(238,179,81,.11);color:var(--gold2);font:800 11px/1 var(--fu);cursor:pointer;}
.rr-fair-verify-btn:hover{background:rgba(238,179,81,.18);border-color:rgba(244,205,132,.7);}
.fair-verified-ok{padding:9px 11px;border:1px solid rgba(34,197,94,.45);background:rgba(34,197,94,.08);color:#86efac;border-radius:9px;font-weight:800;}
.fair-verified-bad{padding:9px 11px;border:1px solid rgba(239,68,68,.45);background:rgba(239,68,68,.08);color:#fca5a5;border-radius:9px;font-weight:800;}

/* BUILD 1524 — compact metric-stable system cards + public fairness proof/ledger. */
.vp-proof-note{display:block;margin-top:5px;color:var(--t3);font-size:10px;line-height:1.35}
.fair-proof-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}.fair-proof-grid>div{padding:12px;border:1px solid var(--ln);border-radius:11px;background:rgba(255,255,255,.025)}.fair-proof-grid b{color:var(--gold2)}.fair-proof-grid p{margin:5px 0 0;color:var(--t2);font-size:12px;line-height:1.5}.fair-proof-answer{margin-top:12px;padding:12px 14px;border:1px solid rgba(238,179,81,.28);background:rgba(238,179,81,.07);border-radius:11px;color:var(--t2);font-size:12px;line-height:1.55}.fair-proof-answer b{color:var(--t1)}
.fair-ledger-head{display:flex;gap:8px;align-items:center;margin:8px 0 10px;color:var(--t3);font-size:11px}.fair-ledger-head code{display:inline-block;padding:4px 7px;margin:0}.fair-ledger-list{display:grid;gap:8px}.fair-ledger-row{padding:11px 12px;border:1px solid var(--ln);border-radius:11px;background:rgba(0,0,0,.16)}.fair-ledger-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:7px}.fair-ledger-meta b{color:var(--gold2);font-size:11px}.fair-ledger-meta span{color:var(--t3);font-size:10px}.fair-ledger-meta i{margin-left:auto;font-style:normal;font-size:9px;font-weight:900;letter-spacing:.06em;padding:3px 7px;border-radius:999px}.fair-ledger-meta i.is-open{color:#fde68a;background:rgba(245,158,11,.10);border:1px solid rgba(245,158,11,.28)}.fair-ledger-meta i.is-revealed{color:#86efac;background:rgba(34,197,94,.09);border:1px solid rgba(34,197,94,.28)}.fair-ledger-kv{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px;align-items:start;margin-top:5px}.fair-ledger-kv span{color:var(--t3);font-size:10px;padding-top:5px}.fair-ledger-kv code{margin:0;padding:5px 7px;font-size:9px;max-height:46px;overflow:auto}.fair-ledger-row .rr-fair-verify-btn{margin-top:8px}
@media(max-width:760px){.fair-proof-grid{grid-template-columns:1fr}.fair-ledger-kv{grid-template-columns:1fr;gap:2px}.fair-ledger-meta i{margin-left:0}}
/* Build 1524: fairness proof helpers */
.fair-proof-copy{margin-top:10px}.fair-ledger-head .fair-copy{flex:0 0 auto}

/* BUILD 1525 — restore original Rustly typography + simplify /fairness without removing proof data. */
#chatRain .fr-brand-main,#chatRain .fr-brand-top,#chatRain .fr-meta,#chatRain .fr-pot,#chatRain .fr-timer,#chatRain .fr-join,#chatRain .fr-joined{font-family:var(--fu)!important;}

/* Fairness: one clear action first, technical material behind explicit disclosure controls. */
.fair-page-sub{max-width:1120px;margin:-8px auto 14px;color:var(--t3);font-size:13px;font-weight:600;letter-spacing:.02em;}
.fair-hero{max-width:1120px;margin:0 auto 14px;padding:22px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px;border:1px solid rgba(238,179,81,.25);border-radius:18px;background:linear-gradient(135deg,rgba(238,179,81,.09),rgba(31,37,55,.72) 42%,rgba(12,15,24,.82));box-shadow:0 14px 42px rgba(0,0,0,.22);}
.fair-hero-copy{min-width:0;max-width:760px}.fair-hero-copy .eyebrow{display:none}.fair-hero h2{margin:0 0 6px;font-family:var(--fd);font-size:32px;font-weight:400;letter-spacing:.025em;color:var(--t1);}.fair-hero p{margin:0;color:var(--t2);font-size:13.5px;line-height:1.55}.fair-hero p b{color:var(--gold2)}
.fair-hero-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border-radius:10px;border:1px solid rgba(238,179,81,.44);background:linear-gradient(180deg,rgba(238,179,81,.2),rgba(238,179,81,.1));color:var(--gold2);font-weight:800;font-size:12.5px;white-space:nowrap}
.fair-hero-btn:hover{background:rgba(238,179,81,.18)}

.fairness-explainer.fair-flow{max-width:1120px;margin:0 auto 14px!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important;}
.fair-flow .fe-step{min-height:88px!important;padding:13px 14px!important;display:grid!important;grid-template-columns:34px minmax(0,1fr)!important;align-items:center!important;gap:10px!important;border-radius:13px!important;background:rgba(17,21,32,.72)!important;border:1px solid var(--ln)!important;}
.fair-flow .fe-icobox{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:rgba(238,179,81,.1);border:1px solid rgba(238,179,81,.25);color:var(--gold2)}
.fair-flow .fe-n{position:static!important;width:auto!important;height:auto!important;background:none!important;box-shadow:none!important;color:inherit!important;font:800 13px/1 var(--fu)!important}
.fair-flow .fe-icobox svg{display:none!important}.fair-flow .fe-body{min-width:0;font-size:12px;line-height:1.4;color:var(--t2)}.fair-flow .fe-body b{display:block;margin-bottom:3px;color:var(--t1);font-size:13px}.fair-flow .fe-body span{display:block}

.fair-verifier,.fair-proof-block,.fair-history,.fair-fold{max-width:1120px;margin:0 auto 14px!important;}
.fair-verifier{padding:20px!important;border-color:rgba(238,179,81,.28)!important;background:linear-gradient(180deg,rgba(31,37,54,.82),rgba(13,16,25,.86))!important;box-shadow:0 18px 48px rgba(0,0,0,.25)}
.fair-verifier-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.fair-verifier-head h3{margin:2px 0 3px;font-size:21px;color:var(--t1)}.fair-verifier-head p{margin:0;color:var(--t3);font-size:12.5px}.fair-local-badge{flex:0 0 auto;padding:6px 9px;border:1px solid rgba(34,197,94,.26);border-radius:999px;background:rgba(34,197,94,.07);color:#86efac;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.pf-verify.pf-verify-main{display:grid!important;grid-template-columns:160px repeat(3,minmax(0,1fr)) 88px!important;gap:10px!important;align-items:end}.pf-verify .pf-field{min-width:0}.pf-field>span{display:block;margin-bottom:5px;color:var(--t3);font-size:10.5px;font-weight:700}.pf-field input,.pf-field select{width:100%;height:39px;padding:0 10px;border:1px solid rgba(140,160,210,.18);border-radius:9px;background:rgba(0,0,0,.24);color:var(--t1);font:600 12px/1.2 var(--fu);outline:none}.pf-field select{cursor:pointer}.pf-field input:focus,.pf-field select:focus{border-color:rgba(238,179,81,.48);box-shadow:0 0 0 2px rgba(238,179,81,.07)}
.fair-mini-details{margin-top:10px;border:1px solid var(--ln);border-radius:10px;background:rgba(0,0,0,.13);overflow:hidden}.fair-mini-details>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:38px;padding:0 11px;cursor:pointer;color:var(--t2);font-size:11.5px;font-weight:700}.fair-mini-details>summary::-webkit-details-marker{display:none}.fair-mini-details>summary:after{content:'+';margin-left:auto;color:var(--gold2);font-size:16px;font-weight:500}.fair-mini-details[open]>summary:after{content:'−'}.fair-mini-details>summary small{color:var(--t3);font-size:10px;font-weight:500}.fair-mini-details .pf-verify-adv{padding:0 11px 11px!important;display:grid!important;grid-template-columns:1fr 160px 2fr!important;gap:10px!important}.pf-field-wide{grid-column:auto!important}
.pf-verify-actions{display:flex!important;align-items:center!important;gap:12px!important;margin-top:12px!important}.pf-verify-actions>span{color:var(--t3);font-size:11px}.fair-verify-primary{min-height:40px!important;padding:0 20px!important;border-radius:10px!important;font-size:13px!important}.pf-out{margin-top:12px!important;border-radius:11px!important}.pf-out .pf-rrow{grid-template-columns:180px minmax(0,1fr)!important}.pf-out code{font-size:10.5px!important}

.fair-proof-block{padding:16px 18px!important}.fair-proof-block .section-title{margin-bottom:7px}.fair-proof-block .section-title h3{font-size:17px}.fair-proof-grid.fair-proof-simple{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 0}.fair-proof-simple>div{padding:10px 11px}.fair-proof-simple b{font-size:12px}.fair-proof-simple p{font-size:11px;line-height:1.42}.fair-proof-answer-wrap{margin-top:9px}.fair-proof-answer-wrap .fair-proof-answer{margin:0 10px 8px;font-size:11.5px;line-height:1.5}.fair-proof-answer-wrap .fair-proof-copy{margin:0 10px 10px}

.fair-history{padding:16px 18px!important}.fair-history .section-title{margin-bottom:4px}.fair-history .pf-intro{margin:0 0 10px!important;font-size:11.5px;color:var(--t3)}.fair-history .mini-list{display:grid;gap:7px}.fair-history .mini-row{padding:10px 11px!important;border-radius:10px!important}.fair-history .fair-row-header{gap:8px}.fair-history .fair-row-header>span,.fair-history .fair-row-header>b{font-size:10.5px}.fair-history .fair-hash-row{margin-top:6px;align-items:center}.fair-history .fair-hash{max-height:none!important;overflow:hidden!important;text-overflow:ellipsis;white-space:nowrap!important;font-size:9.5px!important;color:var(--t3)!important;background:rgba(0,0,0,.2)!important}.fair-history .rr-fair-verify-btn{margin-top:6px;padding:6px 10px}.fair-history .fair-hist-more{margin-top:9px;padding:8px 14px;font-size:11px}

.fair-fold{display:block;border:1px solid var(--ln);border-radius:13px;background:rgba(15,18,28,.68);overflow:hidden}.fair-fold>summary{list-style:none;display:flex;align-items:center;min-height:58px;padding:0 16px;cursor:pointer}.fair-fold>summary::-webkit-details-marker{display:none}.fair-fold>summary span{display:flex;flex-direction:column;gap:2px;min-width:0}.fair-fold>summary b{color:var(--t1);font-size:13px}.fair-fold>summary small{color:var(--t3);font-size:10.5px;font-weight:500}.fair-fold>summary i{margin-left:auto;font-style:normal;color:var(--gold2);font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.fair-fold>summary i:after{content:'  +';font-size:14px;font-weight:500}.fair-fold[open]>summary{border-bottom:1px solid var(--ln);background:rgba(255,255,255,.018)}.fair-fold[open]>summary i:after{content:'  −'}.fair-fold-body{padding:14px 16px}.fair-fold .fair-seeds{margin:0!important;padding:0!important;border:0!important;background:none!important}.fair-fold .fair-games{margin:0!important}.fair-fold .fair-grid{margin:0!important}.fair-fold .section-block.fair-ledger{margin:0!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important}.fair-ledger-fold .fair-ledger-list{max-height:620px;overflow:auto;padding-right:3px}

@media(max-width:980px){.pf-verify.pf-verify-main{grid-template-columns:140px repeat(2,minmax(0,1fr))}.pf-verify.pf-verify-main .pf-field-sm{grid-column:auto}.fair-mini-details .pf-verify-adv{grid-template-columns:1fr 140px}.fair-mini-details .pf-field-wide{grid-column:1/-1!important}}
@media(max-width:760px){.fair-page-sub{margin-left:0;margin-right:0}.fair-hero{padding:16px;align-items:flex-start;flex-direction:column;gap:12px}.fair-hero h2{font-size:27px}.fair-hero-btn{width:100%}.fairness-explainer.fair-flow{grid-template-columns:1fr!important}.fair-flow .fe-step{min-height:0!important}.fair-verifier{padding:15px!important}.fair-verifier-head{display:block}.fair-local-badge{display:inline-flex;margin-top:8px}.pf-verify.pf-verify-main{grid-template-columns:1fr!important}.pf-verify.pf-verify-main .pf-field-sm{grid-column:auto}.fair-mini-details .pf-verify-adv{grid-template-columns:1fr!important}.pf-verify-actions{align-items:stretch!important;flex-direction:column}.fair-verify-primary{width:100%}.pf-out .pf-rrow{grid-template-columns:1fr!important}.fair-proof-grid.fair-proof-simple{grid-template-columns:1fr}.fair-history .fair-row-header{align-items:flex-start;flex-wrap:wrap}.fair-history .fair-date{margin-left:0!important;width:100%}.fair-fold>summary{min-height:62px;padding:0 13px}.fair-fold-body{padding:12px}.fair-seeds-grid{grid-template-columns:1fr!important}.fair-games{grid-template-columns:1fr!important}}

/* Build 1525 final polish: Champion proof is an accordion, so the fairness landing view stays short. */
.fair-history-fold .fair-history{max-width:none!important;margin:0!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important}.fair-history-fold .fair-history .section-title{margin-top:0}.fair-history-fold .fair-history .section-title .eyebrow{display:none}.fair-history-fold .fair-history .section-title h3{font-size:15px}.fair-history-fold .fair-history .pf-intro{max-width:780px}.fair-history-fold .mini-row{background:rgba(0,0,0,.14)!important}

/* Build 1527 — Champion history is game-granular. One row is a complete throne-hold
   session; the modal verifies every duel in that session with one click. */
.ar-fight-count{display:block;margin-top:1px;font-size:11px;line-height:1;color:var(--t3,#7f899e);font-weight:600;white-space:nowrap}
.champ-game-card{margin-bottom:12px}
.champ-game-fights{display:grid;gap:6px;margin:10px 0 2px}
.champ-game-fight{display:grid;grid-template-columns:34px minmax(100px,.55fr) 1fr;align-items:center;gap:9px;padding:9px 11px;border:1px solid rgba(255,255,255,.055);border-radius:8px;background:rgba(8,11,20,.44)}
.champ-game-fight>span{font:600 11px/1 "Share Tech Mono",monospace;color:var(--gold,#eac56a)}
.champ-game-fight>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.champ-game-fight>small{min-width:0;color:var(--t3,#7f899e);font-size:12px;line-height:1.25}
.champ-game-verify-status{margin:10px 0 12px;padding:12px 13px;border:1px solid rgba(255,255,255,.07);border-radius:8px;background:rgba(8,11,20,.46);color:var(--t2,#aeb6c8);font-size:13px}
.champ-game-verify-status.checking{border-color:rgba(234,197,106,.24)}
.champ-game-verify-status.verified{border-color:rgba(66,211,140,.38);background:rgba(24,100,67,.12);color:#80e8b2}
.champ-game-verify-status.failed{border-color:rgba(255,94,94,.36);background:rgba(120,30,30,.12);color:#ff9c9c}
.champ-game-verify-status b,.champ-game-verify-status small{display:block}
.champ-game-verify-status small{margin-top:4px;color:inherit;opacity:.82;line-height:1.35}
.champ-game-checks{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.champ-game-check{padding:4px 7px;border-radius:6px;background:rgba(255,255,255,.045);font:600 11px/1.2 "Share Tech Mono",monospace}
.champ-game-check.ok{color:#7ee7af}.champ-game-check.bad{color:#ff9999}
.champ-game-proof-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;margin-left:6px}
@media(max-width:720px){.champ-game-fight{grid-template-columns:28px 1fr}.champ-game-fight>small{grid-column:2}.champ-game-proof-link{margin:7px 0 0;display:flex}}
.champ-game-proof-actions{display:flex;gap:8px;align-items:center;margin-top:9px}.champ-game-proof-actions .rr-fair-verify-btn{text-decoration:none}
.champ-game-proof-result{margin-top:9px;padding:11px 12px;border:1px solid rgba(255,255,255,.07);border-radius:8px;background:rgba(8,11,20,.42);font-size:13px;color:var(--t2,#aeb6c8)}
.champ-game-proof-result.checking{border-color:rgba(234,197,106,.24)}.champ-game-proof-result.verified{border-color:rgba(66,211,140,.38);background:rgba(24,100,67,.12);color:#80e8b2}.champ-game-proof-result.failed{border-color:rgba(255,94,94,.36);background:rgba(120,30,30,.12);color:#ff9c9c}
.champ-game-proof-result b,.champ-game-proof-result small{display:block}.champ-game-proof-result small{margin-top:4px;line-height:1.35;color:inherit;opacity:.82}
@media(max-width:640px){.champ-game-proof-actions{flex-direction:column;align-items:stretch}.champ-game-proof-actions .rr-fair-verify-btn{display:flex;justify-content:center}}

/* Build 1528 — Champion proof receipts: keep Last Games compact, but expose the actual
   seed/hash/ledger evidence on demand instead of showing only a green Verify badge. */
.champ-game-receipt{margin-top:12px;border:1px solid rgba(238,179,81,.18);border-radius:10px;background:rgba(4,7,14,.28);overflow:hidden}
.champ-game-receipt>summary{list-style:none;display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;cursor:pointer;color:var(--t1);font-weight:800;font-size:12.5px}
.champ-game-receipt>summary::-webkit-details-marker{display:none}.champ-game-receipt>summary:after{content:'+';margin-left:auto;color:var(--gold2,#eeb351);font-size:17px;font-weight:500}.champ-game-receipt[open]>summary:after{content:'−'}
.champ-game-receipt>summary small{color:var(--t3,#7f899e);font-size:10.5px;font-weight:600;margin-left:auto}.champ-game-receipt>summary:after{margin-left:0}
.champ-game-receipt-body{padding:0 10px 10px}.champ-game-receipt-actions{display:flex;align-items:center;gap:8px;margin:2px 0 9px}.champ-proof-json{display:inline-flex;align-items:center;min-height:31px;padding:0 10px;border:1px solid rgba(255,255,255,.09);border-radius:7px;color:var(--t2,#aeb6c8);font-size:11px;font-weight:700;text-decoration:none}.champ-proof-json:hover{border-color:rgba(238,179,81,.28);color:var(--gold2,#eeb351)}
.champ-proof-fight{border:1px solid rgba(255,255,255,.06);border-radius:8px;background:rgba(9,12,21,.42);overflow:hidden;margin-top:6px}.champ-proof-fight>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:39px;padding:0 10px;cursor:pointer;font-size:11.5px;font-weight:800}.champ-proof-fight>summary::-webkit-details-marker{display:none}.champ-proof-fight>summary i{margin-left:auto;font-style:normal;font:700 10px/1.2 "Share Tech Mono",monospace;color:var(--t3,#7f899e)}.champ-proof-fight>summary i.ok{color:#7ee7af}.champ-proof-fight>summary i.bad{color:#ff9999}.champ-proof-fight>summary i.ledger{color:var(--gold2,#eeb351)}
.champ-proof-fight-body{padding:0 10px 10px}.champ-proof-note{padding:8px 9px;margin-bottom:8px;border-radius:7px;background:rgba(238,179,81,.055);color:var(--t3,#7f899e);font-size:10.5px;line-height:1.45}.champ-proof-note b{color:var(--t2,#aeb6c8)}
.champ-proof-kv-grid,.champ-proof-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.champ-proof-kv{position:relative;min-width:0;padding:8px 34px 8px 9px;border:1px solid rgba(255,255,255,.05);border-radius:7px;background:rgba(0,0,0,.18)}.champ-proof-kv>span{display:block;margin-bottom:4px;color:var(--t3,#7f899e);font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.045em}.champ-proof-kv>code{display:block;overflow-wrap:anywhere;word-break:break-word;color:var(--t1,#f3f5fa);font:600 10px/1.35 "Share Tech Mono",monospace}.champ-proof-kv>.fair-copy{position:absolute;right:6px;top:50%;transform:translateY(-50%)}
.fair-champ-receipt{margin-top:12px}.champ-game-proof-result>.champ-game-receipt{color:var(--t2,#aeb6c8)}
@media(max-width:720px){.champ-proof-kv-grid,.champ-proof-grid{grid-template-columns:1fr}.champ-game-receipt>summary{align-items:flex-start;flex-direction:column;gap:2px;padding:9px 11px}.champ-game-receipt>summary small{margin-left:0}.champ-game-receipt>summary:after{position:absolute;right:12px}.champ-game-receipt{position:relative}.champ-game-receipt-actions{align-items:stretch;flex-direction:column}.champ-proof-json{justify-content:center}}

/* ── ADMIN: SIRT CANTASI TOPLU SECIM ─────────────────────────────────────────────────────────────
   Her item'in kendi tekil silme dugmesi (sag ustteki ×) AYNEN duruyor; secim kutusu sol uste,
   ayri bir yerde. Bir tikla tek item silme aliskanligi bozulmuyor. */
/* Cubuk GORUNUR olmali: ilk surumde dugme `disabled` + soluk oldugu icin fark edilmedi.
   Simdi cerceveli bir eylem cubugu ve dugme her zaman aktif. */
.adm-bp-bulkbar{ display:flex !important; align-items:center; gap:12px; margin:0 0 10px; flex-wrap:wrap;
  padding:8px 10px; border-radius:9px; background:rgba(240,159,39,.07); border:1px solid rgba(240,159,39,.22); }
.adm-bp-bulkbar-alt{ margin:10px 0 0; }
.adm-bp-delbtn{ margin-left:auto; }
/* Secim varken dugme daha belirgin — ne olacagini soyluyor. */
.adm-bp-delbtn.is-armed{ box-shadow:0 0 0 2px rgba(239,68,68,.35); }
.adm-bp-all{ display:inline-flex; align-items:center; gap:7px; cursor:pointer;
  font:600 12.5px system-ui,-apple-system,sans-serif; color:#8b93a7; user-select:none; }
.adm-bp-all input{ width:15px; height:15px; accent-color:#f09f27; cursor:pointer; }
.adm-bp-bulkbar .adm-btn[disabled]{ opacity:.42; cursor:not-allowed; }

.adm-bp-item{ position:relative; }
.adm-bp-pick{ position:absolute; top:5px; left:5px; z-index:3; cursor:pointer;
  width:20px; height:20px; display:flex; align-items:center; justify-content:center;
  border-radius:5px; background:rgba(12,14,20,.72); }
.adm-bp-pick input{ width:14px; height:14px; margin:0; accent-color:#f09f27; cursor:pointer; }
/* Secili item belirgin olsun: 30 skinlik bir izgarada neyin secildigini gormek sart. */
.adm-bp-item.is-picked{ outline:2px solid #f09f27; outline-offset:-2px; }
.adm-bp-item.is-picked .adm-bp-pick{ background:#f09f27; }
