/* ════════════════════════════════════════════════════════════════════
   flagship-v2-felt.css · craps/flagship-pass/v2 · COMPLETE felt — TABLE
   ────────────────────────────────────────────────────────────────────
   The open table, in feed order:
     ★ CompactScoreboard  — the LIVE MLB scoreboard, designed as a HERO
       (teams · score · inning · B/S · outs · bases diamond · pitch-zone ·
        pitcher / batter). The soul of "Real MLB. Real Craps."
     DiceBand            — the roll result + tempo + queue depth
     Hero state panel    — point · odds · what's-next · exposure (from v1)
     + More bets         — FeltGrid + ActionRail (demoted, never deleted)
     FeltResultOverlay   — win count-up / muted seven-out / push
     Wallet rail + BetCTA scrubber

   Inherits --fp-* aliases declared in flagship-v2-shell.css.
   ════════════════════════════════════════════════════════════════════ */

/* ════════════════════════════════════════════════════════════════════
   THE SELECTED-GAME CARD — one self-contained card:
   leaderboard strip · scoreboard · roll · core table · other-bets
   ════════════════════════════════════════════════════════════════════ */
.fp2-card {
  position: relative; border-radius: 14px; overflow: hidden;
  background: var(--fp-g2); border: 1px solid var(--fp-edge2);
  box-shadow: 0 10px 30px rgba(0,0,0,0.45);
  display: flex; flex-direction: column;
}
.fp2-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; z-index: 6;
  background: linear-gradient(180deg, var(--fp-gold-soft) 0%, var(--fp-gold) 100%);
  box-shadow: 0 0 12px rgba(232,200,117,0.45);
}
/* inner sections become borderless bands divided by hairlines */
.fp2-card .chud { border: 0; border-bottom: 1px solid var(--fp-edge); box-shadow: none; border-radius: 0; background: linear-gradient(180deg, rgba(212,168,67,0.05), transparent); }
.fp2-card .csb { border: 0; border-bottom: 1px solid var(--fp-edge); box-shadow: none; border-radius: 0; background: transparent; }
.fp2-card .csb-strap { background: transparent; }
.fp2-card .dice-band { border: 0; border-bottom: 1px solid var(--fp-edge); box-shadow: none; border-radius: 0; background: rgba(0,0,0,0.16); }

/* slim leaderboard strip (the moved HUD) — two ranking chips only; the contest
   stack lives in the wallet, the global budget in the VariantBar */
.fp2-card .chud { padding: 6px 8px 6px 10px; grid-template-columns: 1fr 1fr; }
.fp2-card .chud-chip { min-height: 0; padding: 5px 8px 5px 10px; gap: 2px; }
.fp2-card .chud-chip::before { top: 5px; bottom: 5px; }
.fp2-card .chud-chip-top { gap: 5px; }
.fp2-card .chud-eyebrow { font-size: 8px; letter-spacing: 0.14em; }
.fp2-card .chud-badge { font-size: 7.5px; padding: 1px 4px; }
.fp2-card .chud-rank-ord { font-size: 16px; }
.fp2-card .chud-rank-field { font-size: 9px; }
.fp2-card .chud-rank-status { font-size: 7px; max-width: 48%; line-height: 1.1; }
.fp2-card .chud-stack { padding: 5px 9px 5px 11px; min-width: 76px; }
.fp2-card .chud-stack-lbl { font-size: 7.5px; }
.fp2-card .chud-stack-val { font-size: 16px; }

/* core table section */
.card-table { position: relative; padding: 9px 10px 11px; display: flex; flex-direction: column; gap: 8px; }
.card-table-bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.card-table-status { display: inline-flex; align-items: center; gap: 6px; font-family: var(--fp-mono); font-size: 9px; font-weight: 700; letter-spacing: 0.06em; color: var(--fp-dim); text-transform: uppercase; }
.card-table-hint { font-family: var(--fp-mono); font-size: 8.5px; letter-spacing: 0.03em; color: var(--fp-faint); text-transform: uppercase; white-space: nowrap; }
.act-pay { font-family: var(--fp-mono); font-size: 7px; font-weight: 700; color: var(--fp-faint); margin-left: 4px; }
.act.selected .act-pay, .act.has .act-pay { color: var(--fp-gold-soft); }
/* point-lock pulse lands on the actual table number now */
.fp2-screen[data-point-just] .felt-grid .num.point { animation: fp2-point-pop 640ms var(--fp-ease) 1; }

/* ════════════════════════════════════════════════════════════════════
   ★ THE LIVE MLB SCOREBOARD — designed like it matters
   ════════════════════════════════════════════════════════════════════ */
/* ── COMPACT scoreboard band: strap · dense score+situation row · thin VS ── */
.csb {
  position: relative; border-radius: 12px; overflow: hidden;
  background:
    radial-gradient(ellipse 120% 90% at 50% -20%, rgba(212,168,67,0.06) 0%, transparent 60%),
    linear-gradient(180deg, var(--fp-g3) 0%, var(--fp-g2) 100%);
  border: 1px solid var(--fp-edge2);
  box-shadow: 0 6px 18px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.04);
}

/* strap: LIVE · MLB + matchup names */
.csb-strap {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 11px; border-bottom: 1px solid var(--fp-edge); background: rgba(0,0,0,0.25);
}
.csb-strap-tag {
  display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0;
  font-size: 8px; font-weight: 800; letter-spacing: 0.16em; color: var(--fp-neg);
}
.csb-strap-tag i { width: 5px; height: 5px; border-radius: 50%; background: var(--fp-neg); box-shadow: 0 0 6px var(--fp-neg); animation: fp2-blink 1.6s ease-in-out infinite; }
.csb-strap-meta { margin-left: auto; font-family: var(--fp-mono); font-size: 8.5px; letter-spacing: 0.04em; color: var(--fp-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.csb-strap-meta b { color: var(--fp-dim); font-weight: 700; }

/* dense main row: scores+inning (left) · situation (right) */
.csb-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 11px 6px; }
.csb-match { display: flex; align-items: center; gap: 7px; flex-shrink: 0; }
.csb-abbr {
  font-weight: 800; font-size: 10px; letter-spacing: 0.06em; line-height: 1;
  padding: 3px 5px; border-radius: 3px; text-align: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.12);
}
.csb-score {
  font-family: var(--fp-mono); font-weight: 700; font-size: 21px; line-height: 1;
  color: var(--fp-ink); font-variant-numeric: tabular-nums; min-width: 16px; text-align: center;
  transition: color 240ms, text-shadow 240ms;
}
.csb-score.flash { color: var(--fp-gold-soft); text-shadow: 0 0 16px rgba(232,200,117,0.7); }
.csb-inning {
  display: inline-flex; flex-direction: column; align-items: center; gap: 1px; line-height: 1;
  padding: 0 5px; border-left: 1px solid var(--fp-edge); border-right: 1px solid var(--fp-edge);
}
.csb-inning-half { font-size: 7.5px; font-weight: 800; letter-spacing: 0.10em; color: var(--fp-gold); white-space: nowrap; }
.csb-inning-num { font-family: var(--fp-mono); font-size: 11px; font-weight: 700; color: var(--fp-ink); }

/* situation: count · outs · diamond · pitch zone — all inline, compact */
.csb-situation { display: flex; align-items: center; gap: 9px; flex-shrink: 0; }
.csb-count { display: inline-flex; align-items: baseline; gap: 3px; }
.csb-count-k { font-family: var(--fp-mono); font-size: 8px; font-weight: 700; letter-spacing: 0.04em; color: var(--fp-faint); }
.csb-count-v { font-family: var(--fp-mono); font-size: 12px; font-weight: 700; color: var(--fp-ink); line-height: 1; }
.csb-count-v.hot { color: var(--fp-gold-soft); }
.csb-outs { display: inline-flex; gap: 3px; }
.csb-out { width: 6px; height: 6px; border-radius: 50%; background: transparent; border: 1.5px solid var(--fp-edge2); transition: background var(--fp-std), border-color var(--fp-std); }
.csb-out.on { background: var(--fp-gold); border-color: var(--fp-gold); box-shadow: 0 0 6px rgba(212,168,67,0.6); }
.csb-diamond { width: 30px; height: 24px; flex-shrink: 0; }
.csb-diamond-base { fill: rgba(255,255,255,0.04); stroke: var(--fp-edge2); stroke-width: 1.4; transition: fill var(--fp-std), stroke var(--fp-std); }
.csb-diamond-base.on { fill: var(--fp-gold); stroke: var(--fp-gold-soft); filter: drop-shadow(0 0 3px rgba(232,200,117,0.7)); }
/* MiniPitchZone — compact strike zone with recent pitch dots */
.csb-zone {
  position: relative; display: inline-block; width: 26px; height: 32px; border-radius: 3px; flex-shrink: 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01)); border: 1px solid var(--fp-edge2);
}
.csb-zone::before, .csb-zone::after { content: ''; position: absolute; }
.csb-zone::before { left: 33.3%; top: 0; bottom: 0; width: 33.4%; border-left: 1px solid var(--fp-ghost); border-right: 1px solid var(--fp-ghost); }
.csb-zone::after { top: 33.3%; left: 0; right: 0; height: 33.4%; border-top: 1px solid var(--fp-ghost); border-bottom: 1px solid var(--fp-ghost); }
.csb-pitch {
  position: absolute; width: 6px; height: 6px; border-radius: 50%;
  transform: translate(-50%,-50%); border: 1px solid rgba(0,0,0,0.5);
  font-family: var(--fp-mono); font-size: 4px; font-weight: 700; color: #fff;
  display: grid; place-items: center; line-height: 1;
}
.csb-pitch.ball { background: var(--fp-pos); }
.csb-pitch.strike { background: var(--fp-neg); }
.csb-pitch.last { width: 8px; height: 8px; font-size: 5px; box-shadow: 0 0 7px rgba(232,200,117,0.8); border-color: var(--fp-gold-soft); z-index: 2; }

/* thin VS line: pitcher · batter */
.csb-vs { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 11px; border-top: 1px dashed var(--fp-edge); }
.csb-vs-side { display: inline-flex; align-items: baseline; gap: 5px; min-width: 0; }
.csb-vs-side.bat { justify-content: flex-end; }
.csb-vs-tag { font-size: 8px; font-weight: 800; letter-spacing: 0.10em; color: var(--fp-gold); flex-shrink: 0; }
.csb-vs-name { font-size: 11px; font-weight: 700; color: var(--fp-ink); letter-spacing: 0.02em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.csb-vs-meta { font-family: var(--fp-mono); font-size: 8px; color: var(--fp-faint); letter-spacing: 0.02em; white-space: nowrap; }
.csb-vs-meta b { color: var(--fp-gold-soft); font-weight: 700; }

/* ════════════════════════════════════════════════════════════════════
   DICE BAND — the roll result wedge
   ════════════════════════════════════════════════════════════════════ */
.db-inning {
  flex-shrink: 0; font-family: var(--fp-disp); font-size: 8px; font-weight: 800; letter-spacing: 0.08em;
  line-height: 1.15; color: var(--fp-gold); text-transform: uppercase; text-align: center;
  padding-right: 9px; border-right: 1px solid var(--fp-edge);
}
.dice-band {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 13px; border-radius: 12px;
  background: linear-gradient(180deg, var(--fp-g3), var(--fp-g2));
  border: 1px solid var(--fp-edge2);
  position: relative; overflow: hidden;
  transition: border-color var(--fp-std);
}
.dice-band.flash { border-color: rgba(232,200,117,0.5); }
.dice-pair { display: inline-flex; gap: 6px; flex-shrink: 0; }
.die {
  width: 38px; height: 38px; border-radius: 8px; position: relative;
  background: linear-gradient(160deg, #fbf6e8 0%, #d8d0bb 100%);
  box-shadow: 0 2px 5px rgba(0,0,0,0.5), inset 0 0 0 0.5px rgba(0,0,0,0.1);
}
.die .pip { position: absolute; width: 5.5px; height: 5.5px; border-radius: 50%; background: radial-gradient(circle, #e23a3a 0%, #8a1818 100%); transform: translate(-50%,-50%); }
.die.rolling { animation: fp2-tumble 150ms linear infinite; }
@keyframes fp2-tumble { 0% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-3px) rotate(-12deg); } 50% { transform: translateY(0) rotate(10deg); } 75% { transform: translateY(-2px) rotate(-6deg); } 100% { transform: translateY(0) rotate(0); } }

/* main column: play (co-main) over secondary meta */
.db-main { display: flex; flex-direction: column; gap: 5px; min-width: 0; flex: 1; }
.db-play { display: flex; align-items: center; gap: 9px; min-width: 0; }
.die-total { font-family: var(--fp-mono); font-weight: 700; font-size: 26px; line-height: 1; color: var(--fp-gold-soft); flex-shrink: 0; font-variant-numeric: tabular-nums; }
.die-total.win { color: var(--fp-pos); }
.die-total.loss { color: var(--fp-neg); }
.die-evt-label { font-size: 15px; font-weight: 800; letter-spacing: 0.02em; color: var(--fp-ink); line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; }
.die-tag { font-size: 8px; font-weight: 800; letter-spacing: 0.12em; padding: 3px 6px; border-radius: 3px; background: rgba(255,255,255,0.05); color: var(--fp-dim); text-transform: uppercase; flex-shrink: 0; }
.die-tag.win { background: rgba(109,186,128,0.18); color: var(--fp-pos); }
.die-tag.loss { background: rgba(229,115,115,0.18); color: var(--fp-neg); }
.die-tag.point { background: rgba(232,200,117,0.18); color: var(--fp-gold-soft); }

/* secondary meta row: radar MPH · pitcher→batter · timer */
.db-sub { display: flex; align-items: center; gap: 9px; min-width: 0; }
.db-radar {
  display: inline-flex; align-items: baseline; gap: 3px; flex-shrink: 0;
  padding: 2px 6px; border-radius: 4px; background: rgba(0,0,0,0.35); border: 1px solid var(--fp-edge2);
}
.db-radar b { font-family: var(--fp-mono); font-size: 12px; font-weight: 700; color: var(--fp-pos); line-height: 1; letter-spacing: 0.02em; font-variant-numeric: tabular-nums; }
.db-radar i { font-family: var(--fp-mono); font-size: 7px; font-style: normal; font-weight: 700; letter-spacing: 0.10em; color: var(--fp-faint); }
.db-vs { font-family: var(--fp-mono); font-size: 9px; letter-spacing: 0.02em; color: var(--fp-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1; }
.db-vs em { font-style: normal; color: var(--fp-faint); margin: 0 2px; }
.db-tempo { flex-shrink: 0; font-family: var(--fp-mono); font-size: 9px; font-weight: 700; color: var(--fp-faint); letter-spacing: 0.04em; }
.dice-band { cursor: pointer; }
.dice-band:hover { border-color: rgba(232,200,117,0.45); }
.db-history-cue { position: absolute; top: 7px; right: 11px; }
.db-history-cue {
  flex-shrink: 0; font-family: var(--fp-mono); font-size: 8px; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--fp-faint); align-self: flex-start; margin-top: -2px;
}
.dice-band:hover .db-history-cue { color: var(--fp-gold-soft); }

/* roll & play history rows */
.hist-list { display: flex; flex-direction: column; gap: 4px; max-height: 56vh; overflow-y: auto; }
.hist-row {
  display: grid; grid-template-columns: 40px auto 1fr auto; align-items: center; gap: 9px;
  padding: 8px 10px; background: rgba(255,255,255,0.018); border: 1px solid var(--fp-edge); border-radius: 7px;
}
.hist-row.you { border-color: rgba(232,200,117,0.4); background: linear-gradient(180deg, rgba(212,168,67,0.07), rgba(212,168,67,0.02)); }
.hist-inn { font-family: var(--fp-mono); font-size: 8px; font-weight: 700; letter-spacing: 0.04em; color: var(--fp-gold); text-align: center; line-height: 1.2; }
.hist-dice { display: inline-flex; align-items: center; gap: 6px; }
.hist-dice .die { width: 18px; height: 18px; border-radius: 4px; }
.hist-dice .die .pip { width: 3px; height: 3px; }
.hist-total { font-family: var(--fp-mono); font-size: 14px; font-weight: 700; color: var(--fp-ink); min-width: 16px; text-align: center; }
.hist-evt { min-width: 0; }
.hist-evt-label { font-size: 11px; font-weight: 700; letter-spacing: 0.02em; color: var(--fp-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hist-evt-sub { font-family: var(--fp-mono); font-size: 8px; letter-spacing: 0.03em; color: var(--fp-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hist-pl { font-family: var(--fp-mono); font-size: 12px; font-weight: 700; text-align: right; white-space: nowrap; }
.hist-pl.up { color: var(--fp-pos); }
.hist-pl.down { color: var(--fp-neg); }
.hist-pl.flat { color: var(--fp-faint); }
.hist-tag { display: inline-block; font-size: 7.5px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; padding: 1px 5px; border-radius: 3px; background: rgba(255,255,255,0.06); color: var(--fp-dim); margin-top: 2px; }
.hist-tag.win { background: rgba(109,186,128,0.18); color: var(--fp-pos); }
.hist-tag.loss { background: rgba(229,115,115,0.18); color: var(--fp-neg); }
.hist-tag.point { background: rgba(232,200,117,0.18); color: var(--fp-gold-soft); }

/* ════════════════════════════════════════════════════════════════════
   HERO STATE PANEL — point · odds · what's-next · exposure (clarity)
   ════════════════════════════════════════════════════════════════════ */
.fp2-hero {
  position: relative; border-radius: 12px; padding: 9px 12px 10px;
  background: linear-gradient(180deg, var(--fp-g3) 0%, var(--fp-g2) 100%);
  border: 1px solid var(--fp-edge2); overflow: hidden;
  transition: border-color var(--fp-reveal) var(--fp-ease);
}
.fp2-screen[data-phase="point"] .fp2-hero { border-color: rgba(232,200,117,0.42); }
.fp2-hero::after {
  content: ''; position: absolute; inset: 0; border-radius: 12px; pointer-events: none;
  box-shadow: var(--lg-glow-ambient, 0 0 0 1px var(--fp-gold-soft), 0 0 18px -2px var(--fp-gold)); opacity: 0; z-index: 0;
}
.fp2-screen[data-phase="point"][data-odds="on"] .fp2-hero::after { animation: lg-breathe var(--fp-breathe) var(--fp-ease) infinite; }

/* slim status row: small point indicator · phase + what's-next · odds pill */
.fp2-status-row { position: relative; z-index: 1; display: flex; align-items: center; gap: 11px; }
.fp2-disc { position: relative; width: 46px; height: 46px; flex-shrink: 0; display: grid; place-items: center; }
.fp2-ring { position: absolute; inset: 0; border-radius: 50%; border: 2px solid var(--fp-edge2); transition: border-color var(--fp-reveal) var(--fp-ease), box-shadow var(--fp-reveal) var(--fp-ease); }
.fp2-screen[data-phase="point"] .fp2-ring { border-color: var(--fp-gold); box-shadow: var(--lg-glow, 0 0 0 1.5px var(--fp-gold-soft), 0 0 14px -1px var(--fp-gold)); }
.fp2-screen[data-phase="comeout"] .fp2-ring { border-style: dashed; }
.fp2-ring::before { content: ''; position: absolute; inset: -2px; border-radius: 50%; border: 2px solid var(--fp-gold-soft); opacity: 0; }
.fp2-screen[data-point-just] .fp2-ring::before { animation: lg-ring-out 900ms var(--fp-ease) 1; }
.fp2-point { font-weight: 800; font-size: 24px; line-height: 1; color: var(--fp-gold-soft); text-shadow: 0 0 14px rgba(232,200,117,0.4); }
.fp2-screen[data-point-just] .fp2-point { animation: fp2-point-pop 640ms var(--fp-ease) 1; }
@keyframes fp2-point-pop { 0% { transform: scale(0.7); opacity: 0.2; } 55% { transform: scale(1.12); } 100% { transform: scale(1); opacity: 1; } }
.fp2-dice-glyph { display: none; gap: 4px; }
.fp2-dice-glyph .die { width: 17px; height: 17px; border-radius: 4px; }
.fp2-dice-glyph .die .pip { width: 3px; height: 3px; }
.fp2-screen[data-phase="comeout"] .fp2-point { display: none; }
.fp2-screen[data-phase="comeout"] .fp2-dice-glyph { display: inline-flex; }

.fp2-status-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.fp2-phase { font-size: 10px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fp-dim); }
.fp2-screen[data-phase="point"] .fp2-phase { color: var(--fp-gold-soft); }
.fp2-next-line { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; font-size: 12px; font-weight: 700; letter-spacing: 0.01em; color: var(--fp-dim); }
.fp2-next-line .arrow { color: var(--fp-gold); font-weight: 900; }
.fp2-next-line .win { color: var(--fp-pos); font-weight: 800; }
.fp2-next-line .lose { color: var(--fp-ink); font-weight: 800; }
.fp2-next-line b { font-family: var(--fp-mono); font-size: 13px; font-weight: 700; padding: 0 1px; font-variant-numeric: tabular-nums; }
.fp2-next-line .win b { color: var(--fp-pos); }
.fp2-next-line .lose b { color: var(--fp-gold-soft); }

.fp2-odds-pill { flex-shrink: 0; display: inline-flex; align-items: center; gap: 5px; font-family: var(--fp-mono); font-size: 9px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--fp-edge2); color: var(--fp-faint); background: rgba(255,255,255,0.03); transition: all var(--fp-std) var(--fp-ease); }
.fp2-odds-pill i { width: 6px; height: 6px; border-radius: 50%; background: var(--fp-faint); }
.fp2-screen[data-odds="on"] .fp2-odds-pill { border-color: rgba(232,200,117,0.5); color: var(--fp-gold-soft); background: rgba(212,168,67,0.12); }
.fp2-screen[data-odds="on"] .fp2-odds-pill i { background: var(--fp-gold-soft); box-shadow: 0 0 8px var(--fp-gold-soft); }

.fp2-oddsbar { display: flex; align-items: center; gap: 7px; margin-top: 8px; }
.fp2-oddsbar-track { flex: 1; height: 5px; border-radius: 3px; overflow: hidden; display: flex; background: rgba(255,255,255,0.05); }
.fp2-oddsbar-win { background: linear-gradient(90deg, var(--fp-gold), var(--fp-gold-soft)); }
.fp2-oddsbar-seven { background: rgba(240,240,236,0.18); }
.fp2-oddsbar-cap { font-family: var(--fp-mono); font-size: 8px; letter-spacing: 0.06em; color: var(--fp-faint); white-space: nowrap; }
.fp2-oddsbar-cap b { color: var(--fp-gold-soft); }

.fp2-money { position: relative; z-index: 1; display: flex; align-items: center; gap: 8px; margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--fp-edge); }
.fp2-money-cell { display: inline-flex; align-items: baseline; gap: 5px; }
.fp2-money-cell span { font-size: 8px; font-weight: 800; letter-spacing: 0.16em; color: var(--fp-faint); text-transform: uppercase; }
.fp2-money-cell b { font-family: var(--fp-mono); font-size: 14px; font-weight: 700; color: var(--fp-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.fp2-money-cell.win b { color: var(--fp-gold-soft); }
.fp2-money-arrow { color: var(--fp-gold); font-size: 14px; font-weight: 900; }
.fp2-money-spacer { flex: 1; }

/* ROLL-REVEAL cover — Stage 1 (dice/event) → Stage 2 (your P&L + contest move) */
.fp2-reveal {
  position: absolute; inset: 0; z-index: 30; display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 16px; text-align: center;
  background: radial-gradient(ellipse 100% 80% at 50% 45%, rgba(8,11,14,0.93) 0%, rgba(8,11,14,0.975) 75%);
  opacity: 0; pointer-events: none; transition: opacity 220ms var(--fp-ease);
}
.fp2-reveal.rv-on { opacity: 1; pointer-events: auto; }
.rv-sweep { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.rv-sweep::before { content: ''; position: absolute; top: 0; bottom: 0; width: 45%; background: linear-gradient(90deg, transparent, rgba(232,200,117,0.18), transparent); transform: translateX(-130%); }
.fp2-reveal[data-result="win"][data-stage="pl"] .rv-sweep::before { animation: lg-sweep 640ms var(--fp-ease) 120ms 1; }

.rv-stage { position: relative; display: none; flex-direction: column; align-items: center; gap: 6px; width: 100%; }
.fp2-reveal[data-stage="dice"] .rv-dice-stage { display: flex; }
.fp2-reveal[data-stage="pl"] .rv-pl-stage { display: flex; animation: rv-pop 360ms var(--fp-ease); }
@keyframes rv-pop { 0% { opacity: 0; transform: translateY(8px) scale(0.97); } 100% { opacity: 1; transform: none; } }
.rv-eyebrow { font-family: var(--fp-mono); font-size: 9px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--fp-gold); }

/* ── #8 MARQUEE TAKEOVER: HR / STRIKEOUT hijack the reveal ── */
.rv-marquee { display: none; }
.fp2-reveal[data-marquee] { background: radial-gradient(ellipse 110% 90% at 50% 40%, rgba(8,11,14,0.97) 0%, rgba(8,11,14,0.99) 70%); }
.fp2-reveal[data-marquee] .rv-marquee {
  display: block; font-weight: 900; font-size: 40px; line-height: 0.92; letter-spacing: 0.01em;
  text-transform: uppercase; text-align: center; margin-bottom: 8px; color: var(--fp-gold-soft);
  text-shadow: 0 0 36px rgba(232,200,117,0.55);
}
.fp2-reveal[data-marquee][data-stage="dice"] .rv-marquee { animation: rv-slam 480ms var(--fp-ease) both; }
@keyframes rv-slam { 0% { opacity: 0; transform: scale(1.6); letter-spacing: 0.2em; } 55% { opacity: 1; transform: scale(0.94); } 100% { opacity: 1; transform: scale(1); letter-spacing: 0.01em; } }
.fp2-reveal[data-marquee] .rv-trail { width: min(300px, 90%); }
/* HOME RUN = gold + go-deep glow; STRIKEOUT = aggressive red */
.fp2-reveal[data-marquee="k"] .rv-marquee { color: var(--fp-neg); text-shadow: 0 0 34px rgba(229,115,115,0.55); }
.fp2-reveal[data-marquee="hr"] .rv-sweep::before { background: linear-gradient(90deg, transparent, rgba(232,200,117,0.3), transparent); }
.fp2-reveal[data-marquee="hr"][data-stage="dice"] .rv-sweep::before { animation: lg-sweep 700ms var(--fp-ease) 200ms 1; }

/* ── bases-loaded tension: ambient red heartbeat on the card ── */
.fp2-card[data-bases-loaded]::after {
  content: ''; position: absolute; inset: 0; border-radius: 14px; pointer-events: none; z-index: 7;
  box-shadow: inset 0 0 0 1.5px rgba(229,115,115,0.5), inset 0 0 26px -4px rgba(229,115,115,0.5);
  animation: fp2-heartbeat 1.1s ease-in-out infinite;
}
@keyframes fp2-heartbeat { 0%, 100% { opacity: 0.25; } 18% { opacity: 0.9; } 36% { opacity: 0.4; } 54% { opacity: 0.85; } }

/* ── PITCH → RESULT → ROLL trail (cascades top-down on every pitch) ── */
.rv-trail { display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: 10px; width: min(280px, 86%); }
.rv-step { display: flex; flex-direction: column; align-items: center; gap: 3px; width: 100%; padding: 9px 12px; border-radius: 10px; background: rgba(255,255,255,0.03); border: 1px solid var(--fp-edge2); }
.rv-step-k { font-family: var(--fp-mono); font-size: 8px; font-weight: 700; letter-spacing: 0.20em; text-transform: uppercase; color: var(--fp-faint); }
.rv-step-v { font-size: 16px; font-weight: 800; letter-spacing: 0.02em; color: var(--fp-ink); line-height: 1; display: inline-flex; align-items: baseline; gap: 5px; }
.rv-step-v.big { font-size: 19px; text-transform: uppercase; text-align: center; }
.rv-step-v b { font-family: var(--fp-mono); font-weight: 700; color: var(--fp-pos); }
.rv-step-v i { font-family: var(--fp-mono); font-style: normal; font-size: 9px; font-weight: 700; letter-spacing: 0.10em; color: var(--fp-faint); }
.rv-step-v em { font-style: normal; font-size: 12px; letter-spacing: 0.08em; color: var(--fp-dim); }
.rv-step-pitch { background: rgba(0,0,0,0.3); }
.rv-step-roll { background: linear-gradient(180deg, rgba(212,168,67,0.10), rgba(212,168,67,0.02)); border-color: rgba(232,200,117,0.4); }
.rv-roll-line { display: inline-flex; align-items: center; gap: 10px; }
.rv-arrow { font-size: 16px; line-height: 1; color: var(--fp-gold); font-weight: 700; }

/* the cascade: each row drops in, top-down */
.rv-dice-stage .rv-step, .rv-dice-stage .rv-arrow { opacity: 0; }
.fp2-reveal[data-stage="dice"] .rv-step-pitch { animation: rv-drop 280ms var(--fp-ease) 60ms both; }
.fp2-reveal[data-stage="dice"] .rv-trail .rv-arrow:nth-of-type(1) { animation: rv-fade 180ms ease 300ms both; }
.fp2-reveal[data-stage="dice"] .rv-step-result { animation: rv-drop 280ms var(--fp-ease) 400ms both; }
.fp2-reveal[data-stage="dice"] .rv-trail .rv-arrow:nth-of-type(2) { animation: rv-fade 180ms ease 640ms both; }
.fp2-reveal[data-stage="dice"] .rv-step-roll { animation: rv-drop 360ms var(--fp-ease) 740ms both; }
@keyframes rv-drop { 0% { opacity: 0; transform: translateY(-12px); } 60% { transform: translateY(2px); } 100% { opacity: 1; transform: none; } }
@keyframes rv-fade { from { opacity: 0; } to { opacity: 1; } }

.rv-dice { display: inline-flex; gap: 8px; }
.rv-die { width: 38px; height: 38px; border-radius: 9px; }
.rv-die .pip { width: 6px; height: 6px; }
.rv-total { font-family: var(--fp-mono); font-weight: 700; font-size: 32px; line-height: 1; color: var(--fp-gold-soft); }
.rv-tag { font-size: 10px; font-weight: 800; letter-spacing: 0.14em; padding: 3px 8px; border-radius: 4px; background: rgba(255,255,255,0.08); color: var(--fp-dim); text-transform: uppercase; }
.rv-tag.win { background: rgba(109,186,128,0.2); color: var(--fp-pos); }
.rv-tag.loss { background: rgba(229,115,115,0.2); color: var(--fp-neg); }
.rv-tag.point { background: rgba(232,200,117,0.2); color: var(--fp-gold-soft); }

.rv-pl-amt { font-family: var(--fp-mono); font-weight: 700; font-size: 42px; line-height: 1.05; color: var(--fp-gold-soft); text-shadow: 0 0 26px rgba(232,200,117,0.5); font-variant-numeric: tabular-nums; }
.fp2-reveal[data-result="loss"] .rv-pl-amt, .fp2-reveal[data-result="push"] .rv-pl-amt { color: var(--fp-dim); text-shadow: none; font-size: 34px; }
.rv-pl-lines { font-family: var(--fp-mono); font-size: 10px; letter-spacing: 0.04em; color: var(--fp-dim); }
.rv-pl-lines b { color: var(--fp-pos); }
.rv-contest { display: flex; flex-direction: column; gap: 5px; margin-top: 10px; width: min(266px, 84%); }
.rv-crow { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 10px; border: 1px solid var(--fp-edge); border-radius: 8px; background: rgba(255,255,255,0.03); }
.rv-ctier { font-size: 10px; font-weight: 800; letter-spacing: 0.10em; text-transform: uppercase; color: var(--fp-dim); }
.rv-move { font-family: var(--fp-mono); font-size: 11px; font-weight: 700; color: var(--fp-ink); }
.rv-move.up { color: var(--fp-pos); }
.rv-move.down { color: var(--fp-neg); }
.rv-move sup { font-size: 0.6em; }
.rv-stack { margin-top: 9px; font-family: var(--fp-mono); font-size: 11px; color: var(--fp-faint); }
.rv-stack b { color: var(--fp-ink); font-weight: 700; }
.rv-stack b.up { color: var(--fp-pos); }
.rv-stack b.down { color: var(--fp-neg); }

/* ════════════════════════════════════════════════════════════════════
   MORE BETS — disclosure → FeltGrid + ActionRail (demoted, never deleted)
   ════════════════════════════════════════════════════════════════════ */
.fp2-more {
  width: 100%; display: flex; align-items: center; justify-content: center; gap: 7px;
  padding: 10px; border-radius: 11px; background: transparent; border: 1px dashed var(--fp-edge2);
  color: var(--fp-dim); cursor: pointer; font-family: var(--fp-disp); font-size: 11px; font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase; transition: border-color var(--fp-std), color var(--fp-std);
}
.fp2-more:hover { border-color: rgba(232,200,117,0.5); color: var(--fp-gold-soft); }
.fp2-more b { color: var(--fp-gold-soft); }
.fp2-more .chev { transition: transform var(--fp-reveal) var(--fp-ease); display: inline-block; }
.fp2-screen[data-mode="more"] .fp2-more .chev { transform: rotate(180deg); }
.fp2-screen[data-mode="more"] .fp2-more { color: var(--fp-gold-soft); border-color: rgba(232,200,117,0.35); }
.fp2-adv { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--fp-reveal) var(--fp-ease); }
.fp2-screen[data-mode="more"] .fp2-adv { grid-template-rows: 1fr; }
.fp2-adv-inner { overflow: hidden; min-height: 0; }
.fp2-adv .actions-row { padding-top: 8px; }
.fp2-adv-pad { display: flex; flex-direction: column; gap: 9px; padding-top: 2px; }

/* the felt matrix */
.felt-grid {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; padding: 9px;
  border-radius: 11px; background: rgba(255,255,255,0.015); border: 1px solid var(--fp-edge);
}
.zone {
  position: relative; background: rgba(255,255,255,0.02); border: 1px solid var(--fp-edge); border-radius: 5px;
  min-height: 44px; padding: 6px 4px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  text-align: center; cursor: pointer; transition: background var(--fp-micro), border-color var(--fp-micro), transform var(--fp-micro);
}
.zone:active { transform: scale(0.96); }
.zone.selected { border-color: var(--fp-gold-soft); box-shadow: 0 0 0 1px rgba(232,200,117,0.4); background: rgba(212,168,67,0.06); }
.zone.has { background: rgba(212,168,67,0.05); border-color: rgba(232,200,117,0.3); }
.zone .num { font-weight: 800; font-size: 16px; line-height: 1; color: var(--fp-ink); }
.zone .num.point { color: var(--fp-gold-soft); text-shadow: 0 0 8px rgba(232,200,117,0.4); }
.zone .pay { font-family: var(--fp-mono); font-size: 7px; color: var(--fp-faint); letter-spacing: 0.03em; }
.zone .zone-lbl { font-size: 8px; font-weight: 700; letter-spacing: 0.16em; line-height: 1.15; color: var(--fp-dim); text-transform: uppercase; }
.zone.come-box { grid-column: 1 / 2; grid-row: 1 / 3; }
.zone.come-bar { grid-column: 1 / 7; min-height: 36px; }
.zone.come-bar .num { font-size: 17px; letter-spacing: 0.30em; }
.zone.field-bar { grid-column: 1 / 7; min-height: 34px; flex-direction: row; gap: 8px; padding: 4px 10px; }
.zone.field-bar .field-lbl { font-size: 10px; font-weight: 800; letter-spacing: 0.20em; color: var(--fp-gold-soft); }
.zone.field-bar .field-nums { font-family: var(--fp-mono); font-size: 9px; color: var(--fp-dim); letter-spacing: 0.06em; }
.zone.field-bar .field-mult { font-family: var(--fp-mono); font-size: 8px; color: var(--fp-faint); margin-left: auto; }
.zone.dontpass-bar, .zone.passline-bar { grid-column: 1 / 7; min-height: 30px; flex-direction: row; }
.zone.passline-bar { background: linear-gradient(180deg, rgba(212,168,67,0.10), rgba(212,168,67,0.02)); border-color: rgba(232,200,117,0.35); }
.zone.passline-bar .zone-lbl { color: var(--fp-gold-soft); font-size: 10px; letter-spacing: 0.26em; font-weight: 800; }
.zone.dontpass-bar .zone-lbl { letter-spacing: 0.18em; }

/* chip stacks on zones */
.chip-stack { position: absolute; right: 4px; bottom: 3px; display: inline-flex; align-items: center; }
.chip-stack .stack-total { font-family: var(--fp-mono); font-size: 8px; font-weight: 700; color: var(--fp-gold-soft); margin-right: 3px; }
.chip-mini {
  width: 17px; height: 17px; border-radius: 50%; background: var(--c-bg, var(--fp-gold));
  border: 2px solid var(--c-rim, var(--fp-gold-soft)); box-shadow: 0 1px 2px rgba(0,0,0,0.5);
  display: grid; place-items: center; font-family: var(--fp-mono); font-weight: 700; font-size: 7px; margin-left: -7px;
}
.chip-mini:first-child { margin-left: 0; }
.chip-mini.odds { border-style: dashed; }
.chip-mini.drop { animation: fp2-chip-drop var(--fp-reveal) var(--fp-ease) 1; }
@keyframes fp2-chip-drop { 0% { transform: translateY(-20px) scale(1.25); opacity: 0; } 60% { transform: translateY(3px) scale(0.96); opacity: 1; } 100% { transform: translateY(0) scale(1); opacity: 1; } }

/* action rail */
.actions { border-radius: 11px; background: rgba(255,255,255,0.015); border: 1px solid var(--fp-edge); padding: 9px; }
.act-status { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; font-family: var(--fp-mono); font-size: 8.5px; letter-spacing: 0.06em; color: var(--fp-faint); }
.act-status-left { display: inline-flex; align-items: center; gap: 6px; }
.status-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--fp-pos); }
.status-dot.locked { background: var(--fp-gold-soft); box-shadow: 0 0 6px var(--fp-gold-soft); }
.actions-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.act { display: flex; align-items: center; justify-content: center; min-height: 34px; padding: 6px 3px; border-radius: 6px; background: rgba(255,255,255,0.02); border: 1px solid var(--fp-edge); font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fp-dim); cursor: pointer; transition: background var(--fp-micro), border-color var(--fp-micro), transform var(--fp-micro); }
.act:active { transform: scale(0.95); }
.act.selected { border-color: var(--fp-gold-soft); color: var(--fp-gold-soft); background: rgba(212,168,67,0.06); }
.act.has { color: var(--fp-gold-soft); border-color: rgba(232,200,117,0.3); }

/* ════════════════════════════════════════════════════════════════════
   FIXED WALLET RAIL + BetCTA scrubber
   ════════════════════════════════════════════════════════════════════ */
.fp2-wallet {
  /* #3399 — bottom bar was flush to the viewport / iPhone home-indicator.
     Add safe-area inset + extra breathing room so the PLACE BET bar floats
     off the bottom edge. The 16px is the "little extra" gap over safe-area. */
  flex-shrink: 0; padding: 9px 12px calc(env(safe-area-inset-bottom, 0px) + 16px);
  background: var(--fp-g2); border-top: 1px solid var(--fp-edge2);
  box-shadow: 0 -8px 24px rgba(0,0,0,0.5); position: relative; z-index: 60;
}
.fp2-wallet-top { display: flex; align-items: center; gap: 9px; margin-bottom: 8px; }
.fp2-wallet-bal { display: inline-flex; align-items: baseline; gap: 6px; flex-shrink: 0; }
.fp2-wallet-bal span { font-size: 8px; font-weight: 800; letter-spacing: 0.20em; color: var(--fp-faint); text-transform: uppercase; }
.fp2-wallet-bal b { font-family: var(--fp-mono); font-size: 15px; font-weight: 700; color: var(--fp-gold-soft); transition: color 220ms, text-shadow 220ms; }
.fp2-wallet-bal b.flash { color: #fff; text-shadow: 0 0 16px rgba(232,200,117,0.8); }
.fp2-wallet-down {
  display: inline-flex; align-items: baseline; gap: 5px; flex-shrink: 0;
  padding-left: 9px; border-left: 1px solid var(--fp-edge2);
}
.fp2-wallet-down-amt { font-family: var(--fp-mono); font-size: 13px; font-weight: 700; color: var(--fp-ink); line-height: 1; }
.fp2-wallet-down-lbl { font-size: 8.5px; font-weight: 700; letter-spacing: 0.10em; text-transform: uppercase; color: var(--fp-faint); white-space: nowrap; }
.fp2-wallet-spacer { flex: 1; }
.fp2-wallet-delta { font-family: var(--fp-mono); font-size: 9px; font-weight: 700; letter-spacing: 0.02em; }
.fp2-wallet-delta.up { color: var(--fp-pos); }
.fp2-wallet-delta.down { color: var(--fp-neg); }
.fp2-wallet-hint { font-size: 9px; font-weight: 700; letter-spacing: 0.10em; text-transform: uppercase; color: var(--fp-faint); flex-shrink: 0; }
.fp2-clr { font-family: var(--fp-disp); font-size: 10px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fp-dim); background: rgba(255,255,255,0.04); border: 1px solid var(--fp-edge2); border-radius: 7px; padding: 6px 12px; cursor: pointer; transition: color var(--fp-std), border-color var(--fp-std); }
.fp2-clr:hover { color: var(--fp-neg); border-color: rgba(229,115,115,0.35); }
.fp2-cta {
  position: relative; width: 100%; height: 56px; border: 0; border-radius: 12px;
  background: linear-gradient(180deg, var(--fp-gold-soft) 0%, var(--fp-gold) 100%); color: #1a1305;
  display: flex; align-items: center; justify-content: space-between; padding: 0 16px;
  cursor: grab; overflow: hidden; touch-action: none; -webkit-user-select: none; user-select: none;
  box-shadow: 0 6px 18px rgba(212,168,67,0.28), 0 1px 0 rgba(255,255,255,0.4) inset;
  transition: background var(--fp-std), box-shadow var(--fp-std), transform var(--fp-micro); font-family: var(--fp-disp);
}
.fp2-cta:active { transform: translateY(1px); }
.fp2-cta.press { animation: lg-press var(--fp-micro) var(--fp-ease) 1; }
.fp2-cta.scrubbing { cursor: grabbing; background: linear-gradient(180deg, #ffe9a8 0%, var(--fp-gold-soft) 100%); box-shadow: 0 8px 26px rgba(232,200,117,0.5), 0 0 0 2px rgba(255,255,255,0.5) inset; }
.fp2-cta-left { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-width: 0; }
.fp2-cta-act { font-weight: 900; font-size: 18px; letter-spacing: 0.10em; line-height: 1; text-transform: uppercase; }
.fp2-cta-sub { font-family: var(--fp-mono); font-size: 8.5px; letter-spacing: 0.06em; line-height: 1; opacity: 0.72; text-transform: uppercase; white-space: nowrap; }
.fp2-cta-sub b { font-weight: 700; opacity: 1; }
.fp2-cta-right { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.fp2-cta-arrow { font-weight: 900; font-size: 20px; line-height: 1; opacity: 0.5; }
.fp2-cta:not(.scrubbing) .fp2-cta-arrow.l { animation: fp2-arrL 1.5s ease-in-out infinite; }
.fp2-cta:not(.scrubbing) .fp2-cta-arrow.r { animation: fp2-arrR 1.5s ease-in-out infinite; }
@keyframes fp2-arrL { 0%,100% { opacity: 0.35; transform: translateX(0); } 50% { opacity: 0.9; transform: translateX(-3px); } }
@keyframes fp2-arrR { 0%,100% { opacity: 0.35; transform: translateX(0); } 50% { opacity: 0.9; transform: translateX(3px); } }
.fp2-cta-val { font-family: var(--fp-mono); font-weight: 700; font-size: 24px; line-height: 1; min-width: 56px; text-align: right; font-variant-numeric: tabular-nums; }
.fp2-cta-fill { position: absolute; left: 0; bottom: 0; height: 4px; background: rgba(26,19,5,0.55); pointer-events: none; transition: width 120ms ease-out; }
.fp2-cta.scrubbing .fp2-cta-fill { background: rgba(26,19,5,0.78); height: 5px; }

/* ════════════════════════════════════════════════════════════════════
   STATE STEPPER (review aid — outside the device)
   ════════════════════════════════════════════════════════════════════ */
.fp2-stepper { width: 100%; max-width: 392px; display: grid; grid-template-columns: 40px 1fr 40px; gap: 8px; align-items: center; background: var(--fp-g2); border: 1px solid var(--fp-edge2); border-radius: 12px; padding: 8px; }
.fp2-step-arrow { height: 40px; border-radius: 8px; background: rgba(255,255,255,0.04); border: 1px solid var(--fp-edge2); color: var(--fp-gold-soft); font-size: 19px; font-weight: 700; cursor: pointer; display: grid; place-items: center; transition: background var(--fp-std); }
.fp2-step-arrow:hover { background: rgba(212,168,67,0.14); }
.fp2-step-arrow:active { transform: scale(0.94); }
.fp2-step-mid { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; }
.fp2-step-dots { display: inline-flex; gap: 5px; }
.fp2-step-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--fp-edge2); transition: background var(--fp-std), transform var(--fp-std); }
.fp2-step-dot.on { background: var(--fp-gold-soft); transform: scale(1.25); box-shadow: 0 0 8px rgba(232,200,117,0.6); }
.fp2-step-name { font-size: 13px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fp-gold-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.fp2-step-no { font-family: var(--fp-mono); font-size: 8px; letter-spacing: 0.14em; color: var(--fp-faint); }
.fp2-caption { width: 100%; max-width: 392px; font-family: var(--fp-mono); font-size: 10px; line-height: 1.5; letter-spacing: 0.02em; color: var(--fp-faint); text-align: center; min-height: 30px; }
.fp2-caption b { color: var(--fp-gold-soft); font-weight: 700; }

@media (prefers-reduced-motion: reduce) {
  .fp2-hero::after, .fp2-ring::before, .fp2-point, .die.rolling, .csb-strap-tag i,
  .chip-mini.drop, .rv-sweep::before, .fp2-cta-arrow {
    animation: none !important;
  }
  .rv-stage { animation: none !important; }
  .rv-dice-stage .rv-step, .rv-dice-stage .rv-arrow { opacity: 1 !important; animation: none !important; }
  .fp2-reveal[data-marquee] .rv-marquee, .fp2-card[data-bases-loaded]::after { animation: none !important; }
}


/* #3556 — CTA state legibility: a disabled bar must not look tappable.
   LIT gold = betting open; DIM = betting closed / no table. Mirrors the
   LiveCrash BetRail wait-state treatment (0.45 + desaturate). */
.fp2-cta[data-disabled] {
  opacity: 0.62; filter: saturate(0.85); cursor: default;
  box-shadow: 0 2px 8px rgba(0,0,0,0.35);
}
.fp2-cta[data-disabled] .fp2-cta-arrow { animation: none !important; opacity: 0.2; }

/* #3605 — parity with LiveCrash 'arm' state: a table is up but the betting window
   is closed (mid-roll). The drag-to-set-stake mech stays fully live so the player
   pre-sets their stake; only tap-to-place is blocked until the window reopens.
   Dimmer than the bright "place now" gold so the two read as distinct, but still
   clearly the draggable gold bet control (NOT the inert data-disabled look). */
.fp2-cta[data-arm] {
  /* founder 2026-06-11: 0.30-alpha gold over dark felt read as nearly BLACK.
     Arm must be a dimmer-but-unmistakable GOLD - solid muted gradient, dark
     text stays readable, still clearly distinct from the bright place state. */
  background: linear-gradient(180deg, #f1d585 0%, #d8b24f 100%);
  box-shadow: 0 4px 14px rgba(212,168,67,0.22), 0 1px 0 rgba(255,255,255,0.25) inset;
  cursor: ew-resize;
}
.fp2-cta[data-arm].scrubbing {
  background: linear-gradient(180deg, #ffe9a8 0%, var(--fp-gold-soft) 100%);
}
.fp2-cta[data-arm] .fp2-cta-fill { background: rgba(26,19,5,0.42); }

/* #3632 — OPTIMISTIC PENDING (PLACING…). The CTA flips to PLACING… the SAME frame
   the tap is registered, then holds while the craps-server bet_confirmed round-trip
   runs (resolves on bet_confirmed / bet_rejected / the 4s revert guard). The button
   is inert (no jam double-send) and runs a soft gold pulse + shimmer sweep — the
   activity cue that tells the founder his press landed, killing the "looks like
   nothing happened" gap. Identical in spirit to LiveCrash's PLACING…. Arm-gold
   canon (#3359), no '$'. This OVERRIDES the data-disabled dim so PLACING… reads
   alive, not greyed-out (both flags are set while pending). */
.fp2-cta[data-pending] {
  opacity: 1; filter: none; cursor: default;
  background: linear-gradient(180deg, #ffe9a8 0%, var(--fp-gold-soft) 100%);
  box-shadow: 0 6px 20px rgba(232,200,117,0.40), 0 0 0 2px rgba(255,255,255,0.45) inset;
  animation: fp2-cta-pending 1.05s ease-in-out infinite;
}
.fp2-cta[data-pending]::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, transparent 25%, rgba(255,255,255,0.42) 50%, transparent 75%);
  background-size: 220% 100%;
  animation: fp2-cta-shimmer 1.15s linear infinite;
}
.fp2-cta[data-pending] .fp2-cta-arrow { animation: none !important; opacity: 0.25; }
@keyframes fp2-cta-pending {
  0%, 100% { box-shadow: 0 5px 16px rgba(232,200,117,0.30), 0 0 0 2px rgba(255,255,255,0.35) inset; }
  50%      { box-shadow: 0 7px 24px rgba(232,200,117,0.52), 0 0 0 2px rgba(255,255,255,0.55) inset; }
}
@keyframes fp2-cta-shimmer {
  0%   { background-position: 120% 0; }
  100% { background-position: -120% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .fp2-cta[data-pending] { animation: none; }
  .fp2-cta[data-pending]::after { animation: none; opacity: 0.4; }
}
