/* ============================================================
   fomo gamble — casino shell
   Layout in the shape of a modern crypto casino (fixed rail,
   sticky topbar, tile grid, live bet feed) painted entirely in
   fomo.family's own tokens.
   ============================================================ */

:root{
  /* straight from fomo.family's stylesheet */
  --bg:#060510;          /* --color-bg-primary */
  --bg-2:#12111a;        /* --color-bg-secondary */
  --bg-3:#161522;        /* --color-bg-tertiary-solid */
  --bg-4:#1d1c2e;
  --acc:#516af6;         /* --color-accent-primary */
  --acc-2:#3446c9;
  --acc-soft:rgba(81,106,246,.16);
  --acc-deep:#221d4b;    /* --color-accent-secondary */
  --green:#21c95e;       /* --color-green */
  --red:#ff622e;         /* --color-critical */
  --warn:#ffc74f;        /* --color-warning */
  --text:#f7f7f7;        /* --color-text-primary */
  --muted:#9899a3;       /* --color-text-secondary */
  --dim:#474b52;         /* --color-text-tertiary */
  --line:rgba(203,208,235,.10);
  --line-2:rgba(203,208,235,.18);
  --r:14px;
  --rail:250px;
  --topbar:66px;
}

@font-face{font-family:'Aeonik';src:url('fonts/Aeonik-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Aeonik';src:url('fonts/Aeonik-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Aeonik';src:url('fonts/Aeonik-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}
body{
  font-family:'Aeonik','Helvetica Neue',Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--text);
  font-size:15px;line-height:1.5;
}
::selection{background:var(--acc);color:#fff}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:6px}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#2a2942;border-radius:99px;border:3px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#3a3960}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---------------- shell ---------------- */
.app{display:flex;min-height:100vh}

.rail{
  width:var(--rail);flex:0 0 var(--rail);
  position:fixed;inset:0 auto 0 0;z-index:60;
  background:var(--bg-2);border-right:1px solid var(--line);
  display:flex;flex-direction:column;
  transition:transform .28s cubic-bezier(.22,1,.36,1);
}
.rail-head{
  height:var(--topbar);flex:0 0 var(--topbar);
  display:flex;align-items:center;gap:9px;
  padding:0 18px;border-bottom:1px solid var(--line);
}
.rail-head .wm{height:15px;width:auto;color:var(--text)}
.rail-head .sub{font-size:14px;color:var(--muted)}
.rail-scroll{flex:1;overflow-y:auto;padding:14px 12px 8px}
.rail-group+.rail-group{margin-top:20px}
.rail-label{
  font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--dim);padding:0 10px;margin-bottom:8px;font-weight:500;
}
.rail-item{
  display:flex;align-items:center;gap:11px;width:100%;
  padding:9px 10px;border-radius:10px;
  font-size:14px;color:var(--muted);text-align:left;
  transition:background .15s,color .15s;
}
.rail-item svg{width:17px;height:17px;flex:0 0 17px}
.rail-item:hover{background:var(--bg-3);color:var(--text)}
.rail-item.on{background:var(--acc-soft);color:var(--text)}
.rail-item.on svg{color:var(--acc)}
.rail-item .tag{
  margin-left:auto;font-size:10px;padding:2px 6px;border-radius:5px;
  background:var(--acc-deep);color:#b9c2ff;letter-spacing:.04em;
}
.rail-foot{padding:12px;border-top:1px solid var(--line)}
.gate-card{
  background:var(--bg-3);border:1px solid var(--line);
  border-radius:12px;padding:13px;
}
.gate-card .row{display:flex;align-items:center;gap:9px}
.gate-card .dot{width:8px;height:8px;border-radius:50%;background:var(--dim);flex:0 0 8px}
.gate-card.ok .dot{background:var(--green);box-shadow:0 0 9px var(--green)}
.gate-card .t{font-size:13px;font-weight:500}
.gate-card .d{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.45}
.gate-card .btn{width:100%;margin-top:11px}

.rail-scrim{
  position:fixed;inset:0;z-index:55;background:rgba(6,5,16,.7);
  backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .25s;
}
body.rail-open .rail-scrim{opacity:1;pointer-events:auto}

.main{flex:1;min-width:0;margin-left:var(--rail)}

.topbar{
  position:sticky;top:0;z-index:50;height:var(--topbar);
  display:flex;align-items:center;gap:12px;
  padding:0 clamp(14px,2.4vw,26px);
  background:rgba(18,17,26,.86);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.burger{display:none;width:38px;height:38px;border-radius:10px;align-items:center;justify-content:center;color:var(--muted)}
.burger:hover{background:var(--bg-3);color:var(--text)}
.search{
  flex:1;max-width:400px;display:flex;align-items:center;gap:9px;
  background:var(--bg-3);border:1px solid var(--line);
  border-radius:10px;padding:0 12px;height:38px;
}
.search svg{width:16px;height:16px;color:var(--dim);flex:0 0 16px}
.search input{flex:1;background:none;border:none;outline:none;font-size:14px}
.search input::placeholder{color:var(--dim)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.icon-btn{
  display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:999px;flex:0 0 38px;
  color:var(--muted);transition:color .15s,background-color .15s;
}
.icon-btn svg{width:15px;height:15px}
.icon-btn:hover{color:var(--text);background-color:rgba(255,255,255,.075)}
.balance{
  display:flex;align-items:center;gap:10px;height:38px;padding:0 4px 0 14px;
  background:var(--bg-3);border:1px solid var(--line);border-radius:10px;
}
.balance .amt{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}
.balance .cur{font-size:11px;color:var(--muted)}
.balance .demo{
  font-size:9.5px;letter-spacing:.1em;color:var(--warn);
  border:1px solid rgba(255,199,79,.35);border-radius:5px;padding:2px 5px;
}

/* ---------------- buttons ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:38px;padding:0 17px;border-radius:10px;
  font-size:13.5px;font-weight:500;white-space:nowrap;
  transition:background .15s,transform .1s,box-shadow .15s,opacity .15s;
}
.btn:active{transform:translateY(1px)}
.btn-acc{background:var(--acc);color:#fff}
.btn-acc:hover{background:#6178f7;box-shadow:0 6px 22px rgba(81,106,246,.32)}
.btn-ghost{background:var(--bg-3);color:var(--text);border:1px solid var(--line-2)}
.btn-ghost:hover{background:var(--bg-4)}
.btn-green{background:var(--green);color:#062a13;font-weight:700}
.btn-green:hover{background:#2ade6c;box-shadow:0 6px 22px rgba(33,201,94,.3)}
.btn-lg{height:48px;padding:0 24px;font-size:15px;border-radius:12px}
.btn-block{width:100%}
.btn[disabled]{opacity:.45;pointer-events:none}


/* ---------------- glass ----------------
   One treatment for every control: a translucent pill whose 1px border is a
   gradient — bright along the top edge, fading to almost nothing at the
   bottom — so it reads as a lit surface rather than an outlined box. */
.btn,.chip,.balance,.search,.seg,.chips button,.amt-in,.amt-in .q,.icon-btn,
.gv-back,.gv-fair,.rail-item.on,.tile-play span,.hist span,.stat-box,.bet-cell.o{
  position:relative;
  background-image:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.012));
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-color:transparent!important;
}
.btn::before,.chip::before,.balance::before,.search::before,.seg::before,
.chips button::before,.amt-in::before,.amt-in .q::before,.gv-back::before,
.gv-fair::before,.rail-item.on::before,.tile-play span::before,.hist span::before,
.stat-box::before,.bet-cell.o::before,.icon-btn::before{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;
  background:linear-gradient(180deg,
    rgba(255,255,255,.42) 0%,
    rgba(255,255,255,.13) 34%,
    rgba(255,255,255,.045) 68%,
    rgba(255,255,255,.02) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;pointer-events:none;
}
/* controls sit as pills, matching the segmented look */
.btn,.gv-back,.gv-fair,.balance,.search,.chips button,.amt-in .q,.hist span{border-radius:999px}
.seg,.amt-in{border-radius:999px}
.seg button{border-radius:999px}
.rail-item{border-radius:999px}
.btn-lg{border-radius:999px}

/* tinted variants keep the same lit edge, just over colour */
.btn-acc{
  background-color:var(--acc);
  background-image:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 62%);
  color:#fff;box-shadow:0 6px 20px rgba(81,106,246,.28);
}
.btn-acc:hover{background-color:#6178f7;box-shadow:0 8px 28px rgba(81,106,246,.42)}
.btn-green{
  background-color:var(--green);
  background-image:linear-gradient(180deg,rgba(255,255,255,.26),rgba(255,255,255,0) 62%);
  color:#062a13;font-weight:700;box-shadow:0 6px 20px rgba(33,201,94,.26);
}
.btn-green:hover{background-color:#2ade6c;box-shadow:0 8px 28px rgba(33,201,94,.4)}
.btn-ghost{background-color:rgba(255,255,255,.03);color:var(--text)}
.btn-ghost:hover{background-color:rgba(255,255,255,.075)}
.seg button.on,.chips button.on{
  background-color:var(--acc);
  background-image:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 62%);
  color:#fff;
}
.rail-item.on{background-color:rgba(81,106,246,.16)}
.tile-play span{background-color:rgba(81,106,246,.85)}
.search:focus-within::before,.amt-in:focus-within::before,.field:focus-within::before{
  background:linear-gradient(180deg,rgba(129,152,255,.85),rgba(81,106,246,.25));
}
/* the segmented control's own children must not double up the border */
.seg button::before{display:none}
.seg button.on{box-shadow:0 2px 10px rgba(81,106,246,.35)}

/* ---------------- page / hero ---------------- */
.page{padding:clamp(16px,2.4vw,26px);max-width:1560px}
.hero{
  position:relative;overflow:hidden;border-radius:20px;
  /* poster doubles as the still frame on phones, where the video is not loaded */
  background:var(--bg-2) url('assets/hero-poster.jpg') center/cover;
  min-height:392px;display:flex;align-items:center;
  padding:clamp(26px,4vw,54px);
  border:1px solid var(--line);
}
.hero::after{
  content:'';position:absolute;inset:0;z-index:1;
  background:linear-gradient(100deg,rgba(6,5,16,.94) 0%,rgba(6,5,16,.74) 40%,rgba(6,5,16,.16) 74%,transparent 100%);
}
.hero-video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:right 26%;
  z-index:0;pointer-events:none;user-select:none;
}
.hero-in{position:relative;z-index:2;max-width:590px}
.chip{
  display:inline-flex;align-items:center;gap:8px;
  height:29px;padding:0 13px;border-radius:99px;
  background:rgba(203,208,235,.07);border:1px solid var(--line-2);
  font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);
}
.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 9px var(--green);animation:blink 2.2s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
.hero h1{font-size:clamp(31px,4.6vw,54px);font-weight:700;
  line-height:1.04;letter-spacing:-.025em;text-wrap:balance;
}
.hero h1 em{font-style:normal;color:var(--acc)}
.hero p{margin-top:15px;color:var(--muted);font-size:clamp(14px,1.2vw,16.5px);max-width:470px;line-height:1.6}
.hero-cta{margin-top:24px;display:flex;gap:11px;flex-wrap:wrap}

/* ---------------- sections ---------------- */
.sec{margin-top:34px}
.sec-head{display:flex;align-items:center;gap:12px;margin-bottom:15px}
.sec-head h2{font-size:18px;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.sec-head h2 svg{width:18px;height:18px;color:var(--acc)}
.sec-head .count{font-size:12.5px;color:var(--dim);margin-left:auto}

.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:16px}
.tile{
  position:relative;border-radius:var(--r);overflow:hidden;cursor:pointer;
  background:var(--bg-3);border:1px solid var(--line);
  aspect-ratio:3/4;display:flex;flex-direction:column;
  transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s,border-color .2s;
}
.tile:hover{transform:translateY(-6px);border-color:var(--acc);box-shadow:0 18px 40px rgba(0,0,0,.5)}
.tile-img{
  flex:1;min-height:0;width:100%;object-fit:cover;display:block;
  transition:transform .4s cubic-bezier(.22,1,.36,1);
}
.tile:hover .tile-img{transform:scale(1.045)}
.tile-foot{
  padding:11px 13px;border-top:1px solid var(--line);
  background:var(--bg-2);display:flex;align-items:center;gap:8px;
}
.tile-foot .ed{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.tile-foot .pf{margin-left:auto;font-size:10.5px;color:var(--dim)}
.tile-play{
  position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;
  background:rgba(6,5,16,.55);opacity:0;transition:opacity .2s;
}
.tile:hover .tile-play{opacity:1}
.tile-play span{
  display:flex;align-items:center;gap:7px;background:var(--acc);color:#fff;
  padding:10px 20px;border-radius:99px;font-size:13.5px;font-weight:500;
}

/* live bets */
.feed{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.feed table{width:100%;border-collapse:collapse}
.feed th{
  text-align:left;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--dim);font-weight:500;padding:11px 16px;border-bottom:1px solid var(--line);
}
.feed td{padding:11px 16px;font-size:13.5px;border-bottom:1px solid rgba(203,208,235,.05)}
.feed tr:last-child td{border-bottom:none}
.feed tr{transition:background .15s}
.feed tbody tr:hover{background:var(--bg-3)}
.feed .who{display:flex;align-items:center;gap:9px}
.feed .av{width:24px;height:24px;border-radius:50%;background:var(--acc-deep);display:flex;align-items:center;justify-content:center;font-size:10.5px;color:#b9c2ff;flex:0 0 24px}
.feed .vf{width:13px;height:13px;color:var(--green);flex:0 0 13px}
.feed .num{font-variant-numeric:tabular-nums}
.feed .win{color:var(--green)}
.feed .lose{color:var(--muted)}
.feed tr.fresh{animation:flashin .5s ease}
.feed-empty{padding:26px 16px;text-align:center;font-size:13.5px;color:var(--dim)}
@keyframes flashin{from{background:var(--acc-soft)}to{background:transparent}}
.hide-sm{display:table-cell}

/* footer */
.foot{margin-top:44px;padding:26px 0 40px;border-top:1px solid var(--line);color:var(--dim);font-size:12.5px}
.foot-top{display:flex;gap:26px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.foot a{color:var(--muted)}
.foot a:hover{color:var(--text)}

/* ---------------- modal ---------------- */
.modal{
  position:fixed;inset:0;z-index:200;display:none;
  align-items:center;justify-content:center;padding:20px;
  background:rgba(6,5,16,.78);backdrop-filter:blur(6px);
}
.modal.on{display:flex}
.modal-box{
  width:100%;max-width:430px;background:var(--bg-2);
  border:1px solid var(--line-2);border-radius:18px;padding:26px;
  animation:pop .3s cubic-bezier(.22,1,.36,1);
}
@keyframes pop{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.modal-box h3{font-size:21px;font-weight:700;letter-spacing:-.015em}
.modal-box p{color:var(--muted);font-size:14px;margin-top:9px;line-height:1.6}
.field{
  display:flex;align-items:center;gap:8px;margin-top:18px;
  background:var(--bg-3);border:1px solid var(--line-2);border-radius:11px;padding:0 13px;height:46px;
}
.field:focus-within{border-color:var(--acc)}
.field .at{color:var(--dim)}
.field input{flex:1;background:none;border:none;outline:none;font-size:15px}
.samples{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px;align-items:center}
.samples .lb{font-size:12px;color:var(--dim)}
.samples button{font-size:12.5px;color:var(--muted);background:var(--bg-3);border:1px solid var(--line);border-radius:99px;padding:4px 10px}
.samples button:hover{color:var(--text);border-color:var(--acc)}
.verdict{margin-top:16px;border-radius:11px;padding:13px 15px;font-size:13.5px;display:none;line-height:1.55}
.verdict.on{display:block;animation:pop .28s ease}
.verdict.ok{background:rgba(33,201,94,.09);border:1px solid rgba(33,201,94,.34);color:#b9f5cf}
.verdict.no{background:rgba(255,98,46,.07);border:1px solid rgba(255,98,46,.28);color:var(--muted)}
.verdict .hl{display:block;font-size:15.5px;font-weight:500;color:#ff8159;margin-bottom:5px}
.verdict .hl.ok{color:var(--green)}
.verdict .bd{display:block;color:var(--muted);line-height:1.55}
.verdict .bd b{color:var(--text);font-weight:500}
.steps{margin-top:16px;display:flex;flex-direction:column;gap:9px}
.steps .s{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--dim)}
.steps .s.run{color:var(--muted)}
.steps .s.ok{color:var(--text)}
.steps .s.no{color:var(--text)}
.steps .ic{width:19px;height:19px;border-radius:50%;border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;flex:0 0 19px}
.steps .s.ok .ic{background:rgba(33,201,94,.15);border-color:rgba(33,201,94,.45);color:var(--green)}
.steps .s.no .ic{background:rgba(255,98,46,.15);border-color:rgba(255,98,46,.45);color:var(--red)}
.steps .ic svg{width:11px;height:11px}
.spin{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------------- game view ---------------- */
.gameview{display:none}
body.in-game .lobby{display:none}
body.in-game .gameview{display:block}
.gv-head{display:flex;align-items:center;gap:13px;margin-bottom:18px;flex-wrap:wrap}
.gv-head h1{font-size:22px;font-weight:700;letter-spacing:-.015em}
.gv-back{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13.5px;padding:8px 12px;border-radius:9px;background:var(--bg-3);border:1px solid var(--line)}
.gv-back:hover{color:var(--text);background:var(--bg-4)}
.gv-back svg{width:15px;height:15px}
.gv-fair{
  margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);
  background:var(--bg-3);border:1px solid var(--line);border-radius:9px;padding:7px 12px;
}
.gv-fair svg{width:14px;height:14px;color:var(--green)}
.gv-fair:hover{color:var(--text)}

.gv{display:grid;grid-template-columns:296px 1fr;gap:16px;align-items:start}
.panel{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:16px}
.stage{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:22px;min-height:470px;display:flex;flex-direction:column}

.lab{font-size:11.5px;color:var(--muted);display:flex;justify-content:space-between;margin-bottom:7px}
.amt-in{
  display:flex;align-items:center;gap:7px;background:var(--bg-3);
  border:1px solid var(--line-2);border-radius:10px;padding:0 5px 0 12px;height:44px;
}
.amt-in:focus-within{border-color:var(--acc)}
.amt-in input{flex:1;background:none;border:none;outline:none;font-size:15px;font-variant-numeric:tabular-nums;min-width:0;width:100%}
.amt-in .u{font-size:12px;color:var(--muted);flex:0 0 auto}
.amt-in .qgrp{display:flex;gap:3px;flex:0 0 auto;margin-left:2px}
.amt-in .q{
  height:32px;min-width:32px;padding:0 8px;border-radius:8px;
  background:var(--bg-4);border:1px solid var(--line);font-size:12px;color:var(--muted);
}
.amt-in .q:hover{color:var(--text);border-color:var(--acc)}
.seg{display:flex;background:var(--bg-3);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.seg button{flex:1;height:34px;border-radius:8px;font-size:13px;color:var(--muted);transition:.15s}
.seg button.on{background:var(--acc);color:#fff}
.stat-row{display:flex;gap:8px;margin-top:12px}
.stat-box{flex:1;background:var(--bg-3);border:1px solid var(--line);border-radius:10px;padding:9px 11px;min-width:0}
.stat-box .k{font-size:10.5px;color:var(--dim);letter-spacing:.06em;text-transform:uppercase}
.stat-box .v{font-size:14.5px;font-variant-numeric:tabular-nums;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.field-note{font-size:11.5px;color:var(--dim);margin-top:9px;line-height:1.5}

/* dice */
.dice-wrap{flex:1;display:flex;flex-direction:column;justify-content:center;gap:26px;max-width:760px;margin:0 auto;width:100%}
.dice-out{text-align:center;font-size:clamp(46px,7vw,80px);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em;transition:color .2s}
.dice-out.win{color:var(--green)}
.dice-out.lose{color:var(--red)}
.dice-out.idle{color:var(--dim)}
.track-wrap{padding:0 6px}
.track{position:relative;height:12px;border-radius:99px;background:var(--red);overflow:visible;margin:34px 0 10px}
.track .fill{position:absolute;inset:0 auto 0 0;background:var(--green);border-radius:99px;transition:width .12s,left .12s}
.track input[type=range]{
  position:absolute;inset:-14px 0;width:100%;height:40px;opacity:0;cursor:grab;margin:0;
}
.track .knob{
  position:absolute;top:50%;width:26px;height:26px;margin-left:-13px;
  transform:translateY(-50%);border-radius:8px;background:var(--text);
  box-shadow:0 3px 12px rgba(0,0,0,.5);pointer-events:none;transition:left .12s;
  display:flex;align-items:center;justify-content:center;
}
.track .knob::after{content:'';width:9px;height:2px;background:var(--dim);border-radius:2px;box-shadow:0 4px 0 var(--dim),0 -4px 0 var(--dim)}
.track .marker{
  position:absolute;top:-30px;transform:translateX(-50%);
  font-size:12px;font-variant-numeric:tabular-nums;padding:2px 7px;border-radius:6px;
  background:var(--bg-4);border:1px solid var(--line-2);pointer-events:none;
  opacity:0;transition:left .35s cubic-bezier(.22,1,.36,1),opacity .3s;
}
.track .marker.on{opacity:1}
.scale{display:flex;justify-content:space-between;font-size:11.5px;color:var(--dim);padding:0 6px}

/* roulette */
.rl-reel-wrap{position:relative;height:82px;border-radius:11px;overflow:hidden;background:var(--bg-3);border:1px solid var(--line)}
.rl-reel{display:flex;position:absolute;top:0;bottom:0;left:0;align-items:center;gap:5px;padding:0 5px;will-change:transform}
.rl-cell{
  width:60px;height:60px;flex:0 0 60px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;
  font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;color:#fff;
}
.rl-cell.r{background:#c2334a}.rl-cell.b{background:#1c1b2c;border:1px solid var(--line-2)}.rl-cell.g{background:var(--green);color:#062a13}
.rl-ptr{position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--acc);margin-left:-1px;z-index:3;box-shadow:0 0 12px var(--acc)}
.rl-ptr::before,.rl-ptr::after{content:'';position:absolute;left:50%;transform:translateX(-50%);border:5px solid transparent}
.rl-ptr::before{top:0;border-top-color:var(--acc)}
.rl-ptr::after{bottom:0;border-bottom-color:var(--acc)}
.rl-board{margin-top:18px;display:flex;gap:6px}
.rl-scroll{min-width:0}
.rl-zero{width:42px;flex:0 0 42px}
.rl-grid{flex:1;display:grid;grid-auto-flow:column;grid-template-rows:repeat(3,1fr);grid-auto-columns:minmax(38px,1fr);gap:5px}
.rl-out{margin-top:6px;display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.rl-out-2{margin-top:5px;display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.bet-cell{
  position:relative;height:38px;border-radius:7px;font-size:13px;font-weight:500;
  display:flex;align-items:center;justify-content:center;color:#fff;
  border:1px solid transparent;transition:.12s;font-variant-numeric:tabular-nums;
}
.bet-cell.r{background:#a72c40}.bet-cell.b{background:#1c1b2c;border-color:var(--line-2)}
.bet-cell.g{background:#177d3c;height:100%}
.bet-cell.o{background:var(--bg-3);border-color:var(--line);font-size:12px;color:var(--muted)}
.bet-cell:hover{border-color:var(--acc);transform:translateY(-1px)}
.bet-cell .chip-n{
  position:absolute;top:-6px;right:-6px;min-width:19px;height:19px;padding:0 4px;
  border-radius:99px;background:var(--acc);color:#fff;font-size:10.5px;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 7px rgba(0,0,0,.5);
}
.bet-cell.hit{animation:hit .7s ease}
@keyframes hit{0%,100%{box-shadow:none}30%{box-shadow:0 0 0 3px var(--warn)}}
.rl-res{text-align:center;margin-top:16px;font-size:14px;color:var(--muted);min-height:22px}
.chips{display:flex;gap:6px;margin-top:10px}
.chips button{
  flex:1;height:36px;border-radius:9px;background:var(--bg-3);border:1px solid var(--line);
  font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;
}
.chips button.on{background:var(--acc);color:#fff;border-color:var(--acc)}

/* blackjack */
.bj{position:relative;flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:20px}
/* the felt: a table arc so the stage reads as a table even before a card lands */
.bj-arc{
  position:absolute;left:50%;bottom:-30px;transform:translateX(-50%);
  width:min(760px,108%);height:150px;z-index:0;pointer-events:none;
  border:1px solid rgba(203,208,235,.12);border-bottom:none;
  border-radius:50% 50% 0 0 / 100% 100% 0 0;
  background:radial-gradient(120% 160% at 50% 125%,rgba(81,106,246,.10),transparent 60%);
}
.bj-rules{text-align:center;display:flex;flex-direction:column;gap:4px;margin-top:2px}
.bj-rules .rule{font-size:12.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(203,208,235,.32)}
.bj-rules .sub{font-size:11px;letter-spacing:.05em;color:var(--dim)}
.bj-side,.bj-msg,.hist,.bj-rules{position:relative;z-index:1}
.bj-side{text-align:center}
.bj-side .who{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:11px}
.bj-cards{display:flex;gap:9px;justify-content:center;min-height:118px;align-items:center;flex-wrap:wrap}
.card{
  width:80px;height:114px;border-radius:9px;background:#f7f7f7;color:#12111a;
  display:flex;flex-direction:column;justify-content:space-between;padding:8px 9px;
  box-shadow:0 5px 16px rgba(0,0,0,.45);font-weight:700;flex:0 0 80px;
  animation:deal .34s cubic-bezier(.22,1,.36,1);
}
@keyframes deal{from{opacity:0;transform:translateY(-26px) rotate(-9deg)}to{opacity:1;transform:none}}
.card.red{color:#c2334a}
.card.back{background:linear-gradient(135deg,#221d4b,#12111a);border:1px solid var(--acc);color:transparent;position:relative}
/* empty slots, so you can see where the cards will land */
.card.ghost{
  background:none;box-shadow:none;animation:none;
  border:1.5px dashed rgba(203,208,235,.16);
}
.card.back::after{content:'';position:absolute;inset:0;margin:auto;width:22px;height:22px;background:var(--acc);opacity:.65;transform:rotate(45deg);border-radius:3px}
.card .r{font-size:16px;line-height:1}
.card .s{font-size:19px;line-height:1;align-self:flex-end}
.bj-score{
  display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:26px;padding:0 10px;
  border-radius:99px;background:var(--bg-3);border:1px solid var(--line-2);
  font-size:13px;margin-top:11px;font-variant-numeric:tabular-nums;
}
.bj-score.bust{background:rgba(255,98,46,.15);border-color:rgba(255,98,46,.4);color:var(--red)}
.bj-score.bl{background:rgba(33,201,94,.15);border-color:rgba(33,201,94,.4);color:var(--green)}
.bj-msg{text-align:center;font-size:17px;font-weight:500;min-height:26px}
.bj-msg.idle{color:var(--muted);font-weight:400;font-size:15px}
.bj-msg.win{color:var(--green)}.bj-msg.lose{color:var(--red)}.bj-msg.push{color:var(--warn)}
.acts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:12px}

/* history */
.hist{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
.hist span{
  font-size:11.5px;padding:4px 9px;border-radius:7px;font-variant-numeric:tabular-nums;
  background:var(--bg-3);border:1px solid var(--line);color:var(--muted);
}
.hist span.w{color:var(--green);border-color:rgba(33,201,94,.35)}
.hist span.l{color:var(--red);border-color:rgba(255,98,46,.28)}

/* toast */
.toast{
  position:fixed;right:18px;bottom:18px;z-index:300;
  background:var(--bg-3);border:1px solid var(--line-2);border-radius:11px;
  padding:13px 16px;font-size:13.5px;max-width:330px;
  transform:translateX(140%);transition:transform .34s cubic-bezier(.22,1,.36,1);
  box-shadow:0 14px 40px rgba(0,0,0,.5);
}
.toast.on{transform:none}
.toast.bad{border-color:rgba(255,98,46,.45)}

/* fair drawer */
.fair-body{font-size:13px;color:var(--muted);line-height:1.6}
.fair-row{margin-top:13px}
.fair-row .k{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:5px}
.fair-row .v{
  font-family:ui-monospace,monospace;font-size:11.5px;color:var(--text);
  background:var(--bg-3);border:1px solid var(--line);border-radius:8px;padding:9px 11px;
  word-break:break-all;
}
.fair-row input{width:100%;background:var(--bg-3);border:1px solid var(--line-2);border-radius:8px;padding:9px 11px;font-family:ui-monospace,monospace;font-size:11.5px;outline:none}
.fair-row input:focus{border-color:var(--acc)}

/* ---------------- responsive ---------------- */
@media(max-width:1180px){
  .gv{grid-template-columns:270px 1fr}
}
@media(max-width:980px){
  :root{--rail:270px}
  .rail{transform:translateX(-100%)}
  body.rail-open .rail{transform:none}
  .main{margin-left:0}
  .burger{display:flex}
  .gv{grid-template-columns:1fr}
  .stage{order:-1;min-height:auto}
}
@media(max-width:720px){
  .hero-video{display:none}      /* phones keep the poster, skip the download */
  /* the poster is 2.3:1 in a near-square box, so bias the crop toward the
     astronaut instead of leaving only empty Earth on screen */
  .hero{min-height:320px;background-position:82% 42%}
  .hero::after{background:linear-gradient(175deg,rgba(6,5,16,.9) 0%,rgba(6,5,16,.66) 46%,rgba(6,5,16,.34) 100%)}
  .hide-sm{display:none}
  .search{display:none}
  .tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .hero{min-height:290px}
  .balance{padding-left:11px}
  .balance .demo{display:none}
  .rl-cell{width:48px;flex:0 0 48px;height:48px;font-size:16px}
  .rl-reel-wrap{height:66px}
  .card{width:62px;height:88px;flex:0 0 62px}
  .card .r{font-size:13px}.card .s{font-size:15px}
  .rl-scroll{overflow-x:auto;overflow-y:hidden;padding-bottom:6px;-webkit-overflow-scrolling:touch}
  .rl-scroll > *{min-width:560px}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ============================================================
   lobby structure — rail groups, banner strip, carousel row,
   feed tabs, dense footer
   ============================================================ */

/* ---- rail groups ---- */
.rail-head-btn{
  display:flex;align-items:center;gap:11px;width:100%;
  padding:9px 10px;border-radius:10px;
  font-size:13.5px;font-weight:500;color:var(--text);text-align:left;
  transition:background .15s;
}
.rail-head-btn:hover{background:var(--bg-3)}
.rail-head-btn .lead{width:17px;height:17px;flex:0 0 17px;color:var(--acc)}
.rail-head-btn .chev{
  width:15px;height:15px;margin-left:auto;color:var(--dim);
  transition:transform .22s cubic-bezier(.22,1,.36,1);
}
.rail-group.open .rail-head-btn .chev{transform:rotate(180deg)}
.rail-sub{
  display:grid;grid-template-rows:0fr;
  transition:grid-template-rows .26s cubic-bezier(.22,1,.36,1);
}
.rail-group.open .rail-sub{grid-template-rows:1fr}
.rail-sub>*{overflow:hidden;min-height:0}
.rail-sub .rail-item{padding-left:20px}

.ticker{
  background:var(--bg-3);border:1px solid var(--line);
  border-radius:11px;padding:10px 12px;margin-bottom:10px;
}
.ticker .k{font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--dim)}
.ticker .v{font-size:15px;font-weight:500;margin-top:3px;font-variant-numeric:tabular-nums}
.ticker .v .u{font-size:11px;color:var(--muted)}

/* ---- gate strip ---- */
.strip{
  margin-top:16px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  background:linear-gradient(96deg,var(--acc-deep) 0%,var(--bg-2) 62%);
  border:1px solid var(--line-2);border-radius:var(--r);
  padding:16px 20px;
}
.strip-in{display:flex;align-items:center;gap:15px;flex:1;min-width:260px}
.strip-badge{
  width:40px;height:40px;flex:0 0 40px;border-radius:11px;
  background:var(--acc-soft);border:1px solid rgba(81,106,246,.35);
  display:flex;align-items:center;justify-content:center;
}
.strip-badge svg{width:19px;height:19px;color:var(--acc)}
.strip-copy h3{font-size:15.5px;font-weight:600;letter-spacing:-.01em}
.strip-copy p{font-size:13px;color:var(--muted);margin-top:3px;line-height:1.5}

/* ---- two-up banners ---- */
.banners{margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.banner{
  position:relative;overflow:hidden;border-radius:var(--r);
  border:1px solid var(--line);min-height:132px;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:20px 22px;
  transition:transform .2s cubic-bezier(.22,1,.36,1),border-color .2s,box-shadow .2s;
}
.banner:hover{transform:translateY(-3px);border-color:var(--acc);box-shadow:0 16px 38px rgba(0,0,0,.45)}
.b-tables{background:linear-gradient(102deg,#2b2170 0%,#171436 58%,var(--bg-2) 100%)}
.b-fair{background:linear-gradient(102deg,#123a2a 0%,#14202a 55%,var(--bg-2) 100%)}
.banner-t h3{font-size:20px;font-weight:700;letter-spacing:-.02em}
.banner-t p{font-size:13px;color:var(--muted);margin-top:4px}
.banner-art{display:flex;align-items:center;gap:-8px}
.banner-art img{
  width:66px;height:88px;object-fit:cover;border-radius:9px;
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 10px 26px rgba(0,0,0,.45);
}
.banner-art img+img{margin-left:-22px}
.banner-art img:nth-child(1){transform:rotate(-7deg)}
.banner-art img:nth-child(3){transform:rotate(7deg)}
.banner-seed{flex-direction:column;align-items:flex-end;gap:5px;text-align:right}
.banner-seed .mono{font-size:12.5px;color:#8ee6b4}
.banner-seed .dim{font-size:10.5px;color:var(--dim)}

/* ---- section tools / carousel ---- */
.sec-head .sec-tools{margin-left:auto;display:flex;align-items:center;gap:14px}
.arrows{display:flex;gap:7px}
.arrow{
  width:31px;height:31px;border-radius:9px;
  background:var(--bg-3);border:1px solid var(--line);color:var(--muted);
  display:flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s,border-color .15s;
}
.arrow svg{width:15px;height:15px}
.arrow:hover{background:var(--bg-4);color:var(--text);border-color:var(--line-2)}
.arrow[disabled]{opacity:.35;pointer-events:none}

.tiles[data-lane]{
  display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x proximity;
  padding-bottom:4px;scrollbar-width:none;
}
.tiles[data-lane]::-webkit-scrollbar{display:none}
.tiles[data-lane] .tile{
  flex:0 0 clamp(190px,20vw,236px);scroll-snap-align:start;aspect-ratio:3/4;
}

/* ---- feed tabs ---- */
.tabs{display:flex;gap:3px;background:var(--bg-3);border:1px solid var(--line);border-radius:10px;padding:3px}
.tab{
  padding:5px 13px;border-radius:8px;font-size:12.5px;color:var(--muted);
  transition:background .15s,color .15s;
}
.tab:hover{color:var(--text)}
.tab.on{background:var(--acc-soft);color:var(--text)}
.feed .tm{color:var(--dim);font-variant-numeric:tabular-nums}
.hide-md{display:table-cell}

/* ---- how it works ---- */
.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.step-card{
  background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);
  padding:20px;position:relative;
}
.step-card .n{
  display:flex;align-items:center;justify-content:center;
  width:27px;height:27px;border-radius:8px;
  background:var(--acc-soft);border:1px solid rgba(81,106,246,.32);
  color:#b9c2ff;font-size:12.5px;font-weight:600;
}
.step-card h4{font-size:15px;font-weight:600;margin-top:13px;letter-spacing:-.01em}
.step-card p{font-size:13px;color:var(--muted);margin-top:7px;line-height:1.6}

/* ---- dense footer ---- */
.foot-cols{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:26px 20px;margin-bottom:28px;
}
.foot-col h5{
  font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:11px;
  letter-spacing:.01em;
}
.foot-col a{display:block;font-size:12.5px;color:var(--muted);padding:4px 0;transition:color .15s}
.foot-col a:hover{color:var(--text)}
.foot-cur{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:16px 0;border-top:1px solid var(--line);
}
.foot-cur .lb{font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--dim)}
.cur-chip{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--bg-3);border:1px solid var(--line);border-radius:99px;
  padding:6px 13px;font-size:12.5px;color:var(--text);
}
.cur-chip svg{width:14px;height:14px;color:#9945ff}
.cur-chip em{font-style:normal;color:var(--dim);font-size:11px}
.foot-fine{padding-top:16px;border-top:1px solid var(--line)}
.foot-fine p+p{margin-top:8px}

@media (max-width:1000px){
  .banners{grid-template-columns:1fr}
  .hide-md{display:none}
}
@media (max-width:720px){
  .strip{flex-direction:column;align-items:flex-start}
  .strip .btn{width:100%}
  .banner-art img{width:52px;height:70px}
}

@media (max-width:560px){
  .sec-head{flex-wrap:wrap}
  .sec-head .count{display:none}
  .sec-head .sec-tools{width:auto}
  .banner-t h3{font-size:17px}
}
