/* cryptopoker — text-only terminal poker client. No images, no external fonts. */

/* ============ THEME TOKENS ============ */
:root,
[data-theme="phosphor"] {
  --bg:#0A0F0A; --bg2:#0c160e; --felt:#0b1f14;
  --fg:#9fe8b0; --dim:#3f7a52; --bright:#e8ffe8;
  --accent:#39ff14;            /* live turn / focus */
  --money:#ffd24a;             /* pot, stacks */
  --red-suit:#ff6b6b; --black-suit:#d8ffe0;
  --win:#b6ff00; --danger:#c2554f; --allin:#ff5d5d;
  --line:#173a25;
}
[data-theme="amber"] {
  --bg:#160f04; --bg2:#1d1407; --felt:#241803;
  --fg:#ffce8a; --dim:#8a5a18; --bright:#fff0d6;
  --accent:#ffd479; --money:#ffe100; --red-suit:#ff7a55; --black-suit:#ffe6b3;
  --win:#ffe100; --danger:#c2724a; --allin:#ff6a4d; --line:#4a3210;
}
[data-theme="ice"] {
  --bg:#06121A; --bg2:#08161f; --felt:#06202b;
  --fg:#a8ecff; --dim:#2a6e85; --bright:#e6faff;
  --accent:#39d0ff; --money:#ffd24a; --red-suit:#ff7e96; --black-suit:#d6f6ff;
  --win:#00ffc8; --danger:#6f8aa0; --allin:#ff6e8a; --line:#163a4a;
}
[data-theme="mono"] {
  --bg:#0C0C0C; --bg2:#141414; --felt:#161616;
  --fg:#cccccc; --dim:#555555; --bright:#ffffff;
  --accent:#ffffff; --money:#dddddd; --red-suit:#ff7c7c; --black-suit:#ffffff;
  --win:#9cff9c; --danger:#aa6a6a; --allin:#ff7c7c; --line:#2a2a2a;
}
[data-theme="contrast"] {
  --bg:#000000; --bg2:#0a0a0a; --felt:#0a0a0a;
  --fg:#ffffff; --dim:#9a9a9a; --bright:#ffffff;
  --accent:#ffe100; --money:#ffe100; --red-suit:#ff4d4d; --black-suit:#ffffff;
  --win:#22ff00; --danger:#ff4d4d; --allin:#ff4d4d; --line:#444444;
}

:root {
  --font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", Menlo, Consolas, "Liberation Mono", monospace;
  --hit:44px; --hit-lg:52px; --r:4px;
  --s1:4px; --s2:8px; --s3:12px; --s4:16px;
}

* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
html, body {
  margin:0; height:100%;
  background:var(--bg); color:var(--fg);
  font-family:var(--font-mono); font-size:16px; line-height:1.35;
}

.sr-only {
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap;
}
:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
button { font:inherit; color:inherit; }

/* ============ APP SHELL ============ */
.app {
  display:grid;
  grid-template-rows:auto 1fr auto;
  height:100svh; max-width:480px; margin:0 auto;
  border-left:1px solid var(--line); border-right:1px solid var(--line);
  overflow-x:hidden;
  padding-left:env(safe-area-inset-left);
  padding-right:env(safe-area-inset-right);
}

/* ============ STATUS BAR ============ */
.status {
  display:flex; align-items:center; gap:var(--s2);
  padding:var(--s2) var(--s3);
  padding-top:max(var(--s2), env(safe-area-inset-top));
  background:var(--bg2); border-bottom:1px solid var(--line);
  font-size:13px;
}
.status__logo { color:var(--accent); font-weight:700; letter-spacing:1px; }
.conn { font-size:12px; }
.conn.up   { color:var(--win); }
.conn.down { color:var(--danger); }
.conn.wait { color:var(--money); animation:blink 1s steps(1) infinite; }
.tap { background:transparent; border:none; cursor:pointer; padding:6px; border-radius:var(--r); }
.status__who { color:var(--bright); max-width:9ch; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.status__bal { margin-left:auto; display:flex; gap:var(--s2); color:var(--money); font-size:12px; border:1px solid var(--line); }
.status__bal b { font-weight:700; }
.bal__sc { color:var(--win); }
.status__gear { color:var(--fg); font-size:18px; min-width:var(--hit); }

/* ============ TABLE ============ */
.table { position:relative; overflow:hidden; min-height:0; }
.felt {
  position:absolute; inset:var(--s2);
  background:radial-gradient(ellipse 70% 55% at 50% 42%, var(--felt) 0%, var(--bg) 100%);
  border:2px solid var(--line); border-radius:46% / 30%;
}

/* pods ring */
.pods { position:absolute; inset:0; }
.pod {
  position:absolute; width:84px; transform:translate(-50%,-50%);
  text-align:center; font-size:11px; line-height:1.3;
  padding:3px 4px; border:1px solid var(--line); border-radius:var(--r);
  background:color-mix(in srgb, var(--bg2) 80%, transparent);
}
.pod__name { color:var(--fg); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pod__stack { color:var(--money); font-variant-numeric:tabular-nums; }
.pod__backs { color:var(--accent); letter-spacing:-1px; height:1.1em; }
.pod__bet { color:var(--money); font-size:11px; min-height:1.1em; font-variant-numeric:tabular-nums; }
.pod__bet .chip { color:var(--accent); }
.pod__badge { min-height:1.1em; font-size:10px; letter-spacing:.5px; }
.pod__tags { color:var(--bright); font-size:10px; }
.pod.folded { opacity:.4; }
.pod.folded .pod__badge { color:var(--dim); }
.pod.allin { border-color:var(--allin); }
.pod.allin .pod__badge { color:var(--allin); font-weight:700; }
.pod.sitout { opacity:.55; font-style:italic; }
.pod.empty { border-style:dashed; color:var(--dim); }
.pod.empty .pod__name { color:var(--dim); }
.pod.turn { border-color:var(--accent); box-shadow:0 0 0 1px var(--accent); }
.pod.flash-up .pod__stack { animation:flashUp .6s ease-out; }
.pod.flash-dn .pod__stack { animation:flashDn .6s ease-out; }
.pod.win { border-color:var(--win); animation:pulseWin 1.4s ease-in-out 3; }
.pod__action { color:var(--bright); font-size:10px; min-height:1em; }
.pod__action.show { animation:fade2 1.8s ease-out forwards; }
.pod.win .pod__badge { color:var(--win); font-weight:700; }
.pod.empty[role="button"] { cursor:pointer; }
.pod.empty[role="button"]:hover, .pod.empty[role="button"]:focus-visible { border-color:var(--accent); color:var(--accent); }
.pod.empty[role="button"]:hover .pod__name, .pod.empty[role="button"]:focus-visible .pod__name { color:var(--accent); }

/* revealed hole cards at showdown */
.pod__reveal { display:flex; gap:2px; justify-content:center; margin-bottom:1px; animation:flipin .35s ease both; }
.pod__reveal .card { box-shadow:0 1px 4px rgba(0,0,0,.5); }
.pod__hand { color:var(--win); font-size:9px; letter-spacing:.3px; min-height:1em; }

/* timer ring */
.ring { position:relative; width:18px; height:18px; margin:0 auto -2px; }
.ring__fill {
  width:100%; height:100%; border-radius:50%;
  background:conic-gradient(var(--ringc, var(--accent)) calc(var(--p,100) * 1%), transparent 0);
  -webkit-mask:radial-gradient(circle 5px at center, transparent 98%, #000 100%);
  mask:radial-gradient(circle 5px at center, transparent 98%, #000 100%);
}

/* center: pot + board */
.center {
  position:absolute; top:30%; left:0; right:0;
  display:flex; flex-direction:column; align-items:center; gap:var(--s2);
}
.pot { text-align:center; transition:transform .2s; }
.pot.bump { animation:bump .4s ease-out; }
.pot__label { color:var(--dim); font-size:11px; letter-spacing:2px; display:block; }
.pot__val { color:var(--money); font-size:24px; font-weight:700; font-variant-numeric:tabular-nums; text-shadow:0 0 6px transparent; }
.pot.bump .pot__val { text-shadow:0 0 10px var(--money); }
.sidepots { text-align:center; color:var(--dim); font-size:11px; }
.sidepots div { font-variant-numeric:tabular-nums; }

/* board */
.board { display:flex; gap:5px; justify-content:center; }

/* ============ CARDS ============ */
.card {
  position:relative; width:var(--cw,40px); aspect-ratio:5/7;
  border:1px solid var(--fg); border-radius:var(--r);
  background:var(--bg2); color:var(--black-suit);
  display:grid; place-items:center; flex:0 0 auto;
}
.card.red { color:var(--red-suit); }
.card__r { font-size:calc(var(--cw,40px) * .42); font-weight:700; line-height:1; }
.card__s { font-size:calc(var(--cw,40px) * .34); line-height:1; }
.card.slot { border-style:dashed; border-color:var(--dim); background:transparent; }
.card.back { border-color:var(--accent);
  background:repeating-linear-gradient(45deg, var(--line) 0 3px, transparent 3px 6px), var(--bg2); }
.card.deal { animation:deal .3s cubic-bezier(.2,.7,.3,1) both; }
.card.flip { animation:flipin .35s ease both; }
/* hero hole cards: flip face-up as they land (rotateY reveal) */
.card.dealreveal { animation:herodeal .24s cubic-bezier(.4,0,.2,1) both; }

/* ===== DEAL OVERLAY (flying card backs, button → seats) ===== */
.deal-layer { position:absolute; inset:0; z-index:5; pointer-events:none; }
.dcard {
  position:absolute; width:var(--cw,28px); aspect-ratio:5/7;
  border:1px solid var(--accent); border-radius:var(--r);
  background:repeating-linear-gradient(45deg, var(--line) 0 3px, transparent 3px 6px), var(--bg2);
  box-shadow:0 1px 4px rgba(0,0,0,.5);
}
.dcard.dealing {
  will-change:transform, opacity;
  animation:dealfly var(--flight,300ms) cubic-bezier(.22,.61,.36,1) both;
  animation-delay:calc(var(--i,0) * var(--stagger,90ms));
}
/* persistent pod backs stay hidden until the flown card lands on them */
.pod__backs { transition:opacity .25s ease; }
.pods.dealing .pod__backs { opacity:0; }

/* hero zone */
.hero {
  position:absolute; left:0; right:0; bottom:6px;
  display:flex; flex-direction:column; align-items:center; gap:2px;
}
.hero__cards { display:flex; gap:6px; }
.hero__cards .card { --cw:60px; box-shadow:0 2px 8px rgba(0,0,0,.5); }
.hero.turnglow .hero__cards .card { box-shadow:0 0 10px var(--accent); }
.hero__hint { color:var(--dim); font-size:11px; min-height:1.1em; }
.hero__pod {
  display:flex; gap:var(--s3); align-items:baseline; justify-content:center;
  font-size:12px; padding:2px 10px; border:1px solid var(--line); border-radius:var(--r);
  background:var(--bg2);
}
.hero__pod .hp-name { color:var(--bright); }
.hero__pod .hp-stack { color:var(--money); font-variant-numeric:tabular-nums; }
.hero__pod .hp-tags { color:var(--accent); font-size:11px; }
.hero__pod .hp-add { color:var(--money); font-weight:700; }
.hero__pod.tappable { cursor:pointer; }
.hero__pod.tappable:hover { border-color:var(--money); }
.hero__pod.sit-cta { border:none; background:transparent; padding:0; }
.sit-btn {
  min-height:var(--hit); padding:0 var(--s4);
  background:var(--accent); color:var(--bg); border:none; border-radius:var(--r);
  font-weight:700; font-size:13px; letter-spacing:.5px; cursor:pointer;
  box-shadow:0 0 12px -2px var(--accent); animation:pulseCta 1.8s ease-in-out infinite;
}

/* showdown result banner + pot-to-winner chip */
.showresult {
  position:absolute; left:50%; top:38%; transform:translate(-50%,-50%);
  text-align:center; white-space:pre-line; pointer-events:none; z-index:6;
  color:var(--win); font-weight:700; font-size:16px; line-height:1.25;
  padding:var(--s2) var(--s3); border:1px solid var(--win); border-radius:var(--r);
  background:color-mix(in srgb, var(--bg) 78%, transparent);
  text-shadow:0 0 8px var(--win); max-width:80%;
}
.showresult.in { animation:bannerIn .4s cubic-bezier(.2,.7,.3,1) both; }
.flychip {
  position:absolute; z-index:7; pointer-events:none; color:var(--money);
  font-size:18px; text-shadow:0 0 8px var(--money);
  transform:translate(0,0); opacity:1;
  transition:transform .85s cubic-bezier(.4,.1,.3,1), opacity .85s ease-out;
}

.announce {
  position:absolute; top:4px; left:0; right:0; text-align:center;
  color:var(--accent); font-size:12px; min-height:1.2em; pointer-events:none;
  text-shadow:0 0 4px var(--bg);
}

/* ============ ACTION DOCK ============ */
.dock {
  background:var(--bg2); border-top:1px solid var(--line);
  padding:var(--s2) var(--s3);
  padding-bottom:max(var(--s2), env(safe-area-inset-bottom));
  box-shadow:0 -8px 24px -12px rgba(0,0,0,.6);
}
.waitmsg { color:var(--dim); font-size:12px; text-align:center; min-height:1.2em; }

.dock__row { display:flex; gap:var(--s2); }
.abtn {
  flex:1; min-height:var(--hit-lg);
  background:var(--bg); border:1px solid var(--line); border-radius:var(--r);
  color:var(--fg); cursor:pointer; font-size:15px;
}
.abtn:disabled { opacity:.3; cursor:not-allowed; }
.abtn:not(:disabled).abtn--fold  { border-color:var(--danger); color:var(--danger); }
.abtn:not(:disabled).abtn--check { border-color:var(--fg); }
.abtn:not(:disabled).abtn--bet   { border-color:var(--money); color:var(--money); }
.abtn--bet.armed { background:var(--money); color:var(--bg); font-weight:700; }
.abtn--cancel { flex:0 0 var(--hit-lg); border-color:var(--danger); color:var(--danger); font-size:20px; }

/* bet sizer */
.sizer { margin-bottom:var(--s2); }
.sizer__row { display:flex; gap:var(--s2); align-items:center; margin-bottom:var(--s2); }
.sizer__presets { flex-wrap:wrap; }
.sizer__presets button {
  flex:1; min-height:var(--hit); min-width:52px;
  background:transparent; border:1px solid var(--dim); border-radius:var(--r);
  color:var(--fg); cursor:pointer; font-size:13px;
}
.sizer__presets button[aria-pressed="true"] { border-color:var(--accent); color:var(--accent); }
.sizer__amount { justify-content:center; gap:var(--s4); }
.step {
  min-width:var(--hit); min-height:var(--hit);
  background:var(--bg); border:1px solid var(--dim); border-radius:var(--r);
  color:var(--fg); cursor:pointer; font-size:20px;
}
.sizer__val { font-size:30px; font-weight:700; color:var(--money); font-variant-numeric:tabular-nums; min-width:5ch; text-align:center; }
.sizer__range { width:100%; height:var(--hit); -webkit-appearance:none; appearance:none; background:transparent; }
.sizer__range::-webkit-slider-runnable-track { height:6px; background:var(--line); border-radius:99px; }
.sizer__range::-webkit-slider-thumb { -webkit-appearance:none; width:30px; height:30px; margin-top:-12px; border-radius:50%; background:var(--accent); border:3px solid var(--bg); }
.sizer__range::-moz-range-track { height:6px; background:var(--line); border-radius:99px; }
.sizer__range::-moz-range-thumb { width:30px; height:30px; border-radius:50%; background:var(--accent); border:3px solid var(--bg); }
.sizer__bounds { display:flex; justify-content:space-between; color:var(--dim); font-size:11px; }
.sizer__bounds #betCtx { color:var(--fg); }

/* ============ BOTTOM SHEET ============ */
.sheet { position:fixed; inset:0; z-index:50; visibility:hidden; }
.sheet__scrim { position:absolute; inset:0; background:rgba(0,0,0,.65); opacity:0; transition:opacity .25s; }
.sheet__panel {
  position:absolute; left:0; right:0; bottom:0; max-width:480px; margin:0 auto;
  max-height:88svh; overflow:auto; background:var(--bg); color:var(--fg);
  border-top:2px solid var(--accent); border-radius:14px 14px 0 0;
  padding:var(--s3) var(--s4);
  padding-bottom:max(var(--s4), env(safe-area-inset-bottom));
  transform:translateY(100%); transition:transform .28s cubic-bezier(.2,.7,.3,1);
}
.sheet.open { visibility:visible; }
.sheet.open .sheet__scrim { opacity:1; }
.sheet.open .sheet__panel { transform:none; }
.sheet__grip { width:36px; height:4px; background:var(--dim); border-radius:99px; margin:0 auto var(--s2); }
.sheet__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:var(--s3); }
.sheet__title { margin:0; font-size:16px; color:var(--accent); }
.sheet__x { font-size:24px; min-width:var(--hit); color:var(--fg); }

/* sheet content widgets */
.menu-list { display:flex; flex-direction:column; gap:var(--s2); }
.menu-list button, .row-btn {
  width:100%; min-height:var(--hit); text-align:left;
  background:var(--bg2); border:1px solid var(--line); border-radius:var(--r);
  color:var(--fg); cursor:pointer; padding:0 var(--s3); font-size:14px;
}
.menu-list button:hover, .row-btn:hover { border-color:var(--accent); }
.menu-list .danger { color:var(--danger); border-color:var(--danger); }

.field { display:block; margin-bottom:var(--s2); }
.field label { display:block; color:var(--dim); font-size:12px; margin-bottom:2px; }
.field input {
  width:100%; min-height:var(--hit); font:inherit; font-size:16px;
  background:var(--bg2); border:1px solid var(--line); border-radius:var(--r);
  color:var(--bright); padding:0 var(--s3);
}
.btn-primary {
  width:100%; min-height:var(--hit-lg); margin-top:var(--s2);
  background:var(--accent); color:var(--bg); border:none; border-radius:var(--r);
  font-weight:700; cursor:pointer; font-size:15px;
}
.btn-ghost {
  width:100%; min-height:var(--hit); margin-top:var(--s1);
  background:transparent; color:var(--fg); border:1px solid var(--line); border-radius:var(--r); cursor:pointer;
}
.hint { color:var(--dim); font-size:12px; margin:var(--s1) 0; }
.err { color:var(--danger); font-size:13px; min-height:1.2em; }
.ok-msg { color:var(--win); font-size:13px; }

/* ===== auth screen (login / register) ===== */
.auth-brand { text-align:center; margin:var(--s1) 0 var(--s3); }
.auth-brand__logo { color:var(--accent); font-weight:700; font-size:22px; letter-spacing:1px; }
.auth-brand__tag { color:var(--dim); font-size:12px; margin-top:2px; }
.auth-hr { border:none; border-top:1px solid var(--line); margin:var(--s3) 0 var(--s2); }

/* segmented Sign In / Create Account toggle */
.seg { display:flex; gap:0; background:var(--bg2); border:1px solid var(--line); border-radius:var(--r);
  padding:3px; margin-bottom:var(--s3); }
.seg__btn { flex:1; min-height:var(--hit); background:transparent; border:none; border-radius:3px;
  color:var(--dim); font:inherit; font-size:14px; font-weight:700; cursor:pointer; }
.seg__btn.on { background:var(--accent); color:var(--bg); }
.seg__btn:not(.on):hover { color:var(--fg); }

.auth-form { display:flex; flex-direction:column; }
.authfield { display:block; margin-bottom:var(--s2); }
.authfield__lab { display:block; color:var(--dim); font-size:12px; margin-bottom:2px; }
.authfield__box { position:relative; display:block; }
.authfield__box input {
  width:100%; min-height:var(--hit); font:inherit; font-size:16px;
  background:var(--bg2); border:1px solid var(--line); border-radius:var(--r);
  color:var(--bright); padding:0 var(--s3);
}
.authfield__box input.has-toggle { padding-right:64px; }
.pw-toggle { position:absolute; right:4px; top:50%; transform:translateY(-50%);
  min-height:44px; min-width:56px; padding:0 var(--s2);
  background:transparent; border:none; color:var(--dim); font:inherit; font-size:13px; cursor:pointer; }
.pw-toggle[aria-pressed="true"], .pw-toggle:hover { color:var(--accent); }
.authfield__hint { display:block; min-height:1.1em; font-size:11px; color:var(--dim); margin-top:2px; }
.authfield__hint.ok { color:var(--win); }
.authfield__hint.bad { color:var(--danger); }
.auth-welcome { text-align:center; font-size:15px; }

.pkg { display:flex; justify-content:space-between; align-items:center;
  border:1px solid var(--line); border-radius:var(--r); padding:var(--s2) var(--s3); margin-bottom:var(--s2); }
.pkg__info { font-size:13px; }
.pkg__info b { color:var(--money); }
.pkg button { min-height:var(--hit); padding:0 var(--s3); background:var(--accent); color:var(--bg); border:none; border-radius:var(--r); font-weight:700; cursor:pointer; }

/* deposit package cards */
.pkgcard { border:1px solid var(--line); border-radius:var(--r); padding:var(--s3); margin-bottom:var(--s3); background:var(--bg2); }
.pkgcard__head { display:flex; align-items:baseline; justify-content:space-between; }
.pkgcard__price { color:var(--bright); font-size:18px; font-weight:700; }
.pkgcard__gc { color:var(--money); font-size:15px; font-variant-numeric:tabular-nums; }
.pkgcard__sub { color:var(--win); font-size:12px; margin:2px 0 var(--s2); }
.pkgcard__btns { display:flex; gap:var(--s2); }
.pkgcard__buy { flex:1; min-height:var(--hit); background:var(--accent); color:var(--bg); border:none; border-radius:var(--r); font-weight:700; cursor:pointer; font-size:14px; }
.pkgcard__crypto { flex:1; min-height:var(--hit); background:transparent; color:var(--money); border:1px solid var(--money); border-radius:var(--r); cursor:pointer; font-size:14px; }
.pkgcard__invoice { margin-top:var(--s2); }
.invstr { font-size:11px; word-break:break-all; background:var(--bg); border:1px solid var(--line); border-radius:var(--r); padding:var(--s2); margin:var(--s1) 0; color:var(--fg); }

/* notices (withdraw / kyc / success) */
.notice { font-size:13px; border-radius:var(--r); padding:var(--s2) var(--s3); margin:var(--s2) 0; }
.notice--block { border:1px solid var(--danger); color:var(--danger); background:color-mix(in srgb, var(--danger) 12%, transparent); }
.notice--ok { border:1px solid var(--win); color:var(--win); background:color-mix(in srgb, var(--win) 12%, transparent); }
.btn-primary.is-disabled, .btn-primary:disabled { opacity:.4; cursor:not-allowed; }

/* admin dashboard */
.admin-tools { display:flex; gap:var(--s2); margin-bottom:var(--s2); }
.admin-tools button { flex:1; margin-top:0; }
.metrics-box { background:var(--bg2); border:1px solid var(--line); border-radius:var(--r); padding:var(--s2); font-size:11px; white-space:pre-wrap; word-break:break-word; max-height:30svh; overflow:auto; color:var(--fg); }
.redcard { border:1px solid var(--line); border-radius:var(--r); padding:var(--s3); margin-bottom:var(--s3); background:var(--bg2); }
.redcard__head { display:flex; align-items:baseline; justify-content:space-between; gap:var(--s2); }
.redcard__head b { color:var(--bright); }
.redcard__amt { color:var(--money); font-size:13px; font-variant-numeric:tabular-nums; }
.redcard__meta { color:var(--dim); font-size:11px; margin:2px 0 var(--s2); }
.redcard__dest { display:flex; gap:var(--s2); align-items:center; margin-bottom:var(--s2); }
.redcard__addr { flex:1; font-size:11px; word-break:break-all; color:var(--fg); background:var(--bg); border:1px solid var(--line); border-radius:var(--r); padding:var(--s1) var(--s2); }
.redcard__copy { min-height:var(--hit); min-width:56px; background:transparent; color:var(--fg); border:1px solid var(--line); border-radius:var(--r); cursor:pointer; }
.redcard__btns { display:flex; gap:var(--s2); }
.redcard__paid { flex:1; min-height:var(--hit); background:var(--win); color:var(--bg); border:none; border-radius:var(--r); font-weight:700; cursor:pointer; }
.redcard__reject { flex:1; min-height:var(--hit); background:transparent; color:var(--danger); border:1px solid var(--danger); border-radius:var(--r); cursor:pointer; }
.redcard__paid:disabled, .redcard__reject:disabled { opacity:.4; cursor:not-allowed; }

.swatches { display:flex; flex-wrap:wrap; gap:var(--s2); }
.swatch {
  flex:1 0 30%; min-height:var(--hit-lg); cursor:pointer;
  border:2px solid var(--line); border-radius:var(--r);
  display:flex; flex-direction:column; align-items:center; justify-content:center; font-size:12px;
}
.swatch.sel { border-color:var(--accent); }
.swatch .dot { font-size:18px; }

.toggle-row { display:flex; align-items:center; justify-content:space-between; min-height:var(--hit); }
.toggle-row span { font-size:14px; }

/* history / log */
.histlog { background:var(--bg2); border:1px solid var(--line); border-radius:var(--r);
  padding:var(--s2); height:42svh; overflow:auto; font-size:12px; white-space:pre-wrap; word-break:break-word; }
.histlog .l-sys { color:var(--dim); }
.histlog .l-in  { color:var(--bright); }
.histlog .l-evt { color:var(--accent); }
.histlog .l-err { color:var(--danger); }
.cli { display:flex; gap:var(--s2); margin-top:var(--s2); }
.cli span { color:var(--accent); align-self:center; }
.cli input { flex:1; min-height:var(--hit); font:inherit; font-size:16px;
  background:var(--bg2); border:1px solid var(--line); border-radius:var(--r); color:var(--bright); padding:0 var(--s2); }

.tbl-row { display:flex; justify-content:space-between; align-items:center;
  border:1px solid var(--line); border-radius:var(--r); padding:var(--s2); margin-bottom:var(--s2); font-size:13px; }
.tbl-row button { min-height:var(--hit); padding:0 var(--s3); background:var(--accent); color:var(--bg); border:none; border-radius:var(--r); cursor:pointer; }
.stake-grp { margin-bottom:var(--s3); }
.stake-grp h3 { font-size:13px; color:var(--money); margin:0 0 var(--s1); }

/* ============ ANIMATIONS ============ */
@keyframes blink   { 50% { opacity:.25; } }
@keyframes deal    { from { transform:translateY(-32px) rotate(-6deg); opacity:0; } to { transform:none; opacity:1; } }
@keyframes flipin  { from { transform:rotateY(90deg); opacity:0; } to { transform:none; opacity:1; } }
/* hero face-up flip on landing */
@keyframes herodeal {
  0%   { transform:rotateY(90deg) scale(.92); opacity:0; }
  40%  { opacity:1; }
  100% { transform:rotateY(0deg) scale(1); opacity:1; }
}
/* flying card back: born AT the button (offset --dx/--dy), lands at rest */
@keyframes dealfly {
  0%   { transform:translate(-50%,-50%) translate3d(var(--dx,0),var(--dy,0),0) rotate(var(--spin,0deg)) scale(.72); opacity:0; }
  12%  { opacity:1; }
  100% { transform:translate(-50%,-50%) translate3d(0,0,0) rotate(0deg) scale(1); opacity:1; }
}
@keyframes bump    { 0%,100% { transform:scale(1); } 40% { transform:scale(1.1); } }
@keyframes pulseWin{ 0%,100% { box-shadow:0 0 0 0 var(--win); } 50% { box-shadow:0 0 8px 2px var(--win); } }
@keyframes flashUp { from { color:var(--win); } to { color:var(--money); } }
@keyframes flashDn { from { color:var(--danger); } to { color:var(--money); } }
@keyframes fade2   { 0% { opacity:1; } 70% { opacity:1; } 100% { opacity:0; } }
@keyframes bannerIn{ 0% { transform:translate(-50%,-50%) scale(.7); opacity:0; } 60% { transform:translate(-50%,-50%) scale(1.06); } 100% { transform:translate(-50%,-50%) scale(1); opacity:1; } }
@keyframes pulseCta{ 0%,100% { box-shadow:0 0 8px -2px var(--accent); } 50% { box-shadow:0 0 16px 0 var(--accent); } }

@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after {
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
}
[data-motion="reduced"] * {
  animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important;
}
