/* GENERATED by tools/build-vein-css.mjs — do not edit.
   39 stylesheets concatenated in cascade order from vein.html.
   Edit the source .css files and rebuild. */

/* ===== cavewatch.css ===== */
/* CaveWatch — design tokens + shared rules. ONE source of truth.
 * Link before the page's own <style>.
 *
 * WHY: there were SIX :root blocks across twelve pages. Seven agreed; five had
 * drifted. An accent change meant a twelve-file find-and-replace where five
 * files wouldn't match.
 *
 * WHAT IS DELIBERATELY *NOT* HERE:
 * 89 selectors are defined on 6+ pages with DIFFERENT bodies. `.shell` has eight
 * versions across nine pages (max-width 1220/1240/1280px; padding 0 22px 128px
 * vs 0 24px 90px). `.toast` has seven. `body` has eight.
 * That is drift, not duplication — hoisting it means picking a winner, and
 * picking a winner CHANGES how pages look. That decision belongs to a human.
 * Only rules byte-identical across 6+ pages AND appearing exactly once per page
 * are here: moving those cannot reorder the cascade, so extraction is provably
 * invisible. Verified by a cascade-equivalence check over every declaration.
 *
 * index / command / ashpit / warroom / admin keep small :root deltas inline.
 * Those deltas ARE the remaining drift — now visible instead of buried.
 */

:root {
  /* ── SHELL SCALE — one content width for the whole product ────────────────
     Seven different shell class names carried eight different caps (1180,
     1220, 1240, 1280, 1300, 1320, 1360, 1100), so the content edge visibly
     jumped when you navigated between pages. This is now the single source.

     Growth is fluid rather than stepped: below ~1340px viewport the floor
     keeps the layout usable on a 13" panel (which is 1280 or 1440 CSS px,
     minus the 70px sidebar rail body already reserves); above that it tracks
     the viewport, and it stops at 2040px.

     WHY IT STOPS: a 32" 4K panel is 3840 physical px and commonly ~2560 CSS
     px after scaling. Letting a trading table run the full width does not
     help anyone read it — the eye loses the row. Past the cap the shell
     centres and the gutters absorb the rest. Change ONE number here to
     revisit that decision. */
  --gutter: clamp(14px, 2.2vw, 40px);
  --shell: min(100% - (var(--gutter) * 2), clamp(1180px, 88vw, 2040px));

  /* ── CANONICAL PALETTE ────────────────────────────────────────────────────
     One base + at most one tint per role. Before this, the codebase held 306
     distinct colours: six greens, five reds, four purples, eight golds. Every
     stray literal was snapped to the nearest of these in CIELAB space.
     These are the ONLY colours. Do not add a new one to solve a local problem —
     that is exactly how the six greens happened. */
  --amber-lt: #FBBF24;
  --ember-lt: #FF9A32;
  --green-lt: #7FD08A;
  --red-lt: #FF8F8F;
  --violet-lt: #C08BFF;
  --ice-lt: #AB9FF2;
  --copper-dk: #6F3A16;

  /* ── SEMANTIC STATE ───────────────────────────────────────────────────────
     What a colour MEANS, so the same state looks the same in every card, tray
     and modal. Reach for these, not the raw colour: a pending trade on Fresh
     Tracks and a pending trade in the Open Trades tray must not be different
     shades because two files each picked their own amber.

       live      running / armed-and-firing / in profit
       pending   waiting to fill / queued / armed but idle
       upgrade   tier gates, locks, premium CTAs
       danger    loss / stop / destructive
       primary   the main action on any surface  */
  --state-live: var(--green);
  --state-live-soft: var(--green-lt);
  --state-pending: var(--amber);
  --state-pending-soft: var(--amber-lt);
  --state-upgrade: var(--violet);
  --state-upgrade-soft: var(--violet-lt);
  --state-danger: var(--red);
  --state-danger-soft: var(--red-lt);
  --action-primary: var(--gold);
  --action-primary-lit: var(--gold-2);
  --action-hot: var(--ember);

  /* ── NETWORK BRAND MARKS — deliberately OUTSIDE the palette ───────────────
     A wallet or chain button that is not the wallet's own colour is a broken
     affordance, not an inconsistency. These are exempt from unification. */
  --brand-solana: #14F195;
  --brand-solana-2: #9945FF;
  --brand-phantom: #AB9FF2;
  --brand-robinhood: #00C805;

  /* Surfaces */
  --void: #080706;
  --bg: #0b0a08;
  --surface: #15110d;
  --surface-2: #1c1712;
  --surface-3: #241d16;
  --glass: linear-gradient(158deg,rgba(255,255,255,.055),rgba(255,255,255,.018));
  --glass-2: linear-gradient(158deg,rgba(255,255,255,.075),rgba(255,255,255,.025));

  /* Brand */
  --amber: #F3A60F;
  --gold: #FFC857;
  --bone: var(--ink);
  --bone-2: var(--ink-2);
  --ember: #F97316;
  --ember-2: var(--ember-lt);
  --copper: #6F3A16;
  --copper-bright: var(--copper);
  --molten: var(--ember);
  --gem: var(--ember-lt);

  /* Text */
  --ink: #F5E7D0;
  --ink-2: #d8c4a6;
  --muted: #B8A58C;
  --dim: #8a7d6c;
  --faint: #5f5648;

  /* Semantic */
  --green: #22C55E;
  --red: #EF4444;
  --ice: #5CA9E8;
  --violet: #A855F7;
  --warn: var(--amber);
  --jade: var(--green);

  /* Lines */
  --edge: rgba(168,90,34,.34);
  --edge-2: rgba(120,98,72,.22);
  --edge-hot: rgba(249,115,22,.5);
  --hair: #2b2119;
  --gline: rgba(255,255,255,.09);
  --gline-2: rgba(255,255,255,.055);

  /* Type */
  --display: 'Unbounded',system-ui,sans-serif;
  --brand: 'RiverAdventurer',serif;
  --sans: 'Geist',system-ui,sans-serif;
  --mono: 'Geist Mono',monospace;

  /* Geometry */
  --r: 14px;

  /* Other */
  --ash: #15110D;
  --ember-soft: var(--ember-lt);
  --ember2: var(--ember-lt);
  --ghi: inset 0 1px 0 rgba(255,255,255,.07);
  --gold-2: #ffce6b;
  --head: 'Space Grotesk',system-ui,sans-serif;
  --panel: rgba(245,158,11,.06);
  --panel-edge: rgba(255,179,71,.2);
  --r-sm: 13px;
  --rose: var(--red);
  --shadow: 0 24px 60px rgba(0,0,0,.5);
  --stone: #15110D;
  --stone-2: #1C1712;
  --void-2: #0B0A08;
  --wr-art: none;
}

/* ── shared rules: byte-identical across 6+ pages ─────────────────────────── */
.back{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);text-decoration:none;margin-bottom:16px;cursor:pointer}
.back svg{width:13px;height:13px}
.back:hover{color:var(--amber)}
.bighit .bi .s{font-size:12px;color:var(--muted);margin-top:2px}
.bighit .bi .t{font-family:var(--display);font-weight:800;font-size:15px}
.btn .i{width:15px;height:15px}
.ch-chart{height:220px;background:rgba(0,0,0,.28);border:1px solid var(--hair);border-radius:12px;padding:10px;margin-bottom:14px}
.ch-chart .area{fill:url(#chg);opacity:0;animation:fade .9s ease .7s forwards}
.ch-chart .line{fill:none;stroke:var(--amber);stroke-width:2;stroke-dasharray:2000;stroke-dashoffset:2000;animation:draw 1.6s ease forwards}
.ch-chart svg{width:100%;height:100%}
.ch-stats .k{font-family:var(--mono);font-size:9px;text-transform:uppercase;color:var(--dim)}
.ch-stats .v{font-family:var(--display);font-weight:800;font-size:16px;margin-top:2px}
.chart .area{fill:url(#pg);opacity:0;animation:fade 1s ease .9s forwards}
.chart .line{fill:none;stroke:var(--green);stroke-width:2.5;stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 1.8s ease forwards}
.chart svg{width:100%;height:100%}
.chart-h{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.chart-h .ch-px{font-family:var(--mono);font-size:13px;color:var(--ink-2);margin-top:2px}
.chart-h .ch-px .chg.g{color:var(--green)}
.chart-h .ch-px .chg.r{color:var(--red)}
.chart-h .ch-tk{font-family:var(--display);font-weight:800;font-size:19px}
.chart-h .tf{margin-left:auto}
.chartbtn{width:28px;height:28px;flex:none;border-radius:8px;border:1px solid var(--hair);background:rgba(0,0,0,.25);color:var(--muted);cursor:pointer;display:grid;place-items:center;transition:.15s;margin-left:8px}
.chartbtn svg{width:14px;height:14px}
.chartbtn:hover{border-color:var(--amber);color:var(--gold)}
.chartmask{position:fixed;inset:0;z-index:110;background:rgba(6,5,4,.72);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:20px}
.chartmask.on{display:flex}
.col{display:flex;flex-direction:column;gap:22px}
.gc-row{display:flex;align-items:flex-start;gap:14px;padding:13px 0;border-bottom:1px solid var(--hair)}
.gc-row .lbl{min-width:150px;font-size:13px;color:var(--ink-2)}
.gc-row .note{flex:1;font-size:12px;color:var(--dim)}
.gc-row .val{font-family:var(--display);font-weight:800;font-size:16px;min-width:110px}
.gc-row .val.a{color:var(--amber)}
.gc-row .val.g{color:var(--green)}
.gc-row:last-child{border-bottom:0}
.geart svg{width:17px;height:17px}
.hitrow:last-child{border-bottom:0}
.lbtn{height:30px;padding:0 13px;border-radius:8px;font-family:var(--sans);font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border:1px solid transparent;transition:.15s}
.lbtn.copy{background:linear-gradient(180deg,var(--ember-2),var(--ember));color:#15110D;border-color:#ff9a32}
.lbtn.copy:hover{box-shadow:0 0 16px rgba(249,115,22,.4)}
.lbtn.trade{background:var(--surface-3);color:var(--ink);border-color:var(--copper-bright)}
.lbtn.trade:hover{border-color:var(--ember)}
.lbuy .la{display:flex;gap:7px;flex:none}
.lbuy .li{flex:1;min-width:0}
.lbuy .ls{font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:1px}
.lbuy .lt{font-family:var(--display);font-weight:700;font-size:14px}
.lbuy:last-child{border-bottom:0}
.member{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--hair)}
.member .mn{font-family:var(--mono);font-size:13px;flex:1}
.member .mt{font-family:var(--mono);font-size:10px;color:var(--dim)}
.member img{width:30px;height:30px;border-radius:8px;object-fit:contain;background:rgba(0,0,0,.25);border:1px solid var(--hair);padding:2px}
.member:last-child{border-bottom:0}
.nav-pills::-webkit-scrollbar{display:none}
.p-green{--pt:#34D399;--pb:rgba(34,197,94,.5);--pbg:rgba(34,197,94,.1)}
.p-red{--pt:#FB5D63;--pb:rgba(239,68,68,.5);--pbg:rgba(239,68,68,.1)}
.panel-h{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin-bottom:15px}
.panel-h .ic{width:15px;height:15px;color:var(--amber)}
.panel-h .sp{flex:1}
.panel-h small{font-family:var(--mono);font-size:10px;color:var(--dim);text-transform:none;letter-spacing:0}
.pavwrap{position:relative;width:104px;height:104px;flex:none}
.pavwrap>.emb{width:104px;height:104px;border-radius:22px;object-fit:contain;padding:6px;background:rgba(0,0,0,.3);border:1px solid var(--copper)}
.pavwrap>.st{position:absolute;bottom:2px;right:2px;width:16px;height:16px;border-radius:50%;background:var(--green);border:3px solid var(--void);box-shadow:0 0 8px var(--green)}
.perf-top .pv.r{color:var(--red)}
.pgrid{display:grid;grid-template-columns:1fr 380px;gap:22px;align-items:start}
.phero-body{display:flex;align-items:center;gap:24px;position:relative;flex-wrap:wrap}
.pid{flex:1;min-width:240px}
.pid .tagrow{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.pos-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--hair);font-size:13px}
.pos-row .ex{font-family:var(--mono);font-size:12px;color:var(--amber)}
.pos-row .tk{font-family:var(--display);font-weight:700;flex:1}
.pos-row:last-child{border-bottom:0}
.pstat .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.pstats{display:flex;gap:12px;margin-left:auto;flex-wrap:wrap}
.swap-close{margin-left:auto;width:30px;height:30px;border-radius:8px;border:1px solid var(--hair);background:rgba(0,0,0,.2);color:var(--muted);cursor:pointer}
.swap-exec:hover{box-shadow:0 0 26px rgba(249,115,22,.5)}
.swap-h{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.swap-h .stt{font-family:var(--mono);font-size:11px;color:var(--dim)}
.swap-leg .ll{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:5px}
.swap-note{font-family:var(--mono);font-size:10px;color:var(--dim);text-align:center;margin-top:10px;line-height:1.5}
.swap-shield{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--green);background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.3);border-radius:9px;padding:8px 12px;margin-bottom:14px}
.swap-shield svg{width:14px;height:14px}
.swapmask{position:fixed;inset:0;z-index:100;background:rgba(6,5,4,.72);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:20px}
.swapmask.on{display:flex}
.tabs button{font-family:var(--mono);font-size:10px;color:var(--muted);background:transparent;border:0;padding:6px 12px;border-radius:6px;cursor:pointer}
.tabs button.on{background:rgba(243,166,15,.14);color:var(--gold)}
.tbar{display:flex;align-items:center;gap:12px;padding:8px 0}
.tbar .tn{font-family:var(--display);font-weight:700;font-size:13px;width:66px}
.tbar .track{flex:1;height:8px;border-radius:99px;background:rgba(0,0,0,.35);overflow:hidden}
.tbar .track>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--amber),var(--green));animation:grow 1s cubic-bezier(.22,1,.36,1) both}
.tbar .track>i.neg{background:linear-gradient(90deg,var(--molten),var(--red))}
.tbar .tv{font-family:var(--mono);font-size:12px;width:82px;text-align:right}
.tbar .tv.g{color:var(--green)}
.tbar .tv.r{color:var(--red)}
.tf{display:inline-flex;gap:3px;background:rgba(0,0,0,.3);border:1px solid var(--hair);border-radius:9px;padding:3px}
.tf button{font-family:var(--mono);font-size:10px;color:var(--muted);background:transparent;border:0;padding:6px 11px;border-radius:6px;cursor:pointer}
.tf button.on{background:rgba(243,166,15,.14);color:var(--gold)}
.tk-glyph{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:13px;color:#15110D;border:1px solid rgba(0,0,0,.3)}
.tk-img{width:34px;height:34px;border-radius:50%;flex:none;object-fit:cover;border:1px solid var(--hair);background:var(--surface-3)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.tp{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--hair);font-size:13px}
.tp .flow{font-family:var(--mono);font-size:11px;color:var(--dim)}
.tp .pl{font-family:var(--mono);font-weight:600;text-align:right}
.tp .pl.g{color:var(--green)}
.tp .pl.r{color:var(--red)}
.tp .tk{font-family:var(--display);font-weight:700}
.tp .tm{font-family:var(--mono);font-size:10.5px;color:var(--dim);text-align:right}
.tp:last-child{border-bottom:0}
.trait .bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--ember),var(--gold));animation:grow 1s ease both}
.trust-big{display:flex;align-items:baseline;gap:8px;margin-bottom:14px}
.trust-big .d{font-family:var(--mono);font-size:14px;color:var(--dim)}
.trust-big .grade{margin-left:auto;font-family:var(--display);font-weight:800;font-size:26px;color:var(--gold)}
.trust-big .n{font-family:var(--display);font-weight:900;font-size:52px;line-height:1;color:var(--amber)}
.tsub{margin:11px 0}
.tsub .bar{height:6px;border-radius:99px;background:rgba(0,0,0,.35);overflow:hidden}
.tsub .bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--amber),var(--ember));border-radius:99px;animation:grow 1s ease both}
.tsub .tt{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:5px}
.tsub .tt .max{font-family:var(--mono);font-size:11px;color:var(--dim)}


/* ── converged components ─────────────────────────────────────────────────────
 * The 89 selectors C found drifted, now with one value each. See web/DESIGN.md
 * for why each was picked. These live here so the next change is one edit, not
 * twelve — which is the entire point of the exercise.
 */

/* .shell had EIGHT versions across nine pages: 1200/1220/1240x3/1280/1300x3.
 * 1300 wins on headcount and on principle — it is already what the three
 * densest pages (ranks, stampedes, missions) use, and those are tables. The
 * tables are the product. A terminal earns its width. */
.shell{position:relative;z-index:2;max-width:1300px;margin:0 auto;padding:0 24px 90px}

/* Numbers must not wobble. Proportional digits make a column of PnL figures
 * shift as it updates, and a wobbling number reads as an unreliable number.
 * Cheapest credibility in the product. */
.num,.mono,.pl,.pv,.tv,.val,.cwm-tick,.cwo-amt,.pf-v,
td.num,.stat-v,.kpi-v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* Focus. A keyboard user must always be able to see where they are — this is
 * the floor, not a feature. */
:where(a,button,[role=button],input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--ember);outline-offset:2px;border-radius:6px}

/* Motion. Respect the OS setting; a chart that lurches is not delightful. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* Brand marks — real network/wallet logos, not lettered tiles. */
.cw-mark{display:block;flex:none}
.cw-chip{display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 9px 0 6px;
  border-radius:8px;background:rgba(255,255,255,.05);border:1px solid var(--edge-2);
  font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.03em;color:var(--ink-2);
  font-variant-numeric:tabular-nums}
.cw-chip .cw-mark{width:15px;height:15px}

/* THE SIGNATURE: locked content is visibly present.
 * Most products hide what you have not paid for, so nobody learns what they are
 * missing. The entitlement gate returns the locked COUNT for exactly this
 * reason — a Scout should SEE that 28 Oracles exist behind the glass. */
.locked{position:relative;filter:saturate(.15) brightness(.62);pointer-events:none;user-select:none}
.locked::after{content:"";position:absolute;inset:0;border-radius:inherit;
  background:repeating-linear-gradient(135deg,transparent 0 7px,rgba(243,166,15,.05) 7px 14px)}
.lock-note{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:10px;
  background:rgba(243,166,15,.09);border:1px solid rgba(243,166,15,.28);
  font-size:12px;color:var(--gold);font-weight:600}
.lock-note b{font-variant-numeric:tabular-nums}


/* ═══════════════════════════════════════════════════════════════════════════
   CAVEWATCH DESIGN SYSTEM v2 — foundation layer  (appended 2026-07-21)
   ---------------------------------------------------------------------------
   Additive & provably invisible until adopted: every rule below is either a NEW
   token or a NEW `cw-` prefixed class that nothing in the product uses yet — so
   loading this changes no existing page. Pages opt in during their rebuild by
   swapping drifted inline markup for these shared components. Palette, fonts and
   the tabular-nums / focus / reduced-motion floors above are inherited, not
   redefined. Prefix is `cw-` throughout; generic names (.card/.panel/.title/
   .tabs/.header) are deliberately avoided to prevent page-level collisions.
   ═══════════════════════════════════════════════════════════════════════════ */

:root{
  /* Spacing rhythm — one scale, used everywhere. */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px; --s6:24px;
  --s8:32px; --s10:40px; --s12:48px; --s16:64px;
  /* Radius scale — premium, slightly sharp. */
  --rad-xs:8px; --rad-sm:10px; --rad-md:14px; --rad-lg:16px; --rad-xl:22px; --rad-pill:999px;
  /* Motion — durations + easings. */
  --dur-1:160ms; --dur-2:220ms; --dur-3:300ms; --dur-4:420ms;
  --ease:cubic-bezier(.2,.7,.2,1); --ease-spring:cubic-bezier(.34,1.4,.5,1); --ease-out:cubic-bezier(.16,1,.3,1);
  /* Elevation — restrained, warm-tinted. */
  --elev-1:0 4px 14px rgba(0,0,0,.28);
  --elev-2:0 14px 36px rgba(0,0,0,.34);
  --elev-3:0 26px 64px rgba(0,0,0,.46);
  --inner-hi:inset 0 1px 0 rgba(255,255,255,.055);
  /* Component surfaces (derive from the locked palette). */
  --cw-card-bg:linear-gradient(158deg,#15110D,#0B0A08);
  --cw-card-hover:linear-gradient(158deg,#1C1712,#15110D);
  --cw-inset:rgba(0,0,0,.28);
}

/* ── section header (page + card section titling) ─────────────────────────── */
.cw-eyebrow{display:inline-flex;align-items:center;gap:var(--s2);font-family:var(--mono);font-weight:600;
  font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--amber)}
.cw-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:cw-live 2s ease-in-out infinite}
.cw-h1{font-family:var(--display);font-weight:800;letter-spacing:-.03em;color:var(--bone);
  font-size:clamp(26px,3.4vw,40px);line-height:1.02;margin:var(--s2) 0}
.cw-sub{color:var(--muted);font-size:14px;line-height:1.6;max-width:64ch}
.cw-section{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s6);margin:var(--s10) 0 var(--s5)}

/* ── grid helpers ─────────────────────────────────────────────────────────── */
.cw-grid{display:grid;gap:var(--s4)}
.cw-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.cw-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.cw-grid.cols-4{grid-template-columns:repeat(4,1fr)}
.cw-grid.auto{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.cw-span-2{grid-column:span 2}

/* ── CARD SYSTEM — 8 variants share one skeleton ──────────────────────────── */
.cw-card{position:relative;display:flex;flex-direction:column;gap:var(--s4);
  padding:var(--s5);border:1px solid var(--gline-2);border-radius:var(--rad-lg);
  background:var(--cw-card-bg);box-shadow:var(--elev-1),var(--inner-hi);
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2),box-shadow var(--dur-2)}
.cw-card.is-hoverable:hover{transform:translateY(-3px);border-color:var(--edge);box-shadow:var(--elev-2),var(--inner-hi)}
.cw-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s3)}
.cw-card-title{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:-.01em;color:var(--bone-2)}
.cw-card-note{font-size:12.5px;line-height:1.55;color:var(--muted)}
.cw-card-foot{display:flex;align-items:center;gap:var(--s3);margin-top:auto;padding-top:var(--s3);border-top:1px solid var(--gline-2)}
.cw-card::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:.5;
  background:radial-gradient(120% 100% at 88% 0,var(--accent-glow,transparent),transparent 42%)}

/* variant accents (drive the corner glow + left rule) */
.cw-card--intel   {--accent-glow:rgba(92,169,232,.12)}
.cw-card--kpi     {--accent-glow:rgba(243,166,15,.12)}
.cw-card--action  {--accent-glow:rgba(249,115,22,.16)}
.cw-card--reward  {--accent-glow:rgba(255,200,87,.16)}
.cw-card--profile {--accent-glow:rgba(168,85,247,.12)}
.cw-card--warning {--accent-glow:rgba(239,68,68,.14);border-color:rgba(239,68,68,.24)}
.cw-card--terminal{--accent-glow:rgba(34,197,94,.10);background:linear-gradient(158deg,#0B0A08,#0B0A08);border-color:rgba(34,197,94,.14)}
.cw-card--terminal .cw-card-title,.cw-card--terminal *{font-family:var(--mono)}

/* status chip inside a card head */
.cw-status{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:var(--rad-pill);
  font-family:var(--mono);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--dim);border:1px solid var(--gline-2);background:rgba(255,255,255,.02);white-space:nowrap}
.cw-status.is-live{color:var(--green);border-color:rgba(34,197,94,.28);background:rgba(34,197,94,.08)}
.cw-status.is-live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green);animation:cw-live 1.6s infinite}
.cw-status.is-warn{color:var(--warn);border-color:rgba(245,158,11,.28);background:rgba(245,158,11,.08)}
.cw-status.is-risk{color:var(--red);border-color:rgba(239,68,68,.3);background:rgba(239,68,68,.08)}
.cw-status.is-gold{color:var(--gold);border-color:var(--panel-edge);background:var(--panel)}

/* ── KPI card + sparkline ─────────────────────────────────────────────────── */
.cw-kpi{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s5);border:1px solid var(--gline-2);
  border-radius:var(--rad-lg);background:linear-gradient(158deg,#15110D,#0B0A08);box-shadow:var(--elev-1),var(--inner-hi);
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2)}
.cw-kpi:hover{transform:translateY(-2px);border-color:var(--edge)}
.cw-kpi-label{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.cw-kpi-val{font-family:var(--display);font-weight:800;font-size:clamp(22px,2.4vw,30px);line-height:1;color:var(--bone);font-variant-numeric:tabular-nums}
.cw-kpi-row{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s3)}
.cw-delta{font-family:var(--mono);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:3px}
.cw-delta.up{color:var(--green)} .cw-delta.down{color:var(--red)}
.cw-spark{width:100%;height:34px;display:block}
.cw-spark path{fill:none;stroke:var(--amber);stroke-width:2;vector-effect:non-scaling-stroke}
.cw-spark .fill{fill:url(#cwSpark);stroke:none;opacity:.5}

/* ── buttons ──────────────────────────────────────────────────────────────── */
.cw-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:40px;padding:0 var(--s5);
  border:1px solid transparent;border-radius:var(--rad-sm);cursor:pointer;font-family:var(--sans);font-weight:700;
  font-size:13px;letter-spacing:.01em;transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-2),
  border-color var(--dur-2),background var(--dur-2),filter var(--dur-2)}
.cw-btn:active{transform:translateY(1px) scale(.99)}
.cw-btn--primary{color:#1C1712;background:linear-gradient(135deg,var(--ember-2),var(--ember));box-shadow:0 10px 26px rgba(249,115,22,.28)}
.cw-btn--primary:hover{filter:brightness(1.05);box-shadow:0 14px 34px rgba(249,115,22,.42);transform:translateY(-1px)}
.cw-btn--gold{color:#241D16;background:linear-gradient(135deg,var(--gold),var(--ember-2));box-shadow:0 10px 26px rgba(255,200,87,.24)}
.cw-btn--ghost{color:var(--bone-2);background:rgba(255,255,255,.04);border-color:var(--gline)}
.cw-btn--ghost:hover{border-color:var(--edge-hot);background:rgba(255,255,255,.07)}
.cw-btn--danger{color:#1C1712;background:linear-gradient(135deg,#FF8F8F,#EF4444);box-shadow:0 10px 26px rgba(221,65,52,.22)}
.cw-btn--sm{min-height:32px;padding:0 var(--s3);font-size:12px;border-radius:var(--rad-xs)}
.cw-btn[disabled]{opacity:.5;cursor:not-allowed;filter:grayscale(.3)}
.cw-btn .i{width:15px;height:15px}

/* ── tabs with animated ink ───────────────────────────────────────────────── */
.cw-tabs{position:relative;display:inline-flex;gap:2px;padding:4px;border:1px solid var(--gline-2);
  border-radius:var(--rad-md);background:rgba(15,13,11,.7)}
.cw-tab{position:relative;z-index:1;border:0;background:transparent;cursor:pointer;padding:9px 16px;border-radius:var(--rad-xs);
  font-family:var(--sans);font-weight:700;font-size:13px;color:var(--dim);transition:color var(--dur-2)}
.cw-tab:hover{color:var(--bone-2)} .cw-tab.is-active{color:var(--gold)}
.cw-tab-ink{position:absolute;top:4px;bottom:4px;z-index:0;border-radius:var(--rad-xs);
  background:linear-gradient(180deg,rgba(249,115,22,.18),rgba(249,115,22,.07));box-shadow:inset 0 0 0 1px rgba(249,115,22,.24);
  transition:left var(--dur-3) var(--ease-spring),width var(--dur-3) var(--ease-spring)}

/* ── tooltip ──────────────────────────────────────────────────────────────── */
.cw-tip{position:relative}
.cw-tip__body{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);
  min-width:max-content;max-width:240px;padding:8px 11px;border-radius:var(--rad-xs);
  background:#0B0A08;border:1px solid var(--edge-2);box-shadow:var(--elev-2);
  font-family:var(--sans);font-size:11.5px;line-height:1.45;color:var(--ink-2);
  opacity:0;pointer-events:none;transition:opacity var(--dur-2),transform var(--dur-2) var(--ease);z-index:60}
.cw-tip:hover .cw-tip__body,.cw-tip:focus-within .cw-tip__body{opacity:1;transform:translate(-50%,0)}

/* ── skeleton / empty / error states ──────────────────────────────────────── */
.cw-skel{border-radius:var(--rad-xs);background:linear-gradient(100deg,rgba(255,255,255,.04) 30%,rgba(255,255,255,.09) 50%,rgba(255,255,255,.04) 70%);
  background-size:220% 100%;animation:cw-shimmer 1.4s linear infinite}
.cw-skel.line{height:12px;margin:7px 0} .cw-skel.line.w60{width:60%} .cw-skel.line.w40{width:40%}
.cw-skel.block{height:120px} .cw-skel.chip{height:22px;width:80px;border-radius:var(--rad-pill)}
.cw-empty,.cw-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);
  text-align:center;padding:var(--s10) var(--s5);min-height:180px}
.cw-empty__icon,.cw-error__icon{width:46px;height:46px;display:grid;place-items:center;border-radius:var(--rad-md);
  border:1px solid var(--gline-2);background:rgba(255,255,255,.02);color:var(--dim);font-size:20px}
.cw-error__icon{color:var(--red);border-color:rgba(239,68,68,.24);background:rgba(239,68,68,.06)}
.cw-empty__title,.cw-error__title{font-family:var(--display);font-weight:700;font-size:15px;color:var(--bone-2)}
.cw-empty__note,.cw-error__note{font-size:12.5px;color:var(--muted);max-width:42ch}

/* ── premium shell (OPT-IN: pages adopt `cw-shell` on their nav during rebuild;
      never auto-applies, so inline `.nav` drift is untouched until converged) ── */
.cw-shell-nav{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--s4);
  padding:var(--s3) var(--s5);margin:0 0 var(--s5);border-bottom:1px solid var(--hair);
  background:linear-gradient(180deg,rgba(11,10,8,.92),rgba(11,10,8,.72));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.cw-shell-pills{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none}
.cw-shell-pills::-webkit-scrollbar{display:none}
.cw-shell-pill{position:relative;padding:8px 13px;border-radius:var(--rad-xs);cursor:pointer;white-space:nowrap;
  font-family:var(--sans);font-weight:600;font-size:13px;color:var(--dim);transition:color var(--dur-2),background var(--dur-2)}
.cw-shell-pill:hover{color:var(--bone-2);background:rgba(255,255,255,.03)}
.cw-shell-pill.active{color:var(--gold);background:var(--panel)}
.cw-shell-pill.active::after{content:"";position:absolute;left:13px;right:13px;bottom:-9px;height:2px;border-radius:2px;background:var(--ember);box-shadow:0 0 10px rgba(249,115,22,.5)}

/* ── keyframes (namespaced) ───────────────────────────────────────────────── */
@keyframes cw-live{0%,100%{opacity:1}50%{opacity:.4}}
@keyframes cw-shimmer{to{background-position:-220% 0}}
@keyframes cw-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes cw-pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.cw-rise{animation:cw-rise var(--dur-4) var(--ease-out) both}
.cw-stagger>*{animation:cw-rise var(--dur-4) var(--ease-out) both}
.cw-stagger>*:nth-child(2){animation-delay:.05s}.cw-stagger>*:nth-child(3){animation-delay:.1s}
.cw-stagger>*:nth-child(4){animation-delay:.15s}.cw-stagger>*:nth-child(5){animation-delay:.2s}
.cw-stagger>*:nth-child(6){animation-delay:.25s}

/* ── responsive foundation ────────────────────────────────────────────────── */
@media(max-width:1000px){
  .cw-grid.cols-4{grid-template-columns:repeat(2,1fr)}
  .cw-grid.cols-3{grid-template-columns:repeat(2,1fr)}
  .cw-span-2{grid-column:span 1}
}
@media(max-width:640px){
  .cw-grid.cols-2,.cw-grid.cols-3,.cw-grid.cols-4{grid-template-columns:1fr}
  .cw-section{flex-direction:column;align-items:flex-start;gap:var(--s3)}
  .cw-card,.cw-kpi{padding:var(--s4)}
}
/* shared sparkline gradient def is emitted once per page via <svg><defs> in markup */

/* ─── THE SHARED HEADER, IN THE SHARED STYLESHEET ───────────────────────────
   🚨 THIS IS WHY auto-mirror SOMETIMES RENDERED AS RAW HTML — a giant logo, the
   nav as plain inline text, no chrome at all.

   `.nav-brand` / `.nav-pills` / `.npill` markup is on TWELVE pages, but the CSS
   for it was pasted into NINE of their inline <style> blocks and was never in
   cavewatch.css. auto-mirror.html and mammoths.html used the markup and never
   defined the rules, so their header had no styling to find: an <img> with no
   width renders at its natural size, and nav links with no rules are just text.

   It looked intermittent because it is a RACE, not a random failure. The page's
   own inline <style> arrives with the document, so the page body looks roughly
   right while the header does not — and once fonts and the rest settle it can
   look fine on a reload from cache. Nothing about it was ever random.

   Promoted here so there is ONE copy. The nine pages that define it inline are
   harmless duplicates that now simply override with identical values; they can
   be stripped later without touching layout. */
.nav-brand{display:flex;align-items:center;gap:11px;cursor:pointer;flex:none}
.nav-brand img{width:38px;height:38px;border-radius:10px;filter:drop-shadow(0 2px 8px rgba(249,115,22,.5))}
.nav-brand .wm{font-family:var(--brand);font-weight:400;font-size:23px;line-height:1;letter-spacing:.3px;
  background:linear-gradient(180deg,var(--bone),var(--gold-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.nav-brand .wm b{font-weight:400;-webkit-text-fill-color:transparent;background:linear-gradient(180deg,var(--ember-soft),var(--ember));-webkit-background-clip:text;background-clip:text}
.nav-pills{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}
.nav-pills::-webkit-scrollbar{display:none}
.npill{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
  padding:8px 13px;border-radius:999px;white-space:nowrap;cursor:pointer;transition:.16s;border:1px solid transparent}
.npill:hover{color:var(--bone);background:rgba(255,255,255,.05)}
.npill.active{color:var(--void);background:linear-gradient(180deg,var(--gold-2),var(--gold));border-color:transparent;font-weight:600;box-shadow:0 4px 14px rgba(251,191,36,.3)}
.nav-id{display:flex;align-items:center;gap:9px;flex:none}
.geart{width:36px;height:36px;border-radius:50%;border:1px solid var(--gline);background:rgba(255,255,255,.03);display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.16s}
.geart:hover{color:var(--bone);background:rgba(255,255,255,.07)}


/* ═══ NATIVE FORM CONTROLS ═══════════════════════════════════════════════════
   Every <select>, number spinner, date picker, checkbox and scrollbar in the
   app was rendering as an OS widget — a white dropdown with blue highlight on
   Windows, grey spinner arrows, a system checkbox — dropped into a black cave
   interface. They are the one part of the UI the browser draws for you, and
   they are the one part nobody had styled.

   THIS BELONGS IN THE SHARED SHEET, NOT PER PAGE. Number inputs alone are
   generated by EIGHT JavaScript modules (swap, trade, transfer, mirrors,
   automirror, freshtracks, stampede-auto, ambush) and appear on seven HTML
   pages. Styling them page by page would mean the trade panel looked right on
   one page and native on the next, which is exactly the trap `.nav-brand` fell
   into.

   Everything below is scoped to inputs INSIDE the app shell, so a third-party
   embed (the TradingView chart iframe) is untouched. */

/* ── SELECT ────────────────────────────────────────────────────────────────
   appearance:none removes the OS control entirely, which also removes its
   arrow — so one is drawn back as an inline SVG background. It is encoded
   rather than linked so it cannot 404 and leave a dropdown with no affordance
   that it opens. */
select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  font-family:var(--sans,inherit);font-size:12.5px;color:var(--bone,#F5E7D0);
  background-color:rgba(255,255,255,.03);
  border:1px solid var(--gline,rgba(255,255,255,.09));border-radius:10px;
  padding:9px 32px 9px 11px;cursor:pointer;transition:border-color .16s,box-shadow .16s;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a8f82' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;background-size:13px;
}
select:hover{border-color:rgba(255,255,255,.18)}
select:focus{outline:none;border-color:var(--gold,#ffc857);
  box-shadow:0 0 0 3px rgba(255,200,87,.14)}
select:disabled{opacity:.45;cursor:not-allowed}
/* The OPTION list is drawn by the OS and can only be given colours — not
   radius, padding or fonts. Setting these two stops a white flash on Windows,
   which is the worst of it. */
select option{background:#0B0A08;color:var(--bone,#F5E7D0)}

/* ── TEXT / NUMBER / DATE INPUTS ───────────────────────────────────────────*/
input[type=text],input[type=number],input[type=search],input[type=email],
input[type=password],input[type=date],input[type=time],input[type=datetime-local],
textarea{
  font-family:var(--sans,inherit);font-size:13px;color:var(--bone,#F5E7D0);
  background:rgba(255,255,255,.03);
  border:1px solid var(--gline,rgba(255,255,255,.09));border-radius:10px;
  padding:9px 11px;transition:border-color .16s,box-shadow .16s;
}
input::placeholder,textarea::placeholder{color:var(--dim,#5F5648)}
input:hover:not(:disabled),textarea:hover:not(:disabled){border-color:rgba(255,255,255,.18)}
input:focus,textarea:focus{outline:none;border-color:var(--gold,#ffc857);
  box-shadow:0 0 0 3px rgba(255,200,87,.14)}
input:disabled,textarea:disabled{opacity:.45;cursor:not-allowed}

/* ── NUMBER SPINNERS ───────────────────────────────────────────────────────
   HIDDEN, not restyled. The stepper arrows cannot be themed in any browser —
   ::-webkit-inner-spin-button accepts almost nothing and Firefox offers no
   hook at all — so any attempt lands somewhere between "native grey" and
   "broken". They are also the wrong control for these fields: nobody nudges a
   take-profit from 100% to 101% one click at a time. The keyboard arrows still
   work for anyone who wants them. */
input[type=number]{-moz-appearance:textfield;appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* The date picker's calendar button is the one OS glyph worth keeping — it is
   the only way to reach the picker — so it is recoloured rather than removed. */
input[type=date]::-webkit-calendar-picker-indicator,
input[type=time]::-webkit-calendar-picker-indicator{
  filter:invert(.72) sepia(.35) saturate(3) hue-rotate(347deg);cursor:pointer;opacity:.75}
input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}

/* ── CHECKBOX ──────────────────────────────────────────────────────────────
   Left alone where a page already builds its own switch: `.sw` toggles hide
   their input and draw a track, and restyling the hidden box would break them.*/
input[type=checkbox]:not(.sw input):not([data-raw]){
  -webkit-appearance:none;appearance:none;
  width:17px;height:17px;flex:none;border-radius:5px;cursor:pointer;
  border:1px solid var(--gline,rgba(255,255,255,.14));background:rgba(255,255,255,.03);
  display:inline-grid;place-content:center;transition:.15s;vertical-align:-3px}
input[type=checkbox]:not(.sw input):not([data-raw]):hover{border-color:rgba(255,255,255,.26)}
input[type=checkbox]:not(.sw input):not([data-raw]):checked{
  background:linear-gradient(180deg,var(--gold-2,#FFCE6B),var(--gold,#ffc857));
  border-color:transparent}
input[type=checkbox]:not(.sw input):not([data-raw]):checked::after{
  content:"";width:9px;height:5px;border:2px solid #1C1712;border-top:0;border-right:0;
  transform:rotate(-45deg) translateY(-1px)}
input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,200,87,.2)}

/* ── SCROLLBARS ────────────────────────────────────────────────────────────*/
*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.16) transparent}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:99px;
  border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.26);background-clip:content-box}

/* Chrome's autofill paints its own yellow. The inset shadow is the only way to
   override it; -webkit-text-fill-color is the only way to keep the text light. */
input:-webkit-autofill,input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--bone,#F5E7D0);
  -webkit-box-shadow:0 0 0 1000px #0B0A08 inset;
  caret-color:var(--bone,#F5E7D0);transition:background-color 9999s ease-out}

::selection{background:rgba(255,200,87,.26);color:#fff}


/* ═══ THE LIVE TICKER CLEARS THE SIDEBAR ═════════════════════════════════════
   The bar is `position:fixed; left:0; right:0`, and the sidebar is a fixed
   70px rail at left:0 with a much higher z-index. So the first item of every
   loop scrolled UNDERNEATH the rail and reappeared halfway across — which is
   why the ticker read as a wall of half-visible text.

   `left:70px` starts it at the rail's edge instead. It is NOT tied to the
   hover-expanded 250px on purpose: the rail expands as an OVERLAY and the page
   content deliberately does not reflow, so moving the ticker on hover would
   make the whole bar jump every time the pointer crossed the rail.

   Lives here rather than in command.html because the same bar is on the hunter
   page, and per-page copies are how `.nav-brand` went wrong. */
.cticker,.ticker{left:70px!important}
@media(max-width:860px){ .cticker,.ticker{left:0!important} }   /* rail hides on narrow */

/* Ticker items that lead somewhere should look like it. */
.cti-go{cursor:pointer;border-radius:8px;padding:3px 8px;margin:0 -2px;
  transition:background .15s,color .15s}
.cti-go:hover{background:rgba(255,255,255,.06)}
.cti-go:hover b{color:var(--gold,#ffc857)}
.cti-go:focus-visible{outline:none;box-shadow:0 0 0 2px rgba(255,200,87,.5)}


/* ── canonical shell, applied to every page's container ──────────────────────
   `body` prefix matches the specificity the per-page rules used to carry, so
   this wins wherever one is left behind. */
body .shell,
body .sr-wrap,
body .mm-shell,
body .cwm-shell,
body .rp-shell,
body .hud,
body .wr-foot,
body .wrap{
  max-width: var(--shell);
  margin-left: auto;
  margin-right: auto;
}


/* ── THE SHARED RIGHT-EDGE TAB RAIL ──────────────────────────────────────────
   #cw-tabrail is CREATED by whichever of opentrades/mirrors/favorites boots
   first and reused by the rest — but its CSS lived only inside the injectors,
   and on hunter-profile the Open Trades injector returns early (the page ships
   its own panel) so the rail's styling depended entirely on mirrors.js running
   cleanly. If it didn't, the rail was an UNSTYLED div at the end of <body>:
   its vertical tabs rendered in document flow — bottom of the page, LEFT side,
   visible only once you scrolled down. The rail's position is layout truth,
   not decoration, so it lives here in the static sheet where it cannot lose a
   race. The injector copies remain as harmless duplicates.

   DRAWER SCRIMS MUST STAY BELOW THIS RAIL. A Round-12 regression had the
   Favourites/Open Trades/Mirrors scrims one z-level ABOVE the rail, so their
   backdrop-filter literally blurred and darkened these handles. The drawers
   themselves remain above the rail; only the page-dimming scrim sits below it. */
.cw-tabrail{position:fixed!important;right:0!important;left:auto!important;top:50%!important;
  transform:translateY(-50%);z-index:2147483000;display:flex;flex-direction:column;
  align-items:flex-end;gap:8px;pointer-events:none;isolation:isolate;filter:none!important;opacity:1!important}
.cw-tabrail>*{pointer-events:auto;filter:none!important;opacity:1!important}

/* ── PHONE SAFE AREAS ────────────────────────────────────────────────────────
   The iPhone home indicator occupies roughly 34px at the bottom of the screen.
   Anything pinned near bottom:24px sits underneath it — reachable only by
   fighting the system gesture. Toasts, the chat launcher and the side tab rail
   are all pinned that way, so each gets the inset added to whatever it already
   had. `@supports` guards it: on a device with no inset, env() resolves to 0
   and nothing moves. */
@supports (padding: env(safe-area-inset-bottom)) {
  @media (max-width: 640px) {
    .toast { bottom: calc(24px + env(safe-area-inset-bottom)); }
    #cwchat-trigger, .cwchat-trigger { bottom: calc(16px + env(safe-area-inset-bottom)); }
    #cw-tabrail { padding-bottom: env(safe-area-inset-bottom); }
  }
}

/* ── PHONE SHELL GUTTERS ─────────────────────────────────────────────────────
   With the nav rail off-canvas below 640px the shell gets the full width, so
   the gutter is what stops text from running into the screen edge — and it has
   to clear the rounded-corner/notch inset on landscape too. */
@media (max-width: 640px) {
  body .shell, body .sr-wrap, body .mm-shell, body .cwm-shell,
  body .rp-shell, body .hud, body .wr-foot, body .wrap {
    max-width: 100%;
    padding-left: max(14px, env(safe-area-inset-left));
    padding-right: max(14px, env(safe-area-inset-right));
  }
}


/* ── THE OLD HEADER FLASH ────────────────────────────────────────────────────
   `nav.nav{display:none}` lived ONLY inside cavewatch-app.js, injected at
   runtime. So on every navigation the browser painted the old top nav first and
   then it vanished when the chrome script ran — a visible flash of a header
   that has not been part of the design for weeks, worst on the pages with the
   most inline CSS to parse first.

   It belongs in the static sheet, which is in <head> and applies before the
   first paint. The JS rule stays as a harmless duplicate so the chrome still
   works on any page that somehow loads without this file. */
nav.nav { display: none !important; }

/* ── SECTION RHYTHM ──────────────────────────────────────────────────────────
   Top-level cards were separated by 16px, which reads as "these two things are
   one thing" — the Vein band in particular looked welded to the panel beneath
   it. One token so the spacing is the same on every page, and scales a little
   with the viewport now that the shell goes to 2040px. */
:root { --section-gap: clamp(20px, 1.6vw, 34px); }

body .vein-cta { margin-block: var(--section-gap) !important; }
body .cmd-body { margin-top: var(--section-gap); }
body .cstats   { margin-block: var(--section-gap); }
body .cwst-c + .cwst-c,
body .cwf-c   + .cwf-c   { margin-top: var(--section-gap); }


/* ═══ 7 Aug 2026 — STRATEGY CARD UNIFICATION ═════════════════════════════════
   One visual language for strategy cards on all three engines. auto-mirror's
   cwm- card system is the reference; Fresh Tracks (.cwf-strat) and Stampedes
   (.cwst-strat) are mapped onto the same look here rather than rebuilt, so
   their behaviour code is untouched. Shared file on purpose: per-page copies
   of shared chrome is the bug class item 6 documented. */
.cwf-strat,.cwst-s{position:relative;display:flex;align-items:center;gap:12px;
  padding:13px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.09);
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.015));
  transition:border-color .15s,transform .15s,box-shadow .15s;cursor:pointer}
.cwf-strat:hover,.cwst-s:hover{border-color:rgba(255,193,84,.35);transform:translateY(-1px);
  box-shadow:0 8px 26px rgba(0,0,0,.35)}
.cwf-strat.live,.cwst-s.live{border-color:rgba(120,220,150,.4);
  background:linear-gradient(180deg,rgba(40,90,60,.18),rgba(20,45,30,.12))}
.cwf-strat.live::before,.cwst-s.live::before{content:'';position:absolute;left:0;top:12%;
  bottom:12%;width:3px;border-radius:3px;background:#4fbf74}
.cwf-strat-n,.cwst-sn{font-weight:700;letter-spacing:.01em}
.cwf-tag,.cwst-tag{font:600 10.5px/1 var(--sans,system-ui);padding:4px 8px;border-radius:999px;
  border:1px solid rgba(255,255,255,.12);opacity:.8}
.cwf-strat .cwf-b,.cwst-s button{border-radius:9px}

/* ============================================================================
   PHONE BAND 360-440 · site layer · v20260809-mobile-1
   The per-page verification the 31 Jul chrome pass left open. Target devices:
   Galaxy S8 (360) -> S25 (384-412) -> iPhone 11 (414) -> 15/16 (393) ->
   Pro Max (430-440). The chrome (off-canvas rail, burger, safe areas) already
   ships from cavewatch-app.js; this layer fixes what lives INSIDE the pages.
   Every selector below was enumerated from the actual pages, not guessed.
   ========================================================================== */
@media (max-width:640px){
  /* Data tables scroll sideways instead of crushing their columns. display:
     block on a table is the standard mobile scroll treatment and changes
     nothing above this width. */
  .shell table,.sr-wrap table,.mm-shell table,.cwm-shell table,.rp-shell table{
    display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  /* Media can never set the page width. */
  .shell img,.shell video,.shell iframe,.shell canvas{max-width:100%;height:auto}
  /* The dormant report overlay's five-across summary (command.html). */
  .rp-sum{grid-template-columns:repeat(2,1fr)!important}
}
@media (max-width:440px){
  /* The shared three-across stat chips (7 pages: ch-stats) and the hunter
     conditions grid: at 360px three fixed columns is ~104px each, which cuts
     labels. auto-fit lets them stay three-up when the values are short and
     wrap 2+1 only when they genuinely need the room. */
  .ch-stats,.cond-grid{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))!important}
  /* Mammoths stat trio, same treatment. */
  .mm-stats{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))!important}
}

/* ===== vein-fx.css ===== */
/* ============================================================================
   THE VEIN — celebration layer styles
   Scoped to vfx-* so nothing here can reach the rest of the page.
   ========================================================================== */

.vfx-root{position:fixed;inset:0;z-index:9000;pointer-events:none}

/* ------------------------------------------------------------- coin storm */
.vfx-coins{position:fixed;inset:0;pointer-events:none;opacity:1;transition:opacity .4s ease}
.vfx-coins.out{opacity:0}

/* ----------------------------------------------------------------- screen */
.vfx-jack{
  position:fixed;inset:0;display:grid;place-items:center;
  pointer-events:auto;opacity:0;transition:opacity .32s ease;
  background:radial-gradient(120% 90% at 50% 45%,rgba(12,8,4,.62),rgba(4,3,2,.93));
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
}
.vfx-jack.in{opacity:1}
.vfx-jack.out{opacity:0}

.vfx-jack-glow{
  position:absolute;width:min(120vmin,1100px);aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,rgba(255,199,89,.30),rgba(255,199,89,.06) 42%,transparent 68%);
  animation:vfx-breathe 3.4s ease-in-out infinite;
}
.vfx-tone-ice .vfx-jack-glow{background:radial-gradient(circle,rgba(120,200,255,.28),rgba(120,200,255,.06) 42%,transparent 68%)}
.vfx-tone-red .vfx-jack-glow{background:radial-gradient(circle,rgba(255,110,70,.26),rgba(255,110,70,.05) 42%,transparent 68%)}

@keyframes vfx-breathe{
  0%,100%{transform:scale(.94);opacity:.75}
  50%{transform:scale(1.07);opacity:1}
}

/* The card lands from small, overshoots slightly, then settles. The overshoot
   is what makes it read as an event rather than a dialog appearing. */
.vfx-jack-card{
  position:relative;text-align:center;padding:clamp(26px,4vw,44px) clamp(24px,5vw,56px);
  border-radius:22px;max-width:min(92vw,560px);
  background:linear-gradient(180deg,rgba(28,22,14,.96),rgba(14,11,8,.97));
  border:1px solid rgba(255,205,110,.34);
  box-shadow:0 40px 120px rgba(0,0,0,.66),0 0 0 1px rgba(255,255,255,.04) inset,
             0 0 90px rgba(255,190,80,.20);
  transform:scale(.62) translateY(18px);opacity:0;
  transition:transform .52s cubic-bezier(.16,1.2,.3,1),opacity .34s ease;
}
.vfx-tone-ice .vfx-jack-card{border-color:rgba(130,205,255,.34);box-shadow:0 40px 120px rgba(0,0,0,.66),0 0 90px rgba(90,180,255,.18)}
.vfx-tone-red .vfx-jack-card{border-color:rgba(255,130,90,.34);box-shadow:0 40px 120px rgba(0,0,0,.66),0 0 90px rgba(255,110,60,.18)}
.vfx-jack.in .vfx-jack-card{transform:scale(1) translateY(0);opacity:1}
.vfx-jack.out .vfx-jack-card{transform:scale(.9);opacity:0}

.vfx-eyebrow{
  display:block;font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:rgba(255,214,140,.72);margin-bottom:10px;
}
.vfx-tone-ice .vfx-eyebrow{color:rgba(160,215,255,.75)}
.vfx-tone-red .vfx-eyebrow{color:rgba(255,160,125,.78)}

.vfx-title{
  margin:0 0 6px;font-size:clamp(24px,5.2vw,42px);line-height:1.04;letter-spacing:.02em;
  background:linear-gradient(180deg,#fff6de,#ffcc6a 58%,#dd9b31);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:0 0 42px rgba(255,190,80,.30);
}
.vfx-tone-ice .vfx-title{background:linear-gradient(180deg,#f0faff,#8fd0ff 58%,#3f9ada);-webkit-background-clip:text;background-clip:text;color:transparent}
.vfx-tone-red .vfx-title{background:linear-gradient(180deg,#fff0ea,#ff9d76 58%,#d4512f);-webkit-background-clip:text;background-clip:text;color:transparent}

.vfx-where{
  font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(255,255,255,.5);margin-bottom:14px;
}

.vfx-amount{
  display:flex;align-items:baseline;justify-content:center;gap:10px;
  margin:16px 0 4px;
}
.vfx-amount b{
  font-size:clamp(30px,7.4vw,58px);font-variant-numeric:tabular-nums;
  color:#ffe6a8;letter-spacing:-.01em;line-height:1;
  text-shadow:0 0 34px rgba(255,196,86,.45);
}
.vfx-tone-ice .vfx-amount b{color:#cfe9ff;text-shadow:0 0 34px rgba(110,190,255,.42)}
.vfx-tone-red .vfx-amount b{color:#ffd0be;text-shadow:0 0 34px rgba(255,120,70,.40)}
.vfx-amount span{font-size:15px;letter-spacing:.12em;color:rgba(255,255,255,.56)}

/* A single pulse once the number stops, so the eye is told the value is final. */
.vfx-jack.landed .vfx-amount b{animation:vfx-pop .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes vfx-pop{0%{transform:scale(1)}45%{transform:scale(1.11)}100%{transform:scale(1)}}

.vfx-note{
  margin:12px auto 0;max-width:42ch;font-size:13px;line-height:1.55;
  color:rgba(255,255,255,.62);
}
.vfx-note b{color:rgba(255,255,255,.9)}

.vfx-btn{
  margin-top:22px;padding:12px 30px;border-radius:12px;cursor:pointer;
  font-size:14px;letter-spacing:.06em;text-transform:uppercase;
  color:#1b1408;border:0;
  background:linear-gradient(180deg,#ffd77e,#e2a53c);
  box-shadow:0 12px 30px rgba(226,165,60,.32);
  transition:transform .16s ease,box-shadow .16s ease;
}
.vfx-tone-ice .vfx-btn{color:#08192a;background:linear-gradient(180deg,#a9dcff,#4a9fdb);box-shadow:0 12px 30px rgba(74,159,219,.30)}
.vfx-tone-red .vfx-btn{color:#2a0f07;background:linear-gradient(180deg,#ffb094,#d8613c);box-shadow:0 12px 30px rgba(216,97,60,.30)}
.vfx-btn:hover{transform:translateY(-1px);box-shadow:0 16px 36px rgba(226,165,60,.42)}
.vfx-btn:active{transform:translateY(0)}
.vfx-btn:focus-visible{outline:2px solid rgba(255,255,255,.8);outline-offset:3px}

/* ------------------------------------------------------------ burn log */
.vfx-log{
  margin-top:20px;padding-top:14px;text-align:left;
  border-top:1px solid rgba(255,255,255,.09);
}
.vfx-log-head{
  display:block;font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(255,255,255,.4);margin-bottom:8px;
}
.vfx-log-row{
  display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:baseline;
  padding:5px 0;font-size:12px;border-bottom:1px solid rgba(255,255,255,.05);
}
.vfx-log-row:last-child{border-bottom:0}
.vfx-log-amt{color:rgba(255,190,160,.92);font-variant-numeric:tabular-nums}
.vfx-log-w{color:rgba(255,255,255,.55);font-variant-numeric:tabular-nums}
.vfx-log-at{color:rgba(255,255,255,.34);font-size:11px}
.vfx-log-empty{font-size:12px;color:rgba(255,255,255,.38);padding:6px 0}

/* --------------------------------------------------------- reduced motion */
@media (prefers-reduced-motion: reduce){
  .vfx-jack-glow{animation:none}
  .vfx-jack-card{transition:opacity .2s ease;transform:none}
  .vfx-jack.in .vfx-jack-card{transform:none}
  .vfx-jack-card.landed .vfx-amount b,.vfx-jack.landed .vfx-amount b{animation:none}
}


/* ============================================================================
   FAUCET TAB
   ========================================================================== */
.vx-fx-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:900px){.vx-fx-grid{grid-template-columns:1fr}}

/* ---- claim card ---- */
.vx-fx-claim{position:relative;overflow:hidden;padding:24px 26px 22px}
.vx-fx-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.vx-fx-head img{width:44px;height:44px;object-fit:contain;filter:drop-shadow(0 4px 14px rgba(255,190,80,.32))}
.vx-fx-head h3{margin:2px 0 0;font-size:30px;line-height:1;color:#ffe6a8;font-variant-numeric:tabular-nums}
.vx-fx-head small{display:block;margin-top:3px;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:rgba(255,255,255,.42)}

/* A slow diagonal pass, once every few seconds. Enough to read as alive without
   competing with the number it sits behind. */
.vx-fx-sheen{position:absolute;inset:-40% -10%;pointer-events:none;
  background:linear-gradient(115deg,transparent 42%,rgba(255,215,140,.09) 50%,transparent 58%);
  transform:translateX(-60%);animation:vx-fx-sweep 7s ease-in-out infinite}
@keyframes vx-fx-sweep{0%,72%{transform:translateX(-60%)}100%{transform:translateX(60%)}}

.vx-fx-addr{margin-bottom:12px}
.vx-fx-addr input{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:13px;letter-spacing:.01em}

.vx-fx-go{position:relative;overflow:hidden;width:100%}
.vx-fx-go>span{position:relative;z-index:1}
.vx-fx-go:not(:disabled)::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 40%,rgba(255,255,255,.34) 50%,transparent 60%);
  transform:translateX(-100%);animation:vx-fx-btn 2.8s ease-in-out infinite}
@keyframes vx-fx-btn{0%,55%{transform:translateX(-100%)}100%{transform:translateX(100%)}}

.vx-fx-note{margin:10px 0 0;min-height:20px}

.vx-fx-meta{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:18px;padding-top:15px;
  border-top:1px solid rgba(255,255,255,.07)}
.vx-fx-meta span{display:inline-flex;align-items:baseline;gap:7px;font-size:12px;
  color:rgba(255,255,255,.46)}
.vx-fx-meta i{width:4px;height:4px;border-radius:50%;background:rgba(255,200,110,.6);
  transform:translateY(-2px)}
.vx-fx-meta b{color:rgba(255,255,255,.88);font-variant-numeric:tabular-nums}
.vx-fx-meta em{font-style:normal;color:rgba(255,255,255,.34);font-size:11px}

/* ---- network card ---- */
.vx-fx-net{padding:22px 24px}
.vx-fx-rows{margin:14px 0 16px}
.vx-fx-row{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:10px;
  align-items:center;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.vx-fx-row:last-child{border-bottom:0}
.vx-fx-row small{font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,.38)}
.vx-fx-row code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;
  color:rgba(255,255,255,.78);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vx-fx-cp{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);
  color:rgba(255,255,255,.62);border-radius:8px;padding:5px 11px;font-size:11px;
  letter-spacing:.06em;cursor:pointer;transition:all .16s ease}
.vx-fx-cp:hover{border-color:rgba(255,205,110,.45);color:rgba(255,225,170,.95);
  background:rgba(255,200,110,.09)}
.vx-fx-cp.done{border-color:rgba(120,220,150,.5);color:#9fe6b6;background:rgba(90,200,130,.12)}
.vx-fx-cp-off{cursor:default;opacity:.4}
.vx-fx-cp-off:hover{border-color:rgba(255,255,255,.14);color:rgba(255,255,255,.62);
  background:rgba(255,255,255,.04)}

.vx-fx-acts{display:flex;flex-wrap:wrap;gap:8px}
.vx-fx-warn{margin:16px 0 0;font-size:12px;line-height:1.6;color:rgba(255,190,150,.62);
  padding-left:12px;border-left:2px solid rgba(255,150,90,.34)}

@media (prefers-reduced-motion: reduce){
  .vx-fx-sheen,.vx-fx-go::after{animation:none}
}

/* VEIN-PATCH-CSS:START ======================================================
   Appended by patch-vein-guide.py. The whole block is replaced on each run, so
   editing it here is safe and re-running never doubles it up.
   ========================================================================= */

/* ---- guide: a darker ground than the board -------------------------------
   The guide is read rather than watched, so the warm cast that suits the board
   becomes tiring over a long page. */
.vx-guide .vx-glass{background:linear-gradient(158deg,#141210,#0a0908)}
.vx-guide .vx-gsec-gold{background:linear-gradient(158deg,#17130f,#090807);
  border-color:rgba(255,200,87,.18)}
.vx-guide .vx-gamepillar{background:linear-gradient(158deg,#151311,#0a0908)}
.vx-guide .vx-faq details{background:linear-gradient(158deg,#131110,#0a0908)}

/* Measure. Long lines are the main reason a page of prose reads as heavy. */
.vx-guide .vx-ghero p{max-width:68ch}
.vx-guide .vx-gsechead p{max-width:62ch}
.vx-guide .vx-note{max-width:70ch;line-height:1.66;margin-top:14px}
.vx-guide .vx-note + .vx-note{margin-top:10px}
.vx-guide .vx-gcol p{max-width:56ch}

/* Rhythm. */
.vx-guide .vx-gsec{padding:26px 28px;margin-bottom:20px}
.vx-guide .vx-gsechead{margin-bottom:22px}
.vx-guide .vx-gcols{gap:26px}
.vx-guide .vx-gcol h5{margin-bottom:12px}
.vx-guide .vx-glist li{line-height:1.6}
.vx-guide .vx-pagehead{position:relative;z-index:1}
.vx-guide .vx-ghero{margin-bottom:22px}

/* Columns should end level with each other rather than trailing off. */
.vx-guide .vx-gcol{display:flex;flex-direction:column}
.vx-guide .vx-gcol > *:last-child{margin-bottom:0}

/* ---- a card inside a card ------------------------------------------------
   Sections used to end on a loose paragraph after two neat columns, which read
   as an afterthought rather than the point. */
.vx-inset{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;
  align-items:center;margin-top:20px;padding:16px 18px;border-radius:var(--rad-sm);
  border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.30)}
.vx-inset > img{width:38px;height:38px;object-fit:contain;
  filter:drop-shadow(0 5px 14px rgba(0,0,0,.55))}
.vx-inset > div b{display:block;font-family:var(--display);font-weight:700;
  font-size:14px;color:var(--ink);margin-bottom:4px}
.vx-inset > div p{margin:0;font-size:12.5px;line-height:1.6;color:var(--muted);max-width:74ch}
.vx-inset > strong{font-family:var(--display);font-weight:800;font-size:26px;
  color:var(--gold);letter-spacing:-.01em;line-height:1;white-space:nowrap}
.vx-inset-gold{border-color:rgba(255,200,87,.24);background:rgba(255,190,80,.06)}
@media (max-width:720px){
  .vx-inset{grid-template-columns:auto minmax(0,1fr);row-gap:10px}
  .vx-inset > strong{grid-column:2;font-size:22px}
}

.vx-gsec .vx-sinks{margin:0 0 22px}
.vx-gsec .vx-sink{background:rgba(0,0,0,.28)}

/* ---- THE USD FLIP -------------------------------------------------------
   Two rules share one pseudo-element. The tooltip at the top of the stylesheet
   owns `[data-usd]:after` and paints a bordered chip ABOVE the figure, centred
   with `transform:translateX(-50%)`. The value swap reuses the same
   pseudo-element with `inset:0` to sit exactly on top of the figure instead.

   `inset` overrides the tooltip's left/bottom, but nothing overrides its
   TRANSFORM, so the swapped value was being dragged half its own width to the
   left, and the chip's padding, border and shadow came with it. That is the
   drift, and it applied to every hoverable figure on the page.

   Everything the tooltip contributes is unset here, and the replacement is
   centred inside a host box that already hugs its own text, so the two sit
   concentric. */
[data-usd][data-usd-val]::after,
[data-usd][data-usd-val]:hover::after,
[data-usd][data-usd-val]:focus-visible::after{
  transform:none;
  inset:0;
  display:flex;align-items:center;justify-content:center;text-align:center;
  padding:0;border:0;border-radius:0;background:none;box-shadow:none;
  font-family:inherit;font-size:inherit;font-weight:inherit;
  letter-spacing:inherit;line-height:inherit;white-space:nowrap;
}

/* ---- network banner ------------------------------------------------------
   The mark sat high in its tile because the bar aligned its children to the
   top of a two-line block rather than to its centre. */
.vx-netbar{align-items:center}
.vx-neticon{display:grid;place-items:center;overflow:hidden}
.vx-neticon img{width:24px;height:24px;object-fit:contain;display:block;margin:0}

/* ---- workshop stat marks -------------------------------------------------
   These cards are flex columns, so an unstyled image becomes a full-width
   illustration. The mark belongs out of the text flow entirely. */
.vx-statmark{position:relative;overflow:hidden}
.vx-statmark > img{position:absolute;top:14px;right:14px;
  width:28px;height:28px;min-width:0;max-width:28px;object-fit:contain;
  opacity:.7;filter:drop-shadow(0 4px 12px rgba(0,0,0,.55));pointer-events:none}
.vx-statmark > small,.vx-statmark > b,.vx-statmark > span{padding-right:34px}

/* VEIN-PATCH-CSS:END ===================================================== */

/* VEIN-LUCKY-CSS:START ======================================================
   Appended by patch-vein-lucky-ui.py. Replaced whole on each run.
   ========================================================================= */

/* ---- the stat chips ------------------------------------------------------
   They sat low against the floor of the plate and read as captions. Lifted onto
   the artwork and enlarged so they scan as a row of readings, like the timer. */
.vx-lstats{position:absolute;top:18px;left:50%;transform:translateX(-50%);
  display:flex;gap:10px;flex-wrap:wrap;justify-content:center;z-index:6}
.vx-lstat{display:inline-flex;align-items:center;gap:10px;
  padding:10px 16px;border-radius:14px;
  border:1px solid rgba(255,255,255,.10);background:rgba(8,7,6,.82);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  box-shadow:0 10px 30px rgba(0,0,0,.5)}
.vx-lstat img{width:26px;height:26px;object-fit:contain}
.vx-lstat small{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim);display:block}
.vx-lstat b{font-family:var(--display);font-weight:800;font-size:19px;
  line-height:1.15;color:var(--ink);display:block}
@media (max-width:900px){
  .vx-lstats{position:static;transform:none;margin-bottom:12px}
  .vx-lstat b{font-size:16px}
}

/* ---- pick slots: a stake per tunnel -------------------------------------- */
.vx-hslots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.vx-slot{padding:10px 12px;border-radius:12px;border:1px solid var(--gline-2);
  background:rgba(0,0,0,.30);min-width:0}
.vx-slot b{display:block;font-family:var(--display);font-weight:700;font-size:12.5px;
  color:var(--gold);margin-bottom:6px;white-space:nowrap}
.vx-slot.empty{opacity:.42}
.vx-slot.empty b{color:var(--faint)}
.vx-slot.empty span{font-size:11px;color:var(--faint)}
.vx-slot-amt{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:8px;
  border:1px solid rgba(255,255,255,.10);background:rgba(0,0,0,.42)}
.vx-slot-amt input{flex:1;min-width:0;width:100%;appearance:none;border:0;background:none;
  color:var(--ink);font-family:var(--display);font-weight:700;font-size:13px;padding:0}
.vx-slot-amt input:focus{outline:none}
.vx-slot-amt input::-webkit-outer-spin-button,
.vx-slot-amt input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.vx-slot-amt em{font-style:normal;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.1em;color:var(--dim)}
.vx-slot button[data-rm]{margin-top:7px;width:100%;padding:5px 0;border-radius:7px;
  border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.03);
  color:var(--faint);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  cursor:pointer;transition:all .16s ease}
.vx-slot button[data-rm]:hover{border-color:rgba(255,120,90,.42);color:#ffb59c;
  background:rgba(255,110,70,.10)}
@media (max-width:900px){.vx-hslots{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---- round history ------------------------------------------------------- */
#vx-hist-rows{display:flex;flex-direction:column;gap:7px}
.vx-hrow{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;
  align-items:center;padding:10px 12px;border-radius:11px;
  border:1px solid rgba(255,255,255,.06);background:rgba(0,0,0,.26);
  transition:border-color .16s ease,background .16s ease}
.vx-hrow:hover{border-color:rgba(255,205,110,.24);background:rgba(255,190,80,.05)}
.vx-hrow-t{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;
  font-family:var(--display);font-weight:800;font-size:15px;
  color:var(--gold);border:1px solid rgba(255,200,87,.26);background:rgba(255,190,80,.08)}
.vx-hrow-m b{display:block;font-family:var(--display);font-weight:700;font-size:13px;color:var(--ink)}
.vx-hrow-m small{display:block;margin-top:2px;font-size:11px;color:var(--faint)}
.vx-hrow-a{font-family:var(--display);font-weight:700;font-size:14px;color:var(--ink);
  white-space:nowrap}
.vx-hrow-a em{font-style:normal;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.08em;color:var(--dim)}
.vx-hrow.roll .vx-hrow-t{color:var(--faint);border-color:rgba(255,255,255,.10);
  background:rgba(255,255,255,.03)}
.vx-hrow.jack{border-color:rgba(255,200,87,.34);background:rgba(255,190,80,.07)}
.vx-hrow.jack .vx-hrow-a{color:var(--gold)}

/* VEIN-LUCKY-CSS:END ====================================================== */

/* VEIN-HUNT-CSS:START ======================================================
   Appended by patch-vein-hunt-polish.py. Replaced whole on each run.
   ========================================================================= */

/* ---- board clock ---------------------------------------------------------
   The two corner readouts are the only figures a player watches while a round
   runs, and they were sized like captions. Up a step, not a leap. */
.vx-hud-clock{padding:14px 22px 14px 15px;gap:15px}
.vx-hud-clock .vx-dial{width:76px;height:76px}
.vx-hud-clock .vx-dial-core strong{font-size:17px}
.vx-hud-clock .vx-clocktxt b,.vx-hud-clock b{font-size:17px}
.vx-hud-clock small{font-size:10.5px}

/* ---- motherlode readout -------------------------------------------------- */
.vx-hud-motherlode{padding:14px 18px}
.vx-hud-motherlode > img{width:52px;height:52px}
.vx-mlcopy > small{font-size:10.5px}
.vx-mlcopy > small b{font-size:13px}
.vx-mldraws em b{font-size:16px}
.vx-mldraws em small{font-size:10px}

/* ---- where the artwork ends ----------------------------------------------
   The map is a bitmap inside a rounded card, so its bottom edge met the card
   background as a hard horizontal line across the full width. The vignette
   covered the corners but not that seam. A short fade over the last of the
   plate dissolves it without touching the art itself. */
.vx-vign{background:
  radial-gradient(120% 90% at 50% 40%,transparent 52%,rgba(8,7,6,.66) 100%),
  linear-gradient(to bottom,transparent 78%,rgba(8,7,6,.55) 92%,rgba(8,7,6,.92) 100%)}

/* VEIN-HUNT-CSS:END ======================================================= */

/* VEIN-LUCKY-FIX:START =====================================================
   Appended by patch-vein-lucky-fix.py. Replaced whole on each run, and it must
   sit AFTER the lucky block it corrects.
   ========================================================================= */

/* The chips were lifted into a centred row across the top, which took them off
   the left and right edges where they had been reading fine. Put back. */
.vx-lstats{position:static;transform:none;display:flex;gap:10px;flex-wrap:wrap;
  justify-content:space-between;align-items:center}

/* Per-tunnel pot chips: five zeroes along the floor, saying nothing the round
   pot above does not already say. */
.vx-tpot{display:none!important}

/* ---- pick slots ----------------------------------------------------------
   Five fixed columns squeezed each field to about thirty pixels, so the stake
   was there but unreadable. They wrap now and hold a real minimum. */
.vx-hslots{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:8px}
.vx-slot-amt{display:flex;align-items:center;gap:8px;padding:6px 10px}
.vx-slot-amt input{flex:1 1 auto;min-width:52px;font-size:14px;text-align:left}
.vx-slot-amt em{flex:none}
.vx-slot.empty{display:none}
@media (max-width:900px){
  .vx-hslots{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
}

/* VEIN-LUCKY-FIX:END ====================================================== */

/* VEIN-TWEAK-CSS:START =====================================================
   Appended by patch-vein-tweak.py. Replaced whole on each run.
   ========================================================================= */

/* The pool card is a reading, not a headline. A step down so the board carries
   more of the frame. */
.vx-hud-pool{padding:11px 15px 11px;min-width:190px}
.vx-hud-pool .vx-hudbig{font-size:22px}
.vx-hud-pool .vx-hudlbl{font-size:8.5px}
.vx-hud-pool .vx-hudsub,.vx-hud-pool .vx-hudnote{font-size:10px}
.vx-hud-pool .vx-hudchips{gap:5px;margin-top:7px}
.vx-hud-pool .vx-hchip{padding:4px 8px;font-size:10px}

/* VEIN-TWEAK-CSS:END ====================================================== */

/* VEIN-ENTRY-CSS:START =====================================================
   Appended by patch-vein-entry-min.py. Replaced whole on each run.
   ========================================================================= */

/* A seven-figure balance ran under the button sharing its chip. */
.vx-lstat-bal{gap:14px}
.vx-lstat-bal b{font-variant-numeric:tabular-nums}
.vx-lstat-bal .vx-btn{flex:none;margin-left:6px}
.vx-lstat{max-width:100%;min-width:0}
.vx-lstat > div,.vx-lstat > em{min-width:0}

/* VEIN-ENTRY-CSS:END ====================================================== */

/* VEIN-HIST-CSS:START ======================================================
   Appended by patch-vein-history.py. Replaced whole on each run.
   ========================================================================= */
.vx-hrow{display:block;padding:11px 13px}
.vx-hrow-top{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;align-items:center}
.vx-hrow-win{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.vx-hrow-win:empty{display:none}
.vx-hwin{display:inline-flex;align-items:baseline;gap:7px;padding:4px 9px;border-radius:8px;
  border:1px solid rgba(255,255,255,.07);background:rgba(0,0,0,.30)}
.vx-hwin b{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--muted)}
.vx-hwin em{font-style:normal;font-family:var(--display);font-weight:700;font-size:12px;color:var(--gold)}
.vx-hwin.me{border-color:rgba(255,200,87,.34);background:rgba(255,190,80,.09)}
.vx-hwin.me b{color:var(--ink)}
.vx-hwin.more{color:var(--faint);font-size:10.5px;align-items:center}
/* VEIN-HIST-CSS:END ======================================================= */

/* VEIN-POKE-CSS:START ======================================================
   Appended by patch-vein-poke.py. Replaced whole on each run.
   ========================================================================= */
.vx-pokebtn{margin-top:8px;white-space:nowrap}
.vx-pokebtn[hidden]{display:none!important}
.vx-hud-clock .vx-pokebtn{margin-top:6px}
/* VEIN-POKE-CSS:END ======================================================= */

/* VEIN-POKEFIX-CSS:START ===================================================
   Appended by patch-vein-poke-fix.py. Replaced whole on each run.
   ========================================================================= */

/* The clock is a dial beside a label stack. A full-size button dropped into
   that stack pushed the round number sideways and outgrew everything near it. */
.vx-hud-clock .vx-pokebtn,
.vx-lclock .vx-pokebtn{
  margin-top:7px;padding:6px 12px;font-size:11px;letter-spacing:.02em;
  border-radius:9px;white-space:nowrap;align-self:flex-start;
  border:1px solid rgba(255,160,60,.38);background:rgba(255,150,50,.10);
  color:#ffcf95;box-shadow:none}
.vx-hud-clock .vx-pokebtn:hover,
.vx-lclock .vx-pokebtn:hover{
  border-color:rgba(255,180,90,.62);background:rgba(255,160,60,.18);
  color:#ffe3c2;transform:none}

/* A round waiting on somebody is worth noticing, but not worth shouting. */
@keyframes vx-pokebreathe{0%,100%{opacity:.82}50%{opacity:1}}
.vx-pokebtn{animation:vx-pokebreathe 2.4s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.vx-pokebtn{animation:none}}

/* VEIN-POKEFIX-CSS:END ==================================================== */

/* VEIN-LODE2-CSS:START =====================================================
   Appended by patch-vein-lode2.py. Replaced whole on each run.
   ========================================================================= */

.vx-lode-foot{display:none!important}

/* The mark is the thing worth looking at on this card, and it was the smallest
   element on it. */
.vx-lode-seal{width:132px;height:132px;margin:6px auto 2px}

/* The bar sat tight under the figure. Given room it reads as a level rather
   than an underline. */
.vx-lode-fill{margin-top:22px;height:9px}
.vx-lode-note{margin-top:16px}

@media (max-width:900px){.vx-lode-seal{width:104px;height:104px}}

/* VEIN-LODE2-CSS:END ====================================================== */

/* VEIN-CHROME-CSS:START ====================================================
   Appended by patch-vein-linkcss.py. Replaced whole on each run.
   ========================================================================= */

/* ---- advance button ------------------------------------------------------
   It was competing with the round number for the same corner. It is a repair
   control, not a call to action. */
.vx-hud-clock .vx-pokebtn,.vx-lclock .vx-pokebtn{
  padding:4px 9px;font-size:10px;letter-spacing:.04em;border-radius:7px;margin-top:5px}

/* ---- the chamber card ----------------------------------------------------
   It read as a spec sheet. The figure a player is actually deciding on is the
   multiplier, so that leads, and the rest supports it. */
.vx-chcard{width:262px;padding:0;overflow:hidden;
  border:1px solid rgba(255,200,87,.22);
  background:linear-gradient(168deg,#1B1510,#0B0A08 62%);
  box-shadow:0 26px 64px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.07)}
.vx-chcard::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,200,87,.75),transparent)}

.vx-chcard header{padding:13px 16px 11px;margin:0;
  background:linear-gradient(180deg,rgba(255,190,80,.09),transparent);
  border-bottom:1px solid rgba(255,255,255,.06)}
.vx-chcard header b{font-size:22px;letter-spacing:-.01em;
  text-shadow:0 0 22px rgba(255,200,87,.35)}

/* The rows sit in their own block so the header can breathe. */
.vx-chcard .vx-ccrow,.vx-chcard>div:not(.vx-ccfoot){padding-left:16px;padding-right:16px}
.vx-chcard dl,.vx-chcard .vx-ccbody{padding:11px 16px 4px;margin:0}

/* The lit strip along the bottom, which is where the click prompt lives. */
.vx-chcard .vx-cchint,.vx-chcard>small:last-child{
  display:block;margin:10px 0 0;padding:10px 16px;
  border-top:1px solid rgba(255,200,87,.16);
  background:linear-gradient(180deg,transparent,rgba(255,190,80,.09));
  color:var(--gold);font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
  text-transform:uppercase}

/* A slow shine across the card each time it opens, so it arrives rather than
   simply existing. */
.vx-chcard::after{content:"";position:absolute;inset:-40% -20%;pointer-events:none;
  background:linear-gradient(116deg,transparent 43%,rgba(255,205,110,.10) 50%,transparent 57%);
  transform:translateX(-60%);animation:vx-ccshine 1.15s cubic-bezier(.2,.7,.2,1) both}
@keyframes vx-ccshine{to{transform:translateX(60%)}}
@media (prefers-reduced-motion:reduce){.vx-chcard::after{display:none}}

/* VEIN-CHROME-CSS:END ===================================================== */



/* VEIN-HOUSE-CSS:START =====================================================
   Appended by patch-vein-houses2.py. Replaced whole on each run.
   ========================================================================= */

/* A chamber is part of the terrain. It is lit or it is not, and it never moves:
   anything that shifts on hover reads as the ground itself sliding. */
.vx-node{overflow:visible}
.vx-house{position:absolute;left:50%;top:calc(100% - 1px);
  width:70px;height:61px;transform:translateX(-50%);
  pointer-events:none;z-index:0}
.vx-house img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;object-position:center top;
  transition:opacity 190ms cubic-bezier(.2,.7,.2,1),
             filter 190ms cubic-bezier(.2,.7,.2,1)}
/* The base stays painted and the lit copy fades in ON TOP of it. Fading the
   base out instead leaves an empty slot for as long as the lit file is missing,
   slow or misnamed, which reads as the chamber vanishing on click. */
.vx-h-off{opacity:1;filter:drop-shadow(0 7px 15px rgba(0,0,0,.55))}
.vx-h-on{opacity:0;filter:drop-shadow(0 7px 24px rgba(255,170,50,.5))}

.vx-node:hover .vx-h-on,
.vx-node:focus-visible .vx-h-on,
.vx-node.sel .vx-h-on{opacity:1}

/* A selected chamber stays lit and reads as chosen rather than merely hovered. */
.vx-node.sel .vx-h-on{filter:drop-shadow(0 7px 28px rgba(255,190,70,.62))}

/* The badge sits in front of the building and clear of its roof, so a number is
   never read against the stonework behind it. */
.vx-node{z-index:4}
.vx-node:hover,.vx-node:focus-visible,.vx-node.sel{z-index:6}
.vx-node .vx-nno{position:relative;z-index:3}
.vx-node .vx-nglow{z-index:2}
.vx-node::after{z-index:2}

@media (max-width:1100px){ .vx-house{width:57px;height:50px} }
@media (max-width:700px){  .vx-house{width:46px;height:40px} }

/* VEIN-HOUSE-CSS:END ====================================================== */

/* VEIN-ANCHOR-CSS:START ====================================================
   Appended by patch-vein-anchor.py. Replaced whole on each run, and it must sit
   after the house block it corrects.
   ========================================================================= */

/* The node no longer moves. Anything a transform is wanted for happens on the
   badge inside it, so the building underneath cannot be dragged along. */
.vx-node,
.vx-node:hover,
.vx-node:focus-visible,
.vx-node.sel,
.vx-node.won{transform:none !important}

/* The number is free to move. It lifts on hover and settles when chosen. */
.vx-node .vx-nno{
  display:inline-block;position:relative;z-index:3;
  transition:transform 190ms cubic-bezier(.2,.7,.2,1)}
.vx-node:hover .vx-nno,
.vx-node:focus-visible .vx-nno{transform:translateY(-5px) scale(1.08)}
.vx-node.sel .vx-nno{transform:translateY(-2px) scale(1.04)}

/* The badge sits clear above the roofline, so the pair reads as a label over a
   building rather than a sticker on one. */
.vx-house{position:absolute;left:50%;top:calc(100% + 3px);
  width:70px;height:61px;transform:translateX(-50%) !important;
  animation:none !important;pointer-events:none;z-index:0;will-change:auto}
.vx-house img{transform:none !important;animation:none !important}

@media (max-width:1100px){ .vx-house{width:57px;height:50px} }
@media (max-width:700px){  .vx-house{width:46px;height:40px} }

/* VEIN-ANCHOR-CSS:END ===================================================== */

/* VEIN-XSPOT-CSS:START =====================================================
   Appended by patch-vein-xspots.py. Replaced whole on each run, and it must sit
   last so it wins over the earlier house blocks.
   ========================================================================= */

/* NOTHING may transform the node. A transform on the parent moves the building
   with it, which is what kept dragging the houses around. */
.vx-node,
.vx-node:hover,
.vx-node:focus-visible,
.vx-node.sel,
.vx-node.won,
.vx-node.hot{transform:none !important;animation:none !important}

/* The house is welded to the ground. No transform beyond its own centring, no
   animation, no transition on anything geometric. */
.vx-house{position:absolute;left:50%;top:calc(100% + 2px);
  width:64px;height:56px;
  transform:translateX(-50%) !important;animation:none !important;
  transition:none !important;pointer-events:none;z-index:0}
.vx-house img{transform:none !important;animation:none !important;
  transition:opacity 190ms cubic-bezier(.2,.7,.2,1),
             filter 190ms cubic-bezier(.2,.7,.2,1) !important}

/* The number is the part that is alive. A slow drift while idle, a clean lift
   while hovered, and it holds still for that moment rather than fighting it. */
@keyframes vx-nnodrift{
  0%,100%{transform:translate(0,0)}
  25%    {transform:translate(.6px,-1.6px)}
  50%    {transform:translate(0,-2.4px)}
  75%    {transform:translate(-.6px,-1.6px)}
}
.vx-node .vx-nno{
  display:inline-block;position:relative;z-index:3;
  animation:vx-nnodrift 5.5s ease-in-out infinite;
  transition:transform 190ms cubic-bezier(.2,.7,.2,1)}
.vx-node:nth-child(3n)   .vx-nno{animation-duration:6.4s;animation-delay:-1.2s}
.vx-node:nth-child(3n+1) .vx-nno{animation-duration:5.9s;animation-delay:-2.6s}
.vx-node:hover .vx-nno,
.vx-node:focus-visible .vx-nno{animation:none;transform:translateY(-6px) scale(1.1)}
.vx-node.sel .vx-nno{animation:none;transform:translateY(-3px) scale(1.05)}

@media (max-width:1100px){ .vx-house{width:53px;height:46px} }
@media (max-width:700px){  .vx-house{width:43px;height:38px} }
@media (prefers-reduced-motion:reduce){ .vx-node .vx-nno{animation:none !important} }

/* VEIN-XSPOT-CSS:END ====================================================== */

/* VEIN-ZONE-CSS:START ======================================================
   Appended by patch-vein-zonefix.py. Replaced whole on each run.
   ========================================================================= */
#vx-l-confirm.poke{animation:none}
.vx-lstats .vx-pokebtn,#vx-l-poke{
  margin-top:0;margin-left:8px;padding:6px 11px;font-size:10.5px;
  border-radius:9px;white-space:nowrap;align-self:center}
/* VEIN-ZONE-CSS:END ======================================================= */



/* VEIN-ONEMAP-CSS:START ====================================================
   Appended by patch-vein-onemap.py. Replaced whole on each run.
   ========================================================================= */

/* The advance control sits under Confirm entry, where a stalled round is
   already being looked at, rather than up among the readings. */
#vx-l-poke{display:block;width:100%;margin:8px 0 0;padding:7px 12px;
  font-size:11px;border-radius:9px;white-space:nowrap;
  border:1px solid rgba(255,160,60,.42);background:rgba(255,150,50,.10);
  color:#ffcf95;box-shadow:none;
  animation:vx-pokebreathe 2.4s ease-in-out infinite}
#vx-l-poke:hover{border-color:rgba(255,185,95,.7);color:#ffe3c2;
  background:rgba(255,160,60,.2)}
#vx-l-poke[hidden]{display:none !important}

/* VEIN-ONEMAP-CSS:END ===================================================== */

/* VEIN-TUNNEL-CSS:START ====================================================
   Appended by patch-vein-tunnels.py. Replaced whole on each run.
   ========================================================================= */

/* While the confirm button is doing the other job it should not look like a
   confirmation. */
#vx-l-confirm.poke{
  background:linear-gradient(150deg,rgba(255,150,50,.16),rgba(255,120,40,.07));
  border-color:rgba(255,160,60,.5);color:#ffcf95;box-shadow:none;
  animation:vx-pokebreathe 2.4s ease-in-out infinite}
#vx-l-confirm.poke:hover{border-color:rgba(255,185,95,.7);color:#ffe3c2;
  background:linear-gradient(150deg,rgba(255,160,60,.24),rgba(255,120,40,.11))}

/* VEIN-TUNNEL-CSS:END ===================================================== */

/* VEIN-HLAYER-CSS:START ====================================================
   Appended by patch-vein-houselayer.py. Replaced whole on each run, and it must
   sit last so it wins over every earlier house block.
   ========================================================================= */

/* Its own layer, under the buttons. Nothing here animates, ever. */
.vx-houses{position:absolute;inset:0;z-index:2;pointer-events:none}
.vx-houses .vx-house{
  position:absolute;width:64px;height:56px;
  margin:26px 0 0 -32px;            /* centred on the chamber, sitting below it */
  transform:none !important;animation:none !important;transition:none !important;
  pointer-events:auto;cursor:pointer}
.vx-houses .vx-house img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;object-position:center top;
  transform:none !important;animation:none !important;
  transition:opacity 190ms cubic-bezier(.2,.7,.2,1),
             filter 190ms cubic-bezier(.2,.7,.2,1)}
.vx-houses .vx-h-off{opacity:1;filter:drop-shadow(0 7px 15px rgba(0,0,0,.55))}
.vx-houses .vx-h-on{opacity:0;filter:drop-shadow(0 7px 24px rgba(255,170,50,.5))}
.vx-houses .vx-house.lit .vx-h-on,
.vx-houses .vx-house.sel .vx-h-on{opacity:1}
.vx-houses .vx-house.sel .vx-h-on{filter:drop-shadow(0 7px 28px rgba(255,190,70,.62))}

/* Anything still inside a button is gone. */
.vx-node .vx-house{display:none !important}

/* The number keeps the motion, and the button keeps none of it. */
.vx-node,.vx-node:hover,.vx-node:focus-visible,.vx-node.sel,
.vx-node.won,.vx-node.hot,.vx-node.hov{transform:none !important;animation:none !important}
.vx-node .vx-nno{display:inline-block;position:relative;z-index:3;
  transition:transform 190ms cubic-bezier(.2,.7,.2,1)}
.vx-node:hover .vx-nno,.vx-node.hov .vx-nno,
.vx-node:focus-visible .vx-nno{transform:translateY(-6px) scale(1.1)}
.vx-node.sel .vx-nno{transform:translateY(-3px) scale(1.05)}

@media (max-width:1100px){ .vx-houses .vx-house{width:53px;height:46px;margin:21px 0 0 -26px} }
@media (max-width:700px){  .vx-houses .vx-house{width:43px;height:38px;margin:17px 0 0 -21px} }

/* VEIN-HLAYER-CSS:END ===================================================== */

/* VEIN-LIFT-CSS:START ======================================================
   Appended by patch-vein-badgelift.py. Replaced whole on each run, and it must
   sit last so it wins over every earlier node and house block.
   ========================================================================= */

/* THE CHAMBERS. Their own layer, no transform beyond placement, no animation,
   no transition on anything geometric. Nothing above them can move them. */
.vx-houses{position:absolute;inset:0;z-index:2;pointer-events:none}
.vx-houses .vx-house{
  position:absolute;width:64px;height:56px;margin:26px 0 0 -32px;
  transform:none !important;animation:none !important;transition:none !important;
  pointer-events:auto;cursor:pointer;will-change:auto}
.vx-houses .vx-house img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;object-position:center top;
  transform:none !important;animation:none !important;
  transition:opacity 190ms cubic-bezier(.2,.7,.2,1),
             filter 190ms cubic-bezier(.2,.7,.2,1) !important}
.vx-houses .vx-h-off{opacity:1;filter:drop-shadow(0 7px 15px rgba(0,0,0,.55))}
.vx-houses .vx-h-on{opacity:0;filter:drop-shadow(0 7px 24px rgba(255,170,50,.5))}
.vx-houses .vx-house.lit .vx-h-on,
.vx-houses .vx-house.sel .vx-h-on{opacity:1}
.vx-houses .vx-house.sel .vx-h-on{filter:drop-shadow(0 7px 28px rgba(255,190,70,.62))}
.vx-node .vx-house{display:none !important}

/* THE BADGE. It moves as one piece again: the card and the number together,
   never the digits on their own. */
.vx-node{transition:transform 190ms cubic-bezier(.2,.7,.2,1),
                     border-color 190ms cubic-bezier(.2,.7,.2,1),
                     box-shadow 190ms cubic-bezier(.2,.7,.2,1)}
.vx-node:hover,
.vx-node.hov,
.vx-node:focus-visible{transform:translateY(-6px) scale(1.07) !important}
.vx-node.sel{transform:translateY(-3px) scale(1.04) !important}

/* Nothing inside the badge moves independently of it. */
.vx-node .vx-nno{
  display:inline-block;position:relative;z-index:3;
  transform:none !important;animation:none !important;transition:none !important}

/* VEIN-LIFT-CSS:END ======================================================= */

/* VEIN-POKESTACK-CSS:START =================================================
   Appended by patch-vein-pokestack.py. Replaced whole on each run.
   ========================================================================= */

/* The row becomes a column only because this control is in it, so nothing else
   in the dock changes shape when the round is healthy and the button is absent.
   Both buttons are then capped at the same width rather than one of them
   stretching across the whole dock. */
:has(> #vx-l-poke){flex-direction:column;align-items:stretch}
:has(> #vx-l-poke) > #vx-l-confirm,
#vx-l-poke{width:100%;max-width:236px}

#vx-l-poke{
  order:99;flex:none;margin:8px 0 0;
  padding:7px 12px;font-size:11px;border-radius:9px;white-space:nowrap;
  border:1px solid rgba(255,160,60,.42);background:rgba(255,150,50,.10);
  color:#ffcf95;box-shadow:none;
  animation:vx-pokebreathe 2.4s ease-in-out infinite}
#vx-l-poke:hover{border-color:rgba(255,185,95,.7);color:#ffe3c2;
  background:rgba(255,160,60,.2)}
#vx-l-poke[hidden]{display:none !important}

/* VEIN-POKESTACK-CSS:END =================================================== */


/* VEIN UI ROUND 3 — chamber artwork uses map-native centre points */
/* HOUSE_POS in the renderer is the centre of each building on the quarry art. */
.vx-houses .vx-house{margin:-28px 0 0 -32px!important}
@media (max-width:1100px){.vx-houses .vx-house{margin:-23px 0 0 -26px!important}}
@media (max-width:700px){.vx-houses .vx-house{margin:-19px 0 0 -21px!important}}

/* ========================================================================== 
   LIVE ROUND THEATRE — contract-driven, shared by Manual + Auto
   ========================================================================== */
.vx-live-stage{
  position:absolute;left:50%;top:18px;z-index:34;pointer-events:none;
  min-width:260px;max-width:min(560px,72%);padding:10px 18px 11px;
  transform:translate(-50%,-10px) scale(.98);opacity:0;
  border:1px solid rgba(255,188,64,.28);border-radius:16px;
  background:rgba(12,10,8,.9);box-shadow:0 16px 44px rgba(0,0,0,.42),inset 0 0 28px rgba(255,166,38,.04);
  backdrop-filter:blur(10px);text-align:center;transition:opacity .24s ease,transform .24s ease;
}
.vx-live-stage.show{opacity:1;transform:translate(-50%,0) scale(1)}
.vx-live-stage b{display:block;color:#ffd06b;font:800 13px/1.1 var(--mono,monospace);letter-spacing:.13em;text-transform:uppercase}
.vx-live-stage span{display:block;margin-top:5px;color:rgba(255,245,225,.7);font:600 11px/1.25 var(--sans,system-ui)}
.vx-live-stage[data-state="drawing"] b,.vx-live-stage[data-state="settling"] b{animation:vx-live-pulse 1.05s ease-in-out infinite alternate}
.vx-live-stage[data-state="winner"]{border-color:rgba(255,194,67,.72);box-shadow:0 18px 58px rgba(255,151,20,.18),0 14px 44px rgba(0,0,0,.5)}
@keyframes vx-live-pulse{from{filter:brightness(.85)}to{filter:brightness(1.35)}}

.vx-settle-coin{
  position:fixed;z-index:1004;pointer-events:none;width:10px;height:10px;margin:-5px;
  border-radius:50%;background:#ffd164;box-shadow:0 0 13px rgba(255,190,68,.92);
  animation:vx-settle-flight 1.15s cubic-bezier(.22,.72,.25,1) forwards;
}
.vx-settle-coin.mini{background:#ffd989;box-shadow:0 0 15px rgba(255,211,118,.9)}
.vx-settle-coin.major{width:12px;height:12px;margin:-6px;background:#ffad34;box-shadow:0 0 18px rgba(255,154,31,.95)}
.vx-settle-coin.burn{background:#ff6f47;box-shadow:0 0 15px rgba(255,76,36,.9)}
@keyframes vx-settle-flight{
  0%{opacity:0;transform:translate3d(0,0,0) scale(.5)}
  15%{opacity:1;transform:translate3d(calc(var(--dx)*.12),calc(var(--dy)*.02 - 24px),0) scale(1.15)}
  72%{opacity:1}
  100%{opacity:0;transform:translate3d(var(--dx),var(--dy),0) scale(.35)}
}
.vx-split-pop{
  position:fixed;z-index:1005;pointer-events:none;transform:translate(-50%,-100%);
  padding:5px 9px;border-radius:999px;background:rgba(10,9,7,.92);border:1px solid rgba(255,194,70,.35);
  color:#ffd36f;font:800 10px/1 var(--mono,monospace);white-space:nowrap;
  animation:vx-split-pop 2.4s ease forwards;
}
.vx-split-pop.mini{color:#ffe2a0}.vx-split-pop.major{color:#ffb23f}
@keyframes vx-split-pop{0%{opacity:0;transform:translate(-50%,-70%) scale(.85)}15%,70%{opacity:1;transform:translate(-50%,-120%) scale(1)}100%{opacity:0;transform:translate(-50%,-155%) scale(.96)}}

/* Winner is unmistakable on the artwork itself, not only on the number badge. */
.vx-houses .vx-house.winner .vx-h-on{opacity:1!important;filter:drop-shadow(0 0 18px rgba(255,200,76,.9)) drop-shadow(0 10px 30px rgba(255,142,24,.68))!important}
.vx-houses .vx-house.loser{opacity:.28;filter:saturate(.45)}

@media (prefers-reduced-motion:reduce){
  .vx-live-stage,.vx-settle-coin,.vx-split-pop{animation:none!important;transition:none!important}
  .vx-settle-coin,.vx-split-pop{display:none!important}
}
.vx-live-stage[data-state="next"]{border-color:rgba(122,220,140,.42);box-shadow:0 16px 46px rgba(50,170,95,.10),0 14px 44px rgba(0,0,0,.46)}
.vx-live-stage[data-state="next"] b{color:#8ee59f}
/* Lucky result language mirrors Hunt: clear winner, subdued non-winners. */
.vx-tunnel.winner .vx-tplate{filter:brightness(1.35) drop-shadow(0 0 20px rgba(255,198,69,.8))}
.vx-tunnel.loser{opacity:.34;filter:saturate(.55)}

/* ========================================================================== 
   REV7 · CINEMATIC ROUND LOOP
   ========================================================================== */
.vx-live-stage{top:16px;min-width:min(520px,72%);max-width:min(680px,78%);padding:13px 18px 14px;border-radius:20px;background:
  radial-gradient(circle at 50% 0%,rgba(255,192,63,.09),transparent 48%),rgba(9,8,7,.93);box-shadow:0 22px 70px rgba(0,0,0,.54),inset 0 1px rgba(255,255,255,.035);overflow:hidden}
.vx-live-stage:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.45;background:linear-gradient(100deg,transparent 0 38%,rgba(255,214,132,.06) 50%,transparent 62%);transform:translateX(-90%)}
.vx-live-stage.show[data-state="drawing"]:before,.vx-live-stage.show[data-state="settling"]:before{animation:vx-stage-scan 1.9s ease-in-out infinite}
@keyframes vx-stage-scan{0%{transform:translateX(-90%)}100%{transform:translateX(90%)}}
.vx-live-kicker{display:block;margin-bottom:6px;color:#9c7b49;font:800 7.5px/1 var(--mono,monospace);letter-spacing:.24em;font-style:normal}
.vx-live-stage b{font-size:14px;letter-spacing:.115em}.vx-live-stage span{font-size:10.5px;color:rgba(255,244,224,.66)}
.vx-live-metrics{display:flex;justify-content:center;gap:7px;flex-wrap:wrap;margin-top:10px}.vx-live-metrics[hidden]{display:none}.vx-live-metrics em{font-style:normal;min-width:104px;padding:7px 9px;border-radius:10px;border:1px solid rgba(255,255,255,.055);background:rgba(0,0,0,.22);display:grid;gap:3px}.vx-live-metrics small{font:750 7px/1 var(--mono,monospace);letter-spacing:.1em;color:#7d7469}.vx-live-metrics strong{font:750 10px/1.15 var(--mono,monospace);color:#f2dfc2;white-space:nowrap}
.vx-live-stage[data-state="winner"]{animation:vx-stage-hit .7s cubic-bezier(.2,.8,.2,1)}.vx-live-stage[data-state="winner"] .vx-live-kicker{color:#ffc857}.vx-live-stage[data-state="winner"] b{color:#ffe1a3;text-shadow:0 0 20px rgba(255,177,50,.3)}
.vx-live-stage[data-state="complete"]{border-color:rgba(103,218,143,.3);box-shadow:0 18px 54px rgba(54,169,96,.08),0 16px 50px rgba(0,0,0,.5)}.vx-live-stage[data-state="complete"] b{color:#8ee5a5}.vx-live-stage[data-state="complete"] .vx-live-kicker{color:#5ead79}
@keyframes vx-stage-hit{0%{transform:translate(-50%,0) scale(.94);filter:brightness(1.8)}45%{transform:translate(-50%,0) scale(1.035)}100%{transform:translate(-50%,0) scale(1)}}
.vx-winner-burst{position:fixed;z-index:1008;width:1px;height:1px;pointer-events:none}.vx-winner-burst i{position:absolute;left:0;top:0;width:28px;height:28px;margin:-14px;border-radius:50%;border:2px solid rgba(255,199,71,.8);box-shadow:0 0 28px rgba(255,157,28,.8);animation:vx-burst-ring 1.55s cubic-bezier(.17,.75,.24,1) forwards}.vx-winner-burst i:nth-child(2){animation-delay:.12s}.vx-winner-burst i:nth-child(3){animation-delay:.24s}.vx-winner-burst b{position:absolute;left:0;top:0;width:14px;height:14px;margin:-7px;border-radius:50%;background:#fff0b2;box-shadow:0 0 22px 10px rgba(255,169,35,.62);animation:vx-burst-core .75s ease-out forwards}.vx-winner-burst.violet i{border-color:rgba(183,143,255,.8);box-shadow:0 0 28px rgba(135,80,255,.7)}.vx-winner-burst.violet b{background:#efe3ff;box-shadow:0 0 22px 10px rgba(145,91,255,.55)}
@keyframes vx-burst-ring{0%{opacity:0;transform:scale(.3)}15%{opacity:1}100%{opacity:0;transform:scale(7)}}@keyframes vx-burst-core{0%{opacity:0;transform:scale(.2)}30%{opacity:1;transform:scale(2.3)}100%{opacity:0;transform:scale(4)}}
.vx-node.won{z-index:20!important;animation:vx-node-win 1.05s ease-in-out 3}.vx-node.lost{opacity:.28!important;filter:saturate(.4) brightness(.65)}@keyframes vx-node-win{0%,100%{filter:brightness(1)}45%{filter:brightness(1.9) drop-shadow(0 0 18px rgba(255,191,55,.9));transform:scale(1.08)}}
.vx-houses .vx-house.winner{animation:vx-house-win 1.15s ease-in-out 3}@keyframes vx-house-win{0%,100%{transform:scale(1)}45%{transform:scale(1.055);filter:brightness(1.5) drop-shadow(0 0 24px rgba(255,165,33,.72))}}
.vx-tunnel.winner{animation:vx-tunnel-win 1.15s ease-in-out 3}@keyframes vx-tunnel-win{0%,100%{transform:scale(1)}45%{transform:scale(1.035);filter:brightness(1.45) drop-shadow(0 0 26px rgba(169,119,255,.72))}}
@media(max-width:700px){.vx-live-stage{min-width:0;width:calc(100% - 26px);max-width:none;top:10px;padding:11px 12px}.vx-live-metrics em{min-width:88px}.vx-live-stage b{font-size:12px}}
@media(prefers-reduced-motion:reduce){.vx-live-stage:before,.vx-winner-burst,.vx-node.won,.vx-house.winner,.vx-tunnel.winner{animation:none!important}.vx-winner-burst{display:none!important}}


/* REV8 · drawing is a compact status ribbon; the winner reveal remains cinematic. */
.vx-live-stage[data-state="drawing"],.vx-live-stage[data-state="settling"]{
  min-width:300px!important;max-width:min(430px,62%)!important;padding:9px 13px 10px!important;border-radius:14px!important;
  background:rgba(10,11,12,.92)!important;border-color:rgba(255,255,255,.09)!important;box-shadow:0 12px 38px rgba(0,0,0,.46)!important}
.vx-live-stage[data-state="drawing"] .vx-live-kicker,.vx-live-stage[data-state="settling"] .vx-live-kicker{margin-bottom:4px!important;color:#80878e!important;font-size:6.8px!important}
.vx-live-stage[data-state="drawing"] b,.vx-live-stage[data-state="settling"] b{font-size:11.5px!important;color:#ddd9d2!important;letter-spacing:.09em!important}
.vx-live-stage[data-state="drawing"] span,.vx-live-stage[data-state="settling"] span{margin-top:3px!important;font-size:9.5px!important;color:#888f95!important}
.vx-live-stage[data-state="drawing"] .vx-live-metrics,.vx-live-stage[data-state="settling"] .vx-live-metrics{display:none!important}
@media(max-width:700px){.vx-live-stage[data-state="drawing"],.vx-live-stage[data-state="settling"]{width:auto!important;min-width:250px!important;max-width:calc(100% - 32px)!important}}

/* ===== vein-auto.css ===== */
/* ============================================================================
   THE VEIN — AUTO panel + claims drawer  ·  v20260809-mainnet-1
   Companion to vein-auto.js. Same design language as the-vein.css: Unbounded
   display, Geist body, Geist Mono for data, warm glass, ember→gold accents,
   vx- prefix family (vxa2- to stay clear of the motion engine's substring
   claims and the retired automine's vxa-).
   The layout follows the agreed design: Manual|Auto tab pair, balance line,
   dotted amount stage, quick amounts, Tiles / Rounds steppers, Auto Reload
   switch, totals with the reserve note, one big Deploy.
   ========================================================================== */

.vx-auto-host{margin:0}
.vx-auto-host-l{position:relative;z-index:6;margin:0 14px 10px}

.vxa2{
  border:1px solid var(--edge-2,rgba(255,255,255,.09));
  background:linear-gradient(180deg,rgba(16,15,14,.92),rgba(10,10,11,.94));
  border-radius:18px;overflow:hidden;
  box-shadow:0 10px 40px rgba(0,0,0,.45);
}

/* ── tab pair ── */
.vxa2-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px;
  background:rgba(0,0,0,.35)}
.vxa2-tab{
  appearance:none;border:1px solid transparent;border-radius:12px;
  padding:12px 10px;background:transparent;color:var(--ink-3,#9a938b);
  font:700 15px/1 var(--sans,Geist,system-ui);letter-spacing:.01em;cursor:pointer;
  transition:color .18s,border-color .18s,background .18s,box-shadow .18s;
}
.vxa2-tab:hover{color:var(--ink,#f5efe8)}
.vxa2-tab.on{
  color:var(--ink,#fff);background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.85);
  box-shadow:0 0 0 1px rgba(255,255,255,.25),0 0 18px rgba(255,200,87,.12) inset;
}
.vxa2-tab.on::after{content:'';display:none}

.vxa2-body{padding:14px 16px 16px}

/* ── balance ── */
.vxa2-bal{display:flex;align-items:center;gap:8px;color:var(--ink-3,#9a938b);
  font:500 13px/1 var(--sans);margin:2px 0 6px}
.vxa2-bal b{color:var(--ink,#f5efe8);font-family:var(--mono,ui-monospace)}
.vxa2-balacts{margin-left:auto}

/* ── the amount stage: dotted field, huge figure ── */
.vxa2-stage{
  position:relative;display:grid;place-items:center;padding:26px 10px 30px;
  border-radius:14px;margin:4px 0 10px;
  background:
    radial-gradient(circle,rgba(255,255,255,.10) 1px,transparent 1.6px) 0 0/18px 18px,
    rgba(255,255,255,.015);
}
.vxa2-amt{
  width:100%;max-width:340px;text-align:center;background:transparent;border:0;outline:0;
  color:var(--ink-3,#8d867e);caret-color:var(--gold,#ffc857);
  font:800 64px/1 var(--sans);letter-spacing:-.02em;
  transition:color .18s;
}
.vxa2-amt:focus,.vxa2-amt:not(:placeholder-shown){color:var(--ink,#f5efe8)}
.vxa2-amt::placeholder{color:var(--ink-4,#5c5751)}
.vxa2-sym{
  position:absolute;bottom:12px;left:50%;transform:translateX(-50%);
  font:700 12px/1 var(--mono,ui-monospace);color:var(--gold,#ffc857);
  padding:4px 8px;border-radius:999px;border:1px solid var(--edge,rgba(249,115,22,.35));
  background:rgba(249,115,22,.10);
}
.vxa2-perlane{position:absolute;top:10px;right:12px;color:var(--ink-4,#6a645d);
  font:500 11px/1 var(--mono)}

/* ── quick amounts ── */
.vxa2-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 6px}
.vxa2-quick button{
  appearance:none;border:1px solid var(--edge-2,rgba(255,255,255,.09));
  background:rgba(255,255,255,.04);color:var(--ink-2,#d9d2c9);border-radius:12px;
  padding:12px 6px;font:600 14px/1 var(--mono);cursor:pointer;
  transition:background .15s,border-color .15s,transform .12s;
}
.vxa2-quick button:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18)}
.vxa2-quick button:active{transform:translateY(1px)}

/* ── rows: Tiles / Rounds / Auto Reload ── */
.vxa2-row{display:flex;align-items:center;justify-content:space-between;
  padding:12px 2px;border-top:1px solid rgba(255,255,255,.06)}
.vxa2-row label{font:700 14px/1.3 var(--sans);color:var(--ink,#f5efe8);display:grid;gap:3px}
.vxa2-row label small{font:400 11px/1.35 var(--sans);color:var(--ink-4,#6a645d);max-width:260px}
.vxa2-step{display:flex;align-items:center;gap:8px}
.vxa2-step b{min-width:34px;text-align:center;font:800 20px/1 var(--sans);color:var(--ink-3,#9a938b)}
.vxa2-step button{
  appearance:none;width:38px;height:38px;border-radius:11px;cursor:pointer;
  border:1px solid var(--edge-2,rgba(255,255,255,.09));
  background:rgba(255,255,255,.05);color:var(--ink,#f5efe8);
  font:700 17px/1 var(--sans);
  transition:background .15s,transform .12s;
}
.vxa2-step button:hover{background:rgba(255,255,255,.1)}
.vxa2-step button:active{transform:scale(.95)}
.vxa2-step .vxa2-all{width:auto;padding:0 14px;font-size:13px}

/* ── switch ── */
.vxa2-switch{
  appearance:none;position:relative;width:52px;height:30px;border-radius:999px;cursor:pointer;
  border:1px solid var(--edge-2,rgba(255,255,255,.12));background:rgba(255,255,255,.08);
  transition:background .2s,border-color .2s;
}
.vxa2-switch i{
  position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;
  background:#cfc8bf;transition:transform .22s cubic-bezier(.4,1.6,.5,1),background .2s;
}
.vxa2-switch.on{background:linear-gradient(90deg,var(--ember,#f97316),var(--gold,#ffc857));border-color:transparent}
.vxa2-switch.on i{transform:translateX(22px);background:#1a1207}

/* ── totals ── */
.vxa2-totals{padding:12px 2px 4px;border-top:1px solid rgba(255,255,255,.06)}
.vxa2-totals>div{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0}
.vxa2-totals span{font:500 13px/1 var(--sans);color:var(--ink-3,#9a938b)}
.vxa2-totals b{font:800 16px/1 var(--mono);color:var(--ink,#f5efe8)}
.vxa2-totals small{display:block;text-align:right;margin-top:4px;
  font:400 11px/1.3 var(--sans);color:var(--ink-4,#6a645d)}

/* ── deploy ── */
.vxa2-deploy{
  width:100%;margin:12px 0 6px;padding:16px;border-radius:14px;cursor:pointer;
  border:1px solid var(--edge-2,rgba(255,255,255,.09));
  background:linear-gradient(90deg,var(--ember,#f97316),var(--gold,#ffc857));
  color:#1a1207;font:800 16px/1 var(--sans);letter-spacing:.01em;
  transition:filter .18s,transform .12s,opacity .2s;
}
.vxa2-deploy:hover:not(:disabled){filter:brightness(1.08)}
.vxa2-deploy:active:not(:disabled){transform:translateY(1px)}
.vxa2-deploy:disabled{
  background:rgba(255,255,255,.05);color:var(--ink-4,#6a645d);cursor:not-allowed;
}
/* The pre-launch state is deliberate, not broken: keep the shape, dim the
   fill, and the note underneath carries the launch message. */
.vxa2-deploy.vxa2-locked:disabled{
  background:repeating-linear-gradient(-45deg,rgba(255,255,255,.05) 0 10px,rgba(255,255,255,.02) 10px 20px);
  border-color:rgba(255,200,87,.18);color:rgba(255,200,87,.5);
}
.vxa2-note{min-height:16px;text-align:center;font:400 12px/1.4 var(--sans);color:var(--ink-4,#6a645d)}
.vxa2-note.lock{color:rgba(255,200,87,.7)}

/* ── armed card ── */
.vxa2-armed{margin-top:12px;border-radius:14px;padding:12px;
  border:1px solid rgba(122,220,140,.25);background:rgba(38,80,46,.14)}
.vxa2-armed-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.vxa2-armed-head b{font:800 12px/1 var(--mono);letter-spacing:.14em;color:var(--green,#7adc8c)}
.vxa2-armed-head span{font:400 11px/1.35 var(--sans);color:var(--ink-3,#9a938b)}
.vxa2-pulse{width:8px;height:8px;border-radius:50%;background:var(--green,#7adc8c);
  box-shadow:0 0 10px var(--green,#7adc8c);animation:vxa2pulse 1.8s ease-in-out infinite}
@keyframes vxa2pulse{0%,100%{opacity:1}50%{opacity:.35}}
.vxa2-armed-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.vxa2-armed-grid span{display:block;font:500 10px/1 var(--mono);color:var(--ink-4,#6a645d);margin-bottom:4px}
.vxa2-armed-grid b{font:700 14px/1 var(--mono);color:var(--ink,#f5efe8)}
.vxa2-armed-acts{display:flex;gap:8px;margin-top:10px}

/* ── shared mini button ── */
.vxa2-mini{
  appearance:none;padding:8px 12px;border-radius:10px;cursor:pointer;
  border:1px solid var(--edge-2,rgba(255,255,255,.12));
  background:rgba(255,255,255,.05);color:var(--ink-2,#d9d2c9);
  font:600 12px/1 var(--sans);transition:background .15s;
}
.vxa2-mini:hover{background:rgba(255,255,255,.1)}

/* ── history ── */
.vxa2-hist{margin-top:10px}
.vxa2-hist-head{font:600 11px/1 var(--mono);letter-spacing:.1em;color:var(--ink-4,#6a645d);margin:4px 0 6px}
.vxa2-hist-row{display:block;padding:6px 8px;border-radius:8px;text-decoration:none;
  font:400 12px/1.4 var(--mono);color:var(--ink-3,#9a938b)}
.vxa2-hist-row:hover{background:rgba(255,255,255,.05);color:var(--ink,#f5efe8)}

/* Manual console folded away while Auto is open. Kept in the DOM: its state,
   timers and ids all survive the fold. */
.vxa2-hidden{display:none!important}

/* ── claims button + drawer ── */
.vxa2-claims-btn{
  appearance:none;margin:0;width:100%;min-height:46px;padding:11px 16px;border-radius:14px;cursor:pointer;
  border:1px solid var(--edge-2,rgba(255,255,255,.09));
  background:linear-gradient(180deg,rgba(18,17,15,.9),rgba(11,10,9,.92));color:var(--ink-2,#d9d2c9);
  box-shadow:0 8px 24px rgba(0,0,0,.24);
  font:600 13px/1 var(--sans);display:flex;align-items:center;justify-content:center;gap:8px;
  transition:background .15s,border-color .15s,transform .15s;
}
.vxa2-claims-btn:hover{background:rgba(255,255,255,.07);border-color:rgba(255,200,87,.22);transform:translateY(-1px)}
.vxa2-claims-btn span{
  min-width:20px;height:20px;border-radius:999px;display:grid;place-items:center;
  background:linear-gradient(90deg,var(--ember,#f97316),var(--gold,#ffc857));
  color:#1a1207;font:800 11px/1 var(--mono);
}

#vxa2-cl{position:fixed;inset:0;z-index:400;background:rgba(6,5,4,.7);
  backdrop-filter:blur(6px);display:grid;place-items:end center}
#vxa2-cl[hidden]{display:none!important}
.vxa2-cl-sheet{
  width:min(560px,96vw);max-height:78vh;overflow:auto;margin-bottom:14px;
  border-radius:18px;border:1px solid var(--edge-2,rgba(255,255,255,.1));
  background:linear-gradient(180deg,rgba(22,20,18,.98),rgba(12,11,10,.98));
  box-shadow:0 24px 80px rgba(0,0,0,.6);padding:14px;
  animation:vxa2up .28s cubic-bezier(.2,.9,.3,1);
}
@keyframes vxa2up{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
.vxa2-cl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.vxa2-cl-head b{font:800 15px/1 var(--sans);color:var(--ink,#f5efe8)}
.vxa2-cl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:11px 10px;border-radius:12px;border:1px solid rgba(255,255,255,.06);margin-bottom:8px;
  background:rgba(255,255,255,.025)}
.vxa2-cl-row b{font:700 13px/1.2 var(--sans);color:var(--ink,#f5efe8);display:block}
.vxa2-cl-row small{font:400 11px/1.4 var(--sans);color:var(--ink-3,#9a938b);display:block;margin-top:3px}
.vxa2-cl-empty{padding:22px 10px;text-align:center;font:400 13px/1.5 var(--sans);color:var(--ink-3,#9a938b)}

/* ── fallback toast (only used when the page toast is absent) ── */
.vxa2-toast{
  position:fixed;left:50%;bottom:24px;transform:translate(-50%,12px);z-index:500;
  padding:11px 16px;border-radius:12px;opacity:0;pointer-events:none;
  border:1px solid var(--edge-2,rgba(255,255,255,.12));
  background:rgba(20,18,16,.96);color:var(--ink,#f5efe8);
  font:500 13px/1.3 var(--sans);transition:opacity .25s,transform .25s;
}
.vxa2-toast.on{opacity:1;transform:translate(-50%,0)}
.vxa2-toast.good{border-color:rgba(122,220,140,.4)}
.vxa2-toast.bad{border-color:rgba(240,110,90,.5)}

/* ── responsive ── */
@media (max-width:640px){
  .vxa2-amt{font-size:48px}
  .vxa2-armed-grid{grid-template-columns:repeat(2,1fr)}
  .vx-auto-host-l{margin:0 8px 8px}
}
@media (prefers-reduced-motion:reduce){
  .vxa2-pulse{animation:none}
  .vxa2-cl-sheet{animation:none}
}


/* ========================================================================== 
   VEIN STEP 2 — LUCKY MODE SWITCHER
   Hunt keeps its Step-1 layout. Lucky's Manual|Auto selector is the header of
   the shared play card, and Auto expands IN that same card with its extra
   strategy settings (tunnels, rounds, reload, funding + deploy).
   ========================================================================== */
.vx-lconsole-shell .vx-auto-host-l{position:relative;z-index:2;margin:0}
#vx-auto-lucky .vxa2{border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
#vx-auto-lucky .vxa2-tabs{
  display:inline-grid;grid-template-columns:1fr 1fr;gap:4px;width:228px;
  margin:10px 14px 0;padding:4px;border-radius:999px;
  border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.35);
}
#vx-auto-lucky .vxa2-tab{
  min-height:34px;padding:8px 14px;border-radius:999px;border:1px solid transparent;
  color:var(--ink-3,#9a938b);background:transparent;font-size:12px;
}
#vx-auto-lucky .vxa2-tab.on{
  color:#181108;border-color:rgba(255,200,87,.72);
  background:linear-gradient(110deg,var(--gold,#ffc857),var(--amber,#f3a60f));
  box-shadow:0 5px 18px rgba(243,166,15,.18),inset 0 1px rgba(255,255,255,.28);
}
#vx-auto-lucky .vxa2-body{
  display:grid;
  grid-template-columns:minmax(250px,.92fr) minmax(260px,.82fr) minmax(230px,.72fr);
  grid-template-areas:
    "bal bal bal"
    "stage lanes totals"
    "stage rounds totals"
    "quick reload deploy"
    "quick note note"
    "armed armed armed";
  gap:8px 16px;padding:10px 16px 16px;border-top:1px solid rgba(255,255,255,.055);
}
#vx-auto-lucky .vxa2-body[hidden]{display:none!important}
#vx-auto-lucky .vxa2-bal{grid-area:bal;margin:0 0 2px}
#vx-auto-lucky .vxa2-stage{grid-area:stage;min-height:124px;margin:0;padding:22px 8px 27px}
#vx-auto-lucky .vxa2-amt{font-size:42px;max-width:250px}
#vx-auto-lucky .vxa2-quick{grid-area:quick;margin:0;align-self:start}
#vx-auto-lucky .vxa2-lanes{grid-area:lanes}
#vx-auto-lucky .vxa2-rounds{grid-area:rounds}
#vx-auto-lucky .vxa2-reload{grid-area:reload}
#vx-auto-lucky .vxa2-row{padding:9px 2px}
#vx-auto-lucky .vxa2-totals{grid-area:totals;padding:9px 0 2px;align-self:stretch}
#vx-auto-lucky .vxa2-deploy{grid-area:deploy;align-self:center;margin:0;padding:14px}
#vx-auto-lucky .vxa2-note{grid-area:note;align-self:start;text-align:left;min-height:0}
#vx-auto-lucky .vxa2-armed{grid-area:armed;margin-top:2px}

@media (max-width:1180px){
  #vx-auto-lucky .vxa2-body{
    grid-template-columns:1fr 1fr;
    grid-template-areas:
      "bal bal"
      "stage stage"
      "quick quick"
      "lanes rounds"
      "reload reload"
      "totals deploy"
      "note note"
      "armed armed";
  }
  #vx-auto-lucky .vxa2-stage{min-height:108px;padding:18px 8px 26px}
  #vx-auto-lucky .vxa2-amt{font-size:38px}
}
@media (max-width:820px){
  #vx-auto-lucky .vxa2-tabs{margin:10px 12px 0;width:220px}
  #vx-auto-lucky .vxa2-body{padding:10px 12px 14px}
}
@media (max-width:640px){
  #vx-auto-lucky .vxa2-tabs{display:grid;width:auto;margin:9px 9px 0}
  #vx-auto-lucky .vxa2-tab{min-height:40px;font-size:12.5px}
  #vx-auto-lucky .vxa2-body{
    grid-template-columns:1fr;
    grid-template-areas:
      "bal"
      "stage"
      "quick"
      "lanes"
      "rounds"
      "reload"
      "totals"
      "deploy"
      "note"
      "armed";
    gap:7px;padding:10px 10px 12px;
  }
  #vx-auto-lucky .vxa2-stage{min-height:112px}
  #vx-auto-lucky .vxa2-quick{grid-template-columns:repeat(4,1fr)}
  #vx-auto-lucky .vxa2-row{min-height:52px}
  #vx-auto-lucky .vxa2-totals{padding-top:10px}
  #vx-auto-lucky .vxa2-deploy{min-height:48px}
}
@media (max-width:420px){
  #vx-auto-lucky .vxa2-quick{grid-template-columns:repeat(2,1fr)}
}

/* ========================================================================== 
   VEIN SAFE UI PASS — shared Manual / Auto play surfaces
   ========================================================================== */

/* Hunt tabs are the header of the existing Manual card, not a floating card. */
#vx-auto-hunt .vxa2{
  border-radius:18px 18px 0 0;background:linear-gradient(180deg,rgba(17,15,13,.96),rgba(12,11,10,.96));
  box-shadow:0 10px 34px rgba(0,0,0,.32);border-bottom:0;
}
#vx-auto-hunt .vxa2-tabs{
  display:inline-grid;grid-template-columns:1fr 1fr;gap:4px;width:228px;
  margin:8px 12px 7px;padding:4px;border-radius:999px;
  border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.34);
}
#vx-auto-hunt .vxa2-tab{
  min-height:34px;padding:8px 14px;border-radius:999px;background:transparent;color:var(--ink-3,#9a938b);font-size:12px;
}
#vx-auto-hunt .vxa2-tab.on{
  color:#181108;border-color:rgba(255,200,87,.72);
  background:linear-gradient(110deg,var(--gold,#ffc857),var(--amber,#f3a60f));
  box-shadow:0 5px 18px rgba(243,166,15,.18),inset 0 1px rgba(255,255,255,.28);
}

/* Auto uses the same measured vertical footprint as Manual. Controls stay
   compact and anchored to the top; any remaining room is deliberate breathing
   room rather than a smaller card jump. */
#vx-auto-hunt .vxa2-body,
#vx-auto-lucky .vxa2-body{
  min-height:var(--vxa-manual-height,260px);box-sizing:border-box;align-content:start;
}
#vx-auto-hunt .vxa2-body{
  display:grid;grid-template-columns:minmax(220px,.92fr) minmax(235px,.84fr) minmax(220px,.8fr);
  grid-template-areas:
    "bal bal bal"
    "stage lanes totals"
    "stage rounds totals"
    "quick reload deploy"
    "quick note note"
    "armed armed armed";
  gap:8px 14px;padding:10px 16px 16px;border-top:1px solid rgba(255,255,255,.05);
}
#vx-auto-hunt .vxa2-body[hidden]{display:none!important}
#vx-auto-hunt .vxa2-bal{grid-area:bal;margin:0 0 2px}
#vx-auto-hunt .vxa2-stage{grid-area:stage;min-height:118px;margin:0;padding:20px 8px 27px}
#vx-auto-hunt .vxa2-amt{font-size:42px;max-width:245px}
#vx-auto-hunt .vxa2-quick{grid-area:quick;margin:0;align-self:start}
#vx-auto-hunt .vxa2-lanes{grid-area:lanes}
#vx-auto-hunt .vxa2-rounds{grid-area:rounds}
#vx-auto-hunt .vxa2-reload{grid-area:reload}
#vx-auto-hunt .vxa2-row{padding:9px 2px}
#vx-auto-hunt .vxa2-totals{grid-area:totals;padding:9px 0 2px;align-self:stretch}
#vx-auto-hunt .vxa2-deploy{grid-area:deploy;align-self:center;margin:0;padding:14px}
#vx-auto-hunt .vxa2-note{grid-area:note;align-self:start;text-align:left;min-height:0}
#vx-auto-hunt .vxa2-armed{grid-area:armed;margin-top:2px}

/* Keep All / − / count / + centered and stable in both games. */
#vx-auto-hunt .vxa2-step,#vx-auto-lucky .vxa2-step{justify-content:center;min-width:178px}
#vx-auto-hunt .vxa2-step b,#vx-auto-lucky .vxa2-step b{min-width:34px}

/* My Plays finishes the Hunt card in both Manual and Auto modes. */
#vx-hunt-plays .vxa2-claims-btn{
  border-radius:0 0 18px 18px;border-top-color:rgba(255,255,255,.045);
  box-shadow:0 12px 28px rgba(0,0,0,.26);min-height:44px;
}
#vx-auto-hunt .vxa2[data-mode="auto"]{border-radius:18px 18px 0 0;border-bottom:0}

/* Lucky is already one shell; keep its measured Auto height and attached tabs. */
#vx-auto-lucky .vxa2{min-width:0}
#vx-auto-lucky .vxa2-step{margin-left:auto}

@media (max-width:1180px){
  #vx-auto-hunt .vxa2-body{
    grid-template-columns:1fr 1fr;
    grid-template-areas:
      "bal bal"
      "stage stage"
      "quick quick"
      "lanes rounds"
      "reload reload"
      "totals deploy"
      "note note"
      "armed armed";
  }
  #vx-auto-hunt .vxa2-stage{min-height:106px;padding:18px 8px 26px}
  #vx-auto-hunt .vxa2-amt{font-size:38px}
}
@media (max-width:640px){
  #vx-auto-hunt .vxa2-tabs{display:grid;width:auto;margin:9px 9px 7px}
  #vx-auto-hunt .vxa2-tab{min-height:40px;font-size:12.5px}
  #vx-auto-hunt .vxa2-body{
    grid-template-columns:1fr;
    grid-template-areas:"bal" "stage" "quick" "lanes" "rounds" "reload" "totals" "deploy" "note" "armed";
    gap:7px;padding:10px 10px 12px;
  }
  #vx-auto-hunt .vxa2-step,#vx-auto-lucky .vxa2-step{min-width:0}
  #vx-auto-hunt .vxa2-quick{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:420px){
  #vx-auto-hunt .vxa2-quick{grid-template-columns:repeat(2,1fr)}
}


/* ========================================================================== 
   VEIN UI ROUND 2 — Lucky Auto compact pass
   About 20% less vertical footprint on desktop while keeping every control.
   ========================================================================== */
@media (min-width:1181px){
  #vx-auto-lucky .vxa2-body{
    min-height:0!important;
    gap:6px 14px!important;
    padding:7px 16px 11px!important;
  }
  #vx-auto-lucky .vxa2-bal{margin:0!important;line-height:1.2}
  #vx-auto-lucky .vxa2-stage{min-height:98px!important;padding:12px 8px 17px!important}
  #vx-auto-lucky .vxa2-amt{font-size:36px!important}
  #vx-auto-lucky .vxa2-quick{gap:7px!important}
  #vx-auto-lucky .vxa2-row{padding:5px 2px!important;min-height:0!important}
  #vx-auto-lucky .vxa2-totals{padding:5px 0 0!important}
  #vx-auto-lucky .vxa2-deploy{padding:11px!important;min-height:44px!important}
  #vx-auto-lucky .vxa2-note{font-size:11px!important;line-height:1.25!important}
  #vx-auto-lucky .vxa2-tabs{margin-top:8px!important}
}

/* ========================================================================== 
   VEIN LIVE CLARITY — autoplay status + player-facing round history
   ========================================================================== */
.vxa2-armed-head{flex-wrap:wrap}
.vxa2-armed-head span{flex:1 1 360px;line-height:1.45}
.vxa2-armed-cover{margin-top:8px;padding:8px 10px;border-radius:10px;
  border:1px solid rgba(122,220,140,.14);background:rgba(122,220,140,.055);
  color:var(--ink-3,#9a938b);font:500 11px/1.4 var(--sans)}
.vxa2-armed-help{display:block;margin-top:8px;color:var(--ink-4,#6a645d);
  font:400 10.5px/1.45 var(--sans)}
.vxa2-mini.danger{border-color:rgba(245,128,96,.24);color:#e7b19f;background:rgba(130,54,35,.10)}
.vxa2-mini.danger:hover{border-color:rgba(245,128,96,.42);background:rgba(130,54,35,.18)}

.vxa2-hist{display:grid;gap:6px}
.vxa2-hist-head{margin:6px 0 2px}
.vxa2-hist-row{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:9px 10px;border:1px solid rgba(255,255,255,.055);background:rgba(255,255,255,.022)}
.vxa2-hist-row:hover{background:rgba(255,255,255,.035);color:inherit}
.vxa2-hist-row>div{display:grid;gap:3px;min-width:0}
.vxa2-hist-row b{font:700 12px/1.2 var(--mono);color:var(--ink,#f5efe8)}
.vxa2-hist-row span{font:450 11px/1.35 var(--sans);color:var(--ink-3,#9a938b)}
.vxa2-hist-row em{font:650 10.5px/1.3 var(--sans);font-style:normal;text-align:right;color:var(--ink-3,#9a938b)}
.vxa2-hist-row.done em{color:var(--green,#7adc8c)}
.vxa2-hist-row.draw em{color:var(--gold,#ffc857)}
.vxa2-hist-row.open em{color:#c9d7f5}
.vxa2-hist-empty{padding:8px 10px;color:var(--ink-4,#6a645d);font:400 11px/1.4 var(--sans)}
@media(max-width:640px){
  .vxa2-hist-row{align-items:flex-start;flex-direction:column;gap:4px}
  .vxa2-hist-row em{text-align:left}
  .vxa2-armed-acts{flex-wrap:wrap}
}

/* ═══════════════════════════════════════════════════════════════════════════
   REV5 · PREMIUM REWARDS SHEET
   The deployed Hunt contract claims per chamber. Keep that contract truth,
   but present it as one round-level collection flow instead of a developer
   list of claims/transactions.
   ═══════════════════════════════════════════════════════════════════════════ */
.vxa2-claims-btn{min-height:58px;border-radius:18px;padding:14px 18px;
  background:linear-gradient(180deg,rgba(21,19,16,.92),rgba(11,10,9,.96));
  border-color:rgba(255,200,87,.13);justify-content:flex-start;gap:11px}
.vxa2-reward-mark{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(135deg,rgba(255,198,71,.22),rgba(249,115,22,.08));
  border:1px solid rgba(255,200,87,.2);color:#ffd575;font:800 15px/1 var(--sans)}
.vxa2-reward-label{font:750 14px/1 var(--sans);letter-spacing:.01em;color:var(--ink,#f5efe8)}
.vxa2-reward-count{margin-left:auto!important;min-width:24px!important;height:24px!important;
  box-shadow:0 0 22px rgba(255,174,47,.18)}

#vxa2-cl{background:rgba(4,3,2,.74);backdrop-filter:blur(14px);place-items:center}
.vxa2-cl-sheet{width:min(760px,94vw);max-height:min(82vh,820px);margin:0;border-radius:28px;
  padding:22px;background:
  radial-gradient(circle at 78% -10%,rgba(255,173,47,.08),transparent 34%),
  linear-gradient(180deg,rgba(20,18,15,.985),rgba(10,9,8,.99));
  border:1px solid rgba(255,211,132,.12);box-shadow:0 34px 110px rgba(0,0,0,.68),inset 0 1px rgba(255,255,255,.025)}
.vxa2-cl-head{margin-bottom:18px;align-items:flex-start}
.vxa2-cl-head>div{display:grid;gap:5px}
.vxa2-cl-kicker{font:800 10px/1 var(--mono);letter-spacing:.2em;color:#c18b37}
.vxa2-cl-head b{font:800 25px/1.1 var(--sans);letter-spacing:-.025em}
.vxa2-cl-head small{font:500 12px/1.4 var(--sans);color:var(--ink-3,#9a938b)}
.vxa2-cl-close{appearance:none;width:38px;height:38px;border-radius:13px;border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.035);color:#cfc6bb;cursor:pointer;font:400 24px/1 var(--sans);transition:.16s}
.vxa2-cl-close:hover{background:rgba(255,255,255,.07);color:#fff;transform:translateY(-1px)}
.vxa2-cl-summary{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:0 3px;
  color:var(--ink-3,#9a938b);font:600 11px/1 var(--sans);text-transform:uppercase;letter-spacing:.11em}
.vxa2-cl-summary b{min-width:25px;height:25px;border-radius:999px;display:grid;place-items:center;
  background:rgba(255,194,74,.1);border:1px solid rgba(255,194,74,.18);color:#ffd06d;font:800 11px/1 var(--mono)}
.vxa2-cl-card{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:14px;padding:15px 15px;
  border-radius:18px;border:1px solid rgba(255,255,255,.065);margin-bottom:10px;
  background:linear-gradient(180deg,rgba(255,255,255,.026),rgba(255,255,255,.012));transition:.16s}
.vxa2-cl-card:hover{border-color:rgba(255,201,90,.14);background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.017))}
.vxa2-cl-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.07);
  font:800 17px/1 var(--sans);background:rgba(255,255,255,.025)}
.vxa2-cl-icon.hunt{color:#ffc857;background:radial-gradient(circle at 50% 35%,rgba(255,193,69,.18),rgba(255,255,255,.02))}
.vxa2-cl-icon.lucky{color:#ad8cff;background:radial-gradient(circle at 50% 35%,rgba(152,112,255,.16),rgba(255,255,255,.02))}
.vxa2-cl-main{min-width:0}
.vxa2-cl-title{display:flex;align-items:center;gap:9px;margin-bottom:5px}
.vxa2-cl-title b{font:750 15px/1.2 var(--sans);color:var(--ink,#f5efe8)}
.vxa2-cl-ready{padding:4px 7px;border-radius:999px;border:1px solid rgba(55,220,129,.18);background:rgba(55,220,129,.07);
  color:#55e497;font:800 8px/1 var(--mono);letter-spacing:.11em}
.vxa2-cl-meta{font:600 12px/1.4 var(--sans);color:#c8beb2}
.vxa2-cl-note{margin-top:3px;font:450 11px/1.45 var(--sans);color:var(--ink-3,#8f877f)}
.vxa2-cl-action{display:grid;justify-items:end;gap:5px}
.vxa2-collect{appearance:none;min-height:38px;padding:0 15px;border-radius:12px;border:1px solid rgba(255,200,87,.18);
  background:linear-gradient(180deg,rgba(255,192,69,.12),rgba(249,115,22,.07));color:#f3ddba;cursor:pointer;
  font:700 12px/1 var(--sans);white-space:nowrap;transition:.16s}
.vxa2-collect:hover{transform:translateY(-1px);border-color:rgba(255,200,87,.35);background:linear-gradient(180deg,rgba(255,192,69,.18),rgba(249,115,22,.1))}
.vxa2-cl-action small{font:500 9px/1.2 var(--sans);color:#766f68}
.vxa2-cl-older{margin-top:8px;border-top:1px solid rgba(255,255,255,.055);padding-top:10px}
.vxa2-cl-older summary{list-style:none;cursor:pointer;padding:9px 4px 12px;color:#9e958b;font:650 11px/1 var(--sans)}
.vxa2-cl-older summary::-webkit-details-marker{display:none}
.vxa2-cl-older summary span{margin-left:6px;padding:3px 6px;border-radius:999px;background:rgba(255,255,255,.045);font:700 9px/1 var(--mono)}
.vxa2-cl-disclosure{margin-top:14px;padding:13px 14px;border-radius:15px;border:1px solid rgba(92,171,255,.11);
  background:rgba(68,135,214,.035);display:grid;gap:5px}
.vxa2-cl-disclosure b{font:700 11px/1.25 var(--sans);color:#bdd9f5}
.vxa2-cl-disclosure span{font:450 10.5px/1.5 var(--sans);color:#8e9ca9}
.vxa2-cl-empty{display:grid;gap:7px;padding:45px 18px}
.vxa2-cl-empty b{font:750 16px/1 var(--sans);color:#e8dfd5}
.vxa2-cl-empty span{font:450 12px/1.45 var(--sans);color:#8f877f}

@media(max-width:620px){
  .vxa2-cl-sheet{width:calc(100vw - 20px);padding:16px;border-radius:22px}
  .vxa2-cl-card{grid-template-columns:38px 1fr;gap:10px}
  .vxa2-cl-icon{width:36px;height:36px;border-radius:12px}
  .vxa2-cl-action{grid-column:1/-1;width:100%}.vxa2-collect{width:100%}.vxa2-cl-action small{justify-self:center}
}

/* ========================================================================== 
   REV7 · CINEMATIC / ATOMIC REWARDS
   ========================================================================== */
.vxa2-cl-sheet{width:min(920px,94vw);max-height:min(86vh,900px);padding:26px}
.vxa2-cl-hero{position:relative;display:grid;grid-template-columns:minmax(190px,.75fr) 1.15fr auto;
  align-items:center;gap:20px;padding:20px;margin:0 0 18px;border-radius:22px;overflow:hidden;
  border:1px solid rgba(255,201,91,.13);background:
  radial-gradient(circle at 88% 0%,rgba(255,177,43,.13),transparent 34%),
  linear-gradient(135deg,rgba(255,255,255,.04),rgba(255,255,255,.012));}
.vxa2-cl-hero:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 0 42%,rgba(255,215,139,.035) 50%,transparent 58%);transform:translateX(-70%);animation:vxa2-reward-sheen 4.6s ease-in-out infinite}
@keyframes vxa2-reward-sheen{0%,55%{transform:translateX(-70%)}85%,100%{transform:translateX(70%)}}
.vxa2-cl-hero>div:first-child{display:grid;gap:5px}.vxa2-cl-hero>div:first-child>span{font:800 9px/1 var(--mono);letter-spacing:.2em;color:#c8913c}
.vxa2-cl-hero>div:first-child>b{font:800 22px/1.08 var(--sans);letter-spacing:-.025em;color:#f8f0e5}.vxa2-cl-hero>div:first-child>small{font:500 10.5px/1.4 var(--sans);color:#827a72}
.vxa2-cl-hero-metrics,.vxa2-cl-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.vxa2-cl-hero-metrics em,.vxa2-cl-metrics em{font-style:normal;min-width:0;padding:10px 11px;border-radius:12px;border:1px solid rgba(255,255,255,.055);background:rgba(0,0,0,.16);display:grid;gap:5px}
.vxa2-cl-hero-metrics small,.vxa2-cl-metrics small{font:750 8px/1 var(--mono);letter-spacing:.11em;color:#736c65}.vxa2-cl-hero-metrics strong,.vxa2-cl-metrics strong{font:760 12px/1.1 var(--mono);color:#e9dfd2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vxa2-cl-hero-metrics em.good strong,.vxa2-cl-metrics em.good strong{color:#6ce69d}.vxa2-cl-hero-metrics em.raw strong,.vxa2-cl-metrics em.raw strong{color:#ffd06a}
.vxa2-collect-all{position:relative;z-index:1;appearance:none;min-width:196px;min-height:54px;padding:10px 16px;border-radius:15px;cursor:pointer;border:1px solid rgba(255,201,91,.29);background:linear-gradient(180deg,rgba(255,190,59,.18),rgba(193,101,17,.1));color:#ffe4ad;font:800 12px/1.15 var(--sans);box-shadow:inset 0 1px rgba(255,255,255,.05),0 12px 36px rgba(0,0,0,.18);transition:.18s}
.vxa2-collect-all span{display:block;margin-top:5px;color:#8d806e;font:500 8.5px/1.25 var(--sans)}.vxa2-collect-all:hover:not(:disabled){transform:translateY(-1px);border-color:rgba(255,207,103,.52);box-shadow:0 12px 34px rgba(255,146,28,.09)}.vxa2-collect-all:disabled{opacity:.45;cursor:not-allowed}
.vxa2-cl-card{grid-template-columns:46px minmax(0,1fr) auto;padding:17px 17px;gap:15px;border-radius:20px}.vxa2-cl-card.vxa2-cl-hunt{box-shadow:inset 3px 0 rgba(255,184,54,.12)}.vxa2-cl-card.vxa2-cl-lucky{box-shadow:inset 3px 0 rgba(157,117,255,.12)}
.vxa2-cl-title{flex-wrap:wrap}.vxa2-cl-outcome{padding:4px 7px;border-radius:999px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.06);color:#8e867d;font:800 7.5px/1 var(--mono);letter-spacing:.1em}.vxa2-cl-outcome.won{color:#ffd267;border-color:rgba(255,199,76,.18);background:rgba(255,193,56,.07)}
.vxa2-cl-lanes{display:flex;align-items:center;gap:8px;margin:8px 0 10px;min-width:0}.vxa2-cl-lanes>span{font:600 9px/1 var(--sans);color:#777069;white-space:nowrap}.vxa2-cl-lanes>div{display:flex;gap:4px;flex-wrap:wrap}.vxa2-cl-lanes i{font-style:normal;min-width:23px;height:21px;border-radius:7px;display:grid;place-items:center;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.055);color:#978e84;font:750 8px/1 var(--mono)}.vxa2-cl-lanes i.win{color:#171109;background:#ffc857;border-color:#ffd87d;box-shadow:0 0 18px rgba(255,192,61,.2)}.vxa2-cl-lanes>b{margin-left:auto;color:#d5c6b4;font:650 9px/1 var(--sans);white-space:nowrap}
.vxa2-cl-action{min-width:146px}.vxa2-collect{min-width:140px;min-height:42px}.vxa2-cl-action small{max-width:150px;text-align:right;line-height:1.35;color:#6f685f}
.vxa2-cl-disclosure{border-color:rgba(255,197,88,.09);background:linear-gradient(180deg,rgba(255,184,63,.025),rgba(65,119,192,.025))}.vxa2-cl-disclosure b{color:#d7bd91}.vxa2-cl-disclosure span{color:#84888e}
.vxa2-collect[disabled],.vxa2-collect-all[disabled]{filter:saturate(.55)}
@media(max-width:820px){.vxa2-cl-hero{grid-template-columns:1fr}.vxa2-collect-all{width:100%}.vxa2-cl-hero-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.vxa2-cl-sheet{padding:15px}.vxa2-cl-hero{padding:15px}.vxa2-cl-hero-metrics,.vxa2-cl-metrics{grid-template-columns:1fr 1fr}.vxa2-cl-card{grid-template-columns:38px 1fr}.vxa2-cl-lanes{align-items:flex-start;flex-wrap:wrap}.vxa2-cl-lanes>b{margin-left:0;width:100%}.vxa2-cl-action{min-width:0}.vxa2-cl-action small{text-align:center;max-width:none}}


/* ========================================================================== 
   REV8 · PREMIUM REWARDS / COMPACT DOCK / NO AUTO-HISTORY DUPLICATION
   ========================================================================== */
/* Rewards is a utility affordance, not a second oversized card. */
#vx-hunt-plays{display:flex!important;align-items:center!important;justify-content:flex-end!important;
  min-height:46px!important;padding:6px 14px!important;border-top:1px solid rgba(255,255,255,.045)!important;
  background:rgba(10,10,10,.72)!important}
#vx-hunt-plays .vxa2-claims-btn{width:auto!important;min-width:132px!important;min-height:34px!important;height:34px!important;
  padding:0 11px!important;border-radius:11px!important;border:1px solid rgba(255,255,255,.085)!important;
  background:rgba(255,255,255,.035)!important;box-shadow:none!important;gap:8px!important;color:#ddd6cd!important}
#vx-hunt-plays .vxa2-claims-btn:hover{background:rgba(255,255,255,.065)!important;border-color:rgba(255,255,255,.14)!important}
#vx-hunt-plays .vxa2-reward-mark{width:20px;height:20px;border-radius:7px;background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.08);color:#c9b07c;font-size:11px}
#vx-hunt-plays .vxa2-reward-label{font-size:11.5px;color:#ddd6cd}
#vx-hunt-plays .vxa2-reward-count{min-width:19px!important;height:19px!important;margin-left:3px!important;background:#b99048!important;color:#111!important;box-shadow:none!important;font-size:9px!important}

/* Graphite-first rewards drawer. Accent color communicates status/data only. */
#vxa2-cl{background:rgba(3,4,5,.78)!important;backdrop-filter:blur(18px)!important}
.vxa2-cl-sheet{width:min(900px,94vw)!important;max-height:min(84vh,850px)!important;padding:20px!important;border-radius:24px!important;
  background:linear-gradient(180deg,rgba(18,19,20,.995),rgba(8,9,10,.995))!important;
  border:1px solid rgba(255,255,255,.085)!important;box-shadow:0 36px 120px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.035)!important}
.vxa2-cl-kicker{color:#8c9299!important}.vxa2-cl-head b{color:#f1eee9!important}.vxa2-cl-head small{color:#858b91!important}
.vxa2-cl-hero{background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.018))!important;border-color:rgba(255,255,255,.075)!important;box-shadow:none!important}
.vxa2-cl-hero>div:first-child>span{color:#8e949a!important}.vxa2-cl-hero>div:first-child>b{color:#f0ede7!important}
.vxa2-cl-hero-metrics em,.vxa2-cl-metrics em{background:rgba(255,255,255,.025)!important;border-color:rgba(255,255,255,.065)!important}
.vxa2-cl-hero-metrics strong,.vxa2-cl-metrics strong{color:#e6e2dc!important}.vxa2-cl-hero-metrics .raw strong,.vxa2-cl-metrics .raw strong{color:#cdb778!important}.vxa2-cl-hero-metrics .good strong,.vxa2-cl-metrics .good strong{color:#72d99a!important}
.vxa2-collect-all,.vxa2-collect{background:rgba(255,255,255,.045)!important;border-color:rgba(255,255,255,.095)!important;color:#e7e1d9!important;box-shadow:none!important}
.vxa2-collect-all:hover,.vxa2-collect:hover{background:rgba(255,255,255,.075)!important;border-color:rgba(255,255,255,.16)!important}
.vxa2-cl-card{grid-template-columns:38px 1fr auto!important;padding:13px 14px!important;border-radius:16px!important;background:rgba(255,255,255,.018)!important;border-color:rgba(255,255,255,.065)!important;box-shadow:none!important}
.vxa2-cl-card:hover{background:rgba(255,255,255,.026)!important;border-color:rgba(255,255,255,.11)!important}
.vxa2-cl-card:before{display:none!important}.vxa2-cl-icon{width:36px!important;height:36px!important;border-radius:11px!important;background:rgba(255,255,255,.035)!important;border-color:rgba(255,255,255,.075)!important}
.vxa2-cl-icon.hunt{color:#cbb377!important}.vxa2-cl-icon.lucky{color:#a99ad3!important}
.vxa2-cl-ready{background:rgba(88,208,139,.07)!important;border-color:rgba(88,208,139,.17)!important;color:#6bd99b!important}
.vxa2-cl-outcome{background:rgba(255,255,255,.035)!important;border-color:rgba(255,255,255,.07)!important;color:#9ca2a8!important}.vxa2-cl-outcome.won{color:#7bdca0!important;border-color:rgba(83,214,143,.16)!important;background:rgba(83,214,143,.055)!important}
.vxa2-cl-lanes i{background:rgba(255,255,255,.03)!important;border-color:rgba(255,255,255,.065)!important;color:#a8adb1!important}.vxa2-cl-lanes i.win{color:#d8c68f!important;border-color:rgba(208,185,120,.22)!important;background:rgba(208,185,120,.06)!important}
.vxa2-cl-summary b{background:rgba(255,255,255,.05)!important;border-color:rgba(255,255,255,.08)!important;color:#c8c9ca!important}
.vxa2-cl-disclosure{background:rgba(255,255,255,.018)!important;border-color:rgba(255,255,255,.065)!important}.vxa2-cl-disclosure b{color:#b8bec4!important}.vxa2-cl-disclosure span{color:#7f878e!important}
.vxa2-cl-metrics{grid-template-columns:repeat(4,minmax(100px,1fr))!important}
@media(max-width:760px){.vxa2-cl-metrics{grid-template-columns:repeat(2,1fr)!important}.vxa2-cl-card{grid-template-columns:34px 1fr!important}.vxa2-cl-action{grid-column:2;justify-items:start!important}}


/* ========================================================================== 
   REV9 · FULL-WIDTH REWARDS TOOLBAR
   Rewards belongs to the bottom edge of the Hunt play card, not a floating
   compact pill. Keep it quiet, premium and aligned with the other Vein bars.
   ========================================================================== */
#vx-hunt-plays{
  display:block!important;width:100%!important;min-height:58px!important;
  padding:0!important;border-top:1px solid rgba(255,255,255,.055)!important;
  background:linear-gradient(180deg,rgba(14,14,14,.82),rgba(9,9,9,.92))!important;
}
#vx-hunt-plays .vxa2-claims-btn{
  width:100%!important;min-width:0!important;height:58px!important;min-height:58px!important;
  padding:0 22px!important;border:0!important;border-radius:0 0 18px 18px!important;
  display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:12px!important;
  background:transparent!important;box-shadow:none!important;color:#e9e4dc!important;text-align:left!important;
}
#vx-hunt-plays .vxa2-claims-btn:hover{background:rgba(255,255,255,.028)!important}
#vx-hunt-plays .vxa2-reward-mark{
  width:30px!important;height:30px!important;border-radius:10px!important;
  background:rgba(255,255,255,.035)!important;border:1px solid rgba(255,255,255,.08)!important;
  color:#c8b27b!important;font-size:13px!important;flex:0 0 auto!important;
}
#vx-hunt-plays .vxa2-reward-copy{display:grid!important;gap:3px!important;min-width:0!important}
#vx-hunt-plays .vxa2-reward-label{font-size:13px!important;font-weight:760!important;color:#eee9e2!important}
#vx-hunt-plays .vxa2-reward-copy small{font:500 10px/1.2 var(--sans)!important;color:#77736e!important}
#vx-hunt-plays .vxa2-reward-open{
  margin-left:auto!important;font:700 10px/1 var(--sans)!important;color:#aaa39a!important;
  padding:7px 10px!important;border-radius:9px!important;border:1px solid rgba(255,255,255,.07)!important;
  background:rgba(255,255,255,.025)!important;
}
#vx-hunt-plays .vxa2-reward-count{
  min-width:24px!important;height:24px!important;margin-left:0!important;padding:0 7px!important;
  border-radius:999px!important;background:rgba(194,165,96,.12)!important;border:1px solid rgba(194,165,96,.18)!important;
  color:#d8c38e!important;box-shadow:none!important;font-size:9px!important;
}
@media(max-width:640px){
  #vx-hunt-plays .vxa2-claims-btn{padding:0 14px!important}
  #vx-hunt-plays .vxa2-reward-open{display:none!important}
}

/* ===== vein-swap.css ===== */
/* ============================================================================
   THE VEIN — trade terminal + chart  ·  v20260809-mainnet-1
   Companion to vein-swap.js. Same language as the-vein.css / vein-auto.css:
   warm glass, ember→gold, Unbounded display, Geist Mono data. Prefix vxs-.
   One integrated module: chart left, ticket right, sharing a single frame so
   they read as one instrument, not two widgets.
   ========================================================================== */

.vxs-wrap{margin-top:14px}
#vxs-root{
  display:grid;grid-template-columns:1.6fr 1fr;gap:0;overflow:hidden;
  border:1px solid var(--edge-2,rgba(255,255,255,.09));border-radius:20px;
  background:linear-gradient(180deg,rgba(16,15,14,.92),rgba(10,10,11,.94));
  box-shadow:0 12px 44px rgba(0,0,0,.45);
}

/* ── shared header strip ── */
.vxs-head{
  grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:18px;
  padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.06);
  background:rgba(0,0,0,.3);
}
.vxs-pairmark{display:flex;align-items:center;gap:10px}
.vxs-pairmark img{width:32px;height:32px;border-radius:50%;object-fit:contain;filter:drop-shadow(0 0 8px rgba(255,184,64,.18))}
.vxs-pairmark b{font:800 16px/1 var(--sans,Geist);color:var(--ink,#f5efe8)}
.vxs-pairmark small{display:block;font:400 10px/1.3 var(--mono);color:var(--ink-4,#6a645d)}
.vxs-fact{display:grid;gap:3px}
.vxs-fact small{font:500 9px/1 var(--mono);letter-spacing:.12em;color:var(--ink-4,#6a645d)}
.vxs-fact b{font:700 13px/1 var(--mono);color:var(--ink,#f5efe8)}
.vxs-chg.up{color:var(--green,#7adc8c)}
.vxs-chg.down{color:#f06e5a}
.vxs-netpill{margin-left:auto;display:flex;align-items:center;gap:6px;
  padding:6px 10px;border-radius:999px;border:1px solid var(--edge-2,rgba(255,255,255,.09));
  background:rgba(255,255,255,.04);font:600 11px/1 var(--mono);color:var(--ink-2,#d9d2c9)}
.vxs-netpill i{width:6px;height:6px;border-radius:50%;background:var(--green,#7adc8c);
  box-shadow:0 0 8px var(--green,#7adc8c)}

/* ── chart side ── */
.vxs-chartside{position:relative;padding:12px 6px 6px 6px;min-height:340px;
  border-right:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column}
.vxs-tfs{display:flex;gap:6px;padding:0 10px 8px}
.vxs-tfs button{
  appearance:none;border:1px solid transparent;background:transparent;cursor:pointer;
  padding:5px 10px;border-radius:8px;font:600 11px/1 var(--mono);color:var(--ink-4,#6a645d);
  transition:color .15s,background .15s;
}
.vxs-tfs button:hover{color:var(--ink,#f5efe8)}
.vxs-tfs button.on{color:var(--gold,#ffc857);background:rgba(249,115,22,.1);
  border-color:var(--edge,rgba(249,115,22,.3))}
#vxs-chart{flex:1;width:100%;min-height:260px;display:block}
#vxs-chart-empty{
  position:absolute;inset:44px 10px 10px;display:grid;place-items:center;text-align:center;
  border:1px dashed rgba(255,255,255,.1);border-radius:14px;
  font:400 13px/1.6 var(--sans);color:var(--ink-4,#6a645d);padding:20px;
}
#vxs-chart-empty b{display:block;font:700 14px/1.4 var(--sans);color:var(--ink-3,#9a938b)}

/* ── ticket side ── */
.vxs-ticket{position:relative;padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px}

.vxs-sides{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vxs-sides button{
  appearance:none;border:1px solid var(--edge-2,rgba(255,255,255,.09));cursor:pointer;
  padding:11px;border-radius:12px;background:rgba(255,255,255,.03);
  font:800 14px/1 var(--sans);color:var(--ink-3,#9a938b);
  transition:all .18s;
}
#vxs-side-buy.on{color:#0e1a10;background:linear-gradient(90deg,#5fbf72,#8ce49b);border-color:transparent}
#vxs-side-sell.on{color:#1c0c08;background:linear-gradient(90deg,#e0684f,#f0937a);border-color:transparent}

.vxs-amtbox{border:1px solid rgba(255,255,255,.08);border-radius:14px;
  background:rgba(255,255,255,.02);padding:10px 12px}
.vxs-amtbox small{display:flex;justify-content:space-between;
  font:400 11px/1 var(--sans);color:var(--ink-4,#6a645d);margin-bottom:6px}
.vxs-amtrow{display:flex;align-items:center;gap:8px}
#vxs-amt{flex:1;background:transparent;border:0;outline:0;min-width:0;
  font:800 26px/1 var(--sans);color:var(--ink,#f5efe8)}
#vxs-amt::placeholder{color:var(--ink-4,#5c5751)}
#vxs-from-unit{font:700 12px/1 var(--mono);color:var(--gold,#ffc857);
  padding:5px 9px;border-radius:999px;border:1px solid var(--edge,rgba(249,115,22,.3));
  background:rgba(249,115,22,.1)}
.vxs-qs{display:flex;gap:6px;margin-top:8px}
.vxs-qs button{flex:1;appearance:none;border:1px solid rgba(255,255,255,.08);cursor:pointer;
  background:rgba(255,255,255,.04);color:var(--ink-3,#9a938b);border-radius:8px;
  padding:6px 0;font:600 11px/1 var(--mono);transition:background .15s,color .15s}
.vxs-qs button:hover{background:rgba(255,255,255,.09);color:var(--ink,#f5efe8)}

/* quote card */
.vxs-quote{display:grid;gap:7px;border:1px solid rgba(255,255,255,.06);border-radius:14px;
  padding:11px 12px;background:rgba(0,0,0,.25)}
.vxs-quote>div{display:flex;justify-content:space-between;align-items:baseline}
.vxs-quote span{font:400 12px/1 var(--sans);color:var(--ink-4,#8a847c)}
.vxs-quote b{font:700 13px/1 var(--mono);color:var(--ink,#f5efe8)}
.vxs-quote b.warn{color:var(--gold,#ffc857)}
.vxs-quote b.bad{color:#f06e5a}
#vxs-out{font-size:16px;color:var(--gold,#ffc857)}

/* slippage */
.vxs-slip{display:flex;align-items:center;gap:6px}
.vxs-slip small{font:400 11px/1 var(--sans);color:var(--ink-4,#6a645d);margin-right:auto}
.vxs-slip button{appearance:none;border:1px solid rgba(255,255,255,.08);cursor:pointer;
  background:rgba(255,255,255,.04);color:var(--ink-3,#9a938b);border-radius:8px;
  padding:5px 9px;font:600 11px/1 var(--mono);transition:all .15s}
.vxs-slip button.on{color:var(--gold,#ffc857);border-color:var(--edge,rgba(249,115,22,.3));
  background:rgba(249,115,22,.1)}

/* go */
#vxs-go{
  appearance:none;border:0;cursor:pointer;padding:15px;border-radius:14px;
  background:linear-gradient(90deg,#5fbf72,#8ce49b);color:#0e1a10;
  font:800 15px/1 var(--sans);transition:filter .18s,transform .12s,opacity .2s;
}
#vxs-go.sell{background:linear-gradient(90deg,#e0684f,#f0937a);color:#1c0c08}
#vxs-go:hover:not(:disabled){filter:brightness(1.07)}
#vxs-go:active:not(:disabled){transform:translateY(1px)}
#vxs-go:disabled{background:rgba(255,255,255,.05);color:var(--ink-4,#6a645d);cursor:not-allowed}
#vxs-note{min-height:15px;text-align:center;font:400 11.5px/1.45 var(--sans);color:var(--ink-4,#8a847c)}
#vxs-note.err{color:#f0937a}

/* awaiting-liquidity veil: the ticket is visible and honest, not hidden */
#vxs-wait{
  position:absolute;inset:0;display:grid;place-items:center;z-index:3;text-align:center;
  background:linear-gradient(180deg,rgba(10,9,8,.72),rgba(10,9,8,.86));
  backdrop-filter:blur(2px);padding:24px;
}
#vxs-wait>div{max-width:300px}
#vxs-wait b{display:block;font:800 15px/1.4 var(--sans);color:var(--gold,#ffc857);margin-bottom:6px}
#vxs-wait p{font:400 12.5px/1.6 var(--sans);color:var(--ink-3,#9a938b);margin:0}
.vxs-wait-dot{width:9px;height:9px;border-radius:50%;margin:0 auto 10px;
  background:var(--gold,#ffc857);box-shadow:0 0 14px var(--gold,#ffc857);
  animation:vxswait 2s ease-in-out infinite}
@keyframes vxswait{0%,100%{opacity:1}50%{opacity:.3}}

/* ── responsive ── */
@media (max-width:900px){
  #vxs-root{grid-template-columns:1fr}
  .vxs-chartside{border-right:0;border-bottom:1px solid rgba(255,255,255,.06);min-height:280px}
}
@media (prefers-reduced-motion:reduce){
  .vxs-wait-dot{animation:none}
}

/* ============================================================
   LIVE UNISWAP V4
   The legacy pre-liquidity cover must disappear once the
   V4 status endpoint has armed the terminal.
   ============================================================ */
#vxs-wait[hidden] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

#vxs-root.vxs-armed #vxs-wait {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

#vxs-root.vxs-armed .vxs-ticket,
#vxs-root.vxs-armed .vxs-chartside {
  pointer-events: auto !important;
}

/* ===== vein-info.css ===== */
/* ============================================================================
   THE VEIN — info panels + motion  ·  v20260809-mainnet-1
   Companion to vein-info.js. Prefix vxi-. Two halves:
     · the info surfaces (window meters, results ledger, emission, register)
     · the site-wide motion layer (entrances, jackpot bump, press feedback)
   Motion touches transform/opacity/filter ONLY — nothing that reflows — and
   every animation dies under prefers-reduced-motion.
   ========================================================================== */

/* ── window meters ── */
.vxi-meters{display:grid;gap:10px;margin-top:12px}
.vxi-meter{border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:11px 13px;
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.18))}
.vxi-meter-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.vxi-meter-top b{font:800 11px/1 var(--mono,ui-monospace);letter-spacing:.14em;color:var(--ink,#f5efe8)}
.vxi-meter-top em{margin-left:auto;font:400 10px/1 var(--sans);font-style:normal;color:var(--ink-4,#6a645d)}
.vxi-chip{font:700 9px/1 var(--mono);letter-spacing:.1em;padding:4px 8px;border-radius:999px;
  border:1px solid rgba(255,255,255,.12);color:var(--ink-3,#9a938b);background:rgba(255,255,255,.04)}
.vxi-chip.armed{color:var(--gold,#ffc857);border-color:rgba(255,200,87,.4);background:rgba(255,200,87,.08);
  animation:vxichip 2.2s ease-in-out infinite}
.vxi-chip.forced{color:#0e1a10;border-color:transparent;
  background:linear-gradient(90deg,#5fbf72,#8ce49b);animation:vxichip 1.4s ease-in-out infinite}
@keyframes vxichip{0%,100%{filter:brightness(1)}50%{filter:brightness(1.35)}}
.vxi-bar{position:relative;height:8px;border-radius:999px;background:rgba(255,255,255,.06);overflow:visible}
.vxi-bar i{display:block;height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,var(--ember,#f97316),var(--gold,#ffc857));
  transition:width .8s cubic-bezier(.2,.8,.2,1)}
.vxi-bar i.armed{box-shadow:0 0 12px rgba(255,200,87,.5)}
.vxi-bar i.forced{background:linear-gradient(90deg,#5fbf72,#8ce49b);box-shadow:0 0 14px rgba(122,220,140,.55)}
.vxi-bar u{position:absolute;top:-3px;bottom:-3px;width:2px;background:rgba(255,255,255,.5);
  border-radius:2px;text-decoration:none}
.vxi-meter small{display:block;margin-top:7px;font:400 11px/1.5 var(--sans);color:var(--ink-4,#8a847c)}

/* ── results ledger ── */
.vxi-hist{display:grid;gap:7px}
.vxi-row{display:grid;grid-template-columns:auto auto 1fr;gap:12px;align-items:baseline;
  padding:10px 12px;border:1px solid rgba(255,255,255,.06);border-radius:12px;
  background:rgba(255,255,255,.02);transition:background .18s,border-color .18s,transform .18s}
.vxi-row:hover{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.12);transform:translateX(2px)}
.vxi-row.golden{border-color:rgba(255,200,87,.35);
  background:linear-gradient(90deg,rgba(255,200,87,.07),rgba(255,255,255,.02))}
.vxi-row.void{opacity:.7}
.vxi-no{font:700 12px/1 var(--mono);color:var(--ink-4,#6a645d)}
.vxi-win{font:700 13px/1.2 var(--sans);color:var(--ink,#f5efe8)}
.vxi-facts{font:400 11px/1.4 var(--sans);color:var(--ink-3,#9a938b);text-align:right}
.vxi-gold{color:var(--gold,#ffc857)}
.vxi-empty{padding:18px 12px;text-align:center;font:400 12.5px/1.5 var(--sans);color:var(--ink-4,#6a645d);
  border:1px dashed rgba(255,255,255,.1);border-radius:12px}

/* ── emission observatory ── */
#vxi-emission .vxi-erow{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap}
#vxi-emission .vxi-erow b{font:800 15px/1 var(--sans);color:var(--ink,#f5efe8)}
#vxi-emission .vxi-erow span{font:400 12px/1 var(--sans);color:var(--ink-3,#9a938b)}
#vxi-emission .vxi-ebar{height:10px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden;margin:6px 0 8px}
#vxi-emission .vxi-ebar i{display:block;height:100%;width:0;
  background:linear-gradient(90deg,var(--ember,#f97316),var(--gold,#ffc857));
  transition:width .8s cubic-bezier(.2,.8,.2,1)}
#vxi-emission small{display:block;font:400 11.5px/1.6 var(--sans);color:var(--ink-4,#8a847c)}

/* ── contract register ── */
#vxi-contracts{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:9px}
.vxi-caddr{display:grid;gap:3px;padding:11px 12px;border-radius:12px;text-decoration:none;
  border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.02);
  transition:border-color .18s,background .18s,transform .18s}
.vxi-caddr:hover{border-color:rgba(255,200,87,.35);background:rgba(255,200,87,.05);transform:translateY(-2px)}
.vxi-caddr b{font:700 12.5px/1.2 var(--sans);color:var(--ink,#f5efe8)}
.vxi-caddr small{font:400 10.5px/1.3 var(--sans);color:var(--ink-4,#6a645d)}
.vxi-caddr code{font:500 10.5px/1 var(--mono);color:var(--gold,#ffc857);margin-top:3px}

/* ── the know-the-game cards ── */
.vxi-know{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:14px}
.vxi-know article{padding:15px 16px;border-radius:16px;border:1px solid rgba(255,255,255,.07);
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.vxi-know h4{margin:0 0 7px;font:800 13.5px/1.3 var(--sans);color:var(--gold,#ffc857)}
.vxi-know p{margin:0;font:400 12.5px/1.65 var(--sans);color:var(--ink-2,#cfc8bf)}
.vxi-know p b{color:var(--ink,#f5efe8)}


/* ── guide proof cards: emission + deployed contracts ── */
.vxi-proof-stack{display:grid;gap:12px;margin:14px 0 18px}
.vxi-proof-card{padding:19px 20px;overflow:hidden}
.vxi-proof-head h3{margin:6px 0 0;font:800 19px/1.2 var(--display,var(--sans));letter-spacing:-.015em;color:var(--ink,#f5efe8)}
.vxi-proof-head p{margin:7px 0 0;max-width:34ch;font:400 11.5px/1.55 var(--sans);color:var(--ink-4,#8a847c)}

.vxi-emission-card{display:grid;grid-template-columns:minmax(240px,.72fr) minmax(0,1.55fr);gap:24px;align-items:stretch}
.vxi-emission-card>.vxi-proof-head{display:flex;flex-direction:column;justify-content:center;padding-right:24px;border-right:1px solid rgba(255,255,255,.07)}
.vxi-emission-body{display:flex;flex-direction:column;justify-content:center;min-width:0}
.vxi-emission-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px;margin-bottom:11px}
.vxi-emission-grid>div{min-width:0;padding:10px 11px;border:1px solid rgba(255,255,255,.06);border-radius:10px;background:rgba(0,0,0,.22)}
.vxi-emission-grid small{display:block;margin:0 0 5px;font:700 7.5px/1 var(--mono);letter-spacing:.14em;color:var(--ink-4,#8a847c)}
.vxi-emission-grid b,.vxi-emission-grid span{display:block;overflow:hidden;text-overflow:ellipsis;font:700 13px/1.2 var(--sans);color:var(--ink-2,#d8d1c8);white-space:nowrap}
.vxi-emission-grid b{font:800 14px/1.2 var(--display,var(--sans));color:var(--gold,#ffc857)}
#vxi-emission .vxi-ebar{height:7px;margin:0 0 9px}
.vxi-emission-meta{display:grid;grid-template-columns:1fr 1fr;gap:16px}
#vxi-emission .vxi-emission-meta small{margin:0;font:400 10.5px/1.5 var(--sans);color:var(--ink-4,#8a847c)}

.vxi-contract-card{padding:20px}
.vxi-contract-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}
.vxi-contract-head .vx-chip{flex:none;font-size:8.5px;letter-spacing:.1em}
.vxi-contract-intro{margin:8px 0 14px;max-width:86ch;font:400 11.5px/1.55 var(--sans);color:var(--ink-3,#aaa39b)}
#vxi-contracts{display:flex;flex-wrap:wrap;gap:8px}
#vxi-contracts .vxi-caddr{flex:1 1 210px;min-width:min(210px,100%)}
.vxi-contract-empty{flex:1 1 100%;padding:12px 13px;border:1px solid rgba(255,255,255,.06);border-radius:10px;background:rgba(0,0,0,.2);font:400 11.5px/1.5 var(--sans);color:var(--ink-4,#8a847c)}

@media (max-width:900px){
  .vxi-emission-card{grid-template-columns:1fr;gap:15px}
  .vxi-emission-card>.vxi-proof-head{padding:0 0 14px;border-right:0;border-bottom:1px solid rgba(255,255,255,.07)}
}
@media (max-width:620px){
  .vxi-proof-stack{gap:10px;margin:12px 0 16px}
  .vxi-proof-card,.vxi-contract-card{padding:15px}
  .vxi-emission-grid{grid-template-columns:1fr 1fr}
  .vxi-emission-main{grid-column:1/-1}
  .vxi-emission-meta{grid-template-columns:1fr;gap:4px}
  .vxi-contract-head{align-items:flex-start;flex-direction:column;gap:9px}
  .vxi-contract-intro{margin-top:7px}
}

/* ══════════════════ MOTION LAYER ══════════════════ */

/* Staggered card entrance when a view opens. Composited only. */
.vxi-in{animation:vxiin .5s cubic-bezier(.2,.85,.25,1) both;animation-delay:var(--vxi-d,0ms)}
@keyframes vxiin{
  from{opacity:0;transform:translateY(14px) scale(.985)}
  to{opacity:1;transform:none}
}

/* Jackpot bump: fired by vein-info.js when a watched figure INCREASES. */
.vxi-bump{animation:vxibump 1.25s cubic-bezier(.2,.8,.3,1)}
@keyframes vxibump{
  0%{filter:brightness(1)}
  18%{filter:brightness(1.45) drop-shadow(0 0 22px rgba(255,200,87,.55));transform:scale(1.012)}
  100%{filter:brightness(1);transform:none}
}

/* Press feedback everywhere the vx family lives — transform only. */
.vx-shell button:not(:disabled):active,
.vxa2 button:not(:disabled):active,
#vxs-root button:not(:disabled):active{transform:translateY(1px) scale(.985)}
.vx-shell button,.vxa2 button,#vxs-root button{
  transition-property:transform,background,border-color,color,filter,box-shadow;
  transition-duration:.16s}

/* Card lift on hover for the glass family (composited). */
.vx-glass{transition:transform .22s cubic-bezier(.2,.8,.3,1),box-shadow .22s}
@media (hover:hover){
  .vx-glass:hover{transform:translateY(-2px)}
}

/* Focus visibility — premium is also accessible. */
.vx-shell :focus-visible,.vxa2 :focus-visible,#vxs-root :focus-visible{
  outline:2px solid rgba(255,200,87,.65);outline-offset:2px;border-radius:6px}

@media (prefers-reduced-motion:reduce){
  .vxi-in,.vxi-bump{animation:none!important}
  .vxi-chip.armed,.vxi-chip.forced{animation:none!important}
  .vx-glass,.vx-shell button,.vxa2 button,#vxs-root button{transition:none!important}
}


/* Jackpot strike windows are shown as exact contract ranges. They are not
   converted into a fake fixed probability. */
.vxi-chip.vxi-chip-window{min-width:92px;text-align:center;color:var(--gold,#ffc857);
  border-color:rgba(255,200,87,.26);background:rgba(255,200,87,.07)}
.vxi-chip.vxi-chip-window.armed{color:var(--gold,#ffc857)}
.vxi-chip.vxi-chip-window.forced{color:#0e1a10}

/* ========================================================================== 
   VEIN STEP 4 — HOW IT WORKS / START HERE
   The old auto-fit grid could create a five-card row plus one orphan card,
   which left a large dead field. This section now follows the same hierarchy
   as the detailed guide below: section header, 3×2 aligned cards, strong
   answer line, then concise supporting copy.
   ========================================================================== */
.vxi-know-wrap{margin:14px 0 16px;padding:18px;border:1px solid rgba(255,255,255,.07);
  border-radius:var(--rad-lg,18px);background:linear-gradient(180deg,rgba(255,255,255,.022),rgba(0,0,0,.12))}
.vxi-know-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:0 2px 14px}
.vxi-know-head h3{margin:5px 0 0;font:800 18px/1.2 var(--display,var(--sans));letter-spacing:-.015em;color:var(--ink,#f5efe8)}
.vxi-know-head>p{margin:0;max-width:470px;font:400 11.5px/1.55 var(--sans);color:var(--ink-4,#8a847c);text-align:right}

.vxi-know{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:0}
.vxi-know article{min-width:0;padding:16px 17px 17px;border-radius:14px;border-color:rgba(255,255,255,.065);
  background:linear-gradient(155deg,rgba(255,255,255,.032),rgba(0,0,0,.18));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.vxi-know article>header{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.vxi-know article>header>span{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:8px;
  border:1px solid rgba(255,200,87,.18);background:rgba(255,200,87,.06);
  font:700 8.5px/1 var(--mono);letter-spacing:.08em;color:var(--gold,#ffc857)}
.vxi-know h4{margin:0;font:750 13.5px/1.25 var(--sans);color:var(--ink,#f5efe8)}
.vxi-know article>strong{display:block;margin:0 0 6px;font:700 12px/1.35 var(--sans);color:var(--gold,#ffc857)}
.vxi-know p{font:400 11.5px/1.55 var(--sans);color:var(--ink-3,#aaa39b)}
.vxi-know p b{font-weight:700;color:var(--ink-2,#d8d1c8)}
.vxi-know-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0 0 8px}
.vxi-know-stats>span{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:8px 9px;
  border-radius:10px;border:1px solid rgba(255,200,87,.12);background:rgba(0,0,0,.22)}
.vxi-know-stats small{font:700 7.5px/1 var(--mono);letter-spacing:.12em;color:var(--ink-4,#8a847c)}
.vxi-know-stats b{font:800 13px/1 var(--display,var(--sans));color:var(--gold,#ffc857);white-space:nowrap}

.vxi-know-windows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:9px;padding-top:9px;border-top:1px solid rgba(255,255,255,.06)}
.vxi-know-windows>small{grid-column:1/-1;font:700 7px/1 var(--mono);letter-spacing:.14em;color:var(--ink-4,#8a847c)}
.vxi-know-windows>span{display:grid;gap:3px;min-width:0;padding:7px 8px;border-radius:9px;background:rgba(0,0,0,.18)}
.vxi-know-windows em{font:600 8px/1 var(--sans);font-style:normal;color:var(--ink-4,#8a847c)}
.vxi-know-windows b{font:700 9px/1.25 var(--sans);color:var(--ink-2,#d8d1c8)}

@media (max-width:1100px){
  .vxi-know{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .vxi-know-wrap{padding:14px}
  .vxi-know-head{align-items:flex-start;flex-direction:column;gap:7px}
  .vxi-know-head>p{max-width:none;text-align:left}
}
@media (max-width:640px){
  .vxi-know{grid-template-columns:1fr}
  .vxi-know article{padding:15px}
  .vxi-know-windows{grid-template-columns:1fr}
  .vxi-know-windows>small{grid-column:auto}
}


/* ========================================================================== 
   VEIN STEP 9 — PLAYER ODDS, NOT STRIKE COUNTDOWNS
   ========================================================================== */
#vxi-lode-meters{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px}
.vxi-meter-odds{padding:10px 11px;border-radius:12px;background:rgba(0,0,0,.2)}
.vxi-meter-odds .vxi-meter-top{margin:0 0 7px;gap:8px}
.vxi-meter-odds .vxi-meter-top b{font-size:8.5px;letter-spacing:.11em}
.vxi-meter-odds .vxi-meter-top em{font-size:9px;color:var(--gold,#ffc857);white-space:nowrap}
.vxi-meter-oddsval{display:block;font:750 11.5px/1.3 var(--sans);color:var(--ink,#f5efe8)}
.vxi-meter-odds small{margin-top:4px;font-size:9.5px;line-height:1.35;color:var(--ink-4,#8a847c)}

.vxi-know-stats-odds{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:9px}
.vxi-know-stats-odds>span{display:grid;align-content:center;gap:5px;min-height:54px}
.vxi-know-stats-odds small{line-height:1.25}
.vxi-know-stats-odds b{font-size:13px;white-space:normal}

@media (max-width:760px){
  #vxi-lode-meters{grid-template-columns:1fr}
  .vxi-know-stats-odds{grid-template-columns:1fr}
  .vxi-know-stats-odds>span{min-height:0}
}

/* Step 9: keep the Motherlode explanation compact. */
.vx-mother-note{margin-top:14px;max-width:none}

/* ========================================================================== 
   VEIN SAFE UI PASS — compact, contract-derived Motherlode information
   ========================================================================== */
#vxi-lode-meters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:9px;width:100%}
#vxi-lode-meters .vxi-meter{min-width:0;padding:9px 10px;border-radius:11px;border:1px solid rgba(255,200,87,.12);background:rgba(0,0,0,.20)}
#vxi-lode-meters .vxi-meter-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 6px}
#vxi-lode-meters .vxi-meter-top b{font:800 8px/1 var(--mono);letter-spacing:.10em;color:var(--ink,#f5efe8)}
#vxi-lode-meters .vxi-meter-top em{font:700 8.5px/1 var(--mono);font-style:normal;color:var(--gold,#ffc857);white-space:nowrap}
#vxi-lode-meters .vxi-meter-main{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px}
#vxi-lode-meters .vxi-chip-window{min-width:0;padding:5px 7px;border-radius:8px;font:700 7.5px/1.1 var(--mono);letter-spacing:.04em;white-space:nowrap}
#vxi-lode-meters .vxi-meter-oddsval{min-width:0;font:750 10px/1.2 var(--sans);color:var(--green,#7adc8c);text-align:right;white-space:nowrap}
#vxi-lode-meters .vxi-meter small{display:block;margin-top:5px;font:500 8px/1.25 var(--sans);color:var(--ink-4,#8a847c);white-space:normal}
#vxi-lode-meters .vxi-meter[data-window-state="armed"]{border-color:rgba(255,200,87,.34);background:rgba(255,200,87,.055)}
#vxi-lode-meters .vxi-meter[data-window-state="forced"]{border-color:rgba(122,220,140,.38);background:rgba(46,120,65,.10)}
#vxi-lode-meters .vxi-chip-window.forced{background:rgba(122,220,140,.88);border-color:transparent;color:#0c170f}

@media (max-width:760px){
  #vxi-lode-meters{grid-template-columns:1fr}
  #vxi-lode-meters .vxi-meter-main{grid-template-columns:auto 1fr}
}


/* ========================================================================== 
   VEIN UI ROUND 2 — Motherlode hero: total first, average strike cadence below
   ========================================================================== */
#vxi-lode-meters .vxi-meter{padding:10px 11px!important}
#vxi-lode-meters .vxi-meter-main{grid-template-columns:auto minmax(0,1fr)!important;gap:9px!important}
#vxi-lode-meters .vxi-chip-window{
  color:var(--ink-4,#8a847c)!important;
  background:rgba(255,255,255,.035)!important;
  border-color:rgba(255,255,255,.08)!important;
  letter-spacing:.10em!important;
}
#vxi-lode-meters .vxi-meter-oddsval{
  font:800 12px/1.15 var(--display,var(--sans))!important;
  color:var(--green,#7adc8c)!important;
  text-align:right!important;
}
#vxi-lode-meters .vxi-meter small:empty{display:none!important}


/* VEIN UI ROUND 3 — one compact average-strike pill */
#vxi-lode-meters .vxi-meter-main{
  display:inline-flex!important;align-items:center!important;justify-content:flex-start!important;
  width:max-content!important;max-width:100%!important;gap:6px!important;
  padding:4px 7px!important;border:1px solid rgba(255,255,255,.08)!important;
  border-radius:8px!important;background:rgba(255,255,255,.035)!important;
}
#vxi-lode-meters .vxi-chip-window{
  padding:0!important;border:0!important;background:transparent!important;
  font:700 7px/1 var(--mono)!important;letter-spacing:.08em!important;
}
#vxi-lode-meters .vxi-meter-oddsval{
  padding:0!important;font:800 9.5px/1 var(--display,var(--sans))!important;
  text-align:left!important;white-space:nowrap!important;
}

/* ===== inline <style> in vein.html (cascade position preserved) ===== */
[data-vein-preview="0"] #vx-hist-rows{display:none}#vx-netbar,#vxu-netbar,.vxu-netbar{display:none!important}

/* ===== the-vein.css ===== */
/* ============================================================================
   THE VEIN — Final V1  ·  v20260802c
   CaveWatch design language, restored. Unbounded display, Geist body, Geist
   Mono for data. Warm glass surfaces, ember→gold gradients, rounded premium
   geometry, the phase DIAL, the sticky TICKER. The game art from the design
   reference is wrapped INSIDE those surfaces rather than replacing them.
   Class prefix vx- (deliberately avoids the motion engine's substring claims:
   -card/-tile/-stat/-panel/-rail/-slab).
   ========================================================================== */

.vx-body{
  background:
    radial-gradient(circle at 12% -8%,rgba(249,115,22,.065),transparent 30%),
    radial-gradient(circle at 88% 5%,rgba(255,200,87,.025),transparent 26%),
    var(--void)!important;
  color:var(--ink);font-family:var(--sans)}
.vx-shell{max-width:1360px!important;padding-bottom:110px}
.vx-shell *{box-sizing:border-box}
.vx-shell b,.vx-shell strong,.vx-shell input{font-variant-numeric:tabular-nums}

/* [hidden] MUST beat this file's own display rules — several vx- elements ship
   hidden and set display:grid/flex below. An author display rule outranks the
   UA hidden rule, which would leave them on screen at first paint. */
[class^="vx-"][hidden],[class*=" vx-"][hidden],[id^="vx-"][hidden]{display:none!important}

/* ---- shared vocabulary --------------------------------------------------- */
.vx-gold{color:var(--gold)}
.vx-eyebrow{display:inline-flex;align-items:center;gap:var(--s2);font-family:var(--mono);font-weight:600;
  font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--amber)}
.vx-eyebrow-red{color:var(--red)}
.vx-dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);
  animation:vx-live 2s ease-in-out infinite;flex:none}
@keyframes vx-live{0%,100%{opacity:1}50%{opacity:.35}}
.vx-note{font-size:12.5px;line-height:1.6;color:var(--muted)}
.vx-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:var(--rad-pill);
  border:1px solid var(--edge-2);background:rgba(255,255,255,.045);font-family:var(--mono);font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);font-style:normal;white-space:nowrap}
.vx-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:var(--rad-pill);
  border:1px solid var(--edge);background:rgba(249,115,22,.1);font-family:var(--mono);font-size:10px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.vx-tag{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.vx-tag b{color:var(--gold)}

/* the one glass surface everything is built from */
.vx-glass{position:relative;border:1px solid var(--gline-2);border-radius:var(--rad-lg);
  background:var(--cw-card-bg);box-shadow:var(--elev-1),var(--inner-hi)}

/* buttons — CaveWatch primary/secondary */
.vx-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 20px;border-radius:var(--rad-sm);border:0;cursor:pointer;font-family:var(--sans);
  font-weight:700;font-size:13px;letter-spacing:.01em;transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-2),filter var(--dur-2)}
.vx-btn:hover:not(:disabled){transform:translateY(-1px)}
.vx-btn:active:not(:disabled){transform:translateY(0) scale(.985)}
.vx-btn:disabled{cursor:not-allowed;opacity:.45;filter:saturate(.5)}
.vx-btn-sm{padding:8px 14px;font-size:11.5px}
.vx-btn-lg{padding:15px 22px;font-size:14px;width:100%}
.vx-btn-primary{overflow:hidden;color:#15110D;
  background:linear-gradient(120deg,var(--gold) 0%,var(--amber) 46%,var(--ember) 100%);
  box-shadow:0 10px 30px rgba(243,166,15,.24),inset 0 1px 0 rgba(255,255,255,.35)}
.vx-btn-primary:hover:not(:disabled){box-shadow:0 16px 40px rgba(243,166,15,.34),inset 0 1px 0 rgba(255,255,255,.35)}
.vx-btn-primary:after{content:"";position:absolute;top:0;bottom:0;left:-70%;width:44%;transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);animation:vx-sheen 4.6s var(--ease) infinite}
@keyframes vx-sheen{0%,62%{left:-70%}86%,100%{left:140%}}
.vx-btn-secondary{color:var(--ink);border:1px solid var(--edge-2);background:var(--glass)}
.vx-btn-secondary:hover:not(:disabled){border-color:var(--edge);background:var(--glass-2)}
.vx-btn-danger{color:var(--red-lt);border:1px solid rgba(239,68,68,.4);background:rgba(239,68,68,.1)}
.vx-btn-danger:hover:not(:disabled){background:rgba(239,68,68,.18);box-shadow:0 10px 30px rgba(239,68,68,.18)}
.vx-sq{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:var(--rad-xs);
  border:1px solid var(--edge-2);background:rgba(0,0,0,.25);color:var(--muted);cursor:pointer;
  font-family:var(--sans);font-size:14px;transition:.15s}
.vx-sq:hover{color:var(--gold);border-color:var(--edge)}

/* USD hover conversion */
[data-usd]{position:relative;cursor:help}
[data-usd]:after{content:attr(data-usd-tip);position:absolute;left:50%;bottom:calc(100% + 8px);
  transform:translateX(-50%) translateY(4px);padding:6px 11px;border-radius:var(--rad-xs);
  border:1px solid var(--edge-2);background:rgba(11,10,8,.97);color:var(--ink);font-family:var(--mono);
  font-size:10.5px;letter-spacing:.02em;white-space:nowrap;opacity:0;pointer-events:none;z-index:60;
  box-shadow:var(--elev-2);transition:opacity var(--dur-1),transform var(--dur-1)}
[data-usd]:hover:after,[data-usd]:focus-visible:after{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============================================================================
   HERO
   ========================================================================== */
.vx-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.62fr);
  gap:36px;align-items:center;margin-top:8px;padding:44px 48px;border:1px solid var(--edge);border-radius:28px;
  background:
    radial-gradient(circle at 16% 22%,rgba(249,115,22,.22),transparent 38%),
    radial-gradient(circle at 80% 46%,rgba(255,191,73,.08),transparent 34%),
    linear-gradient(135deg,#1C1712 0%,#0B0A08 56%,#15110D 100%);
  box-shadow:var(--elev-3),var(--inner-hi);animation:vx-rise .7s var(--ease) both}
@keyframes vx-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.vx-noise{position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:
    radial-gradient(circle at 20% 30%,rgba(255,224,180,.5) 0 1px,transparent 1.6px),
    radial-gradient(circle at 80% 68%,rgba(252,163,76,.5) 0 1px,transparent 2px),
    radial-gradient(circle at 46% 84%,rgba(255,200,120,.35) 0 1px,transparent 1.4px);
  background-size:150px 140px,220px 190px,180px 170px;animation:vx-drift 26s linear infinite}
@keyframes vx-drift{to{background-position:150px 140px,-220px 190px,180px -170px}}
.vx-hero:before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(90% 58% at 50% 112%,rgba(249,115,22,.14),rgba(249,115,22,.05) 38%,transparent 74%);
  animation:vx-breathe 7s ease-in-out infinite}
@keyframes vx-breathe{0%,100%{opacity:.7}50%{opacity:1}}
.vx-hero-copy,.vx-round{position:relative;z-index:1}
.vx-hero-copy>*{animation:vx-rise .7s var(--ease) both}
.vx-hero-copy>*:nth-child(2){animation-delay:.06s}
.vx-hero-copy>*:nth-child(3){animation-delay:.12s}
.vx-hero-copy>*:nth-child(4){animation-delay:.18s}
.vx-hero-copy h1{margin:12px 0 10px;font-family:var(--display);font-weight:800;font-size:clamp(32px,4vw,46px);
  line-height:1.04;letter-spacing:-.02em;color:var(--ink)}
.vx-hero-copy h1 em{font-style:normal;background:linear-gradient(120deg,var(--gold),var(--ember));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.vx-hero-copy p{margin:0 0 22px;max-width:560px;font-size:14.5px;line-height:1.65;color:var(--muted)}
.vx-herostats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.vx-herostats article{padding:12px 14px;border-radius:var(--rad-md);border:1px solid var(--gline-2);
  background:rgba(255,255,255,.035);transition:border-color var(--dur-2),transform var(--dur-2) var(--ease)}
.vx-herostats article:hover{border-color:var(--edge);transform:translateY(-2px)}
.vx-herostats small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--faint)}
.vx-herostats b{display:block;margin-top:5px;font-family:var(--display);font-weight:700;font-size:17px;color:var(--ink)}

/* ---- round dial ---- */
.vx-round{padding:22px;border-radius:var(--rad-xl);border:1px solid var(--edge-2);
  background:linear-gradient(160deg,rgba(28,23,18,.9),rgba(11,10,8,.92));box-shadow:var(--elev-2),var(--inner-hi)}
.vx-round>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.vx-dial{position:relative;width:184px;height:184px;margin:0 auto;display:grid;place-items:center}
.vx-dial:before{content:"";position:absolute;inset:-12px;border-radius:50%;pointer-events:none;z-index:0;
  background:conic-gradient(from 0deg,rgba(249,115,22,0) 0 62%,rgba(249,115,22,.42) 85%,rgba(249,115,22,0) 100%);
  -webkit-mask:radial-gradient(closest-side,transparent 78%,#080706 87%);mask:radial-gradient(closest-side,transparent 78%,#080706 87%);
  animation:vx-dialspin 9s linear infinite}
@keyframes vx-dialspin{to{transform:rotate(360deg)}}
.vx-dial svg{position:relative;z-index:1;width:100%;height:100%;transform:rotate(-90deg)}
.vx-dial-track{fill:none;stroke:rgba(255,255,255,.07);stroke-width:7}
.vx-dial-prog{fill:none;stroke:var(--amber);stroke-width:7;stroke-linecap:round;stroke-dasharray:490;
  stroke-dashoffset:0;transition:stroke-dashoffset 1s linear,stroke var(--dur-3)}
.vx-dial.is-lock .vx-dial-prog{stroke:var(--warn)}
.vx-dial.is-draw .vx-dial-prog{stroke:var(--ice)}
.vx-dial.is-hit .vx-dial-prog{stroke:var(--gold)}
.vx-dial-core{position:absolute;z-index:2;display:flex;flex-direction:column;align-items:center;gap:2px}
.vx-dial-core small{font-family:var(--mono);font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--faint)}
.vx-dial-core strong{font-family:var(--display);font-weight:800;font-size:30px;letter-spacing:-.01em;color:var(--ink)}
.vx-dial-core strong.hot{color:var(--ember-lt);text-shadow:0 0 22px rgba(249,115,22,.5)}
.vx-dial-core span{font-size:10.5px;color:var(--dim)}
.vx-roundfoot{display:flex;flex-direction:column;gap:7px;margin-top:16px;padding-top:14px;border-top:1px solid var(--gline-2)}
.vx-roundfoot span{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);
  font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.vx-roundfoot span b{font-family:var(--sans);font-size:12.5px;letter-spacing:0;text-transform:none;color:var(--ink)}

/* ============================================================================
   STICKY TICKER
   ========================================================================== */
.vx-ticker{position:sticky;top:64px;z-index:40;display:flex;align-items:center;gap:20px;margin:18px 0 6px;
  padding:10px 16px;border:1px solid var(--edge-2);border-radius:var(--rad-lg);
  background:linear-gradient(160deg,rgba(24,18,12,.94),rgba(14,12,9,.94));
  backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:var(--elev-2)}
.vx-seg{display:flex;flex-direction:column;gap:1px;min-width:0}
.vx-seg small{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}
.vx-seg b{font-size:13.5px;color:var(--ink);white-space:nowrap}
.vx-seg-phase{flex-direction:row;align-items:center;gap:8px;padding:5px 12px;border-radius:var(--rad-pill);
  border:1px solid var(--edge-2);background:rgba(255,255,255,.04)}
.vx-seg-phase b{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--gold)}
.vx-seg-lucky b{color:var(--gold)}
.vx-ticker>.vx-btn{margin-left:auto;flex:none}

/* ============================================================================
   TABS
   ========================================================================== */
.vx-tabs{position:relative;display:flex;gap:4px;margin:18px 0 22px;padding:5px;border:1px solid var(--edge-2);
  border-radius:var(--rad-lg);background:rgba(255,255,255,.028);width:max-content;max-width:100%;
  overflow-x:auto;scrollbar-width:none}
.vx-tabs::-webkit-scrollbar{display:none}
.vx-tabs button{position:relative;z-index:1;display:inline-flex;align-items:center;gap:7px;padding:10px 20px;
  border:0;border-radius:12px;background:none;color:var(--muted);font-family:var(--sans);font-weight:600;
  font-size:13px;cursor:pointer;white-space:nowrap;transition:color var(--dur-2)}
.vx-tabs button:hover{color:var(--ink)}
.vx-tabs button.on{color:#15110D}
.vx-tab-ink{position:absolute;z-index:0;top:5px;height:calc(100% - 10px);border-radius:12px;
  background:linear-gradient(120deg,var(--gold),var(--amber));box-shadow:0 8px 22px rgba(243,166,15,.28);
  transition:left var(--dur-3) var(--ease-spring),width var(--dur-3) var(--ease-spring)}

/* ============================================================================
   VIEWS
   ========================================================================== */
.vx-view{display:none}
.vx-view.active{display:block;animation:vx-rise .4s var(--ease) both}

/* ---- hunt grid ---- */
.vx-huntgrid{display:grid;grid-template-columns:288px minmax(0,1fr) 300px;gap:14px;align-items:stretch}
.vx-side{display:flex;flex-direction:column;padding:20px;gap:14px;min-width:0}
.vx-ghead h2{margin:6px 0 0;font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:-.01em;color:var(--ink)}
.vx-kv{display:flex;flex-direction:column;gap:3px;padding:13px 0;border-top:1px solid var(--gline-2)}
.vx-kv small{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.vx-kv strong{font-family:var(--display);font-weight:700;font-size:22px;line-height:1.15;color:var(--ink)}
.vx-kv span{font-size:11.5px;color:var(--faint)}
.vx-fair{display:flex;gap:12px;align-items:flex-start;margin-top:auto;padding:14px;border-radius:var(--rad-md);
  border:1px solid var(--gline-2);background:rgba(255,255,255,.03)}
.vx-fair img{width:34px;height:34px;flex:none;object-fit:contain;filter:drop-shadow(0 3px 8px rgba(0,0,0,.6))}
.vx-fair span{font-size:11.5px;line-height:1.55;color:var(--dim)}
.vx-fair b{color:var(--ink-2)}

/* ---- map stage ---- */
.vx-stagewrap{padding:8px;min-width:0;overflow:hidden}
.vx-stage{position:relative;overflow:hidden;width:100%;aspect-ratio:2752/1536;min-height:420px;
  max-height:calc(100vh - 190px);border-radius:var(--rad-md);background:var(--void)}
.vx-bgimg{position:absolute;inset:0;background:url(assets/vein/bg-vein.webp) center/cover no-repeat;
  animation:vx-mapdrift 28s ease-in-out infinite alternate}
@keyframes vx-mapdrift{from{transform:scale(1.02) translate(-.3%,0)}to{transform:scale(1.05) translate(.4%,-.5%)}}
.vx-vign{position:absolute;inset:0;pointer-events:none;z-index:1;
  background:radial-gradient(120% 90% at 50% 40%,transparent 52%,rgba(8,7,6,.66) 100%)}

.vx-nodes{position:absolute;inset:0;z-index:3}
.vx-node{position:absolute;width:40px;height:40px;margin:-20px 0 0 -20px;padding:0;cursor:pointer;
  border-radius:12px;border:1px solid var(--edge);background:linear-gradient(160deg,rgba(36,29,22,.96),rgba(11,10,8,.96));
  box-shadow:var(--elev-1),var(--inner-hi);color:var(--gold);font-family:var(--mono);font-weight:600;font-size:12px;
  transition:transform var(--dur-2) var(--ease-spring),border-color var(--dur-2),box-shadow var(--dur-2);z-index:3}
.vx-node .vx-nglow{position:absolute;left:50%;top:50%;width:200px;height:200px;transform:translate(-50%,-50%);
  pointer-events:none;background:radial-gradient(closest-side,rgba(249,115,22,.42),rgba(255,200,87,.12) 45%,transparent 72%);
  opacity:0;transition:opacity var(--dur-3);z-index:-1}
.vx-node:hover,.vx-node:focus-visible{transform:translateY(-4px) scale(1.06);border-color:var(--edge-hot);
  box-shadow:0 0 0 1px rgba(249,115,22,.4),0 14px 34px rgba(0,0,0,.5),0 0 30px rgba(249,115,22,.35);z-index:6}
.vx-node:hover .vx-nglow,.vx-node:focus-visible .vx-nglow,.vx-node.sel .vx-nglow{opacity:1}
.vx-node.sel{color:#15110D;border-color:var(--gold);
  background:linear-gradient(120deg,var(--gold),var(--amber));
  box-shadow:0 0 0 1px rgba(255,200,87,.6),0 0 28px rgba(243,166,15,.5);animation:vx-selpulse 2.6s ease-in-out infinite}
@keyframes vx-selpulse{0%,100%{box-shadow:0 0 0 1px rgba(255,200,87,.5),0 0 18px rgba(243,166,15,.32)}
  50%{box-shadow:0 0 0 1px rgba(255,200,87,.8),0 0 34px rgba(243,166,15,.6)}}
.vx-node.won{color:#15110D;border-color:var(--gold);background:linear-gradient(120deg,var(--gold),var(--ember));
  box-shadow:0 0 0 2px rgba(255,200,87,.7),0 0 46px rgba(249,115,22,.6)}
.vx-node.lost{opacity:.38;filter:saturate(.55)}
.vx-node.you:before{content:"";position:absolute;right:-4px;top:-4px;width:9px;height:9px;border-radius:50%;
  background:var(--green);box-shadow:0 0 9px var(--green)}

.vx-flare{position:absolute;z-index:2;width:340px;height:340px;margin:-170px 0 0 -170px;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,214,120,.55),rgba(249,115,22,.18) 45%,transparent 70%);
  animation:vx-flare 1.6s var(--ease-out) both}
@keyframes vx-flare{0%{opacity:0;transform:scale(.4)}25%{opacity:1}100%{opacity:0;transform:scale(1.25)}}

.vx-chcard{position:absolute;z-index:8;width:240px;padding:14px 16px;border-radius:var(--rad-md);
  border:1px solid var(--edge);background:linear-gradient(160deg,rgba(28,23,18,.97),rgba(11,10,8,.97));
  box-shadow:var(--elev-3);backdrop-filter:blur(8px);pointer-events:none;animation:vx-ccin .2s var(--ease) both}
@keyframes vx-ccin{from{opacity:0;transform:translateY(7px) scale(.97)}to{opacity:1;transform:none}}
.vx-chcard header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:11px}
.vx-chcard header b{font-family:var(--display);font-weight:800;font-size:20px;color:var(--gold)}
.vx-chcard header span{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-cc-rows{display:flex;flex-direction:column;gap:6px}
.vx-cc-rows span{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--dim)}
.vx-cc-rows span b{font-family:var(--sans);font-weight:600;color:var(--ink)}
.vx-chcard footer{margin-top:11px;padding-top:9px;border-top:1px solid var(--gline-2);font-family:var(--mono);
  font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber)}

.vx-pill-live{background:rgba(34,197,94,.1);border-color:rgba(34,197,94,.3);color:var(--green-lt)}
.vx-mapt small{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}
.vx-mapt b{font-family:var(--display);font-weight:700;font-size:16px;color:var(--gold)}
.vx-mapt b.hot{color:var(--ember-lt)}
.vx-legend span{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:9px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--dim)}
.vx-legend span i{width:6px;height:6px;border-radius:2px;background:rgba(249,115,22,.7)}
.vx-legend span b{margin-left:auto;padding-left:16px;font-weight:400;color:var(--faint)}

/* ---- deployment ---- */
.vx-frow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;
  border-top:1px solid var(--gline-2)}
.vx-frow small{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-frow b{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--ink)}
.vx-compose{display:flex;flex-direction:column;gap:9px}
.vx-lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-amount{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--rad-sm);
  border:1px solid var(--edge-2);background:rgba(0,0,0,.28);transition:border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-amount:focus-within{border-color:var(--edge-hot);box-shadow:0 0 0 3px rgba(249,115,22,.12)}
.vx-amount input{flex:1;min-width:0;appearance:none;background:transparent;border:0;outline:0;color:var(--ink);
  font-family:var(--display);font-weight:700;font-size:19px}
.vx-amount input::-webkit-outer-spin-button,.vx-amount input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.vx-amount input[type=number]{-moz-appearance:textfield}
.vx-amount span{font-family:var(--mono);font-size:11px;color:var(--dim)}
.vx-quick{display:flex;gap:6px}
.vx-quick button{flex:1;padding:7px 4px;border-radius:var(--rad-xs);border:1px solid var(--edge-2);
  background:rgba(255,255,255,.04);color:var(--ink-2);font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  cursor:pointer;transition:.15s}
.vx-quick button:hover{border-color:var(--edge);background:rgba(249,115,22,.1);color:var(--gold);transform:translateY(-1px)}
.vx-splitbar{display:flex;flex-direction:column;gap:7px;padding:13px 0;border-top:1px solid var(--gline-2)}
.vx-splitbar small{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}
.vx-bar{display:flex;gap:2px;height:7px;border-radius:99px;overflow:hidden;background:rgba(0,0,0,.35)}
.vx-bar i{display:block;height:100%}
.vx-bar .w88{width:88%;background:linear-gradient(90deg,var(--amber),var(--gold))}
.vx-bar .w8{width:8%;background:var(--ice)}
.vx-bar .w2{width:2%;background:var(--violet)}
.vx-bar .w2b{width:2%;background:var(--dim)}
.vx-splitbar>span{font-size:11px;color:var(--dim)}
.vx-deploygo{display:flex;flex-direction:column;gap:9px;margin-top:auto;padding-top:14px}
.vx-deploygo small{text-align:center;font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--faint)}

/* ---- bottom strip ---- */
.vx-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}
.vx-cell{display:flex;align-items:center;gap:14px;padding:16px 18px;transition:transform var(--dur-2) var(--ease),border-color var(--dur-2)}
.vx-cell:hover{transform:translateY(-3px);border-color:var(--edge)}
.vx-cell img{width:44px;height:44px;flex:none;object-fit:contain;filter:drop-shadow(0 4px 10px rgba(0,0,0,.6))}
.vx-cell>div{min-width:0;flex:1}
.vx-cell small{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-cell b{display:block;margin-top:3px;font-family:var(--display);font-weight:700;font-size:19px;color:var(--ink)}
.vx-cell span{display:block;margin-top:2px;font-size:11px;color:var(--faint)}
.vx-cellgold{border-color:var(--edge);background:linear-gradient(158deg,#1F1710,#0B0A08)}
.vx-cellgold:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(120% 100% at 88% 0,rgba(255,200,87,.13),transparent 46%)}

/* ============================================================================
   LUCKY VEIN
   ========================================================================== */
.vx-lwrap{padding:8px;overflow:hidden}
.vx-lstage{position:relative;overflow:hidden;border-radius:var(--rad-md);background:var(--void);
  aspect-ratio:2752/1536;max-height:calc(100vh - 210px);min-height:520px;width:100%}
.vx-lbg{position:absolute;inset:0;background:url(assets/vein/bg-lucky.webp) center/cover no-repeat;
  animation:vx-ember 18s ease-in-out infinite alternate}
@keyframes vx-ember{from{filter:brightness(1)}to{filter:brightness(1.08)}}

.vx-tlayer{position:absolute;inset:0;z-index:2}
.vx-tover{position:absolute;pointer-events:none;opacity:0;transition:opacity var(--dur-3);will-change:opacity}
.vx-tover img{width:100%;height:100%;display:block}
.vx-tzone{position:absolute;background:transparent;border:0;padding:0;margin:0;cursor:pointer;z-index:3}
.vx-tzone:focus-visible{outline:2px solid var(--ember);outline-offset:-3px;border-radius:var(--rad-md)}
.vx-tunnel.hov .vx-tover,.vx-tunnel.picked .vx-tover{opacity:1}
.vx-tunnel.winner .vx-tover{opacity:1;animation:vx-winglow 1.4s ease-in-out infinite alternate}
@keyframes vx-winglow{from{filter:brightness(1)}to{filter:brightness(1.35) saturate(1.15)}}
.vx-tunnel.loser .vx-tplate{opacity:.4}

.vx-tplate{position:absolute;z-index:4;transform:translate(-50%,-50%);width:38px;height:38px;display:grid;
  place-items:center;border-radius:12px;border:1px solid var(--edge);
  background:linear-gradient(160deg,rgba(36,29,22,.96),rgba(11,10,8,.96));box-shadow:var(--elev-1),var(--inner-hi);
  color:var(--gold);font-family:var(--display);font-weight:800;font-size:15px;pointer-events:none;
  transition:transform var(--dur-2) var(--ease-spring),border-color var(--dur-2),box-shadow var(--dur-2),background var(--dur-2)}
.vx-tunnel.hov .vx-tplate{transform:translate(-50%,-64%) scale(1.16);border-color:var(--edge-hot);
  box-shadow:0 12px 30px rgba(0,0,0,.5),0 0 26px rgba(249,115,22,.45)}
.vx-tunnel.picked .vx-tplate{color:#15110D;border-color:var(--gold);
  background:linear-gradient(120deg,var(--gold),var(--amber));box-shadow:0 0 26px rgba(243,166,15,.55)}
.vx-tunnel.winner .vx-tplate{color:#15110D;background:linear-gradient(120deg,var(--gold),var(--ember));
  border-color:var(--gold);box-shadow:0 0 40px rgba(249,115,22,.7)}

.vx-selchip{position:absolute;z-index:4;transform:translate(-50%,-50%) translateY(9px);display:inline-flex;
  align-items:center;gap:7px;padding:7px 15px;border-radius:var(--rad-pill);border:1px solid rgba(34,197,94,.5);
  background:rgba(9,20,12,.9);color:var(--green-lt);font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;pointer-events:none;opacity:0;box-shadow:0 8px 24px rgba(0,0,0,.5);
  transition:opacity var(--dur-2),transform var(--dur-2) var(--ease-spring)}
.vx-selchip i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}
.vx-tunnel.hov .vx-selchip{opacity:1;transform:translate(-50%,-50%)}
.vx-tunnel.picked .vx-selchip{opacity:1;transform:translate(-50%,-50%);border-color:var(--gold);color:var(--gold)}
.vx-tunnel.picked .vx-selchip i{background:var(--gold);box-shadow:0 0 8px var(--gold)}

/* Lucky HUDs — same glass vocabulary as the rest of CaveWatch */
.vx-hud{position:absolute;z-index:6;border-radius:var(--rad-md);border:1px solid var(--gline-2);
  background:linear-gradient(160deg,rgba(24,18,12,.92),rgba(11,10,8,.94));
  backdrop-filter:blur(12px) saturate(1.2);box-shadow:var(--elev-2),var(--inner-hi)}
.vx-thud b{display:block;margin-top:5px;font-family:var(--display);font-weight:800;font-size:20px;
  letter-spacing:-.01em;background:linear-gradient(120deg,var(--gold),var(--ember));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.vx-timerhud small{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}
.vx-timerhud>b{font-family:var(--display);font-weight:800;font-size:26px;letter-spacing:-.01em;color:var(--ink)}
.vx-timerhud>b.hot{color:var(--ember-lt);text-shadow:0 0 20px rgba(249,115,22,.5)}
.vx-lbar{width:100%;height:3px;border-radius:99px;overflow:hidden;background:rgba(255,255,255,.08)}
.vx-lbar i{display:block;height:100%;width:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--amber),var(--gold));transition:width 1s linear}
.vx-timerhud.closing{border-color:var(--edge-hot);box-shadow:var(--elev-2),0 0 26px rgba(249,115,22,.28)}
.vx-timerhud.closing .vx-lbar i{background:linear-gradient(90deg,var(--ember),var(--gold))}
.vx-jhud img{width:38px;height:38px;object-fit:contain;filter:drop-shadow(0 0 10px rgba(255,200,87,.35));
  animation:vx-seal 9s ease-in-out infinite}
@keyframes vx-seal{0%,100%{transform:rotate(0)}50%{transform:rotate(8deg)}}
.vx-jhud small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}
.vx-jhud b{display:block;margin-top:3px;font-family:var(--display);font-weight:800;font-size:18px;color:var(--gold)}
.vx-jhud.bump b{animation:vx-bump .5s var(--ease-spring)}
@keyframes vx-bump{0%{transform:scale(1)}35%{transform:scale(1.2)}100%{transform:scale(1)}}
.vx-multhud small{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.vx-multhud b{font-family:var(--display);font-weight:700;font-size:17px;color:var(--green-lt)}
.vx-multhud em{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--dim)}
.vx-histbtn:hover{transform:translateY(-2px);border-color:var(--edge);color:var(--gold)}
.vx-histbtn img{width:17px;height:17px;object-fit:contain}
.vx-selpill .vx-dot{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.vx-selpill.full .vx-dot{background:var(--green);box-shadow:0 0 8px var(--green)}

.vx-winban{position:absolute;z-index:7;left:50%;top:38%;transform:translate(-50%,-50%);padding:20px 34px;
  text-align:center;border-radius:var(--rad-xl);border:1px solid var(--edge);
  background:linear-gradient(160deg,rgba(31,23,16,.96),rgba(11,10,8,.96));
  box-shadow:0 0 70px rgba(249,115,22,.3),var(--elev-3);animation:vx-banin .5s var(--ease-spring) both}
@keyframes vx-banin{from{opacity:0;transform:translate(-50%,-50%) scale(.82)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.vx-winban b{display:block;font-family:var(--display);font-weight:800;font-size:23px;letter-spacing:-.01em;
  background:linear-gradient(120deg,var(--gold),var(--ember));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.vx-winban span{display:block;margin-top:8px;font-size:13px;color:var(--ink)}
.vx-winban small{display:block;margin-top:5px;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--faint)}

/* dock */
.vx-dock{position:absolute;z-index:8;left:16px;right:16px;bottom:16px;display:flex;align-items:stretch;
  padding:14px 8px;border-radius:var(--rad-lg);border:1px solid var(--gline-2);
  background:linear-gradient(160deg,rgba(24,18,12,.94),rgba(11,10,8,.95));
  backdrop-filter:blur(14px) saturate(1.2);box-shadow:var(--elev-3),var(--inner-hi)}
.vx-dsec{display:flex;flex-direction:column;gap:9px;padding:0 18px;border-right:1px solid var(--gline-2);min-width:0}
.vx-dsec:last-child{border-right:0}
.vx-dsec>small{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);white-space:nowrap}
.vx-drow{display:flex;align-items:center;gap:10px;min-height:34px}
.vx-drow img{width:22px;height:22px;object-fit:contain}
.vx-drow>b{font-family:var(--display);font-weight:700;font-size:18px;color:var(--ink);white-space:nowrap}
.vx-linput{width:84px;appearance:none;padding:7px 6px;text-align:center;border-radius:var(--rad-xs);
  border:1px solid var(--edge-2);background:rgba(0,0,0,.32);outline:0;color:var(--ink);
  font-family:var(--display);font-weight:700;font-size:15px;transition:border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-linput:focus{border-color:var(--edge-hot);box-shadow:0 0 0 3px rgba(249,115,22,.12)}
.vx-linput::-webkit-outer-spin-button,.vx-linput::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.vx-dslots{flex:1}
.vx-slot{flex:1;min-width:84px;height:56px;display:flex;flex-direction:column;justify-content:center;
  align-items:center;gap:2px;border-radius:var(--rad-sm);transition:border-color var(--dur-2),background var(--dur-2)}
.vx-slot.empty{border:1px dashed var(--edge-2);background:rgba(0,0,0,.28)}
.vx-slot.empty b{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.vx-slot.empty span{font-size:11px;color:var(--faint)}
.vx-slot.fill{position:relative;border:1px solid var(--edge);background:rgba(249,115,22,.1);animation:vx-slotin .3s var(--ease-spring)}
@keyframes vx-slotin{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}
.vx-slot.fill:after{content:"";position:absolute;inset:-2px;border-radius:inherit;border:1px solid rgba(255,200,87,.6);
  animation:vx-slotburst .55s var(--ease-out) both;pointer-events:none}
@keyframes vx-slotburst{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.14)}}
.vx-slot.fill b{font-family:var(--display);font-weight:700;font-size:13px;color:var(--gold)}
.vx-slot.fill span{font-family:var(--mono);font-size:11.5px;color:var(--ink)}
.vx-slot.fill button{border:0;background:transparent;cursor:pointer;padding:0;margin-top:1px;color:var(--faint);
  font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase}
.vx-slot.fill button:hover{color:var(--red-lt)}
.vx-bd{display:flex;flex-direction:column;gap:5px;min-width:222px}
.vx-bd span{display:flex;align-items:center;gap:9px;font-size:11.5px;color:var(--dim);white-space:nowrap}
.vx-bd span img{width:16px;height:16px;object-fit:contain}
.vx-bd span b{margin-left:auto;font-family:var(--mono);font-weight:500;color:var(--ink)}
.vx-dgo{justify-content:center;min-width:210px}

/* drawers */
.vx-dmask{position:absolute;inset:0;z-index:9;background:rgba(8,7,6,.6);backdrop-filter:blur(3px);animation:vx-fade .22s ease both}
@keyframes vx-fade{from{opacity:0}to{opacity:1}}
.vx-drawer{position:absolute;z-index:10;left:0;top:0;bottom:0;width:min(320px,86%);display:flex;
  flex-direction:column;padding:24px;border-right:1px solid var(--edge-2);
  background:linear-gradient(160deg,rgba(24,18,12,.98),rgba(11,10,8,.99));animation:vx-slide .3s var(--ease) both}
@keyframes vx-slide{from{transform:translateX(-100%)}to{transform:none}}
.vx-drawer h3{margin:8px 0 18px;font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:-.01em;color:var(--ink)}
.vx-drawer ol{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:13px;counter-reset:lv}
.vx-drawer ol li{counter-increment:lv;display:flex;gap:12px;font-size:13px;color:var(--ink-2)}
.vx-drawer ol li:before{content:counter(lv);width:20px;height:20px;flex:none;display:grid;place-items:center;
  border-radius:50%;border:1px solid var(--edge-2);background:rgba(249,115,22,.1);font-family:var(--mono);
  font-size:10px;color:var(--gold)}
.vx-dnote{margin:18px 0 0;font-size:12px;line-height:1.65;color:var(--dim)}
.vx-drawer footer{margin-top:auto;display:flex;align-items:center;gap:9px;padding-top:18px;
  border-top:1px solid var(--gline-2);font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim)}
.vx-drawer footer img{width:18px;height:18px;object-fit:contain}
.vx-dclose{position:absolute;right:16px;top:16px}
#vx-hist-rows{display:flex;flex-direction:column;overflow:auto}
#vx-hist-rows p{margin:0;padding:11px 0;border-bottom:1px solid var(--gline-2);font-family:var(--mono);
  font-size:12px;color:var(--ink-2)}
#vx-hist-rows p.jack{color:var(--gold)}
#vx-hist-rows p.roll{color:var(--dim)}
#vx-hist-rows .vx-empty{padding:14px 0;font-family:var(--sans);font-size:12.5px;color:var(--dim)}

/* ============================================================================
   VAULT + WORKSHOP
   ========================================================================== */
.vx-pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:14px}
.vx-pagehead h2{margin:8px 0 0;font-family:var(--display);font-weight:800;font-size:clamp(24px,2.6vw,32px);
  letter-spacing:-.02em;color:var(--ink)}
.vx-pagehead h2 em{font-style:normal;background:linear-gradient(120deg,var(--gold),var(--ember));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.vx-pagehead p{margin:0;max-width:480px;font-size:13px;line-height:1.7;color:var(--muted)}
.vx-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.vx-metrics>article{display:flex;flex-direction:column;gap:4px;padding:18px;
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2)}
.vx-metrics>article:hover{transform:translateY(-3px);border-color:var(--edge)}
.vx-metrics small{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-metrics b{font-family:var(--display);font-weight:700;font-size:24px;line-height:1.15;color:var(--ink);align-self:flex-start}
.vx-metrics span{font-size:11px;color:var(--faint)}
.vx-wline{display:flex;gap:9px;align-items:center;margin:2px 0}
.vx-wline input{flex:1;min-width:0;appearance:none;padding:8px 11px;border-radius:var(--rad-xs);
  border:1px solid var(--edge-2);background:rgba(0,0,0,.28);outline:0;color:var(--ink);font-family:var(--mono);font-size:13px}
.vx-wline input:focus{border-color:var(--edge-hot)}

.vx-vgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.vx-vault{display:flex;flex-direction:column;gap:14px;padding:24px;overflow:hidden}
.vx-vault:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(120% 100% at 88% 0,rgba(243,166,15,.12),transparent 46%)}
.vx-vault.vx-sac:before{background:radial-gradient(120% 100% at 88% 0,rgba(239,68,68,.12),transparent 46%)}
.vx-vault>*{position:relative;z-index:1}
.vx-vault header{display:flex;align-items:center;gap:16px}
.vx-vault header img{width:58px;height:58px;flex:none;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.6));transition:transform var(--dur-2)}
.vx-vault h3{margin:5px 0 3px;font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:-.01em;color:var(--ink)}
.vx-vault header small{display:block;font-size:11.5px;color:var(--dim)}
.vx-tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.vx-tiers button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 6px;
  border-radius:var(--rad-sm);border:1px solid var(--edge-2);background:rgba(255,255,255,.035);cursor:pointer;
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-tiers button b{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.vx-tiers button span{font-family:var(--mono);font-size:11px;color:var(--amber)}
.vx-tiers button:hover{transform:translateY(-2px);border-color:var(--edge)}
.vx-tiers button.on{border-color:var(--gold);background:rgba(255,200,87,.1);box-shadow:0 0 0 1px rgba(255,200,87,.25),0 8px 22px rgba(243,166,15,.14)}
.vx-vamount{max-width:300px}
.vx-vpreview{font-family:var(--mono);font-size:11.5px;color:var(--dim)}
.vx-vpreview b{font-family:var(--display);font-weight:700;font-size:15px;color:var(--gold)}
.vx-vnote{font-family:var(--mono);font-size:9.5px;letter-spacing:.04em;color:var(--faint)}
.vx-vnote b{color:var(--ink-2)}
.vx-sacwarn{padding:13px 15px;border-radius:var(--rad-sm);border:1px solid rgba(239,68,68,.32);
  background:rgba(239,68,68,.07);font-size:12.5px;line-height:1.6;color:var(--red-lt)}
.vx-sacwarn b{color:var(--red)}
.vx-typed{max-width:300px;appearance:none;padding:11px 14px;border-radius:var(--rad-sm);border:1px solid var(--edge-2);
  background:rgba(0,0,0,.28);outline:0;color:var(--ink);font-family:var(--mono);font-size:13px;letter-spacing:.14em;
  transition:border-color var(--dur-2)}
.vx-typed:focus{border-color:rgba(239,68,68,.6)}
.vx-positions{padding:0;overflow:hidden}
.vx-positions>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;
  border-bottom:1px solid var(--gline-2)}
.vx-positions h3{margin:5px 0 0;font-family:var(--display);font-weight:700;font-size:17px;color:var(--ink)}
#vx-pos-rows .vx-pos{display:grid;grid-template-columns:auto 1fr auto auto;gap:18px;align-items:center;
  padding:14px 22px;border-bottom:1px solid var(--gline-2);font-size:12.5px;color:var(--ink)}
#vx-pos-rows .vx-pos:last-child{border-bottom:0}
#vx-pos-rows .vx-pos em{font-style:normal;padding:4px 10px;border-radius:var(--rad-pill);
  border:1px solid var(--edge-2);background:rgba(249,115,22,.09);font-family:var(--mono);font-size:9.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
#vx-pos-rows .vx-pos em.perm{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.08);color:var(--red-lt)}
#vx-pos-rows .vx-pos span{font-family:var(--mono);font-size:11.5px;color:var(--dim)}
#vx-pos-rows .vx-pos b{font-family:var(--display);font-weight:700;color:var(--gold)}
#vx-pos-rows .vx-empty{padding:24px 22px;font-size:12.5px;color:var(--dim)}

/* items */
.vx-items{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.vx-item{position:relative;display:flex;flex-direction:column;gap:13px;padding:24px;overflow:hidden;
  border:1px solid var(--gline-2);border-radius:var(--rad-lg);background:var(--cw-card-bg);
  box-shadow:var(--elev-1),var(--inner-hi);
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-item:hover{transform:translateY(-4px);border-color:var(--edge);box-shadow:var(--elev-2),var(--inner-hi)}
.vx-item.eq{border-color:var(--gold);box-shadow:0 0 0 1px rgba(255,200,87,.25),var(--elev-2)}
.vx-item .vx-iglow{position:absolute;left:50%;top:44px;width:250px;height:190px;transform:translateX(-50%);
  pointer-events:none;background:radial-gradient(closest-side,rgba(249,115,22,.2),transparent 72%);
  opacity:0;transition:opacity var(--dur-3)}
.vx-item:hover .vx-iglow,.vx-item.eq .vx-iglow{opacity:1}
.vx-item:before{content:"";position:absolute;top:0;left:-70%;width:44%;height:100%;z-index:1;transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);transition:left .6s var(--ease);pointer-events:none}
.vx-item:hover:before{left:140%}
.vx-item>*{position:relative;z-index:2}
.vx-item img{width:118px;height:118px;object-fit:contain;align-self:center;
  filter:drop-shadow(0 10px 22px rgba(0,0,0,.7));transition:transform var(--dur-3) var(--ease-spring)}
.vx-item:hover img{transform:translateY(-5px) scale(1.05)}
.vx-item h3{margin:0;display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:-.01em;color:var(--ink)}
.vx-item h3 em{font-style:normal;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--amber)}
.vx-lvlbar{display:flex;gap:5px}
.vx-lvlbar i{flex:1;height:4px;border-radius:99px;background:rgba(255,255,255,.08)}
.vx-lvlbar i.on{background:linear-gradient(90deg,var(--amber),var(--gold))}
.vx-ieffect{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);line-height:1.55}
.vx-ieffect b{font-family:var(--display);font-weight:700;font-size:14px;color:var(--gold)}
.vx-ieffect .nx{font-family:var(--mono);font-size:11px;color:var(--faint)}
.vx-icost{display:flex;gap:16px;font-family:var(--mono);font-size:11px;color:var(--dim)}
.vx-icost b{color:var(--ink)}
.vx-irow{display:flex;gap:9px;margin-top:auto}
.vx-irow .vx-btn{flex:1}
.vx-inote{font-family:var(--mono);font-size:9px;letter-spacing:.04em;color:var(--faint)}

/* ============================================================================
   MODAL · TOAST · LOCK
   ========================================================================== */
.vx-mmask{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:22px;
  background:rgba(8,7,6,.74);backdrop-filter:blur(5px);animation:vx-fade .2s ease both}
/* 6 Sep 2026: max-height + overflow on the CARD meant the whole card scrolled,
   and on a short laptop the Confirm footer sat below the fold with nothing
   showing it was there. The card is a flex column now: header and footer are
   pinned, only the BODY scrolls, so the action is always visible. */
.vx-modal{width:min(480px,100%);max-height:min(86vh,760px);display:flex;flex-direction:column;overflow:hidden;border-radius:var(--rad-xl);border:1px solid var(--edge-2);
  background:linear-gradient(160deg,#1C1712,#0B0A08);box-shadow:var(--elev-3);animation:vx-banin .34s var(--ease-spring) both}
.vx-modal header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--gline-2)}
.vx-modal h3{margin:0;font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:-.01em;color:var(--ink)}
.vx-modal>div{padding:18px 22px;font-size:13.5px;line-height:1.65;color:var(--ink-2)}
.vx-modal>div{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.vx-modal header{flex:0 0 auto}
.vx-modal footer{flex:0 0 auto}
@media (max-height:760px){
  .vx-modal{max-height:94vh}
  .vx-modal>div{padding:14px 20px;font-size:13px;line-height:1.5}
  .vx-modal header{padding:13px 20px}
  .vx-modal footer{padding:12px 20px}
  #vx-m-art{max-height:96px;overflow:hidden}
  #vx-m-art img{max-height:84px;width:auto}
}
@media (max-height:620px){
  #vx-m-art{display:none}
  .vx-modal>div{font-size:12.5px}
}
.vx-modal>div p{margin:0 0 12px}
.vx-mrows{display:flex;flex-direction:column;gap:8px;margin:8px 0 4px}
.vx-mrows span{display:flex;justify-content:space-between;gap:14px;font-family:var(--mono);font-size:11.5px;color:var(--dim)}
.vx-mrows span b{font-family:var(--sans);font-weight:600;color:var(--ink);text-align:right}
.vx-mrows span b.gd{color:var(--gold)}
.vx-mrows span b.rd{color:var(--red-lt)}
.vx-modal footer{display:flex;gap:10px;justify-content:flex-end;padding:16px 22px;border-top:1px solid var(--gline-2)}
.vx-tx{display:flex;flex-direction:column;gap:9px;margin-top:14px;padding-top:14px;border-top:1px solid var(--gline-2)}
.vx-tx span{display:flex;align-items:center;gap:11px;font-family:var(--mono);font-size:11px;color:var(--faint);transition:color var(--dur-2)}
.vx-tx span i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.12);transition:background var(--dur-2),box-shadow var(--dur-2)}
.vx-tx span.on{color:var(--ink)}
.vx-tx span.on i{background:var(--amber);box-shadow:0 0 10px var(--amber)}
.vx-tx span.done{color:var(--green-lt)}
.vx-tx span.done i{background:var(--green);box-shadow:0 0 8px var(--green)}

#vx-toast{position:fixed;z-index:400;left:50%;bottom:28px;transform:translateX(-50%) translateY(16px);
  max-width:min(460px,90vw);padding:13px 20px;border-radius:var(--rad-md);border:1px solid var(--edge-2);
  background:linear-gradient(160deg,rgba(28,23,18,.97),rgba(11,10,8,.97));color:var(--ink);font-size:13px;
  box-shadow:var(--elev-3);opacity:0;pointer-events:none;transition:opacity var(--dur-2),transform var(--dur-2) var(--ease)}
#vx-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.vx-lock{position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(900px 500px at 50% 24%,rgba(20,14,8,.55),rgba(6,5,4,.84));
  backdrop-filter:blur(3px) saturate(.72)}
.vx-lockbox{position:relative;overflow:hidden;max-width:460px;padding:36px 34px;text-align:center;
  border-radius:22px;border:1px solid rgba(249,115,22,.28);
  background:linear-gradient(180deg,rgba(28,20,12,.92),rgba(14,11,8,.95));
  box-shadow:0 30px 90px rgba(0,0,0,.72),0 0 46px rgba(249,115,22,.1)}
.vx-lockbox:before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(420px 180px at 50% -10%,rgba(249,115,22,.14),transparent 60%)}
.vx-lockic{position:relative;width:58px;height:58px;margin:0 auto 16px;display:grid;place-items:center;
  border-radius:16px;color:var(--gold);background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.32);
  box-shadow:0 0 24px rgba(249,115,22,.2)}
.vx-lockic svg{width:26px;height:26px}
.vx-lockeye{position:relative;margin-bottom:8px;font-family:var(--mono);font-size:10px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gold);opacity:.85}
.vx-lockbox h2{position:relative;margin:0 0 10px;font-family:var(--display);font-weight:900;font-size:26px;
  background:linear-gradient(180deg,var(--bone),var(--gold));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.vx-lockbox p{position:relative;margin:0 0 16px;color:var(--muted);font-size:13.5px;line-height:1.6}
.vx-locktag{position:relative;display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;
  border:1px solid rgba(249,115,22,.28);background:rgba(249,115,22,.06);font-family:var(--mono);font-size:10px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.vx-locktag i{width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px var(--gold);
  animation:vx-live 2.2s ease-in-out infinite}

/* ============================================================================
   JUICE — embers, counting gold, winner spectacle
   ========================================================================== */
.vx-embers{position:absolute;inset:0;z-index:2;pointer-events:none;mix-blend-mode:screen}
.vx-tick{animation:vx-tickfx .5s ease}
@keyframes vx-tickfx{0%{text-shadow:0 0 0 rgba(255,200,87,0)}40%{text-shadow:0 0 20px rgba(255,200,87,.7)}100%{text-shadow:0 0 0 rgba(255,200,87,0)}}
.vx-shake{animation:vx-shakefx .55s cubic-bezier(.36,.07,.19,.97)}
@keyframes vx-shakefx{10%,90%{transform:translate(-1px,0)}20%,80%{transform:translate(2px,-1px)}30%,50%,70%{transform:translate(-3px,1px)}40%,60%{transform:translate(3px,0)}}
.vx-flash{position:absolute;inset:0;z-index:6;pointer-events:none;
  background:radial-gradient(60% 60% at var(--fx,50%) var(--fy,50%),rgba(255,220,130,.5),rgba(249,115,22,.12) 45%,transparent 70%);
  animation:vx-flashout 1.2s var(--ease-out) both}
@keyframes vx-flashout{from{opacity:1}to{opacity:0}}
.vx-rays{position:absolute;z-index:2;width:420px;height:420px;margin:-210px 0 0 -210px;pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0 14deg,rgba(255,214,120,.22) 17deg 20deg,transparent 23deg 50deg,
    rgba(255,214,120,.18) 53deg 56deg,transparent 59deg 104deg,rgba(255,214,120,.22) 107deg 110deg,
    transparent 113deg 158deg,rgba(255,214,120,.18) 161deg 164deg,transparent 167deg 212deg,
    rgba(255,214,120,.2) 215deg 218deg,transparent 221deg 266deg,rgba(255,214,120,.18) 269deg 272deg,
    transparent 275deg 320deg,rgba(255,214,120,.2) 323deg 326deg,transparent 329deg);
  animation:vx-raysfx 2.6s linear both;-webkit-mask:radial-gradient(closest-side,#000 30%,transparent 72%);
  mask:radial-gradient(closest-side,#000 30%,transparent 72%)}
@keyframes vx-raysfx{from{opacity:0;transform:rotate(0) scale(.5)}12%{opacity:1}to{opacity:0;transform:rotate(70deg) scale(1.15)}}
.vx-ripple{position:absolute;z-index:2;width:60px;height:60px;margin:-30px 0 0 -30px;pointer-events:none;
  border:2px solid rgba(255,200,87,.8);border-radius:50%;animation:vx-ripplefx .9s var(--ease-spring) both}
@keyframes vx-ripplefx{from{opacity:1;transform:scale(.4)}to{opacity:0;transform:scale(2.6)}}
.vx-burnfx{position:fixed;inset:0;z-index:390;pointer-events:none;
  background:radial-gradient(70% 55% at 50% 100%,rgba(239,68,68,.42),rgba(249,115,22,.18) 45%,transparent 70%);
  animation:vx-burnup 1.5s var(--ease-out) both}
@keyframes vx-burnup{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
.vx-sac.arming header img{animation:vx-tnt .5s ease-in-out infinite}
@keyframes vx-tnt{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg) scale(1.04)}75%{transform:rotate(4deg) scale(1.04)}}

/* ============================================================================
   RESPONSIVE
   ========================================================================== */
@media(max-width:1180px){
  .vx-hero{grid-template-columns:1fr;padding:36px 32px}
  .vx-round{max-width:420px;width:100%;margin:0 auto}
  .vx-huntgrid{grid-template-columns:250px minmax(0,1fr) 270px}
  .vx-strip{grid-template-columns:repeat(2,1fr)}
  .vx-metrics{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:980px){
  .vx-ticker{gap:14px;overflow-x:auto;scrollbar-width:none}
  .vx-ticker::-webkit-scrollbar{display:none}
  .vx-huntgrid{grid-template-columns:1fr}
  .vx-stage{min-height:440px}
  .vx-legend{display:none}
  .vx-vgrid{grid-template-columns:1fr}
  .vx-items{grid-template-columns:1fr}
  .vx-pagehead{flex-direction:column;align-items:flex-start;gap:14px}
  .vx-lstage{aspect-ratio:auto;height:74vh}
  .vx-dock{flex-wrap:wrap;gap:12px 0;padding:12px 6px}
  .vx-dsec{padding:0 12px}
  .vx-dbreak,.vx-multhud{display:none}
  .vx-selpill{bottom:auto;top:96px}
  .vx-histbtn{bottom:auto;top:16px;left:auto;right:16px;transform:translateY(80px)}
}
@media(max-width:640px){
  .vx-hero{padding:28px 20px;border-radius:20px}
  .vx-herostats{grid-template-columns:1fr 1fr}
  .vx-strip{grid-template-columns:1fr}
  .vx-metrics{grid-template-columns:1fr}
  .vx-dslots{flex-basis:100%;order:5;border-right:0}
  .vx-dgo{flex:1;min-width:0}
  .vx-thud b{font-size:16px}
  .vx-timerhud{min-width:0;padding:9px 16px}
  .vx-timerhud>b{font-size:20px}
  .vx-modal footer{flex-direction:column}
  .vx-modal footer .vx-btn{width:100%}
}

/* ============================================================================
   REDUCED MOTION — everything decorative stops; state changes stay instant
   ========================================================================== */
@media(prefers-reduced-motion:reduce){
  .vx-embers{display:none}
  .vx-hero,.vx-hero-copy>*,.vx-noise,.vx-hero:before,.vx-dial:before,.vx-bgimg,.vx-lbg,
  .vx-btn-primary:after,.vx-dot,.vx-locktag i,.vx-node.sel,.vx-jhud img,.vx-jhud.bump b,
  .vx-tunnel.winner .vx-tover,.vx-sac.arming header img,.vx-tick,.vx-shake,.vx-flash,.vx-rays,
  .vx-ripple,.vx-burnfx,.vx-slot.fill:after{animation:none!important}
  .vx-view.active,.vx-chcard,.vx-winban,.vx-modal,.vx-mmask,.vx-dmask,.vx-drawer,.vx-slot.fill,.vx-flare{animation-duration:.01ms!important}
  .vx-node:hover,.vx-item:hover,.vx-item:hover img,.vx-cell:hover,.vx-metrics>article:hover,
  .vx-herostats article:hover,.vx-tiers button:hover,.vx-quick button:hover,.vx-btn:hover:not(:disabled){transform:none}
  *{transition-duration:.01ms!important}
}

/* ============================================================================
   REWORK v20260802d
   The map is never covered. Everything that used to float on it now lives in
   rails above and decks below. Plus: the Motherlode hero, the network gate,
   the always-on wallet strip, compounding, and the tokenomics page.
   ========================================================================== */

/* ---- NETWORK GATE -------------------------------------------------------- */
.vx-netbar{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:16px;
  margin:14px 0 0;padding:16px 20px;border:1px solid rgba(96,165,250,.28);border-radius:var(--rad-lg);
  background:linear-gradient(140deg,rgba(23,32,48,.92),rgba(11,10,8,.94));
  box-shadow:var(--elev-2),var(--inner-hi);animation:vx-rise .5s var(--ease) both}
.vx-neticon{width:46px;height:46px;display:flex;align-items:center;justify-content:center;justify-self:center;align-self:center;
  border-radius:var(--rad-sm);border:1px solid rgba(96,165,250,.24);background:rgba(96,165,250,.08)}
.vx-neticon img{display:block;width:28px;height:28px;object-fit:contain;object-position:50% 50%}
.vx-netbar>div{min-width:0;align-self:center}
.vx-netbar b{display:block;font-family:var(--display);font-weight:700;font-size:15px;color:var(--ice)}
.vx-netbar span{display:block;margin-top:4px;font-size:12.5px;line-height:1.55;color:var(--muted)}
.vx-netbar .vx-btn{justify-self:end;align-self:center}
.vx-netbar[hidden]{display:none!important}
/* Disabled by the gate, not by the control's own logic — so re-enabling is a
   single attribute flip and nothing has to remember its previous state. */
html[data-vein-preview="1"] .vx-locked{opacity:.5;pointer-events:none;filter:saturate(.55)}
html[data-vein-preview="1"] .vx-lode{filter:saturate(.85)}
.vx-prevtag{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:3px 9px;border-radius:var(--rad-pill);
  border:1px solid rgba(96,165,250,.3);background:rgba(96,165,250,.1);font-family:var(--mono);font-size:9px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ice)}

/* ---- WALLET STRIP -------------------------------------------------------- */
.vx-wallet{position:sticky;top:70px;z-index:41;display:flex;align-items:center;gap:18px;margin:12px 0 0;
  padding:11px 18px;border:1px solid var(--edge-2);border-radius:var(--rad-lg);
  background:linear-gradient(160deg,rgba(24,18,12,.95),rgba(14,12,9,.95));
  backdrop-filter:blur(14px) saturate(1.2);box-shadow:var(--elev-2)}
.vx-weyebrow{display:inline-flex;align-items:center;gap:8px;flex:none;font-family:var(--mono);font-size:9px;
  letter-spacing:.2em;text-transform:uppercase;color:var(--amber)}
.vx-wgrid{display:flex;align-items:center;gap:22px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.vx-wgrid::-webkit-scrollbar{display:none}
.vx-w{display:flex;flex-direction:column;gap:1px;flex:none}
.vx-w small{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.vx-w b{font-family:var(--display);font-weight:700;font-size:15px;color:var(--ink);white-space:nowrap}
.vx-w-claim b{color:var(--gold)}
.vx-wallet>.vx-btn{flex:none}

/* ---- HERO + MOTHERLODE --------------------------------------------------- */
.vx-heroglow{position:absolute;right:-6%;top:-30%;width:60%;height:160%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(249,115,22,.2),transparent 70%);animation:vx-breathe 6s ease-in-out infinite}
.vx-herorow{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}
.vx-btn-ghost{color:var(--ink-2);border:1px solid var(--edge-2);background:transparent}
.vx-btn-ghost:hover:not(:disabled){border-color:var(--edge);color:var(--gold);background:rgba(249,115,22,.06)}

.vx-lode{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;padding:24px 22px 20px;
  border-radius:var(--rad-xl);border:1px solid rgba(255,200,87,.32);
  background:radial-gradient(120% 90% at 50% 0,rgba(249,115,22,.2),transparent 58%),
             linear-gradient(160deg,rgba(35,25,14,.95),rgba(11,10,8,.96));
  box-shadow:var(--elev-3),0 0 46px rgba(249,115,22,.16),var(--inner-hi)}
.vx-lode-ring{position:absolute;inset:-40%;pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0 66%,rgba(255,200,87,.3) 84%,transparent 100%);
  -webkit-mask:radial-gradient(closest-side,transparent 62%,#000 74%,transparent 88%);
  mask:radial-gradient(closest-side,transparent 62%,#000 74%,transparent 88%);animation:vx-dialspin 11s linear infinite}
.vx-lode>*{position:relative;z-index:1}
.vx-lode>header{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin-bottom:10px}
.vx-pill-seal{border-color:rgba(255,200,87,.4);background:rgba(255,200,87,.1);color:var(--gold)}
.vx-pill-seal .vx-dot{background:var(--gold);box-shadow:0 0 8px var(--gold)}
.vx-lode.hot{border-color:var(--gold);box-shadow:var(--elev-3),0 0 80px rgba(249,115,22,.4)}
.vx-lode-machine{display:block;width:clamp(132px,12vw,174px);height:auto;aspect-ratio:1;object-fit:contain;
  margin:0 auto -2px;pointer-events:none;background:transparent;
  filter:drop-shadow(0 10px 24px rgba(249,115,22,.22)) drop-shadow(0 0 18px rgba(255,200,87,.18))}
.vx-lode-seal{width:78px;height:78px;object-fit:contain;filter:drop-shadow(0 0 22px rgba(255,200,87,.45))}
.vx-lode-amt{margin-top:10px;font-family:var(--display);font-weight:900;font-size:clamp(38px,5.2vw,56px);
  line-height:1;letter-spacing:-.03em;
  background:linear-gradient(180deg,#FFF3D0,var(--gold) 45%,var(--ember));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 26px rgba(249,115,22,.35))}
.vx-lode-amt.vx-tick{animation:vx-lodepop .6s var(--ease-spring)}
@keyframes vx-lodepop{0%{transform:scale(1)}30%{transform:scale(1.07)}100%{transform:scale(1)}}
.vx-lode-unit{margin-top:2px;font-family:var(--mono);font-size:11px;letter-spacing:.3em;color:var(--amber)}
.vx-lode-fill{position:relative;width:100%;height:8px;margin:16px 0 12px;border-radius:99px;overflow:hidden;
  background:rgba(0,0,0,.45);box-shadow:inset 0 1px 3px rgba(0,0,0,.6)}
.vx-lode-fill i{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--ember),var(--gold));box-shadow:0 0 16px rgba(243,166,15,.6);
  transition:width 1.1s var(--ease)}
.vx-lode-spark{position:absolute;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
  pointer-events:none;background:radial-gradient(closest-side,#FFF6DC,rgba(255,200,87,0));
  opacity:0;transition:left 1.1s var(--ease),opacity .4s}
.vx-lode-fill.live .vx-lode-spark{opacity:1;animation:vx-sparkpulse 1.4s ease-in-out infinite}
@keyframes vx-sparkpulse{0%,100%{transform:scale(1)}50%{transform:scale(1.5)}}
.vx-lode-foot{display:flex;gap:20px;width:100%;justify-content:space-between}
.vx-lode-foot span{display:flex;flex-direction:column;gap:2px}
.vx-lode-foot small{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.vx-lode-foot b{font-size:12.5px;color:var(--ink)}
.vx-lode-note{margin-top:12px;padding-top:11px;border-top:1px solid var(--gline-2);width:100%;text-align:center;
  font-family:var(--mono);font-size:9px;line-height:1.6;color:var(--faint)}

/* ---- RAILS (what used to sit on the map) --------------------------------- */
.vx-maprail,.vx-luckyrail{display:grid;gap:12px;margin-bottom:12px}
.vx-maprail{grid-template-columns:repeat(6,minmax(0,1fr))}
.vx-luckyrail{grid-template-columns:repeat(5,minmax(0,1fr))}
.vx-mr{display:flex;flex-direction:column;gap:3px;padding:14px 16px;min-width:0;
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2)}
.vx-mr:hover{transform:translateY(-2px);border-color:var(--edge)}
.vx-mr>small{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-mr>b{font-family:var(--display);font-weight:700;font-size:20px;line-height:1.15;color:var(--ink);align-self:flex-start}
.vx-mr>span{font-size:10.5px;color:var(--faint)}
.vx-mr-timer{flex-direction:row;align-items:center;gap:14px}
.vx-mr-timer>div{min-width:0}
.vx-mr-timer small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-mr-timer b{display:block;margin-top:2px;font-family:var(--display);font-weight:700;font-size:15px;color:var(--ink)}
.vx-mr-timer span{display:block;font-size:10.5px;color:var(--faint)}
.vx-mr-act{gap:8px}
.vx-mr-act .vx-btn{align-self:flex-start;margin-top:2px}
.vx-mr-jack{border-color:rgba(255,200,87,.28);background:linear-gradient(158deg,#1F1710,#0B0A08)}

/* small dial for the rails */
.vx-dial{position:relative;width:62px;height:62px;flex:none;display:grid;place-items:center}
.vx-dial svg{width:100%;height:100%;transform:rotate(-90deg)}
.vx-dial-track{fill:none;stroke:rgba(255,255,255,.08);stroke-width:8}
.vx-dial-prog{fill:none;stroke:var(--amber);stroke-width:8;stroke-linecap:round;stroke-dasharray:327;
  stroke-dashoffset:0;transition:stroke-dashoffset 1s linear,stroke var(--dur-3)}
.vx-dial.is-lock .vx-dial-prog{stroke:var(--warn)}
.vx-dial.is-draw .vx-dial-prog{stroke:var(--ice)}
.vx-dial.is-hit .vx-dial-prog{stroke:var(--gold)}
.vx-dial.hot .vx-dial-prog{stroke:var(--ember)}
.vx-dial-core{position:absolute;display:grid;place-items:center}
.vx-dial-core strong{font-family:var(--display);font-weight:800;font-size:14px;letter-spacing:-.02em;color:var(--ink)}
.vx-dial-core strong.hot{color:var(--ember-lt)}

/* ---- DECK under the map -------------------------------------------------- */
.vx-deckrow{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(280px,1fr);gap:12px;margin-top:12px;align-items:start}
/* Keep the mode switch and manual deployment console as one visual unit.
   Auto still folds #vx-hunt-console in place; no game logic is moved. */
.vx-hunt-deploy{display:flex;flex-direction:column;gap:8px;min-width:0}
.vx-hunt-deploy>.vx-auto-host{margin:0}
.vx-hunt-plays{grid-column:1;min-width:0}
.vx-hunt-plays:empty{display:none}
.vx-deck{padding:20px}
.vx-deckgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr);gap:22px;
  align-items:end;margin-top:14px}
.vx-facts{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px}
.vx-facts span{display:flex;flex-direction:column;gap:2px;min-width:0}
.vx-facts small{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-facts b{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.vx-splitbar{display:flex;flex-direction:column;gap:7px;margin-top:18px;padding-top:14px;border-top:1px solid var(--gline-2)}
.vx-quickforge{display:flex;flex-direction:column;gap:10px;min-width:0}
.vx-qitems{display:flex;flex-direction:column;gap:7px;flex:1}
.vx-qi{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--rad-sm);
  border:1px solid var(--gline-2);background:rgba(255,255,255,.03);cursor:pointer;text-align:left;
  transition:border-color var(--dur-2),transform var(--dur-2) var(--ease),background var(--dur-2)}
.vx-qi:hover:not(:disabled){border-color:var(--edge);transform:translateX(3px)}
.vx-qi:disabled{cursor:not-allowed;opacity:.55}
.vx-qi img{width:38px;height:38px;flex:none;object-fit:contain;filter:drop-shadow(0 3px 8px rgba(0,0,0,.6))}
.vx-qi>div{flex:1;min-width:0}
.vx-qi b{display:block;font-size:13px;color:var(--ink)}
.vx-qi small{display:block;margin-top:1px;font-family:var(--mono);font-size:9.5px;color:var(--dim)}
.vx-qi.eq{border-color:var(--gold);background:rgba(255,200,87,.08)}
.vx-qi .vx-qtag{flex:none;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber)}

/* ---- LUCKY ---------------------------------------------------------------- */
.vx-lstage{max-height:calc(100vh - 260px)}
.vx-dock{display:flex;align-items:stretch;gap:0;margin-top:12px;padding:16px 8px}
.vx-potwin{display:flex;flex-direction:column;gap:1px;margin-bottom:9px;text-align:center}
.vx-potwin small{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.vx-potwin b{font-family:var(--display);font-weight:700;font-size:18px;color:var(--green-lt)}
.vx-potwin em{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--dim)}
.vx-hist{margin-top:12px;padding:0;overflow:hidden}
.vx-hist>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;
  border-bottom:1px solid var(--gline-2)}
.vx-hist h3{margin:5px 0 0;font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.vx-hist #vx-hist-rows{padding:6px 20px 14px}

/* ---- COMPOUND ------------------------------------------------------------ */
.vx-compound{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:26px;padding:24px;margin-bottom:14px;overflow:hidden}
.vx-compound:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(110% 90% at 82% 0,rgba(34,197,94,.1),transparent 52%)}
.vx-comp-copy,.vx-comp-side{position:relative;z-index:1}
.vx-compound h3{margin:7px 0 8px;font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:-.01em;color:var(--ink)}
.vx-compound p{margin:0 0 16px;font-size:13px;line-height:1.65;color:var(--muted)}
.vx-comp-row{display:flex;align-items:center;gap:14px;padding:14px;border-radius:var(--rad-md);
  border:1px solid var(--gline-2);background:rgba(255,255,255,.03)}
.vx-comp-row b{display:block;font-size:13.5px;color:var(--ink)}
.vx-comp-row small{display:block;margin-top:2px;font-family:var(--mono);font-size:10.5px;color:var(--dim)}
.vx-switch{position:relative;flex:none;width:52px;height:29px;cursor:pointer}
.vx-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.vx-switch span{position:absolute;inset:0;border-radius:99px;border:1px solid var(--edge-2);
  background:rgba(0,0,0,.4);transition:background var(--dur-2),border-color var(--dur-2)}
.vx-switch span:after{content:"";position:absolute;left:3px;top:3px;width:21px;height:21px;border-radius:50%;
  background:var(--dim);transition:transform var(--dur-2) var(--ease-spring),background var(--dur-2)}
.vx-switch input:checked+span{border-color:rgba(34,197,94,.5);background:rgba(34,197,94,.18)}
.vx-switch input:checked+span:after{transform:translateX(23px);background:var(--green);box-shadow:0 0 12px var(--green)}
.vx-switch input:focus-visible+span{box-shadow:0 0 0 3px rgba(249,115,22,.2)}
.vx-comp-tier{margin-top:14px;display:flex;flex-direction:column;gap:9px;transition:opacity var(--dur-3)}
.vx-comp-tier.off{opacity:.4;pointer-events:none}
.vx-comp-tier>small{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-tiers-sm button{padding:9px 4px}
.vx-tiers-sm button b{font-size:14px}
.vx-tiers-sm button span{font-size:10px}
.vx-comp-side{display:flex;flex-direction:column;gap:12px}
.vx-comp-fig{padding:14px 16px;border-radius:var(--rad-md);border:1px solid var(--gline-2);background:rgba(255,255,255,.03)}
.vx-comp-fig small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-comp-fig b{display:block;margin-top:3px;font-family:var(--display);font-weight:700;font-size:22px;color:var(--ink)}
.vx-comp-fig span{display:block;font-size:10.5px;color:var(--faint)}
.vx-comp-actions{display:flex;gap:9px}
.vx-comp-actions .vx-btn{flex:1}

/* ---- TOKENOMICS ---------------------------------------------------------- */
.vx-flows{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.vx-flow{padding:24px;overflow:hidden}
.vx-flow header{display:flex;align-items:center;gap:15px;margin-bottom:18px}
.vx-flow header img{width:50px;height:50px;flex:none;object-fit:contain;filter:drop-shadow(0 5px 12px rgba(0,0,0,.6))}
.vx-flow h3{margin:5px 0 0;font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:-.01em;color:var(--ink)}
.vx-flow p{margin:16px 0 0;font-size:12.5px;line-height:1.65;color:var(--muted)}
.vx-flow p em{font-style:normal;color:var(--gold)}
.vx-flow p b{color:var(--ink-2)}
.vx-split4{display:flex;flex-direction:column;gap:10px}
.vx-split4 span{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px}
.vx-split4 i{grid-column:1;height:10px;border-radius:99px;width:calc(var(--w) * 1%);min-width:8px;
  background:linear-gradient(90deg,var(--amber),var(--gold));box-shadow:0 0 14px rgba(243,166,15,.25);
  animation:vx-grow 1.1s var(--ease) both}
@keyframes vx-grow{from{transform:scaleX(.02);transform-origin:left}to{transform:scaleX(1)}}
.vx-split4 span.rd i{background:linear-gradient(90deg,#B4342B,var(--red));box-shadow:0 0 14px rgba(239,68,68,.25)}
.vx-split4 b{grid-column:2;font-family:var(--display);font-weight:700;font-size:15px;color:var(--gold);min-width:46px;text-align:right}
.vx-split4 span.rd b{color:var(--red-lt)}
.vx-split4 small{grid-column:3;font-family:var(--mono);font-size:10px;letter-spacing:.05em;color:var(--dim);
  min-width:132px;text-align:right}
.vx-table{width:100%;border-collapse:collapse;font-size:12.5px}
.vx-table th{padding:8px 0;text-align:left;font-family:var(--mono);font-size:9px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--gline-2);font-weight:400}
.vx-table td{padding:10px 0;border-bottom:1px solid var(--gline-2);color:var(--ink)}
.vx-table td:not(:first-child){text-align:right}
.vx-table tr.perm td{color:var(--red-lt)}
.vx-table tr:last-child td{border-bottom:0}
.vx-fairlist{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:13px}
.vx-fairlist li{position:relative;padding-left:22px;font-size:12.5px;line-height:1.6;color:var(--muted)}
.vx-fairlist li:before{content:"";position:absolute;left:0;top:7px;width:8px;height:8px;border-radius:2px;
  background:linear-gradient(135deg,var(--gold),var(--ember))}
.vx-fairlist li b{color:var(--ink)}

/* ---- RESPONSIVE for the new blocks --------------------------------------- */
@media(max-width:1180px){
  .vx-maprail{grid-template-columns:repeat(3,minmax(0,1fr))}
  .vx-luckyrail{grid-template-columns:repeat(3,minmax(0,1fr))}
  .vx-deckrow{grid-template-columns:1fr}
  .vx-hunt-plays{grid-column:1}
  .vx-compound{grid-template-columns:1fr}
  .vx-flows{grid-template-columns:1fr}
}
@media(max-width:980px){
    .vx-netbar{grid-template-columns:46px minmax(0,1fr);gap:12px 14px}
  .vx-netbar .vx-btn{grid-column:1/-1;justify-self:stretch;width:100%}
  .vx-wallet{position:static;flex-wrap:wrap;gap:12px}
  .vx-deckgrid{grid-template-columns:1fr;gap:16px}
  .vx-facts{grid-template-columns:1fr 1fr}
  .vx-lstage{max-height:none}
}
@media(max-width:640px){
  .vx-maprail,.vx-luckyrail{grid-template-columns:1fr 1fr}
  .vx-mr-timer{grid-column:span 2}
  .vx-lode-amt{font-size:38px}
  .vx-lode-machine{width:138px}
  .vx-split4 span{grid-template-columns:minmax(0,1fr) auto;gap:8px}
  .vx-split4 small{grid-column:1/-1;text-align:left;min-width:0}
  .vx-comp-actions{flex-direction:column}
}
@media(prefers-reduced-motion:reduce){
  .vx-lode-ring,.vx-heroglow,.vx-lode-fill.live .vx-lode-spark,.vx-split4 i,.vx-lode-amt.vx-tick{animation:none!important}
  .vx-mr:hover,.vx-qi:hover:not(:disabled){transform:none}
}

/* ############################################################################
   THE VEIN — v2 PASS · 2 Aug 2026
   Everything below is additive and comes last, so it wins on equal specificity.
   Six things it does:
     1. an ETH mark and a green USD flip on every value that has one
     2. the "YOUR CAVE" strip becomes a wallet/network POD beside the tabs
     3. the hunt rail gets identity — colour, an accent bar, live states
     4. the Lucky Vein console moves ONTO the plate, where the floor is empty
     5. a referral seam, an upgrade card with art, and the guide page
     6. one palette: gold = action, green = live/profit, amber = pending,
        red = permanent. No new colours were invented for this pass.
   ########################################################################## */

/* ============================================================ 1. ETH + USD == */
.vx-ethmark{width:1em;height:1em;flex:none;color:#C1CCF7;filter:drop-shadow(0 0 6px rgba(171,159,242,.45))}
.vx-eth::before{
  content:"";display:inline-block;width:.86em;height:.86em;margin-right:.38em;vertical-align:-.04em;
  background:currentColor;opacity:.92;
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path d='M16 2 7.4 16.2 16 21.3z' opacity='.6'/><path d='M16 2l8.6 14.2L16 21.3z'/><path d='M16 23.1 7.4 18 16 30z' opacity='.6'/><path d='M16 30l8.6-12L16 23.1z'/></svg>") center/contain no-repeat;
          mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path d='M16 2 7.4 16.2 16 21.3z' opacity='.6'/><path d='M16 2l8.6 14.2L16 21.3z'/><path d='M16 23.1 7.4 18 16 30z' opacity='.6'/><path d='M16 30l8.6-12L16 23.1z'/></svg>") center/contain no-repeat}

/* THE FLIP. The dollar figure lives in an ATTRIBUTE, so every existing
   `.textContent =` in the-vein.js keeps working and nothing had to be wrapped
   in a span. Hover fades the native figure out and the green one in. */
/* v2's flip lived here. Superseded by the v5 block at the end of this file —
   it hid the figure with `color` alone, which gradient text ignores. */
[data-usd]{position:relative}

/* ============================================================ 2. TOPLINE ==== */
.vx-topline{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;margin:18px 0 22px}
.vx-topline .vx-tabs{margin:0;width:100%;min-width:0}
.vx-topline .vx-tabs button{flex:1 1 0;justify-content:center;min-width:0;padding-left:12px;padding-right:12px}

.vx-pod{position:relative;flex:none;z-index:60}
.vx-podbtn{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 10px;cursor:pointer;
  border-radius:var(--rad-md);border:1px solid var(--gline-2);
  background:linear-gradient(160deg,rgba(30,23,15,.86),rgba(12,11,9,.9));
  backdrop-filter:blur(12px) saturate(1.15);-webkit-backdrop-filter:blur(12px) saturate(1.15);
  box-shadow:var(--elev-1),var(--inner-hi);color:var(--ink);
  transition:border-color var(--dur-2),box-shadow var(--dur-2),transform var(--dur-1)}
.vx-podbtn:hover{border-color:var(--edge);transform:translateY(-1px);
  box-shadow:0 12px 30px rgba(0,0,0,.45),0 0 0 3px rgba(249,115,22,.06)}
.vx-pod.open .vx-podbtn{border-color:var(--edge-hot);box-shadow:0 0 0 3px rgba(249,115,22,.1)}

.vx-podnet{position:relative;width:34px;height:34px;flex:none;border-radius:11px;display:grid;place-items:center;
  border:1px solid var(--edge-2);background:radial-gradient(circle at 40% 30%,rgba(249,115,22,.2),rgba(0,0,0,.35))}
.vx-poddot{width:9px;height:9px;border-radius:50%;background:var(--dim);box-shadow:0 0 10px currentColor;
  transition:background var(--dur-2)}
.vx-pod[data-state="ok"]   .vx-poddot{background:var(--green);animation:vx-live 2.2s ease-in-out infinite}
.vx-pod[data-state="wrong"] .vx-poddot{background:var(--amber)}
.vx-pod[data-state="off"]  .vx-poddot{background:var(--dim)}
.vx-pod[data-state="ok"]   .vx-podnet{border-color:rgba(34,197,94,.4)}
.vx-pod[data-state="wrong"] .vx-podnet{border-color:rgba(243,166,15,.45)}

.vx-podlbl{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}
.vx-podlbl b{font-family:var(--display);font-weight:700;font-size:12.5px;line-height:1;color:var(--ink);
  white-space:nowrap;max-width:150px;overflow:hidden;text-overflow:ellipsis}
.vx-podlbl small{font-family:var(--mono);font-size:10px;line-height:1;color:var(--dim)}
.vx-pod[data-state="wrong"] .vx-podlbl b{color:var(--amber)}

.vx-podbals{display:flex;align-items:center;gap:10px;margin-left:4px;padding-left:12px;
  border-left:1px solid var(--gline-2)}
.vx-podbal{display:inline-flex;align-items:center;gap:5px;font-family:var(--display);font-weight:700;
  font-size:13px;color:var(--ink);white-space:nowrap}
.vx-podbal .vx-ethmark{width:13px;height:13px}
.vx-podbal-w b{color:var(--gold)}
.vx-podbal-w small{font-family:var(--mono);font-size:9px;letter-spacing:.12em;color:var(--dim)}
.vx-podcar{width:14px;height:14px;flex:none;color:var(--dim);transition:transform var(--dur-2)}
.vx-pod.open .vx-podcar{transform:rotate(180deg)}

.vx-podsheet{position:absolute;right:0;top:calc(100% + 10px);width:min(430px,86vw);z-index:70;
  display:flex;flex-direction:column;gap:14px;padding:16px;border-radius:var(--rad-lg);
  border:1px solid var(--gline-2);background:linear-gradient(160deg,rgba(26,20,13,.97),rgba(11,10,8,.98));
  backdrop-filter:blur(18px) saturate(1.2);box-shadow:var(--elev-3),var(--inner-hi);
  animation:vx-podin .22s var(--ease-spring) both}
@keyframes vx-podin{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.vx-podsheet>header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vx-podgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.vx-podgrid .vx-w{display:flex;flex-direction:column;gap:3px;padding:10px 11px;border-radius:var(--rad-sm);
  border:1px solid var(--gline-2);background:rgba(0,0,0,.28)}
.vx-podgrid .vx-w small{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:9px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.vx-podgrid .vx-w small .vx-ethmark{width:11px;height:11px}
.vx-podgrid .vx-w b{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.vx-podgrid .vx-w-claim{border-color:rgba(255,200,87,.28);background:rgba(255,200,87,.06)}
.vx-podgrid .vx-w-claim b{color:var(--gold)}
.vx-podfoot{display:flex;gap:9px}
.vx-podfoot .vx-btn{flex:1}
.vx-podnote{font-size:11.5px;line-height:1.55;color:var(--faint)}

/* the old strip is gone; if a cached copy ever loads, it must not come back */
.vx-wallet{display:none!important}

/* ============================================================ 3. HUNT RAIL == */
.vx-mr{overflow:hidden}
.vx-mrbar{position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px;
  background:linear-gradient(180deg,var(--gold),var(--ember));opacity:.5;
  transition:opacity var(--dur-2),width var(--dur-2)}
.vx-mr:hover .vx-mrbar{opacity:1;width:4px}
.vx-mr::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
  background:radial-gradient(130% 110% at 0% 0%,rgba(249,115,22,.12),transparent 55%);
  transition:opacity var(--dur-3)}
.vx-mr:hover::after{opacity:1}
.vx-mr-hunters .vx-mrbar{background:linear-gradient(180deg,var(--ice),var(--violet))}
.vx-mr-last .vx-mrbar{background:linear-gradient(180deg,var(--violet),var(--ice))}
.vx-mr-eq .vx-mrbar{background:linear-gradient(180deg,var(--green),var(--jade))}
.vx-mr-golden .vx-mrbar{background:linear-gradient(180deg,var(--dim),var(--faint))}
/* the Golden Vein card IGNITES when it wakes — the one state worth shouting */
.vx-mr-golden.lit{border-color:rgba(255,200,87,.5);background:linear-gradient(158deg,#241A0E,#0B0A08)}
.vx-mr-golden.lit .vx-mrbar{background:linear-gradient(180deg,var(--gold),var(--ember));opacity:1;width:4px}
.vx-mr-golden.lit b{color:var(--gold)}
.vx-mr-golden.lit::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(120% 100% at 90% 0,rgba(255,200,87,.2),transparent 50%);
  animation:vx-goldbreath 2.8s ease-in-out infinite}
@keyframes vx-goldbreath{0%,100%{opacity:.55}50%{opacity:1}}
.vx-mr-pool b{letter-spacing:-.01em}
.vx-mr-pool::before{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;
  pointer-events:none;background:radial-gradient(closest-side,rgba(255,200,87,.16),transparent 70%)}

/* ============================================ 4. MAP — nodes + the ETH plate = */
.vx-node{width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:13px;overflow:visible}
.vx-nart{position:absolute;left:50%;top:100%;width:46px;height:46px;object-fit:contain;
  transform:translate(-50%,-24%);pointer-events:none;opacity:.9;z-index:-1;
  filter:drop-shadow(0 6px 12px rgba(0,0,0,.6));transition:transform var(--dur-2) var(--ease-spring),opacity var(--dur-2)}
.vx-node:hover .vx-nart,.vx-node:focus-visible .vx-nart{transform:translate(-50%,-18%) scale(1.1);opacity:1}
.vx-node.sel .vx-nart{transform:translate(-50%,-16%) scale(1.16);opacity:1;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.65)) drop-shadow(0 0 14px rgba(255,200,87,.55))}
.vx-node.lost .vx-nart{opacity:.35}
.vx-nno{position:relative;z-index:1}

.vx-ethplate{position:absolute;z-index:4;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;
  padding:9px 15px 9px 9px;border-radius:var(--rad-pill);pointer-events:none;
  border:1px solid rgba(255,200,87,.34);background:linear-gradient(160deg,rgba(28,21,13,.92),rgba(10,9,7,.94));
  backdrop-filter:blur(8px);box-shadow:0 14px 34px rgba(0,0,0,.55),0 0 34px rgba(249,115,22,.16);
  animation:vx-platefloat 6s ease-in-out infinite}
@keyframes vx-platefloat{0%,100%{transform:translate(-50%,-50%)}50%{transform:translate(-50%,-56%)}}
.vx-ethplate img{width:34px;height:34px;object-fit:contain;filter:drop-shadow(0 0 10px rgba(171,159,242,.4))}
.vx-ethplate span{display:flex;flex-direction:column;gap:1px}
.vx-ethplate small{font-family:var(--mono);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.vx-ethplate b{font-family:var(--display);font-weight:800;font-size:16px;line-height:1.05}
@media (max-width:900px){.vx-ethplate{display:none}}

/* ================================================= 5. UPGRADE MID-HUNT ====== */
.vx-quickforge{position:relative;overflow:hidden}
.vx-qfglow{position:absolute;right:-70px;top:-70px;width:260px;height:260px;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,200,87,.16),rgba(249,115,22,.05) 55%,transparent 72%);
  animation:vx-goldbreath 5s ease-in-out infinite}
.vx-qfhead{display:flex;align-items:center;gap:16px}
.vx-qfart{width:74px;height:74px;flex:none;object-fit:contain;
  filter:drop-shadow(0 10px 20px rgba(0,0,0,.55)) drop-shadow(0 0 18px rgba(249,115,22,.28));
  animation:vx-qfbob 5.5s ease-in-out infinite}
@keyframes vx-qfbob{0%,100%{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-7px) rotate(1.5deg)}}
.vx-qfsub{display:block;margin-top:5px;font-size:11.5px;line-height:1.5;color:var(--faint);max-width:34ch}

/* ================================================= 6. REFERRAL ============== */
.vx-ref{position:relative;overflow:hidden;display:grid;grid-template-columns:auto 1fr auto;align-items:center;
  gap:22px;margin-top:14px;padding:20px 24px}
.vx-refglow{position:absolute;left:-60px;bottom:-80px;width:280px;height:280px;pointer-events:none;
  background:radial-gradient(closest-side,rgba(34,197,94,.12),transparent 70%)}
.vx-refart{width:84px;height:84px;object-fit:contain;flex:none;
  filter:drop-shadow(0 10px 22px rgba(0,0,0,.55));animation:vx-qfbob 6.5s ease-in-out infinite}
.vx-refcopy h3{margin:6px 0 5px;font-family:var(--display);font-weight:800;font-size:19px;color:var(--ink)}
.vx-refcopy p{font-size:12.5px;line-height:1.6;color:var(--muted);max-width:62ch}
.vx-refcopy p b{color:var(--green)}
.vx-reflink{display:flex;align-items:center;gap:9px;margin-top:12px;max-width:520px}
.vx-reflink input{flex:1;min-width:0;padding:11px 13px;border-radius:var(--rad-sm);border:1px solid var(--gline-2);
  background:rgba(0,0,0,.34);color:var(--ink);font-family:var(--mono);font-size:12px;outline:0}
.vx-reflink input.vx-ref-off{color:var(--faint)}
.vx-refstats{display:flex;gap:22px;flex:none}
.vx-refstats span{display:flex;flex-direction:column;gap:3px}
.vx-refstats small{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-refstats b{font-family:var(--display);font-weight:700;font-size:20px;color:var(--ink)}
@media (max-width:1000px){.vx-ref{grid-template-columns:1fr;gap:14px}.vx-refart{width:64px;height:64px}
  .vx-refstats{gap:26px}}

/* =============================================== 7. LUCKY VEIN CONSOLE ====== */
/* The console USED to be `position:absolute` against the page, which is why it
   sat across the plate art. It now belongs to the stage and lands on the empty
   floor the art leaves below the arches — the room Rainar pointed at. */
.vx-lhud{position:absolute;z-index:9;left:14px;right:14px;bottom:14px;pointer-events:auto;
  border-radius:var(--rad-lg);border:1px solid rgba(255,200,87,.22);
  background:linear-gradient(180deg,rgba(18,13,9,.62),rgba(10,9,7,.9) 46%,rgba(8,7,6,.95));
  backdrop-filter:blur(16px) saturate(1.25);-webkit-backdrop-filter:blur(16px) saturate(1.25);
  box-shadow:0 -10px 50px rgba(0,0,0,.5),var(--inner-hi);
  animation:vx-hudrise .5s var(--ease-spring) both}
@keyframes vx-hudrise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.vx-lhud::before{content:"";position:absolute;left:8%;right:8%;top:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,200,87,.75),transparent)}
.vx-lhud-in{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:0;
  padding:14px 6px}
.vx-hsec{display:flex;flex-direction:column;gap:9px;padding:0 20px;min-width:0;
  border-right:1px solid rgba(255,255,255,.07)}
.vx-hsec:last-child{border-right:0}
.vx-hsec>small{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);white-space:nowrap}
.vx-lamount{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--rad-sm);
  border:1px solid var(--edge-2);background:rgba(0,0,0,.4);
  transition:border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-lamount:focus-within{border-color:var(--edge-hot);box-shadow:0 0 0 3px rgba(249,115,22,.12)}
.vx-lamount .vx-linput{width:100px;border:0;background:none;box-shadow:none;text-align:left;padding:0;font-size:19px}
.vx-lamount .vx-linput:focus{border:0;box-shadow:none}
.vx-inpunit{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.vx-inpunit .vx-ethmark{width:12px;height:12px}

/* the number rail — choose a tunnel without going near the art */
.vx-numrail{display:flex;gap:8px}
.vx-num{position:relative;width:52px;height:52px;padding:0;cursor:pointer;border-radius:14px;
  border:1px solid var(--edge-2);background:linear-gradient(160deg,rgba(34,26,18,.9),rgba(10,9,7,.92));
  color:var(--gold);overflow:hidden;
  transition:transform var(--dur-2) var(--ease-spring),border-color var(--dur-2),box-shadow var(--dur-2),color var(--dur-2)}
.vx-num b{position:relative;z-index:1;font-family:var(--display);font-weight:800;font-size:19px;line-height:52px;display:block}
.vx-num i{position:absolute;inset:0;opacity:0;transition:opacity var(--dur-3);
  background:radial-gradient(closest-side,rgba(249,115,22,.4),transparent 72%)}
.vx-num:hover{transform:translateY(-3px);border-color:var(--edge-hot);
  box-shadow:0 12px 26px rgba(0,0,0,.5),0 0 22px rgba(249,115,22,.3)}
.vx-num:hover i{opacity:1}
.vx-num.on{color:#15110D;border-color:var(--gold);
  background:linear-gradient(120deg,var(--gold),var(--amber));
  box-shadow:0 0 0 1px rgba(255,200,87,.6),0 0 26px rgba(243,166,15,.5);
  animation:vx-selpulse 2.6s ease-in-out infinite}
.vx-num.on i{opacity:0}
.vx-num:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
.vx-hslots{gap:8px}
.vx-hsec-pick .vx-slot{min-width:0;height:44px}
.vx-hsec-go{display:flex;flex-direction:row;align-items:center;gap:14px}
.vx-hsec-go .vx-btn-lg{width:auto;min-width:172px}
.vx-hsec-bd .vx-bd{min-width:210px}
.vx-bd-burn b{color:var(--red-lt)}
.vx-bd-jack b{color:var(--gold)}
/* the tunnel arch lights when its rail number is hovered, and vice versa */
.vx-lstage{min-height:560px}
@media (max-width:1180px){
  .vx-lhud-in{grid-template-columns:1fr 1fr;gap:12px 0;padding:12px 4px}
  .vx-hsec{border-right:0;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:12px}
  .vx-hsec-go,.vx-hsec-bd{border-bottom:0;padding-bottom:0}
}
@media (max-width:820px){
  .vx-lhud{position:static;margin-top:12px;left:auto;right:auto;bottom:auto;animation:none}
  .vx-lhud-in{grid-template-columns:1fr}
  .vx-num{width:46px;height:46px}.vx-num b{font-size:17px;line-height:46px}
}

/* ==================================================== 8. VAULT + PALETTE ==== */
.vx-m-eth b{color:var(--ice-lt)}
.vx-m-vw b{color:var(--gold)}
.vx-m-ref b{color:var(--green)}
.vx-inlink{color:var(--gold);text-decoration:none;border-bottom:1px dashed rgba(255,200,87,.4)}
.vx-inlink:hover{color:var(--gold-2);border-bottom-color:var(--gold)}
/* one accent per role, so the vault stops reading as four different products */
.vx-vault{position:relative;overflow:hidden}
.vx-vault::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--gold),var(--ember));opacity:.6}
.vx-sac::before{background:linear-gradient(180deg,var(--red),var(--rose));opacity:.7}
.vx-compound{position:relative;overflow:hidden}
.vx-compound::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--green),var(--jade));opacity:.6}
.vx-tiers button{transition:transform var(--dur-2) var(--ease-spring),border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-tiers button:hover{transform:translateY(-2px)}
.vx-tiers button.on{box-shadow:0 0 0 1px rgba(255,200,87,.45),0 0 22px rgba(243,166,15,.22)}

/* ==================================================== 9. THE GUIDE ========== */
.vx-guide{--gap:16px}
/* The guide is reading-heavy, so its surfaces stay darker and more neutral than the game boards. */
.vx-guide .vx-glass{background:linear-gradient(158deg,#141210,#0a0908)}
.vx-guide .vx-gsec-gold{background:linear-gradient(158deg,#17130f,#090807);border-color:rgba(255,200,87,.18)}
.vx-guide .vx-gamepillar{background:linear-gradient(158deg,#151311,#0a0908)}
.vx-guide .vx-faq details{background:linear-gradient(158deg,#131110,#0a0908)}
.vx-ghero h2 em,.vx-ghead2 h2 em{font-style:normal;
  background:linear-gradient(96deg,var(--gold),var(--ember));-webkit-background-clip:text;background-clip:text;color:transparent}
.vx-ghead2{margin-top:26px}
.vx-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.vx-step{position:relative;padding:18px 18px 18px 20px;overflow:hidden}
.vx-step::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--gold),var(--ember));opacity:.55}
.vx-stepn{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:9px;margin-bottom:10px;
  border:1px solid var(--edge);background:rgba(249,115,22,.12);color:var(--gold);
  font-family:var(--mono);font-weight:700;font-size:12px}
.vx-step h4{margin:0 0 6px;font-family:var(--display);font-weight:700;font-size:14.5px;color:var(--ink)}
.vx-step p{font-size:12px;line-height:1.6;color:var(--muted)}
.vx-step p b{color:var(--gold)}

.vx-gsec{padding:24px;margin-bottom:16px}
.vx-gsechead{display:flex;align-items:flex-start;gap:18px;margin-bottom:20px}
.vx-gsechead img{width:64px;height:64px;flex:none;object-fit:contain;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.5))}
.vx-gsechead h3{margin:6px 0 7px;font-family:var(--display);font-weight:800;font-size:22px;color:var(--ink)}
.vx-gsechead p{font-size:13px;line-height:1.65;color:var(--muted);max-width:74ch}
.vx-gsechead p em{font-style:normal;color:var(--gold)}
.vx-gsec-gold{border-color:rgba(255,200,87,.3);background:linear-gradient(158deg,#1F1710,#0B0A08)}

.vx-phaserow{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:22px}
.vx-phase{position:relative;padding:12px 13px;border-radius:var(--rad-sm);border:1px solid var(--gline-2);
  background:rgba(0,0,0,.26);display:flex;flex-direction:column;gap:5px}
.vx-phase i{width:22px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--gold),var(--ember))}
.vx-phase b{font-family:var(--display);font-weight:700;font-size:13px;color:var(--ink)}
.vx-phase small{font-size:11px;line-height:1.5;color:var(--faint)}
.vx-phase:nth-child(2) i{background:linear-gradient(90deg,var(--amber),var(--amber-lt))}
.vx-phase:nth-child(3) i{background:linear-gradient(90deg,var(--ice),var(--violet))}
.vx-phase:nth-child(4) i{background:linear-gradient(90deg,var(--gold),var(--gold-2))}
.vx-phase:nth-child(5) i{background:linear-gradient(90deg,var(--green),var(--jade))}

.vx-gcols{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.vx-gcols-2{gap:16px;margin-bottom:16px}
.vx-gcol h5{margin:0 0 12px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--amber)}
.vx-glist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.vx-glist li{position:relative;padding-left:20px;font-size:12.5px;line-height:1.62;color:var(--muted)}
.vx-glist li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:2px;
  transform:rotate(45deg);background:var(--gold);box-shadow:0 0 8px rgba(243,166,15,.5)}
.vx-glist li b{color:var(--ink)}
.vx-glist-neg li::before{background:var(--red);box-shadow:0 0 8px rgba(239,68,68,.45)}
.vx-glist-neg li b{color:var(--red-lt)}

.vx-example{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px;border-radius:var(--rad-md);
  border:1px solid var(--gline-2);background:rgba(0,0,0,.3);margin-bottom:12px}
.vx-example span{display:flex;flex-direction:column;gap:3px}
.vx-example small{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.vx-example b{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.vx-exres{grid-column:1/-1;padding-top:12px;border-top:1px solid var(--gline-2)}
.vx-exres b{font-size:20px}

.vx-itemguide{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.vx-itemguide span{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:18px;
  border-radius:var(--rad-md);border:1px solid var(--gline-2);background:rgba(0,0,0,.26);
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2)}
.vx-itemguide span:hover{transform:translateY(-3px);border-color:var(--edge)}
.vx-itemguide img{width:54px;height:54px;object-fit:contain;margin-bottom:4px}
.vx-itemguide b{font-family:var(--display);font-weight:700;font-size:15px;color:var(--ink)}
.vx-itemguide small{font-family:var(--mono);font-size:10.5px;color:var(--gold)}
.vx-itemguide p{font-size:12px;line-height:1.6;color:var(--muted)}

.vx-sinks{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0 16px}
.vx-sink{display:flex;align-items:center;gap:14px;padding:16px 18px}
.vx-sink img{width:44px;height:44px;object-fit:contain;flex:none}
.vx-sink div{display:flex;flex-direction:column;gap:2px}
.vx-sink b{font-family:var(--display);font-weight:800;font-size:22px;color:var(--red-lt)}
.vx-sink small{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.vx-sink span{font-size:11.5px;color:var(--faint)}

.vx-faq{display:flex;flex-direction:column;gap:9px;margin-top:22px}
.vx-faqh{margin:0 0 4px;font-family:var(--display);font-weight:800;font-size:20px;color:var(--ink)}
.vx-faq details{padding:0;overflow:hidden}
.vx-faq summary{list-style:none;cursor:pointer;padding:15px 18px;font-family:var(--display);font-weight:600;
  font-size:14px;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:12px;
  transition:color var(--dur-2)}
.vx-faq summary::-webkit-details-marker{display:none}
.vx-faq summary::after{content:"+";font-family:var(--mono);font-size:17px;color:var(--gold);
  transition:transform var(--dur-2) var(--ease-spring)}
.vx-faq details[open] summary::after{transform:rotate(45deg)}
.vx-faq summary:hover{color:var(--gold)}
.vx-faq details p{padding:0 18px 16px;font-size:12.5px;line-height:1.65;color:var(--muted)}
.vx-faq details p em{font-style:normal;color:var(--gold)}

@media (max-width:1100px){
  .vx-steps{grid-template-columns:1fr 1fr}
  .vx-phaserow{grid-template-columns:1fr 1fr 1fr}
  .vx-gcols{grid-template-columns:1fr;gap:22px}
  .vx-itemguide,.vx-sinks{grid-template-columns:1fr 1fr}
}
@media (max-width:980px){
  .vx-topline{grid-template-columns:1fr;align-items:stretch}
  .vx-pod{align-self:stretch}.vx-podbtn{width:100%}
}
@media (max-width:820px){
  .vx-topline{grid-template-columns:1fr;align-items:stretch}
  .vx-pod{align-self:stretch}.vx-podbtn{width:100%}
  .vx-podsheet{right:auto;left:0;width:100%}
  .vx-podbals{display:none}
  .vx-steps,.vx-phaserow,.vx-itemguide,.vx-sinks{grid-template-columns:1fr}
  .vx-podgrid{grid-template-columns:1fr 1fr}
}

@media (prefers-reduced-motion:reduce){
  .vx-ethplate,.vx-qfart,.vx-refart,.vx-qfglow,.vx-mr-golden.lit::before,.vx-lhud,.vx-num.on{animation:none!important}
  [data-usd][data-usd-val]::after{transition:none}
}

/* ############################################################################
   THE VEIN — v3 · INTERACTION + REWARD PASS · 2 Aug 2026
   🐛 THE HEADLINE BUG: `.vx-cta`, `.vx-ghost` and `.vx-danger` had ZERO rules
   in this file. They are the classes openModal() builds its footer from and the
   classes the Workshop cards use, so every craft button and every modal button
   was rendering as a RAW BROWSER BUTTON — white, square, system font. That is
   the whole reason the popup looked dead. They are styled here.
   ########################################################################## */

/* ---- the two missing button dialects ------------------------------------- */
.vx-cta,.vx-ghost{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 20px;border-radius:var(--rad-sm);cursor:pointer;font-family:var(--sans);font-weight:700;
  font-size:13px;letter-spacing:.01em;overflow:hidden;
  transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-2),filter var(--dur-2),
             border-color var(--dur-2),background var(--dur-2)}
.vx-cta{border:0;color:#15110D;
  background:linear-gradient(120deg,var(--gold) 0%,var(--amber) 46%,var(--ember) 100%);
  box-shadow:0 10px 30px rgba(243,166,15,.24),inset 0 1px 0 rgba(255,255,255,.35)}
.vx-cta:hover:not(:disabled){transform:translateY(-1px);
  box-shadow:0 16px 40px rgba(243,166,15,.36),inset 0 1px 0 rgba(255,255,255,.35)}
.vx-cta::after{content:"";position:absolute;inset:0;transform:translateX(-130%);pointer-events:none;
  background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.35),transparent 62%)}
.vx-cta:hover:not(:disabled)::after{animation:vx-sheen .75s var(--ease-out)}
@keyframes vx-sheen{to{transform:translateX(130%)}}
.vx-ghost{border:1px solid var(--edge-2);color:var(--ink-2);background:rgba(255,255,255,.04)}
.vx-ghost:hover:not(:disabled){border-color:var(--edge);color:var(--ink);background:rgba(249,115,22,.08);
  transform:translateY(-1px)}
.vx-cta.vx-danger,.vx-danger{color:#fff;background:linear-gradient(120deg,var(--red),var(--rose));
  box-shadow:0 10px 30px rgba(239,68,68,.28),inset 0 1px 0 rgba(255,255,255,.2)}
.vx-cta.vx-danger:hover:not(:disabled){box-shadow:0 16px 40px rgba(239,68,68,.4)}
.vx-cta:active:not(:disabled),.vx-ghost:active:not(:disabled){transform:translateY(0) scale(.98)}
.vx-cta:disabled,.vx-ghost:disabled{cursor:not-allowed;opacity:.42;filter:saturate(.5);transform:none;box-shadow:none}
.vx-cta:focus-visible,.vx-ghost:focus-visible{outline:2px solid var(--ember);outline-offset:2px}

/* ---- the modal, with the thing you are acting on at the top of it --------- */
.vx-modal{overflow:hidden}
.vx-modal.vx-min{animation:vx-modalin .3s var(--ease-spring) both}
@keyframes vx-modalin{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.vx-mart{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:22px 22px 18px;border-bottom:1px solid var(--gline-2);overflow:hidden;
  background:radial-gradient(120% 130% at 50% 0,rgba(255,200,87,.12),transparent 62%)}
.vx-modal[data-tone="red"]   .vx-mart{background:radial-gradient(120% 130% at 50% 0,rgba(239,68,68,.14),transparent 62%)}
.vx-modal[data-tone="green"] .vx-mart{background:radial-gradient(120% 130% at 50% 0,rgba(34,197,94,.13),transparent 62%)}
.vx-modal[data-tone="ice"]   .vx-mart{background:radial-gradient(120% 130% at 50% 0,rgba(92,169,232,.14),transparent 62%)}
.vx-marglow{position:absolute;top:-40px;left:50%;width:230px;height:230px;transform:translateX(-50%);
  pointer-events:none;background:radial-gradient(closest-side,rgba(255,200,87,.22),transparent 70%);
  animation:vx-goldbreath 3.4s ease-in-out infinite}
.vx-modal[data-tone="red"] .vx-marglow{background:radial-gradient(closest-side,rgba(239,68,68,.22),transparent 70%)}
.vx-modal[data-tone="green"] .vx-marglow{background:radial-gradient(closest-side,rgba(34,197,94,.2),transparent 70%)}
.vx-modal[data-tone="ice"] .vx-marglow{background:radial-gradient(closest-side,rgba(92,169,232,.22),transparent 70%)}
.vx-mart img{position:relative;width:96px;height:96px;object-fit:contain;
  filter:drop-shadow(0 12px 26px rgba(0,0,0,.6)) drop-shadow(0 0 20px rgba(249,115,22,.3));
  animation:vx-martin .5s var(--ease-spring) both,vx-qfbob 5s ease-in-out 0.5s infinite}
@keyframes vx-martin{from{opacity:0;transform:translateY(14px) scale(.82) rotate(-8deg)}to{opacity:1;transform:none}}
.vx-mart em{position:relative;font-family:var(--mono);font-style:normal;font-size:9.5px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--gold);padding:4px 12px;border-radius:var(--rad-pill);
  border:1px solid rgba(255,200,87,.32);background:rgba(255,200,87,.08)}
.vx-modal[data-tone="red"] .vx-mart em{color:var(--red-lt);border-color:rgba(239,68,68,.34);background:rgba(239,68,68,.08)}
.vx-modal[data-tone="green"] .vx-mart em{color:var(--green-lt);border-color:rgba(34,197,94,.34);background:rgba(34,197,94,.08)}
.vx-modal[data-tone="ice"] .vx-mart em{color:var(--ice-lt);border-color:rgba(92,169,232,.34);background:rgba(92,169,232,.08)}
.vx-modal footer{background:rgba(0,0,0,.22)}

/* ---- WORKSHOP cards: the buttons now sit like controls, not like text ----- */
.vx-item{transition:transform var(--dur-2) var(--ease),border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-item:hover{transform:translateY(-3px);border-color:var(--edge);
  box-shadow:0 20px 44px rgba(0,0,0,.45),0 0 26px rgba(249,115,22,.12)}
.vx-irow{display:flex;gap:9px;margin-top:12px}
.vx-irow .vx-cta,.vx-irow .vx-ghost{flex:1;padding:12px 14px;font-size:12.5px}
.vx-item.eq{border-color:rgba(34,197,94,.4)}
.vx-item.eq::after{content:"EQUIPPED";position:absolute;right:14px;top:14px;font-family:var(--mono);
  font-size:8.5px;letter-spacing:.18em;color:var(--green-lt);padding:3px 9px;border-radius:var(--rad-pill);
  border:1px solid rgba(34,197,94,.4);background:rgba(34,197,94,.1)}
/* the forge flash — the card itself reacts the moment it levels */
.vx-forged{animation:vx-forged 1.3s var(--ease-out) both}
@keyframes vx-forged{
  0%{box-shadow:0 0 0 0 rgba(255,200,87,.9),0 0 0 rgba(249,115,22,0)}
  18%{box-shadow:0 0 0 3px rgba(255,200,87,.85),0 0 70px rgba(249,115,22,.75);filter:brightness(1.5)}
  100%{box-shadow:0 0 0 0 rgba(255,200,87,0),0 0 0 rgba(249,115,22,0);filter:none}}
.vx-pop{animation:vx-popfx .6s var(--ease-spring) both}
@keyframes vx-popfx{0%{transform:scale(1)}32%{transform:scale(1.045)}100%{transform:scale(1)}}

/* ---- THE FX LAYER -------------------------------------------------------- */
.vx-fx{position:fixed;inset:0;z-index:999;pointer-events:none;overflow:hidden;contain:strict}
.vx-spark{position:absolute;border-radius:2px;pointer-events:none;will-change:transform,opacity;
  box-shadow:0 0 10px currentColor;animation:vx-sparkfly .8s cubic-bezier(.16,.72,.3,1) both}
@keyframes vx-sparkfly{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}
  12%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.25) rotate(var(--rot))}}
.vx-shock{position:absolute;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;pointer-events:none;
  border:2px solid var(--gold);animation:vx-shockwave .72s cubic-bezier(.2,.7,.3,1) both}
.vx-shock-green{border-color:var(--green)}
.vx-shock-red{border-color:var(--red)}
.vx-shock-ice{border-color:var(--ice)}
@keyframes vx-shockwave{0%{opacity:.9;transform:scale(.3)}100%{opacity:0;transform:scale(9)}}
.vx-wash{position:absolute;inset:0;pointer-events:none;animation:vx-washfx .95s ease-out both;
  background:radial-gradient(120% 90% at 50% 42%,rgba(255,200,87,.3),rgba(249,115,22,.09) 45%,transparent 72%)}
.vx-wash-green{background:radial-gradient(120% 90% at 50% 42%,rgba(34,197,94,.26),transparent 68%)}
.vx-wash-red{background:radial-gradient(120% 90% at 50% 42%,rgba(239,68,68,.26),transparent 68%)}
.vx-wash-ice{background:radial-gradient(120% 90% at 50% 42%,rgba(92,169,232,.26),transparent 68%)}
@keyframes vx-washfx{0%{opacity:0}18%{opacity:1}100%{opacity:0}}

@media (prefers-reduced-motion:reduce){
  .vx-fx{display:none!important}
  .vx-forged,.vx-pop,.vx-modal.vx-min,.vx-mart img,.vx-marglow{animation:none!important}
}

/* ############################################################################
   THE VEIN — v4 · PREMIUM + GRIND PASS · 2 Aug 2026
   The analysis behind it: the page was correct but SILENT. Grind-mining games
   (SLVR-style) hold attention with three things this page did not have —
   somewhere to see other people playing, somewhere to see YOURSELF getting
   further, and information density on the board itself. So:
     · a live seam feed, so the cave is never dead while you decide
     · a rank ladder driven by hunts actually entered
     · chamber HEAT on the map — you can finally see where the crowd is
     · a live pot readout on every tunnel arch
   Plus a card system so all thirty-odd surfaces read as one product, and a
   scene-change entrance on every tab switch.
   ########################################################################## */

/* ============================================== THE CARD SYSTEM ============ */
/* one hairline of light along the top edge, one warm corner, one lift. Applied
   to every glass surface so nothing is left looking like a plain box. */
.vx-glass::before{content:"";position:absolute;left:14%;right:14%;top:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,214,140,.34),transparent);opacity:.75;
  transition:opacity var(--dur-3),left var(--dur-3),right var(--dur-3)}
.vx-glass:hover::before{opacity:1;left:4%;right:4%}
.vx-mr,.vx-cell,.vx-item,.vx-feed,.vx-prog,.vx-ref,.vx-deck,.vx-vault,.vx-gsec,.vx-step,.vx-sink{
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-cell:hover,.vx-sink:hover,.vx-step:hover{transform:translateY(-3px);border-color:var(--edge);
  box-shadow:0 18px 40px rgba(0,0,0,.42),0 0 22px rgba(249,115,22,.1)}
/* a figure that just changed gets a beat of gold — countUp already tags it */
.vx-tick{animation:vx-tickfx .55s var(--ease-out) both}
@keyframes vx-tickfx{0%{color:var(--gold);text-shadow:0 0 18px rgba(255,200,87,.7)}100%{text-shadow:none}}

/* ---- scene change on every tab switch ------------------------------------ */
.vx-view.vx-enter>*{animation:vx-scene .5s var(--ease-spring) both}
.vx-view.vx-enter>*:nth-child(1){animation-delay:.02s}
.vx-view.vx-enter>*:nth-child(2){animation-delay:.07s}
.vx-view.vx-enter>*:nth-child(3){animation-delay:.12s}
.vx-view.vx-enter>*:nth-child(4){animation-delay:.17s}
.vx-view.vx-enter>*:nth-child(5){animation-delay:.22s}
.vx-view.vx-enter>*:nth-child(n+6){animation-delay:.26s}
@keyframes vx-scene{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* ============================================== CHAMBER HEAT ============== */
/* --heat is 0..1, written by paintHeat() — the crowd is now legible */
.vx-node{
  border-color:color-mix(in srgb,var(--edge) calc(100% - var(--heat,0)*70%),var(--gold) calc(var(--heat,0)*70%));
  box-shadow:var(--elev-1),var(--inner-hi),0 0 calc(var(--heat,0)*26px) rgba(249,115,22,calc(var(--heat,0)*.5))}
.vx-node::after{content:"";position:absolute;left:6px;right:6px;bottom:-7px;height:2px;border-radius:2px;
  transform:scaleX(var(--heat,0));transform-origin:center;pointer-events:none;
  background:linear-gradient(90deg,var(--amber),var(--gold));
  box-shadow:0 0 8px rgba(255,200,87,.6);transition:transform var(--dur-3) var(--ease)}
.vx-node.hot::before{content:"HOT";position:absolute;left:50%;top:-16px;transform:translateX(-50%);
  font-family:var(--mono);font-size:7.5px;font-weight:700;letter-spacing:.16em;color:#15110D;
  padding:2px 6px;border-radius:4px;background:linear-gradient(120deg,var(--gold),var(--ember));
  box-shadow:0 0 14px rgba(249,115,22,.6);animation:vx-goldbreath 2.2s ease-in-out infinite}
.vx-node.sel::after,.vx-node.won::after{background:linear-gradient(90deg,#15110D,#15110D);opacity:.35}

/* ============================================== LIVE SEAM FEED ============ */
.vx-grindrow{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px;margin-top:14px}
.vx-feed,.vx-prog{padding:0;overflow:hidden}
.vx-feed>header,.vx-prog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  padding:16px 20px 12px}
.vx-feed h3,.vx-prog h3{margin:5px 0 0;font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.vx-feedrows{display:flex;flex-direction:column;padding:0 8px 10px;max-height:268px;overflow:hidden;
  -webkit-mask-image:linear-gradient(180deg,#000 78%,transparent);mask-image:linear-gradient(180deg,#000 78%,transparent)}
.vx-frow{display:flex;align-items:center;gap:11px;padding:8px 12px;border-radius:var(--rad-sm);
  font-size:12.5px;color:var(--muted);animation:vx-feedin .42s var(--ease-spring) both}
@keyframes vx-feedin{from{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}
.vx-frow:nth-child(odd){background:rgba(255,255,255,.018)}
.vx-frow i{width:7px;height:7px;border-radius:2px;transform:rotate(45deg);flex:none;
  background:var(--gold);box-shadow:0 0 8px currentColor;color:var(--gold)}
.vx-frow span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vx-frow em{font-style:normal;font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}
.vx-frow b{flex:none;font-family:var(--display);font-weight:700;font-size:12.5px;color:var(--ink)}
.vx-frow-ore   i{background:var(--jade);color:var(--jade)}
.vx-frow-ore   b{color:var(--green-lt)}
.vx-frow-lucky i{background:var(--violet);color:var(--violet)}
.vx-frow-burn  i{background:var(--red);color:var(--red)}
.vx-frow-burn  b{color:var(--red-lt)}
.vx-frow-lock  i{background:var(--ice);color:var(--ice)}
.vx-frow-deploy b{color:var(--ice-lt)}

/* ============================================== THE RANK LADDER =========== */
.vx-prog{position:relative}
.vx-progglow{position:absolute;right:-70px;top:-70px;width:240px;height:240px;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,200,87,.14),transparent 70%);
  animation:vx-goldbreath 4.5s ease-in-out infinite}
.vx-rankbadge{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:12px;
  font-family:var(--display);font-weight:800;font-size:14px;color:var(--gold);
  border:1px solid rgba(255,200,87,.34);background:rgba(255,200,87,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}
.vx-prog[data-rank="3"] .vx-rankbadge,.vx-prog[data-rank="4"] .vx-rankbadge{border-color:rgba(255,200,87,.6);
  box-shadow:0 0 20px rgba(243,166,15,.3),inset 0 1px 0 rgba(255,255,255,.15)}
.vx-prog[data-rank="5"] .vx-rankbadge{color:#15110D;border-color:var(--gold);
  background:linear-gradient(120deg,var(--gold),var(--ember));box-shadow:0 0 26px rgba(249,115,22,.55)}
.vx-rankbar{position:relative;height:7px;margin:2px 20px 0;border-radius:99px;overflow:hidden;
  background:rgba(255,255,255,.07);box-shadow:inset 0 1px 3px rgba(0,0,0,.5)}
.vx-rankbar i{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--amber),var(--gold),var(--ember));
  box-shadow:0 0 14px rgba(243,166,15,.55);transition:width .8s var(--ease-spring)}
.vx-rankspark{position:absolute;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;
  pointer-events:none;background:radial-gradient(circle,#fff,rgba(255,200,87,.7) 45%,transparent 70%);
  transition:left .8s var(--ease-spring);animation:vx-goldbreath 1.8s ease-in-out infinite}
.vx-ranknext{display:block;padding:9px 20px 0;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.06em;color:var(--faint)}
.vx-progstats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:14px;
  background:var(--gline-2);border-top:1px solid var(--gline-2)}
.vx-progstats span{display:flex;flex-direction:column;gap:3px;padding:13px 16px;background:var(--cw-card-bg)}
.vx-progstats small{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.vx-progstats b{font-family:var(--display);font-weight:700;font-size:17px;color:var(--ink)}
.vx-progstats b.hot{color:var(--gold);text-shadow:0 0 14px rgba(255,200,87,.45)}
@media (max-width:1000px){.vx-grindrow{grid-template-columns:1fr}}

/* ============================================== TUNNEL POT CHIPS ========== */
.vx-tpot{position:absolute;z-index:4;transform:translate(-50%,-50%);display:flex;flex-direction:column;
  align-items:center;gap:1px;padding:7px 14px;border-radius:var(--rad-pill);pointer-events:none;
  border:1px solid var(--gline-2);background:linear-gradient(160deg,rgba(22,16,11,.9),rgba(9,8,6,.92));
  backdrop-filter:blur(6px);box-shadow:0 10px 24px rgba(0,0,0,.5);
  transition:transform var(--dur-2) var(--ease-spring),border-color var(--dur-2),box-shadow var(--dur-2),opacity var(--dur-2)}
.vx-tpot small{font-family:var(--mono);font-size:7.5px;letter-spacing:.2em;color:var(--dim);line-height:1}
.vx-tpot b{font-family:var(--display);font-weight:800;font-size:14px;line-height:1.1;color:var(--ink)}
.vx-tpot em{font-style:normal;font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;color:var(--green-lt)}
.vx-tpot.empty{opacity:.42}
.vx-tpot.lead{border-color:rgba(255,200,87,.45);box-shadow:0 10px 26px rgba(0,0,0,.5),0 0 22px rgba(243,166,15,.28)}
.vx-tpot.lead b{color:var(--gold)}
.vx-tunnel.hov .vx-tpot,.vx-tunnel.picked .vx-tpot{opacity:1;transform:translate(-50%,-58%) scale(1.06);
  border-color:var(--edge-hot)}
@media (max-width:900px){.vx-tpot{display:none}}

/* ============================================== CLOSING URGENCY =========== */
.vx-lhud.urgent{border-color:rgba(243,166,15,.5);box-shadow:0 -10px 50px rgba(0,0,0,.5),0 0 0 1px rgba(243,166,15,.2),var(--inner-hi)}
.vx-lhud.urgent::before{background:linear-gradient(90deg,transparent,var(--amber),transparent);
  animation:vx-goldbreath 1.1s ease-in-out infinite}
.vx-lhud.closing{border-color:rgba(239,68,68,.42);filter:saturate(.85)}
.vx-lhud.closing::before{background:linear-gradient(90deg,transparent,var(--red),transparent)}
.vx-lhud.closing .vx-numrail{opacity:.5;pointer-events:none}

/* ============================================== TOASTS ==================== */
#vx-toast{display:flex;align-items:center;gap:11px;text-align:left}
.vx-tmark{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:7px;
  font-family:var(--mono);font-size:11px;font-style:normal;
  color:var(--gold);border:1px solid rgba(255,200,87,.34);background:rgba(255,200,87,.1)}
#vx-toast[data-tone="green"] .vx-tmark{color:var(--green-lt);border-color:rgba(34,197,94,.4);background:rgba(34,197,94,.1)}
#vx-toast[data-tone="red"]   .vx-tmark{color:var(--red-lt);border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.1)}
#vx-toast[data-tone="ice"]   .vx-tmark{color:var(--ice-lt);border-color:rgba(92,169,232,.4);background:rgba(92,169,232,.1)}
#vx-toast[data-tone="green"]{border-color:rgba(34,197,94,.3)}
#vx-toast[data-tone="red"]{border-color:rgba(239,68,68,.3)}

/* ============================================== ITEM RARITY =============== */
/* level reads at a glance the way it does in any mining game: L1 copper,
   L2 silver-blue, L3 gold with a permanent shimmer */
.vx-lvlbar i.on{box-shadow:0 0 10px rgba(255,200,87,.6)}
.vx-item:has(.vx-lvlbar i:nth-child(3).on){border-color:rgba(255,200,87,.45)}
.vx-item:has(.vx-lvlbar i:nth-child(3).on)::before{animation:vx-l3shine 3.4s ease-in-out infinite}
@keyframes vx-l3shine{0%{left:-70%}55%,100%{left:140%}}
.vx-item:has(.vx-lvlbar i:nth-child(2).on:not(:nth-child(3))){border-color:rgba(92,169,232,.32)}

/* ============================================== EMPTY STATES ============== */
.vx-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:34px 20px;text-align:center;
  font-size:12.5px;line-height:1.6;color:var(--faint);border:1px dashed var(--gline-2);
  border-radius:var(--rad-md);background:rgba(0,0,0,.18)}
.vx-empty::before{content:"";width:34px;height:34px;border-radius:11px;
  background:radial-gradient(circle at 40% 32%,rgba(249,115,22,.28),rgba(0,0,0,.3));
  border:1px solid var(--gline-2);animation:vx-goldbreath 3.2s ease-in-out infinite}

/* ============================================== GUIDE REVEAL ============== */
.vx-guide.vx-enter .vx-gsec,.vx-guide.vx-enter .vx-step,.vx-guide.vx-enter .vx-sink,
.vx-guide.vx-enter .vx-faq details{animation:vx-scene .55s var(--ease-spring) both}
.vx-guide.vx-enter .vx-gsec:nth-of-type(2){animation-delay:.06s}
.vx-guide.vx-enter .vx-gsec:nth-of-type(3){animation-delay:.1s}
.vx-guide.vx-enter .vx-gsec:nth-of-type(4){animation-delay:.14s}

@media (prefers-reduced-motion:reduce){
  .vx-view.vx-enter>*,.vx-frow,.vx-progglow,.vx-rankspark,.vx-node.hot::before,
  .vx-item::before,.vx-empty::before,.vx-lhud.urgent::before,.vx-tick{animation:none!important}
  .vx-rankbar i,.vx-rankspark{transition:none!important}
}

/* ############################################################################
   THE VEIN — v5 · ON-BOARD HUD + THE FLIP FIX · 2 Aug 2026
   ########################################################################## */

/* ══ 🐛 THE ETH FLIP WAS PAINTING A BLACK BAR ═══════════════════════════════
   v2 hid the native figure with `color:transparent` and printed the dollar
   value from ::after. Two things broke it:
     · the Motherlode figure and every gradient heading use
       `background-clip:text` + `-webkit-text-fill-color:transparent`, and
       `color` does not control those — so the number stayed visible and the
       ::after landed ON TOP of it, reading as a solid black bar
     · ::after had no width and inherited no alignment, so on a centred figure
       it started at the left edge and overlapped whatever was underneath
   Fixed by making the flip a real two-layer swap: the CONTENT fades out via
   opacity (which gradient text does obey) and the dollar value fades in over
   the full box, centred the same way the original was. */
[data-usd][data-usd-val]{position:relative;display:inline-block;isolation:isolate;
  transition:color var(--dur-2) var(--ease),-webkit-text-fill-color var(--dur-2) var(--ease)}
[data-usd][data-usd-val]::after{
  content:attr(data-usd-val);
  position:absolute;inset:0;display:flex;align-items:center;justify-content:inherit;
  white-space:nowrap;background:none;
  color:var(--green);-webkit-text-fill-color:var(--green);
  text-shadow:0 0 18px rgba(34,197,94,.32);
  opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease)}
/* THREE properties, because three different things can be painting the glyphs:
   `color` for plain text, `-webkit-text-fill-color` for anything using it, and
   `background-image:none` for gradient text, where the colour comes from the
   BACKGROUND showing through `background-clip:text` and neither of the first
   two can touch it. Missing the third is what produced the black bar. */
[data-usd][data-usd-val]:hover{
  color:transparent!important;-webkit-text-fill-color:transparent!important;
  background-image:none!important;text-shadow:none!important}
[data-usd][data-usd-val]:hover::after{opacity:1}
[data-usd][data-usd-val]:hover .vx-ethmark{opacity:0}
.vx-lode-amt[data-usd-val]::after,.vx-hudbig[data-usd-val]::after{font-size:inherit}

/* ══ THE HUNT BOARD ════════════════════════════════════════════════════════ */
.vx-stage{max-height:calc(100vh - 120px);min-height:520px}
.vx-hud{position:absolute;z-index:5;display:flex;border-radius:var(--rad-lg);
  border:1px solid rgba(255,255,255,.09);
  background:linear-gradient(158deg,rgba(18,13,9,.82),rgba(8,7,6,.9));
  backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);
  box-shadow:0 18px 46px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06);
  animation:vx-hudin .5s var(--ease-spring) both}
@keyframes vx-hudin{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.vx-hud::before{content:"";position:absolute;left:14%;right:14%;top:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,214,140,.55),transparent)}
.vx-hidden{display:none!important}

.vx-hud-pool{left:16px;top:16px;flex-direction:column;gap:3px;padding:14px 18px 13px;min-width:212px}
.vx-hudlbl{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.vx-hudbig{font-family:var(--display);font-weight:800;font-size:26px;line-height:1.1;color:var(--gold);
  text-shadow:0 0 26px rgba(243,166,15,.3)}
.vx-hudsub{font-size:11px;color:var(--faint)}
.vx-hudnote{font-size:10.5px;color:var(--faint);margin-top:2px}
.vx-hudchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.vx-hchip{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--rad-pill);
  border:1px solid var(--gline-2);background:rgba(0,0,0,.3);
  font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.vx-hchip b{font-family:var(--display);font-weight:700;font-size:11.5px;letter-spacing:0;
  text-transform:none;color:var(--ink)}
.vx-hchip .vx-dot{width:5px;height:5px}
#vx-goldencard.lit{border-color:rgba(255,200,87,.55);background:rgba(255,200,87,.1)}
#vx-goldencard.lit b{color:var(--gold)}

.vx-hud-clock{right:16px;top:16px;align-items:center;gap:13px;padding:12px 18px 12px 13px}
.vx-hud-clock .vx-dial{width:66px;height:66px;flex:none}
.vx-clocktxt{display:flex;flex-direction:column;gap:1px}
.vx-clocktxt small{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.vx-clocktxt b{font-family:var(--display);font-weight:800;font-size:17px;color:var(--ink)}
.vx-clocktxt span{font-size:10.5px;color:var(--faint)}

.vx-hud-kit{right:16px;bottom:16px;align-items:center;gap:13px;padding:11px 14px 11px 11px}
.vx-kitart{width:52px;height:52px;flex:none;object-fit:contain;
  filter:drop-shadow(0 8px 16px rgba(0,0,0,.6));transition:transform var(--dur-2) var(--ease-spring)}
.vx-hud-kit:hover .vx-kitart{transform:translateY(-3px) scale(1.06)}
.vx-kittxt{display:flex;flex-direction:column;gap:2px;min-width:104px}
.vx-kittxt small{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.vx-kittxt b{font-family:var(--display);font-weight:700;font-size:14px;color:var(--ink)}
.vx-kitpips{display:flex;gap:4px;margin-top:3px}
.vx-kitpips i{width:16px;height:3px;border-radius:2px;background:rgba(255,255,255,.14);transition:background var(--dur-2)}
.vx-kitpips i.on{background:linear-gradient(90deg,var(--gold),var(--ember));box-shadow:0 0 8px rgba(243,166,15,.6)}
.vx-hud-kit[data-lv="3"]{border-color:rgba(255,200,87,.45)}
.vx-hud-kit[data-lv="0"] .vx-kitart{opacity:.55;filter:grayscale(.4)}

/* ══ CHAMBER PLATES — bigger, and the duplicate house art is gone ══════════
   `.vx-nart` painted a SECOND chamber house under every number. The houses are
   already in the plate art, so that copy had nothing to sit on and floated over
   whatever terrain was beneath — the "flying on top of the cliff" in the report.
   Removed. The plate itself is now the marker, at reference size. */
.vx-nart{display:none!important}
.vx-node{width:54px;height:48px;margin:-24px 0 0 -27px;border-radius:11px;font-size:15px;
  border:1px solid rgba(255,200,87,.34);
  background:linear-gradient(165deg,rgba(24,19,13,.95),rgba(9,8,6,.96))}
.vx-node .vx-nno{font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:.04em}
.vx-node::after{bottom:-6px;height:3px}
@media (max-width:1100px){.vx-node{width:44px;height:40px;margin:-20px 0 0 -22px}
  .vx-node .vx-nno{font-size:12.5px}}

/* ══ THE LUCKY PLATE — round on the art, stats under it ═══════════════════ */
.vx-lhead{position:absolute;z-index:6;left:50%;top:14px;transform:translateX(-50%)}
.vx-lclock{display:flex;align-items:center;gap:13px;padding:11px 20px 11px 12px;border-radius:var(--rad-pill);
  border:1px solid rgba(255,200,87,.24);
  background:linear-gradient(158deg,rgba(20,14,9,.86),rgba(8,7,6,.92));
  backdrop-filter:blur(14px) saturate(1.2);box-shadow:0 16px 40px rgba(0,0,0,.55)}
.vx-lclock .vx-dial{width:62px;height:62px;flex:none}
.vx-lclocktxt{display:flex;flex-direction:column;gap:1px}
.vx-lclocktxt small{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.vx-lclocktxt b{font-family:var(--display);font-weight:800;font-size:17px;color:var(--ink)}
.vx-lclocktxt span{font-size:10.5px;color:var(--faint)}

.vx-lstats{position:absolute;z-index:6;left:14px;right:14px;top:96px;display:flex;justify-content:space-between;
  gap:10px;pointer-events:none}
.vx-lstat{display:flex;align-items:center;gap:10px;padding:9px 15px;border-radius:var(--rad-md);
  pointer-events:auto;border:1px solid var(--gline-2);
  background:linear-gradient(158deg,rgba(18,13,9,.78),rgba(8,7,6,.86));
  backdrop-filter:blur(12px);box-shadow:0 12px 30px rgba(0,0,0,.5);
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2)}
.vx-lstat:hover{transform:translateY(-2px);border-color:var(--edge)}
.vx-lstat img{width:32px;height:32px;object-fit:contain;flex:none;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.6))}
.vx-lstat em{display:flex;flex-direction:column;gap:1px;font-style:normal}
.vx-lstat small{font-family:var(--mono);font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.vx-lstat b{font-family:var(--display);font-weight:800;font-size:16px;color:var(--ink)}
.vx-lstat-jack{border-color:rgba(255,200,87,.34);background:linear-gradient(158deg,#1F1710cc,#0B0A08e0)}
.vx-lstat-burn b{color:var(--red-lt)}
.vx-lstat-bal{gap:12px}
.vx-lstat-bal .vx-btn{flex:none}
@media (max-width:1100px){
  .vx-lstats{position:static;flex-wrap:wrap;margin:12px 0 0}
  .vx-lhead{position:static;transform:none;display:flex;justify-content:center;margin-bottom:10px}
}
@media (max-width:900px){
  .vx-hud-pool,.vx-hud-clock,.vx-hud-kit{position:static;margin:8px}
  .vx-stage{max-height:none}
}

/* ══ SACRIFICE CARD — it was reading as an unfinished form ════════════════
   The amount field's placeholder rendered at display size, the warning ran the
   full width while the input beside it did not, and the disabled button looked
   like a third input rather than the most dangerous control on the page. */
.vx-sac .vx-vamount input::placeholder,.vx-vault .vx-vamount input::placeholder{
  font-family:var(--sans);font-weight:500;font-size:14px;letter-spacing:0;color:var(--dim)}
.vx-sac .vx-vamount,.vx-sac .vx-typed{width:100%}
.vx-sac .vx-typed{margin-top:2px;padding:13px 15px;border-radius:var(--rad-sm);
  border:1px solid rgba(239,68,68,.32);background:rgba(0,0,0,.34);color:var(--ink);
  font-family:var(--mono);font-size:13px;letter-spacing:.16em;text-transform:uppercase;outline:0;
  transition:border-color var(--dur-2),box-shadow var(--dur-2)}
.vx-sac .vx-typed:focus{border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.14)}
.vx-sac .vx-typed::placeholder{letter-spacing:.12em;color:var(--faint)}
.vx-sacwarn{padding:13px 15px;border-radius:var(--rad-sm);border:1px solid rgba(239,68,68,.3);
  background:rgba(239,68,68,.07);font-size:12.5px;line-height:1.6;color:var(--red-lt)}
.vx-sacwarn b{color:var(--red);font-family:var(--mono);font-size:12px;letter-spacing:.1em}
.vx-sac .vx-btn-danger:disabled{opacity:.34}
.vx-sac .vx-vpreview b{color:var(--red-lt)}

/* ══ PREVIEW BADGE ════════════════════════════════════════════════════════ */
.vx-prevtag{display:inline-flex;align-items:center;gap:6px;margin-left:10px;padding:4px 10px;
  border-radius:var(--rad-pill);border:1px solid rgba(243,166,15,.4);background:rgba(243,166,15,.1);
  font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber);
  vertical-align:middle}
.vx-prevtag i{width:5px;height:5px;border-radius:50%;background:var(--amber);
  box-shadow:0 0 8px var(--amber);animation:vx-live 2.2s ease-in-out infinite}
.vx-netbar{border-color:rgba(243,166,15,.34);background:linear-gradient(158deg,rgba(31,23,12,.9),rgba(11,10,8,.94))}
.vx-netbar b{color:var(--amber)!important}

@media (prefers-reduced-motion:reduce){
  .vx-hud,.vx-prevtag i{animation:none!important}
}

/* ============================================================================
   LIVE MODE  ·  v20260803-live1
   Added with the chain adapter. Only two new things need styling: the testnet
   supplies block inside the wallet pod, and a "live" tint on the pod dot so the
   difference between a simulated board and a real one is visible at a glance.
   ========================================================================== */

.vx-faucet{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  margin-top:12px;padding-top:12px;border-top:1px solid var(--gline-2,rgba(255,255,255,.07));
}
.vx-faucet[hidden]{display:none!important}
.vx-fauhead{
  width:100%;font:700 10px/1 var(--mono,ui-monospace,monospace);
  letter-spacing:.16em;text-transform:uppercase;color:var(--gold,#FFC857);
}
.vx-faunote{
  width:100%;font-size:11.5px;line-height:1.5;color:var(--dim,#A79A88);
}

/* A live board should not look identical to a simulated one. The dot gets a
   slow breath only when the chain is actually driving the page. */
html[data-vein-live="1"] .vx-poddot{
  box-shadow:0 0 0 0 rgba(34,197,94,.55);
  animation:vx-livepulse 2.6s var(--ease,cubic-bezier(.4,0,.2,1)) infinite;
}
@keyframes vx-livepulse{
  0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}
  70%{box-shadow:0 0 0 7px rgba(34,197,94,0)}
  100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}
}
@media (prefers-reduced-motion: reduce){
  html[data-vein-live="1"] .vx-poddot{animation:none}
}

/* The round can genuinely stall on chain — past closesAt with nobody to poke it.
   That is a real state, not a rendering glitch, and the page says so instead of
   showing a frozen clock and hoping nobody notices. */
.vx-stalled .vx-dial-label,
.vx-stalled .vx-tickphase{color:var(--amber,#F3A60F)}

/* MAX — fills the field from the connected wallet's liquid OIX. Sits inside the
   amount box next to the unit label, so it reads as part of the field rather
   than as another action competing with the primary button. */
.vx-max{
  font:700 10px/1 var(--mono,ui-monospace,monospace);letter-spacing:.14em;
  color:var(--gold,#FFC857);background:rgba(255,200,87,.10);
  border:1px solid rgba(255,200,87,.28);border-radius:var(--rad-pill,99px);
  padding:6px 10px;margin-right:8px;cursor:pointer;flex:0 0 auto;
  transition:background var(--dur-1,160ms) var(--ease,ease),color var(--dur-1,160ms) var(--ease,ease);
}
.vx-max:hover{background:rgba(255,200,87,.20);color:#FFE1A8}
.vx-max:active{transform:translateY(1px)}

/* The hard off-network gate touches far more controls than the old nine, so the
   locked state has to read as deliberate rather than broken. */
.vx-locked{opacity:.42!important;cursor:not-allowed!important;filter:saturate(.35)}
.vx-locked:hover{transform:none!important;box-shadow:none!important}
html[data-vein-preview="1"] .vx-node,
html[data-vein-preview="1"] .vx-tzone{cursor:not-allowed}

/* A quiet aside inside a modal — used where one of two routes is cheaper and the
   player deserves to be told rather than left to work it out. */
.vx-mnote{
  margin:10px 0 0;font-size:12.5px;line-height:1.55;
  color:var(--dim,#A79A88);border-left:2px solid rgba(255,200,87,.35);padding-left:10px;
}

/* ############################################################################
   THE VEIN — v6 · LITEPAPER + GAME-BOARD ALIGNMENT · 4 Aug 2026
   Keeps the two games visually separate, gives Mini/Major a permanent place on
   the Hunt board, and makes the guide match the deployed economic model.
   ########################################################################## */

/* Correct five-way Hunt split. */
.vx-bar .w86{width:86%;background:linear-gradient(90deg,var(--amber),var(--gold))}
.vx-bar .w8{width:8%;background:var(--ice)}
.vx-bar .w3{width:3%;background:var(--violet)}
.vx-bar .w1{width:1%;min-width:3px;background:#B9A5FF}
.vx-bar .w2b{width:2%;background:var(--dim)}

/* The value belongs on the actual centre platform and should feel alive without
   looking like it is detached from the art. */
.vx-ethplate{will-change:transform;animation:vx-platefloat 4.8s ease-in-out infinite}
@keyframes vx-platefloat{
  0%,100%{transform:translate(-50%,-50%)}
  50%{transform:translate(-50%,calc(-50% - 9px))}
}

/* Motherlode is a game system, not a footer statistic. Keep both draws visible
   on the Hunt plate at all times. */
.vx-hud-motherlode{left:16px;bottom:16px;align-items:center;gap:12px;padding:11px 14px;min-width:355px;
  border-color:rgba(255,200,87,.24);background:linear-gradient(158deg,rgba(26,18,10,.88),rgba(8,7,6,.92))}
.vx-hud-motherlode>img{width:42px;height:42px;object-fit:contain;flex:none;
  filter:drop-shadow(0 8px 14px rgba(0,0,0,.6)) drop-shadow(0 0 14px rgba(255,184,44,.22))}
.vx-mlcopy{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.vx-mlcopy>small{font-family:var(--mono);font-size:8.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.vx-mlcopy>small b{color:var(--gold);font-size:10.5px;letter-spacing:0;text-transform:none}
.vx-mldraws{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vx-mldraws>span{display:flex;align-items:center;gap:7px;min-width:0;padding:6px 8px;border-radius:9px;
  border:1px solid rgba(255,255,255,.06);background:rgba(0,0,0,.24)}
.vx-mldraws i{width:7px;height:24px;border-radius:99px;flex:none;background:linear-gradient(180deg,var(--gold),var(--ember));
  box-shadow:0 0 10px rgba(255,183,52,.28)}
.vx-mldraws i.major{background:linear-gradient(180deg,#FFD97C,var(--gold));box-shadow:0 0 12px rgba(255,210,100,.34)}
.vx-mldraws em{display:flex;flex-direction:column;gap:1px;min-width:0;font-style:normal}
.vx-mldraws b{font-family:var(--display);font-size:12px;color:var(--ink);white-space:nowrap}
.vx-mldraws small{font-family:var(--mono);font-size:7px;letter-spacing:.03em;color:var(--faint);white-space:nowrap}

/* Lucky Vein board hierarchy: timer owns the middle, jackpot/burn live on the
   left and player/pot live on the right. The previous single horizontal rail
   made all five elements fight for the same level. */
.vx-lstats{top:92px;display:grid;grid-template-columns:minmax(175px,235px) minmax(230px,1fr) minmax(215px,285px);
  grid-template-areas:"jack . bal" "burn . pot";align-items:start;row-gap:9px;column-gap:14px}
.vx-lstat{width:max-content;max-width:100%;min-width:0}
.vx-lstat-jack{grid-area:jack;justify-self:start}
.vx-lstat-burn{grid-area:burn;justify-self:start}
.vx-lstat-bal{grid-area:bal;justify-self:end}
.vx-lstat-pot{grid-area:pot;justify-self:end}
.vx-lstat-bal em{min-width:78px}
.vx-lstat-bal .vx-btn{margin-left:2px}
.vx-lstat img[src$="orix-logo.webp"]{border-radius:50%;filter:drop-shadow(0 4px 10px rgba(0,0,0,.62)) drop-shadow(0 0 9px rgba(255,190,58,.2))}

/* Guide hero and game pillars. */
.vx-ghero-title{display:flex;align-items:center;gap:16px}
.vx-ghero-title>img{width:58px;height:58px;object-fit:contain;border-radius:50%;
  filter:drop-shadow(0 9px 18px rgba(0,0,0,.5)) drop-shadow(0 0 16px rgba(255,187,51,.2))}
.vx-gamepillars{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 0 16px}
.vx-gamepillar{display:grid;grid-template-columns:66px minmax(0,1fr) auto;align-items:center;gap:17px;padding:20px 22px;
  border-color:rgba(124,180,255,.18);background:linear-gradient(150deg,rgba(21,26,34,.84),rgba(8,9,10,.9))}
.vx-gamepillar>img{width:62px;height:62px;object-fit:contain;filter:drop-shadow(0 9px 18px rgba(0,0,0,.5))}
.vx-gamepillar h3{margin:5px 0 5px;font-family:var(--display);font-weight:800;font-size:20px;color:var(--ink)}
.vx-gamepillar p{font-size:12px;line-height:1.55;color:var(--muted)}
.vx-gamepillar>strong{font-family:var(--mono);font-size:10px;letter-spacing:.09em;color:var(--ice);white-space:nowrap}
.vx-gamepillar-orix{border-color:rgba(255,200,87,.25);background:linear-gradient(150deg,rgba(31,22,12,.9),rgba(9,8,6,.92))}
.vx-gamepillar-orix>img{border-radius:50%;filter:drop-shadow(0 9px 18px rgba(0,0,0,.55)) drop-shadow(0 0 16px rgba(255,190,55,.22))}
.vx-gamepillar-orix>strong{color:var(--gold)}

/* Refine escalation is important enough to scan as a ladder, not hide in prose. */
.vx-taxladder{display:grid;grid-template-columns:minmax(240px,.8fr) 1.2fr;align-items:center;gap:24px;margin-top:20px;
  padding:18px 20px;border-radius:var(--rad-md);border:1px solid rgba(239,68,68,.18);
  background:linear-gradient(150deg,rgba(30,13,11,.46),rgba(5,5,5,.3))}
.vx-taxladder h4{margin:5px 0 6px;font-family:var(--display);font-size:16px;color:var(--ink)}
.vx-taxladder p{font-size:11.5px;line-height:1.6;color:var(--muted)}
.vx-taxladder ol{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:0;padding:0}
.vx-taxladder li{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:11px 6px 9px;border-radius:10px;
  border:1px solid rgba(255,255,255,.07);background:rgba(0,0,0,.3)}
.vx-taxladder li:not(:last-child)::after{content:"";position:absolute;right:-8px;top:50%;width:8px;height:1px;background:rgba(239,68,68,.35)}
.vx-taxladder li b{font-family:var(--display);font-size:17px;color:var(--red-lt)}
.vx-taxladder li small{font-family:var(--mono);font-size:7.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);text-align:center}

.vx-motherguide{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px}
.vx-motherguide>span{display:flex;flex-direction:column;gap:3px;padding:15px 16px;border-radius:var(--rad-md);
  border:1px solid rgba(255,200,87,.18);background:rgba(0,0,0,.24)}
.vx-motherguide b{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.vx-motherguide strong{font-family:var(--display);font-size:20px;color:var(--gold)}
.vx-motherguide small{font-size:10.5px;color:var(--faint)}

@media (max-width:1280px){
  .vx-hud-motherlode{min-width:325px}
  .vx-mldraws small{font-size:6.6px}
  .vx-lstats{grid-template-columns:minmax(160px,220px) minmax(190px,1fr) minmax(200px,270px)}
}
@media (max-width:1100px){
  .vx-hud-motherlode{min-width:300px;max-width:360px}
  .vx-lstats{position:static;display:flex;flex-wrap:wrap;margin:12px 0 0}
  .vx-lstat{width:auto}
  .vx-lstat-jack,.vx-lstat-burn,.vx-lstat-bal,.vx-lstat-pot{justify-self:auto}
  .vx-gamepillars{grid-template-columns:1fr}
}
@media (max-width:900px){
  .vx-hud-motherlode{display:none}
}
@media (max-width:820px){
  .vx-gamepillar{grid-template-columns:52px minmax(0,1fr);padding:17px}
  .vx-gamepillar>img{width:50px;height:50px}
  .vx-gamepillar>strong{grid-column:1/-1}
  .vx-taxladder{grid-template-columns:1fr;gap:14px}
  .vx-taxladder ol{grid-template-columns:repeat(5,minmax(52px,1fr));overflow-x:auto;padding-bottom:4px}
  .vx-motherguide{grid-template-columns:1fr}
}
@media (max-width:540px){
  .vx-ghero-title>img{width:46px;height:46px}
  .vx-gamepillar{grid-template-columns:44px minmax(0,1fr);gap:12px}
  .vx-gamepillar>img{width:42px;height:42px}
}
@media (prefers-reduced-motion:reduce){
  .vx-ethplate{animation:none!important}
}

/* ============================================================================
   PHONE BAND 360-440 · The Vein · v20260809-mobile-1
   The Vein was rebuilt after the site's 31 Jul mobile pass, so it never had
   one. The 1180/980/820/640 ladder above already stacks the big structures
   (topline, deckgrid, lhud, lhead, ticker); this layer finishes the phone
   band: the tab strip, every remaining fixed-column grid, the two game
   stages, node hit targets, modals as bottom sheets, and the type scale.
   People will PLAY on phones — nothing here may cost a tap target its size.
   ========================================================================== */

@media (max-width:640px){
  /* ── the seven-tab rail becomes a swipeable strip, never a wrap ── */
  .vx-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;padding:5px;scroll-snap-type:x proximity}
  .vx-tabs::-webkit-scrollbar{display:none}
  .vx-tabs button{flex:0 0 auto;min-width:max-content;scroll-snap-align:start;padding:10px 14px;font-size:12.5px}

  /* ── every fixed-column grid the 640 block above did not reach ── */
  .vx-tiers{grid-template-columns:repeat(2,1fr)}
  .vx-items{grid-template-columns:1fr}
  .vx-podgrid{grid-template-columns:repeat(3,1fr);gap:6px}
  .vx-steps{grid-template-columns:repeat(2,1fr)}
  .vx-itemguide{grid-template-columns:1fr}
  .vx-sinks{grid-template-columns:repeat(2,1fr)}
  .vx-progstats{grid-template-columns:repeat(3,1fr)}
  .vx-phaserow{grid-template-columns:repeat(2,1fr)}
  .vx-phaserow>*:last-child{grid-column:1/-1}
  .vx-taxladder ol{grid-template-columns:repeat(3,1fr)}

  /* ── the two game stages: keep the art, cap the cost ── */
  .vx-stage{min-height:300px;max-height:58vh}
  .vx-lstage{min-height:420px;height:auto;max-height:70vh}
  /* Chamber buttons stay REAL tap targets — 40px is the floor, not a style. */
  .vx-node{width:40px;height:38px;margin:-19px 0 0 -20px}

  /* ── the pre-launch / phase dial row breathes ── */
  .vx-pagehead p{max-width:none}

  /* ── modals become bottom sheets: reachable with a thumb, honest about
        their height, safe-area aware ── */
  .vx-mmask{align-items:flex-end;padding:0}
  .vx-modal{width:100%;max-height:88vh;border-radius:22px 22px 0 0;
    padding-bottom:max(16px, env(safe-area-inset-bottom))}

  /* ── the trade terminal at phone width ── */
  .vxs-head{gap:12px;padding:12px 14px}
  .vxs-pairmark b{font-size:14px}
  .vxs-netpill{margin-left:0;flex-basis:100%;justify-content:center}

  /* ── consoles: full-bleed inside their card, no double gutters ── */
  .vx-lhud-in{padding:12px}
  .vx-quick{flex-wrap:wrap}
  .vx-quick button{flex:1 1 calc(25% - 6px);min-height:40px}
  .vx-numrail{justify-content:space-between}
  .vx-numrail .vx-num{min-width:44px;min-height:44px}
}

@media (max-width:440px){
  /* ── type scale for the narrowest band (S8 360 → SE/13 mini class) ── */
  .vx-pagehead h2{font-size:22px}
  .vx-lode-amt{font-size:32px}
  .vx-timerhud>b{font-size:18px}
  .vx-podgrid{grid-template-columns:repeat(2,1fr)}
  .vx-progstats{grid-template-columns:repeat(2,1fr)}
  .vx-taxladder ol{grid-template-columns:repeat(2,1fr)}
  .vx-splitbar span{font-size:9.5px;letter-spacing:.02em}
  .vx-facts{grid-template-columns:1fr 1fr;gap:8px 10px}
  .vx-deckrow{margin-top:10px}
  /* Auto panel: the big amount steps down before it clips the quick chips. */
  .vxa2-amt{font-size:40px}
  .vxa2-quick{grid-template-columns:repeat(2,1fr)}
  .vxa2-armed-grid{grid-template-columns:repeat(2,1fr)}
  /* Terminal ticket */
  #vxs-amt{font-size:22px}
  .vxs-quote b{font-size:12px}
  /* Info layer */
  .vxi-row{grid-template-columns:auto 1fr;gap:6px 10px}
  .vxi-facts{grid-column:1/-1;text-align:left}
  .vxi-know{grid-template-columns:1fr}
}

/* Landscape phones: short viewport must not bury the console under the art. */
@media (max-height:480px) and (orientation:landscape){
  .vx-stage{min-height:240px;max-height:78vh}
  .vx-lstage{min-height:300px;max-height:none}
  .vx-mmask{align-items:center;padding:12px}
  .vx-modal{border-radius:var(--rad-xl);max-height:94vh}
}


/* ========================================================================== 
   VEIN STEP 2 — LUCKY VEIN PLAY CARD
   Manual and Auto are two modes of ONE control surface. The shell owns the
   glass/card treatment; #vx-lhud and #vx-auto-lucky keep every original id and
   event hook but no longer render as two unrelated floating cards.
   ========================================================================== */
.vx-lconsole-shell{
  position:absolute;z-index:10;left:22px;right:22px;bottom:22px;pointer-events:auto;
  border-radius:var(--rad-lg);overflow:hidden;
  border:1px solid rgba(255,200,87,.24);
  background:linear-gradient(180deg,rgba(18,13,9,.72),rgba(10,9,7,.94) 46%,rgba(8,7,6,.97));
  backdrop-filter:blur(16px) saturate(1.25);-webkit-backdrop-filter:blur(16px) saturate(1.25);
  box-shadow:0 -10px 50px rgba(0,0,0,.5),var(--inner-hi);
  animation:vx-hudrise .5s var(--ease-spring) both;
}
.vx-lconsole-shell::before{content:"";position:absolute;z-index:3;left:8%;right:8%;top:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,200,87,.8),transparent)}
.vx-lconsole-shell .vx-lhud{
  position:static;left:auto;right:auto;bottom:auto;z-index:auto;margin:0;
  border:0;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;
  box-shadow:none;animation:none;overflow:visible;
}
.vx-lconsole-shell .vx-lhud::before{display:none}
.vx-lconsole-shell .vx-lhud.urgent,.vx-lconsole-shell .vx-lhud.closing{box-shadow:none}

/* Lucky history should read as a nested card, not an edge-to-edge strip. */
.vx-view[data-view="lucky"] .vx-hist>#vxi-lucky-meter,
.vx-view[data-view="lucky"] .vx-hist>#vxi-hist-lucky{margin-left:20px;margin-right:20px}
.vx-view[data-view="lucky"] .vx-hist>#vxi-lucky-meter{margin-top:12px}
.vx-view[data-view="lucky"] .vx-hist>#vxi-hist-lucky{margin-top:8px;margin-bottom:16px}

@media (max-width:820px){
  /* On tablet/phone the art keeps its original geometry. The shared play card
     becomes the next block BELOW it instead of changing the stage dimensions. */
  .vx-lconsole-shell{position:relative;left:auto;right:auto;bottom:auto;margin:12px 0 0;animation:none}
  .vx-lconsole-shell .vx-lhud{margin:0}
}
@media (max-width:640px){
  .vx-view[data-view="lucky"] .vx-hist>#vxi-lucky-meter,
  .vx-view[data-view="lucky"] .vx-hist>#vxi-hist-lucky{margin-left:12px;margin-right:12px}
  .vx-view[data-view="lucky"] .vx-hist>#vxi-hist-lucky{margin-bottom:12px}
}

/* ============================================================================
   STEP 8 · ONE NETWORK CONTROL + BALANCE POD
   CaveWatch owns network selection. The Vein pod is only a compact balance
   summary and account drawer. On another market the same pod becomes a single
   "Switch to Robinhood Chain" action instead of rendering a second selector.
   ========================================================================== */
.vx-podbtn{
  min-height:52px;
  gap:10px;
  padding:7px 11px;
}
.vx-podbals{
  display:flex!important;
  align-items:stretch;
  gap:0;
  margin:0;
  padding:0;
  border-left:0;
}
.vx-podbal{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:34px;
  padding:0 13px;
  font-size:13px;
}
.vx-podbal:first-child{padding-left:6px}
.vx-podbal+.vx-podbal{border-left:1px solid var(--gline-2)}
.vx-podbal small{
  order:0;
  font-family:var(--mono);
  font-size:9px;
  font-weight:600;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--dim);
}
.vx-podbal .vx-ethmark{width:12px;height:12px;color:var(--ice)}
.vx-podbal b{font-family:var(--display);font-size:14px;font-weight:800;color:var(--ink)}
.vx-podbal-w b{color:var(--gold)}
.vx-podbal-w small{font-size:9px;letter-spacing:.13em;color:var(--dim)}

.vx-pod-marketcta{
  display:inline-flex;
  align-items:center;
  gap:9px;
  padding:0 7px 0 4px;
  white-space:nowrap;
}
.vx-pod-marketcta .vx-poddot{
  width:9px;height:9px;flex:none;border-radius:50%;
  background:var(--amber);box-shadow:0 0 12px rgba(243,166,15,.6);
}
.vx-pod-marketcta b{
  font-family:var(--display);
  font-size:12px;
  font-weight:700;
  color:var(--gold);
}
.vx-pod[data-switch="1"] .vx-podbtn{
  border-color:rgba(255,200,87,.42);
  background:linear-gradient(160deg,rgba(42,30,14,.92),rgba(14,11,8,.96));
}
.vx-pod[data-switch="1"] .vx-podcar{transform:rotate(-90deg);color:var(--gold)}
.vx-pod[data-switch="1"].open .vx-podcar{transform:rotate(-90deg)}

.vx-podsheet{width:min(420px,86vw);gap:12px;padding:15px}
.vx-podsheet>header{min-height:24px}
.vx-podsheet>header .vx-eyebrow{font-size:9.5px}
.vx-podgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.vx-podgrid .vx-w{
  min-width:0;
  min-height:68px;
  justify-content:center;
  padding:11px 12px;
}
.vx-podgrid .vx-w-primary{
  border-color:rgba(255,200,87,.22);
  background:linear-gradient(155deg,rgba(255,200,87,.065),rgba(0,0,0,.24));
}
.vx-podgrid .vx-w-primary b{font-size:18px}
.vx-podgrid .vx-w-claim{grid-column:1/-1;min-height:62px}
.vx-podgrid .vx-w-claim b{font-size:18px}
.vx-podfoot{gap:8px}
.vx-podfoot .vx-btn{min-height:40px}
.vx-podnote{margin-top:-2px;font-size:10.5px;line-height:1.45}

@media(max-width:980px){
  .vx-podbtn{width:100%;justify-content:space-between}
  .vx-podbals{flex:1!important}
  .vx-podbal{flex:1;justify-content:center}
  .vx-pod-marketcta{flex:1;justify-content:center}
}
@media(max-width:820px){
  .vx-podbals{display:flex!important}
  .vx-podsheet{right:auto;left:0;width:100%}
  .vx-podgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:440px){
  .vx-podbtn{min-height:48px;padding:6px 8px}
  .vx-podbal{padding:0 9px;gap:5px}
  .vx-podbal small{font-size:8px}
  .vx-podbal b{font-size:12.5px}
  .vx-pod-marketcta b{font-size:11px}
  .vx-podgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vx-podgrid .vx-w-claim{grid-column:1/-1}
  .vx-podfoot{flex-direction:column}
  .vx-podfoot .vx-btn{width:100%}
}

/* VEIN STEP 9 — one network selector only. Also catches an old cached UI layer
   that used to inject its own full-width Testnet warning. */
#vx-netbar,#vxu-netbar,.vxu-netbar{display:none!important}
.vx-mldraws small{white-space:normal;line-height:1.25}

/* ========================================================================== 
   VEIN SAFE UI PASS — 12 Aug 2026
   Presentation-only overrides. No contract values, economic constants or live
   adapter hooks are changed here.
   ========================================================================== */

/* ETH -> USD is an in-place value swap. The old tooltip left padding, border,
   shadow and translate properties on the same ::after pseudo-element, which is
   what produced the black capsule/bar. Reset every tooltip-only property. */
[data-usd]{cursor:default}
[data-usd][data-usd-val]{position:relative;display:inline-block;isolation:isolate}
[data-usd][data-usd-val]::after{
  content:attr(data-usd-val)!important;
  position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
  display:grid!important;place-items:center!important;
  margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
  transform:none!important;box-shadow:none!important;background:transparent!important;
  font:inherit!important;letter-spacing:inherit!important;line-height:inherit!important;
  white-space:nowrap!important;color:var(--green)!important;-webkit-text-fill-color:var(--green)!important;
  text-shadow:0 0 18px rgba(34,197,94,.32)!important;
  opacity:0!important;pointer-events:none!important;z-index:2!important;
  transition:opacity var(--dur-2) var(--ease)!important;
}
[data-usd][data-usd-val]:hover,
[data-usd][data-usd-val]:focus-visible,
[data-usd][data-usd-val]:active{
  color:transparent!important;-webkit-text-fill-color:transparent!important;
  background-image:none!important;text-shadow:none!important;
}
[data-usd][data-usd-val]:hover::after,
[data-usd][data-usd-val]:focus-visible::after,
[data-usd][data-usd-val]:active::after{opacity:1!important}
[data-usd][data-usd-val]:hover .vx-ethmark,
[data-usd][data-usd-val]:focus-visible .vx-ethmark,
[data-usd][data-usd-val]:active .vx-ethmark{opacity:0}

/* Selected Hunt chambers stay unmistakably selected after the pointer leaves. */
.vx-node.sel{
  color:#15110D!important;border-color:#ffd36e!important;
  background:linear-gradient(120deg,#ffe39a,var(--gold) 45%,var(--amber))!important;
  box-shadow:0 0 0 2px rgba(255,211,110,.72),0 0 34px rgba(243,166,15,.62),0 12px 28px rgba(0,0,0,.52)!important;
}
.vx-node.sel .vx-nglow{opacity:1!important}

/* Round advancement belongs to the keeper. Keep the DOM hooks intact but keep
   the operational control out of the normal player-facing UI. */
#vx-hud-poke,#vx-l-poke,.vx-pokebtn{display:none!important}

/* Lucky Manual: the tunnel artwork is the selector. The duplicate number rail
   stays in the DOM for compatibility, but consumes no visual space. */
#vx-numrail{display:none!important}
#vx-slots{
  display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px!important;
  align-items:stretch;min-width:0;width:100%;
}
#vx-slots .vx-slot.fill{
  min-width:0!important;height:44px!important;padding:5px 6px!important;
  display:grid!important;grid-template-columns:auto minmax(0,1fr) 22px!important;
  align-items:center!important;gap:6px!important;border-radius:11px!important;
  background:linear-gradient(155deg,rgba(255,200,87,.10),rgba(0,0,0,.30))!important;
}
#vx-slots .vx-slot.fill>b{
  font:800 11px/1 var(--mono)!important;color:var(--gold)!important;white-space:nowrap;
}
#vx-slots .vx-slot-amt{
  min-width:0;display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px;
  padding:0 6px;border:1px solid rgba(255,255,255,.10);border-radius:8px;background:rgba(0,0,0,.28);
}
#vx-slots .vx-slot-amt input{
  width:100%;min-width:0;height:30px;padding:0;border:0;outline:0;background:transparent;
  color:var(--ink);font:700 13px/1 var(--mono);text-align:right;
}
#vx-slots .vx-slot-amt:focus-within{border-color:rgba(255,200,87,.52);box-shadow:0 0 0 2px rgba(255,200,87,.08)}
#vx-slots .vx-slot-amt em{font:700 7px/1 var(--mono);font-style:normal;letter-spacing:.08em;color:var(--dim)}
#vx-slots .vx-slot.fill button[data-rm]{
  width:22px;height:22px;margin:0!important;display:grid;place-items:center;border-radius:7px!important;
  border:1px solid rgba(255,255,255,.08)!important;background:rgba(255,255,255,.035)!important;
  color:var(--faint)!important;font:700 14px/1 var(--sans)!important;letter-spacing:0!important;text-transform:none!important;
}
#vx-slots .vx-slot.fill button[data-rm]:hover{color:var(--red-lt)!important;border-color:rgba(239,68,68,.30)!important}
.vx-slot-help{
  grid-column:1/-1;min-height:44px;display:grid;place-items:center;padding:8px 12px;border-radius:11px;
  border:1px dashed rgba(255,255,255,.10);background:rgba(0,0,0,.18);
  color:var(--faint);font:500 10.5px/1.35 var(--sans);text-align:center;
}

/* Wallet asset rows: ETH and OIX use the same horizontal rhythm; OIX keeps
   its own identity mark without changing any balance/value element ids. */
.vx-orixmark{width:15px;height:15px;object-fit:contain;flex:none;border-radius:50%;filter:drop-shadow(0 2px 5px rgba(0,0,0,.55))}
.vx-podbal-w{display:inline-flex;align-items:center;gap:5px}
.vx-podgrid .vx-w-orix{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:6px;align-items:center}
.vx-podgrid .vx-w-orix>.vx-orixmark{grid-column:1;grid-row:1}
.vx-podgrid .vx-w-orix>small{grid-column:2;grid-row:1}
.vx-podgrid .vx-w-orix>b{grid-column:1/-1;grid-row:2}

/* My Plays is the footer of the Hunt play surface rather than a third card. */
.vx-hunt-deploy{gap:0!important}
#vx-hunt-console{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}
#vx-hunt-plays{margin:0!important;min-width:0}
#vx-hunt-plays:empty{display:none!important}

/* The old hero explanatory divider created the visible horizontal seam. */
.vx-lode-note{border-top:0!important;padding-top:0!important;margin-top:0!important}

@media (max-width:1180px){
  #vx-slots{grid-template-columns:repeat(5,minmax(0,1fr))}
  #vx-slots .vx-slot-amt em{display:none}
}
@media (max-width:760px){
  #vx-slots{grid-template-columns:repeat(2,minmax(0,1fr))}
  #vx-slots .vx-slot-amt em{display:block}
}
@media (max-width:420px){
  #vx-slots{grid-template-columns:1fr}
}
/* Motherlode: the old swelling/progress rail read as a stray black layer across
   the card. Keep its DOM/state hook for the engine, remove only the visual rail. */
#vx-lode .vx-lode-fill{display:none!important}


/* ========================================================================== 
   VEIN UI ROUND 2 — selected tunnels + center ETH hover
   ========================================================================== */
@media (min-width:1181px){
  #vx-slots{
    grid-template-columns:repeat(3,minmax(150px,1fr))!important;
    gap:8px!important;
  }
  #vx-slots .vx-slot.fill{
    height:46px!important;
    grid-template-columns:26px minmax(96px,1fr) 24px!important;
    gap:7px!important;
    padding:5px 7px!important;
  }
  #vx-slots .vx-slot-amt{padding:0 8px!important;gap:6px!important}
  #vx-slots .vx-slot-amt input{
    min-width:0!important;width:100%!important;
    font-size:14px!important;text-align:left!important;
  }
  #vx-slots .vx-slot-amt em{display:block!important;font-size:7.5px!important}
}

/* The plate itself does not steal map clicks; only its ETH value is hoverable. */
#vx-plate-eth{pointer-events:auto!important;cursor:help!important}

/* Persistent selection also applies to the chamber building layer. */
.vx-houses .vx-house.sel .vx-h-on{opacity:1!important}
.vx-houses .vx-house.sel .vx-h-off{opacity:.18!important}


#vx-lode-amt{font-size:clamp(54px,5.2vw,82px)!important;line-height:.9!important;letter-spacing:-.045em!important}

/* ========================================================================== 
   VEIN UI ROUND 6 — Lucky Vein top HUD prominence
   ========================================================================== */
@media (min-width:1101px){
  /* Lift the four live Lucky cards clear of the tunnel doors and make them
     readable at a glance. The center timer remains the visual anchor. */
  .vx-lstats{
    top:56px!important;
    left:18px!important;right:18px!important;
    grid-template-columns:minmax(210px,260px) minmax(240px,1fr) minmax(250px,320px)!important;
    row-gap:10px!important;column-gap:18px!important;
  }
  .vx-lstat{
    min-height:58px!important;
    padding:11px 17px!important;
    gap:12px!important;
    border-radius:15px!important;
    box-shadow:0 16px 36px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.05)!important;
  }
  .vx-lstat img{width:38px!important;height:38px!important}
  .vx-lstat small{font-size:9px!important;letter-spacing:.17em!important}
  .vx-lstat b{font-size:19px!important;line-height:1.05!important}
  .vx-lstat-bal em{min-width:96px!important}
  .vx-lstat-bal .vx-btn{min-height:38px!important;padding:0 14px!important;font-size:11.5px!important}
}

/* Lucky jackpot cadence uses the exact live 200–500 style window but presents
   its midpoint as an average strike cadence, matching the compact Motherlode
   treatment. The detailed guide still exposes the exact window. */
#vxi-lucky-meter{margin-top:10px!important}
#vxi-lucky-meter .vxi-meter{padding:10px 12px!important;border-color:rgba(255,200,87,.16)!important}
#vxi-lucky-meter .vxi-meter-main{
  display:inline-flex!important;align-items:center!important;gap:7px!important;
  padding:5px 8px!important;border:1px solid rgba(255,255,255,.08)!important;
  border-radius:9px!important;background:rgba(255,255,255,.035)!important;
}
#vxi-lucky-meter .vxi-chip-window{
  padding:0!important;border:0!important;background:transparent!important;
  font:700 7.5px/1 var(--mono)!important;letter-spacing:.09em!important;color:var(--ink-4,#8a847c)!important;
}
#vxi-lucky-meter .vxi-meter-oddsval{
  font:800 11px/1 var(--display,var(--sans))!important;color:var(--green,#7adc8c)!important;
  white-space:nowrap!important;
}
#vxi-lucky-meter .vxi-meter small:empty{min-height:0!important;margin:0!important}


/* REV-AUTOCOMPOUND-POLICY-UI */

.vx-comp-mode{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin:8px 0 14px;
}

.vx-comp-modebtn{
  min-height:58px;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:10px;
  background:rgba(255,255,255,.025);
  color:inherit;
  cursor:pointer;
  text-align:left;
}

.vx-comp-modebtn b{
  display:block;
  font-size:12px;
  letter-spacing:.08em;
}

.vx-comp-modebtn span{
  display:block;
  margin-top:3px;
  opacity:.58;
  font-size:10px;
  line-height:1.3;
}

.vx-comp-modebtn.on{
  border-color:rgba(238,170,63,.62);
  background:rgba(238,170,63,.08);
}

.vx-comp-trigger{
  margin-top:14px;
}

.vx-comp-triggerrow{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:6px;
}

.vx-comp-triggerrow input{
  width:150px;
  min-width:0;
  padding:9px 10px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:8px;
  background:rgba(0,0,0,.22);
  color:inherit;
  font:inherit;
}

.vx-comp-triggerrow span{
  font-size:11px;
  opacity:.72;
}

.vx-comp-trigger em{
  display:block;
  margin-top:6px;
  max-width:540px;
  font-size:10px;
  line-height:1.45;
  opacity:.50;
  font-style:normal;
}

.vx-comp-policy-note{
  margin-top:10px;
  font-size:10px;
  line-height:1.4;
  opacity:.58;
}

#vx-comp-lock-options.off{
  opacity:.34;
  pointer-events:none;
}

@media(max-width:640px){
  .vx-comp-mode{
    grid-template-columns:1fr;
  }
}


/* ============================================================
   AUTO-COMPOUND COMPACT TWO-COLUMN LAYOUT
   ============================================================ */

#vx-compound{
  display:grid;
  grid-template-columns:minmax(0,1.65fr) minmax(300px,.85fr);
  gap:22px;
  align-items:start;
}

#vx-compound .vx-comp-copy{
  min-width:0;
}

#vx-compound .vx-comp-side{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:12px;
}

#vx-compound .vx-comp-side .vx-comp-fig{
  margin:0;
}

#vx-compound .vx-comp-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}

#vx-compound .vx-comp-actions .vx-btn{
  width:100%;
}

#vx-comp-gas-box{
  margin-top:10px;
  padding:12px 14px;
}

#vx-comp-gas-box #vx-comp-gas-topup{
  width:auto;
  min-width:150px;
}

#vx-compound .vx-comp-tier{
  margin-top:14px;
}

#vx-compound .vx-comp-trigger{
  margin-top:14px;
}

/* Tablet / smaller desktop */
@media (max-width:1100px){
  #vx-compound{
    grid-template-columns:minmax(0,1.35fr) minmax(280px,.9fr);
    gap:16px;
  }
}

/* Mobile */
@media (max-width:760px){
  #vx-compound{
    grid-template-columns:1fr;
  }

  #vx-compound .vx-comp-actions{
    grid-template-columns:1fr;
  }
}


/* ============================================================
   AUTO COMPOUND — TRUE SIDE-BY-SIDE DESKTOP STRUCTURE
   ============================================================ */

@media (min-width: 901px){

  #vx-compound.vx-compound{
    display:grid !important;
    grid-template-columns:minmax(0, 1.55fr) minmax(340px, .85fr) !important;
    column-gap:24px !important;
    row-gap:0 !important;
    align-items:start !important;
  }

  #vx-compound > .vx-comp-copy{
    grid-column:1 !important;
    width:100% !important;
    min-width:0 !important;
  }

  #vx-compound > .vx-comp-side{
    grid-column:2 !important;
    grid-row:1 !important;
    width:100% !important;
    min-width:0 !important;
    margin:0 !important;
    align-self:start !important;
  }

  #vx-compound .vx-comp-side{
    display:flex !important;
    flex-direction:column !important;
    gap:12px !important;
  }

  #vx-compound .vx-comp-side .vx-comp-fig{
    width:100% !important;
    margin:0 !important;
  }

  #vx-compound .vx-comp-actions{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
  }

}

/* Mobile remains stacked */
@media (max-width:900px){

  #vx-compound.vx-compound{
    display:block !important;
  }

  #vx-compound > .vx-comp-side{
    margin-top:18px !important;
  }

}

/* ============================================================
   AUTO-COMPOUND — COMPACT HORIZONTAL LAYOUT
   ============================================================ */

@media (min-width: 901px){

  /* Main compound card */
  #vx-compound{
    display:grid !important;
    grid-template-columns:minmax(0,1.55fr) minmax(360px,.9fr) !important;
    gap:18px 24px !important;
    align-items:start !important;
  }

  /* LEFT SETTINGS */
  #vx-compound > .vx-comp-copy{
    min-width:0 !important;
  }

  /* RIGHT STATUS */
  #vx-compound > .vx-comp-side{
    min-width:0 !important;
    margin:0 !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
    align-items:stretch !important;
  }

  #vx-compound .vx-comp-side .vx-comp-fig{
    margin:0 !important;
    min-width:0 !important;
  }

  /* Put buttons across full width below the two stats */
  #vx-compound .vx-comp-actions{
    grid-column:1 / -1 !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
  }

  #vx-compound .vx-comp-side > .vx-vnote{
    grid-column:1 / -1 !important;
    margin-top:0 !important;
  }

  /* Auto-compound toggle + service status visually aligned */
  #vx-compound .vx-comp-row{
    min-height:76px !important;
    display:flex !important;
    align-items:center !important;
  }

  /* Trigger + Gas Credit on same row */
  #vx-compound .vx-comp-tier{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:16px !important;
    align-items:start !important;
  }

  /* Full width items */
  #vx-compound .vx-comp-tier > small,
  #vx-compound #vx-comp-modes,
  #vx-compound #vx-comp-lock-options{
    grid-column:1 / -1 !important;
  }

  /* Trigger left */
  #vx-compound .vx-comp-trigger{
    grid-column:1 !important;
    margin-top:0 !important;
    height:100% !important;
  }

  /* Policy line should not consume a whole row */
  #vx-compound #vx-comp-policy-note{
    grid-column:1 !important;
    margin-top:6px !important;
    padding:0 !important;
    background:transparent !important;
    border:0 !important;
    min-height:0 !important;
  }

  /* Gas credit right */
  #vx-compound #vx-comp-gas-box{
    grid-column:2 !important;
    grid-row:auto !important;
    margin-top:0 !important;
    height:100% !important;
    padding:14px 16px !important;
  }

  #vx-compound #vx-comp-gas-topup{
    margin-top:10px !important;
  }

}

/* Mobile / narrow screens stay stacked */
@media (max-width:900px){

  #vx-compound{
    display:block !important;
  }

  #vx-compound .vx-comp-tier{
    display:block !important;
  }

  #vx-compound #vx-comp-gas-box{
    margin-top:12px !important;
  }

  #vx-compound > .vx-comp-side{
    display:block !important;
    margin-top:18px !important;
  }

  #vx-compound .vx-comp-side .vx-comp-fig{
    margin-bottom:10px !important;
  }

}

/* ============================================================
   AUTO-COMPOUND — FINAL BALANCED DESKTOP LAYOUT
   ============================================================ */

@media (min-width: 901px){

  /* Main card */
  #vx-compound{
    display:grid !important;
    grid-template-columns:minmax(0, 1.45fr) minmax(380px, .75fr) !important;
    gap:22px !important;
    align-items:start !important;
  }

  /* LEFT COLUMN */
  #vx-compound > .vx-comp-copy{
    display:block !important;
    min-width:0 !important;
  }

  /* RIGHT COLUMN */
  #vx-compound > .vx-comp-side{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
    min-width:0 !important;
    margin:0 !important;
  }

  #vx-compound .vx-comp-side .vx-comp-fig{
    margin:0 !important;
    min-height:92px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
  }

  #vx-compound .vx-comp-actions{
    grid-column:1 / -1 !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
  }

  #vx-compound .vx-comp-side > .vx-vnote{
    grid-column:1 / -1 !important;
    margin:0 !important;
  }

  /* Main toggle compact */
  #vx-compound .vx-comp-row{
    min-height:74px !important;
    margin-top:16px !important;
  }

  /* Main settings */
  #vx-compound .vx-comp-tier{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:16px !important;
    align-items:start !important;
    margin-top:14px !important;
  }

  #vx-compound .vx-comp-tier > small,
  #vx-compound #vx-comp-modes,
  #vx-compound #vx-comp-lock-options{
    grid-column:1 / -1 !important;
  }

  /* Bottom settings row */
  #vx-compound .vx-comp-trigger{
    grid-column:1 !important;
    margin:0 !important;
    padding:14px 16px !important;
    border:1px solid rgba(255,255,255,.08) !important;
    border-radius:12px !important;
    background:rgba(255,255,255,.025) !important;
    min-height:132px !important;
    box-sizing:border-box !important;
  }

  #vx-compound #vx-comp-gas-box{
    grid-column:2 !important;
    margin:0 !important;
    padding:14px 16px !important;
    border:1px solid rgba(255,255,255,.08) !important;
    border-radius:12px !important;
    background:rgba(255,255,255,.025) !important;
    min-height:132px !important;
    box-sizing:border-box !important;
  }

  /* Keep policy note visually attached to trigger */
  #vx-compound #vx-comp-policy-note{
    grid-column:1 !important;
    margin:-6px 0 0 !important;
    padding:0 2px !important;
    background:none !important;
    border:0 !important;
    opacity:.72 !important;
  }

  #vx-compound #vx-comp-gas-topup{
    margin-top:12px !important;
  }

  /* Reduce dead space */
  #vx-compound .vx-comp-copy > p{
    max-width:900px !important;
  }

  #vx-compound .vx-comp-mode{
    gap:10px !important;
  }

  #vx-compound .vx-comp-modebtn{
    min-height:62px !important;
  }

  #vx-compound #vx-comp-auto-tiers{
    gap:10px !important;
  }

  #vx-compound #vx-comp-auto-tiers button{
    min-height:58px !important;
  }

}

/* Mobile */
@media (max-width:900px){

  #vx-compound{
    display:block !important;
  }

  #vx-compound > .vx-comp-side{
    margin-top:18px !important;
  }

  #vx-compound .vx-comp-tier{
    display:block !important;
  }

  #vx-compound .vx-comp-trigger,
  #vx-compound #vx-comp-gas-box{
    margin-top:12px !important;
  }

}


/* vault-apr-tier-estimates */
.vx-tiers button .vx-tier-apr{margin-top:3px;font-family:var(--mono);font-style:normal;font-size:10px;line-height:1.1;color:var(--ink);opacity:.88}
.vx-tiers button.on .vx-tier-apr{color:var(--gold);opacity:1}
.vx-sac-aprline b{color:var(--gold)}

/* ===== vein-portal.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein Portal — 18 Aug 2026
   The Vein is now a standalone game-first surface. The existing game engine,
   contracts and wallet pod remain untouched; Trade OIX uses the existing swap terminal.
   ========================================================================== */

/* No trading-app chrome on the game portal. This is presentation only. */
body[data-cw-chrome="portal"] #cw-side,
body[data-cw-chrome="portal"] #cw-topbar,
body[data-cw-chrome="portal"] #cw-scrim,
body[data-cw-chrome="portal"] #cw-tabrail,
body[data-cw-chrome="portal"] .cw-tabrail,
body[data-cw-chrome="portal"] .cwm,
body[data-cw-chrome="portal"] .cwm-nl{display:none!important}

.vx-body{min-height:100vh;overflow-x:hidden;background:
  radial-gradient(circle at 50% -18%,rgba(249,115,22,.105),transparent 34%),
  radial-gradient(circle at 90% 10%,rgba(255,200,87,.035),transparent 28%),
  #090705!important}
.vx-shell{max-width:1620px!important;padding:12px clamp(16px,2.1vw,34px) 100px!important}

/* The standalone entrance already explains the product. Inside the Cave we
   begin with the game, not another marketing hero. All original hero markup is
   preserved in the document for rollback/history. */
.vx-hero{display:none!important}

/* --------------------------- portal navigation --------------------------- */
.vx-portalbar{position:sticky;top:10px;z-index:900;display:grid!important;
  grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;
  margin:0 0 10px!important;padding:8px 9px!important;min-height:62px;
  border:1px solid rgba(255,190,76,.16);border-radius:17px;
  background:linear-gradient(180deg,rgba(17,13,9,.94),rgba(10,8,6,.91));
  box-shadow:0 18px 50px rgba(0,0,0,.44),inset 0 1px 0 rgba(255,255,255,.055);
  backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15)}
.vxp-brand{height:46px;display:flex;align-items:center;gap:9px;padding:0 9px 0 7px;text-decoration:none;color:var(--ink);border-radius:11px;transition:.16s}
.vxp-brand:hover{background:rgba(255,255,255,.035)}
.vxp-brand img{width:34px;height:34px;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(249,115,22,.18))}
.vxp-brand span{display:flex;flex-direction:column;gap:2px;white-space:nowrap}.vxp-brand strong{font-family:var(--display);font-size:13px;font-weight:800;letter-spacing:-.045em}.vxp-brand strong b{color:var(--gold)}
.vxp-brand small{font-family:var(--mono);font-size:7.5px;font-weight:600;letter-spacing:.17em;text-transform:uppercase;color:var(--dim)}

.vxp-navwrap{min-width:0;display:flex;justify-content:center}
.vx-portalbar .vx-tabs{width:auto!important;max-width:100%;margin:0!important;padding:4px!important;gap:2px!important;border-color:rgba(255,255,255,.055)!important;background:rgba(0,0,0,.25)!important}
.vx-portalbar .vx-tabs button{flex:0 0 auto!important;min-width:0!important;justify-content:center!important;padding:9px clamp(9px,1vw,16px)!important;font-size:11.5px!important;white-space:nowrap}
.vxp-newdot{width:5px;height:5px;border-radius:50%;background:var(--green);box-shadow:0 0 9px rgba(34,197,94,.75);flex:none}

.vxp-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
/* Network is status copy, not a second wallet-like pill. The Robinhood wordmark
   carries the network identity; the dot only communicates live/syncing state. */
.vxp-liveon{height:34px;display:inline-flex;align-items:center;gap:7px;padding:0 4px;color:#918672;white-space:nowrap;opacity:.9}
.vxp-liveon i{width:6px;height:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 9px rgba(243,166,15,.55);transition:.2s}
.vxp-liveon small{font:700 7.5px/1 var(--mono);letter-spacing:.14em;color:#827867}
.vxp-liveon img{width:66px;height:18px;object-fit:contain;object-position:left center;filter:saturate(.82) brightness(1.12)}
.vxp-liveon.live i{background:#22c55e;box-shadow:0 0 9px rgba(34,197,94,.7)}
.vxp-liveon.syncing{opacity:.66}.vxp-liveon.syncing i{animation:vxpNetPulse 1.3s ease-in-out infinite}@keyframes vxpNetPulse{50%{opacity:.35;transform:scale(.72)}}
.vxp-connect{height:42px;min-width:0;padding:0 13px 0 7px;display:flex;align-items:center;gap:9px;border-radius:13px;cursor:pointer;border:1px solid rgba(255,200,87,.34);background:linear-gradient(180deg,rgba(255,200,87,.12),rgba(249,115,22,.065));color:#f8e8cc;font-family:var(--sans);font-size:11.5px;font-weight:700;white-space:nowrap;transition:.16s;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.vxp-connect:hover{border-color:rgba(255,200,87,.58);background:linear-gradient(180deg,rgba(255,200,87,.18),rgba(249,115,22,.11));transform:translateY(-1px);box-shadow:0 9px 24px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.055)}
.vxp-connect-icon{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:9px;overflow:hidden;background:#15100b;border:1px solid rgba(255,255,255,.055);box-shadow:0 4px 12px rgba(0,0,0,.22)}
.vxp-connect-icon svg,.vxp-connect-icon img{display:block;width:100%;height:100%;object-fit:cover}
.vxp-connected .vxp-connect{border-color:rgba(34,197,94,.22);background:linear-gradient(180deg,rgba(34,197,94,.07),rgba(255,200,87,.035))}
.vxp-connected .vxp-connect:after{content:"";width:6px;height:6px;border-radius:50%;background:#22c55e;box-shadow:0 0 9px rgba(34,197,94,.65);margin-left:1px}
.vxp-disconnected .vx-pod{display:none!important}
.vxp-connected .vx-pod{display:block}
.vx-portalbar .vx-podbtn{min-height:40px!important;height:40px;padding:5px 9px!important}
.vx-portalbar .vx-podbals{padding-left:0!important;margin-left:0!important;border-left:0!important;gap:4px!important}
.vx-portalbar .vx-podbal{padding:0 7px!important}.vx-portalbar .vx-podcar{margin-left:2px}
.vxp-podaddr{font-family:var(--mono);font-size:9px;color:var(--dim)}
.vxp-menu{display:none;width:40px;height:40px;padding:0;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:4px}
.vxp-menu span{display:block;width:16px;height:1.5px;border-radius:2px;background:#d6c4aa;transition:.18s}
.vxp-menu[aria-expanded="true"] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.vxp-menu[aria-expanded="true"] span:nth-child(2){opacity:0}.vxp-menu[aria-expanded="true"] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}

/* Compact live strip belongs immediately to the game now. */
.vx-ticker{position:relative!important;top:auto!important;margin:0 0 11px!important;min-height:42px!important;border-radius:13px!important;background:rgba(13,10,7,.68)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.vx-ticker .vx-seg{min-height:40px!important}.vx-ticker .vx-seg small{font-size:7.5px!important}.vx-ticker .vx-seg b{font-size:10.5px!important}
.vx-view.active{animation:vxpView .26s ease both}@keyframes vxpView{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ---------------------------- wallet chooser ----------------------------- */
.vxp-walletmask{position:fixed;inset:0;z-index:2147483642;display:grid;place-items:center;padding:22px;background:rgba(4,3,2,.76);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.vxp-walletmask[hidden]{display:none!important}
.vxp-walletmodal{width:min(520px,100%);max-height:min(760px,90svh);overflow:auto;padding:22px;border-radius:20px;border:1px solid rgba(255,190,76,.22);background:linear-gradient(155deg,#17110b,#0c0906 72%);box-shadow:0 35px 100px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.07)}
.vxp-walletmodal>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.vxp-walletmodal h3{margin:7px 0 0;font-family:var(--display);font-size:24px;letter-spacing:-.045em}.vxp-walletmodal>header button{width:36px;height:36px;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);color:#d8c7b0;font-size:22px;cursor:pointer}
.vxp-walletmodal>p{margin:14px 0 18px;color:var(--muted);font-size:12.5px;line-height:1.6}
.vxp-wallets{display:grid;gap:8px}.vxp-wallet{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 11px;text-align:left;cursor:pointer;border-radius:13px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.025);color:var(--ink);transition:.16s}.vxp-wallet:hover{border-color:rgba(255,200,87,.3);background:rgba(255,200,87,.055);transform:translateY(-1px)}
.vxp-wicon{width:42px;height:42px;border-radius:12px;overflow:hidden;display:grid;place-items:center;background:#16120e}.vxp-wicon svg,.vxp-wicon img{width:100%;height:100%;display:block;object-fit:cover}.vxp-wcopy{min-width:0;display:flex;flex-direction:column;gap:3px}.vxp-wcopy b{font-size:13px}.vxp-wcopy small{font-size:10.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vxp-wstate{font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);padding:5px 8px;border:1px solid rgba(255,200,87,.18);border-radius:99px}.vxp-wallet[data-installed="0"] .vxp-wstate{color:var(--dim);border-color:rgba(255,255,255,.07)}
.vxp-wallet-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:17px;padding-top:14px;border-top:1px solid rgba(255,255,255,.06)}.vxp-wallet-foot>span{font-family:var(--mono);font-size:8.5px;color:var(--dim);display:flex;align-items:center;gap:7px}.vxp-wallet-foot>span i{width:6px;height:6px;border-radius:50%;background:#22c55e}.vxp-wallet-foot button{border:0;background:none;color:#a89680;font-size:10.5px;cursor:pointer}.vxp-wallet-foot button:hover{color:#f0d9bd}

/* ------------------------------- stocks ---------------------------------- */
.vx-stock{padding-top:4px}.vxs-hero{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:28px;padding:clamp(25px,3.5vw,48px);min-height:250px;margin:0 0 14px;border:1px solid rgba(255,190,76,.18);border-radius:20px;background:radial-gradient(circle at 78% 45%,rgba(34,197,94,.12),transparent 26%),radial-gradient(circle at 12% 0%,rgba(255,200,87,.09),transparent 36%),linear-gradient(145deg,#18120c,#0d0a07 75%);box-shadow:var(--elev-1),inset 0 1px 0 rgba(255,255,255,.055)}
.vxs-hero::after{content:"";position:absolute;right:-70px;bottom:-120px;width:430px;height:430px;border-radius:50%;border:1px solid rgba(34,197,94,.08);box-shadow:0 0 0 45px rgba(34,197,94,.025),0 0 0 90px rgba(34,197,94,.018);pointer-events:none}
.vxs-copy{position:relative;z-index:1;max-width:760px}.vxs-copy h2{margin:10px 0 12px;font-family:var(--display);font-size:clamp(34px,4.3vw,66px);line-height:.98;letter-spacing:-.065em}.vxs-copy h2 em{font-style:normal;color:var(--gold)}.vxs-copy p{margin:0;max-width:690px;color:var(--muted);font-size:14px;line-height:1.65}
.vxs-threshold{position:relative;z-index:1;min-width:250px;padding:17px 19px;border-radius:15px;border:1px solid rgba(34,197,94,.2);background:rgba(34,197,94,.05);display:flex;flex-direction:column;gap:5px}.vxs-threshold small{font-family:var(--mono);font-size:8px;letter-spacing:.17em;color:#7ecf9b}.vxs-threshold b{font-family:var(--display);font-size:25px;color:#dff6e7;letter-spacing:-.035em}.vxs-threshold span{font-size:10.5px;color:#829487}
.vxs-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;gap:10px;margin:14px 0}.vxs-flow>span{display:grid;grid-template-columns:32px 1fr;grid-template-rows:auto auto;column-gap:10px;align-content:center;padding:14px;border:1px solid rgba(255,255,255,.06);border-radius:14px;background:rgba(255,255,255,.022)}.vxs-flow>span i{grid-row:1/3;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font:700 10px var(--mono);font-style:normal;color:#171009;background:linear-gradient(180deg,#ffd36c,#e79a17)}.vxs-flow>span b{font-size:11.5px}.vxs-flow>span small{font-size:9.5px;color:var(--dim);margin-top:3px}.vxs-flow>em{align-self:center;font-style:normal;color:#5e4c38}
.vxs-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(380px,.85fr);gap:14px}.vxs-card{padding:20px}.vxs-card>header,.vxs-history>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.vxs-card h3,.vxs-history h3{margin:5px 0 0;font-family:var(--display);font-size:21px;letter-spacing:-.04em}.vxs-cycle{display:flex;align-items:center;gap:7px;padding:6px 10px;border-radius:99px;border:1px solid rgba(34,197,94,.18);font:700 9px var(--mono);color:#8bddaa}.vxs-cycle i{width:6px;height:6px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e}
.vxs-state{min-height:230px}.vxs-loading{height:210px;display:grid;place-items:center;align-content:center;gap:12px;color:var(--dim);font-size:11px}.vxs-loading i{width:23px;height:23px;border:2px solid rgba(255,200,87,.15);border-top-color:var(--gold);border-radius:50%;animation:vxsSpin .8s linear infinite}@keyframes vxsSpin{to{transform:rotate(360deg)}}
.vxs-user{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px}.vxs-user-main{padding:16px;border-radius:14px;background:linear-gradient(145deg,rgba(255,200,87,.055),rgba(255,255,255,.018));border:1px solid rgba(255,200,87,.1)}.vxs-status{display:flex;align-items:center;gap:11px}.vxs-statusicon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:rgba(255,200,87,.1);border:1px solid rgba(255,200,87,.16);color:var(--gold);font-size:18px}.vxs-statuscopy{min-width:0}.vxs-statuscopy b{display:block;font-size:13px}.vxs-statuscopy span{display:block;color:var(--dim);font-size:10.5px;margin-top:4px;line-height:1.45}.vxs-progress{margin-top:18px}.vxs-progresshead{display:flex;justify-content:space-between;gap:14px;font-family:var(--mono);font-size:9px;color:var(--dim)}.vxs-progresshead b{color:#d9c8b1}.vxs-bar{height:8px;border-radius:99px;background:#0d0a07;border:1px solid rgba(255,255,255,.055);overflow:hidden;margin-top:8px}.vxs-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--ember),var(--gold),#22c55e);box-shadow:0 0 14px rgba(255,200,87,.24)}
.vxs-user-side{min-width:150px;padding:15px;border-radius:14px;border:1px solid rgba(255,255,255,.06);background:rgba(0,0,0,.2);display:flex;flex-direction:column;justify-content:center}.vxs-user-side small{font:600 8px var(--mono);letter-spacing:.12em;color:var(--dim)}.vxs-user-side b{font-family:var(--display);font-size:24px;margin:5px 0 2px;color:var(--gold)}.vxs-user-side span{font-size:9.5px;color:#81715f}.vxs-actions{display:flex;align-items:center;gap:8px;margin-top:14px}.vxs-btn{min-height:39px;padding:0 14px;border-radius:10px;border:1px solid rgba(255,200,87,.28);background:linear-gradient(180deg,rgba(255,200,87,.14),rgba(249,115,22,.07));color:#f7e5cc;font-weight:700;font-size:11px;cursor:pointer}.vxs-btn.primary{border-color:#ffc857;background:linear-gradient(180deg,#ffd369,#e79a17);color:#171009}.vxs-btn:disabled{opacity:.42;cursor:not-allowed}.vxs-mini-note{font-size:9px;color:var(--dim)}
.vxs-sub{margin:-6px 0 14px;font-size:10.5px;line-height:1.5;color:var(--dim)}.vxs-assets{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.vxs-asset{min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 6px;border-radius:12px;border:1px solid rgba(255,255,255,.055);background:rgba(255,255,255,.025);text-decoration:none;color:var(--ink)}.vxs-asset:hover{border-color:rgba(255,200,87,.2)}.vxs-assetmark{width:38px;height:38px;border-radius:10px;overflow:hidden;display:grid;place-items:center;background:#e7e1d7;color:#15110d;font:800 9px var(--display)}.vxs-assetmark img{width:100%;height:100%;object-fit:contain;padding:8px}.vxs-asset b{font:700 10px var(--mono)}.vxs-asset small{font-size:8px;color:var(--dim);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vxs-skeleton{height:84px;border-radius:12px;background:linear-gradient(90deg,rgba(255,255,255,.025),rgba(255,255,255,.055),rgba(255,255,255,.025));background-size:200% 100%;animation:vxsSk 1.3s linear infinite}@keyframes vxsSk{to{background-position:-200% 0}}
.vxs-econ{margin-top:14px;display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;padding:13px;border-radius:12px;border:1px solid rgba(255,255,255,.055);background:rgba(0,0,0,.18)}.vxs-econ span{display:flex;flex-direction:column;align-items:center;gap:3px}.vxs-econ small{font:600 7.5px var(--mono);letter-spacing:.08em;color:var(--dim);text-transform:uppercase}.vxs-econ b{font-family:var(--display);font-size:17px;color:#ead9c0}.vxs-econ i{width:1px;height:25px;background:rgba(255,255,255,.07)}
.vxs-history{margin-top:14px;padding:20px}.vxs-history>header>small{font-size:9.5px;color:var(--dim)}.vxs-historyrows{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.vxs-hrow{padding:13px;border-radius:12px;border:1px solid rgba(255,255,255,.055);background:rgba(255,255,255,.02)}.vxs-hrow>span{display:flex;justify-content:space-between;gap:10px;font:600 8.5px var(--mono);color:var(--dim)}.vxs-hrow>span b{color:#cdb99e}.vxs-hrow strong{display:block;margin-top:10px;font-size:11px;color:#eee0cb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vxs-hrow small{display:block;margin-top:6px;font-size:8.5px;color:#776957}.vxs-empty{grid-column:1/-1;padding:28px;text-align:center;border:1px dashed rgba(255,255,255,.07);border-radius:12px;color:var(--dim);font-size:10.5px}

/* ----------------------------- responsiveness ---------------------------- */
@media(max-width:1240px){
  .vxp-liveon small{display:none}.vxp-liveon{gap:5px}.vxp-liveon img{width:56px}
  .vx-portalbar .vx-tabs button{padding-left:9px!important;padding-right:9px!important;font-size:10.5px!important}
  .vxp-brand span{display:none}.vxp-brand{padding-right:4px}
}
@media(max-width:980px){
  .vx-shell{padding:8px max(12px,env(safe-area-inset-left)) 90px!important;padding-right:max(12px,env(safe-area-inset-right))!important}
  .vx-portalbar{top:7px;grid-template-columns:auto 1fr auto;gap:7px;min-height:58px;padding:6px 7px!important}
  .vxp-brand img{width:32px;height:32px}.vxp-menu{display:flex;justify-self:start}
  .vxp-navwrap{position:absolute;left:7px;right:7px;top:calc(100% + 7px);display:none;padding:7px;border-radius:14px;border:1px solid rgba(255,190,76,.14);background:rgba(13,10,7,.98);box-shadow:0 22px 58px rgba(0,0,0,.58)}
  .vx-portalbar.menu-open .vxp-navwrap{display:block}
  .vx-portalbar .vx-tabs{display:grid!important;grid-template-columns:1fr 1fr;width:100%!important;max-width:none!important;overflow:visible!important;background:transparent!important;border:0!important;gap:5px!important}
  .vx-portalbar .vx-tabs button{width:100%;min-height:42px!important;justify-content:flex-start!important;padding:0 13px!important;border-radius:10px!important;background:rgba(255,255,255,.025)}
  .vx-portalbar .vx-tabs button.on{background:linear-gradient(180deg,var(--gold),var(--amber))!important}.vx-portalbar .vx-tab-ink{display:none!important}
  .vxp-liveon{display:none}.vxp-actions{gap:6px}.vxp-connect{height:40px;padding-right:10px}.vxp-connected .vxp-connect{max-width:142px}.vxp-connected #vxp-connect-label{overflow:hidden;text-overflow:ellipsis}
  .vx-portalbar .vx-podbal small{display:none}.vx-portalbar .vx-podbal{padding:0 5px!important}.vx-portalbar .vx-podbal b{font-size:11px!important}
  .vxs-grid{grid-template-columns:1fr}.vxs-historyrows{grid-template-columns:1fr 1fr}
}
@media(max-width:680px){
  .vx-shell{padding-top:6px!important}.vx-portalbar{border-radius:14px;margin-bottom:7px!important}
  .vxp-brand{display:none}.vx-portalbar{grid-template-columns:auto 1fr}.vxp-actions{grid-column:2;justify-self:end}.vxp-menu{grid-column:1}
  .vxp-connected .vxp-connect{display:none}.vxp-disconnected .vxp-connect{display:flex}
  .vx-portalbar .vx-podbtn{height:41px!important;min-width:145px}.vx-portalbar .vx-podbal{flex:1!important}.vx-portalbar .vx-podbals{flex:1!important}
  .vx-ticker{display:flex!important;overflow-x:auto;scrollbar-width:none;white-space:nowrap}.vx-ticker::-webkit-scrollbar{display:none}.vx-ticker .vx-seg{flex:0 0 auto!important;padding:0 11px!important}
  .vxs-hero{min-height:0;display:block;padding:24px 18px}.vxs-copy h2{font-size:37px}.vxs-copy p{font-size:12.5px}.vxs-threshold{margin-top:20px;min-width:0;width:100%}.vxs-threshold b{font-size:22px}
  .vxs-flow{grid-template-columns:1fr;gap:7px}.vxs-flow>em{display:none}.vxs-flow>span{min-height:64px}
  .vxs-card,.vxs-history{padding:15px}.vxs-user{grid-template-columns:1fr}.vxs-user-side{min-width:0}.vxs-assets{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.vxs-asset{padding:9px 3px}.vxs-assetmark{width:34px;height:34px}.vxs-asset small{display:none}.vxs-historyrows{grid-template-columns:1fr}
  .vxp-walletmask{padding:10px}.vxp-walletmodal{padding:17px;border-radius:17px}.vxp-walletmodal h3{font-size:21px}.vxp-wallet{grid-template-columns:38px 1fr auto}.vxp-wicon{width:38px;height:38px}.vxp-wcopy small{max-width:190px}
}
@media(max-width:430px){
  .vx-portalbar .vx-podbtn{min-width:128px}.vx-portalbar .vx-podbal:first-child{display:none!important}.vxp-disconnected .vxp-connect{font-size:10.5px}
  .vx-portalbar .vx-tabs{grid-template-columns:1fr}.vxs-assets{grid-template-columns:repeat(2,1fr)}.vxs-asset small{display:block}.vxs-econ{padding:10px 6px}.vxs-econ b{font-size:14px}.vxs-econ small{font-size:6.5px}
}
@media(prefers-reduced-motion:reduce){.vx-view.active,.vxs-loading i,.vxs-skeleton{animation:none!important}.vxp-connect,.vxp-wallet{transition:none!important}}

/* REV15 Robinhood-only portal fallbacks. Old cross-market linked-wallet and
   transfer entrypoints remain in source for CaveWatch, but never render here. */
body[data-cw-chrome="portal"] .cwl-badge,
body[data-cw-chrome="portal"] #vxu-topen{display:none!important}

/* ===== vein-premium.css ===== */
/* ========================================================================== 
   The Vein · Premium Game Surface REV13 · 18 Aug 2026
   Pure presentation layer. No contract, payout, wallet or game-engine logic.
   ========================================================================== */

/* The old trading shell stays loaded underneath for compatibility, but The Vein
   presents itself as a game world. Chat is deliberately restored on the left. */
body[data-cw-chrome="portal"] .cwchat-trigger{
  display:flex!important;left:18px!important;right:auto!important;top:auto!important;
  bottom:18px!important;transform:none!important;z-index:9400!important;
  padding:11px 10px!important;border-radius:14px!important;background:linear-gradient(160deg,rgba(20,15,10,.9),rgba(8,7,5,.92))!important;
  border-color:rgba(255,190,76,.22)!important;box-shadow:0 18px 45px rgba(0,0,0,.48),0 0 34px rgba(249,115,22,.09)!important;
  backdrop-filter:blur(18px)!important;-webkit-backdrop-filter:blur(18px)!important
}
body[data-cw-chrome="portal"] .cwchat-trigger span{font-size:8px!important;letter-spacing:.12em!important}
body[data-cw-chrome="portal"] .cwchat-trigger:hover{padding-left:10px!important;padding-right:10px!important;transform:translateY(-2px)!important}

.vx-body{--vxp-glow:rgba(255,154,31,.16);--vxp-soft:rgba(255,200,87,.07);background:
  radial-gradient(circle at 50% -14%,rgba(249,115,22,.135),transparent 34%),
  radial-gradient(circle at 8% 38%,rgba(255,200,87,.035),transparent 28%),
  radial-gradient(circle at 93% 68%,rgba(249,115,22,.045),transparent 30%),#080604!important}
.vx-body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;opacity:.42;background:
  radial-gradient(circle at 20% 10%,rgba(255,196,90,.035),transparent 24%),
  linear-gradient(180deg,rgba(255,255,255,.012),transparent 18%)}
.vx-shell{max-width:1900px!important;padding:10px clamp(14px,1.7vw,34px) 72px!important}

/* ------------------------------ top world bar ---------------------------- */
.vx-portalbar{top:8px!important;min-height:66px!important;margin-bottom:9px!important;padding:8px 10px!important;border-radius:18px!important;
  border-color:rgba(255,190,76,.19)!important;background:linear-gradient(180deg,rgba(18,13,8,.965),rgba(9,7,5,.93))!important;
  box-shadow:0 22px 65px rgba(0,0,0,.5),0 0 45px rgba(249,115,22,.035),inset 0 1px 0 rgba(255,255,255,.06)!important}
.vxp-brand{height:48px!important;gap:10px!important;padding-left:5px!important}
.vxp-brand img{width:39px!important;height:39px!important;filter:drop-shadow(0 6px 16px rgba(249,115,22,.28))!important}
.vxp-brand strong{font-size:14px!important;letter-spacing:-.035em!important}.vxp-brand small{font-size:7.5px!important;color:#93816b!important}
.vxp-brand strong b{color:var(--gold)!important}
.vx-portalbar .vx-tabs{padding:4px!important;border-radius:13px!important;background:rgba(0,0,0,.34)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.vx-portalbar .vx-tabs button{position:relative;min-height:38px!important;padding:0 clamp(11px,1vw,17px)!important;border-radius:10px!important;font-size:11px!important;font-weight:650!important;gap:6px!important;letter-spacing:-.01em!important}
.vxp-navnum{font:700 7px/1 var(--mono);color:#6f604f;letter-spacing:.08em}.vx-tabs button.on .vxp-navnum{color:#4a3108}
.vxp-newdot{margin-right:1px}.vxp-actions{gap:7px!important}
.vxp-roundbtn{width:40px;height:40px;display:grid;place-items:center;flex:none;border-radius:11px;border:1px solid rgba(255,255,255,.075);background:rgba(255,255,255,.025);color:#9f8e78;cursor:pointer;transition:.17s;box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.vxp-roundbtn:hover{color:var(--gold);border-color:rgba(255,200,87,.3);background:rgba(255,200,87,.055);transform:translateY(-1px)}
.vxp-roundbtn svg{width:18px;height:18px}.vxp-roundbtn .vxp-sound-on{display:none}.vxp-roundbtn[aria-pressed="true"]{color:#ffc857;border-color:rgba(255,200,87,.32);background:rgba(255,200,87,.075);box-shadow:0 0 22px rgba(249,115,22,.08),inset 0 1px 0 rgba(255,255,255,.04)}
.vxp-roundbtn[aria-pressed="true"] .vxp-sound-on{display:block}.vxp-roundbtn[aria-pressed="true"] .vxp-sound-off{display:none}.vxp-help{font:800 15px/1 var(--display)}
.vxp-chain{height:40px!important;border-radius:11px!important}.vxp-connect{height:42px!important;border-radius:11px!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.vx-portalbar .vx-podbtn{height:42px!important;min-height:42px!important}

/* ---------------------------- game identity ------------------------------ */
.vxp-gamehead{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:92px;padding:15px 18px 15px 21px;margin:0 0 10px;border:1px solid rgba(255,190,76,.12);border-radius:17px;background:
  radial-gradient(circle at 82% 50%,rgba(249,115,22,.075),transparent 31%),linear-gradient(150deg,rgba(22,16,10,.8),rgba(10,8,6,.65));box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.vxp-gamehead::after{content:"";position:absolute;right:-80px;top:-130px;width:330px;height:330px;border-radius:50%;border:1px solid rgba(255,200,87,.055);box-shadow:0 0 80px rgba(249,115,22,.035)}
.vxp-gamecopy{min-width:0;position:relative;z-index:1}.vxp-gameid{display:block;font:700 8px/1 var(--mono);letter-spacing:.16em;color:#9c8059;text-transform:uppercase}.vxp-gamecopy h1{margin:5px 0 4px;font:850 clamp(24px,2.05vw,34px)/1 var(--display);letter-spacing:-.055em;color:#f7ead7}.vxp-gamecopy p{margin:0;max-width:740px;color:#968673;font-size:10.5px;line-height:1.48}
.vxp-gamechips{position:relative;z-index:1;display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.vxp-gamechips>span{min-height:38px;padding:0 11px;display:flex;align-items:center;gap:7px;border-radius:11px;border:1px solid rgba(255,255,255,.06);background:rgba(0,0,0,.2);color:#b8a58d;font-size:9.5px;font-weight:650;white-space:nowrap}.vxp-gamechips>span.hot{border-color:rgba(255,200,87,.22);background:linear-gradient(180deg,rgba(255,200,87,.075),rgba(249,115,22,.035));color:#f1d49b}.vxp-gamechips img{width:23px;height:23px;object-fit:contain}.vxp-gamechips .vx-ethmark{width:17px;height:17px;color:#bdc7d3}
.vxp-gamehead-lucky{background:radial-gradient(circle at 80% 45%,rgba(77,173,106,.075),transparent 28%),radial-gradient(circle at 8% 10%,rgba(255,200,87,.055),transparent 32%),linear-gradient(150deg,rgba(19,17,10,.84),rgba(8,9,6,.67))}

/* ---------------------------- live information --------------------------- */
.vx-ticker{min-height:44px!important;margin-bottom:10px!important;border:1px solid rgba(255,255,255,.045)!important;background:linear-gradient(180deg,rgba(13,10,7,.78),rgba(8,7,5,.68))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.vx-ticker .vx-seg{min-height:42px!important;padding-left:13px!important;padding-right:13px!important}.vx-ticker .vx-seg small{color:#736552!important}.vx-ticker .vx-seg b{font-size:10.5px!important}

/* ------------------------------- Hunt ------------------------------------ */
.vx-stagewrap{padding:7px!important;border-radius:19px!important;border-color:rgba(255,190,76,.14)!important;background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.012))!important;box-shadow:0 30px 85px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.035)!important}
.vx-stage{min-height:min(690px,calc(100svh - 205px))!important;max-height:830px!important;border-radius:14px!important;--vxp-mx:0px;--vxp-my:0px;isolation:isolate}
.vx-stage .vx-bgimg{transform:scale(1.018) translate3d(var(--vxp-mx),var(--vxp-my),0);transition:transform .22s ease-out;will-change:transform}
.vx-stage::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(180deg,rgba(2,2,1,.06),transparent 17%,transparent 72%,rgba(2,2,1,.22));box-shadow:inset 0 0 110px rgba(0,0,0,.32)}
.vxp-stagefx{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}.vxp-stagefx .dust,.vxp-stagefx .ember{position:absolute;border-radius:50%;opacity:.0;will-change:transform,opacity}.vxp-stagefx .dust{width:2px;height:2px;background:#ffd887;box-shadow:120px 60px 0 rgba(255,211,129,.6),260px 180px 0 rgba(255,176,72,.52),480px 90px 0 rgba(255,217,143,.44),740px 240px 0 rgba(255,169,52,.45),990px 130px 0 rgba(255,221,151,.35),1160px 330px 0 rgba(255,179,64,.42),1360px 160px 0 rgba(255,208,116,.36),1520px 420px 0 rgba(255,173,54,.4)}.vxp-stagefx .d1{left:3%;bottom:15%;animation:vxpDust 13s linear infinite}.vxp-stagefx .d2{left:16%;bottom:2%;transform:scale(.7);animation:vxpDust 17s 3s linear infinite}.vxp-stagefx .ember{width:3px;height:3px;background:#ff9e32;box-shadow:120px 80px 0 #ffb34f,350px 170px 0 rgba(255,132,39,.75),690px 120px 0 rgba(255,178,62,.74),940px 240px 0 rgba(255,137,39,.74),1240px 90px 0 rgba(255,180,64,.6)}.vxp-stagefx .e1{left:10%;bottom:8%;animation:vxpEmber 7s ease-out infinite}.vxp-stagefx .e2{left:26%;bottom:12%;transform:scale(.7);animation:vxpEmber 9s 2.4s ease-out infinite}.vxp-stagefx .scan{position:absolute;left:-20%;right:-20%;top:42%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,200,87,.08),transparent);filter:blur(.5px);opacity:.3;animation:vxpScan 8s ease-in-out infinite}
@keyframes vxpDust{0%{opacity:0;transform:translate3d(0,40px,0)}15%{opacity:.42}75%{opacity:.18}100%{opacity:0;transform:translate3d(30px,-340px,0)}}
@keyframes vxpEmber{0%{opacity:0;transform:translate3d(0,30px,0) scale(.6)}18%{opacity:.75}100%{opacity:0;transform:translate3d(35px,-250px,0) scale(1.1)}}
@keyframes vxpScan{0%,100%{transform:translateY(-220px);opacity:0}35%,65%{opacity:.28}50%{transform:translateY(260px)}}

.vx-hud{z-index:12!important;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.vx-hud-pool{min-width:230px!important}.vx-hudbig{font-size:clamp(23px,2vw,34px)!important}.vx-hud-clock{padding:9px 12px!important}
.vx-ethplate{z-index:9!important;filter:drop-shadow(0 15px 35px rgba(0,0,0,.5));transition:filter .3s,transform .3s}.vx-ethplate:hover{filter:drop-shadow(0 18px 42px rgba(255,144,28,.16));transform:translate(-50%,-51%) scale(1.018)}

/* Motherlodes should read as two real jackpot pots, not tiny metadata. */
.vx-hud-motherlode{min-width:390px!important;padding:10px 11px!important;gap:10px!important;border-color:rgba(255,200,87,.28)!important;background:linear-gradient(145deg,rgba(28,18,9,.9),rgba(10,8,6,.84))!important;box-shadow:0 18px 42px rgba(0,0,0,.42),0 0 32px rgba(249,115,22,.075)!important}
.vx-hud-motherlode>img{width:58px!important;height:58px!important;filter:drop-shadow(0 5px 18px rgba(255,160,34,.25))}.vx-mlcopy{min-width:0;flex:1}.vxp-mltitle{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin-bottom:7px!important}.vxp-mltitle>span{font:700 7.5px/1 var(--mono);letter-spacing:.11em;color:#a98a5c}.vxp-mltitle>b{font:750 11px/1 var(--display);color:#f3c464!important}
.vx-mldraws{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important}.vx-mldraws>span{position:relative!important;display:grid!important;grid-template-columns:8px minmax(0,1fr)!important;align-items:center!important;min-width:0!important;padding:8px 9px!important;border:1px solid rgba(255,255,255,.065)!important;border-radius:10px!important;background:rgba(255,255,255,.025)!important}.vx-mldraws>span:first-child{border-color:rgba(255,200,87,.13)!important}.vx-mldraws>span:last-child{border-color:rgba(249,115,22,.18)!important;background:linear-gradient(150deg,rgba(249,115,22,.055),rgba(255,255,255,.018))!important}.vx-mldraws>span>i{width:5px!important;height:28px!important;border-radius:99px!important}.vx-mldraws>span em{display:flex!important;flex-direction:column!important;min-width:0}.vx-mldraws>span b{font:800 14px/1.05 var(--display)!important;color:#ffcf70!important;white-space:nowrap}.vx-mldraws>span small{font-size:7.5px!important;margin-top:3px!important;color:#9a866d!important;white-space:nowrap}
.vxp-jackpot-hot .vx-hud-motherlode{animation:vxpJackpotGlow 2.8s ease-in-out infinite}@keyframes vxpJackpotGlow{50%{box-shadow:0 20px 48px rgba(0,0,0,.46),0 0 46px rgba(249,115,22,.14)}}

/* The new canvas gives gameplay, not chrome, the extra space. */
.vx-deckrow{grid-template-columns:minmax(0,2.35fr) minmax(290px,.78fr)!important;gap:13px!important;margin-top:13px!important}.vx-deck{padding:18px!important}.vx-quickforge{min-height:100%!important}.vx-strip{grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:9px!important}.vx-strip .vx-cell{min-height:104px!important}.vx-strip .vx-cell img{width:44px!important;height:44px!important}.vx-grindrow{gap:13px!important}

/* ---------------------------- Lucky Vein --------------------------------- */
.vx-lwrap{padding:7px!important;border-radius:19px!important;box-shadow:0 30px 80px rgba(0,0,0,.33)!important}.vx-lstage{min-height:min(665px,calc(100svh - 220px))!important;max-height:800px!important;border-radius:14px!important;--vxp-mx:0px;--vxp-my:0px;isolation:isolate}.vx-lstage .vx-lbg{transform:scale(1.018) translate3d(var(--vxp-mx),var(--vxp-my),0);transition:transform .22s ease-out;will-change:transform}.vxp-luckyfx .ember{background:#ffc659;box-shadow:140px 60px 0 #84d49b,390px 170px 0 rgba(255,180,71,.75),720px 120px 0 rgba(99,199,130,.6),1020px 240px 0 rgba(255,179,69,.72),1280px 90px 0 rgba(93,189,122,.55)}
.vx-lstats{z-index:12!important;gap:9px!important}.vx-lstat{min-width:180px!important;padding:11px 12px!important;border-radius:12px!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.vx-lstat-jack{border-color:rgba(255,200,87,.3)!important;box-shadow:0 0 28px rgba(255,200,87,.07)!important}.vx-lstat-jack b{font-size:19px!important}.vx-lstat-pot b{font-size:17px!important}.vx-lstat-burn{border-color:rgba(249,115,22,.18)!important}.vx-lconsole-shell{margin-top:13px!important}.vx-lhud{border-radius:17px!important}.vx-hist{margin-top:13px!important}

/* ---------------------------- Stock Drops -------------------------------- */
.vxs-hero{min-height:290px!important;border-radius:22px!important;padding:clamp(30px,4vw,58px)!important;background:
  radial-gradient(circle at 77% 43%,rgba(34,197,94,.14),transparent 25%),radial-gradient(circle at 12% 0%,rgba(255,200,87,.11),transparent 35%),linear-gradient(145deg,#1b140d,#0b0906 75%)!important;box-shadow:0 28px 80px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.055)!important}
.vxs-hero::before{content:"";position:absolute;right:clamp(230px,24vw,440px);bottom:-42px;width:138px;height:116px;opacity:.17;background:url('assets/vein/ic-chest.webp') center/contain no-repeat;filter:drop-shadow(0 15px 30px rgba(249,115,22,.25));animation:vxpCrate 4.5s ease-in-out infinite}@keyframes vxpCrate{50%{transform:translateY(-7px) rotate(-1deg);opacity:.28}}
.vxs-copy h2{font-size:clamp(39px,4vw,64px)!important}.vxs-copy p{max-width:650px!important;font-size:13px!important}.vxs-threshold{padding:20px 22px!important;min-width:245px!important}.vxs-threshold b{font-size:28px!important}.vxs-flow{gap:10px!important}.vxs-flow>span{min-height:92px!important;padding:14px 15px!important}.vxs-card{padding:24px!important}.vxs-state{min-height:250px!important}.vxs-assets{gap:10px!important}.vxs-asset{min-height:112px!important;justify-content:center!important}.vxs-assetmark{width:44px!important;height:44px!important}.vxs-history{padding:24px!important}

/* -------------------------- Vault & Workshop ------------------------------ */
.vx-pagehead{padding:20px 22px;margin-bottom:13px!important;border:1px solid rgba(255,190,76,.105);border-radius:17px;background:linear-gradient(150deg,rgba(21,16,10,.72),rgba(9,7,5,.52))}.vx-pagehead h2{font-size:clamp(27px,2.5vw,40px)!important}.vx-pagehead p{max-width:620px!important}.vx-vgrid{gap:13px!important}.vx-vault{padding:22px!important;min-height:390px}.vx-vault>header img{width:62px!important;height:62px!important}.vx-compound{padding:22px!important}.vx-items{gap:13px!important}.vx-item{min-height:430px!important}

/* --------------------------- floating socials ----------------------------- */
.vxp-socialrail{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:9390;display:flex;flex-direction:column;gap:8px}
.vxp-socialrail a{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;color:#a99882;text-decoration:none;border:1px solid rgba(255,190,76,.14);background:linear-gradient(150deg,rgba(20,15,10,.86),rgba(8,7,5,.88));backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 14px 34px rgba(0,0,0,.36);transition:.18s}.vxp-socialrail a:hover{color:#ffc857;border-color:rgba(255,200,87,.34);transform:translateY(-2px);box-shadow:0 18px 40px rgba(0,0,0,.42),0 0 26px rgba(249,115,22,.08)}.vxp-socialrail svg{width:17px;height:17px}

/* ------------------------------ responsive -------------------------------- */
@media(min-width:1500px){.vx-stage{min-height:720px!important}.vx-lstage{min-height:700px!important}.vx-hud-motherlode{min-width:430px!important}.vx-mldraws>span b{font-size:15px!important}}
@media(max-width:1320px){.vx-strip{grid-template-columns:repeat(3,1fr)!important}.vxp-gamecopy p{max-width:560px}.vxp-gamechips>span{padding:0 9px}.vxp-roundbtn{width:38px;height:38px}.vxp-help{display:none}.vx-hud-motherlode{min-width:350px!important}.vx-stage{min-height:590px!important}}
@media(max-width:980px){
  .vx-shell{padding-bottom:76px!important}.vxp-gamehead{min-height:0;padding:14px 15px;align-items:flex-start}.vxp-gamecopy h1{font-size:27px}.vxp-gamecopy p{font-size:9.8px}.vxp-gamechips{max-width:320px}.vxp-gamechips>span{min-height:34px;font-size:8.5px}.vxp-roundbtn{width:38px;height:40px}.vxp-help{display:grid}
  .vx-stage{min-height:510px!important;max-height:none!important}.vx-lstage{min-height:540px!important;max-height:none!important}.vx-hud-motherlode{min-width:330px!important}.vx-deckrow{grid-template-columns:1fr!important}.vx-strip{grid-template-columns:repeat(3,1fr)!important}
  body[data-cw-chrome="portal"] .cwchat-trigger{left:12px!important;bottom:12px!important}.vxp-socialrail{right:12px;bottom:12px}
}
@media(max-width:700px){
  .vx-shell{padding-left:max(8px,env(safe-area-inset-left))!important;padding-right:max(8px,env(safe-area-inset-right))!important}.vx-portalbar{top:5px!important;min-height:58px!important;border-radius:14px!important}.vxp-help{display:none}.vxp-roundbtn{width:36px;height:38px}.vxp-gamehead{display:block;margin-bottom:7px;border-radius:14px;padding:13px 14px}.vxp-gamecopy h1{font-size:24px}.vxp-gamecopy p{font-size:9.5px;max-width:none}.vxp-gamechips{justify-content:flex-start;margin-top:10px;max-width:none;gap:5px}.vxp-gamechips>span{min-height:31px;padding:0 8px;font-size:8px}.vxp-gamechips img{width:19px;height:19px}.vxp-gamechips .vx-ethmark{width:14px;height:14px}
  .vx-ticker{margin-bottom:7px!important}.vx-stagewrap,.vx-lwrap{padding:4px!important;border-radius:14px!important}.vx-stage{min-height:390px!important;max-height:68svh!important;border-radius:11px!important}.vx-lstage{min-height:430px!important;max-height:72svh!important;border-radius:11px!important}.vx-hud-motherlode{min-width:0!important;width:calc(100% - 18px)!important;left:9px!important;right:9px!important;bottom:8px!important;padding:7px 8px!important}.vx-hud-motherlode>img{width:42px!important;height:42px!important}.vxp-mltitle{margin-bottom:5px!important}.vxp-mltitle>span{font-size:6.5px}.vxp-mltitle>b{font-size:9px}.vx-mldraws>span{padding:6px 7px!important}.vx-mldraws>span b{font-size:11px!important}.vx-mldraws>span small{font-size:6.5px!important}.vx-strip{display:flex!important;overflow-x:auto!important;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:2px}.vx-strip::-webkit-scrollbar{display:none}.vx-strip .vx-cell{flex:0 0 190px;scroll-snap-align:start;min-height:92px!important}
  .vx-pagehead{padding:16px;border-radius:14px}.vx-pagehead h2{font-size:24px!important}.vx-vault{padding:17px!important;min-height:0}.vxs-hero{min-height:0!important;padding:24px 17px!important;border-radius:16px!important}.vxs-hero::before{right:-28px;bottom:-18px;width:110px;height:90px}.vxs-copy h2{font-size:38px!important}.vxs-card,.vxs-history{padding:16px!important}
  body[data-cw-chrome="portal"] .cwchat-trigger{width:42px!important;height:42px!important;padding:0!important;border-radius:13px!important;justify-content:center!important}body[data-cw-chrome="portal"] .cwchat-trigger span{display:none!important}body[data-cw-chrome="portal"] .cwchat-trigger .dot{position:absolute;right:6px;top:6px;width:6px!important;height:6px!important}.vxp-socialrail a{width:38px;height:38px;border-radius:12px}.vxp-socialrail svg{width:15px;height:15px}
}
@media(max-width:430px){.vxp-gamechips>span:nth-child(3){display:none}.vx-stage{min-height:330px!important}.vx-lstage{min-height:390px!important}.vx-hud-motherlode>img{display:none}.vx-mldraws{width:100%}.vx-strip .vx-cell{flex-basis:170px}.vxp-socialrail{gap:6px}.vxp-socialrail a{width:35px;height:35px}.vxp-socialrail svg{width:14px;height:14px}}

@media(prefers-reduced-motion:reduce){.vxp-stagefx *,.vxs-hero::before,.vxp-jackpot-hot .vx-hud-motherlode{animation:none!important}.vx-stage .vx-bgimg,.vx-lstage .vx-lbg,.vxp-socialrail a,.vxp-roundbtn{transition:none!important}}

/* ========================================================================== 
   REV14 · live economy + concise guide + six-route portal
   ========================================================================== */

/* Global economy ribbon: always visible, but the three facts change with the
   active room. OIX price is mirrored from the real swap pool readout. */
.vxp-economybar{display:grid;grid-template-columns:minmax(225px,1.08fr) repeat(4,minmax(132px,.67fr));gap:7px;margin:0 0 9px;padding:7px;border:1px solid rgba(255,190,76,.105);border-radius:14px;background:linear-gradient(180deg,rgba(16,12,8,.76),rgba(9,7,5,.68));box-shadow:inset 0 1px 0 rgba(255,255,255,.025);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.vxp-econprice,.vxp-econfact{position:relative;min-width:0;min-height:54px;display:flex;align-items:center;padding:8px 11px;border:1px solid rgba(255,255,255,.045);border-radius:10px;background:rgba(255,255,255,.018);overflow:hidden}
.vxp-econprice{gap:10px;background:radial-gradient(circle at 0 50%,rgba(255,200,87,.075),transparent 45%),rgba(255,255,255,.018)}
.vxp-econicon{width:35px;height:35px;display:grid;place-items:center;flex:none;border-radius:10px;border:1px solid rgba(255,200,87,.14);background:rgba(255,200,87,.05)}.vxp-econicon img{width:25px;height:25px;object-fit:contain;filter:drop-shadow(0 5px 10px rgba(249,115,22,.18))}
.vxp-econprice>span:last-child,.vxp-econfact{flex-direction:column;align-items:flex-start;justify-content:center;gap:2px}.vxp-econprice small,.vxp-econfact small{font:700 7px/1 var(--mono);letter-spacing:.13em;color:#776854;text-transform:uppercase}.vxp-econprice b,.vxp-econfact b{font:800 14px/1.15 var(--display);letter-spacing:-.035em;color:#f1dfc5}.vxp-econprice b{color:#ffca63}.vxp-econprice em,.vxp-econfact em{max-width:100%;font:500 7.5px/1.2 var(--mono);font-style:normal;color:#786b5b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vxp-econfact::before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:2px;border-radius:2px;background:linear-gradient(#ffc857,#f97316);opacity:.36}.vxp-economybar[data-room="lucky"] .vxp-econfact::before{background:linear-gradient(#86e8a1,#e6c356)}.vxp-economybar[data-room="stock"] .vxp-econfact::before{background:linear-gradient(#6be193,#ffc857)}.vxp-economybar[data-room="vault"] .vxp-econfact::before{background:linear-gradient(#ffc857,#947449)}.vxp-economybar[data-room="forge"] .vxp-econfact::before{background:linear-gradient(#ff9d45,#ff5f38)}

/* How It Works is a fast game guide, not a second website. */
.vxp-howmask{position:fixed;inset:0;z-index:2147483643;display:flex;justify-content:flex-end;background:rgba(3,2,1,.66);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:1;transition:opacity .2s}.vxp-howmask[hidden]{display:none!important}
.vxp-howdrawer{width:min(720px,100%);height:100%;overflow:auto;padding:clamp(20px,3vw,34px);border-left:1px solid rgba(255,190,76,.2);background:radial-gradient(circle at 80% 0,rgba(249,115,22,.11),transparent 28%),linear-gradient(160deg,#18110b,#0a0806 64%);box-shadow:-35px 0 100px rgba(0,0,0,.58);animation:vxpHowIn .26s cubic-bezier(.2,.75,.2,1) both}@keyframes vxpHowIn{from{transform:translateX(34px);opacity:.55}to{transform:none;opacity:1}}
.vxp-howhead{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:19px;border-bottom:1px solid rgba(255,255,255,.06)}.vxp-howhead h2{margin:7px 0 4px;font:850 clamp(28px,3vw,42px)/1 var(--display);letter-spacing:-.055em;color:#f5e6cf}.vxp-howhead p{margin:0;color:#8e7e69;font-size:11px}.vxp-howclose{width:40px;height:40px;display:grid;place-items:center;flex:none;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);color:#bca98f;font:400 25px/1 var(--sans);cursor:pointer;transition:.16s}.vxp-howclose:hover{color:#ffc857;border-color:rgba(255,200,87,.3);background:rgba(255,200,87,.05)}
.vxp-howgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}.vxp-howgrid article{position:relative;min-height:154px;display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding:15px;border:1px solid rgba(255,255,255,.055);border-radius:14px;background:linear-gradient(145deg,rgba(255,255,255,.026),rgba(0,0,0,.1));box-shadow:inset 0 1px 0 rgba(255,255,255,.018)}.vxp-howgrid article:hover{border-color:rgba(255,200,87,.15);background:linear-gradient(145deg,rgba(255,200,87,.035),rgba(0,0,0,.1))}.vxp-howgrid article>img{width:48px;height:48px;object-fit:contain;filter:drop-shadow(0 8px 13px rgba(249,115,22,.13))}.vxp-howstep{position:absolute;right:10px;top:10px;font:700 7px/1 var(--mono);letter-spacing:.12em;color:#5f5140}.vxp-howgrid h3{margin:1px 0 6px;font:800 15px/1.05 var(--display);letter-spacing:-.035em;color:#eadbc4}.vxp-howgrid p{margin:0;color:#8f806c;font-size:9.5px;line-height:1.48}.vxp-howgrid small{display:block;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.045);font:500 7.5px/1.45 var(--mono);color:#786a59}.vxp-howgrid small b{color:#e4bf76}.vxp-howtruth{margin-top:10px;display:flex;align-items:flex-start;gap:12px;padding:14px 15px;border:1px solid rgba(34,197,94,.11);border-radius:13px;background:rgba(34,197,94,.025)}.vxp-howtruth b{flex:none;font:750 10px var(--display);color:#bcd7bc}.vxp-howtruth span{font-size:9px;line-height:1.45;color:#7f8d7e}

/* Trade OIX is a first-class route again. Its existing swap engine remains
   fail-closed until the configured on-chain liquidity pool is actually live. */
.vx-view[data-view="trade"]{padding-top:4px}.vx-portalbar .vx-tabs button[data-view="trade"]::after{content:"↔";font:700 9px var(--mono);opacity:.42;margin-left:1px}.vx-portalbar .vx-tabs button[data-view="trade"].on::after{opacity:.72}

/* The guide button must remain reachable on phones too. */
@media(max-width:1320px){.vxp-help{display:grid!important}}
@media(max-width:980px){.vxp-economybar{display:flex;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;padding:6px}.vxp-economybar::-webkit-scrollbar{display:none}.vxp-econprice{flex:0 0 230px;scroll-snap-align:start}.vxp-econfact{flex:0 0 185px;scroll-snap-align:start}.vxp-howdrawer{width:min(680px,100%)}}
@media(max-width:700px){.vxp-help{display:grid!important}.vxp-economybar{margin-bottom:7px;border-radius:12px}.vxp-econprice,.vxp-econfact{min-height:48px;padding:7px 9px}.vxp-econprice{flex-basis:205px}.vxp-econfact{flex-basis:160px}.vxp-econicon{width:31px;height:31px}.vxp-econicon img{width:22px;height:22px}.vxp-econprice b,.vxp-econfact b{font-size:12px}.vxp-howdrawer{padding:16px}.vxp-howgrid{grid-template-columns:1fr}.vxp-howgrid article{min-height:0;grid-template-columns:44px minmax(0,1fr);padding:13px}.vxp-howgrid article>img{width:40px;height:40px}.vxp-howhead h2{font-size:30px}.vxp-howtruth{display:block}.vxp-howtruth b{display:block;margin-bottom:5px}}
@media(max-width:430px){.vxp-econprice{flex-basis:190px}.vxp-econfact{flex-basis:148px}.vxp-econprice em,.vxp-econfact em{font-size:6.8px}.vxp-howdrawer{padding:14px}.vxp-howhead{padding-bottom:14px}}
@media(prefers-reduced-motion:reduce){.vxp-howdrawer{animation:none!important}}

.vxp-econ-yield{border-color:rgba(255,200,87,.08);background:radial-gradient(circle at 100% 50%,rgba(255,200,87,.045),transparent 55%),rgba(255,255,255,.018)}.vxp-econ-yield b{color:#ddb872}

/* ========================================================================== 
   REV15 · Robinhood-only live portal polish
   ========================================================================== */

/* Independent audio channels. Both are visibly ON by default; the browser's
   first user gesture unlocks playback. */
.vxp-roundbtn .vxp-audio-on{display:none}.vxp-roundbtn .vxp-audio-off{display:block}
.vxp-roundbtn[aria-pressed="true"] .vxp-audio-on{display:block}.vxp-roundbtn[aria-pressed="true"] .vxp-audio-off{display:none}
.vxp-roundbtn[aria-pressed="false"]{color:#6f6252;border-color:rgba(255,255,255,.055);background:rgba(255,255,255,.018);box-shadow:inset 0 1px 0 rgba(255,255,255,.018)}
#vxp-music,#vxp-sfx,[data-vxp-how],body[data-cw-chrome="portal"] .cwchat-trigger,body[data-cw-chrome="portal"] .cwchat-drawer{pointer-events:auto!important;opacity:1!important}
#vxp-music.vx-locked,#vxp-sfx.vx-locked,[data-vxp-how].vx-locked,.cwchat-trigger.vx-locked{filter:none!important;cursor:pointer!important}

/* Robinhood is the only network language inside The Vein. */
.vxp-chain img{width:15px;height:15px;object-fit:contain;filter:drop-shadow(0 3px 7px rgba(34,197,94,.16))}
body[data-cw-chrome="portal"] .cwl-badge,body[data-cw-chrome="portal"] #vxu-topen{display:none!important}

/* The five economic facts are global and remain beneath the game menu while
   rooms change. This intentionally replaces room-specific pool-fee clutter. */
.vxp-economybar{position:sticky;top:84px;z-index:890;margin-bottom:10px!important;background:linear-gradient(180deg,rgba(17,12,8,.94),rgba(8,6,4,.91))!important;box-shadow:0 14px 35px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.025)!important}
.vxp-econfact::before{opacity:.55!important}.vxp-econ-yield::before{background:linear-gradient(#79e6a0,#d8b85b)!important}.vxp-econ-stock::before{background:linear-gradient(#6be193,#ffc857)!important}.vxp-econ-era::before{background:linear-gradient(#ffca63,#f97316)!important}.vxp-econ-lode::before{background:linear-gradient(#ff8b30,#ffca63)!important}
.vxp-econ-yield b{color:#aee5b8!important}.vxp-econ-stock b{color:#8de2aa!important}.vxp-econ-era b{color:#f4d38d!important}.vxp-econ-lode b{color:#ffb64e!important}
.vxp-econ-stock b,.vxp-econ-era b{font-family:var(--mono)!important;font-size:12.5px!important;letter-spacing:.02em!important}

/* Dynamic Era comes first inside How It Works and visibly moves as the era
   advances. Benefits and burn utility are immediately below it. */
.vxp-era-card{position:relative;overflow:hidden;display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:15px;margin:18px 0 10px;padding:15px 17px;border:1px solid rgba(255,194,77,.18);border-radius:16px;background:radial-gradient(circle at 9% 50%,rgba(255,167,42,.11),transparent 28%),linear-gradient(145deg,rgba(31,20,11,.78),rgba(11,8,5,.72));box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 18px 45px rgba(0,0,0,.18)}
.vxp-era-card::after{content:"";position:absolute;inset:-70% -15%;pointer-events:none;background:linear-gradient(105deg,transparent 42%,rgba(255,211,112,.06) 50%,transparent 58%);animation:vxpEraSweep 5.5s ease-in-out infinite}@keyframes vxpEraSweep{0%,55%{transform:translateX(-38%)}100%{transform:translateX(38%)}}
.vxp-era-orb{position:relative;z-index:1;width:58px;height:58px;display:grid;place-items:center;border-radius:17px;border:1px solid rgba(255,200,87,.18);background:radial-gradient(circle,rgba(255,200,87,.12),rgba(249,115,22,.02));box-shadow:0 0 30px rgba(249,115,22,.09)}.vxp-era-orb img{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(249,115,22,.26))}
.vxp-era-copy{position:relative;z-index:1;min-width:0}.vxp-era-copy>small,.vxp-era-release small{display:block;font:700 7px/1 var(--mono);letter-spacing:.14em;color:#8c785e}.vxp-era-copy>b{display:block;margin:5px 0 3px;font:850 19px/1 var(--display);letter-spacing:-.04em;color:#f5dfba}.vxp-era-copy>span{font:500 8px/1.3 var(--mono);color:#96816a}.vxp-era-track{height:6px;margin-top:9px;overflow:hidden;border:1px solid rgba(255,255,255,.055);border-radius:99px;background:#080604}.vxp-era-track i{display:block;width:0;height:100%;border-radius:99px;background:linear-gradient(90deg,#f97316,#ffc857,#ffdf8c);box-shadow:0 0 13px rgba(255,200,87,.28);transition:width .7s ease}
.vxp-era-release{position:relative;z-index:1;min-width:112px;padding-left:15px;border-left:1px solid rgba(255,255,255,.06)}.vxp-era-release b{display:block;margin:5px 0 2px;font:800 15px/1 var(--display);color:#ffc857}.vxp-era-release span{font:500 7px/1.25 var(--mono);color:#756654}
.vxp-benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:9px 0}.vxp-benefits article{min-width:0;display:flex;align-items:center;gap:10px;padding:11px;border:1px solid rgba(255,255,255,.052);border-radius:12px;background:linear-gradient(145deg,rgba(255,255,255,.027),rgba(0,0,0,.09))}.vxp-benefits img{width:34px;height:34px;flex:none;object-fit:contain;filter:drop-shadow(0 6px 10px rgba(249,115,22,.14))}.vxp-benefits span{min-width:0}.vxp-benefits b{display:block;font:750 11px/1.1 var(--display);color:#e9d7bd}.vxp-benefits small{display:block;margin-top:4px;font-size:8px;line-height:1.35;color:#82725f}
.vxp-burnmap{margin:9px 0 12px;padding:13px;border:1px solid rgba(239,68,68,.11);border-radius:14px;background:radial-gradient(circle at 0 0,rgba(249,115,22,.07),transparent 35%),rgba(255,255,255,.015)}.vxp-burnmap header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.045)}.vxp-burnmap header>span{display:flex;align-items:center;gap:8px}.vxp-burnmap header img{width:27px;height:27px;object-fit:contain}.vxp-burnmap header b{font:750 10px var(--display);color:#efb17c}.vxp-burnmap header>small{max-width:330px;text-align:right;font-size:8px;line-height:1.35;color:#7e6c5e}.vxp-burnmap>div{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:9px}.vxp-burnmap>div>span{padding:8px 9px;border-radius:9px;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.035)}.vxp-burnmap>div b{display:block;font-size:9px;color:#d6b299}.vxp-burnmap>div small{display:block;margin-top:3px;font-size:7.5px;line-height:1.35;color:#76685a}

/* Stock Drops are presented as a premium loot/reward room, not a generic data
   table. The existing live distributor/claim wiring remains untouched. */
.vx-view[data-view="stock"]{position:relative}.vxs-hero{overflow:hidden!important;position:relative!important;border-color:rgba(96,224,140,.13)!important;background:radial-gradient(circle at 82% 50%,rgba(34,197,94,.09),transparent 30%),radial-gradient(circle at 6% 0,rgba(255,200,87,.08),transparent 34%),linear-gradient(145deg,rgba(22,17,11,.82),rgba(7,8,6,.74))!important;box-shadow:0 28px 75px rgba(0,0,0,.26),inset 0 1px 0 rgba(255,255,255,.03)!important}
.vxs-copy h2{font-size:clamp(35px,4vw,58px)!important}.vxs-copy h2 em{color:#87dca5!important}.vxs-hero-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.vxs-hero-tags span{padding:6px 9px;border:1px solid rgba(103,218,144,.13);border-radius:99px;background:rgba(34,197,94,.035);font:650 7.5px/1 var(--mono);letter-spacing:.07em;color:#96c9a6;text-transform:uppercase}
.vxs-dropvault{min-width:min(510px,45vw);display:grid;grid-template-columns:minmax(210px,1.1fr) minmax(185px,.9fr);gap:9px;align-items:stretch}.vxs-crate{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;padding:14px;border:1px solid rgba(255,200,87,.17);border-radius:15px;background:radial-gradient(circle at 18% 50%,rgba(255,192,72,.105),transparent 34%),rgba(0,0,0,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}.vxs-crate::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 35%,rgba(255,220,140,.055) 49%,transparent 63%);transform:translateX(-80%);animation:vxsCrateSweep 5s ease-in-out infinite}@keyframes vxsCrateSweep{0%,55%{transform:translateX(-80%)}100%{transform:translateX(80%)}}
.vxs-crate img{position:relative;z-index:1;width:62px;height:62px;object-fit:contain;filter:drop-shadow(0 12px 18px rgba(249,115,22,.25))}.vxs-crate span{position:relative;z-index:1;min-width:0}.vxs-crate small{display:block;font:700 7px var(--mono);letter-spacing:.14em;color:#8f765b}.vxs-crate b{display:block;margin:5px 0 2px;font:850 21px/1 var(--mono);letter-spacing:-.02em;color:#ffc857}.vxs-crate em{display:block;font:500 7.5px var(--mono);font-style:normal;color:#776955}.vxs-threshold{margin:0!important;min-width:0!important;border-color:rgba(34,197,94,.13)!important;background:linear-gradient(145deg,rgba(34,197,94,.05),rgba(0,0,0,.18))!important}.vxs-threshold b{color:#a5e8bb!important}
.vxs-card,.vxs-history{border-color:rgba(255,255,255,.06)!important;box-shadow:0 22px 58px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.025)!important}.vxs-asset{position:relative;overflow:hidden;min-height:94px;justify-content:center;background:linear-gradient(150deg,rgba(255,255,255,.032),rgba(0,0,0,.11))!important;transition:transform .17s,border-color .17s,background .17s!important}.vxs-asset:hover{transform:translateY(-2px);border-color:rgba(113,224,151,.2)!important;background:linear-gradient(150deg,rgba(34,197,94,.05),rgba(255,200,87,.025))!important}.vxs-assetmark{width:42px!important;height:42px!important;border-radius:12px!important;box-shadow:0 7px 16px rgba(0,0,0,.18)}

/* Chat belongs to the game world and must remain reachable in launch preview. */
body[data-cw-chrome="portal"] .cwchat-trigger{z-index:2147483000!important}
body[data-cw-chrome="portal"] .cwchat-drawer{z-index:2147483001!important}

@media(max-width:980px){.vxp-economybar{top:73px}.vxs-dropvault{min-width:0;width:100%;grid-template-columns:1fr 1fr}.vxp-benefits{grid-template-columns:repeat(2,1fr)}.vxp-burnmap>div{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.vxp-economybar{top:70px}.vxp-era-card{grid-template-columns:48px minmax(0,1fr);gap:11px;padding:12px}.vxp-era-orb{width:46px;height:46px;border-radius:13px}.vxp-era-orb img{width:34px;height:34px}.vxp-era-release{grid-column:1/-1;padding:10px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.05);display:flex;align-items:center;gap:8px}.vxp-era-release small,.vxp-era-release b,.vxp-era-release span{margin:0}.vxp-benefits{grid-template-columns:1fr 1fr}.vxp-benefits article{padding:9px}.vxp-burnmap header{display:block}.vxp-burnmap header>small{display:block;max-width:none;text-align:left;margin-top:5px}.vxs-dropvault{grid-template-columns:1fr}.vxs-crate{min-height:105px}}
@media(max-width:430px){.vxp-economybar{top:66px}.vxp-benefits{grid-template-columns:1fr}.vxp-burnmap>div{grid-template-columns:1fr}.vxs-hero-tags span{font-size:6.7px}.vxs-crate b{font-size:18px}}
@media(prefers-reduced-motion:reduce){.vxp-era-card::after,.vxs-crate::after{animation:none!important}}

/* Vault reinforces the same projected yield directly in its own first metric
   row. Five cards fit on wide screens, then collapse with the existing layout. */
.vx-vmetrics{grid-template-columns:repeat(5,1fr)!important}.vx-m-apr{border-color:rgba(98,222,143,.11)!important;background:radial-gradient(circle at 90% 10%,rgba(34,197,94,.065),transparent 36%),var(--glass)!important}.vx-m-apr b{color:#a9e8b9!important}
@media(max-width:1180px){.vx-vmetrics{grid-template-columns:repeat(3,1fr)!important}}
@media(max-width:700px){.vx-vmetrics{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:430px){.vx-vmetrics{grid-template-columns:1fr!important}}

/* ========================================================================== 
   REV16 · deeper player guide
   The ? drawer stays scannable at the top, then expands into the real economy
   and edge cases without turning the game surface into a litepaper.
   ========================================================================== */
.vxp-howdrawer{width:min(830px,100%)}
.vxp-guide-nav{position:sticky;top:-1px;z-index:4;display:flex;gap:6px;margin:13px -4px 4px;padding:8px 4px;background:linear-gradient(180deg,rgba(19,13,8,.97),rgba(16,11,7,.91) 76%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow-x:auto;scrollbar-width:none}
.vxp-guide-nav::-webkit-scrollbar{display:none}.vxp-guide-nav a{flex:0 0 auto;padding:7px 10px;border:1px solid rgba(255,255,255,.055);border-radius:999px;background:rgba(255,255,255,.022);color:#8d7d69;text-decoration:none;font:650 7.5px/1 var(--mono);letter-spacing:.095em;text-transform:uppercase;transition:.16s}.vxp-guide-nav a:hover{color:#ffc857;border-color:rgba(255,200,87,.2);background:rgba(255,200,87,.045)}
.vxp-emission-deep{position:relative;overflow:hidden;margin:10px 0 12px;padding:15px;border:1px solid rgba(255,200,87,.13);border-radius:15px;background:radial-gradient(circle at 92% 0,rgba(255,168,42,.075),transparent 34%),rgba(255,255,255,.015)}
.vxp-emission-deep>header>span{display:flex;align-items:center;gap:11px}.vxp-emission-deep>header img{width:39px;height:39px;object-fit:contain;filter:drop-shadow(0 7px 12px rgba(249,115,22,.18))}.vxp-emission-deep>header b{display:block;font:780 12px/1.2 var(--display);color:#ead9c1}.vxp-emission-deep>header small{display:block;margin-top:4px;max-width:610px;font-size:8.5px;line-height:1.45;color:#81715f}
.vxp-emission-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:13px}.vxp-emission-stats>span{min-width:0;padding:10px;border-radius:10px;border:1px solid rgba(255,255,255,.043);background:rgba(0,0,0,.17)}.vxp-emission-stats small{display:block;font:650 6.6px/1.1 var(--mono);letter-spacing:.085em;color:#726554}.vxp-emission-stats b{display:block;margin:6px 0 3px;font:760 11.5px/1 var(--display);color:#f3dba9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vxp-emission-stats em{display:block;font:500 6.9px/1.25 var(--mono);font-style:normal;color:#625749}
.vxp-emission-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:7px;margin-top:7px}.vxp-emission-flow>span{padding:8px 10px;border-radius:9px;background:rgba(255,255,255,.018);text-align:center}.vxp-emission-flow>b{}.vxp-emission-flow span b{display:block;font:800 12px var(--display);color:#d9c29d}.vxp-emission-flow span small{display:block;margin-top:2px;font-size:7px;color:#746655}.vxp-emission-flow span.hot b{color:#f18a63}.vxp-emission-flow>i{width:11px;height:1px;background:linear-gradient(90deg,rgba(255,200,87,.12),rgba(255,200,87,.55))}.vxp-emission-deep>p{margin:10px 1px 0;padding-top:10px;border-top:1px solid rgba(255,255,255,.04);font-size:8.7px;line-height:1.5;color:#827260}.vxp-emission-deep>p b{color:#d8bd94}
.vxp-loop{margin:10px 0 12px;padding:13px;border:1px solid rgba(255,255,255,.052);border-radius:14px;background:linear-gradient(145deg,rgba(255,200,87,.025),rgba(0,0,0,.1))}.vxp-loop>header{display:flex;align-items:end;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.04)}.vxp-loop>header>b{font:770 10px var(--display);color:#d8c6aa}.vxp-loop>div{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:9px}.vxp-loop>div>span{padding:9px;border-radius:10px;border:1px solid rgba(255,255,255,.035);background:rgba(0,0,0,.14)}.vxp-loop i{display:block;font:700 6.6px var(--mono);color:#c58c38;font-style:normal}.vxp-loop b{display:block;margin-top:4px;font-size:9px;color:#d8c5a8}.vxp-loop small{display:block;margin-top:4px;font-size:7.5px;line-height:1.35;color:#706351}
.vxp-burnmap strong{color:#f0bd73;font-weight:750}
.vxp-howgrid{scroll-margin-top:56px}.vxp-howgrid article{min-height:180px}.vxp-howgrid p{font-size:9.1px}.vxp-howgrid small{font-size:7.4px}
.vxp-whygrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:11px}.vxp-whygrid article{padding:12px 13px;border-radius:12px;border:1px solid rgba(255,255,255,.045);background:rgba(255,255,255,.018)}.vxp-whygrid b{font:760 9.5px var(--display);color:#d8c4a6}.vxp-whygrid p{margin:5px 0 0;font-size:8.1px;line-height:1.47;color:#766957}
.vxp-fair{margin-top:11px;padding:14px;border:1px solid rgba(34,197,94,.085);border-radius:14px;background:radial-gradient(circle at 0 0,rgba(34,197,94,.04),transparent 35%),rgba(255,255,255,.012);scroll-margin-top:56px}.vxp-fair header{display:flex;align-items:end;justify-content:space-between;gap:12px}.vxp-fair h3{margin:0;font:780 14px var(--display);color:#d5decf}.vxp-fair>div{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.vxp-fair>div>span{padding:10px;border:1px solid rgba(255,255,255,.035);border-radius:10px;background:rgba(0,0,0,.13)}.vxp-fair b{display:block;font-size:9px;color:#bdceb8}.vxp-fair small{display:block;margin-top:4px;font-size:7.6px;line-height:1.4;color:#74806f}
.vxp-guide-faq{display:grid;gap:6px;margin-top:11px}.vxp-guide-faq details{border:1px solid rgba(255,255,255,.045);border-radius:11px;background:rgba(255,255,255,.016);padding:0 11px}.vxp-guide-faq summary{padding:10px 22px 10px 0;cursor:pointer;list-style:none;position:relative;font:690 9px/1.35 var(--display);color:#cdb99c}.vxp-guide-faq summary::-webkit-details-marker{display:none}.vxp-guide-faq summary:after{content:"+";position:absolute;right:2px;top:9px;color:#9c7d4e;font:500 15px/1 var(--sans)}.vxp-guide-faq details[open] summary:after{content:"−"}.vxp-guide-faq p{margin:0;padding:0 0 11px;font-size:8.2px;line-height:1.5;color:#786a59}
#vxp-guide-start,#vxp-guide-emission,#vxp-guide-utility,#vxp-guide-fairness{scroll-margin-top:56px}
@media(max-width:980px){.vxp-howdrawer{width:min(790px,100%)}.vxp-emission-stats{grid-template-columns:repeat(3,1fr)}.vxp-loop>div{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.vxp-guide-nav{margin-left:-2px;margin-right:-2px}.vxp-emission-stats{grid-template-columns:1fr 1fr}.vxp-emission-flow{grid-template-columns:1fr}.vxp-emission-flow>i{display:none}.vxp-loop>header{display:block}.vxp-loop>header>b{display:block;margin-top:5px;line-height:1.35}.vxp-loop>div,.vxp-whygrid,.vxp-fair>div{grid-template-columns:1fr}.vxp-howgrid article{min-height:0}.vxp-emission-deep>header>span{align-items:flex-start}}
@media(max-width:430px){.vxp-emission-stats{grid-template-columns:1fr}.vxp-benefits{grid-template-columns:1fr}.vxp-emission-deep{padding:12px}.vxp-guide-nav a{padding:6px 8px;font-size:7px}}
@media(prefers-reduced-motion:reduce){.vxp-liveon.syncing i{animation:none!important}}

/* ===== vein-cinematic.css ===== */
/* ==========================================================================
   CaveWatch · The Vein · Cinematic polish REV17
   Cosmetic state only: no contract writes, odds, reward math or wallet logic.
   ========================================================================== */
:root{
  --vxc-green:#35df73;--vxc-gold:#ffc857;--vxc-amber:#f59e0b;--vxc-blue:#70d8ff;
  --vxc-red:#e65c47;--vxc-cubic:cubic-bezier(.2,.8,.2,1)
}
body{--vxc-room-accent:255,180,65}
body[data-vxp-view="lucky"]{--vxc-room-accent:255,145,32}
body[data-vxp-view="stock"]{--vxc-room-accent:52,223,115}
body[data-vxp-view="vault"]{--vxc-room-accent:95,182,255}
body[data-vxp-view="forge"]{--vxc-room-accent:255,151,34}
body[data-vxp-view="trade"]{--vxc-room-accent:81,207,255}

/* Brand: The Vein deliberately carries the Robinhood-green accent. */
.brand small,.vxp-brand small{color:var(--vxc-green)!important;text-shadow:0 0 15px rgba(53,223,115,.18)}

/* -------------------------- micro interaction language -------------------- */
.vx-btn,.vxs-btn,.vxs-ticket button,.vx-tabs button,.vx-sq,.vxp-wallet,.vxs-qbtn,.vx-quick button,.vx-num,.vx-max{
  position:relative;isolation:isolate;overflow:hidden
}
.vx-btn::after,.vxs-btn::after,.vxs-ticket button::after,.vx-tabs button::after,.vxp-wallet::after{
  content:"";position:absolute;inset:-55% -20%;z-index:-1;pointer-events:none;
  background:linear-gradient(105deg,transparent 35%,rgba(255,211,113,.105) 49%,transparent 63%);
  transform:translateX(-80%) rotate(2deg);transition:transform .55s var(--vxc-cubic)
}
.vx-btn:hover::after,.vxs-btn:hover::after,.vxs-ticket button:hover::after,.vx-tabs button:hover::after,.vxp-wallet:hover::after{transform:translateX(80%) rotate(2deg)}
.vx-btn:active,.vxs-btn:active,.vxs-ticket button:active,.vx-quick button:active,.vx-num:active{transform:translateY(1px) scale(.992)!important}
.vx-tabs button.on{filter:drop-shadow(0 0 12px rgba(var(--vxc-room-accent),.11))}
.vx-tabs button.on::before{content:"";position:absolute;left:14%;right:14%;bottom:2px;height:1px;background:linear-gradient(90deg,transparent,rgba(var(--vxc-room-accent),.8),transparent);box-shadow:0 0 8px rgba(var(--vxc-room-accent),.35)}
body.vxc-wallet-flash .vx-portalbar{animation:vxcWalletSweep .75s var(--vxc-cubic)}
@keyframes vxcWalletSweep{0%{box-shadow:inset -900px 0 60px -60px rgba(53,223,115,0)}40%{box-shadow:inset -140px 0 60px -60px rgba(53,223,115,.25)}100%{box-shadow:inset 0 0 0 rgba(53,223,115,0)}}

/* ------------------------------- video media ------------------------------- */
.vxc-media{position:relative;display:grid;place-items:center;flex:none;isolation:isolate}
.vxc-media>img,.vxc-media>video{grid-area:1/1;width:100%;height:100%;object-fit:contain;display:block}
.vxc-media>video{opacity:0;pointer-events:none;transition:opacity .16s ease;transform:scale(var(--vxc-scale,1.12));transform-origin:center}
.vxc-media.vxc-playing>video,.vxc-media:hover>video,.vxc-media:focus-within>video{opacity:1}
.vxc-media.vxc-playing>img,.vxc-media:hover>img,.vxc-media:focus-within>img{opacity:.12}
.vxc-media>img{transition:opacity .16s ease,transform .2s var(--vxc-cubic)}
.vxc-media:hover>img{transform:scale(1.025)}
.vxc-card-media{width:52px;height:52px}
.vxc-stock-media{width:78px;height:78px;--vxc-scale:1.34}
.vxc-item-media{width:132px;height:132px;margin:0 auto;--vxc-scale:1.28}
.vxc-vault-media{width:64px;height:64px;--vxc-scale:1.26}
.vxc-guide-media{width:58px;height:58px;--vxc-scale:1.24}
.vxc-media video::-webkit-media-controls{display:none!important}

/* WebKit decodes alpha WebM as opaque black (it ignores Matroska AlphaMode),
   so on iOS every one of these videos is a black rectangle. Fall back to the
   paired poster, which is the same art as a transparent RGBA WebP. Set by the
   capability probe in the page head. Mirrors the reduced-motion rule below. */
html.no-webm-alpha .vxc-media>video{display:none!important}
html.no-webm-alpha .vxc-media>img,
html.no-webm-alpha .vxc-media.vxc-playing>img,
html.no-webm-alpha .vxc-media.vxc-always>img,
html.no-webm-alpha .vxc-media:hover>img{opacity:1!important;transform:none!important}

/* --------------------------- live number reactions ------------------------- */
.vxc-value-up{animation:vxcValueUp .85s ease}.vxc-value-down{animation:vxcValueDown .85s ease}
@keyframes vxcValueUp{0%,100%{text-shadow:none}30%{color:#9cf1bb;text-shadow:0 0 17px rgba(53,223,115,.42)}}
@keyframes vxcValueDown{0%,100%{text-shadow:none}30%{color:#e18b78;text-shadow:0 0 14px rgba(225,87,67,.25)}}
.vxc-number-pulse{animation:vxcNum .62s ease}@keyframes vxcNum{35%{transform:translateY(-1px) scale(1.025);text-shadow:0 0 16px rgba(255,200,87,.32)}}
body.vxc-stock-soon .vxs-dropvault{box-shadow:0 0 0 1px rgba(53,223,115,.13),0 24px 65px rgba(19,145,67,.08)!important}
body.vxc-stock-soon .vxs-crate{animation:vxcStockBreathe 2.2s ease-in-out infinite}@keyframes vxcStockBreathe{50%{filter:drop-shadow(0 0 12px rgba(53,223,115,.16))}}

/* -------------------------------- timers ---------------------------------- */
body.vxc-hunt-ten .vx-stage{box-shadow:inset 0 0 60px rgba(255,145,25,.045)}
body.vxc-hunt-five .vx-stage{animation:vxcPressure 1s ease-in-out infinite}
body.vxc-lucky-ten .vx-lstage{box-shadow:inset 0 0 55px rgba(255,145,25,.05)}
body.vxc-lucky-five .vx-lstage{animation:vxcPressure 1s ease-in-out infinite}
@keyframes vxcPressure{50%{box-shadow:inset 0 0 72px rgba(255,139,21,.09),0 0 0 1px rgba(255,173,44,.10)}}

/* ------------------------------- Hunt world ------------------------------- */
.vx-stage{transition:filter .55s ease,box-shadow .4s ease}
body.vxc-golden .vx-stage{filter:saturate(1.06) sepia(.09) brightness(1.02)}
body.vxc-golden .vx-stage::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:4;background:radial-gradient(circle at 52% 47%,rgba(255,193,58,.10),transparent 38%);mix-blend-mode:screen;animation:vxcGoldWorld 2.7s ease-in-out infinite}
@keyframes vxcGoldWorld{50%{opacity:.55}}
.vxc-golden-banner{position:absolute;z-index:20;left:50%;top:20%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:999px;border:1px solid rgba(255,211,90,.24);background:rgba(20,13,4,.72);backdrop-filter:blur(10px);font:700 8px/1 var(--mono);letter-spacing:.14em;color:#ffd35f;text-transform:uppercase;box-shadow:0 10px 32px rgba(0,0,0,.25),0 0 24px rgba(255,188,35,.08)}
.vxc-golden-banner i{width:7px;height:7px;border-radius:50%;background:#ffd45c;box-shadow:0 0 11px #ffc94a}

/* Chamber hover remains coded and immediate. */
.vx-node{transition:transform .2s var(--vxc-cubic),filter .2s ease}
.vx-node:hover{transform:translateY(-2px) scale(1.04)!important;filter:drop-shadow(0 0 9px rgba(255,174,43,.22))}
.vx-node:hover::after{content:"";position:absolute;inset:13%;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(255,177,49,.13),transparent 67%);animation:vxcNode .8s ease}
@keyframes vxcNode{0%{opacity:0;transform:scale(.86)}60%{opacity:1}100%{opacity:.45;transform:scale(1.05)}}

/* --------------------------- portal room set pieces ------------------------ */
.vxc-roompiece{position:relative;overflow:hidden;border:1px solid rgba(var(--vxc-room-accent),.12);border-radius:18px;background:
  radial-gradient(circle at 20% 30%,rgba(var(--vxc-room-accent),.065),transparent 34%),
  linear-gradient(145deg,rgba(20,15,9,.74),rgba(7,6,5,.56));box-shadow:inset 0 1px rgba(255,255,255,.035),0 18px 45px rgba(0,0,0,.18)}
.vxc-roompiece::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(112deg,transparent 40%,rgba(255,255,255,.025) 50%,transparent 60%);transform:translateX(-80%);animation:vxcSheen 8s ease-in-out infinite}
@keyframes vxcSheen{0%,62%{transform:translateX(-90%)}84%,100%{transform:translateX(90%)}}
.vxc-roompiece-copy small{display:block;font:700 8px/1 var(--mono);letter-spacing:.17em;color:rgba(var(--vxc-room-accent),.76);text-transform:uppercase}
.vxc-roompiece-copy b{display:block;margin-top:7px;font:750 17px/1.12 var(--display);color:#f6e7d1}
.vxc-roompiece-copy span{display:block;margin-top:6px;color:#8f7d67;font-size:11px;line-height:1.45}
.vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{display:grid;grid-template-columns:minmax(170px,260px) 1fr;align-items:center;gap:18px;padding:14px 22px;margin:0 0 13px}
.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:165px;--vxc-scale:1.12}
.vxc-lucky-core{position:absolute;z-index:9;left:50%;bottom:2.2%;width:92px;height:92px;transform:translateX(-50%);opacity:.88;filter:drop-shadow(0 10px 20px rgba(0,0,0,.4));--vxc-scale:1.35}
.vxc-lucky-core:hover{opacity:1}
.vxc-refinery-piece{display:flex;align-items:center;gap:10px;margin-top:11px;padding:9px;border:1px solid rgba(255,177,54,.11);border-radius:12px;background:rgba(0,0,0,.15)}
.vxc-refinery-piece .vxc-media{width:64px;height:64px;--vxc-scale:1.35}.vxc-refinery-piece span{font:600 9px/1.4 var(--mono);color:#806f5d}.vxc-refinery-piece b{display:block;color:#d9c09a;margin-bottom:4px}
.vxs-crate .vxc-media{flex:none}
.vx-vault>header .vxc-media{margin-right:0}
.vx-item .vxc-item-media img,.vx-item .vxc-item-media video{width:100%!important;height:100%!important;margin:0!important;align-self:auto!important;filter:drop-shadow(0 14px 25px rgba(249,115,22,.20))}
.vx-item:hover .vxc-item-media img{transform:none!important}

/* ----------------------- onboarding living-world pass ---------------------- */
.ob .brand small{color:var(--vxc-green)!important}
.ob .hero{position:relative;z-index:3}
.ob .reward{cursor:default;transition:transform .24s var(--vxc-cubic),border-color .24s ease,box-shadow .24s ease}
.ob .reward:hover{transform:translateY(-5px)}
.ob .reward[data-vxc-kind="orix"]:hover{box-shadow:0 18px 40px rgba(225,134,24,.08),inset 0 0 28px rgba(255,174,39,.035)}
.ob .reward[data-vxc-kind="eth"]:hover{border-color:rgba(91,197,255,.25);box-shadow:0 18px 40px rgba(61,173,255,.06),inset 0 0 28px rgba(79,186,255,.035)}
.ob .reward[data-vxc-kind="stock"]:hover{border-color:rgba(53,223,115,.24);box-shadow:0 18px 40px rgba(39,185,91,.06),inset 0 0 28px rgba(53,223,115,.035)}
.ob .jackpot{transition:box-shadow .35s ease,border-color .35s ease,transform .35s var(--vxc-cubic)}
.ob .jackpot.vxc-jp-pulse{animation:vxcJackpot .9s ease}
@keyframes vxcJackpot{35%{border-color:rgba(255,209,100,.48);box-shadow:0 35px 100px rgba(0,0,0,.38),0 0 45px rgba(247,155,22,.11),inset 0 0 44px rgba(255,192,56,.05)}}
.ob .jptotal{animation:vxcJackBreath 3.8s ease-in-out infinite}@keyframes vxcJackBreath{50%{text-shadow:0 0 22px rgba(255,198,81,.11)}}
.vxc-jp-mote{position:absolute;z-index:2;top:29%;width:4px;height:4px;border-radius:50%;background:#ffcc69;box-shadow:0 0 9px rgba(255,181,52,.55);pointer-events:none;animation:vxcMote 1.75s ease-in forwards}@keyframes vxcMote{0%{opacity:0;transform:translate(0,-9px) scale(.7)}22%{opacity:.8}100%{opacity:0;transform:translate(var(--dx),120px) scale(.35)}}
.vxc-beacon{position:absolute;z-index:1;left:56.5%;bottom:13%;width:104px;height:104px;opacity:.58;filter:drop-shadow(0 13px 25px rgba(0,0,0,.35));pointer-events:none}
.vxc-beacon video{width:100%;height:100%;object-fit:contain}
.vxc-activity{margin-top:10px;max-width:600px;display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid rgba(255,188,65,.10);border-radius:10px;background:rgba(8,6,4,.35);backdrop-filter:blur(10px);font:600 8.5px/1.2 var(--mono);color:#80705d;overflow:hidden}
.vxc-activity>span:first-child{display:inline-flex;align-items:center;gap:7px;color:#bd9d6a;letter-spacing:.12em;white-space:nowrap}.vxc-activity>span:first-child i{width:6px;height:6px;border-radius:50%;background:var(--vxc-green);box-shadow:0 0 9px rgba(53,223,115,.55)}
.vxc-activity-msg{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:vxcTickerIn .35s ease}@keyframes vxcTickerIn{from{opacity:0;transform:translateY(5px)}}
.vxc-descend{position:fixed;inset:0;z-index:99999;pointer-events:none;opacity:0;background:
 radial-gradient(circle at 50% 54%,rgba(255,194,85,.27),rgba(241,119,13,.08) 20%,rgba(2,2,1,.91) 66%),
 linear-gradient(#090603,#020201);transition:opacity .2s ease}
.vxc-descend::before{content:"";position:absolute;inset:-16%;background:radial-gradient(ellipse at center,transparent 0 14%,rgba(255,172,43,.10) 31%,rgba(0,0,0,.82) 69%);transform:scale(1.18);filter:blur(10px)}
.vxc-descend.go{opacity:1}.vxc-descend.go::before{animation:vxcDescend .78s var(--vxc-cubic) forwards}@keyframes vxcDescend{to{transform:scale(.55);filter:blur(22px)}}

/* ----------------------------- event cinematics ---------------------------- */
.vxc-event{position:fixed;inset:0;z-index:99990;display:grid;place-items:center;pointer-events:none;opacity:0;transition:opacity .18s ease;background:radial-gradient(circle at center,rgba(13,8,3,.18),rgba(0,0,0,.48) 72%)}
.vxc-event.on{opacity:1}
.vxc-event-inner{width:min(720px,92vw);height:min(720px,76vh);position:relative;display:grid;place-items:center}
.vxc-event video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 36px 70px rgba(0,0,0,.55))}
.vxc-event-copy{position:absolute;left:50%;bottom:3%;transform:translateX(-50%);min-width:min(440px,88vw);text-align:center;padding:10px 15px;border:1px solid rgba(255,196,75,.13);border-radius:12px;background:rgba(7,5,3,.65);backdrop-filter:blur(13px)}
.vxc-event-copy small{display:block;font:700 7.5px/1 var(--mono);letter-spacing:.18em;color:#a88554;text-transform:uppercase}.vxc-event-copy b{display:block;margin-top:5px;font:800 clamp(18px,3vw,28px)/1.05 var(--display);color:#ffe2a3}.vxc-event-copy span{display:block;margin-top:5px;color:#907d66;font-size:10px}
.vxc-event.major{background:radial-gradient(circle at center,rgba(245,144,24,.16),rgba(0,0,0,.58) 72%)}.vxc-event.major .vxc-event-copy b{font-size:clamp(23px,4vw,38px);color:#ffd15b;text-shadow:0 0 25px rgba(255,179,31,.25)}
.vxc-event.stock .vxc-event-copy b,.vxc-event.trade .vxc-event-copy b{color:#a7f0bf}
.vxc-event.eth .vxc-event-copy b{color:#a7ddff}
.vxc-event.sealed .vxc-event-copy b{color:#c99d62}
.vxc-screenflash{position:fixed;inset:0;z-index:99989;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 50%,rgba(var(--vxc-room-accent),.18),transparent 58%)}.vxc-screenflash.on{animation:vxcFlash .48s ease}@keyframes vxcFlash{35%{opacity:1}100%{opacity:0}}

/* ----------------------------- responsive ---------------------------------- */
@media(max-width:1000px){
  .vxc-beacon{left:auto;right:22%;bottom:25%;width:82px;height:82px;opacity:.42}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:150px 1fr}
  .vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:135px}
}
@media(max-width:680px){
  .vxc-beacon{display:none}
  .vxc-activity{max-width:100%;font-size:7.8px}
  .vxc-activity>span:first-child{font-size:7px}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:108px 1fr;padding:11px 13px;gap:10px}
  .vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:106px}
  .vxc-roompiece-copy b{font-size:13px}.vxc-roompiece-copy span{font-size:9.5px}
  .vxc-lucky-core{width:70px;height:70px;bottom:3%}
  .vxc-event-inner{height:min(560px,70vh)}.vxc-event-copy{bottom:1%}
}
@media(prefers-reduced-motion:reduce){
  .vxc-media>video{display:none!important}.vxc-roompiece::after,.jptotal,.vxc-stock-soon .vxs-crate{animation:none!important}
  .vx-btn::after,.vxs-btn::after,.vx-tabs button::after,.vxp-wallet::after{display:none}
  .vxc-event video{display:none}
}

.vxp-benefits .vxc-media{flex:none}.vxp-era-orb .vxc-media{margin:auto}.vxp-burnmap header .vxc-media{flex:none}

/* --------------------- dynamic state VFX: real positions ------------------ */
.vx-view.active{animation:vxcRoomIn .34s var(--vxc-cubic) both}
@keyframes vxcRoomIn{from{opacity:.65;transform:translateY(5px);filter:saturate(.85)}to{opacity:1;transform:none;filter:none}}
.vx-node.vxc-fed{animation:vxcFed .78s ease}.vx-node.vxc-struck{animation:vxcStruck 1.15s ease}
@keyframes vxcFed{35%{filter:drop-shadow(0 0 18px rgba(92,200,255,.62)) brightness(1.18);transform:scale(1.055)}}
@keyframes vxcStruck{20%{filter:brightness(1.8) drop-shadow(0 0 23px rgba(255,205,88,.8));transform:scale(1.08)}55%{filter:brightness(1.2) drop-shadow(0 0 14px rgba(255,166,35,.45))}100%{filter:none}}
.vxc-deploy-cart{position:absolute;z-index:28;width:34px;height:34px;pointer-events:none;left:0;top:0;will-change:transform,opacity;filter:drop-shadow(0 6px 12px rgba(0,0,0,.5))}
.vxc-deploy-cart img{width:100%;height:100%;object-fit:contain}.vxc-deploy-cart::after{content:"";position:absolute;inset:7px;border-radius:50%;background:radial-gradient(circle,#b7edff 0 12%,#57bfff 26%,rgba(74,177,255,.12) 58%,transparent 72%);box-shadow:0 0 12px rgba(73,185,255,.72);mix-blend-mode:screen}
.vxc-deploy-trail{position:absolute;z-index:16;height:2px;transform-origin:left center;pointer-events:none;background:linear-gradient(90deg,rgba(78,186,255,0),rgba(78,186,255,.7),rgba(255,181,51,.35),transparent);filter:blur(.2px);opacity:0;animation:vxcTrail .8s ease}
@keyframes vxcTrail{20%{opacity:.8}100%{opacity:0}}
.vxc-fly{position:fixed;z-index:99988;width:7px;height:7px;border-radius:50%;pointer-events:none;will-change:transform,opacity}
.vxc-fly.eth{background:#8fdcff;box-shadow:0 0 10px rgba(92,199,255,.85)}.vxc-fly.orix{background:#ffbf49;box-shadow:0 0 10px rgba(255,162,39,.8)}
.vx-num.vxc-scan,.vx-node.vxc-scan{animation:vxcScan .34s ease}@keyframes vxcScan{45%{filter:brightness(1.7) drop-shadow(0 0 12px rgba(255,185,57,.65));transform:scale(1.07)}}
.cwchat-trigger.vxc-chat-ping{animation:vxcChatPing .75s ease!important}@keyframes vxcChatPing{35%{box-shadow:0 0 0 4px rgba(255,171,38,.06),0 0 35px rgba(255,167,32,.45);transform:translateY(-2px)}}


/* ==========================================================================
   REV19 · premium motion / composition corrections
   ========================================================================== */

/* Generated videos must occupy the EXACT same box as their static fallback.
   No hidden scale compensation: that was the source of the down/offset swap. */
.vxc-media>img,.vxc-media>video{
  position:relative;
  grid-area:1/1;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:contain!important;
  object-position:50% 50%!important;
  margin:0!important;
  inset:auto!important;
  transform:none!important;
  transform-origin:50% 50%!important
}
.vxc-media.vxc-playing>video,.vxc-media.vxc-always>video{opacity:1!important}
.vxc-media.vxc-playing>img,.vxc-media.vxc-always>img{opacity:0!important}
.vxc-media.vxc-always{pointer-events:none}

/* --------------------------- shared Robinhood loader ---------------------- */
.vxc-loader{
  position:fixed;inset:0;z-index:100500;display:grid;place-items:center;
  align-content:center;gap:8px;background:
  radial-gradient(circle at 50% 48%,rgba(35,220,105,.075),transparent 19%),
  radial-gradient(circle at 50% 52%,rgba(245,158,11,.055),transparent 31%),
  #040403;
  opacity:1;visibility:visible;transition:opacity .34s ease,visibility .34s ease;
  pointer-events:all
}
.vxc-loader.out{opacity:0;visibility:hidden;pointer-events:none}
.vxc-loader video{width:124px;height:124px;object-fit:contain;filter:drop-shadow(0 16px 34px rgba(0,0,0,.55))}
.vxc-loader-ring{
  position:absolute;left:50%;top:50%;width:166px;height:166px;transform:translate(-50%,-61%);
  border:1px solid rgba(53,223,115,.13);border-radius:50%;
  box-shadow:0 0 38px rgba(53,223,115,.035),inset 0 0 25px rgba(255,181,47,.02)
}
.vxc-loader-ring:before,.vxc-loader-ring:after{content:"";position:absolute;border-radius:50%;inset:9px;border-top:1px solid rgba(53,223,115,.55);animation:vxcLoaderSpin 2.1s linear infinite}
.vxc-loader-ring:after{inset:19px;border-top-color:rgba(255,190,62,.43);animation-duration:3.4s;animation-direction:reverse}
@keyframes vxcLoaderSpin{to{transform:rotate(360deg)}}
.vxc-loader small{margin-top:2px;font:700 7px/1 var(--mono);letter-spacing:.2em;color:#58d984;text-transform:uppercase}
.vxc-loader b{font:700 9px/1.2 var(--display);letter-spacing:.04em;color:#c7af88}
body.vxc-booting{overflow:hidden!important}

/* ------------------------ onboarding foreground depth -------------------- */
.ob .hero{position:relative;z-index:4}
.ob .socialrail{z-index:7}
.vxc-vines{
  position:absolute;inset:0 0 auto;z-index:2;height:min(48vh,430px);
  pointer-events:none;overflow:visible;opacity:.72;
  filter:drop-shadow(0 14px 18px rgba(0,0,0,.42));
  transform-origin:50% 0;animation:vxcVinesLayer 6.4s ease-in-out infinite alternate
}
.vxc-vines img{display:block;width:100%;height:auto;object-fit:contain;object-position:top center}
@keyframes vxcVinesLayer{
  0%{transform:translate3d(-1px,-2px,0) scale(1.003)}
  50%{transform:translate3d(2px,1px,0) scale(1.006)}
  100%{transform:translate3d(-1px,0,0) scale(1.002)}
}
.ob-kickers{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.ob-kickers .network{margin:0;padding:5px 8px 5px 7px;background:rgba(4,11,6,.48);border-color:rgba(53,223,115,.18)}
.ob-kickers .network img{width:58px;height:15px}
.ob-kickers .network small{font-size:6.8px}
.ob .vxc-activity{margin-top:10px}

/* No tiny decorative Robinhood device remains in the cave world. */
.ob .vxc-beacon{display:none!important}

/* ----------------------------- Hunt Golden Vein -------------------------- */
.vxc-golden-banner{
  top:11.5%!important;
  padding:10px 16px!important;
  border-color:rgba(255,211,90,.34)!important;
  font-size:10px!important;
  letter-spacing:.16em!important;
  box-shadow:0 14px 40px rgba(0,0,0,.32),0 0 34px rgba(255,188,35,.13)!important
}
.vxc-golden-banner i{width:8px!important;height:8px!important}

/* ----------------------------- Stock Drop hero --------------------------- */
.vxc-stock-media{width:116px!important;height:116px!important;flex:0 0 116px!important}
.vxs-crate{min-height:144px!important;align-items:center!important}
.vxs-crate .vxc-media{margin:-7px 3px -7px -5px!important}
.vxs-crate>img{width:116px!important;height:116px!important}
.vxs-hero::before{opacity:.025!important}

/* ----------------------- permanent living room anchors ------------------- */
.vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{
  grid-template-columns:minmax(210px,290px) 1fr!important;
  min-height:190px;
  padding:16px 24px!important
}
.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{
  height:176px!important;width:100%;pointer-events:none
}
.vxc-vault-stage .vxc-hero-media video,.vxc-forge-stage .vxc-hero-media video,.vxc-trade-stage .vxc-hero-media video{opacity:1!important}

/* Refinery is its own row now; it can no longer break the Withdraw metric. */
.vxc-refinery-stage{
  display:grid;grid-template-columns:120px minmax(0,1fr);align-items:center;gap:15px;
  min-height:118px;padding:10px 18px;margin:-3px 0 14px
}
.vxc-refinery-stage .vxc-refinery-media{width:112px;height:96px}
.vxc-refinery-stage:hover{border-color:rgba(255,184,55,.22)}
.vxc-refinery-stage .vxc-roompiece-copy b{font-size:15px}

/* Workshop withdrawal: balance and MAX are readable without adding clutter. */
.vx-withdrawcell{justify-content:center}
.vx-wd-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vx-wd-title{display:flex!important;align-items:center;gap:8px!important}
.vx-wd-title>img{width:33px;height:33px;object-fit:contain;filter:drop-shadow(0 5px 10px rgba(249,115,22,.2))}
.vx-wd-title>span{display:block!important}
.vx-wd-title small{display:block}
.vx-wd-title em{display:block;margin-top:4px;font:600 8px/1.2 var(--mono);font-style:normal;color:#766856;text-transform:none;letter-spacing:.03em}
.vx-wd-title em b{display:inline!important;font:700 9px/1 var(--mono)!important;color:#e4bd72!important}
.vx-wline .vx-max{
  flex:0 0 auto;height:34px;padding:0 9px;border:1px solid rgba(255,200,87,.18);border-radius:8px;
  background:rgba(255,200,87,.04);color:#d4aa64;font:750 7px/1 var(--mono);letter-spacing:.08em;cursor:pointer
}
.vx-wline .vx-max:hover{border-color:rgba(255,200,87,.38);background:rgba(255,200,87,.08);color:#ffd071}

/* --------------------------- How It Works flows --------------------------- */
.vxp-valueflow{margin:10px 0 12px;padding:14px;border:1px solid rgba(255,200,87,.105);border-radius:15px;background:linear-gradient(145deg,rgba(255,198,80,.025),rgba(0,0,0,.13))}
.vxp-valueflow>header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:10px}
.vxp-valueflow h3{margin:4px 0 0;font:780 14px/1.15 var(--display);color:#e5d0b1}
.vxp-valueflow>header p{max-width:390px;margin:0;font-size:8px;line-height:1.4;text-align:right;color:#796b59}
.vxp-flowcard{padding:11px;border:1px solid rgba(255,255,255,.04);border-radius:11px;background:rgba(0,0,0,.15)}
.vxp-flowcard+.vxp-flowcard{margin-top:7px}
.vxp-flowtitle{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:8px}
.vxp-flowtitle b{display:block;font:730 9.5px/1.15 var(--display);color:#d9c3a1}
.vxp-flowtitle small{display:block;margin-top:3px;font-size:7.2px;color:#746655}
.vxp-flowtitle em{font:650 7px/1 var(--mono);font-style:normal;color:#8b795f;white-space:nowrap}
.vxp-splitbar{display:flex;width:100%;height:25px;overflow:hidden;border:1px solid rgba(255,255,255,.055);border-radius:8px;background:#0b0806}
.vxp-splitbar>i{position:relative;display:flex;align-items:center;min-width:3px;width:calc(var(--w) * 1%);font-style:normal;overflow:hidden}
.vxp-splitbar>i span{padding:0 8px;font:700 6.7px/1 var(--mono);letter-spacing:.04em;white-space:nowrap;color:#160f07}
.vxp-huntbar>i:nth-child(1){background:linear-gradient(90deg,#e99819,#ffc85a)}
.vxp-huntbar>i:nth-child(2){background:#75b7d6}.vxp-huntbar>i:nth-child(3){background:#c17824}.vxp-huntbar>i:nth-child(4){background:#9b6b29}.vxp-huntbar>i:nth-child(5){background:#55483b}
.vxp-huntbar>i:nth-child(n+2) span{display:none}
.vxp-flowlegend{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:7px}
.vxp-flowlegend span{display:flex;align-items:center;gap:4px;font-size:6.8px;color:#746654}
.vxp-flowlegend i{width:6px;height:6px;border-radius:2px;background:#ffc857}.vxp-flowlegend span:nth-child(2) i{background:#75b7d6}.vxp-flowlegend span:nth-child(3) i{background:#c17824}.vxp-flowlegend span:nth-child(4) i{background:#9b6b29}.vxp-flowlegend span:nth-child(5) i{background:#55483b}
.vxp-orixbar>i:first-child{background:linear-gradient(90deg,#f0a22b,#ffd36a)}.vxp-orixbar>i:last-child{background:linear-gradient(90deg,#665344,#3d342d)}
.vxp-stockbar>i:first-child{background:linear-gradient(90deg,#37c96c,#6ee796)}.vxp-stockbar>i:last-child{background:#5c5145}
.vxp-flowcard>p{margin:7px 1px 0;font-size:7.5px;line-height:1.45;color:#786a59}.vxp-flowcard>p b{color:#d8bf98}

/* ------------------------------ responsive ------------------------------- */
@media(max-width:930px){
  .vxc-vines{height:min(34vh,260px);opacity:.58}
  .ob-kickers{gap:6px}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:160px 1fr!important;min-height:150px}
  .vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:138px!important}
}
@media(max-width:700px){
  .vxc-loader video{width:105px;height:105px}.vxc-loader-ring{width:142px;height:142px}
  .vxc-vines{height:180px;opacity:.44}
  .vxc-golden-banner{top:9%!important;font-size:8px!important;padding:8px 11px!important;max-width:82%;white-space:nowrap}
  .vxc-stock-media{width:96px!important;height:96px!important;flex-basis:96px!important}
  .vxs-crate{min-height:120px!important}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:112px 1fr!important;padding:11px 13px!important}
  .vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:108px!important}
  .vxc-refinery-stage{grid-template-columns:84px 1fr;padding:9px 11px}.vxc-refinery-stage .vxc-refinery-media{width:80px;height:74px}
  .vxp-valueflow>header{display:block}.vxp-valueflow>header p{margin-top:6px;max-width:none;text-align:left}
  .vxp-flowtitle{align-items:flex-start}.vxp-flowtitle em{font-size:6.5px}
}
@media(max-width:430px){
  .vxc-vines{height:145px;opacity:.34}
  .vxc-stock-media{width:88px!important;height:88px!important;flex-basis:88px!important}
  .vx-wline{flex-wrap:wrap}.vx-wline input{flex:1 1 100px}.vx-wline #vx-wd-go{flex:1 0 100%}
  .vxp-splitbar>i span{font-size:5.8px;padding:0 5px}
}
@media(prefers-reduced-motion:reduce){
  .vxc-loader-ring:before,.vxc-loader-ring:after,.vxc-vines{animation:none!important}
}

#vxp-guide-flows{scroll-margin-top:56px}

/* Dedicated Lucky Jackpot is a full-room 16:9 cinematic, not a square prop. */
.vxc-event.lucky{background:radial-gradient(circle at 50% 45%,rgba(255,143,28,.13),rgba(0,0,0,.68) 74%)}
.vxc-event.lucky .vxc-event-inner{width:min(1180px,94vw);height:auto;aspect-ratio:16/9}
.vxc-event.lucky video{border-radius:20px;overflow:hidden;box-shadow:0 34px 100px rgba(0,0,0,.52),0 0 50px rgba(244,144,25,.08)}
.vxc-event.lucky .vxc-event-copy{bottom:2%}
.vxc-event.lucky .vxc-event-copy b{color:#ffd066;font-size:clamp(21px,3.2vw,34px);text-shadow:0 0 22px rgba(255,175,35,.22)}

/* Card text selectors must never leak onto the media wrapper itself. */
.ob .reward>.vxc-media{display:grid!important;margin:0!important;color:inherit!important;font-size:initial!important;line-height:normal!important}
.vxs-crate>.vxc-media{display:grid!important;margin-top:0!important}
.vxp-benefits article>.vxc-media{display:grid!important;margin:0!important}

/* ===== vein-chambers-rev18.css ===== */
/* ==========================================================================\n   CaveWatch · The Vein · Hunt chamber geometry REV18\n   User-annotated placement pass — 19 Aug 2026.\n\n   Geometry only. Chamber ids, selection, Hunt state, payouts and contract\n   wiring are untouched. Both the physical chamber art and its number plate\n   are approximately 25% larger at every responsive band.\n   ========================================================================== */

/* Desktop / wide game board: 64×56 -> 80×70 (25% larger). */
.vx-houses .vx-house{
  width:80px!important;
  height:70px!important;
  margin:-35px 0 0 -40px!important;
}

/* Number plate: 54×48 -> 68×60 (~25% larger). It keeps the exact same
   HOUSE_POS anchor as its matching chamber; JS owns only the vertical roof gap. */
.vx-node{
  width:68px!important;
  height:60px!important;
  margin:-30px 0 0 -34px!important;
  border-radius:14px!important;
  font-size:18px!important;
}
.vx-node .vx-nno{font-size:18px!important;letter-spacing:.045em!important}

/* Keep hover feedback restrained. The chamber is already physically larger;
   hover should read as focus, not make the marker jump across the rail. */
.vx-node:hover,
.vx-node.hov,
.vx-node:focus-visible{transform:translateY(-4px) scale(1.035)!important}
.vx-node.sel{transform:translateY(-2px) scale(1.025)!important}

@media (max-width:1100px){
  .vx-houses .vx-house{width:66px!important;height:58px!important;margin:-29px 0 0 -33px!important}
  .vx-node{width:55px!important;height:50px!important;margin:-25px 0 0 -28px!important;border-radius:12px!important}
  .vx-node .vx-nno{font-size:15.5px!important}
}

@media (max-width:700px){
  .vx-houses .vx-house{width:54px!important;height:48px!important;margin:-24px 0 0 -27px!important}
  .vx-node{width:54px!important;height:48px!important;margin:-24px 0 0 -27px!important;border-radius:11px!important}
  .vx-node .vx-nno{font-size:14.5px!important}
}

@media (max-width:640px){
  /* Preserve a strong touch target without allowing the larger chamber art to
     crowd the mobile board. */
  .vx-node{width:50px!important;height:48px!important;margin:-24px 0 0 -25px!important}
  .vx-node .vx-nno{font-size:14px!important}
}

/* ===== vein-responsive-rev20.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV20 responsive system
   Geometry-first: exact 2752×1536 Hunt/Lucky art ratio on every viewport.
   Phone HUDs shrink; gameplay coordinates never chase a cropped `cover` image.
   ========================================================================== */
:root{--v20-board-ratio:1.791666667;--v20-safe-l:max(8px,env(safe-area-inset-left));--v20-safe-r:max(8px,env(safe-area-inset-right));--v20-safe-b:max(12px,env(safe-area-inset-bottom))}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
img,video{max-width:100%}
button,a,input{touch-action:manipulation}

/* =============================== LANDING ================================ */
.ob .top,.ob .hero{width:min(1780px,calc(100% - clamp(28px,4vw,76px)))}
.ob .hero{grid-template-columns:minmax(0,1.42fr) minmax(330px,.72fr);gap:clamp(28px,4.8vw,90px)}
.ob .copy{min-width:0;position:relative;z-index:5}
.v20-networkline{display:inline-flex!important;align-items:center!important;gap:8px!important;white-space:nowrap}
.v20-networkline>b{font-weight:700;color:#d8b774}
.v20-networkline>small{font:700 8px/1 var(--mono);letter-spacing:.13em;color:#8ecb9b}
.v20-networkline>img{width:66px;height:18px;object-fit:contain;object-position:left center;filter:drop-shadow(0 0 8px rgba(41,213,104,.18))}
.vxc-vines{height:min(43vh,400px)!important;overflow:hidden!important;opacity:.64!important;z-index:2!important}
.vxc-vines video{display:block;width:100%;height:auto;min-width:100%;object-fit:contain;object-position:top center;filter:drop-shadow(0 15px 20px rgba(0,0,0,.34));transform:translateZ(0)}
.ob .hero,.ob .top,.ob .socialrail{z-index:5}
.ob .rewards{max-width:820px}
.ob .reward{min-width:0}
.ob .jackpot{width:100%;max-width:480px;justify-self:end}

/* Tall/large displays: use more space without turning typography into signage. */
@media(min-width:2200px){
  .ob .top,.ob .hero{width:min(2050px,calc(100% - 110px))}
  .ob .hero{grid-template-columns:minmax(0,1040px) minmax(420px,530px);gap:120px}
  .ob h1{font-size:clamp(92px,5vw,128px)}
  .ob .lead{font-size:20px;max-width:790px}.ob .reward{min-height:122px}.ob .jackpot{max-width:530px}
  .vx-shell{max-width:2140px!important}
}
/* Short 13–15 inch laptop band. */
@media(min-width:1000px) and (max-height:850px){
  .ob .top{padding:12px 0}.ob .hero{min-height:calc(100svh - 64px);padding:8px 0 28px;align-items:center}
  .ob h1{font-size:clamp(54px,6vw,82px);margin:11px 0 12px}.ob .lead{font-size:14px;margin-bottom:15px;max-width:650px}
  .ob .enter{min-height:48px}.ob .rewards{margin-top:16px}.ob .reward{min-height:84px;padding:10px}.ob .jackpot{min-height:430px;padding:16px;max-width:410px}.ob .jpmachine{width:min(215px,75%)}
  .vxc-vines{height:min(38vh,270px)!important;opacity:.5!important}
}
/* Square-ish desktop/tablet windows. */
@media(max-aspect-ratio:5/4) and (min-width:780px) and (max-width:1200px){
  .ob .hero{grid-template-columns:minmax(0,1fr) minmax(300px,350px);gap:28px}.ob h1{font-size:clamp(48px,6.3vw,74px)}
  .ob .lead{font-size:14px}.ob .rewards{grid-template-columns:1fr;max-width:440px}.ob .reward{min-height:72px}.ob .jackpot{min-height:450px}
}

/* ========================= VEIN GLOBAL / TOOLBAR ======================== */
.vx-shell{width:100%!important;max-width:2140px!important;margin-inline:auto!important;padding-left:max(10px,1.35vw,env(safe-area-inset-left))!important;padding-right:max(10px,1.35vw,env(safe-area-inset-right))!important}
.vx-portalbar{max-width:100%;min-width:0}.vx-portalbar>*{min-width:0}
.vx-portalbar .vx-tabs{min-width:0}.vx-portalbar .vx-tabs button{min-width:0}
.vxp-gamehead,.vx-pagehead,.vxs-hero,.vx-ghero{max-width:100%;overflow:hidden}
.vxp-gamecopy,.vxp-gamecopy p,.vx-pagehead>div,.vxs-copy{min-width:0}
.vxp-gamecopy p,.vx-pagehead p,.vxs-copy p{overflow-wrap:anywhere}

/* Exact map geometry.  The JS's `coverXform()` becomes a 1:1 mapping because
   the stage and the source art now share the exact same aspect ratio. */
.vx-stagewrap,.vx-lwrap{width:100%!important;margin-inline:auto!important;overflow:hidden!important}
.vx-stage,.vx-lstage{
  width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;aspect-ratio:2752/1536!important;
  contain:layout paint;isolation:isolate
}
.vx-stage .vx-bgimg,.vx-lstage .vx-lbg{inset:0!important;background-position:center!important;background-size:100% 100%!important;transform:none!important}
.vx-stage .vx-bgimg{background-repeat:no-repeat!important}.vx-lstage .vx-lbg{background-repeat:no-repeat!important}

/* Keep the desktop board inside short laptop viewports while preserving ratio. */
@media(min-width:1181px) and (max-height:920px){
  .vx-stagewrap,.vx-lwrap{max-width:calc((100svh - 178px) * var(--v20-board-ratio))!important}
}

/* Header/set-piece loops: responsive but always visually substantial. */
.vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{width:100%;grid-template-columns:clamp(190px,19vw,320px) minmax(0,1fr)!important;min-height:clamp(155px,12vw,220px)!important}
.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:clamp(140px,11vw,205px)!important}
.vxc-roompiece-copy{min-width:0}.vxc-roompiece-copy b{font-size:clamp(14px,1.15vw,20px)}.vxc-roompiece-copy span{font-size:clamp(9px,.75vw,12px)}

/* Never blank the static fallback before an always-loop has produced frames. */
.vxc-media.vxc-always>img{opacity:.12!important}.vxc-media.vxc-always>video{opacity:1!important}

/* ========================== HUNT / LUCKY DESKTOP ========================= */
@media(min-width:1181px){
  .vx-hud-pool{left:clamp(10px,1.1vw,22px)!important;top:clamp(10px,1.1vw,22px)!important}
  .vx-hud-clock{right:clamp(10px,1.1vw,22px)!important;top:clamp(10px,1.1vw,22px)!important}
  .vx-hud-motherlode{left:clamp(10px,1.1vw,22px)!important;bottom:clamp(10px,1.1vw,22px)!important}
  .vx-hud-kit{right:clamp(10px,1.1vw,22px)!important;bottom:clamp(10px,1.1vw,22px)!important}
}

/* ============================= TABLET =================================== */
@media(max-width:1180px){
  .vx-shell{padding-left:var(--v20-safe-l)!important;padding-right:var(--v20-safe-r)!important}
  .vxp-gamehead{gap:12px!important}.vxp-gamechips{gap:5px!important}
  .vx-hud-pool{min-width:190px!important;padding:10px 12px!important}.vx-hudbig{font-size:22px!important}
  .vx-hud-clock{padding:8px 10px!important}.vx-hud-clock .vx-dial{width:52px!important;height:52px!important}
  .vx-hud-kit{padding:8px!important;gap:8px!important}.vx-kitart{width:44px!important;height:44px!important}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:160px minmax(0,1fr)!important}
}

/* =========================== PHONE / PHABLET ============================ */
@media(max-width:820px){
  .vx-shell{padding:5px var(--v20-safe-r) calc(74px + env(safe-area-inset-bottom)) var(--v20-safe-l)!important}
  .vx-portalbar{top:max(4px,env(safe-area-inset-top))!important;margin-bottom:5px!important;padding:5px!important;min-height:52px!important}
  .vxp-actions{gap:4px!important}.vxp-menu,.vxp-help,.vxp-sound,.vxp-wallet,.vxp-connect{min-height:40px!important}
  .vxp-gamehead{padding:9px 10px!important;margin-bottom:5px!important}.vxp-gamecopy h1{font-size:20px!important}.vxp-gamecopy p{font-size:8.4px!important;line-height:1.42!important}
  .vxp-gamechips{margin-top:7px!important;display:flex!important;overflow-x:auto;flex-wrap:nowrap!important;scrollbar-width:none}.vxp-gamechips::-webkit-scrollbar{display:none}.vxp-gamechips>span{flex:0 0 auto;min-height:27px!important;font-size:7.2px!important;padding:0 7px!important}
  .vx-ticker{overflow-x:auto!important;white-space:nowrap!important;scrollbar-width:none}.vx-ticker::-webkit-scrollbar{display:none}.vx-ticker .vx-seg{flex:0 0 auto}

  /* Board is the art ratio, not a tall cropped desktop canvas. */
  .vx-stagewrap,.vx-lwrap{padding:3px!important;border-radius:11px!important}
  .vx-stage,.vx-lstage{border-radius:9px!important}

  /* Hunt HUDs become compact overlays so they do not swallow the quarry. */
  .vx-hud{backdrop-filter:blur(6px)!important;-webkit-backdrop-filter:blur(6px)!important;border-radius:9px!important;box-shadow:0 7px 18px rgba(0,0,0,.38)!important}
  .vx-hud-pool{left:5px!important;top:5px!important;min-width:0!important;width:auto!important;max-width:38%!important;padding:5px 7px!important;gap:1px!important}
  .vx-hudlbl{font-size:5.8px!important;letter-spacing:.12em!important}.vx-hudbig{font-size:clamp(12px,3.3vw,18px)!important}.vx-hudsub{font-size:6.2px!important}.vx-hudchips{gap:3px!important;margin-top:3px!important}.vx-hchip{padding:2px 4px!important;font-size:5.3px!important}.vx-hudnote{display:none!important}
  .vx-hud-clock{right:5px!important;top:5px!important;padding:4px 6px!important;gap:5px!important}.vx-hud-clock .vx-dial{width:34px!important;height:34px!important}.vx-dial-core strong{font-size:7px!important}.vx-clocktxt small{font-size:5px!important}.vx-clocktxt b{font-size:8px!important}.vx-clocktxt span{font-size:5.5px!important}
  .vx-hud-motherlode{display:flex!important;left:5px!important;right:auto!important;bottom:5px!important;width:min(62%,310px)!important;min-width:0!important;padding:4px 6px!important;gap:5px!important;border-radius:9px!important}.vx-hud-motherlode>img{width:28px!important;height:28px!important}.vxp-mltitle{margin-bottom:2px!important}.vxp-mltitle>span{font-size:5px!important}.vxp-mltitle>b{font-size:6.5px!important}.vx-mldraws{gap:3px!important}.vx-mldraws>span{padding:3px 4px!important;border-radius:6px!important}.vx-mldraws>span b{font-size:7px!important}.vx-mldraws>span small{display:none!important}
  .vx-hud-kit{right:5px!important;bottom:5px!important;padding:4px 5px!important;gap:4px!important;max-width:34%!important}.vx-hud-kit .vx-kitart{width:26px!important;height:26px!important}.vx-kittxt small,.vx-kittxt span{display:none!important}.vx-kittxt b{font-size:7px!important;max-width:58px;overflow:hidden;text-overflow:ellipsis}.vx-hud-kit .vx-btn{min-height:25px!important;padding:0 6px!important;font-size:6px!important}
  .vx-ethplate{display:none!important}

  /* Chamber art + number stay large enough to read without covering neighbors. */
  .vx-houses .vx-house{width:42px!important;height:37px!important;margin:-18.5px 0 0 -21px!important}
  .vx-node{width:38px!important;height:34px!important;margin:-17px 0 0 -19px!important;border-radius:8px!important}
  .vx-node .vx-nno{font-size:10.5px!important}.vx-node:hover,.vx-node.hov,.vx-node:focus-visible{transform:translateY(-2px) scale(1.03)!important}.vx-node.sel{transform:translateY(-1px) scale(1.02)!important}

  /* Lucky room overlays become compact. Tunnel zones remain untouched. */
  .vx-tplate{width:29px!important;height:29px!important;border-radius:8px!important;font-size:10px!important}.vx-selchip{padding:4px 7px!important;font-size:6px!important;gap:4px!important}
  .vx-lstats{position:absolute!important;left:5px!important;right:5px!important;top:5px!important;margin:0!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px!important;pointer-events:none}.vx-lstat{min-height:0!important;padding:4px 6px!important;gap:5px!important;border-radius:8px!important}.vx-lstat img{width:23px!important;height:23px!important}.vx-lstat small{font-size:5.3px!important;letter-spacing:.08em!important}.vx-lstat b{font-size:8.5px!important}.vx-lstat-bal .vx-btn{pointer-events:auto;min-height:24px!important;padding:0 5px!important;font-size:6px!important}.vx-lstat:nth-child(n+3){margin-top:0!important}
  .vx-lconsole-shell{position:static!important;margin-top:7px!important;border-radius:12px!important}.vx-lhud{margin-top:0!important}.vx-lhud-in{padding:8px!important}.vx-numrail{gap:5px!important}.vx-numrail .vx-num{min-width:42px!important;width:42px!important;height:42px!important}.vx-num b{font-size:14px!important;line-height:42px!important}

  /* Every secondary page compresses before stacking. */
  .vx-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;margin-bottom:7px!important}.vx-metrics>article{padding:10px!important;min-height:74px}.vx-metrics small{font-size:7px!important}.vx-metrics b{font-size:17px!important}.vx-metrics span{font-size:8px!important}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:96px minmax(0,1fr)!important;min-height:108px!important;padding:8px 10px!important;gap:8px!important;margin-bottom:7px!important}.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:94px!important}.vxc-roompiece-copy small{font-size:6px!important}.vxc-roompiece-copy b{font-size:11px!important;margin-top:4px!important}.vxc-roompiece-copy span{font-size:7.5px!important;line-height:1.35!important;margin-top:4px!important}
  .vxc-refinery-stage{grid-template-columns:70px 1fr!important;min-height:82px!important;padding:6px 8px!important;gap:6px!important}.vxc-refinery-stage .vxc-refinery-media{width:66px!important;height:66px!important}
  .vxs-hero{padding:14px 12px!important}.vxs-copy h2{font-size:26px!important}.vxs-copy p{font-size:9px!important;line-height:1.45!important}.vxs-hero-tags{gap:4px!important}.vxs-hero-tags span{font-size:6.5px!important}.vxs-threshold{padding:10px!important}.vxs-threshold b{font-size:18px!important}
  .vxc-stock-media{width:82px!important;height:82px!important;flex-basis:82px!important}.vxs-crate{min-height:104px!important}
  .vx-items{gap:7px!important}.vx-item{padding:11px!important}.vxc-item-media{width:92px!important;height:92px!important}
  .vxp-valueflow{padding:9px!important}.vxp-flowcard{padding:8px!important}.vxp-splitbar{height:21px!important}
}

/* Narrow phones: iPhone 8/SE through S8 width class. */
@media(max-width:430px){
  .vx-shell{padding-left:max(4px,env(safe-area-inset-left))!important;padding-right:max(4px,env(safe-area-inset-right))!important}
  .vxp-gamehead{padding:7px 8px!important}.vxp-gamecopy h1{font-size:18px!important}.vxp-gamecopy p{font-size:7.7px!important}.vxp-gamechips>span{font-size:6.6px!important;min-height:25px!important}
  .vx-houses .vx-house{width:36px!important;height:32px!important;margin:-16px 0 0 -18px!important}.vx-node{width:32px!important;height:30px!important;margin:-15px 0 0 -16px!important}.vx-node .vx-nno{font-size:9px!important}
  .vx-hud-pool{max-width:40%!important;padding:4px 5px!important}.vx-hudsub{display:none!important}.vx-hudchips .vx-hchip:nth-child(3){display:none!important}
  .vx-hud-clock .vx-dial{width:30px!important;height:30px!important}.vx-clocktxt span{display:none!important}
  .vx-hud-motherlode{width:65%!important}.vx-hud-motherlode>img{display:none!important}.vx-hud-kit{max-width:31%!important}.vx-hud-kit .vx-btn{display:none!important}
  .vx-tplate{width:25px!important;height:25px!important;font-size:9px!important}.vx-selchip{display:none!important}
  .vx-lstats{grid-template-columns:1fr 1fr!important}.vx-lstat{padding:3px 4px!important}.vx-lstat img{display:none!important}.vx-lstat b{font-size:7.5px!important}
  .vx-metrics{gap:4px!important}.vx-metrics>article{padding:8px!important;min-height:66px}.vx-metrics b{font-size:15px!important}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:78px minmax(0,1fr)!important;padding:6px 7px!important}.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:78px!important}
  .vxc-roompiece-copy span{font-size:7px!important}.vxc-roompiece-copy b{font-size:10px!important}
  .vxc-stock-media{width:72px!important;height:72px!important;flex-basis:72px!important}
}
@media(max-width:375px){
  .vx-houses .vx-house{width:32px!important;height:28px!important;margin:-14px 0 0 -16px!important}.vx-node{width:29px!important;height:27px!important;margin:-13.5px 0 0 -14.5px!important}.vx-node .vx-nno{font-size:8px!important}
  .vx-hud-motherlode{width:68%!important}.vx-hudbig{font-size:11px!important}.vxp-mltitle>span{display:none!important}
}

/* Phone landscape: maximize the quarry, keep controls scrollable below. */
@media(max-height:520px) and (orientation:landscape){
  .vx-portalbar{position:relative!important;top:0!important}.vxp-gamehead{display:flex!important;padding:5px 8px!important}.vxp-gamecopy p{display:none!important}.vxp-gamechips{margin-top:0!important}
  .vx-stagewrap,.vx-lwrap{max-width:calc((100svh - 105px) * var(--v20-board-ratio))!important}.vx-stage,.vx-lstage{min-height:0!important;max-height:none!important}
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{min-height:88px!important}.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:78px!important}
}

/* ========================= LANDING PHONE ================================ */
@media(max-width:760px){
  .ob{overflow-x:hidden;overflow-y:auto}.ob .top{width:calc(100% - 24px);padding:max(11px,env(safe-area-inset-top)) 0 8px}.ob .brand img{width:31px;height:34px}.ob .brand strong{font-size:14px}.ob .brand small{font-size:6.5px}.ob .topnote{display:none}.ob .audiobtn{width:36px;height:36px}
  .ob .hero{width:calc(100% - 24px);grid-template-columns:1fr;min-height:0;padding:28px 0 max(68px,env(safe-area-inset-bottom));gap:18px;align-items:start}.ob .copy{padding:0}.ob h1{font-size:clamp(43px,14vw,66px);margin:12px 0 12px;line-height:.91}.ob .lead{font-size:12.5px;line-height:1.45;margin-bottom:15px;max-width:94%}.ob .enter{min-height:48px;padding:0 20px;font-size:11px}
  .v20-networkline{gap:6px!important;font-size:7.5px!important;letter-spacing:.13em!important}.v20-networkline>small{font-size:6.4px}.v20-networkline>img{width:56px;height:15px}.v20-networkline>i{width:15px!important}
  .ob .rewards{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:14px;max-width:none}.ob .reward{min-height:74px;padding:7px 5px;grid-template-columns:30px minmax(0,1fr);gap:5px;border-radius:10px}.ob .reward img,.ob .vxc-card-media{width:30px!important;height:30px!important}.ob .reward b{font-size:7.5px}.ob .reward span{font-size:6.6px;line-height:1.25;margin-top:3px}
  .ob .jackpot{justify-self:stretch;max-width:none;min-height:310px;padding:13px;border-radius:18px}.ob .jpmachine{width:min(180px,55%);margin:-4px auto -20px}.ob .jptotal{font-size:43px}.ob .jpsplit{margin-top:10px}.ob .jpnote{font-size:6.5px}.ob .socialrail{right:8px;bottom:max(8px,env(safe-area-inset-bottom))}
  .vxc-vines{height:130px!important;opacity:.45!important}.vxc-vines video{width:150%;max-width:none;transform:translateX(-16.7%)}
}
@media(max-width:390px){
  .ob .hero{width:calc(100% - 18px)}.ob h1{font-size:clamp(40px,13.8vw,56px)}.ob .lead{font-size:11.5px}.ob .reward{grid-template-columns:26px 1fr}.ob .reward img,.ob .vxc-card-media{width:26px!important;height:26px!important}.ob .reward span{display:none}.ob .reward{min-height:58px}.ob .jackpot{min-height:286px}.ob .jpmachine{width:155px}.ob .jptotal{font-size:38px}
}

@media(prefers-reduced-motion:reduce){
  .vxc-vines video{display:none!important}.vxc-vines{background:url('assets/vein/cinematic/entrance-vines-rev20.webp') top center/100% auto no-repeat;animation:none!important}
}

/* ===== vein-responsive-rev21.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV21 phone correction
   Screenshot-driven pass: mobile Hunt/Lucky readability, landing composition,
   permanent room animations and larger Robinhood transition.
   ========================================================================== */

/* The leafy foreground is intentionally removed from onboarding in REV21. */
.vxc-vines{display:none!important}

/* Essential game media is still allowed to play when a phone OS advertises
   reduced motion. Reduced-motion continues to suppress decorative CSS motion. */
@media(prefers-reduced-motion:reduce){
  .vxc-media>video{display:block!important}
  .ob-bg{display:block!important}
}
.vxc-media.vxc-playing:not(.vxc-video-ready)>img,
.vxc-media.vxc-always:not(.vxc-video-ready)>img{opacity:1!important}
.vxc-media.vxc-playing:not(.vxc-video-ready)>video,
.vxc-media.vxc-always:not(.vxc-video-ready)>video{opacity:0!important}
.vxc-media.vxc-video-ready.vxc-playing>img,
.vxc-media.vxc-video-ready.vxc-always>img{opacity:0!important}
.vxc-media.vxc-video-ready.vxc-playing>video,
.vxc-media.vxc-video-ready.vxc-always>video{opacity:1!important}

/* Bigger branded loading state between entrance / Vein transitions. */
.vxc-loader video{width:190px!important;height:190px!important}
.vxc-loader-ring{width:250px!important;height:250px!important;transform:translate(-50%,-58%)!important}
.vxc-loader small{font-size:8px!important;letter-spacing:.22em!important}
.vxc-loader b{font-size:11px!important;letter-spacing:.06em!important}

/* =======================================================================
   LANDING — phone composition
   ======================================================================= */
@media(max-width:700px){
  .ob{overflow-x:hidden!important;overflow-y:auto!important;min-height:100svh!important}
  .ob .top{width:calc(100% - 24px)!important;padding:13px 0 6px!important}
  .ob .brand img{width:34px!important;height:37px!important}.ob .brand strong{font-size:16px!important}.ob .brand small{font-size:7.5px!important}
  .ob .hero{width:calc(100% - 24px)!important;min-height:0!important;padding:clamp(116px,20vh,165px) 0 14px!important;gap:14px!important;overflow:visible!important}
  .ob .copy,.ob .lead,.ob .cta,.ob .rewards,.ob .jackpot,.ob .jpbody,.ob .jpsplit{min-width:0!important;max-width:100%!important;width:100%!important}
  .ob .eyebrow{font-size:7.2px!important;letter-spacing:.14em!important;gap:6px!important;max-width:100%;white-space:nowrap}.ob .eyebrow i{width:15px!important}.v20-networkline>img{width:57px!important;height:15px!important}.v20-networkline>small{font-size:6.5px!important}
  .ob h1{font-size:clamp(40px,12.3vw,54px)!important;line-height:.92!important;letter-spacing:-.068em!important;margin:12px 0 12px!important;max-width:100%!important}
  .ob .lead{font-size:12.2px!important;line-height:1.48!important;margin:0 0 16px!important;overflow-wrap:anywhere!important}
  .ob .enter{width:100%!important;min-height:52px!important;border-radius:13px!important;font-size:11px!important;padding:0 18px!important;justify-content:space-between!important}

  /* Three benefits are visible at once. Stock Drops can no longer sit off-screen. */
  .ob .rewards{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important;margin:13px 0 0!important;padding:0!important;overflow:visible!important;scroll-snap-type:none!important}
  .ob .reward{min-width:0!important;min-height:76px!important;padding:8px 6px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:5px!important;text-align:center!important;border-radius:12px!important}
  .ob .reward .vxc-card-media,.ob .reward>img{width:36px!important;height:36px!important;flex:0 0 36px!important}.ob .reward b{font-size:8.5px!important;line-height:1.1!important}.ob .reward span{display:none!important}

  /* Motherlode stays premium but fits one phone width with both jackpot tiers. */
  .ob .jackpot{box-sizing:border-box!important;display:grid!important;grid-template-columns:88px minmax(0,1fr)!important;gap:8px!important;padding:12px!important;border-radius:17px!important;min-height:0!important;overflow:hidden!important;justify-self:stretch!important}
  .ob .jphead{grid-column:1/-1!important}.ob .jpmachine{width:86px!important;height:86px!important;margin:0 auto!important;align-self:center!important}.ob .jptotal{font-size:clamp(28px,8vw,36px)!important;text-align:left!important;white-space:nowrap!important;margin-top:5px!important}.ob .jplabel{text-align:left!important;font-size:6.5px!important}.ob .jpsplit{display:grid!important;grid-template-columns:1fr 1fr!important;gap:5px!important;margin-top:8px!important}.ob .jpsplit span{min-width:0!important;padding:7px 6px!important}.ob .jpsplit small{font-size:5.4px!important;letter-spacing:.07em!important}.ob .jpsplit b{font-size:8.7px!important;white-space:nowrap!important}.ob .jpnote{grid-column:1/-1!important;font-size:6px!important;overflow:hidden!important}.ob .livepill{font-size:5.8px!important;padding:5px 7px!important}

  /* Community links become part of document flow instead of covering jackpot UI. */
  .ob .socialrail{position:relative!important;right:auto!important;bottom:auto!important;inset:auto!important;display:flex!important;flex-direction:row!important;justify-content:center!important;gap:7px!important;width:100%!important;margin:4px auto calc(12px + env(safe-area-inset-bottom))!important;z-index:8!important}.ob .socialrail a{width:36px!important;height:36px!important;border-radius:11px!important}.ob .socialrail svg{width:15px!important;height:15px!important}
}
@media(max-width:370px){
  .ob .hero{width:calc(100% - 18px)!important;padding-top:110px!important}.ob h1{font-size:39px!important}.ob .lead{font-size:11.5px!important}.ob .reward{min-height:70px!important}.ob .reward .vxc-card-media,.ob .reward>img{width:31px!important;height:31px!important;flex-basis:31px!important}.ob .reward b{font-size:7.5px!important}.ob .jackpot{grid-template-columns:76px minmax(0,1fr)!important}.ob .jpmachine{width:72px!important;height:72px!important}.ob .jptotal{font-size:27px!important}
}

/* =======================================================================
   HUNT — mobile summary outside the art + smaller chamber furniture
   ======================================================================= */
@media(max-width:820px){
  .v21-hunt-summary{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.35fr);gap:6px;margin:0 0 6px;align-items:stretch}
  .v21-hunt-summary>.vx-hud{position:relative!important;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;transform:none!important;width:100%!important;max-width:none!important;min-width:0!important;height:auto!important;margin:0!important;box-sizing:border-box!important;display:flex!important;background:linear-gradient(150deg,rgba(22,16,10,.92),rgba(8,7,5,.94))!important;border:1px solid rgba(255,190,76,.13)!important;backdrop-filter:blur(12px)!important;-webkit-backdrop-filter:blur(12px)!important;box-shadow:0 9px 22px rgba(0,0,0,.25)!important}
  .v21-hunt-summary>.vx-hud-pool{padding:8px 9px!important;max-width:none!important;justify-content:center!important}.v21-hunt-summary .vx-hudlbl{font-size:6px!important}.v21-hunt-summary .vx-hudbig{font-size:16px!important}.v21-hunt-summary .vx-hudsub{display:block!important;font-size:5.8px!important}.v21-hunt-summary .vx-hudchips{margin-top:4px!important;gap:3px!important}.v21-hunt-summary .vx-hchip{font-size:5.2px!important;padding:2px 4px!important}.v21-hunt-summary .vx-hudnote{display:none!important}
  .v21-hunt-summary>.vx-hud-motherlode{padding:7px 8px!important;gap:6px!important}.v21-hunt-summary>.vx-hud-motherlode>img{display:block!important;width:33px!important;height:33px!important;flex:0 0 33px!important}.v21-hunt-summary .vx-mlcopy{min-width:0;flex:1}.v21-hunt-summary .vxp-mltitle{display:flex!important;justify-content:space-between!important;gap:5px!important;margin-bottom:4px!important}.v21-hunt-summary .vxp-mltitle>span{font-size:5.2px!important}.v21-hunt-summary .vxp-mltitle>b{font-size:7.2px!important}.v21-hunt-summary .vx-mldraws{display:grid!important;grid-template-columns:1fr 1fr!important;gap:3px!important}.v21-hunt-summary .vx-mldraws>span{padding:4px!important;min-width:0}.v21-hunt-summary .vx-mldraws>span b{font-size:7px!important;white-space:nowrap}.v21-hunt-summary .vx-mldraws>span small{display:none!important}

  /* With the two big cards gone, the map itself can stay visually clean. */
  .vx-stage .vx-hud-clock{right:4px!important;top:4px!important;padding:3px 5px!important;gap:3px!important;max-width:29%!important}.vx-stage .vx-hud-clock .vx-dial{width:27px!important;height:27px!important}.vx-stage .vx-dial-core strong{font-size:6.2px!important}.vx-stage .vx-clocktxt small{display:none!important}.vx-stage .vx-clocktxt b{font-size:6.5px!important}.vx-stage .vx-clocktxt span{display:none!important}
  .vx-stage .vx-hud-kit{right:4px!important;bottom:4px!important;max-width:27%!important;padding:3px 4px!important}.vx-stage .vx-hud-kit .vx-kitart{width:22px!important;height:22px!important}.vx-stage .vx-kittxt b{font-size:6px!important}.vx-stage .vx-hud-kit .vx-btn{display:none!important}
  .vx-stage .vx-ethplate{display:none!important}

  /* Chamber visual is deliberately smaller than REV20. The anchor/coordinate is
     untouched; only the art/badge footprint changes. */
  .vx-houses .vx-house{width:32px!important;height:28px!important;margin:-14px 0 0 -16px!important}
  .vx-node{width:29px!important;height:27px!important;margin:-13.5px 0 0 -14.5px!important;border-radius:7px!important;overflow:visible!important}
  .vx-node .vx-nno{font-size:8px!important;letter-spacing:.02em!important}
  .vx-node:before{content:"";position:absolute;inset:-8px;z-index:-1;border-radius:12px}
  .vx-node:hover,.vx-node.hov,.vx-node:focus-visible{transform:translateY(-1px) scale(1.025)!important}.vx-node.sel{transform:translateY(-1px) scale(1.02)!important}
}
@media(max-width:430px){
  .v21-hunt-summary{grid-template-columns:.82fr 1.38fr!important;gap:5px!important}.v21-hunt-summary>.vx-hud-pool{padding:6px!important}.v21-hunt-summary .vx-hudbig{font-size:14px!important}.v21-hunt-summary>.vx-hud-motherlode{padding:6px!important}.v21-hunt-summary>.vx-hud-motherlode>img{width:28px!important;height:28px!important;flex-basis:28px!important}.v21-hunt-summary .vx-mldraws>span b{font-size:6.4px!important}
  .vx-houses .vx-house{width:28px!important;height:25px!important;margin:-12.5px 0 0 -14px!important}.vx-node{width:25px!important;height:24px!important;margin:-12px 0 0 -12.5px!important;border-radius:6px!important}.vx-node .vx-nno{font-size:7.2px!important}
}

/* =======================================================================
   LUCKY VEIN — keep stats in the room, but spread them into small corners
   ======================================================================= */
@media(max-width:820px){
  .vx-lstage .vx-lhead{position:absolute!important;left:50%!important;top:4px!important;transform:translateX(-50%)!important;margin:0!important;display:block!important;z-index:19!important}
  .vx-lstage .vx-lclock{padding:3px 5px!important;gap:4px!important;border-radius:9px!important;background:rgba(12,9,6,.86)!important;box-shadow:0 7px 18px rgba(0,0,0,.32)!important}.vx-lstage .vx-lclock .vx-dial{width:27px!important;height:27px!important}.vx-lstage .vx-dial-core strong{font-size:6.2px!important}.vx-lstage .vx-lclocktxt small,.vx-lstage .vx-lclocktxt span{display:none!important}.vx-lstage .vx-lclocktxt b{font-size:6.6px!important;white-space:nowrap!important}
  .vx-lstage .vx-lstats{position:absolute!important;inset:0!important;left:0!important;right:0!important;top:0!important;transform:none!important;margin:0!important;display:block!important;z-index:18!important;pointer-events:none!important}
  .vx-lstage .vx-lstat{position:absolute!important;width:29%!important;min-width:0!important;max-width:29%!important;min-height:27px!important;padding:3px 5px!important;gap:3px!important;border-radius:7px!important;pointer-events:auto!important;background:rgba(11,8,6,.79)!important;box-shadow:0 6px 15px rgba(0,0,0,.3)!important}.vx-lstage .vx-lstat img{display:none!important}.vx-lstage .vx-lstat small{font-size:4.7px!important;letter-spacing:.06em!important;white-space:nowrap!important}.vx-lstage .vx-lstat b{font-size:6.7px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.vx-lstage .vx-lstat-bal .vx-btn,.vx-lstage .vx-lroll{display:none!important}
  .vx-lstage .vx-lstat-jack{left:4px!important;top:4px!important}.vx-lstage .vx-lstat-burn{left:4px!important;top:36px!important}.vx-lstage .vx-lstat-bal{right:4px!important;top:4px!important}.vx-lstage .vx-lstat-pot{right:4px!important;top:36px!important}
  .vx-tplate{width:23px!important;height:23px!important;font-size:8px!important;border-radius:6px!important}.vx-selchip{display:none!important}
  .vx-lconsole-shell{margin-top:6px!important}.vx-lhud-in{padding:7px!important}.vx-lamount{min-height:52px!important}.vx-linput{font-size:21px!important}.vx-quick{gap:4px!important}.vx-quick button{min-height:39px!important;font-size:8px!important}.vx-hsec{padding:10px!important}.vx-hsec>small{font-size:7px!important}.vx-bd span{font-size:9px!important}.vx-bd img{width:19px!important;height:19px!important}
}
@media(max-width:430px){
  .vx-lstage .vx-lstat{width:27%!important;max-width:27%!important;padding:2px 4px!important;min-height:24px!important}.vx-lstage .vx-lstat small{font-size:4.2px!important}.vx-lstage .vx-lstat b{font-size:6px!important}.vx-lstage .vx-lstat-burn,.vx-lstage .vx-lstat-pot{top:31px!important}.vx-lstage .vx-lclock .vx-dial{width:24px!important;height:24px!important}.vx-lstage .vx-lclocktxt b{font-size:5.8px!important}.vx-tplate{width:21px!important;height:21px!important;font-size:7.5px!important}
}

/* Secondary rooms: preserve the living header identity on phones instead of
   allowing it to collapse into a tiny thumbnail. */
@media(max-width:700px){
  .vxc-vault-stage,.vxc-forge-stage,.vxc-trade-stage{grid-template-columns:105px minmax(0,1fr)!important;min-height:112px!important;padding:8px!important;gap:8px!important}.vxc-vault-stage .vxc-hero-media,.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:96px!important}.vxc-roompiece-copy b{font-size:11px!important}.vxc-roompiece-copy span{font-size:7.2px!important}
  .vxs-crate .vxc-stock-media{width:92px!important;height:92px!important;flex-basis:92px!important}
}

@media(max-width:820px){
  .vx-ticker{display:flex!important;gap:6px!important;overflow-x:auto!important;scroll-snap-type:x mandatory!important;padding-right:0!important}
  .vx-ticker .vx-seg{flex:0 0 calc((100% - 6px)/2)!important;width:calc((100% - 6px)/2)!important;scroll-snap-align:start!important;min-width:0!important}
}
@media(max-width:380px){.vx-ticker .vx-seg{flex-basis:calc((100% - 5px)/2)!important;width:calc((100% - 5px)/2)!important}.vx-ticker{gap:5px!important}}

/* ===== vein-animation-rev22.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV22 animation reliability
   ========================================================================== */

/* Game/media motion is functional content. OS reduced-motion may disable CSS
   flourishes, but it must never remove the user's actual animated game props. */
.vxc-media>video,.vxc-event video,.jpmachine,.vx-lode-machine,.vxc-loader video,.ob-bg{display:block!important}

/* Keep the static poster visible until the browser has produced a real video
   frame. This prevents black/empty flashes on slower mobile connections. */
.vxc-media.vxc-playing:not(.vxc-video-ready):not(.v22-fallback-playing)>img,
.vxc-media.vxc-always:not(.vxc-video-ready):not(.v22-fallback-playing)>img{opacity:1!important}
.vxc-media.vxc-playing:not(.vxc-video-ready):not(.v22-fallback-playing)>video,
.vxc-media.vxc-always:not(.vxc-video-ready):not(.v22-fallback-playing)>video{opacity:0!important}
.vxc-media.vxc-video-ready:not(.v22-fallback-playing)>video{opacity:1!important}
.vxc-media.vxc-video-ready:not(.v22-fallback-playing)>img{opacity:0!important}

/* If WebM/VP9 autoplay is unavailable, transparent animated WebP becomes the
   visual layer. The video stays hidden until it recovers. */
.vxc-media.v22-fallback-playing>img{opacity:1!important;visibility:visible!important}
.vxc-media.v22-fallback-playing>video{opacity:0!important;visibility:hidden!important}
.v22-video-hidden{display:none!important}
.v22-standalone-fallback{display:block!important;object-fit:contain!important;object-position:center!important;pointer-events:none!important}

/* Static and animated states use one geometry box — no position/scale jump. */
.vxc-media{overflow:visible}
.vxc-media>img,.vxc-media>video{
  grid-area:1/1!important;position:relative!important;inset:auto!important;
  width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;
  margin:0!important;transform:none!important;object-fit:contain!important;object-position:50% 50%!important
}

/* Golden Vein now uses the dedicated generated loop while the state is active. */
.vxc-golden-banner{gap:8px!important}
.v22-golden-media{width:32px;height:32px;flex:0 0 32px;margin:-7px 0!important;filter:drop-shadow(0 0 9px rgba(255,190,47,.28))}
.v22-golden-media>img,.v22-golden-media>video{width:32px!important;height:32px!important}

/* Card hover/touch is the interaction surface, not the tiny media itself. */
.reward,.vx-item,.vx-vault,.vxs-crate,.vxp-benefits article,.vxp-howgrid article,
.vxp-burnmap,.vx-statmark,.vx-withdrawcell,.vxc-roompiece,.vxp-era-card,.vx-hud-kit,.vx-glass{touch-action:manipulation}

@media(max-width:700px){
  .v22-golden-media{width:25px;height:25px;flex-basis:25px;margin:-5px 0!important}
  .v22-golden-media>img,.v22-golden-media>video{width:25px!important;height:25px!important}
}

@media(prefers-reduced-motion:reduce){
  /* Functional game loops remain. Only CSS motion is reduced elsewhere. */
  .vxc-media>video,.vxc-event video,.jpmachine,.vx-lode-machine,.vxc-loader video,.ob-bg{display:block!important}
}

/* ===== vein-rev23.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein REV23
   Missions drawer + Robinhood loader composition.
   UI only; no Hunt/Lucky/reward-contract execution lives here.
   ========================================================================== */

/* ------------------------- Robinhood loading core ------------------------- */
.vxc-loader{display:grid!important;place-items:center!important;align-content:center!important}
.vxc-loader-core{
  position:relative;z-index:2;width:250px;height:250px;border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:24px 24px 22px;text-align:center;pointer-events:none
}
.vxc-loader-ring{
  width:316px!important;height:316px!important;left:50%!important;top:50%!important;
  transform:translate(-50%,-50%)!important;border-color:rgba(53,223,115,.15)!important;
  box-shadow:0 0 70px rgba(53,223,115,.055),0 0 120px rgba(244,161,25,.035),inset 0 0 38px rgba(255,181,47,.025)!important
}
.vxc-loader-core video{
  width:158px!important;height:158px!important;flex:none;object-fit:contain!important;
  margin:-7px 0 -3px!important;filter:drop-shadow(0 18px 38px rgba(0,0,0,.6)) drop-shadow(0 0 22px rgba(53,223,115,.08))!important
}
.vxc-loader-core small{
  display:block!important;margin:0!important;font:750 7.5px/1.15 var(--mono,"Geist Mono",monospace)!important;
  letter-spacing:.21em!important;color:#5ce287!important;text-transform:uppercase!important
}
.vxc-loader-core b{
  display:block!important;max-width:190px;margin:7px auto 0!important;
  font:750 10px/1.25 var(--display,Unbounded,sans-serif)!important;letter-spacing:.055em!important;
  color:#dcc59e!important;text-wrap:balance
}

/* ------------------------------- Missions -------------------------------- */
:root{
  --vxm-amber:#ffc857;--vxm-orange:#f59e0b;--vxm-green:#36df77;--vxm-ink:#f5e7d0;
  --vxm-muted:#98856d;--vxm-edge:rgba(255,194,79,.14);--vxm-glass:rgba(13,10,7,.89)
}
.vxm-trigger{
  position:fixed;left:74px;bottom:max(18px,env(safe-area-inset-bottom));z-index:9445;
  width:46px;height:46px;padding:0;border:1px solid rgba(255,194,79,.22);border-radius:14px;
  display:grid;place-items:center;cursor:pointer;color:#ffc857;
  background:linear-gradient(155deg,rgba(23,17,11,.94),rgba(8,7,5,.96));
  box-shadow:0 16px 42px rgba(0,0,0,.45),0 0 25px rgba(245,158,11,.075);
  backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px);transition:.18s ease
}
.vxm-trigger:hover{transform:translateY(-2px);border-color:rgba(255,200,87,.42);box-shadow:0 19px 48px rgba(0,0,0,.5),0 0 28px rgba(245,158,11,.13)}
.vxm-trigger svg{width:21px;height:21px}.vxm-trigger .vxm-badge{
  position:absolute;right:-5px;top:-5px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;
  display:none;place-items:center;background:#f59e0b;color:#161008;border:2px solid #080604;
  font:850 9px/1 "Geist",sans-serif;box-shadow:0 0 15px rgba(245,158,11,.4)
}
.vxm-trigger.has-missions .vxm-badge{display:grid}.vxm-trigger:after{
  content:"Missions";position:absolute;left:53px;top:50%;transform:translate(5px,-50%);opacity:0;pointer-events:none;
  padding:7px 9px;border:1px solid var(--vxm-edge);border-radius:8px;background:rgba(8,6,4,.94);color:#cdb58e;
  font:700 7px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.13em;text-transform:uppercase;white-space:nowrap;transition:.16s
}
.vxm-trigger:hover:after{opacity:1;transform:translate(0,-50%)}

.vxm-backdrop{position:fixed;inset:0;z-index:9510;background:rgba(2,2,1,.54);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:.22s ease}
.vxm-backdrop.open{opacity:1;pointer-events:auto}
.vxm-drawer{
  position:fixed;left:0;top:0;bottom:0;z-index:9511;width:min(470px,96vw);transform:translateX(-103%);
  display:flex;flex-direction:column;overflow:hidden;color:var(--vxm-ink);
  background:linear-gradient(165deg,rgba(24,17,10,.975),rgba(8,7,5,.985) 57%,rgba(8,13,9,.98));
  border-right:1px solid rgba(255,194,79,.18);box-shadow:28px 0 85px rgba(0,0,0,.62),0 0 60px rgba(245,158,11,.025);
  backdrop-filter:blur(25px) saturate(1.16);-webkit-backdrop-filter:blur(25px) saturate(1.16);
  transition:transform .28s cubic-bezier(.2,.75,.2,1);font-family:"Geist",system-ui,sans-serif
}
.vxm-drawer.open{transform:none}.vxm-drawer:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 13% 0,rgba(245,158,11,.09),transparent 32%),radial-gradient(circle at 95% 28%,rgba(54,223,119,.045),transparent 26%)}
.vxm-head{position:relative;z-index:1;padding:18px 18px 13px;border-bottom:1px solid rgba(255,255,255,.055)}
.vxm-headtop{display:flex;align-items:center;gap:12px}.vxm-headicon{width:44px;height:44px;display:grid;place-items:center;flex:none;border-radius:14px;border:1px solid rgba(255,194,79,.22);background:rgba(245,158,11,.075);color:#ffc857}.vxm-headicon svg{width:22px;height:22px}
.vxm-headcopy{min-width:0}.vxm-eyebrow{display:flex;align-items:center;gap:7px;font:750 7px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.2em;color:#b18b52;text-transform:uppercase}.vxm-eyebrow i{width:6px;height:6px;border-radius:50%;background:var(--vxm-green);box-shadow:0 0 10px rgba(54,223,119,.65)}
.vxm-head h2{margin:5px 0 0;font:780 18px/1.08 Unbounded,"Geist",sans-serif;letter-spacing:-.035em}.vxm-head p{margin:6px 0 0;color:#8d7c67;font-size:10.5px;line-height:1.45}.vxm-close{margin-left:auto;width:36px;height:36px;display:grid;place-items:center;border-radius:11px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);color:#9d8b75;cursor:pointer;font-size:20px}.vxm-close:hover{color:#ffc857;border-color:rgba(255,194,79,.24)}

.vxm-me{position:relative;z-index:1;margin:12px 14px 0;padding:11px;border:1px solid rgba(255,194,79,.1);border-radius:14px;background:linear-gradient(145deg,rgba(255,194,79,.04),rgba(0,0,0,.15));display:grid;grid-template-columns:minmax(0,1fr) repeat(3,auto);gap:9px;align-items:center}
.vxm-wallet{min-width:0}.vxm-wallet small,.vxm-stat small{display:block;font:700 6.7px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.13em;color:#776955;text-transform:uppercase}.vxm-wallet b{display:block;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:730 10px/1.2 "Geist",sans-serif;color:#d9c39f}.vxm-stat{min-width:59px;padding-left:9px;border-left:1px solid rgba(255,255,255,.055)}.vxm-stat b{display:block;margin-top:5px;font:780 13px/1 Unbounded,"Geist",sans-serif;color:#f0d59c}.vxm-stat.green b{color:#70e49a}

.vxm-tabs{position:relative;z-index:1;margin:10px 14px 0;padding:3px;display:grid;grid-template-columns:1fr 1fr;gap:3px;border:1px solid rgba(255,255,255,.055);border-radius:11px;background:rgba(0,0,0,.27)}.vxm-tabs button{height:34px;border:0;border-radius:8px;background:transparent;color:#81715f;cursor:pointer;font:700 9px/1 "Geist",sans-serif}.vxm-tabs button.on{background:linear-gradient(180deg,rgba(255,194,79,.13),rgba(245,158,11,.055));color:#f0c36e;box-shadow:inset 0 0 0 1px rgba(255,194,79,.10)}
.vxm-body{position:relative;z-index:1;flex:1;min-height:0;overflow-y:auto;padding:12px 14px calc(18px + env(safe-area-inset-bottom));scrollbar-width:thin;scrollbar-color:rgba(255,194,79,.2) transparent}.vxm-panel{display:none}.vxm-panel.on{display:block}
.vxm-sectionline{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 2px 9px}.vxm-sectionline span{font:730 7px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.16em;color:#8c795e;text-transform:uppercase}.vxm-sectionline b{font:650 8px/1 var(--mono,"Geist Mono",monospace);color:#5ddf87}

.vxm-card{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px;margin-bottom:8px;border:1px solid rgba(255,255,255,.055);border-radius:13px;background:linear-gradient(145deg,rgba(255,255,255,.027),rgba(0,0,0,.14));transition:.16s}.vxm-card:hover{border-color:rgba(255,194,79,.14);transform:translateY(-1px);background:linear-gradient(145deg,rgba(255,194,79,.045),rgba(0,0,0,.15))}.vxm-card.done{border-color:rgba(54,223,119,.11);background:linear-gradient(145deg,rgba(54,223,119,.035),rgba(0,0,0,.14))}
.vxm-platform{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#110d09;border:1px solid rgba(255,194,79,.11);color:#ffc857}.vxm-platform svg{width:19px;height:19px}.vxm-card.done .vxm-platform{color:#5cdf88;border-color:rgba(54,223,119,.16);background:rgba(54,223,119,.045)}
.vxm-copy{min-width:0}.vxm-copy small{display:block;font:700 6.5px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.14em;color:#776855;text-transform:uppercase}.vxm-copy h3{margin:5px 0 3px;font:720 11.5px/1.2 Unbounded,"Geist",sans-serif;color:#e4ceb0;letter-spacing:-.02em}.vxm-copy p{margin:0;color:#8e7c67;font-size:9.5px;line-height:1.4}.vxm-rewards{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.vxm-reward{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border-radius:999px;background:rgba(255,194,79,.055);border:1px solid rgba(255,194,79,.10);font:720 6.5px/1 var(--mono,"Geist Mono",monospace);color:#caa665;white-space:nowrap}.vxm-reward.oxr{color:#67df91;border-color:rgba(54,223,119,.12);background:rgba(54,223,119,.04)}.vxm-reward.queued{color:#9ee8b7}
.vxm-action{min-width:78px;height:35px;padding:0 10px;border-radius:9px;border:1px solid rgba(255,194,79,.18);background:linear-gradient(180deg,rgba(255,194,79,.11),rgba(245,158,11,.055));color:#efc56e;font:750 7px/1 "Geist",sans-serif;text-transform:uppercase;letter-spacing:.07em;cursor:pointer}.vxm-action:hover{border-color:rgba(255,194,79,.36);background:linear-gradient(180deg,rgba(255,194,79,.17),rgba(245,158,11,.08))}.vxm-action.claim{background:linear-gradient(180deg,#ffd36a,#e99b16);border-color:#ffd875;color:#191008}.vxm-action:disabled{cursor:default;opacity:.55;filter:none}.vxm-action.done{color:#68df92;border-color:rgba(54,223,119,.13);background:rgba(54,223,119,.035)}

.vxm-connect{margin:20px 0;padding:23px 17px;border:1px solid rgba(255,194,79,.12);border-radius:15px;text-align:center;background:radial-gradient(circle at 50% 0,rgba(245,158,11,.07),transparent 50%),rgba(0,0,0,.12)}.vxm-connect .ico{width:52px;height:52px;margin:auto;display:grid;place-items:center;border-radius:16px;border:1px solid rgba(255,194,79,.16);color:#ffc857;background:rgba(245,158,11,.055)}.vxm-connect .ico svg{width:25px}.vxm-connect h3{margin:13px 0 7px;font:750 14px/1.2 Unbounded,"Geist",sans-serif}.vxm-connect p{max-width:310px;margin:0 auto 14px;color:#8e7d69;font-size:10px;line-height:1.5}.vxm-connect button{height:39px;border:1px solid #ffd36a;border-radius:10px;background:linear-gradient(#ffd46e,#e99b17);color:#181007;font:800 8px/1 "Geist",sans-serif;text-transform:uppercase;letter-spacing:.08em;padding:0 16px;cursor:pointer}
.vxm-empty{padding:28px 15px;text-align:center;color:#796a58;font-size:10px}.vxm-empty b{display:block;margin-bottom:6px;color:#ba9d70;font-family:Unbounded,"Geist",sans-serif}

.vxm-rankrow{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px 10px;margin-bottom:6px;border:1px solid rgba(255,255,255,.045);border-radius:11px;background:rgba(255,255,255,.02)}.vxm-rankrow.top{border-color:rgba(255,194,79,.11);background:linear-gradient(90deg,rgba(255,194,79,.05),rgba(0,0,0,.08))}.vxm-rankno{font:800 10px/1 Unbounded,"Geist",sans-serif;color:#806f5a;text-align:center}.vxm-rankrow.top .vxm-rankno{color:#ffc857}.vxm-rankwho{min-width:0}.vxm-rankwho b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#d7c1a1;font-size:10px}.vxm-rankwho span{display:block;margin-top:3px;color:#756755;font:600 6.5px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.04em}.vxm-rankxp{text-align:right}.vxm-rankxp b{display:block;color:#e8bf70;font:780 10px/1 Unbounded,"Geist",sans-serif}.vxm-rankxp small{display:block;margin-top:3px;color:#6f6252;font:600 6px/1 var(--mono,"Geist Mono",monospace);text-transform:uppercase;letter-spacing:.08em}
.vxm-note{margin:10px 2px 0;color:#65594b;font:600 6.5px/1.45 var(--mono,"Geist Mono",monospace)}
.vxm-toast{position:absolute;left:14px;right:14px;bottom:15px;z-index:5;padding:10px 12px;border:1px solid rgba(54,223,119,.15);border-radius:10px;background:rgba(8,13,9,.96);color:#8ee7ac;font:650 8px/1.35 var(--mono,"Geist Mono",monospace);box-shadow:0 14px 40px rgba(0,0,0,.45);opacity:0;transform:translateY(8px);pointer-events:none;transition:.18s}.vxm-toast.show{opacity:1;transform:none}.vxm-toast.bad{color:#e99582;border-color:rgba(233,120,95,.18);background:rgba(17,8,6,.96)}

@media(max-width:700px){
  .vxc-loader-core{width:220px;height:220px}.vxc-loader-ring{width:280px!important;height:280px!important}.vxc-loader-core video{width:138px!important;height:138px!important}.vxc-loader-core small{font-size:7px!important}.vxc-loader-core b{font-size:9px!important}
  .vxm-trigger{left:62px;bottom:max(12px,env(safe-area-inset-bottom));width:42px;height:42px;border-radius:13px}.vxm-trigger svg{width:19px;height:19px}.vxm-trigger:after{display:none}
  .vxm-drawer{width:100vw;max-width:none;padding-top:env(safe-area-inset-top)}.vxm-head{padding:15px 14px 12px}.vxm-me{margin:10px 10px 0;grid-template-columns:minmax(0,1fr) repeat(3,auto);gap:5px;padding:9px}.vxm-stat{min-width:52px;padding-left:6px}.vxm-stat b{font-size:11px}.vxm-tabs{margin:8px 10px 0}.vxm-body{padding:10px 10px calc(14px + env(safe-area-inset-bottom))}.vxm-card{grid-template-columns:38px minmax(0,1fr);gap:9px;padding:10px}.vxm-platform{width:38px;height:38px}.vxm-action{grid-column:1/-1;width:100%;height:34px}.vxm-copy h3{font-size:10.5px}.vxm-copy p{font-size:9px}
}
@media(max-width:390px){
  .vxc-loader-core{width:204px;height:204px}.vxc-loader-ring{width:260px!important;height:260px!important}.vxc-loader-core video{width:128px!important;height:128px!important}
  .vxm-me{grid-template-columns:minmax(0,1fr) auto auto}.vxm-stat.oxr{display:none}.vxm-head p{font-size:9.5px}.vxm-head h2{font-size:16px}
}
@media(prefers-reduced-motion:reduce){.vxm-trigger,.vxm-drawer,.vxm-backdrop,.vxm-card,.vxm-toast{transition:none!important}.vxc-loader-ring:before,.vxc-loader-ring:after{animation:none!important}}
.vxm-progress{position:relative;z-index:1;margin:8px 14px 0}.vxm-progress>div{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 2px 6px}.vxm-progress span,.vxm-progress b{font:680 6.4px/1 var(--mono,"Geist Mono",monospace);letter-spacing:.11em;text-transform:uppercase}.vxm-progress span{color:#756653}.vxm-progress b{color:#b99359}.vxm-progress>i{display:block;height:4px;border-radius:99px;overflow:hidden;background:rgba(255,255,255,.055)}.vxm-progress>i>em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#e99517,#ffd365 66%,#5fe28c);box-shadow:0 0 11px rgba(255,190,70,.2);transition:width .35s ease}
@media(max-width:700px){.vxm-progress{margin:7px 10px 0}}

/* ===== vein-rev24-premium-gameplay.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV24 premium gameplay / scale / resolution pass
   20 Aug 2026

   Presentation only. No odds, contract addresses, transaction construction,
   payout math, wallet gating or round-result selection is changed here.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. DESKTOP DENSITY — restore breathing room at 100% browser zoom.
   REV20 deliberately filled ultra-wide screens. REV24 keeps the world large,
   but stops the HUD and secondary rooms from stretching edge-to-edge.
   -------------------------------------------------------------------------- */
@media (min-width:1181px){
  .vx-shell{
    width:min(100%,1880px)!important;
    max-width:1880px!important;
    padding-left:clamp(22px,2.25vw,46px)!important;
    padding-right:clamp(22px,2.25vw,46px)!important;
  }
  .vxp-gamehead{padding:11px 15px!important;margin-bottom:7px!important;gap:12px!important}
  .vxp-gamecopy h1{font-size:clamp(26px,1.9vw,36px)!important}
  .vxp-gamecopy p{font-size:clamp(9px,.72vw,11px)!important;line-height:1.45!important}
  .vxp-gamechips>span{min-height:29px!important;padding:0 9px!important;font-size:7.5px!important}

  .vx-hud-pool{padding:9px 12px!important;min-width:235px!important;gap:2px!important}
  .vx-hudbig{font-size:clamp(23px,1.65vw,30px)!important}
  .vx-hud-clock{padding:8px 12px 8px 9px!important;gap:9px!important}
  .vx-hud-clock .vx-dial{width:58px!important;height:58px!important}
  .vx-hud-clock .vx-clocktxt b,.vx-hud-clock b{font-size:14px!important}
  .vx-hud-clock small{font-size:8px!important}
  .vx-clocktxt span{font-size:8.5px!important}
  .vx-hud-motherlode{padding:8px 10px!important;min-width:330px!important}
  .vx-hud-kit{padding:7px 9px!important;gap:7px!important}
  .vx-kitart{width:42px!important;height:42px!important}

  .vx-pagehead{padding-top:4px!important;margin-bottom:10px!important}
  .vx-metrics{gap:10px!important;margin-bottom:10px!important}
  .vx-vgrid,.vx-items{gap:11px!important}
  .vx-vault,.vx-item{padding:19px!important}
}

/* --------------------------------------------------------------------------
   2. LIVE ECONOMY — six facts on public Vein, two on private Test Vein.
   -------------------------------------------------------------------------- */
.vxp-economybar{
  display:grid;
  grid-template-columns:minmax(205px,1.05fr) repeat(5,minmax(122px,.68fr))!important;
  gap:6px;
}
.vxp-econ-supply::before{background:linear-gradient(#ff6d45,#ffc857)!important;opacity:.7!important}
.vxp-econ-supply b{color:#ffba72!important;font-family:var(--mono)!important;font-size:12.5px!important;letter-spacing:.01em!important}
.v24-test-economy{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  position:sticky;top:8px;z-index:80;
  margin:0 0 8px;padding:6px;border:1px solid rgba(255,190,76,.12);border-radius:13px;
  background:linear-gradient(180deg,rgba(17,12,8,.94),rgba(8,6,4,.91));
  box-shadow:0 12px 28px rgba(0,0,0,.26),inset 0 1px rgba(255,255,255,.025);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)
}
.v24-test-economy .vxp-econfact{position:relative;min-height:50px;padding:8px 12px;border:1px solid rgba(255,255,255,.045);border-radius:10px;background:rgba(255,255,255,.018);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;overflow:hidden}
.v24-test-economy .vxp-econfact small{font:700 7px/1 var(--mono);letter-spacing:.13em;color:#776854}
.v24-test-economy .vxp-econfact b{font:800 13px/1.15 var(--display);color:#f3d291}
.v24-test-economy .vxp-econfact em{font:500 7.5px/1.2 var(--mono);font-style:normal;color:#786b5b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.v24-test-economy .vxp-econfact::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:2px;border-radius:2px;background:linear-gradient(#ffc857,#f97316)}

/* --------------------------------------------------------------------------
   3. HUNT ETH ENERGY CORE — idle continuously, release only on settled winner.
   -------------------------------------------------------------------------- */
.vx-ethplate.v24-eth-core{
  width:126px!important;height:126px!important;min-width:0!important;
  padding:0!important;border:0!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;
  display:grid!important;place-items:center!important;gap:0!important;
  transform:translate(-50%,-50%)!important;animation:none!important;
  overflow:visible!important;pointer-events:none!important;filter:none!important;
  z-index:9!important;
}
.v24-core-stack{position:relative!important;display:block!important;width:112px;height:112px;isolation:isolate;filter:drop-shadow(0 10px 20px rgba(0,0,0,.55)) drop-shadow(0 0 15px rgba(63,177,255,.18))}
.v24-core-idle-media{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;display:grid!important;place-items:center!important}
.v24-core-idle-media>img,.v24-core-idle-media>video{width:100%!important;height:100%!important;object-fit:contain!important;transform:none!important}
.v24-core-idle-media>video{mix-blend-mode:screen!important;filter:saturate(1.08) contrast(1.04);--vxc-scale:1}
.v24-core-release{position:absolute;inset:-7%;width:114%;height:114%;object-fit:contain;z-index:4;opacity:0;pointer-events:none;mix-blend-mode:screen;filter:saturate(1.16) brightness(1.08) drop-shadow(0 0 16px rgba(70,190,255,.48));transform:scale(.96);transition:opacity .12s ease,transform .35s cubic-bezier(.16,.8,.22,1)}
.v24-core-stack.is-releasing .v24-core-release{opacity:1;transform:scale(1.08)}
.v24-core-stack.is-releasing .v24-core-idle-media{opacity:.42;filter:brightness(1.28)}
.v24-core-aura{position:absolute;inset:23%;z-index:-1;border-radius:50%;background:radial-gradient(circle,rgba(76,191,255,.3),rgba(41,117,255,.11) 43%,transparent 72%);filter:blur(8px);animation:v24-core-breathe 2.8s ease-in-out infinite}
@keyframes v24-core-breathe{0%,100%{transform:scale(.9);opacity:.45}50%{transform:scale(1.17);opacity:.92}}
.v24-core-value{position:absolute!important;left:50%;bottom:-5px;transform:translateX(-50%);z-index:8;display:flex!important;flex-direction:column;align-items:center;gap:1px!important;min-width:100px;padding:5px 9px 6px;border:1px solid rgba(81,180,255,.18);border-radius:999px;background:rgba(7,10,14,.84);box-shadow:0 8px 22px rgba(0,0,0,.5),inset 0 1px rgba(255,255,255,.04);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.v24-core-value small{font-size:6.5px!important;letter-spacing:.18em!important;color:#7e8b98!important}
.v24-core-value b{font-size:11px!important;line-height:1!important;color:#c9ebff!important;text-shadow:0 0 12px rgba(82,187,255,.42)}

/* Winner energy path. The SVG is generated only after a confirmed result. */
.v24-energy-beam{position:absolute;inset:0;z-index:8;pointer-events:none;overflow:visible;animation:v24-beam-in .22s ease both}
.v24-beam-halo{fill:none;stroke:rgba(66,177,255,.28);stroke-width:12;stroke-linecap:round;filter:url(#v24-beam-glow)}
.v24-beam-line{fill:none;stroke:#7ed6ff;stroke-width:3.1;stroke-linecap:round;stroke-dasharray:7 8;filter:url(#v24-beam-glow);animation:v24-beam-flow .7s linear infinite}
.v24-beam-particle{fill:#d9f5ff;filter:url(#v24-beam-glow)}
@keyframes v24-beam-flow{to{stroke-dashoffset:-30}}
@keyframes v24-beam-in{from{opacity:0}to{opacity:1}}

/* --------------------------------------------------------------------------
   4. HUNT CHAMBERS — smaller normal footprint, persistent deposited amount,
      premium hover/selection, unmistakable winner.
   -------------------------------------------------------------------------- */
@media (min-width:1101px){
  .vx-houses .vx-house{width:64px!important;height:56px!important;margin:-28px 0 0 -32px!important}
  .vx-node{width:56px!important;height:48px!important;margin:-24px 0 0 -28px!important;border-radius:11px!important;font-size:15px!important}
  .vx-node .vx-nno{font-size:15px!important}
}
.vx-node{overflow:visible!important;transition:transform .2s cubic-bezier(.2,.75,.2,1),border-color .2s,box-shadow .2s,opacity .2s,filter .2s!important}
.vx-node:hover,.vx-node.hov,.vx-node:focus-visible{transform:translateY(-4px) scale(1.055)!important;z-index:12!important}
.vx-node.sel{transform:translateY(-2px) scale(1.035)!important;z-index:13!important;border-color:#ffcb62!important;box-shadow:0 0 0 1px rgba(255,200,87,.26),0 0 18px rgba(255,151,34,.22)!important}
.vx-namt{position:absolute;left:50%;top:calc(100% + 3px);z-index:6;transform:translateX(-50%);min-width:max-content;padding:3px 6px;border-radius:7px;border:1px solid rgba(255,194,87,.17);background:rgba(8,7,6,.88);box-shadow:0 5px 13px rgba(0,0,0,.46);font:800 7.5px/1 var(--mono);letter-spacing:.015em;color:#f0cc85;white-space:nowrap;pointer-events:none;opacity:.9}
.vx-namt[hidden]{display:none!important}
.vx-node.sel .vx-namt,.vx-node.hov .vx-namt,.vx-node:hover .vx-namt{border-color:rgba(255,202,91,.42);color:#ffe0a1;opacity:1}

/* Tiny orbiting motes: no layout movement and no canvas cost. */
.vx-nparticles{position:absolute;left:50%;top:50%;width:70px;height:62px;transform:translate(-50%,-50%);z-index:1;pointer-events:none;opacity:0;transition:opacity .18s}
.vx-nparticles::before,.vx-nparticles::after{content:"";position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:#ffce69;box-shadow:-26px -9px 0 #ff8b31,24px -16px 0 #ffe0a0,30px 10px 0 rgba(255,183,66,.75),-21px 19px 0 rgba(255,122,31,.8);filter:drop-shadow(0 0 4px rgba(255,175,56,.8));animation:v24-motes 2.2s linear infinite}
.vx-nparticles::after{animation-direction:reverse;animation-duration:2.8s;transform:rotate(45deg);opacity:.72}
.vx-node:hover .vx-nparticles,.vx-node.hov .vx-nparticles,.vx-node:focus-visible .vx-nparticles{opacity:.95}
.vx-node.sel .vx-nparticles{opacity:.55}
@keyframes v24-motes{to{transform:rotate(360deg)}}

/* Chamber artwork can finally grow on result; normal hover never changes its
   geometry. This makes the gold winner look physically larger than all others. */
.vx-houses .vx-house{transform-origin:50% 50%!important;transition:transform .3s cubic-bezier(.16,.8,.22,1),opacity .25s,filter .25s!important}
.vx-houses .vx-house.winner{z-index:19!important;opacity:1!important;animation:v24-house-win 1.18s ease-in-out infinite!important}
.vx-houses .vx-house.winner .vx-h-off{opacity:.03!important}
.vx-houses .vx-house.winner .vx-h-on{opacity:1!important;filter:sepia(.24) saturate(1.75) brightness(1.32) drop-shadow(0 0 14px rgba(255,223,114,.95)) drop-shadow(0 0 29px rgba(255,150,27,.72))!important}
.vx-houses .vx-house.loser{opacity:.22!important;filter:saturate(.34) brightness(.67)!important}
.vx-node.won{z-index:24!important;color:#191006!important;border-color:#ffe082!important;background:linear-gradient(145deg,#ffe47e,#ffb32b 58%,#f4771f)!important;box-shadow:0 0 0 2px rgba(255,229,137,.32),0 0 26px rgba(255,170,42,.72),0 12px 26px rgba(0,0,0,.56)!important;animation:v24-node-win 1.18s ease-in-out infinite!important}
.vx-node.won .vx-nno{font-size:18px!important;font-weight:900!important;text-shadow:0 1px rgba(255,255,255,.28)}
.vx-node.won .vx-namt{background:rgba(31,18,4,.92);border-color:rgba(255,226,132,.62);color:#fff0b5;transform:translateX(-50%) scale(.92)}
.vx-node.won .vx-nparticles{opacity:1!important;transform:translate(-50%,-50%) scale(1.38)}
.vx-node.lost{opacity:.25!important;filter:saturate(.32) brightness(.62)!important}
@keyframes v24-house-win{0%,100%{transform:scale(1.30)}50%{transform:scale(1.42)}}
@keyframes v24-node-win{0%,100%{transform:translateY(-8px) scale(1.30)}50%{transform:translateY(-10px) scale(1.40)}}

/* --------------------------------------------------------------------------
   5. ROUND STATE — the timer itself says SOLVING / RESOLVED.
   -------------------------------------------------------------------------- */
.vx-dial.is-solve .vx-dial-prog{stroke:#67bcff!important;filter:drop-shadow(0 0 5px rgba(82,180,255,.48))}
.vx-dial.is-resolved .vx-dial-prog{stroke:#69e88c!important;filter:drop-shadow(0 0 6px rgba(68,222,111,.58))}
.v24-solving{border-color:rgba(82,178,255,.28)!important;box-shadow:0 12px 34px rgba(0,0,0,.42),0 0 0 1px rgba(76,169,255,.08) inset!important}
.v24-resolved{border-color:rgba(94,229,128,.42)!important;background:radial-gradient(circle at 8% 50%,rgba(69,213,107,.12),transparent 42%),rgba(9,10,8,.88)!important;box-shadow:0 12px 34px rgba(0,0,0,.42),0 0 24px rgba(57,198,96,.12),inset 0 1px rgba(183,255,198,.06)!important}
.v24-resolved #vx-dial-label,.v24-resolved #vx-l-timer-label{color:#78e99a!important}
.v24-resolved #vx-round-timer,.v24-resolved #vx-l-timer{color:#8ef0a8!important;text-shadow:0 0 13px rgba(78,225,118,.36)}
.v24-solving #vx-round-timer,.v24-solving #vx-l-timer{color:#a6ddff!important}
.v24-stateword{font-size:7.7px!important;letter-spacing:.025em!important;white-space:nowrap!important}
.vx-lclock .v24-stateword{font-size:7.2px!important}

/* The timer is the focal point while solving. Result cards only support the
   confirmed winner and no longer cover a large portion of the cave. */
.vx-live-stage[data-state="solving"]{display:none!important}
.vx-live-stage[data-state="resolved"]{border-color:rgba(95,225,129,.4)!important;background:radial-gradient(circle at 0 0,rgba(63,217,104,.10),transparent 48%),rgba(7,9,7,.93)!important;box-shadow:0 12px 34px rgba(0,0,0,.48),0 0 20px rgba(56,199,95,.08)!important}
.vx-live-stage[data-state="resolved"] .vx-live-kicker,.vx-live-stage[data-state="resolved"] b{color:#8dea9f!important}
#vx-hunt-live-stage{left:auto!important;right:14px!important;top:91px!important;transform:none!important;width:min(340px,36%)!important;min-width:0!important;max-width:none!important;padding:9px 11px!important;border-radius:12px!important;text-align:left!important}
#vx-lucky-live-stage{top:90px!important;width:min(360px,42%)!important;min-width:0!important;max-width:none!important;padding:9px 11px!important;border-radius:12px!important}
.vx-live-stage .vx-live-kicker{font-size:6.4px!important;margin-bottom:4px!important}.vx-live-stage b{font-size:11px!important}.vx-live-stage span{font-size:8px!important}.vx-live-metrics{margin-top:6px!important;gap:4px!important}.vx-live-metrics em{min-width:82px!important;padding:5px 7px!important}.vx-live-metrics small{font-size:5.8px!important}.vx-live-metrics strong{font-size:8.5px!important}

/* --------------------------------------------------------------------------
   6. LUCKY VEIN — selected/hover particles + larger resolved tunnel number.
   -------------------------------------------------------------------------- */
.vx-tparticles{position:absolute;z-index:6;width:72px;height:72px;transform:translate(-50%,-50%);pointer-events:none;opacity:0;transition:opacity .18s,transform .2s}
.vx-tparticles::before,.vx-tparticles::after{content:"";position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:#ffc961;box-shadow:-29px -5px 0 #ff7d2f,25px -18px 0 #ffe49b,31px 13px 0 #ffb03d,-17px 27px 0 rgba(255,126,35,.85);filter:drop-shadow(0 0 4px rgba(255,177,54,.82));animation:v24-motes 2.35s linear infinite}
.vx-tparticles::after{animation-direction:reverse;animation-duration:3s;opacity:.65;transform:rotate(38deg)}
.vx-tunnel.hov .vx-tparticles{opacity:.96}
.vx-tunnel.picked .vx-tparticles{opacity:.52}
.vx-tunnel.winner{animation:none!important;transform:none!important;filter:none!important;opacity:1!important}
.vx-tunnel.winner .vx-tparticles{opacity:1!important;transform:translate(-50%,-50%) scale(1.5)}
.vx-tunnel.winner .vx-tover{opacity:1!important;filter:sepia(.25) saturate(1.65) brightness(1.25) drop-shadow(0 0 22px rgba(255,176,52,.44))!important}
.vx-tunnel.winner .vx-tplate{z-index:13!important;color:#181006!important;background:linear-gradient(145deg,#ffeb91,#ffc33f 58%,#f88422)!important;border-color:#ffeca9!important;box-shadow:0 0 0 2px rgba(255,233,157,.26),0 0 26px rgba(255,181,53,.76),0 9px 22px rgba(0,0,0,.45)!important;animation:v24-lucky-win 1.18s ease-in-out infinite!important}
.vx-tunnel.loser{opacity:.24!important;filter:saturate(.35) brightness(.67)!important}
.vx-tunnel.picked:not(.winner) .vx-tplate{box-shadow:0 0 0 1px rgba(255,204,97,.18),0 0 15px rgba(255,160,48,.16)}
@keyframes v24-lucky-win{0%,100%{transform:translate(-50%,-62%) scale(1.34)}50%{transform:translate(-50%,-66%) scale(1.52)}}

/* --------------------------------------------------------------------------
   7. VAULT + WORKSHOP — actual hover clips on the interactive cards.
   -------------------------------------------------------------------------- */
.v24-vault-hover-media{width:68px!important;height:68px!important;flex:0 0 68px!important;margin-right:0!important;overflow:visible!important}
.v24-vault-hover-media>img,.v24-vault-hover-media>video{width:100%!important;height:100%!important;object-fit:contain!important;margin:0!important;transform:none!important}
.v24-vault-hover-media>video,.v24-item-media>video{mix-blend-mode:screen!important;filter:saturate(1.08) contrast(1.03) drop-shadow(0 9px 18px rgba(249,115,22,.18));--vxc-scale:1}
.vx-vault:hover .v24-vault-hover-media{filter:drop-shadow(0 0 13px rgba(255,177,55,.2))}
.vx-vault.vx-sac:hover .v24-vault-hover-media{filter:drop-shadow(0 0 15px rgba(255,88,48,.22))}
.v24-item-media{width:112px!important;height:112px!important;align-self:center!important;overflow:visible!important}
.v24-item-media>img,.v24-item-media>video{width:100%!important;height:100%!important;object-fit:contain!important;margin:0!important;transform:none!important}
.vx-item:hover .v24-item-media{transform:translateY(-4px) scale(1.035);filter:drop-shadow(0 0 14px rgba(255,170,54,.18));transition:transform .2s cubic-bezier(.2,.75,.2,1),filter .2s}

/* --------------------------------------------------------------------------
   8. RESPONSIVE — the core remains visible, amounts stay legible, no overflow.
   -------------------------------------------------------------------------- */
@media (max-width:1180px){
  .v24-core-stack{width:90px;height:90px}.vx-ethplate.v24-eth-core{width:100px!important;height:100px!important}.v24-core-value{min-width:82px;padding:4px 7px}.v24-core-value b{font-size:9px!important}
  .vx-namt{font-size:6.8px;padding:2.5px 5px}
  .v24-vault-hover-media{width:60px!important;height:60px!important;flex-basis:60px!important}
  .v24-item-media{width:100px!important;height:100px!important}
}
@media (max-width:980px){
  .vxp-economybar:not(.v24-test-economy){display:flex!important;overflow-x:auto!important;grid-template-columns:none!important}
  .v24-test-economy{grid-template-columns:repeat(2,minmax(150px,1fr))!important;overflow-x:auto}
}
@media (max-width:820px){
  /* REV20 hid the platform entirely. REV24 keeps a compact game-core visible. */
  .vx-ethplate.v24-eth-core{display:grid!important;width:58px!important;height:58px!important;z-index:7!important}
  .v24-core-stack{width:54px;height:54px}
  .v24-core-value{bottom:-7px;min-width:60px;padding:2px 4px;border-radius:6px}.v24-core-value small{display:none!important}.v24-core-value b{font-size:6px!important}
  .vx-node .vx-namt{top:calc(100% + 2px);font-size:5.4px;padding:2px 3px;border-radius:5px}
  .vx-nparticles{width:48px;height:44px}.vx-nparticles::before,.vx-nparticles::after{transform:scale(.68);box-shadow:-18px -6px 0 #ff8b31,17px -10px 0 #ffe0a0,20px 8px 0 rgba(255,183,66,.75),-14px 12px 0 rgba(255,122,31,.8)}
  .vx-node.won .vx-nno{font-size:12px!important}
  @keyframes v24-house-win{0%,100%{transform:scale(1.2)}50%{transform:scale(1.3)}}
  @keyframes v24-node-win{0%,100%{transform:translateY(-3px) scale(1.18)}50%{transform:translateY(-4px) scale(1.28)}}
  #vx-hunt-live-stage{right:5px!important;top:46px!important;width:min(250px,53%)!important;padding:5px 7px!important}
  #vx-lucky-live-stage{top:48px!important;width:min(245px,55%)!important;padding:5px 7px!important}
  .vx-live-metrics{display:none!important}.vx-live-stage b{font-size:7px!important}.vx-live-stage span{font-size:5.7px!important}.vx-live-stage .vx-live-kicker{font-size:4.8px!important}
  .v24-stateword{font-size:4.8px!important;letter-spacing:0!important}
  .vx-lclock .v24-stateword{font-size:5.3px!important}
  .v24-vault-hover-media{width:48px!important;height:48px!important;flex-basis:48px!important}
  .v24-item-media{width:88px!important;height:88px!important}
}
@media (max-width:560px){
  .v24-test-economy{display:flex!important;gap:5px!important;overflow-x:auto}.v24-test-economy .vxp-econfact{flex:0 0 170px;min-height:45px}
  .vx-node .vx-namt{font-size:4.8px;max-width:56px;overflow:hidden;text-overflow:ellipsis}
  .v24-core-stack{width:46px;height:46px}.vx-ethplate.v24-eth-core{width:50px!important;height:50px!important}.v24-core-value{min-width:52px}.v24-core-value b{font-size:5.4px!important}
  .v24-energy-beam{z-index:6}
}

@media (prefers-reduced-motion:reduce){
  .v24-core-aura,.vx-nparticles::before,.vx-nparticles::after,.vx-tparticles::before,.vx-tparticles::after,.v24-beam-line,.vx-houses .vx-house.winner,.vx-node.won,.vx-tunnel.winner .vx-tplate{animation:none!important}
  .vx-houses .vx-house.winner{transform:scale(1.34)!important}.vx-node.won{transform:translateY(-8px) scale(1.34)!important}.vx-tunnel.winner .vx-tplate{transform:translate(-50%,-64%) scale(1.46)!important}
  .v24-beam-particle{display:none!important}
}

/* ===== vein-rev26-visual-polish.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV26 premium visibility / scale pass
   20 Aug 2026

   UI/VFX only. No odds, contracts, payout math, result selection, wallet or
   transaction behavior is changed here.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. GAME HEADER CHIPS — Hunt + Lucky Vein stay compact but clearly readable.
   -------------------------------------------------------------------------- */
@media (min-width:1181px){
  .vxp-gamechips{gap:9px!important}
  .vxp-gamechips>span{
    min-height:42px!important;padding:0 14px!important;gap:9px!important;
    border-radius:12px!important;font-size:10px!important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 8px 18px rgba(0,0,0,.14)
  }
  .vxp-gamechips img{width:29px!important;height:29px!important}
  .vxp-gamechips .vx-ethmark{width:22px!important;height:22px!important}
}
@media (min-width:821px) and (max-width:1180px){
  .vxp-gamechips>span{min-height:37px!important;padding:0 11px!important;font-size:9px!important;gap:7px!important}
  .vxp-gamechips img{width:25px!important;height:25px!important}
  .vxp-gamechips .vx-ethmark{width:19px!important;height:19px!important}
}
@media (max-width:820px){
  .vxp-gamechips>span{min-height:31px!important;padding:0 8px!important;font-size:7.8px!important;gap:6px!important}
  .vxp-gamechips img{width:21px!important;height:21px!important}
  .vxp-gamechips .vx-ethmark{width:16px!important;height:16px!important}
}

/* --------------------------------------------------------------------------
   2. HUNT ENERGY CORE — larger, raised slightly, no visible square video matte.
   -------------------------------------------------------------------------- */
.vx-ethplate.v24-eth-core{
  width:158px!important;height:158px!important;
  transform:translate(-50%,-59%)!important;
}
.v24-core-stack{width:142px!important;height:142px!important}
.v24-core-idle-media>video,
.v24-core-release{
  mix-blend-mode:screen!important;
  -webkit-mask-image:radial-gradient(circle at 50% 50%,#000 0 58%,rgba(0,0,0,.98) 66%,rgba(0,0,0,.74) 73%,transparent 82%);
  mask-image:radial-gradient(circle at 50% 50%,#000 0 58%,rgba(0,0,0,.98) 66%,rgba(0,0,0,.74) 73%,transparent 82%);
}
.v24-core-idle-media>video{filter:saturate(1.14) contrast(1.13) brightness(1.05) drop-shadow(0 0 12px rgba(67,184,255,.34))!important}
.v24-core-stack{filter:drop-shadow(0 13px 23px rgba(0,0,0,.62)) drop-shadow(0 0 22px rgba(63,177,255,.25))!important}
.v24-core-aura{inset:19%!important;filter:blur(10px)!important}
.v24-core-value{
  bottom:-7px!important;min-width:124px!important;padding:6px 12px 7px!important;
  border-color:rgba(88,191,255,.27)!important;background:rgba(5,9,14,.9)!important;
  box-shadow:0 10px 28px rgba(0,0,0,.56),0 0 22px rgba(55,163,255,.08),inset 0 1px rgba(255,255,255,.05)!important
}
.v24-core-value small{font-size:7.5px!important;color:#91a6b7!important}
.v24-core-value b{font-size:13.5px!important;color:#d9f2ff!important;text-shadow:0 0 16px rgba(82,187,255,.56)!important}

/* --------------------------------------------------------------------------
   3. HUNT CHAMBERS — +20% visual presence for chest + number in normal state.
      Hover/selected states keep the same premium motion on top of the larger base.
   -------------------------------------------------------------------------- */
@media (min-width:1101px){
  .vx-houses .vx-house{width:77px!important;height:67px!important;margin:-33.5px 0 0 -38.5px!important}
  .vx-node{width:67px!important;height:58px!important;margin:-29px 0 0 -33.5px!important;border-radius:13px!important}
  .vx-node .vx-nno{font-size:18px!important}
  .vx-namt{font-size:8.4px!important;padding:4px 7px!important}
  .vx-nparticles{width:82px!important;height:72px!important}
}
@media (min-width:821px) and (max-width:1100px){
  .vx-houses .vx-house{width:65px!important;height:58px!important;margin:-29px 0 0 -32.5px!important}
  .vx-node{width:65px!important;height:58px!important;margin:-29px 0 0 -32.5px!important;border-radius:13px!important}
  .vx-node .vx-nno{font-size:17px!important}
}
.vx-node:hover,.vx-node.hov,.vx-node:focus-visible{transform:translateY(-5px) scale(1.06)!important}
.vx-node.sel{transform:translateY(-3px) scale(1.045)!important}
.vx-node.won .vx-nno{font-size:21px!important}

/* --------------------------------------------------------------------------
   4. STOCK DROP HERO — make the reward chest the visual anchor of the header.
   -------------------------------------------------------------------------- */
@media (min-width:1181px){
  .vxs-dropvault{min-width:min(570px,47vw)!important;grid-template-columns:minmax(280px,1.18fr) minmax(195px,.82fr)!important}
  .vxs-crate{min-height:184px!important;padding:17px 18px!important;gap:15px!important}
  .vxc-stock-media{width:158px!important;height:158px!important;flex-basis:158px!important}
  .vxs-crate .vxc-media{margin:-10px 2px -10px -8px!important}
  .vxs-crate b{font-size:24px!important}
  .vxs-crate small{font-size:7.5px!important}.vxs-crate em{font-size:8px!important}
}
.vxs-crate .vxc-stock-media>video{
  mix-blend-mode:screen!important;
  -webkit-mask-image:radial-gradient(circle at 50% 50%,#000 0 60%,rgba(0,0,0,.9) 70%,transparent 84%);
  mask-image:radial-gradient(circle at 50% 50%,#000 0 60%,rgba(0,0,0,.9) 70%,transparent 84%);
  filter:saturate(1.12) brightness(1.07) drop-shadow(0 11px 22px rgba(249,115,22,.24))!important
}
.vxs-crate::before{content:"";position:absolute;left:-2%;top:50%;width:58%;aspect-ratio:1;transform:translateY(-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,174,42,.14),rgba(249,115,22,.055) 38%,transparent 69%);filter:blur(5px);pointer-events:none}

/* --------------------------------------------------------------------------
   5. WORKSHOP + TRADE LIVING HEADERS — larger motion anchor, same clean layout.
   -------------------------------------------------------------------------- */
@media (min-width:1181px){
  .vxc-forge-stage,.vxc-trade-stage{
    grid-template-columns:minmax(260px,340px) minmax(0,1fr)!important;
    min-height:224px!important;padding:18px 28px!important;gap:22px!important
  }
  .vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:214px!important}
}
.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{filter:drop-shadow(0 12px 24px rgba(0,0,0,.34)) drop-shadow(0 0 17px rgba(249,115,22,.08))}

/* --------------------------------------------------------------------------
   6. UPGRADE MID-HUNT — use the real loop continuously instead of CSS bobbing.
   -------------------------------------------------------------------------- */
.v26-upgrade-media{
  width:96px!important;height:82px!important;flex:0 0 96px!important;
  overflow:visible!important;filter:drop-shadow(0 11px 22px rgba(0,0,0,.52)) drop-shadow(0 0 18px rgba(249,115,22,.22))
}
.v26-upgrade-media>img,.v26-upgrade-media>video{width:100%!important;height:100%!important;object-fit:contain!important;transform:none!important}
.v26-upgrade-media>video{
  mix-blend-mode:screen!important;
  -webkit-mask-image:radial-gradient(ellipse at 50% 50%,#000 0 58%,rgba(0,0,0,.94) 68%,transparent 86%);
  mask-image:radial-gradient(ellipse at 50% 50%,#000 0 58%,rgba(0,0,0,.94) 68%,transparent 86%);
  filter:saturate(1.12) contrast(1.08) brightness(1.06)!important
}
.vx-qfhead{gap:18px!important}

/* --------------------------------------------------------------------------
   7. LANDING REWARD CARDS — icons read at a glance, especially Win ETH/Stocks.
   -------------------------------------------------------------------------- */
@media (min-width:761px){
  .ob .reward{grid-template-columns:66px minmax(0,1fr)!important;gap:13px!important;padding:15px 16px!important}
  .ob .reward img{width:54px!important;height:54px!important}
  .ob .reward:nth-child(2) img,.ob .reward.stock img{width:62px!important;height:62px!important}
}
@media (max-width:760px){
  .ob .reward{grid-template-columns:38px minmax(0,1fr)!important;gap:7px!important}
  .ob .reward img{width:34px!important;height:34px!important}
  .ob .reward:nth-child(2) img,.ob .reward.stock img{width:39px!important;height:39px!important}
}

/* --------------------------------------------------------------------------
   8. RESPONSIVE RETUNING — keep larger assets legible without covering gameplay.
   -------------------------------------------------------------------------- */
@media (max-width:1180px){
  .vx-ethplate.v24-eth-core{width:126px!important;height:126px!important;transform:translate(-50%,-58%)!important}
  .v24-core-stack{width:114px!important;height:114px!important}
  .v24-core-value{min-width:100px!important;padding:5px 9px 6px!important}.v24-core-value b{font-size:11px!important}.v24-core-value small{font-size:6.6px!important}
  .vxc-stock-media{width:128px!important;height:128px!important;flex-basis:128px!important}.vxs-crate{min-height:148px!important}
  .vxc-forge-stage,.vxc-trade-stage{grid-template-columns:190px minmax(0,1fr)!important}.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:164px!important}
  .v26-upgrade-media{width:84px!important;height:72px!important;flex-basis:84px!important}
}
/* REV91: Revenue Drop dashboard. Same card language as the rest of the page;
   tabular figures so columns line up down the strip. */
.vxs-dash .vxs-dashgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:12px}
.vxs-dash .vxs-dashgrid>span{display:flex;flex-direction:column;gap:3px;min-width:0}
.vxs-dash .vxs-dashgrid small{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.vxs-dash .vxs-dashgrid b{font-family:var(--display);font-weight:800;font-size:20px;color:var(--gold);
  font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.vxs-dash .vxs-dashgrid em{font-style:normal;font-size:11.5px;color:var(--dim);overflow-wrap:anywhere}
.vxs-tokens{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--gline-2)}
.vxs-tok{display:flex;align-items:center;gap:8px;padding:7px 11px;min-width:0;
  border:1px solid var(--edge);border-radius:var(--rad-pill);background:rgba(255,255,255,.03)}
.vxs-tok img{width:20px;height:20px;object-fit:contain;flex:none}
.vxs-tok b{font-size:12.5px;font-weight:600}
.vxs-tok strong{font-family:var(--mono);font-size:12.5px;color:var(--gold);font-variant-numeric:tabular-nums}
.vxs-tok em{font-style:normal;font-size:11px;color:var(--faint)}
.vxs-tok-empty{font-size:12.5px;color:var(--dim)}

@media (max-width:820px){
  .vxs-dash .vxs-dashgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .vxs-dash .vxs-dashgrid b{font-size:17px}
  .vxs-tok img{width:18px;height:18px}
}

/* ===========================================================================
   REV89 — mobile formatting. Two faults, both only visible below 820px.

   1. CARD OVERFLOW. .vx-metrics is repeat(2,minmax(0,1fr)) here, so the tracks
      can shrink — but a grid/flex ITEM defaults to min-width:auto, meaning
      "never shrink below your content". A long figure therefore pushes out of
      a ~180px card instead of wrapping. min-width:0 on the items and their
      children is the fix; overflow-wrap lets an unbroken number wrap inside
      the card. Font sizes are deliberately NOT reduced — shrinking a financial
      figure to hide an overflow is a worse bug than the overflow.

   2. DESKTOP ICON SIZES LEAKING DOWN. Resolved at 390px: .vx-item img is
      118x118 (a third of the screen), .vxs-crate>img 116x116, .vx-mart img
      96x96, .vx-lode-seal 78x78 — none had a mobile override.
   =========================================================================== */
@media (max-width:820px){
  /* 1 — let card contents shrink and wrap */
  .vx-metrics>article,
  .vx-transparency>article,
  .vx-facts>span,
  .vxs-fact,
  .vx-comp-fig{min-width:0}

  .vx-metrics>article>*,
  .vx-transparency>article>*,
  .vx-facts>span>*,
  .vx-comp-fig>*{min-width:0;max-width:100%}

  /* Values are the long ones: tabular figures with a unit suffix. Allow a
     break inside the number rather than letting it leave the card. */
  .vx-metrics>article b,
  .vx-transparency>article b,
  .vx-facts b,
  .vx-comp-fig b{overflow-wrap:anywhere;word-break:normal;line-height:1.15}

  /* Labels and notes truncate instead of forcing the card open. */
  .vx-metrics>article small,
  .vx-transparency>article small,
  .vx-facts small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}

  .vx-metrics>article span,
  .vx-transparency>article span{overflow-wrap:anywhere}

  /* 2 — clamp the icons that never got a phone size */
  .vx-item img{width:76px!important;height:76px!important}
  .vx-mart img{width:64px!important;height:64px!important}
  .vxs-crate>img{width:84px!important;height:84px!important}
  .vx-lode-seal{width:56px!important;height:56px!important}
}

@media (max-width:430px){
  .vx-item img{width:64px!important;height:64px!important}
  .vx-mart img{width:56px!important;height:56px!important}
  .vxs-crate>img{width:72px!important;height:72px!important}
  .vx-lode-seal{width:48px!important;height:48px!important}
}

/* REV88: mobile chamber list. Hidden on desktop, where the map's 80x70 nodes
   already clear 44x44 comfortably. Rows are 52px so the target is ~358x52 at a
   390px viewport; a vertical list cannot overlap. */
.vx-chlist{display:none}
@media (max-width:820px){
  .vx-chlist{display:grid;gap:6px;margin:12px 0 0}
  .vx-chrow{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;
    width:100%;min-height:52px;padding:6px 12px;text-align:left;cursor:pointer;
    border:1px solid var(--edge);border-radius:var(--rad-md);
    background:linear-gradient(160deg,rgba(36,29,22,.92),rgba(11,10,8,.94));
    color:var(--ink);font:inherit;-webkit-tap-highlight-color:transparent}
  .vx-chrow-no{font-family:var(--mono);font-weight:700;font-size:15px;color:var(--gold);
    text-align:center;font-variant-numeric:tabular-nums}
  .vx-chrow-main{min-width:0;display:flex;flex-direction:column;gap:2px}
  .vx-chrow-region{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .vx-chrow-you{font-size:11px;color:var(--gold);font-style:normal}
  .vx-chrow-eth{font-family:var(--mono);font-size:12.5px;color:var(--dim);font-variant-numeric:tabular-nums}
  .vx-chrow.sel{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber) inset}
  .vx-chrow.sel .vx-chrow-region{color:var(--gold)}
}

/* REV85: protocol-wide figures sit under the wallet's own metrics. The rule
   is a visual separation only — these numbers are about the protocol, and
   nothing here should read as "your" balance. */
.vx-transparency{margin-top:18px;padding-top:18px;border-top:1px solid var(--gline-2)}
.vx-transparency b{font-variant-numeric:tabular-nums}

@media (max-width:820px){
  .vx-transparency{margin-top:12px;padding-top:12px}

  /* The plate stays laid out and stays transparent: layoutHuntEnergyBeam()
     measures #vx-hunt-core to place the winner beam and does not guard against
     a zero rect, so display:none here would fire the beam from the map corner.
     Only the visuals come off. */
  .vx-ethplate.v24-eth-core{display:grid!important;width:76px!important;height:76px!important;transform:translate(-50%,-57%)!important}
  /* The crystal renders as an opaque black rectangle on iOS (WebKit ignores
     WebM AlphaMode), and #vx-plate-eth is the same number already shown in the
     top HUD by #vx-pot. Both come off the small screen. */
  .v24-core-stack,.v24-core-value{display:none!important}
  .vx-houses .vx-house{width:50px!important;height:44px!important;margin:-22px 0 0 -25px!important}
  .vx-node{width:46px!important;height:41px!important;margin:-20.5px 0 0 -23px!important;border-radius:9px!important}
  .vx-node .vx-nno{font-size:12.5px!important}
  .vxc-stock-media{width:100px!important;height:100px!important;flex-basis:100px!important}.vxs-crate{min-height:118px!important}
  .vxc-forge-stage,.vxc-trade-stage{grid-template-columns:112px minmax(0,1fr)!important}.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:108px!important}
  .v26-upgrade-media{width:68px!important;height:58px!important;flex-basis:68px!important}
}
@media (max-width:430px){
  .vx-houses .vx-house{width:43px!important;height:38px!important;margin:-19px 0 0 -21.5px!important}
  .vx-node{width:38px!important;height:36px!important;margin:-18px 0 0 -19px!important}
  .vx-node .vx-nno{font-size:10.8px!important}
  .vxc-stock-media{width:86px!important;height:86px!important;flex-basis:86px!important}
  .vxc-forge-stage,.vxc-trade-stage{grid-template-columns:90px minmax(0,1fr)!important}.vxc-forge-stage .vxc-hero-media,.vxc-trade-stage .vxc-hero-media{height:88px!important}
  .v26-upgrade-media{width:58px!important;height:50px!important;flex-basis:58px!important}
}
@media (max-width:375px){
  .vx-houses .vx-house{width:38px!important;height:34px!important;margin:-17px 0 0 -19px!important}
  .vx-node{width:35px!important;height:32px!important;margin:-16px 0 0 -17.5px!important}.vx-node .vx-nno{font-size:9.6px!important}
}

@media (prefers-reduced-motion:reduce){
  .v26-upgrade-media>video{display:none!important}.v26-upgrade-media>img{opacity:1!important}
}

/* ===== vein-rev27-premium-finishing.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV27 premium finishing pass
   20 Aug 2026

   Visual / presentation only. Keeps REV24–REV26 gameplay, contracts, payouts,
   randomness and wallet transaction wiring untouched.
   ========================================================================== */

/* 1) Hunt ETH core: use the alpha-clean source itself. No blend-mode or CSS
      mask is allowed to create a rectangular matte around the animation. */
.v24-core-idle-media,.v24-core-stack,.v24-core-release{background:transparent!important}
.v24-core-idle-media>video,.v24-core-release{
  mix-blend-mode:normal!important;
  -webkit-mask-image:none!important;mask-image:none!important;
  background:transparent!important
}
.v24-core-idle-media>video{
  filter:saturate(1.13) contrast(1.07) brightness(1.06) drop-shadow(0 0 14px rgba(66,185,255,.34))!important
}
.v24-core-release{filter:saturate(1.16) brightness(1.08) drop-shadow(0 0 18px rgba(72,194,255,.48))!important}

/* 2) Burn supply is a first-class live economy card, never an invisible middle
      fact. The IDs remain identical, so the current chain adapter owns values. */
.vxp-econ-supply{
  display:grid!important;grid-template-columns:34px minmax(0,1fr)!important;
  grid-template-rows:auto auto auto!important;column-gap:10px!important;
  align-items:center!important;min-width:150px!important;
  border-color:rgba(255,104,61,.17)!important;
  background:radial-gradient(circle at 12% 50%,rgba(255,89,43,.10),transparent 38%),rgba(255,255,255,.018)!important
}
.vxp-econ-supply .v27-burn-icon{grid-column:1;grid-row:1/4;width:32px;height:32px;display:grid;place-items:center;border-radius:10px;border:1px solid rgba(255,111,64,.16);background:rgba(255,82,35,.045)}
.vxp-econ-supply .v27-burn-icon img{width:26px;height:26px;object-fit:contain;filter:drop-shadow(0 0 10px rgba(255,96,39,.32))}
.vxp-econ-supply>small,.vxp-econ-supply>b,.vxp-econ-supply>em{grid-column:2;min-width:0}
.vxp-econ-supply>small{grid-row:1}.vxp-econ-supply>b{grid-row:2;font-size:13px!important}.vxp-econ-supply>em{grid-row:3}

/* 3) Upgrade mid-hunt: the actual WebM keeps looping AND the complete prop
      gently floats like the old static treatment. Bigger art, more copy room. */
.vx-qfhead{gap:27px!important;min-height:126px!important}
.v26-upgrade-media{
  width:132px!important;height:112px!important;flex:0 0 132px!important;
  animation:v27-upgrade-float 3.2s ease-in-out infinite!important;
  filter:drop-shadow(0 14px 28px rgba(0,0,0,.56)) drop-shadow(0 0 22px rgba(249,115,22,.26))!important
}
.v26-upgrade-media>video{mix-blend-mode:screen!important;filter:saturate(1.14) contrast(1.08) brightness(1.07)!important}
@keyframes v27-upgrade-float{0%,100%{transform:translateY(4px)}50%{transform:translateY(-8px)}}

/* 4) Bring a Crew: make the referral machine a living prop instead of a tiny
      decal. The copy moves right naturally through the larger grid column. */
.vx-ref{grid-template-columns:172px minmax(0,1fr) auto!important;gap:24px!important;min-height:188px!important;padding:18px 22px!important}
.v27-referral-media{width:160px!important;height:142px!important;overflow:visible!important;filter:drop-shadow(0 15px 28px rgba(0,0,0,.48)) drop-shadow(0 0 18px rgba(249,115,22,.16))}
.v27-referral-media>img,.v27-referral-media>video{width:100%!important;height:100%!important;object-fit:contain!important}
.v27-referral-media>video{mix-blend-mode:screen!important;filter:saturate(1.1) brightness(1.05)!important}
.vx-refcopy h3{font-size:21px!important;line-height:1.18!important}.vx-refcopy p{font-size:13px!important}

/* 5) Landing page: stronger reward props and a premium live Hunt clock beside
      the main CTA. It reads the same VeinChain snapshot as the game. */
.ob .cta{align-items:stretch!important;gap:12px!important}
.v27-livehunt{position:relative;overflow:hidden;min-width:330px;min-height:62px;display:grid;grid-template-columns:minmax(118px,.82fr) minmax(118px,1fr);align-items:stretch;border:1px solid rgba(255,200,87,.18);border-radius:15px;background:radial-gradient(circle at 9% 50%,rgba(255,171,46,.10),transparent 36%),linear-gradient(150deg,rgba(25,18,11,.76),rgba(8,7,5,.72));box-shadow:inset 0 1px rgba(255,255,255,.04),0 15px 34px rgba(0,0,0,.22);backdrop-filter:blur(15px)}
.v27-livehunt::after{content:"";position:absolute;inset:-80% -25%;pointer-events:none;background:linear-gradient(110deg,transparent 43%,rgba(255,216,133,.055) 50%,transparent 57%);animation:v27-live-sweep 5.5s ease-in-out infinite}
@keyframes v27-live-sweep{0%,58%{transform:translateX(-34%)}100%{transform:translateX(34%)}}
.v27-live-main,.v27-live-pool{position:relative;z-index:1;padding:10px 13px;display:flex;flex-direction:column;justify-content:center;min-width:0}
.v27-live-pool{border-left:1px solid rgba(255,255,255,.055)}
.v27-livehunt small{font:700 7px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#8e785d;white-space:nowrap}
.v27-livehunt b{display:block;margin-top:4px;font:850 18px/1 var(--display);letter-spacing:-.04em;color:#ffd36b;white-space:nowrap}
.v27-livehunt em{display:block;margin-top:4px;font:600 7.5px/1.2 var(--mono);font-style:normal;color:#7f715f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v27-livehunt[data-phase="solve"]{border-color:rgba(87,184,255,.24);background:radial-gradient(circle at 10% 50%,rgba(73,167,255,.09),transparent 36%),linear-gradient(150deg,rgba(16,22,27,.79),rgba(7,8,9,.74))}.v27-livehunt[data-phase="solve"] .v27-live-main b{color:#9fdcff}
.v27-livehunt[data-phase="ready"]{border-color:rgba(63,213,112,.22)}.v27-livehunt[data-phase="ready"] .v27-live-main b{color:#83e7a1}

@media (min-width:761px){
  .ob .rewards{gap:12px!important;max-width:790px!important}.ob .reward{min-height:132px!important;grid-template-columns:88px minmax(0,1fr)!important;padding:16px 17px!important;gap:14px!important}
  .ob .reward img,.ob .reward:nth-child(2) img,.ob .reward.stock img{width:78px!important;height:78px!important}
  .ob .reward b{font-size:13px!important}.ob .reward span{font-size:10.5px!important}
}

/* 6) Desktop economy ribbon must fit all six live facts, including Burned. */
@media (min-width:1181px){
  .vxp-economybar:not(.v24-test-economy){grid-template-columns:minmax(185px,1.05fr) repeat(5,minmax(132px,.72fr))!important}
}
@media (min-width:821px) and (max-width:1180px){
  .vx-qfhead{gap:21px!important}.v26-upgrade-media{width:110px!important;height:94px!important;flex-basis:110px!important}
  .vx-ref{grid-template-columns:132px minmax(0,1fr)!important}.v27-referral-media{width:124px!important;height:112px!important}.vx-refstats{grid-column:2;justify-content:flex-start!important}
  .v27-livehunt{min-width:285px}
}
@media (max-width:820px){
  .vx-qfhead{gap:15px!important;min-height:88px!important}.v26-upgrade-media{width:86px!important;height:74px!important;flex-basis:86px!important}
  .vx-ref{grid-template-columns:92px minmax(0,1fr)!important;gap:14px!important;min-height:0!important;padding:14px!important}.v27-referral-media{width:88px!important;height:80px!important}.vx-refstats{grid-column:1/-1!important}.vx-refcopy h3{font-size:16px!important}.vx-refcopy p{font-size:11.5px!important}
  .v27-livehunt{width:100%;min-width:0;min-height:58px}.v27-livehunt b{font-size:15px}
}
@media(max-width:620px){
  .ob .cta{display:grid!important;grid-template-columns:1fr!important}.v27-livehunt{grid-template-columns:1fr 1fr}.ob .reward img,.ob .reward:nth-child(2) img,.ob .reward.stock img{width:50px!important;height:50px!important}
}
@media(max-width:430px){
  .vxp-econ-supply{grid-template-columns:27px minmax(0,1fr)!important}.vxp-econ-supply .v27-burn-icon{width:25px;height:25px}.vxp-econ-supply .v27-burn-icon img{width:21px;height:21px}
  .v27-livehunt{grid-template-columns:1fr}.v27-live-pool{border-left:0;border-top:1px solid rgba(255,255,255,.055)}
}
@media(prefers-reduced-motion:reduce){.v26-upgrade-media,.v27-livehunt::after{animation:none!important}}

/* ===== vein-rev28-visibility-guide.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV28 visibility + guide pass
   20 Aug 2026

   Presentation / information architecture only. No game odds, payout math,
   randomness, wallet transaction construction or deployed addresses change.
   ========================================================================== */

/* 1) HUNT ETH CORE — truly transparent. REV24 inherited backdrop-filter from
      the old glass ETH pill; that blurred the cave into a visible square even
      while the WebM itself had alpha. Kill the inherited blur/matte completely. */
.vx-ethplate.v24-eth-core{
  background:transparent!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  box-shadow:none!important;filter:none!important;
}
.v24-core-stack,.v24-core-idle-media,.v24-core-release{
  background:transparent!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
.v24-core-stack{filter:none!important}
.v24-core-idle-media>video,.v24-core-release{
  mix-blend-mode:normal!important;
  -webkit-mask-image:none!important;mask-image:none!important;
  filter:saturate(1.08) contrast(1.06) brightness(1.03)!important;
}
.v24-core-idle-media>img{background:transparent!important}
.v24-core-aura{display:none!important}

/* 2) HUNT CHAMBERS — another +20% from REV26 desktop sizing. The number plate,
      persistent ETH amount and particle orbit scale with the chamber itself. */
@media (min-width:1101px){
  .vx-houses .vx-house{width:92px!important;height:80px!important;margin:-40px 0 0 -46px!important}
  .vx-node{width:80px!important;height:70px!important;margin:-35px 0 0 -40px!important;border-radius:15px!important}
  .vx-node .vx-nno{font-size:22px!important;line-height:1!important}
  .vx-namt{font-size:9.6px!important;padding:5px 8px!important;top:calc(100% + 4px)!important}
  .vx-nparticles{width:98px!important;height:86px!important}
  .vx-node.won .vx-nno{font-size:26px!important}
}
@media (min-width:821px) and (max-width:1100px){
  .vx-houses .vx-house{width:78px!important;height:70px!important;margin:-35px 0 0 -39px!important}
  .vx-node{width:76px!important;height:68px!important;margin:-34px 0 0 -38px!important;border-radius:14px!important}
  .vx-node .vx-nno{font-size:20px!important}
  .vx-namt{font-size:8.8px!important;padding:4px 7px!important}
  .vx-nparticles{width:90px!important;height:80px!important}
  .vx-node.won .vx-nno{font-size:24px!important}
}
@media (min-width:581px) and (max-width:820px){
  .vx-houses .vx-house{width:58px!important;height:51px!important;margin:-25.5px 0 0 -29px!important}
  .vx-node{width:54px!important;height:48px!important;margin:-24px 0 0 -27px!important;border-radius:10px!important}
  .vx-node .vx-nno{font-size:14px!important}
}
@media (max-width:580px){
  /* Keep phone hit targets usable without letting 15 enlarged props overlap. */
  .vx-houses .vx-house{width:48px!important;height:42px!important;margin:-21px 0 0 -24px!important}
  .vx-node{width:43px!important;height:39px!important;margin:-19.5px 0 0 -21.5px!important}
  .vx-node .vx-nno{font-size:12px!important}
}

/* 3) HUNT CORNER HUD — slightly larger than REV24 so the live state reads from
      the whole map without returning to the old oversized UI. */
@media (min-width:1101px){
  .vx-hud-pool{padding:11px 15px!important;min-width:262px!important;gap:3px!important}
  .vx-hud-pool .vx-hudlbl{font-size:9.5px!important}
  .vx-hudbig{font-size:clamp(28px,1.9vw,34px)!important}
  .vx-hudsub{font-size:11.5px!important}.vx-hudnote{font-size:11px!important}
  .vx-hchip{padding:5px 10px!important;font-size:9px!important}.vx-hchip b{font-size:12px!important}

  .vx-hud-clock{padding:10px 15px 10px 11px!important;gap:11px!important}
  .vx-hud-clock .vx-dial{width:66px!important;height:66px!important}
  .vx-hud-clock .vx-clocktxt b,.vx-hud-clock b{font-size:16px!important}
  .vx-hud-clock small{font-size:8.7px!important}.vx-clocktxt span{font-size:9.5px!important}

  .vx-hud-motherlode{padding:10px 13px!important;min-width:382px!important;gap:13px!important}
  .vx-hud-motherlode>img{width:48px!important;height:48px!important}
  .vx-mlcopy>small{font-size:9px!important}.vx-mlcopy>small b{font-size:11px!important}
  .vx-mldraws>span{padding:7px 9px!important}.vx-mldraws b{font-size:13.5px!important}.vx-mldraws small{font-size:7.4px!important}

  .vx-hud-kit{padding:9px 12px 9px 10px!important;gap:9px!important}
  .vx-kitart{width:48px!important;height:48px!important}
  .vx-kittxt{min-width:118px!important}.vx-kittxt small{font-size:9px!important}.vx-kittxt b{font-size:15px!important}
  .vx-hud-kit .vx-btn{min-height:36px!important;padding:0 13px!important;font-size:11px!important}
}

/* 4) WORKSHOP BALANCE — Scanner art has more transparent visual mass than the
      other props, so reduce only its rendered artwork a touch. */
#vx-items .vx-item:nth-child(3) .vxc-item-media{transform:scale(.91)!important}
#vx-qitems [data-qforge="scanner"] img{transform:scale(.90)!important}
.vx-itemguide span:has(img[src$="ic-crystal-scanner.webp"]) img{transform:scale(.91)!important;transform-origin:center!important}

/* 5) LANDING — visually center the Mine OIX prop and keep all three reward
      cards deliberately balanced. */
.ob .reward:first-child>img{transform:translateY(7px)!important}
@media (max-width:760px){.ob .reward:first-child>img{transform:translateY(4px)!important}}

/* 6) HOW IT WORKS — wider drawer, larger reading scale, still responsive. */
@media (min-width:981px){
  .vxp-howdrawer{width:min(1080px,94vw)!important;padding:clamp(28px,3vw,42px)!important}
}
.vxp-howhead h2{font-size:clamp(34px,3.2vw,48px)!important}
.vxp-howhead p{max-width:760px!important;font-size:13px!important;line-height:1.55!important}
.vxp-guide-nav{gap:8px!important;padding-top:10px!important;padding-bottom:10px!important}
.vxp-guide-nav a{padding:8px 12px!important;font-size:8.4px!important}
.vxp-emission-deep{padding:19px!important}.vxp-emission-deep>header img{width:46px!important;height:46px!important}
.vxp-emission-deep>header b{font-size:14px!important}.vxp-emission-deep>header small{font-size:10.5px!important;max-width:760px!important}
.vxp-emission-stats small{font-size:7.5px!important}.vxp-emission-stats b{font-size:13px!important}.vxp-emission-stats em{font-size:7.8px!important}
.vxp-emission-flow span b{font-size:14px!important}.vxp-emission-flow span small{font-size:8.4px!important}.vxp-emission-deep>p{font-size:10.5px!important}
.vxp-valueflow header p,.vxp-flowcard p{font-size:10.5px!important;line-height:1.55!important}
.vxp-benefits article{min-height:86px!important}.vxp-benefits article img{width:52px!important;height:52px!important}.vxp-benefits article b{font-size:11.5px!important}.vxp-benefits article small{font-size:9px!important;line-height:1.42!important}
.vxp-loop{padding:16px!important}.vxp-loop>header>b{font-size:12px!important}.vxp-loop i{font-size:7.4px!important}.vxp-loop b{font-size:10.5px!important}.vxp-loop small{font-size:8.6px!important;line-height:1.42!important}
.vxp-burnmap header small{font-size:9.5px!important}.vxp-burnmap>div small{font-size:9px!important;line-height:1.45!important}
.vxp-howgrid{gap:12px!important}.vxp-howgrid article{min-height:196px!important;grid-template-columns:66px minmax(0,1fr)!important;gap:15px!important;padding:18px!important}.vxp-howgrid article>img{width:60px!important;height:60px!important}.vxp-howgrid h3{font-size:17px!important}.vxp-howgrid p{font-size:11px!important;line-height:1.55!important}.vxp-howgrid small{font-size:8.8px!important;line-height:1.5!important}.vxp-howstep{font-size:7.8px!important}
.vxp-whygrid b{font-size:11px!important}.vxp-whygrid p{font-size:9.7px!important;line-height:1.52!important}.vxp-whygrid article{padding:14px 15px!important}
.vxp-fair{padding:17px!important}.vxp-fair h3{font-size:16px!important}.vxp-fair b{font-size:10.5px!important}.vxp-fair small{font-size:9px!important;line-height:1.46!important}
.vxp-guide-faq summary{font-size:10.5px!important;padding-top:12px!important;padding-bottom:12px!important}.vxp-guide-faq p{font-size:9.7px!important;line-height:1.55!important}
.vxp-howtruth b{font-size:11px!important}.vxp-howtruth span{font-size:10px!important;line-height:1.5!important}

/* Contract register inside the player guide. Same live deployment registry as
   the full protocol explanation — no duplicated/hard-coded addresses. */
.v28-guide-contracts{scroll-margin-top:72px;margin-top:14px!important;padding:20px!important}
.v28-guide-contracts .vxi-contract-intro{font-size:11px!important;line-height:1.55!important;max-width:90ch!important}
#vxp-how-contracts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:14px}
#vxp-how-contracts .vxi-caddr{min-width:0;padding:12px 13px!important}
#vxp-how-contracts .vxi-caddr b{font-size:10.5px!important}
#vxp-how-contracts .vxi-caddr small{font-size:8.4px!important;line-height:1.35!important}
#vxp-how-contracts .vxi-caddr code{font-size:8px!important}

@media (max-width:980px){
  .vxp-howdrawer{width:min(860px,100%)!important}
  #vxp-how-contracts{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .vxp-howdrawer{width:100%!important;padding:18px!important}
  .vxp-howhead h2{font-size:32px!important}.vxp-howhead p{font-size:11.5px!important}
  .vxp-howgrid article{min-height:0!important;grid-template-columns:52px minmax(0,1fr)!important;padding:15px!important}.vxp-howgrid article>img{width:48px!important;height:48px!important}
  .vxp-howgrid p{font-size:10.5px!important}.vxp-howgrid small{font-size:8.6px!important}
  #vxp-how-contracts{grid-template-columns:1fr}
}

@media (prefers-reduced-motion:reduce){
  .v24-core-aura{display:none!important}
}

/* Runtime wraps landing reward images in .vxc-card-media; keep the first prop
   visually centered after that enhancement too. */
.ob .reward:first-child>.vxc-card-media{transform:translateY(7px)!important}
@media (max-width:760px){.ob .reward:first-child>.vxc-card-media{transform:translateY(4px)!important}}

/* Live era card participates in the guide readability pass as well. */
.vxp-era-card{grid-template-columns:72px minmax(0,1fr) auto!important;gap:18px!important;padding:18px 20px!important}
.vxp-era-orb{width:68px!important;height:68px!important}.vxp-era-orb img{width:50px!important;height:50px!important}
.vxp-era-copy>small,.vxp-era-release small{font-size:8px!important}.vxp-era-copy>b{font-size:23px!important}.vxp-era-copy>span{font-size:9.5px!important}.vxp-era-release b{font-size:18px!important}.vxp-era-release span{font-size:8px!important}
@media(max-width:700px){
  .vxp-era-card{grid-template-columns:54px minmax(0,1fr)!important;padding:14px!important;gap:12px!important}
  .vxp-era-orb{width:52px!important;height:52px!important}.vxp-era-orb img{width:38px!important;height:38px!important}
  .vxp-era-copy>b{font-size:20px!important}
}

/* ===== vein-rev29-landing-refinery-guide.css ===== */
/* ========================================================================
   CAVEWATCH · THE VEIN · REV29
   Landing foreground vines + Workshop refinery order + How To grid finish
   ======================================================================== */

/* Landing page only. The supplied VP9 carries a real alpha channel. */
.ob{isolation:isolate}
.ob .hero{position:relative;z-index:5}
.ob-vines{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center top;
  z-index:7;pointer-events:none;opacity:1;
  filter:none!important;mix-blend-mode:normal!important;
  transform:none!important;background:transparent!important;
}
/* Navigation remains above the decorative foreground; hero content sits under it. */
.ob .top{z-index:8}.ob .socialrail{z-index:8}

/* Orixium Refinery now sits immediately above Raw / tax / liquid / withdraw. */
.vxc-refinery-stage{
  margin:0 0 14px!important;min-height:126px!important;
  grid-template-columns:132px minmax(0,1fr)!important;gap:18px!important;
  padding:12px 20px!important;
  background:radial-gradient(circle at 8% 50%,rgba(249,115,22,.065),transparent 28%),linear-gradient(145deg,rgba(27,19,11,.7),rgba(7,6,5,.66))!important;
}
.vxc-refinery-stage .vxc-refinery-media{width:124px!important;height:106px!important}
.vxc-refinery-stage .vxc-roompiece-copy small{font-size:7.8px!important;letter-spacing:.18em!important}
.vxc-refinery-stage .vxc-roompiece-copy b{font-size:17px!important}
.vxc-refinery-stage .vxc-roompiece-copy span{max-width:78ch;font-size:10px!important;line-height:1.5!important}

/* Seven How-To cards used to leave an empty half-row. Finish with one wide card. */
#vxp-guide-games>article:last-child{
  grid-column:1/-1;min-height:164px!important;
  grid-template-columns:78px minmax(0,1fr)!important;align-items:center;
  background:radial-gradient(circle at 6% 50%,rgba(255,184,55,.06),transparent 26%),linear-gradient(145deg,rgba(255,255,255,.026),rgba(0,0,0,.1))!important;
}
#vxp-guide-games>article:last-child>img{width:72px!important;height:72px!important}
#vxp-guide-games>article:last-child h3{font-size:18px!important}
#vxp-guide-games>article:last-child p{max-width:104ch}
.vxp-howtruth{margin-top:16px!important}

@media(max-width:980px){
  .ob-vines{object-position:58% top}
  .vxc-refinery-stage{grid-template-columns:110px minmax(0,1fr)!important;padding:10px 16px!important}
  .vxc-refinery-stage .vxc-refinery-media{width:104px!important;height:92px!important}
}
@media(max-width:700px){
  #vxp-guide-games>article:last-child{grid-column:auto;min-height:0!important;grid-template-columns:52px minmax(0,1fr)!important;align-items:start}
  #vxp-guide-games>article:last-child>img{width:48px!important;height:48px!important}
  #vxp-guide-games>article:last-child h3{font-size:17px!important}
  .vxc-refinery-stage{grid-template-columns:76px minmax(0,1fr)!important;min-height:88px!important;padding:7px 9px!important;gap:8px!important}
  .vxc-refinery-stage .vxc-refinery-media{width:72px!important;height:72px!important}
  .vxc-refinery-stage .vxc-roompiece-copy b{font-size:12px!important}
  .vxc-refinery-stage .vxc-roompiece-copy span{font-size:8px!important}
  .ob-vines{object-position:62% top}
}

/* ===== vein-rev33-premium-hud.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV33 premium persistent HUD
   21 Aug 2026
   Presentation only: no odds, payout math, wallet signing, RPC or contract
   addresses are changed here.
   ========================================================================== */

/* Robinhood Chain loading beacon: REV34 uses a true VP9-alpha source.
   No blend-mode keying is used; wrappers remain genuinely transparent. */
.vxc-loader-core,
.vxc-loader-core::before,
.vxc-loader-core::after{
  background:transparent!important;
  box-shadow:none!important;
  border-color:transparent!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.vxc-loader-core video,
.vxc-loader-core img{
  background:transparent!important;
  mix-blend-mode:normal!important;
  isolation:auto!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}

/* ----------------------- persistent five-card command HUD ---------------- */
.vxp-economybar.v33-commandbar{
  position:sticky!important;
  top:82px!important;
  z-index:920!important;
  display:grid!important;
  grid-template-columns:minmax(220px,1.12fr) repeat(4,minmax(170px,.88fr))!important;
  gap:8px!important;
  padding:8px!important;
  margin:0 0 12px!important;
  border:1px solid rgba(255,197,88,.18)!important;
  border-radius:18px!important;
  background:
    radial-gradient(circle at 7% -25%,rgba(255,185,62,.10),transparent 34%),
    linear-gradient(180deg,rgba(18,13,9,.955),rgba(8,6,4,.93))!important;
  box-shadow:
    0 18px 42px rgba(0,0,0,.34),
    0 1px 0 rgba(255,215,133,.05) inset,
    0 -1px 0 rgba(0,0,0,.55) inset!important;
  backdrop-filter:blur(20px) saturate(1.08)!important;
  -webkit-backdrop-filter:blur(20px) saturate(1.08)!important;
  overflow:visible!important;
}
.vxp-economybar.v33-commandbar::before{
  content:"";position:absolute;left:18px;right:18px;top:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,209,113,.62) 24%,rgba(255,145,42,.36) 72%,transparent);
  pointer-events:none;
}
.v33-commandbar .v33-stat{
  position:relative!important;
  min-width:0!important;
  min-height:68px!important;
  display:grid!important;
  grid-template-columns:42px minmax(0,1fr)!important;
  align-items:center!important;
  column-gap:10px!important;
  padding:9px 12px!important;
  border:1px solid rgba(255,255,255,.055)!important;
  border-radius:13px!important;
  background:
    radial-gradient(circle at 0 50%,rgba(255,188,67,.055),transparent 54%),
    linear-gradient(145deg,rgba(255,255,255,.027),rgba(255,255,255,.008))!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 8px 22px rgba(0,0,0,.10)!important;
  overflow:hidden!important;
  transition:border-color .18s ease,background .18s ease,box-shadow .18s ease!important;
}
.v33-commandbar .v33-stat::before{
  content:""!important;position:absolute!important;left:0!important;top:12px!important;bottom:12px!important;width:2px!important;
  border-radius:2px!important;background:linear-gradient(#ffc857,#f97316)!important;opacity:.58!important;
}
.v33-commandbar .v33-stat::after{
  content:"";position:absolute;right:-30px;bottom:-48px;width:100px;height:100px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,180,58,.055),transparent 68%);pointer-events:none
}
.v33-commandbar .v33-stat:hover{
  border-color:rgba(255,204,105,.13)!important;
  background:radial-gradient(circle at 0 50%,rgba(255,188,67,.075),transparent 58%),rgba(255,255,255,.023)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 10px 26px rgba(0,0,0,.16)!important;
}
.v33-commandbar .v33-icon,
.v33-commandbar .vxp-econicon.v33-icon{
  width:38px!important;height:38px!important;display:grid!important;place-items:center!important;flex:none!important;
  border:1px solid rgba(255,193,72,.12)!important;border-radius:11px!important;
  background:radial-gradient(circle,rgba(255,195,82,.075),rgba(255,255,255,.012) 68%)!important;
  box-shadow:inset 0 1px rgba(255,255,255,.025)!important;
}
.v33-commandbar .v33-icon img,
.v33-commandbar .vxp-econicon.v33-icon img{
  width:27px!important;height:27px!important;object-fit:contain!important;
  filter:drop-shadow(0 5px 10px rgba(255,154,35,.20))!important;
}
.v33-commandbar .v33-copy{
  min-width:0!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:3px!important
}
.v33-commandbar small{
  font:750 7.4px/1 var(--mono)!important;letter-spacing:.145em!important;color:#88765f!important;text-transform:uppercase!important
}
.v33-commandbar b{
  max-width:100%!important;font:800 15px/1.08 var(--display)!important;letter-spacing:-.035em!important;color:#f3dfbd!important;
  white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
}
.v33-commandbar em{
  max-width:100%!important;font:520 7.4px/1.15 var(--mono)!important;font-style:normal!important;color:#756858!important;
  white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
}
.v33-commandbar .v33-stat-oxr b{color:#ffcb66!important}
.v33-commandbar .vxp-econ-yield::before{background:linear-gradient(#7fe5a2,#d9b85f)!important}
.v33-commandbar .vxp-econ-yield b{color:#afe7bd!important}
.v33-commandbar .vxp-econ-stock::before{background:linear-gradient(#57e08b,#b7ee79)!important}
.v33-commandbar .vxp-econ-stock b{color:#83e5a6!important;font-family:var(--mono)!important;letter-spacing:.025em!important}
.v33-commandbar .vxp-econ-hunt::before{background:linear-gradient(#ffc857,#ff8a32)!important}
.v33-commandbar .vxp-econ-lucky::before{background:linear-gradient(#ffca63,#ff6750)!important}
.v33-commandbar .v33-timer b{
  font-family:var(--mono)!important;font-size:18px!important;letter-spacing:.055em!important;color:#ffe09a!important;
  text-shadow:0 0 18px rgba(255,187,69,.10)
}
.v33-commandbar .vxp-econ-lucky b{color:#ffc86b!important}
.v33-telemetry-sink{display:none!important}

/* The old second telemetry ticker is retired in REV33. If a stale cached HTML
   somehow still contains it, do not let it reappear below the premium HUD. */
#vx-ticker{display:none!important}

/* ---------------------- Lucky Vein tunnel number plates ------------------
   The 1–5 plates are intentionally much larger on desktop. The user taps the
   tunnel, not the label, so this improves legibility without changing game hit
   geometry or tunnel positions. */
@media (min-width:1101px){
  .vx-tplate{
    width:74px!important;height:62px!important;border-radius:15px!important;
    font-size:24px!important;font-weight:900!important;
    border-width:2px!important;
    box-shadow:0 12px 28px rgba(0,0,0,.48),0 0 0 1px rgba(255,191,69,.08),inset 0 1px rgba(255,255,255,.055)!important;
  }
  .vx-tunnel.hov .vx-tplate{transform:translate(-50%,-62%) scale(1.08)!important}
  .vx-tunnel.picked .vx-tplate{transform:translate(-50%,-58%) scale(1.07)!important}
  .vx-tunnel.winner .vx-tplate{transform:translate(-50%,-60%) scale(1.12)!important}
}
@media (min-width:821px) and (max-width:1100px){
  .vx-tplate{width:62px!important;height:52px!important;border-radius:12px!important;font-size:20px!important;border-width:2px!important}
}
@media (min-width:581px) and (max-width:820px){
  .vx-tplate{width:55px!important;height:48px!important;border-radius:11px!important;font-size:18px!important}
}
/* Keep phones practical; still notably larger than the previous 21–23px plates. */
@media (max-width:580px){
  .vx-tplate{width:42px!important;height:38px!important;border-radius:9px!important;font-size:14px!important}
}

@media (max-width:1100px){
  .vxp-economybar.v33-commandbar{
    top:73px!important;display:flex!important;overflow-x:auto!important;overflow-y:hidden!important;
    scroll-snap-type:x proximity!important;scrollbar-width:none!important;padding:7px!important
  }
  .vxp-economybar.v33-commandbar::-webkit-scrollbar{display:none!important}
  .v33-commandbar .v33-stat{flex:0 0 205px!important;scroll-snap-align:start!important;min-height:62px!important}
  .v33-commandbar .v33-stat-oxr{flex-basis:230px!important}
}
@media (max-width:700px){
  .vxp-economybar.v33-commandbar{top:69px!important;border-radius:14px!important;margin-bottom:8px!important}
  .v33-commandbar .v33-stat{flex-basis:184px!important;min-height:58px!important;grid-template-columns:34px minmax(0,1fr)!important;gap:8px!important;padding:7px 9px!important}
  .v33-commandbar .v33-stat-oxr{flex-basis:205px!important}
  .v33-commandbar .v33-icon,.v33-commandbar .vxp-econicon.v33-icon{width:32px!important;height:32px!important;border-radius:9px!important}
  .v33-commandbar .v33-icon img,.v33-commandbar .vxp-econicon.v33-icon img{width:23px!important;height:23px!important}
  .v33-commandbar b{font-size:12.5px!important}.v33-commandbar .v33-timer b{font-size:15px!important}
  .v33-commandbar em{font-size:6.8px!important}
}
@media (prefers-reduced-motion:reduce){.v33-commandbar .v33-stat{transition:none!important}}

/* ===== vein-rev35-visual-recovery.css ===== */
/* ==========================================================================
   CaveWatch · The Vein · REV35 visual recovery
   Restores transparent media and removes missing chamber/refinery dependencies.
   Presentation only.
   ========================================================================== */

/* Never paint a matte behind transparent cinematic media. */
.vxc-media,
.vxc-media>video,
.vxc-media>img,
.v24-item-media,
.vxc-hero-media,
.vxc-stock-media,
.v24-vault-hover-media{
  background:transparent!important;
  background-color:transparent!important;
}
.vxc-media>video{border:0!important;box-shadow:none!important}
.v35-static-anim>img{opacity:1!important;visibility:visible!important;transform:none!important}

/* The clean source never shipped chamber.webp / chamber-r.webp. Render the
   chamber housings in CSS so a clean browser cache cannot produce broken-image
   boxes. Existing selection/winner classes continue to drive off/on opacity. */
.vx-houses .vx-house.vx-house-css{
  pointer-events:auto!important;
  perspective:420px;
}
.vx-houses .vx-house.vx-house-css .vx-house-shell{
  position:absolute!important;inset:0!important;display:block!important;
  overflow:visible!important;
  opacity:1;
  clip-path:polygon(18% 0,82% 0,100% 20%,96% 100%,4% 100%,0 20%);
  background:
    linear-gradient(90deg,rgba(0,0,0,.42),transparent 17%,transparent 83%,rgba(0,0,0,.42)),
    linear-gradient(180deg,#4a2b1b 0%,#2a1811 18%,#100b09 38%,#070605 100%);
  border:1px solid rgba(198,118,48,.55);
  box-shadow:
    inset 0 0 0 3px rgba(58,31,19,.9),
    inset 0 11px 18px rgba(255,144,48,.08),
    0 9px 18px rgba(0,0,0,.55);
  transition:opacity .18s ease,filter .18s ease,transform .18s ease;
}
.vx-houses .vx-house.vx-house-css .vx-house-shell::before{
  content:"";position:absolute;left:19%;right:19%;top:20%;bottom:5%;
  clip-path:polygon(16% 0,84% 0,100% 17%,94% 100%,6% 100%,0 17%);
  background:
    radial-gradient(ellipse at 50% 18%,rgba(255,128,31,.07),transparent 36%),
    linear-gradient(180deg,#17100c,#050403 72%);
  border:1px solid rgba(114,69,39,.72);
  box-shadow:inset 0 0 18px rgba(0,0,0,.9),0 0 0 3px rgba(35,20,14,.72);
}
.vx-houses .vx-house.vx-house-css .vx-house-shell::after{
  content:"";position:absolute;left:25%;right:25%;top:8%;height:5px;border-radius:8px;
  background:linear-gradient(90deg,transparent,#b3662e 20%,#ef9b45 50%,#b3662e 80%,transparent);
  box-shadow:0 0 8px rgba(238,130,48,.28);opacity:.52;
}
.vx-houses .vx-house.vx-house-r .vx-house-shell{transform:scaleX(-1)}
.vx-houses .vx-house.vx-house-css .vx-h-on{
  opacity:0!important;
  filter:brightness(1.28) saturate(1.35) drop-shadow(0 0 12px rgba(255,151,45,.62));
  background:
    radial-gradient(ellipse at 50% 40%,rgba(255,142,39,.26),transparent 52%),
    linear-gradient(180deg,#6a361c 0%,#3b1f12 20%,#180d08 43%,#080504 100%);
}
.vx-houses .vx-house.vx-house-css.lit .vx-h-on,
.vx-houses .vx-house.vx-house-css.sel .vx-h-on,
.vx-houses .vx-house.vx-house-css.winner .vx-h-on{opacity:1!important}
.vx-houses .vx-house.vx-house-css.lit .vx-h-off,
.vx-houses .vx-house.vx-house-css.sel .vx-h-off,
.vx-houses .vx-house.vx-house-css.winner .vx-h-off{opacity:.16!important}

/* Suppress browser broken-image glyphs in any optional cinematic decoration. */
.vxc-media img:not([src]),.vxc-media img[src=""]{display:none!important}

/* ===== vein-rev36-chambers-seo-polish.css ===== */
/* ========================================================================== 
   CaveWatch · REV36 · chamber restoration + landing reward alignment
   Presentation only. No game logic, odds, contracts or transaction paths.
   ========================================================================== */

/* --- Hunt chambers: restore real transparent mine-door art ---------------- */
.vx-houses .vx-house{
  background:none!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:visible!important;
  isolation:isolate;
}
.vx-houses .vx-house::before,
.vx-houses .vx-house::after{content:none!important;display:none!important}
.vx-houses .vx-house img{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center center!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  pointer-events:none!important;
  transform:none!important;
  transition:opacity .17s ease,filter .17s ease!important;
}
.vx-houses .vx-house .vx-h-off{
  opacity:1!important;
  filter:drop-shadow(0 7px 15px rgba(0,0,0,.62))!important;
}
.vx-houses .vx-house .vx-h-on{
  opacity:0!important;
  filter:drop-shadow(0 0 8px rgba(255,198,84,.48)) drop-shadow(0 8px 21px rgba(255,125,18,.42))!important;
}
.vx-houses .vx-house.lit .vx-h-on,
.vx-houses .vx-house.sel .vx-h-on,
.vx-houses .vx-house.winner .vx-h-on{opacity:1!important}
.vx-houses .vx-house.lit .vx-h-off,
.vx-houses .vx-house.sel .vx-h-off,
.vx-houses .vx-house.winner .vx-h-off{opacity:.13!important}
.vx-houses .vx-house.winner .vx-h-on{
  filter:drop-shadow(0 0 14px rgba(255,218,112,.9)) drop-shadow(0 10px 30px rgba(255,133,17,.68))!important;
}

/* --- Landing reward cards: identical visual wells and centered art -------- */
.ob .reward{
  align-items:center!important;
}
@media (min-width:761px){
  .ob .reward{
    grid-template-columns:82px minmax(0,1fr)!important;
    gap:14px!important;
  }
  .ob .reward>img,
  .ob .reward:nth-child(2)>img,
  .ob .reward.stock>img{
    display:block!important;
    width:78px!important;
    height:78px!important;
    min-width:78px!important;
    min-height:78px!important;
    max-width:78px!important;
    max-height:78px!important;
    object-fit:contain!important;
    object-position:50% 50%!important;
    place-self:center!important;
    margin:auto!important;
    transform:none!important;
  }
}
@media (max-width:760px){
  .ob .reward>img,
  .ob .reward:nth-child(2)>img,
  .ob .reward.stock>img{
    display:block!important;
    width:38px!important;
    height:38px!important;
    min-width:38px!important;
    min-height:38px!important;
    max-width:38px!important;
    max-height:38px!important;
    object-fit:contain!important;
    object-position:50% 50%!important;
    margin:0 auto!important;
    transform:none!important;
  }
}
@media (max-width:370px){
  .ob .reward>img,
  .ob .reward:nth-child(2)>img,
  .ob .reward.stock>img{
    width:34px!important;height:34px!important;
    min-width:34px!important;min-height:34px!important;
    max-width:34px!important;max-height:34px!important;
  }
}

/* ===== vein-rev42-stock-ready.css ===== */
/* CaveWatch · Stock Drops · REV42 READY STATE */
.vx-view[data-view="stock"]{--sd-green:#62e38f;--sd-green2:#a8f1bf;--sd-amber:#ffc857;--sd-red:#ff8b72}
.vxs-crate{isolation:isolate}
.vxs-crate::before{content:"";position:absolute;inset:-45%;z-index:0;pointer-events:none;background:conic-gradient(from 0deg,transparent 0 38%,rgba(255,200,87,.09) 45%,transparent 52% 100%);animation:v42DropRadar 8s linear infinite}
@keyframes v42DropRadar{to{transform:rotate(360deg)}}
#vxs-next-drop{color:var(--sd-amber)!important;text-shadow:0 0 18px rgba(255,200,87,.2)}
.vxs-cycle{border-color:rgba(255,200,87,.18)!important;color:#e5bb6a!important;background:rgba(255,200,87,.035)}
.vxs-cycle i{background:var(--sd-amber)!important;box-shadow:0 0 9px rgba(255,200,87,.7)!important;animation:v42Pulse 1.7s ease-in-out infinite}
@keyframes v42Pulse{50%{opacity:.38;transform:scale(.72)}}
#vxs-eligibility-card{position:relative;overflow:hidden;transition:border-color .25s,background .25s,box-shadow .25s}
#vxs-eligibility-card::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.08) 48%,transparent 62%);transform:translateX(-110%)}
#vxs-eligibility-card.is-eligible{border-color:rgba(98,227,143,.36)!important;background:radial-gradient(circle at 88% 12%,rgba(98,227,143,.13),transparent 45%),linear-gradient(145deg,rgba(24,76,43,.27),rgba(0,0,0,.2))!important;box-shadow:inset 0 1px 0 rgba(188,255,211,.05),0 0 34px rgba(34,197,94,.06)!important}
#vxs-eligibility-card.is-eligible b{color:var(--sd-green2)!important;text-shadow:0 0 18px rgba(98,227,143,.16)}
#vxs-eligibility-card.is-eligible::after{opacity:1;animation:v42EligibleSweep 4.8s ease-in-out infinite}
@keyframes v42EligibleSweep{0%,55%{transform:translateX(-110%)}100%{transform:translateX(110%)}}
#vxs-eligibility-card.is-short{border-color:rgba(255,139,114,.2)!important;background:linear-gradient(145deg,rgba(106,42,26,.16),rgba(0,0,0,.2))!important}
#vxs-eligibility-card.is-short b{color:#ffb096!important}
#vxs-eligibility-card.is-checking b{color:#d7bd92!important}
.vxs-mystery{position:relative;overflow:hidden;min-height:112px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:12px 8px;border:1px solid rgba(255,200,87,.085);border-radius:13px;background:radial-gradient(circle at 50% 30%,rgba(255,200,87,.055),transparent 42%),linear-gradient(150deg,rgba(255,255,255,.025),rgba(0,0,0,.16));transition:transform .18s,border-color .18s,background .18s}
.vxs-mystery::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 38%,rgba(255,215,138,.045) 50%,transparent 62%);transform:translateX(-120%);animation:v42MysterySweep 6.2s ease-in-out infinite}
.vxs-mystery:nth-child(2)::before{animation-delay:.45s}.vxs-mystery:nth-child(3)::before{animation-delay:.9s}.vxs-mystery:nth-child(4)::before{animation-delay:1.35s}.vxs-mystery:nth-child(5)::before{animation-delay:1.8s}.vxs-mystery:nth-child(6)::before{animation-delay:2.25s}.vxs-mystery:nth-child(7)::before{animation-delay:2.7s}.vxs-mystery:nth-child(8)::before{animation-delay:3.15s}
@keyframes v42MysterySweep{0%,62%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.vxs-mystery:hover{transform:translateY(-2px);border-color:rgba(255,200,87,.19);background:radial-gradient(circle at 50% 30%,rgba(255,200,87,.09),transparent 45%),rgba(0,0,0,.15)}
.vxs-mystery>i{position:relative;z-index:1;width:45px;height:45px;display:grid;place-items:center;border:1px solid rgba(255,200,87,.16);border-radius:13px;background:linear-gradient(145deg,rgba(255,200,87,.08),rgba(0,0,0,.2));font:800 21px/1 var(--display);font-style:normal;color:#8f7147;text-shadow:0 0 16px rgba(255,200,87,.18)}
.vxs-mystery>b{position:relative;z-index:1;font:720 8px/1 var(--mono);letter-spacing:.07em;color:#9a8161}.vxs-mystery>small{position:relative;z-index:1;font:500 7px/1 var(--mono);color:#5f5243}
.vxs-ready-user.is-eligible .vxs-user-main{border-color:rgba(98,227,143,.2);background:radial-gradient(circle at 95% 15%,rgba(98,227,143,.075),transparent 38%),linear-gradient(145deg,rgba(31,75,43,.16),rgba(255,255,255,.014))}
.vxs-ready-user.is-eligible .vxs-statusicon{border-color:rgba(98,227,143,.28);background:rgba(34,197,94,.09);color:var(--sd-green2);box-shadow:0 0 21px rgba(34,197,94,.08)}
.vxs-ready-user.is-eligible .vxs-user-side{border-color:rgba(98,227,143,.14);background:linear-gradient(145deg,rgba(34,197,94,.055),rgba(0,0,0,.2))}.vxs-ready-user.is-eligible .vxs-user-side b{color:var(--sd-green2)}.vxs-ready-user.is-eligible .vxs-user-side span{color:#82c597}
.vxs-ready-user.is-short .vxs-statusicon{border-color:rgba(255,139,114,.18);background:rgba(255,90,60,.055);color:#ff9b83}.vxs-ready-user.is-short .vxs-user-side b{color:#e9c28a}
.vxs-claim-locked{display:inline-flex!important;align-items:center;gap:7px!important;opacity:.72!important;border-color:rgba(255,200,87,.14)!important;background:linear-gradient(180deg,rgba(255,200,87,.065),rgba(0,0,0,.12))!important;color:#a99272!important}
.vxs-genesis-history{grid-column:1/-1;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:15px 16px;border:1px solid rgba(255,200,87,.075);border-radius:13px;background:radial-gradient(circle at 3% 50%,rgba(255,200,87,.06),transparent 28%),rgba(0,0,0,.13)}
.vxs-genesis-history>i{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;border:1px solid rgba(255,200,87,.14);background:rgba(255,200,87,.045);font:700 9px var(--mono);font-style:normal;color:#ad8651}.vxs-genesis-history b{display:block;font:730 11px var(--display);color:#d7c3a4}.vxs-genesis-history small{display:block;margin-top:4px;font-size:8.7px;line-height:1.35;color:#756653}.vxs-genesis-history em{font:720 7.5px var(--mono);font-style:normal;letter-spacing:.09em;color:#b68b4c}
@media(max-width:700px){.vxs-mystery{min-height:92px}.vxs-mystery>i{width:38px;height:38px;font-size:18px}.vxs-genesis-history{grid-template-columns:36px 1fr}.vxs-genesis-history>em{grid-column:2}}
@media(prefers-reduced-motion:reduce){.vxs-crate::before,.vxs-cycle i,.vxs-mystery::before,#vxs-eligibility-card::after{animation:none!important}}


/* REV43 · premium claim console · question marks belong only to YOUR STOCK DROP */
.vxs-ready-user{position:relative;overflow:hidden;grid-template-columns:minmax(0,1fr) 142px!important;gap:12px!important}
.vxs-ready-user::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,200,87,.32),transparent);opacity:.75}
.vxs-ready-user .vxs-user-main{position:relative;overflow:hidden;padding:17px!important;background:radial-gradient(circle at 12% 0,rgba(255,193,78,.05),transparent 34%),linear-gradient(145deg,rgba(255,255,255,.018),rgba(0,0,0,.17));transition:border-color .25s,background .25s}
.vxs-status{align-items:flex-start!important;gap:11px!important}.vxs-statusdot{flex:0 0 auto;width:9px;height:9px;margin-top:6px;border-radius:50%;background:#8b7350;border:2px solid rgba(255,255,255,.08);box-shadow:0 0 0 5px rgba(255,200,87,.025)}
.vxs-statuscopy>small{display:block;margin-bottom:5px;font:720 7px var(--mono);letter-spacing:.12em;color:#8b7556}.vxs-statuscopy>b{font-size:14px!important;letter-spacing:-.01em}.vxs-statuscopy>span{max-width:620px!important;color:#8c7c67!important}
.vxs-read-badge{margin-left:auto;flex:0 0 auto;padding:6px 8px;border:1px solid rgba(255,200,87,.1);border-radius:999px;background:rgba(0,0,0,.16);font:700 6.7px var(--mono);letter-spacing:.11em;color:#8d7758}
.vxs-ready-user.is-eligible .vxs-statusdot{background:#52d886;box-shadow:0 0 12px rgba(82,216,134,.55),0 0 0 5px rgba(82,216,134,.05)}.vxs-ready-user.is-short .vxs-statusdot{background:#c28c57;box-shadow:0 0 10px rgba(194,140,87,.22),0 0 0 5px rgba(194,140,87,.04)}
.vxs-claim-preview{position:relative;margin-top:14px;padding:13px 14px;border:1px solid rgba(255,200,87,.075);border-radius:13px;background:linear-gradient(145deg,rgba(255,200,87,.03),rgba(0,0,0,.16));overflow:hidden}
.vxs-claim-preview::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(255,220,154,.035) 50%,transparent 65%);transform:translateX(-120%);animation:v43ClaimSweep 7s ease-in-out infinite}
@keyframes v43ClaimSweep{0%,68%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.vxs-claim-preview-head{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;gap:14px}.vxs-claim-preview-head span small{display:block;font:700 6.5px var(--mono);letter-spacing:.13em;color:#72624f}.vxs-claim-preview-head span b{display:block;margin-top:4px;font:800 12px var(--display);letter-spacing:.04em;color:#e0b566}.vxs-claim-preview-head>em{font:500 7px var(--mono);font-style:normal;color:#675b4b;text-align:right}
.vxs-sealed-row{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.vxs-sealed-row i{height:44px;display:grid;place-items:center;border:1px solid rgba(255,200,87,.09);border-radius:10px;background:radial-gradient(circle at 50% 40%,rgba(255,200,87,.06),transparent 56%),rgba(0,0,0,.2);font:800 16px var(--display);font-style:normal;color:#826a49;transition:transform .2s,border-color .2s,background .2s}.vxs-sealed-row i:hover{transform:translateY(-1px);border-color:rgba(255,200,87,.19);background:rgba(255,200,87,.045)}
.vxs-claim-actions{margin-top:12px!important;display:grid!important;grid-template-columns:minmax(130px,auto) minmax(0,1fr);align-items:center!important}.vxs-claim-actions .vxs-btn{min-height:38px!important;justify-content:center!important;font:760 7px var(--mono)!important;letter-spacing:.11em!important}.vxs-claim-actions .vxs-mini-note{text-align:right!important}
.vxs-claim-locked{opacity:.66!important;letter-spacing:.12em!important}
.vxs-user-side{padding:15px 13px!important;align-content:center!important}.vxs-user-side>small{font:700 6.5px var(--mono)!important;letter-spacing:.12em!important}.vxs-user-side>b,.vxs-user-side>strong{display:block;margin-top:5px;font:800 18px var(--display)!important;color:#d8b36e}.vxs-user-side>strong{font-size:11px!important;letter-spacing:.06em}.vxs-user-side>span{display:block;margin-top:3px}.vxs-side-rule{height:1px;margin:13px 0;background:linear-gradient(90deg,transparent,rgba(255,200,87,.1),transparent)}
.vxs-basket .vxs-assets{margin-top:12px}.vxs-basket .vxs-asset{transition:transform .18s,border-color .18s,background .18s}.vxs-basket .vxs-asset:hover{transform:translateY(-2px);border-color:rgba(255,200,87,.16);background:radial-gradient(circle at 50% 20%,rgba(255,200,87,.045),transparent 50%),rgba(255,255,255,.018)}
.vxs-flow>em{position:relative;width:24px!important;height:1px!important;background:linear-gradient(90deg,rgba(255,200,87,.08),rgba(255,200,87,.3),rgba(255,200,87,.08));align-self:center}.vxs-flow>em::after{content:"";position:absolute;right:-1px;top:-2px;width:5px;height:5px;border-top:1px solid rgba(255,200,87,.38);border-right:1px solid rgba(255,200,87,.38);transform:rotate(45deg)}
@media(max-width:900px){.vxs-ready-user{grid-template-columns:1fr!important}.vxs-user-side{display:grid!important;grid-template-columns:1fr 1fr;column-gap:14px}.vxs-side-rule{display:none}.vxs-user-side>small:nth-of-type(2){grid-column:2;grid-row:1}.vxs-user-side>strong{grid-column:2}.vxs-claim-preview-head{align-items:flex-start;flex-direction:column}.vxs-claim-preview-head>em{text-align:left}.vxs-claim-actions{grid-template-columns:1fr!important}.vxs-claim-actions .vxs-mini-note{text-align:left!important}}
@media(prefers-reduced-motion:reduce){.vxs-claim-preview::after{animation:none!important}}

/* ===== vein-rev44-hunt-test-polish.css ===== */
/* ========================================================================== 
   CaveWatch · REV44 · Hunt live-test polish
   Visual-only Hunt refinements. No odds, payout split, contract addresses,
   randomness, entry amounts, or claim logic are changed here.
   ========================================================================== */

/* 1) Chamber art: the physical chamber itself must turn gold on hover/focus
      and remain gold while selected. The idle layer fully clears so the state
      reads as a real chamber transformation rather than two images blended. */
.vx-houses .vx-house.lit .vx-h-on,
.vx-houses .vx-house.sel .vx-h-on{
  opacity:1!important;
  filter:saturate(1.24) brightness(1.16)
    drop-shadow(0 0 12px rgba(255,220,118,.74))
    drop-shadow(0 10px 28px rgba(255,129,17,.58))!important;
}
.vx-houses .vx-house.lit .vx-h-off,
.vx-houses .vx-house.sel .vx-h-off{opacity:0!important}
.vx-houses .vx-house.sel{z-index:8!important;filter:brightness(1.05)}

/* 2) HOT chamber: longer readable badge with a controlled electric-blue buzz.
      The chamber remains gold; blue is only the heat/electricity signal. */
.vx-node.hot::before{
  content:"HOT"!important;
  top:-28px!important;
  left:50%!important;
  min-width:54px!important;
  height:22px!important;
  padding:0 10px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  border:1px solid rgba(92,207,255,.84)!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,rgba(10,31,46,.96),rgba(4,15,25,.96))!important;
  color:#d9f6ff!important;
  font:900 9px/1 var(--mono)!important;
  letter-spacing:.16em!important;
  text-shadow:0 0 8px rgba(114,221,255,.9)!important;
  box-shadow:0 0 0 1px rgba(61,169,255,.14),0 0 12px rgba(45,181,255,.5),0 0 24px rgba(31,129,255,.22)!important;
  animation:v44-hot-electric 1.12s steps(2,end) infinite!important;
  transform:translateX(-50%)!important;
}
@keyframes v44-hot-electric{
  0%,100%{filter:brightness(1);box-shadow:0 0 0 1px rgba(61,169,255,.14),0 0 10px rgba(45,181,255,.45),0 0 22px rgba(31,129,255,.18)}
  48%{filter:brightness(1.16);box-shadow:0 0 0 1px rgba(115,225,255,.38),0 0 18px rgba(67,205,255,.72),0 0 30px rgba(31,129,255,.28)}
  53%{filter:brightness(.96)}
}

/* 3) Centre ETH core: number always owns line one, unit owns line two. */
.v24-core-value{
  min-width:140px!important;
  min-height:48px!important;
  padding:6px 13px 7px!important;
  border-radius:16px!important;
}
.v24-core-value b{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  white-space:nowrap!important;
  font-size:13px!important;
  line-height:1!important;
  letter-spacing:.01em!important;
}
.v24-core-value b::after{
  content:"ETH";
  display:block;
  margin-top:3px;
  font:900 10px/1 var(--display);
  letter-spacing:.035em;
  color:#cdeeff;
  text-shadow:0 0 12px rgba(82,187,255,.4);
}

/* 4) Golden Vein belongs in the top centre HUD line, not floating deep over
      the map. Make it more celebratory without blocking chambers. */
.vxc-golden-banner{
  top:16px!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  min-height:44px!important;
  padding:9px 18px!important;
  gap:10px!important;
  border:1px solid rgba(255,213,93,.46)!important;
  background:linear-gradient(180deg,rgba(35,23,8,.94),rgba(14,10,5,.92))!important;
  color:#ffe07a!important;
  font-size:10.5px!important;
  letter-spacing:.17em!important;
  box-shadow:0 12px 34px rgba(0,0,0,.38),0 0 30px rgba(255,177,28,.18),inset 0 1px rgba(255,244,190,.08)!important;
  z-index:28!important;
}
.vxc-golden-banner i{width:9px!important;height:9px!important;box-shadow:0 0 16px #ffd35d!important}
.vxc-golden-banner .v22-golden-media{width:38px!important;height:38px!important;flex-basis:38px!important;margin:-6px 0!important}
.vxc-golden-banner .v22-golden-media>img,
.vxc-golden-banner .v22-golden-media>video{width:38px!important;height:38px!important}

/* 5) Slightly stronger bottom-corner systems on desktop. */
@media (min-width:1000px){
  .vx-hud-motherlode{
    min-width:420px!important;
    padding:12px 15px!important;
    gap:14px!important;
  }
  .vx-hud-motherlode>img{width:56px!important;height:56px!important}
  .vx-mldraws>span{padding:8px 10px!important}
  .vx-mldraws>span b{font-size:14.5px!important}

  .vx-hud-kit{
    padding:11px 14px 11px 12px!important;
    gap:11px!important;
    min-width:292px!important;
  }
  .vx-hud-kit .vx-kitart{width:56px!important;height:56px!important}
  .vx-hud-kit .vx-kittxt{min-width:126px!important}
  .vx-hud-kit .vx-kittxt small{font-size:9px!important}
  .vx-hud-kit .vx-kittxt b{font-size:16px!important}
  .vx-hud-kit .vx-btn{min-height:38px!important;padding:0 14px!important;font-size:11px!important}
}

/* Modal chamber art is a transparent gold chamber. Let it read larger than the
   old generic ETH pedestal without changing the modal's information density. */
.vx-modal[data-tone="gold"] .vx-m-art img{
  width:min(170px,72%)!important;
  height:150px!important;
  object-fit:contain!important;
  filter:drop-shadow(0 0 18px rgba(255,197,77,.28)) drop-shadow(0 14px 30px rgba(0,0,0,.46))!important;
}

@media (max-width:820px){
  .vxc-golden-banner{top:8px!important;min-height:34px!important;padding:7px 11px!important;font-size:7.5px!important;max-width:82%!important}
  .vxc-golden-banner .v22-golden-media{width:28px!important;height:28px!important;flex-basis:28px!important}
  .vxc-golden-banner .v22-golden-media>img,.vxc-golden-banner .v22-golden-media>video{width:28px!important;height:28px!important}
  .v24-core-value{min-width:80px!important;min-height:35px!important;padding:4px 7px!important}
  .v24-core-value b{font-size:7px!important}.v24-core-value b::after{font-size:6px!important;margin-top:2px}
  .vx-node.hot::before{top:-20px!important;min-width:38px!important;height:17px!important;padding:0 6px!important;font-size:6px!important}
}

@media (prefers-reduced-motion:reduce){.vx-node.hot::before{animation:none!important}}

/* ===== vein-rev45-lucky-assets.css ===== */
/* ========================================================================== 
   CaveWatch · REV45 · Lucky Vein asset recovery + controls alignment
   Uses the supplied transparent tunnel hover plates and Hunt chamber assets.
   No game math, odds, contracts, entry amounts, or automation logic changed.
   ========================================================================== */

/* Lucky tunnel lighting: the supplied overlay becomes the hover/selection
   state. Keep the geometry owned by the measured JS coordinates. */
.vx-tover{
  transition:opacity .16s ease,filter .18s ease!important;
}
.vx-tover img{
  object-fit:fill!important;
  image-rendering:auto!important;
}
.vx-tunnel.hov .vx-tover{
  opacity:.98!important;
  filter:brightness(1.08) saturate(1.12)
    drop-shadow(0 0 12px rgba(255,201,74,.38))
    drop-shadow(0 0 26px rgba(255,148,24,.20))!important;
}
.vx-tunnel.picked .vx-tover{
  opacity:1!important;
  filter:brightness(1.14) saturate(1.18)
    drop-shadow(0 0 14px rgba(255,216,89,.55))
    drop-shadow(0 0 32px rgba(255,137,19,.28))!important;
}
.vx-tunnel.winner .vx-tover{
  opacity:1!important;
  filter:brightness(1.22) saturate(1.22)
    drop-shadow(0 0 18px rgba(255,230,125,.68))
    drop-shadow(0 0 38px rgba(255,133,12,.34))!important;
}

/* The giant REV33 plates were too dominant. Keep them premium and readable,
   while allowing the actual illuminated tunnel artwork to be the hero. */
@media (min-width:1101px){
  .vx-tplate{
    width:74px!important;height:62px!important;border-radius:15px!important;
    font-size:24px!important;font-weight:900!important;
  }
}
@media (min-width:821px) and (max-width:1100px){
  .vx-tplate{width:62px!important;height:52px!important;font-size:20px!important}
}

/* Lucky Auto: All / minus / count / plus occupy one compact aligned grid.
   Rounds reserves the same first column so both steppers line up perfectly. */
#vx-auto-lucky .vxa2-lanes .vxa2-step,
#vx-auto-lucky .vxa2-rounds .vxa2-step{
  display:grid!important;
  grid-template-columns:62px 42px 36px 42px!important;
  align-items:center!important;
  justify-content:end!important;
  gap:8px!important;
  min-width:212px!important;
  margin-left:auto!important;
}
#vx-auto-lucky .vxa2-lanes .vxa2-step .vxa2-all{
  grid-column:1!important;
  width:62px!important;
  min-width:62px!important;
  padding:0 10px!important;
}
#vx-auto-lucky .vxa2-lanes .vxa2-step button:not(.vxa2-all){width:42px!important}
#vx-auto-lucky .vxa2-lanes .vxa2-step b,
#vx-auto-lucky .vxa2-rounds .vxa2-step b{
  width:36px!important;min-width:36px!important;text-align:center!important;margin:0!important;
}
#vx-auto-lucky .vxa2-rounds .vxa2-step::before{
  content:"";display:block;grid-column:1;width:62px;height:1px;
}
#vx-auto-lucky .vxa2-rounds .vxa2-step button:first-of-type{grid-column:2!important;width:42px!important}
#vx-auto-lucky .vxa2-rounds .vxa2-step b{grid-column:3!important}
#vx-auto-lucky .vxa2-rounds .vxa2-step button:last-of-type{grid-column:4!important;width:42px!important}

@media (max-width:720px){
  #vx-auto-lucky .vxa2-lanes .vxa2-step,
  #vx-auto-lucky .vxa2-rounds .vxa2-step{
    grid-template-columns:54px 38px 30px 38px!important;
    gap:6px!important;min-width:184px!important;
  }
  #vx-auto-lucky .vxa2-lanes .vxa2-step .vxa2-all{width:54px!important;min-width:54px!important}
  #vx-auto-lucky .vxa2-lanes .vxa2-step button:not(.vxa2-all),
  #vx-auto-lucky .vxa2-rounds .vxa2-step button:first-of-type,
  #vx-auto-lucky .vxa2-rounds .vxa2-step button:last-of-type{width:38px!important;height:38px!important}
  #vx-auto-lucky .vxa2-lanes .vxa2-step b,
  #vx-auto-lucky .vxa2-rounds .vxa2-step b{width:30px!important;min-width:30px!important}
  #vx-auto-lucky .vxa2-rounds .vxa2-step::before{width:54px!important}
}

/* ===== vein-rev46-hunt-live-fix.css ===== */
/* ==========================================================================\n   CaveWatch · REV46 · Hunt live-test correction\n   Visual positioning + release-media state only. No game economics or contract\n   state are changed by this stylesheet.\n   ========================================================================== */

/* Chamber hover card: one premium information panel, consistently above the
   centre terminal. JS anchors it there; CSS prevents visual collisions. */
#vx-chcard{
  z-index:46!important;
  max-width:310px!important;
  border-color:rgba(255,190,64,.34)!important;
  box-shadow:0 18px 48px rgba(0,0,0,.62),0 0 26px rgba(255,157,33,.10)!important;
  backdrop-filter:blur(14px)!important;
}

/* Centre amount card should hug the amount, not stay an oversized fixed slab.
   It expands horizontally only when the number itself needs more room. */
#vx-ethplate .v24-core-value{
  width:max-content!important;
  min-width:92px!important;
  max-width:190px!important;
  min-height:48px!important;
  padding:7px 14px 8px!important;
  animation:v46-terminal-card-float 3.4s ease-in-out infinite!important;
  transform-origin:50% 50%!important;
}
#vx-ethplate .v24-core-value small{white-space:nowrap!important}
#vx-ethplate .v24-core-value b{width:max-content!important;min-width:0!important}
@keyframes v46-terminal-card-float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-4px)}
}

/* Exactly ONE crystal is visible. The release movie replaces the idle movie;
   it never stacks on top of it. */
#vx-hunt-core .v24-core-release{
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
#vx-hunt-core.is-releasing .v24-core-idle-media{
  opacity:0!important;
  visibility:hidden!important;
}
#vx-hunt-core.is-releasing .v24-core-release{
  opacity:1!important;
  visibility:visible!important;
}

/* Winner/result information lives BELOW the Hunt status/clock card rather than
   overlapping the HUD. */
#vx-hunt-live-stage.vx-live-stage{
  top:116px!important;
  right:22px!important;
  left:auto!important;
  bottom:auto!important;
  transform:none!important;
  width:min(460px,calc(100% - 44px))!important;
  max-width:460px!important;
  z-index:42!important;
  pointer-events:none!important;
}

/* Keep the resolving state visibly alive while the two mandatory on-chain
   transactions settle. This is not a fake result; it is only active theatre. */
.vx-hud-clock.v24-solving .vx-dial,
#vx-hunt-live-stage[data-state="solving"]{
  animation:v46-solving-pulse 1.15s ease-in-out infinite!important;
}
@keyframes v46-solving-pulse{
  0%,100%{filter:brightness(1);}
  50%{filter:brightness(1.14) drop-shadow(0 0 13px rgba(76,196,255,.18));}
}

@media(max-width:820px){
  #vx-chcard{max-width:min(280px,calc(100% - 18px))!important}
  #vx-hunt-live-stage.vx-live-stage{
    top:92px!important;right:9px!important;width:min(330px,calc(100% - 18px))!important;
  }
  #vx-ethplate .v24-core-value{min-width:72px!important;max-width:130px!important;padding:5px 9px 6px!important}
}
@media(prefers-reduced-motion:reduce){
  #vx-ethplate .v24-core-value,.vx-hud-clock.v24-solving .vx-dial,#vx-hunt-live-stage[data-state="solving"]{animation:none!important}
}

/* ===== vein-rev47-terminal-sync.css ===== */
/* ========================================================================== 
   CaveWatch · REV47 · Hunt terminal alignment + private-test visual sync
   Presentation only. No Hunt economics, randomness, payout or contract logic.
   ========================================================================== */

/* REV46's float animation animated `transform` with translateY only. Because
   the amount pill is absolutely positioned at left:50%, that animation
   unintentionally replaced its required translateX(-50%) centering transform.
   Keep both axes in every keyframe so the pill stays exactly under the crystal. */
#vx-ethplate.v24-eth-core{
  display:grid!important;
  place-items:center!important;
  justify-items:center!important;
  align-items:center!important;
}
#vx-ethplate .v24-core-stack{
  grid-area:1/1!important;
  justify-self:center!important;
  align-self:center!important;
}
#vx-ethplate .v24-core-value{
  left:50%!important;
  right:auto!important;
  margin:0!important;
  transform:translateX(-50%) translateY(0)!important;
  transform-origin:50% 50%!important;
  animation:v47-terminal-card-float 3.4s ease-in-out infinite!important;
}
@keyframes v47-terminal-card-float{
  0%,100%{transform:translateX(-50%) translateY(0)}
  50%{transform:translateX(-50%) translateY(-4px)}
}

/* Keep the number itself optically centred even as more decimals appear. */
#vx-ethplate .v24-core-value,
#vx-ethplate .v24-core-value b,
#vx-ethplate .v24-core-value small{
  text-align:center!important;
  justify-content:center!important;
  align-items:center!important;
}

@media(prefers-reduced-motion:reduce){
  #vx-ethplate .v24-core-value{
    animation:none!important;
    transform:translateX(-50%)!important;
  }
}

/* ===== vein-rev52-cleanup.css ===== */
/* ========================================================================== 
   CaveWatch · REV52 · final Hunt cleanup
   Presentation only: Golden Vein motion + no economics / contract changes.
   ========================================================================== */

/* Golden Vein: lower the resting point by 5px, then float UP to exactly the
   old REV44 position. This gives the requested suspended/hovering feel without
   ever climbing higher than the current visual position. */
.vxc-golden-banner{
  top:21px!important;
  animation:v52-golden-hover 3.4s ease-in-out infinite!important;
  will-change:transform!important;
}
@keyframes v52-golden-hover{
  0%,100%{transform:translate(-50%,0)}
  50%{transform:translate(-50%,-5px)}
}

@media(max-width:820px){
  /* REV44 mobile top was 8px; rest at 12px and rise back to 8px. */
  .vxc-golden-banner{top:12px!important;animation-name:v52-golden-hover-mobile!important}
  @keyframes v52-golden-hover-mobile{
    0%,100%{transform:translate(-50%,0)}
    50%{transform:translate(-50%,-4px)}
  }
}
@media(prefers-reduced-motion:reduce){
  .vxc-golden-banner{animation:none!important;top:18px!important}
}

/* ===== vein-rev54-launch-polish.css ===== */
/* CaveWatch REV54 · launch UI polish · 2026-08-21
   UI only. No Hunt/Lucky/Vault/Motherlode contract logic is changed. */

/* 1) Account / balance drawer is an overlay and must never fall behind a room. */
.vx-portalbar,
.vxp-actions,
#vx-pod,
#vx-pod .vx-podbtn { overflow:visible!important; }
.vx-portalbar{position:relative!important;z-index:2147483000!important;isolation:auto!important;}
.vxp-actions{position:relative!important;z-index:2147483100!important;}
#vx-pod{position:relative!important;z-index:2147483200!important;}
#vx-podsheet{
  z-index:2147483600!important;
  position:absolute!important;
  isolation:isolate!important;
  filter:drop-shadow(0 24px 55px rgba(0,0,0,.72));
}
.vxp-walletmask,.vx-mmask{z-index:2147483640!important;}

/* 2) Lucky selected/hover artwork calibration ONLY. Number plates stay untouched. */
.vx-tunnel[data-t="2"] .vx-tover{translate:-5px 0!important;}
.vx-tunnel[data-t="3"] .vx-tover{translate:4px 4px!important;}
.vx-tunnel[data-t="4"] .vx-tover{translate:0 -6px!important;}

/* 3) Equipment action becomes Equip / Change, while Workshop remains the upgrade path. */
#vx-kit-action{min-width:92px;}
.vx-quickforge.v54-attention{animation:v54-qf-attn .72s ease-out 1;}
@keyframes v54-qf-attn{
  0%{box-shadow:0 0 0 0 rgba(255,190,65,.55)}
  100%{box-shadow:0 0 0 18px rgba(255,190,65,0)}
}

/* 4) Lighter Robinhood loader. */
.vxc-loader-core>video{display:none!important;}
.vxc-loader-core .v54-rh-loader-logo{
  display:block!important;
  width:88px!important;height:88px!important;object-fit:contain!important;
  margin:0 auto 12px!important;
  filter:drop-shadow(0 0 22px rgba(0,220,35,.25));
  animation:v54-rh-pulse 2.35s ease-in-out infinite;
}
.vxc-loader-core small{opacity:.55!important;letter-spacing:.18em!important;}
.vxc-loader-core b{font-size:11px!important;letter-spacing:.13em!important;opacity:.82!important;}
.vxc-loader-ring{opacity:.48!important;filter:saturate(.75)!important;}
@keyframes v54-rh-pulse{0%,100%{transform:scale(.96);opacity:.78}50%{transform:scale(1.045);opacity:1}}
@media(prefers-reduced-motion:reduce){.vxc-loader-core .v54-rh-loader-logo{animation:none!important;}}

/* 5) Revenue Drop presentation. The contract/claim wiring comes in the next pass. */
.v54-revenue-note{
  margin-top:12px;padding:11px 13px;border:1px solid rgba(255,190,65,.16);
  border-radius:12px;background:rgba(255,190,65,.045);color:#a8977d;
  font:600 10px/1.55 var(--mono,monospace);letter-spacing:.03em;
}
.v54-revenue-note b{color:#f2d9aa;}
.v54-token-universe{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px!important;}
.v54-token{
  min-height:70px;display:flex;align-items:center;gap:10px;padding:10px 12px;
  border:1px solid rgba(255,255,255,.075);border-radius:13px;
  background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.012));
}
.v54-token img,.v54-token .v54-fallback{
  width:36px;height:36px;object-fit:contain;border-radius:50%;flex:0 0 36px;
}
.v54-token .v54-fallback{display:grid;place-items:center;background:#17130e;border:1px solid rgba(255,190,65,.2);color:#ffc44d;font:800 9px var(--mono,monospace)}
.v54-token span{min-width:0}.v54-token b{display:block;color:#f7ead6;font-size:12px}.v54-token small{display:block;color:#7e705d;font:700 8px var(--mono,monospace);margin-top:3px}
.v54-token.mystery .v54-fallback{font-size:18px;color:#ffe49b;box-shadow:0 0 22px rgba(255,190,65,.12)}
.v54-revenue-econ{grid-template-columns:repeat(3,1fr)!important;}
.v54-revenue-econ span{min-width:0!important;}
.v54-revenue-econ span small{white-space:normal!important;}
.v54-revenue-econ span b{font-size:20px!important;}
.v54-revenue-pending{display:grid;gap:8px;padding:18px;border:1px solid rgba(255,190,65,.13);border-radius:14px;background:rgba(255,190,65,.03)}
.v54-revenue-pending b{color:#f1d49d;font-size:14px}.v54-revenue-pending span{color:#8d806c;font-size:11px;line-height:1.55}

/* 6) Landing reward art: OIX / ETH / Revenue Drop use one visual footprint. */
.reward>img,.rewards .reward>img,.reward-grid .reward>img{
  width:82px!important;height:82px!important;min-width:82px!important;max-width:82px!important;
  object-fit:contain!important;object-position:center!important;margin:0!important;
  transform:none!important;filter:none;
}
.reward.stock>img{width:82px!important;height:82px!important;}

@media(max-width:900px){
  .v54-token-universe{grid-template-columns:repeat(2,minmax(0,1fr));}
  .reward>img,.rewards .reward>img,.reward-grid .reward>img{width:68px!important;height:68px!important;min-width:68px!important;max-width:68px!important;}
}

.v54-token img:not([src]),.v54-token img[src=""]{display:none!important;}

/* Revenue Drop V1: LINK is registered on-chain but launch-paused until its
   liquidity is recertified. Keep it visible as part of the future universe
   without presenting it as selectable today. */
.v54-token.is-paused{opacity:.46;filter:saturate(.45)}
.v54-token.is-paused small{letter-spacing:.06em}

/* ===== vein-rev55-responsive-premium.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV55 responsive premium pass · 21 Aug 2026
   Screenshot-driven layout correction only.
   No Hunt/Lucky randomness, economics, contract calls, wallet writes or keeper
   behavior are changed by this stylesheet.
   ========================================================================== */

/* -------------------------- absolute overlay order ------------------------
   The account drawer and mobile navigation are deliberate overlays. They are
   the ONLY normal controls allowed to sit above gameplay. */
.vx-portalbar{
  overflow:visible!important;
  z-index:2147483400!important;
}
.vxp-actions,#vx-pod{overflow:visible!important}
.vxp-navwrap{z-index:2147483500!important}
.vx-portalbar.menu-open .vxp-navwrap{
  z-index:2147483600!important;
  isolation:isolate!important;
}
#vx-podsheet{
  z-index:2147483610!important;
  isolation:isolate!important;
}
.vxp-walletmask,.vx-mmask{z-index:2147483640!important}

/* Every gameplay/card grid is allowed to shrink. This prevents one wide child
   from forcing a neighbor underneath it on scaled 13–15 inch displays. */
.vx-view,.vxp-gamehead,.vx-stagewrap,.vx-stage,.vx-deckrow,.vx-deck,.vx-deckgrid,
.vx-hunt-deploy,.vx-quickforge,.vx-qitems,.vx-strip,.vx-grindrow,
.vxp-economybar,.v33-commandbar,.v33-commandbar .v33-stat,
.vx-lwrap,.vx-lstage,.vx-lconsole-shell{min-width:0!important;max-width:100%}
.vx-deckrow>* ,.vx-deckgrid>* ,.vx-strip>* ,.vx-grindrow>*{min-width:0!important}

/* -------------------------- compact laptop class --------------------------
   13–15.6 inch laptops commonly expose ~1280–1600 CSS px with 768–1000px of
   vertical room after OS/browser scaling. Use the width. Do not shrink the
   quarry just to keep everything above the fold; scrolling is safer than
   overlapping cards. */
@media (min-width:821px) and (max-width:1600px) and (max-height:1000px){
  .vx-shell{max-width:none!important;padding-left:12px!important;padding-right:12px!important}

  /* Never let the economy ribbon hover over the Hunt while scrolling. */
  .vxp-economybar.v33-commandbar{
    position:relative!important;top:auto!important;
    display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
    overflow:visible!important;gap:7px!important;margin-bottom:9px!important;
  }
  .v33-commandbar .v33-stat,.v33-commandbar .v33-stat-oxr{
    flex:none!important;min-height:58px!important;padding:7px 9px!important;
  }
  .v33-commandbar .v33-icon,.v33-commandbar .vxp-econicon.v33-icon{width:34px!important;height:34px!important}
  .v33-commandbar .v33-icon img,.v33-commandbar .vxp-econicon.v33-icon img{width:24px!important;height:24px!important}
  .v33-commandbar b{font-size:12.5px!important}.v33-commandbar .v33-timer b{font-size:15px!important}

  /* Preserve the exact board ratio at the FULL available width. The older
     short-height cap made the quarry unnecessarily narrow on laptops. */
  .vx-stagewrap,.vx-lwrap{width:100%!important;max-width:100%!important;margin-inline:0!important}
  .vx-stage,.vx-lstage{width:100%!important;max-width:none!important;min-height:0!important;aspect-ratio:2752/1536!important}

  /* Deployment and equipment are separate rows on compact desktops. */
  .vx-deckrow{grid-template-columns:1fr!important;gap:10px!important}
  .vx-quickforge{display:grid!important;grid-template-columns:minmax(210px,.7fr) minmax(0,1.8fr) auto!important;align-items:center!important;column-gap:14px!important}
  .vx-quickforge .vx-qfhead{margin:0!important;min-width:0!important}
  .vx-quickforge .vx-qitems{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important}
  .vx-quickforge>.vx-btn{align-self:stretch!important;min-width:150px!important}
  .vx-qi{min-width:0!important}.vx-qi b,.vx-qi small{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}

  /* Bottom corner HUDs stay readable but cannot meet in the middle. */
  .vx-hud-motherlode{min-width:0!important;width:min(390px,38%)!important;max-width:38%!important;padding:9px 11px!important;gap:10px!important}
  .vx-hud-motherlode>img{width:44px!important;height:44px!important}
  .vx-hud-kit{min-width:0!important;width:auto!important;max-width:30%!important;padding:8px 9px!important;gap:8px!important}
  .vx-hud-kit .vx-kitart{width:43px!important;height:43px!important}
  .vx-hud-kit .vx-kittxt{min-width:88px!important}.vx-hud-kit .vx-kittxt b{font-size:13px!important}
  .vx-hud-kit .vx-btn{min-height:34px!important;padding:0 10px!important;font-size:9px!important}
}

/* A compact landscape/tablet viewport also gets the safe stacked deck. */
@media (min-width:821px) and (max-width:1180px){
  .vx-deckrow{grid-template-columns:1fr!important}
  .vx-quickforge{display:flex!important;flex-direction:column!important;align-items:stretch!important}
  .vx-quickforge .vx-qitems{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;width:100%!important}
  .vx-quickforge>.vx-btn{width:100%!important;min-width:0!important}
  .vx-houses .vx-house{width:64px!important;height:57px!important;margin:-28.5px 0 0 -32px!important}
  .vx-node{width:60px!important;height:52px!important;margin:-26px 0 0 -30px!important;border-radius:12px!important}
  .vx-node .vx-nno{font-size:16px!important}
}

/* ------------------------------ mobile ----------------------------------- */
@media (max-width:820px){
  /* The portal bar can remain sticky. The economy ribbon MUST remain in flow so
     it never covers the heading/map while the user scrolls. */
  .vx-portalbar{top:max(4px,env(safe-area-inset-top))!important;overflow:visible!important}
  .vxp-economybar.v33-commandbar{
    position:relative!important;top:auto!important;z-index:30!important;
    display:flex!important;overflow-x:auto!important;overflow-y:hidden!important;
    margin:0 0 7px!important;padding:6px!important;scroll-snap-type:x proximity!important;
  }
  .v33-commandbar .v33-stat{flex:0 0 min(74vw,245px)!important;min-height:56px!important;scroll-snap-align:start!important}
  .v33-commandbar .v33-stat-oxr{flex-basis:min(78vw,255px)!important}

  /* Mobile menu/dropdown is always above every status card/game layer. */
  .vxp-navwrap{
    z-index:2147483550!important;
    box-shadow:0 28px 70px rgba(0,0,0,.82),0 0 0 1px rgba(255,196,82,.07)!important;
  }
  .vx-portalbar.menu-open .vxp-navwrap{z-index:2147483600!important}

  /* Wallet sheet becomes a viewport-level drawer: it cannot be clipped by a
     parent or disappear behind the Lucky/Hunt UI. */
  #vx-podsheet{
    position:fixed!important;
    left:max(7px,env(safe-area-inset-left))!important;
    right:max(7px,env(safe-area-inset-right))!important;
    top:calc(max(4px,env(safe-area-inset-top)) + 58px)!important;
    width:auto!important;max-width:none!important;
    max-height:calc(100svh - 78px - env(safe-area-inset-bottom))!important;
    overflow:auto!important;
  }

  /* REV21 already moves Hunt Pool + Motherlode above the artwork. Keep them
     tight and balanced. */
  .v21-hunt-summary{
    position:relative!important;z-index:20!important;
    grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr)!important;
    gap:6px!important;margin:0 0 6px!important;
  }
  .v21-hunt-summary>.vx-hud{min-height:78px!important}

  /* REV55 moves the clock and equipped item OUT of the quarry too. */
  .v55-hunt-mobilebar{
    display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:6px!important;margin:0 0 6px!important;position:relative;z-index:20;
  }
  .v55-hunt-mobilebar>.vx-hud{
    position:relative!important;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
    transform:none!important;width:100%!important;max-width:none!important;min-width:0!important;height:auto!important;
    margin:0!important;box-sizing:border-box!important;display:flex!important;
    background:linear-gradient(150deg,rgba(22,16,10,.94),rgba(8,7,5,.95))!important;
    border:1px solid rgba(255,190,76,.13)!important;border-radius:11px!important;
    box-shadow:0 9px 22px rgba(0,0,0,.25)!important;
  }
  .v55-hunt-mobilebar>.vx-hud-clock{justify-content:center!important;min-height:58px!important;padding:7px 9px!important;gap:8px!important}
  .v55-hunt-mobilebar .vx-hud-clock .vx-dial{width:38px!important;height:38px!important}
  .v55-hunt-mobilebar .vx-dial-core strong{font-size:8px!important}
  .v55-hunt-mobilebar .vx-clocktxt small{font-size:5.5px!important}.v55-hunt-mobilebar .vx-clocktxt b{font-size:8px!important}.v55-hunt-mobilebar .vx-clocktxt span{font-size:5.7px!important}
  .v55-hunt-mobilebar>.vx-hud-kit{min-height:58px!important;padding:7px 8px!important;gap:7px!important;justify-content:center!important}
  .v55-hunt-mobilebar .vx-kitart{width:34px!important;height:34px!important}
  .v55-hunt-mobilebar .vx-kittxt{min-width:0!important}.v55-hunt-mobilebar .vx-kittxt small{display:block!important;font-size:5.6px!important}.v55-hunt-mobilebar .vx-kittxt b{font-size:8px!important;max-width:90px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v55-hunt-mobilebar .vx-kitpips{display:flex!important}.v55-hunt-mobilebar .vx-hud-kit .vx-btn{display:flex!important;min-height:28px!important;padding:0 7px!important;font-size:6.5px!important}

  /* Golden Vein remains visible and premium, but sits above the board instead
     of covering the top chambers. */
  .v55-golden-slot:empty{display:none!important}
  #vx-map>.vxc-golden-banner.v55-golden-origin-hidden{display:none!important}
  .v55-golden-slot{position:relative;z-index:20;margin:0 0 6px!important}
  .v55-golden-slot .vxc-golden-banner{
    position:relative!important;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
    transform:none!important;width:100%!important;max-width:none!important;min-height:34px!important;
    justify-content:center!important;padding:6px 10px!important;margin:0!important;
    font-size:7px!important;border-radius:11px!important;
    animation:v55-golden-soft 3.4s ease-in-out infinite!important;
  }
  .v55-golden-slot .vxc-golden-banner .v22-golden-media{width:26px!important;height:26px!important;flex-basis:26px!important;margin:-3px 0!important}
  .v55-golden-slot .vxc-golden-banner .v22-golden-media>img,.v55-golden-slot .vxc-golden-banner .v22-golden-media>video{width:26px!important;height:26px!important}
  @keyframes v55-golden-soft{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}

  /* The artwork is now an actual board, not a place for cards. */
  .vx-stagewrap,.vx-lwrap{max-width:100%!important;padding:3px!important;overflow:hidden!important}
  .vx-stage,.vx-lstage{width:100%!important;min-height:0!important;max-height:none!important;aspect-ratio:2752/1536!important}

  /* REV28 later enlarged these again. REV55 is the final mobile footprint. */
  .vx-houses .vx-house{width:34px!important;height:30px!important;margin:-15px 0 0 -17px!important}
  .vx-node{width:31px!important;height:28px!important;margin:-14px 0 0 -15.5px!important;border-radius:7px!important;overflow:visible!important}
  .vx-node .vx-nno{font-size:8.5px!important;line-height:1!important}
  .vx-nparticles{width:44px!important;height:40px!important}

  /* Result/settlement cards are moved below the board by REV55 JS. They never
     obscure the winning chamber, beam, centre crystal or Golden Vein. */
  .v55-result-slot{margin:6px 0 0!important;position:relative;z-index:20}
  .v55-result-slot:empty{display:none!important}
  .v55-result-slot .vx-live-stage:not(.show){display:none!important}
  .v55-result-slot .vx-live-stage,
  .v55-result-slot .vx-live-stage.show{
    position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
    transform:none!important;width:100%!important;max-width:none!important;min-width:0!important;
    margin:0!important;padding:10px 12px!important;border-radius:12px!important;
  }
  .v55-result-slot .vx-live-stage.show{display:block!important;opacity:1!important}
  .v55-result-slot .vx-live-stage b{font-size:10px!important;line-height:1.2!important}
  .v55-result-slot .vx-live-stage span{font-size:8px!important;line-height:1.35!important}
  .v55-result-slot .vx-live-kicker{font-size:5.7px!important;margin-bottom:4px!important}
  .v55-result-slot .vx-live-metrics{display:flex!important;gap:4px!important;margin-top:7px!important}
  .v55-result-slot .vx-live-metrics em{min-width:0!important;flex:1 1 90px!important;padding:5px 6px!important}

  /* Deployment/equipment cards become normal stacked flow content. */
  .vx-deckrow{grid-template-columns:1fr!important;gap:7px!important;margin-top:7px!important}
  .vx-deck{padding:12px!important}.vx-deckgrid{grid-template-columns:1fr!important;gap:10px!important;margin-top:10px!important}
  .vx-quickforge{display:flex!important;flex-direction:column!important;gap:8px!important;padding:12px!important}
  .vx-quickforge .vx-qitems{display:grid!important;grid-template-columns:1fr!important;gap:6px!important}
  .vx-qi{padding:8px 9px!important}.vx-qi img{width:32px!important;height:32px!important}.vx-qi b{font-size:10px!important}.vx-qi small,.vx-qi .vx-qtag{font-size:7px!important}

  /* Floating community buttons were covering deployment on phones. They stay
     accessible at the bottom of the page, in flow, instead of over gameplay. */
  .vxp-socialrail{
    position:relative!important;right:auto!important;left:auto!important;bottom:auto!important;top:auto!important;
    z-index:20!important;display:flex!important;flex-direction:row!important;justify-content:center!important;
    width:max-content!important;max-width:100%!important;margin:12px auto 0!important;gap:7px!important;
  }
  body[data-cw-chrome="portal"] .cwchat-trigger{
    position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;top:auto!important;
    z-index:20!important;margin:10px auto 0!important;
  }
}

@media (max-width:430px){
  .vx-shell{padding-left:max(5px,env(safe-area-inset-left))!important;padding-right:max(5px,env(safe-area-inset-right))!important}
  .vxp-actions{gap:3px!important}.vxp-roundbtn,.vxp-menu{width:40px!important;height:40px!important}
  .vxp-disconnected .vxp-connect{height:40px!important;padding:0 9px 0 5px!important;gap:6px!important;font-size:10px!important}.vxp-connect-icon{width:28px!important;height:28px!important}
  .v21-hunt-summary,.v55-hunt-mobilebar{gap:5px!important}
  .v21-hunt-summary>.vx-hud{min-height:70px!important}
  .v55-hunt-mobilebar>.vx-hud-clock,.v55-hunt-mobilebar>.vx-hud-kit{min-height:54px!important;padding:6px!important}
  .v55-hunt-mobilebar .vx-hud-kit .vx-btn{display:none!important}
  .vx-houses .vx-house{width:30px!important;height:27px!important;margin:-13.5px 0 0 -15px!important}
  .vx-node{width:27px!important;height:25px!important;margin:-12.5px 0 0 -13.5px!important;border-radius:6px!important}
  .vx-node .vx-nno{font-size:7.5px!important}
  .v24-core-stack{width:46px!important;height:46px!important}.vx-ethplate.v24-eth-core{width:50px!important;height:50px!important}
  .v55-result-slot .vx-live-stage{padding:8px 9px!important}.v55-result-slot .vx-live-metrics{display:none!important}
}

/* Compact laptop/tablet result slots are also in normal flow when JS chooses
   the compact layout. Keep the panel centred and restrained. */
@media (min-width:821px){
  .v55-result-slot.v55-compact-result{margin:9px auto 0!important;max-width:920px!important}
  .v55-result-slot.v55-compact-result:empty{display:none!important}
  .v55-result-slot.v55-compact-result .vx-live-stage:not(.show){display:none!important}
  .v55-result-slot.v55-compact-result .vx-live-stage,
  .v55-result-slot.v55-compact-result .vx-live-stage.show{
    position:relative!important;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
    transform:none!important;width:100%!important;max-width:none!important;min-width:0!important;margin:0!important;
  }
  .v55-result-slot.v55-compact-result .vx-live-stage.show{display:block!important;opacity:1!important}
}

@media(prefers-reduced-motion:reduce){
  .v55-golden-slot .vxc-golden-banner{animation:none!important}
}

/* ===== vein-rev56-revenue-claim.css ===== */
/* CaveWatch REV56 · Revenue Drop live-claim polish + landing media balance */

/* Revenue layout: no implementation-note boxes; claim state gets the visual weight. */
.v56-revenue-grid{align-items:stretch!important;grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr)!important;gap:16px!important}
.v56-revenue-grid>.vxs-card{height:100%!important;min-height:360px!important}
.v56-revenue-grid .vxs-live{display:flex!important;flex-direction:column!important}
.v56-revenue-grid .vxs-live .vxs-state{flex:1!important;display:flex!important}
.v56-revenue-grid .vxs-live .vxs-state>.vxs-user,.v56-revenue-grid .vxs-live .vxs-state>.vxs-loading{width:100%!important}
.v54-revenue-note,.v54-revenue-pending{display:none!important}

/* Equal baseline for 2 / 1 / 1. No inherited separator offsets. */
.v56-revenue-econ{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:8px!important;padding:10px!important;align-items:stretch!important}
.v56-revenue-econ>i{display:none!important}
.v56-revenue-econ>span{min-height:78px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;margin:0!important;padding:10px 8px!important;border:1px solid rgba(255,255,255,.055)!important;border-radius:11px!important;background:rgba(255,255,255,.015)!important;transform:none!important}
.v56-revenue-econ>span small{display:block!important;min-height:13px!important;margin:0 0 6px!important;line-height:1.15!important;white-space:normal!important}
.v56-revenue-econ>span b{font-size:24px!important;line-height:1!important;margin:0!important}

/* Premium Revenue questions. */
.v56-revenue-faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}
.v56-revenue-faq details{padding:0!important;overflow:hidden!important;border-color:rgba(255,190,65,.11)!important;background:linear-gradient(145deg,rgba(255,190,65,.025),rgba(255,255,255,.012))!important}
.v56-revenue-faq summary{list-style:none;cursor:pointer;min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 17px;color:#f0dfc5;font:700 12px/1.25 var(--display,"Unbounded",sans-serif)}
.v56-revenue-faq summary::-webkit-details-marker{display:none}
.v56-revenue-faq summary i{width:22px;height:22px;border:1px solid rgba(255,190,65,.18);border-radius:50%;position:relative;flex:0 0 22px}
.v56-revenue-faq summary i:before,.v56-revenue-faq summary i:after{content:"";position:absolute;left:6px;right:6px;top:10px;height:1px;background:#ffc857;transition:.2s ease}
.v56-revenue-faq summary i:after{transform:rotate(90deg)}
.v56-revenue-faq details[open] summary i:after{transform:rotate(0)}
.v56-revenue-faq p{margin:0;padding:0 17px 16px;color:#8d806d;font-size:11px;line-height:1.55}

/* Token badges must never show a broken-image icon. */
.v54-token img{background:transparent!important}
.v54-token .v54-fallback{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Landing: smaller cards, but enlarge the actual transparent ETH / chest loops. */
@media(min-width:761px){
  .ob .rewards{max-width:940px!important;gap:10px!important}
  .ob .rewards .reward{min-height:112px!important;padding:11px 14px!important;grid-template-columns:92px minmax(0,1fr)!important;gap:10px!important;overflow:hidden!important}
  .ob .rewards .reward-mine>img{width:72px!important;height:72px!important;min-width:72px!important;max-width:72px!important}
  .ob .rewards .reward-eth>.reward-loop{width:150px!important;height:150px!important;transform:scale(1.02)!important}
  .ob .rewards .reward-stock>.reward-loop{width:138px!important;height:138px!important;transform:scale(1.03)!important}
  .ob .rewards .reward b{font-size:12.5px!important}
  .ob .rewards .reward span{font-size:10px!important;line-height:1.42!important}
}
@media(max-width:900px){.v56-revenue-grid{grid-template-columns:1fr!important}.v56-revenue-grid>.vxs-card{min-height:0!important}}
@media(max-width:700px){
  .v56-revenue-faq{grid-template-columns:1fr}
  .v56-revenue-econ>span{min-height:68px!important}.v56-revenue-econ>span b{font-size:20px!important}
  .ob .rewards .reward-mine>img{width:44px!important;height:44px!important;min-width:44px!important;max-width:44px!important}
  .ob .rewards .reward-eth>.reward-loop{width:86px!important;height:86px!important}
  .ob .rewards .reward-stock>.reward-loop{width:80px!important;height:80px!important}
}

/* Revenue Drop: reveal actual purchased assets for a published wallet claim */
.vxs-revealed-row{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.vxs-revealed-token{
  min-height:92px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:12px 16px;
  border:1px solid rgba(255,200,87,.24);
  border-radius:14px;
  background:rgba(10,9,7,.58);
}
.vxs-revealed-token img{
  width:46px;
  height:46px;
  object-fit:contain;
  flex:0 0 46px;
}
.vxs-revealed-token>span{
  display:flex;
  flex-direction:column;
  min-width:0;
}
.vxs-revealed-token b{
  font-size:12px;
  letter-spacing:.08em;
}
.vxs-revealed-token strong{
  margin-top:2px;
  font-size:17px;
  line-height:1.15;
  overflow-wrap:anywhere;
}
.vxs-revealed-token small{
  margin-top:2px;
  opacity:.55;
}
.vxs-claim-preview.is-revealed .vxs-claim-preview-head b{
  color:#8ff0a4;
}

/* ===== vein-rev58-fast-premium.css ===== */
/* ========================================================================== 
   CaveWatch · The Vein · REV58
   Lean Manual Hunt/Lucky polish + responsive cleanup.
   Presentation only: ids, chain hooks, transaction paths and economics stay
   untouched. REV57 state-truth JS remains authoritative for Golden Vein.
   ========================================================================== */

/* Shared surface: premium, but no nested-card wall. */
#vx-hunt-console,
#vx-lhud{
  --v58-gold:#f4b83f;
  --v58-line:rgba(244,184,63,.15);
  position:relative!important;
  isolation:isolate;
  overflow:hidden!important;
  border:1px solid rgba(244,184,63,.16)!important;
  background:
    radial-gradient(620px 190px at 7% -16%,rgba(244,184,63,.07),transparent 68%),
    linear-gradient(145deg,rgba(17,14,10,.97),rgba(8,7,6,.98))!important;
  box-shadow:0 16px 45px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.025)!important;
}
#vx-hunt-console::before,
#vx-lhud::before{
  content:"";position:absolute;left:7%;right:7%;top:0;height:1px;z-index:1;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,196,76,.43),transparent);
}

/* --------------------------------------------------------------------------
   MANUAL HUNT — return to the earlier clean three-part console. The premium
   feel comes from typography, spacing and separators instead of 7 inner cards.
   -------------------------------------------------------------------------- */
#vx-hunt-console{padding:16px 18px 13px!important;border-radius:18px!important}
#vx-hunt-console .vx-ghead{
  display:flex!important;align-items:flex-end!important;justify-content:space-between!important;
  gap:14px;margin:0!important;padding:0 1px 11px!important;border-bottom:1px solid rgba(255,255,255,.05)!important;
}
#vx-hunt-console .vx-ghead::after{content:none!important;display:none!important}
#vx-hunt-console .vx-ghead .vx-eyebrow{color:#d99b27!important;letter-spacing:.19em!important}
#vx-hunt-console .vx-ghead h2{margin:4px 0 0!important;font-size:clamp(20px,1.3vw,28px)!important;line-height:1.08!important;letter-spacing:-.035em!important}
#vx-hunt-console .vx-deckgrid{
  display:grid!important;grid-template-columns:minmax(210px,.9fr) minmax(340px,1.35fr) minmax(200px,.78fr)!important;
  align-items:end!important;gap:18px!important;margin:13px 0 0!important;
}
#vx-hunt-console .vx-compose,
#vx-hunt-console .vx-facts,
#vx-hunt-console .vx-deploygo{
  min-width:0!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;
}
#vx-hunt-console .vx-lbl{
  display:block!important;margin:0 0 7px!important;color:#80725f!important;
  font:600 8px/1 var(--mono,monospace)!important;letter-spacing:.16em!important;text-transform:uppercase!important;
}
#vx-hunt-console .vx-amount{
  min-height:58px!important;padding:0 13px!important;border-radius:12px!important;
  border:1px solid rgba(244,184,63,.13)!important;background:rgba(0,0,0,.24)!important;
}
#vx-hunt-console .vx-amount:focus-within{border-color:rgba(244,184,63,.34)!important;box-shadow:0 0 0 3px rgba(244,184,63,.05)!important}
#vx-hunt-console #vx-entry{font-size:clamp(23px,1.4vw,31px)!important;font-weight:800!important;letter-spacing:-.035em!important}
#vx-hunt-console .vx-inpunit{font-size:9px!important;color:#91836f!important}
#vx-hunt-console .vx-quick{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:6px!important;margin-top:7px!important}
#vx-hunt-console .vx-quick button{
  min-height:31px!important;border-radius:9px!important;border:1px solid rgba(255,255,255,.055)!important;
  background:rgba(255,255,255,.018)!important;color:#8d806c!important;
}
#vx-hunt-console .vx-quick button:hover{border-color:rgba(244,184,63,.22)!important;background:rgba(244,184,63,.045)!important;color:#edc36b!important}
#vx-hunt-console .vx-facts{
  display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px 18px!important;
  padding:2px 0 2px 18px!important;border-left:1px solid rgba(255,255,255,.055)!important;
}
#vx-hunt-console .vx-facts>span{
  min-width:0!important;min-height:0!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;
  display:flex!important;flex-direction:column!important;justify-content:center!important;gap:4px!important;overflow:visible!important;
}
#vx-hunt-console .vx-facts>span::before{content:none!important;display:none!important}
#vx-hunt-console .vx-facts small{font:600 7px/1.2 var(--mono,monospace)!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:#756958!important}
#vx-hunt-console .vx-facts b{font-size:clamp(15px,1vw,21px)!important;line-height:1.08!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#vx-hunt-console .vx-deploygo{
  display:grid!important;grid-template-columns:1fr!important;gap:7px!important;padding-left:17px!important;border-left:1px solid rgba(255,255,255,.055)!important;
}
#vx-hunt-console #vx-cover-all{min-height:35px!important;border-radius:10px!important;background:rgba(255,255,255,.018)!important;border-color:rgba(255,255,255,.065)!important;color:#a69780!important}
#vx-hunt-console #vx-cover-all:hover{background:rgba(244,184,63,.05)!important;border-color:rgba(244,184,63,.22)!important;color:#e9c574!important}
#vx-hunt-console #vx-deploy{min-height:48px!important;border-radius:11px!important;font-size:13px!important;font-weight:800!important;box-shadow:0 8px 20px rgba(213,116,19,.10)!important}
#vx-hunt-console #vx-deploy-note{min-height:12px!important;margin:0!important;text-align:center!important;color:#6f6455!important;font:500 7px/1.3 var(--mono,monospace)!important;letter-spacing:.05em!important}
#vx-hunt-console .vx-splitbar{margin:11px 0 0!important;padding:9px 0 0!important;border-top:1px solid rgba(255,255,255,.045)!important}
#vx-hunt-console .vx-splitbar .vx-bar{height:6px!important;border-radius:999px!important;overflow:hidden!important;background:#15120e!important}
#vx-hunt-console .vx-splitbar>span{display:block!important;margin-top:6px!important;color:#746858!important;font-size:8px!important}

/* --------------------------------------------------------------------------
   MANUAL LUCKY — one compact control rail again. The tunnel art remains the
   selector, so REV57's reintroduced duplicate 1–5 number rail is removed.
   -------------------------------------------------------------------------- */
#vx-lhud{padding:0!important;border-radius:17px!important}
#vx-lhud .vx-lhud-in{
  display:grid!important;
  grid-template-columns:minmax(180px,.82fr) minmax(300px,1.35fr) minmax(245px,1.03fr) minmax(180px,.78fr)!important;
  grid-template-areas:"amt pick bd go"!important;
  align-items:stretch!important;gap:0!important;padding:12px 7px!important;
}
#vx-lhud .vx-hsec{
  min-width:0!important;margin:0!important;padding:2px 15px!important;border:0!important;border-right:1px solid rgba(255,255,255,.055)!important;
  border-radius:0!important;background:none!important;box-shadow:none!important;display:flex!important;flex-direction:column!important;justify-content:center!important;gap:7px!important;
}
#vx-lhud .vx-hsec:last-child{border-right:0!important}
#vx-lhud .vx-hsec>small:first-child{display:block!important;margin:0!important;color:#81735f!important;font:600 7px/1 var(--mono,monospace)!important;letter-spacing:.15em!important;text-transform:uppercase!important}
#vx-lhud .vx-hsec-amt{grid-area:amt!important}
#vx-lhud .vx-hsec-pick{grid-area:pick!important}
#vx-lhud .vx-hsec-bd{grid-area:bd!important}
#vx-lhud .vx-hsec-go{grid-area:go!important}
#vx-lhud .vx-lamount{min-height:48px!important;padding:0 11px!important;border:1px solid rgba(244,184,63,.12)!important;border-radius:10px!important;background:rgba(0,0,0,.22)!important}
#vx-lhud .vx-lamount:focus-within{border-color:rgba(244,184,63,.31)!important;box-shadow:0 0 0 3px rgba(244,184,63,.045)!important}
#vx-lhud #vx-l-amt{font-size:23px!important;font-weight:800!important;letter-spacing:-.03em!important}
#vx-lhud .vx-quick{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:5px!important;margin-top:0!important}
#vx-lhud .vx-quick button{min-height:29px!important;border-radius:8px!important;border:1px solid rgba(255,255,255,.055)!important;background:rgba(255,255,255,.016)!important;color:#8f816d!important}
#vx-lhud .vx-quick button:hover{border-color:rgba(244,184,63,.21)!important;color:#e9c26b!important;background:rgba(244,184,63,.045)!important}
#vx-lhud #vx-pick-label{display:block!important;margin-bottom:0!important}
#vx-lhud .vx-numrail{display:none!important}
#vx-lhud .vx-hslots{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important;margin:0!important}
#vx-lhud #vx-slots .vx-slot.fill{height:40px!important;border-radius:9px!important;padding:4px 5px!important;background:rgba(244,184,63,.045)!important;border-color:rgba(244,184,63,.13)!important}
#vx-lhud #vx-slots .vx-slot-amt{border-color:rgba(255,255,255,.075)!important;background:rgba(0,0,0,.18)!important}
#vx-lhud .vx-slot-help{min-height:40px!important;border-radius:9px!important;background:rgba(0,0,0,.12)!important;font-size:9px!important}
#vx-lhud .vx-bd{display:flex!important;flex-direction:column!important;gap:5px!important;min-width:0!important}
#vx-lhud .vx-bd>span{
  min-width:0!important;min-height:0!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;
  display:grid!important;grid-template-columns:18px minmax(0,1fr) auto!important;align-items:center!important;gap:7px!important;
  font-size:8px!important;color:#948773!important;
}
#vx-lhud .vx-bd img{width:17px!important;height:17px!important;object-fit:contain!important}
#vx-lhud .vx-bd b{font-size:10px!important;color:#eadcc3!important;white-space:nowrap!important}
#vx-lhud .vx-bd-burn b{color:var(--red-lt)!important}
#vx-lhud .vx-bd-jack b{color:var(--gold)!important}
#vx-lhud .vx-potwin{min-height:0!important;margin:0!important;padding:6px 8px!important;border-radius:9px!important;border:1px solid rgba(244,184,63,.10)!important;background:rgba(244,184,63,.035)!important;text-align:left!important}
#vx-lhud .vx-potwin small{font-size:6px!important;letter-spacing:.1em!important}
#vx-lhud .vx-potwin b{font-size:15px!important}
#vx-lhud #vx-l-confirm{min-height:46px!important;border-radius:10px!important;font-size:12px!important;font-weight:800!important;box-shadow:0 8px 18px rgba(213,116,19,.09)!important}
#vx-lhud #vx-l-poke{display:none!important}

/* Revenue token visual reliability retained from REV57. */
.v54-token-universe .v54-token>img{
  width:34px!important;height:34px!important;flex:0 0 34px!important;object-fit:contain!important;border-radius:50%!important;padding:4px!important;box-sizing:border-box!important;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.12),rgba(255,255,255,.025) 70%)!important;border:1px solid rgba(255,255,255,.07)!important;
}
.v54-token-universe .v54-token>img[src*="virtual.png"]{background:#dff5e9!important;padding:5px!important}
.v54-token-universe .v54-token>img[src*="1inch.png"]{background:#f5f3ed!important;padding:4px!important}
.v54-token-universe .v54-fallback{width:34px!important;height:34px!important;flex:0 0 34px!important;border-radius:50%!important;place-items:center!important;border:1px solid rgba(244,184,63,.22)!important;background:#15120e!important;color:#f2c463!important;font:800 9px/1 var(--mono,monospace)!important}

/* Golden Vein truth guard presentation retained from REV57. */
.v57-golden-off.vxc-golden-banner,
.v57-golden-off.v55-golden-display{display:none!important;visibility:hidden!important;pointer-events:none!important}

@media (max-width:1180px){
  #vx-hunt-console .vx-deckgrid{grid-template-columns:1fr 1fr!important;grid-template-areas:"compose facts" "deploy deploy"!important;gap:12px 16px!important}
  #vx-hunt-console .vx-compose{grid-area:compose!important}
  #vx-hunt-console .vx-facts{grid-area:facts!important}
  #vx-hunt-console .vx-deploygo{grid-area:deploy!important;grid-template-columns:minmax(160px,.8fr) minmax(220px,1.2fr)!important;padding:10px 0 0!important;border-left:0!important;border-top:1px solid rgba(255,255,255,.045)!important}
  #vx-hunt-console #vx-deploy-note{grid-column:1/-1!important}

  #vx-lhud .vx-lhud-in{grid-template-columns:minmax(190px,.78fr) minmax(330px,1.35fr)!important;grid-template-areas:"amt pick" "bd go"!important;row-gap:9px!important;padding:10px!important}
  #vx-lhud .vx-hsec{padding:3px 13px!important}
  #vx-lhud .vx-hsec-pick{border-right:0!important}
  #vx-lhud .vx-hsec-bd,#vx-lhud .vx-hsec-go{padding-top:10px!important;border-top:1px solid rgba(255,255,255,.045)!important}
}

@media (max-width:820px){
  #vx-hunt-console{padding:11px 12px 10px!important;border-radius:15px!important}
  #vx-hunt-console .vx-ghead{padding-bottom:8px!important}
  #vx-hunt-console .vx-ghead h2{font-size:19px!important}
  #vx-hunt-console .vx-deckgrid{grid-template-columns:1fr!important;grid-template-areas:"compose" "facts" "deploy"!important;gap:9px!important;margin-top:9px!important}
  #vx-hunt-console .vx-facts{padding:9px 0 0!important;border-left:0!important;border-top:1px solid rgba(255,255,255,.045)!important;gap:8px 13px!important}
  #vx-hunt-console .vx-facts b{font-size:14px!important}
  #vx-hunt-console .vx-deploygo{grid-template-columns:1fr 1.25fr!important;padding-top:9px!important;gap:6px!important}
  #vx-hunt-console #vx-cover-all,#vx-hunt-console #vx-deploy{min-height:42px!important}
  #vx-hunt-console .vx-splitbar>span{font-size:7px!important;line-height:1.35!important}

  #vx-lhud{border-radius:15px!important}
  #vx-lhud .vx-lhud-in{grid-template-columns:1fr!important;grid-template-areas:"amt" "pick" "bd" "go"!important;gap:0!important;padding:9px 10px!important}
  #vx-lhud .vx-hsec{padding:9px 1px!important;border-right:0!important;border-top:1px solid rgba(255,255,255,.045)!important}
  #vx-lhud .vx-hsec:first-child{border-top:0!important;padding-top:2px!important}
  #vx-lhud .vx-hsec-pick{padding-bottom:8px!important}
  #vx-lhud .vx-hslots{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important}
  #vx-lhud .vx-bd{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important}
  #vx-lhud .vx-bd>span{grid-template-columns:16px minmax(0,1fr)!important;gap:5px!important;padding:5px 6px!important;border:1px solid rgba(255,255,255,.045)!important;border-radius:8px!important;background:rgba(0,0,0,.13)!important}
  #vx-lhud .vx-bd b{grid-column:1/-1!important;padding-left:21px!important;font-size:9px!important}
  #vx-lhud .vx-hsec-go{display:grid!important;grid-template-columns:1fr!important;gap:6px!important}
  #vx-lhud #vx-l-confirm{min-height:45px!important}
}

@media (max-width:430px){
  #vx-lhud .vx-hslots{grid-template-columns:1fr!important}
  #vx-lhud .vx-bd{grid-template-columns:1fr!important}
  #vx-lhud .vx-bd>span{grid-template-columns:17px minmax(0,1fr) auto!important;padding:5px 6px!important}
  #vx-lhud .vx-bd b{grid-column:auto!important;padding-left:0!important}
}

@media(prefers-reduced-motion:reduce){
  #vx-hunt-console .vx-quick button,#vx-lhud .vx-quick button{transition:none!important}
}

/* ===== vein-rev62-responsive-scope-calibration.css ===== */
/* ========================================================================== 
   CaveWatch · REV62 · responsive calibration + landing-only viewport scope
   Presentation-only layer over REV61.

   Fixes:
   - Win ETH + Revenue Drop are reduced again on every viewport family while
     keeping the genuine REV60 looping WebM behavior untouched.
   - Community rails are explicitly fixed to the RIGHT and kept fully visible
     across desktop, tablet and phone breakpoints.
   - Robinhood transition keeps the exact existing ring/circle/text; ONLY the
     green feather image is reduced for more breathing room.
   - One-screen/no-scroll behavior is scoped ONLY to body.cw-landing. /vein and
     /test-vein retain normal document height and scrolling/flexibility.
   ========================================================================== */

/* -------------------- Robinhood transition: logo only -------------------- */
/* REV61 = 70px. REV62 = 54px (~22.9% smaller). Ring/core/text are untouched. */
.vxc-loader-core .v54-rh-loader-logo{
  width:54px!important;
  height:54px!important;
  max-width:54px!important;
  max-height:54px!important;
  object-fit:contain!important;
  margin:0 auto 14px!important;
}

/* ----------------------- Landing reward calibration ---------------------- */
/* Desktop / tablet landscape: preserve compact card band, but reduce the two
   animated props from REV61's 134px canvas to 114px (~15% smaller). */
@media (min-width:761px){
  body.cw-landing .ob .rewards{
    margin-top:12px!important;
    max-width:940px!important;
    gap:10px!important;
  }

  body.cw-landing .ob .rewards .reward{
    height:108px!important;
    min-height:108px!important;
    max-height:108px!important;
    padding:5px 12px!important;
    gap:9px!important;
    align-items:center!important;
  }

  body.cw-landing .ob .rewards .reward:nth-child(2),
  body.cw-landing .ob .rewards .reward:nth-child(3),
  body.cw-landing .ob .rewards .reward-eth,
  body.cw-landing .ob .rewards .reward-stock{
    grid-template-columns:92px minmax(0,1fr)!important;
    overflow:hidden!important;
  }

  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media{
    position:relative!important;
    width:92px!important;
    height:88px!important;
    min-width:92px!important;
    min-height:88px!important;
    max-width:92px!important;
    max-height:88px!important;
    place-self:center!important;
    margin:0!important;
    overflow:hidden!important;
    transform:none!important;
    border-radius:0!important;
    background:transparent!important;
  }

  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media>video{
    position:absolute!important;
    left:50%!important;
    top:50%!important;
    width:114px!important;
    height:114px!important;
    min-width:114px!important;
    min-height:114px!important;
    max-width:none!important;
    max-height:none!important;
    margin:0!important;
    object-fit:contain!important;
    object-position:center!important;
    transform:translate(-50%,-50%)!important;
    transform-origin:center!important;
  }

  body.cw-landing .ob .rewards .reward:nth-child(2)>div,
  body.cw-landing .ob .rewards .reward:nth-child(3)>div,
  body.cw-landing .ob .rewards .reward-eth>div,
  body.cw-landing .ob .rewards .reward-stock>div{
    position:relative!important;
    z-index:3!important;
    min-width:0!important;
  }

  body.cw-landing .ob .vxc-activity{margin-top:7px!important;}
}

/* Phone / narrow tablet: REV61 used an 80px movie canvas. REV62 uses 68px
   and a 54px crop viewport so the two props stay balanced with Mine OIX. */
@media (max-width:760px){
  body.cw-landing .ob .rewards{margin-top:10px!important}
  body.cw-landing .ob .rewards .reward{
    min-height:70px!important;
    padding-top:4px!important;
    padding-bottom:4px!important;
  }
  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media{
    position:relative!important;
    width:54px!important;
    height:54px!important;
    min-width:54px!important;
    min-height:54px!important;
    max-width:54px!important;
    max-height:54px!important;
    flex:0 0 54px!important;
    margin:0!important;
    overflow:hidden!important;
    transform:none!important;
    background:transparent!important;
  }
  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media>img,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media>video{
    position:absolute!important;
    left:50%!important;
    top:50%!important;
    width:68px!important;
    height:68px!important;
    min-width:68px!important;
    min-height:68px!important;
    max-width:none!important;
    max-height:none!important;
    margin:0!important;
    object-fit:contain!important;
    object-position:center!important;
    transform:translate(-50%,-50%)!important;
    transform-origin:center!important;
  }
}

/* ------------------------- Community rail placement ---------------------- */
/* Old responsive layers moved these into document flow. REV62 makes placement
   deterministic: fixed, vertical, right-side, safe-area aware and fully seen. */
body.cw-landing .ob .socialrail,
body[data-cw-chrome="portal"] .vxp-socialrail{
  position:fixed!important;
  left:auto!important;
  right:max(14px,env(safe-area-inset-right))!important;
  top:auto!important;
  bottom:max(14px,env(safe-area-inset-bottom))!important;
  inset:auto max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) auto!important;
  width:auto!important;
  max-width:none!important;
  height:auto!important;
  margin:0!important;
  padding:0!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  transform:none!important;
  z-index:9500!important;
  overflow:visible!important;
}

@media (max-width:700px){
  body.cw-landing .ob .socialrail,
  body[data-cw-chrome="portal"] .vxp-socialrail{
    right:max(10px,env(safe-area-inset-right))!important;
    bottom:max(12px,env(safe-area-inset-bottom))!important;
    inset:auto max(10px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) auto!important;
    gap:6px!important;
  }
  body.cw-landing .ob .socialrail a,
  body[data-cw-chrome="portal"] .vxp-socialrail a{
    width:36px!important;
    height:36px!important;
    min-width:36px!important;
    min-height:36px!important;
    border-radius:11px!important;
  }
  body.cw-landing .ob .socialrail svg,
  body[data-cw-chrome="portal"] .vxp-socialrail svg{
    width:15px!important;
    height:15px!important;
  }
}

/* ------------------- Landing-only one-viewport behavior ------------------ */
/* CRITICAL: do not target generic html/body. Only the dedicated landing body
   class is locked. /vein and /test-vein remain naturally scrollable. */
@media (min-width:901px) and (min-height:760px){
  html.cw-landing-root,
  body.cw-landing{
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    overflow-y:hidden!important;
    overscroll-behavior-y:none!important;
  }
  body.cw-landing>.ob,
  body.cw-landing .ob{
    height:100dvh!important;
    min-height:100dvh!important;
    max-height:100dvh!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    overflow:hidden!important;
  }
  body.cw-landing .ob .top{
    padding-top:13px!important;
    padding-bottom:8px!important;
  }
  body.cw-landing .ob .hero{
    min-height:0!important;
    height:100%!important;
    max-height:100%!important;
    align-self:stretch!important;
    align-items:center!important;
    padding-top:0!important;
    padding-bottom:16px!important;
  }
  body.cw-landing .ob .copy{padding-top:0!important;padding-bottom:0!important}
}

@media (min-width:901px) and (min-height:760px) and (max-height:900px){
  body.cw-landing .ob h1{margin-top:13px!important;margin-bottom:13px!important}
  body.cw-landing .ob .lead{margin-bottom:17px!important;line-height:1.48!important}
  body.cw-landing .ob .rewards{margin-top:11px!important}
  body.cw-landing .ob .jackpot{min-height:470px!important}
}

/* /vein and /test-vein intentionally receive NO viewport-height or overflow
   overrides here. Their existing application layout remains authoritative. */

/* Functional landing loops stay visible under reduced-motion preference.
   REV60/REV22 still own autoplay + poster-until-playing behavior. */
@media (prefers-reduced-motion:reduce){
  body.cw-landing .ob .rewards .reward:nth-child(2)>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward:nth-child(3)>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward-eth>.vxc-card-media>video,
  body.cw-landing .ob .rewards .reward-stock>.vxc-card-media>video{
    display:block!important;
  }
}

/* ===== vein-rev63-production-finish.css ===== */
/* ========================================================================== 
   THE VEIN · REV63 PRODUCTION FINISH
   Final live-market / supply / referral / mobile-confirmation polish.
   Loaded LAST so it intentionally wins over earlier revision layers.
   ========================================================================== */

/* ---------- Economy price: USD first, readable ETH second ---------------- */
#vxp-orix-price{font-variant-numeric:tabular-nums;letter-spacing:-.03em}
#vxp-orix-market{white-space:normal;line-height:1.25}
.vxs-pricefact{min-width:150px}
.vxs-pricefact em{display:block;margin-top:2px;color:#756e65;font:500 8px/1.2 var(--mono,monospace);font-style:normal;letter-spacing:.02em}

/* ---------- Trade terminal: dense premium instrument, no dead right card -- */
#vxs-root{grid-template-columns:minmax(0,1.58fr) minmax(360px,.92fr);min-height:590px}
.vxs-head{padding:13px 17px;gap:20px}
.vxs-chartside{min-height:520px;padding:10px 8px 8px;background:
  linear-gradient(180deg,rgba(255,255,255,.008),transparent 26%),rgba(0,0,0,.08)}
#vxs-chart{min-height:455px}
.vxs-ticket{min-height:520px;padding:14px 16px 16px;display:grid;grid-template-rows:auto minmax(128px,1.05fr) minmax(126px,.95fr) auto 62px auto minmax(92px,.7fr);gap:11px;align-content:stretch}
.vxs-sides button{min-height:48px;font-size:14px}
.vxs-amtbox{display:flex;flex-direction:column;justify-content:center;padding:15px 15px;border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012))}
#vxs-amt{font-size:36px;letter-spacing:-.045em}
.vxs-qs button{min-height:35px}
.vxs-quote{justify-content:center;padding:16px 15px;gap:10px;border-radius:16px;background:linear-gradient(180deg,rgba(0,0,0,.30),rgba(255,255,255,.012))}
.vxs-quote span{font-size:12px}.vxs-quote b{font-size:14px}#vxs-out{font-size:19px}
.vxs-slip{min-height:36px}
#vxs-go{min-height:62px;font-size:17px;border-radius:15px}
#vxs-note{min-height:18px;margin:0;align-self:center}
.vxs-routecard{align-self:stretch;display:grid;grid-template-columns:1fr auto;grid-template-areas:"main chain" "main fee";align-items:center;gap:5px 14px;padding:14px 15px;border:1px solid rgba(244,184,63,.10);border-radius:15px;background:radial-gradient(circle at 8% 10%,rgba(244,184,63,.07),transparent 40%),rgba(0,0,0,.18)}
.vxs-routecard div{grid-area:main}.vxs-routecard small{display:block;color:#7b6a52;font:600 8px/1 var(--mono);letter-spacing:.14em}.vxs-routecard b{display:block;margin-top:5px;color:#eee1ca;font:700 13px/1.2 var(--sans)}
.vxs-routecard span{grid-area:chain;color:#8c8379;font:500 10px/1.3 var(--mono)}.vxs-routecard em{grid-area:fee;color:#c99b45;font:600 9px/1.3 var(--mono);font-style:normal;text-align:right}
#vxs-chart-empty[hidden]{display:none!important}#vxs-chart-empty{background:rgba(5,5,5,.28);border-color:rgba(255,255,255,.045);font-size:11px}

/* ---------- Live OIX supply block ---------------------------------------- */
.v63-supply-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:14px}
.v63-supply-grid>span{min-width:0;padding:13px 12px;border:1px solid rgba(255,255,255,.055);border-radius:13px;background:rgba(0,0,0,.16)}
.v63-supply-grid small{display:block;color:#756b5d;font:600 7px/1.2 var(--mono);letter-spacing:.12em}.v63-supply-grid b{display:block;margin-top:7px;color:#efe3cf;font:700 13px/1.2 var(--mono);overflow-wrap:anywhere}
.v63-supply-grid span:nth-child(3) b,.v63-supply-grid span:nth-child(4) b{color:#ff9e79}
.v63-supply-bars{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.v63-supply-bars>div{padding:11px 12px;border:1px solid rgba(255,255,255,.05);border-radius:12px;background:rgba(255,255,255,.012)}
.v63-supply-bars span{display:block;margin-bottom:7px;color:#8b8174;font:500 9px/1.2 var(--sans)}
.v63-supply-bars i{display:block;height:8px;border-radius:99px;background:rgba(255,255,255,.05);overflow:hidden}.v63-supply-bars i b{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#7fcf8e,#d4ba5a);transition:width .5s ease}.v63-supply-bars i.burn b{background:linear-gradient(90deg,#e66c4f,#f1b64b)}

/* ---------- Referral claim: real claimable state ------------------------- */
.vx-refstats>span{position:relative}.v63-ref-claim{display:block;margin-top:8px;appearance:none;border:1px solid rgba(244,184,63,.18);border-radius:8px;padding:6px 9px;background:rgba(244,184,63,.07);color:#e6b655;font:700 8px/1 var(--mono);cursor:pointer}.v63-ref-claim:disabled{opacity:.35;cursor:not-allowed}

/* ---------- Auto-compound clarity ---------------------------------------- */
#vx-comp-tierwrap>small::after{content:" · auto service = 90d";color:#b28c45}

/* ---------- Lucky / generic confirmation on mobile ----------------------- */
@media(max-width:700px){
  .vx-mmask{align-items:flex-end!important;justify-content:center!important;padding:8px max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))!important;overflow:hidden!important}
  .vx-mmask .vx-modal{width:100%!important;max-width:none!important;max-height:calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;height:auto!important;display:grid!important;grid-template-rows:auto auto minmax(0,1fr) auto!important;overflow:hidden!important;border-radius:18px 18px 12px 12px!important}
  .vx-mmask .vx-modal>header{position:relative!important;z-index:8!important;background:rgba(12,11,10,.98)!important}
  .vx-mmask #vx-m-body{min-height:0!important;max-height:none!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch!important;overscroll-behavior:contain!important;padding-bottom:18px!important}
  .vx-mmask #vx-m-foot{position:sticky!important;bottom:0!important;z-index:12!important;display:grid!important;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))!important;gap:8px!important;padding:10px 12px calc(10px + env(safe-area-inset-bottom))!important;background:linear-gradient(180deg,rgba(12,11,10,.90),rgba(12,11,10,1) 28%)!important;border-top:1px solid rgba(255,255,255,.075)!important;box-shadow:0 -14px 30px rgba(0,0,0,.36)!important}
  .vx-mmask #vx-m-foot button{min-height:52px!important;width:100%!important;margin:0!important;touch-action:manipulation!important}
  #vx-lhud{overflow:visible!important}
  #vx-lhud .vx-lhud-in{padding-bottom:max(10px,env(safe-area-inset-bottom))!important}
  #vx-lhud .vx-hsec-go{position:sticky!important;bottom:max(6px,env(safe-area-inset-bottom))!important;z-index:7!important;background:linear-gradient(180deg,rgba(13,11,9,.93),rgba(13,11,9,.99))!important;border-radius:12px!important;padding:8px!important;box-shadow:0 -8px 24px rgba(0,0,0,.28)!important}
  #vx-lhud #vx-l-confirm{min-height:52px!important}
}

@media(max-width:980px){
  #vxs-root{grid-template-columns:1fr;min-height:0}.vxs-chartside{min-height:390px;border-right:0;border-bottom:1px solid rgba(255,255,255,.06)}#vxs-chart{min-height:330px}.vxs-ticket{min-height:0;grid-template-rows:auto auto auto auto 58px auto auto}.v63-supply-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v63-supply-bars{grid-template-columns:1fr}
}
@media(max-width:560px){
  .vxs-head{gap:11px;padding:12px}.vxs-pricefact{min-width:120px}.vxs-chartside{min-height:330px;padding-inline:2px}#vxs-chart{min-height:280px}.vxs-ticket{padding:11px;gap:9px}#vxs-amt{font-size:30px}.vxs-routecard{grid-template-columns:1fr;grid-template-areas:"main" "chain" "fee"}.vxs-routecard em{text-align:left}.v63-supply-grid{grid-template-columns:1fr}
}

/* ---------- Full litepaper entry point ----------------------------------- */
.v63-litepaper-link{display:inline-flex;align-items:center;gap:8px;margin-top:13px;padding:9px 11px;border:1px solid rgba(244,184,63,.16);border-radius:9px;background:rgba(244,184,63,.055);color:#d9aa50!important;text-decoration:none!important;font:700 8px/1 var(--mono);letter-spacing:.09em}.v63-litepaper-link:hover{border-color:rgba(244,184,63,.34);background:rgba(244,184,63,.09)}
#vx-comp-total.vx-green{color:#6cd795!important}

/* Premium OIX wallet-import action */
.vxp-add-oix{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-width:158px;
  border-color:rgba(255,190,74,.28)!important;
  background:
    linear-gradient(180deg,rgba(255,190,74,.08),rgba(255,190,74,.025))!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.035),
    0 0 0 1px rgba(255,190,74,.025);
  transition:
    transform .16s ease,
    border-color .16s ease,
    background .16s ease,
    box-shadow .16s ease;
}

.vxp-add-oix img{
  width:18px;
  height:18px;
  object-fit:contain;
  filter:drop-shadow(0 0 8px rgba(255,178,58,.22));
}

.vxp-add-oix span{
  white-space:nowrap;
}

.vxp-add-oix:hover:not(:disabled){
  transform:translateY(-1px);
  border-color:rgba(255,195,82,.52)!important;
  background:
    linear-gradient(180deg,rgba(255,190,74,.13),rgba(255,190,74,.045))!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.055),
    0 7px 20px rgba(0,0,0,.22),
    0 0 18px rgba(255,174,50,.07);
}

.vxp-add-oix:disabled{
  opacity:.72;
  cursor:default;
}

@media (max-width:720px){
  .vxp-add-oix{
    min-width:0;
    flex:1 1 100%;
  }
}

/* ===== vein-rev64-guide-premium.css ===== */
/* CaveWatch The Vein · REV64 · premium guide + Litepaper rail */
body[data-cw-chrome="portal"] .vxp-socialrail a.v64-litepaper-rail{position:relative;color:#c7ab7d;border-color:rgba(255,200,87,.2);background:linear-gradient(150deg,rgba(25,18,10,.92),rgba(8,7,5,.92))}
body[data-cw-chrome="portal"] .vxp-socialrail a.v64-litepaper-rail:before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 1px rgba(255,201,91,.03),0 0 22px rgba(241,168,49,.035)}
body[data-cw-chrome="portal"] .vxp-socialrail a.v64-litepaper-rail:hover{color:#ffd16d;border-color:rgba(255,207,104,.42);box-shadow:0 18px 40px rgba(0,0,0,.44),0 0 30px rgba(244,174,50,.1)}
.vxp-howmask{background:rgba(3,3,2,.72)!important;backdrop-filter:blur(10px)!important;-webkit-backdrop-filter:blur(10px)!important}
.vxp-howdrawer{background:radial-gradient(circle at 82% -2%,rgba(238,151,37,.07),transparent 28%),linear-gradient(180deg,rgba(12,9,6,.99),rgba(7,6,4,.995))!important;border-left:1px solid rgba(255,190,76,.14)!important;box-shadow:-28px 0 90px rgba(0,0,0,.42)!important;scrollbar-color:#5b4325 #090705!important}
.vxp-howhead{position:sticky!important;top:0!important;z-index:8!important;margin:-1px -1px 0!important;padding:22px 24px 18px!important;background:linear-gradient(180deg,rgba(11,9,6,.97),rgba(11,9,6,.9))!important;border-bottom:1px solid rgba(255,255,255,.055)!important;backdrop-filter:blur(18px)!important;-webkit-backdrop-filter:blur(18px)!important}
.vxp-howhead h2{font-family:var(--display)!important;font-weight:700!important;letter-spacing:-.035em!important}
.vxp-howhead p{font-family:var(--sans)!important;color:#9e9282!important;line-height:1.6!important}
.vxp-howclose{border-color:rgba(255,190,76,.13)!important;background:rgba(255,255,255,.02)!important;transition:.18s ease!important}.vxp-howclose:hover{transform:rotate(4deg) scale(1.04);border-color:rgba(255,190,76,.35)!important;color:#ffd16d!important}
.vxp-guide-nav{position:sticky!important;top:126px!important;z-index:7!important;margin:0 -1px 16px!important;padding:10px 24px!important;border-bottom:1px solid rgba(255,255,255,.045)!important;background:rgba(9,7,5,.88)!important;backdrop-filter:blur(16px)!important;-webkit-backdrop-filter:blur(16px)!important;overflow-x:auto!important;scrollbar-width:none!important}.vxp-guide-nav::-webkit-scrollbar{display:none!important}
.vxp-guide-nav a{flex:0 0 auto!important;border:1px solid rgba(255,255,255,.045)!important;border-radius:9px!important;background:rgba(255,255,255,.012)!important;color:#8f8577!important;transition:.18s ease!important}.vxp-guide-nav a:hover{color:#f0d5a7!important;border-color:rgba(255,190,76,.2)!important;background:rgba(255,190,76,.045)!important;transform:translateY(-1px)}
.v63-litepaper-link{position:relative;overflow:hidden!important;border-color:rgba(244,184,63,.22)!important;background:linear-gradient(135deg,rgba(244,184,63,.075),rgba(244,184,63,.025))!important;transition:.2s ease!important}.v63-litepaper-link:after{content:"";position:absolute;top:-120%;left:-30%;width:30%;height:340%;transform:rotate(20deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.11),transparent);transition:left .55s ease}.v63-litepaper-link:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.2)!important}.v63-litepaper-link:hover:after{left:120%}
.v64-guide-snapshot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:0 0 15px;padding:0!important}
.v64-guide-snapshot>span{position:relative;min-height:94px;padding:15px 16px;border:1px solid rgba(255,255,255,.065);border-radius:14px;background:linear-gradient(150deg,rgba(255,255,255,.023),rgba(255,255,255,.006));overflow:hidden;transition:.2s ease}
.v64-guide-snapshot>span:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;transform:scaleX(0);background:linear-gradient(90deg,transparent,#f4b84d,transparent);transition:transform .25s ease}.v64-guide-snapshot>span:hover{transform:translateY(-2px);border-color:rgba(255,190,76,.2);background:linear-gradient(150deg,rgba(245,184,72,.04),rgba(255,255,255,.007))}.v64-guide-snapshot>span:hover:after{transform:scaleX(1)}
.v64-guide-snapshot small{display:block;color:#7f725f;font:600 7px/1 var(--mono);letter-spacing:.15em}.v64-guide-snapshot b{display:block;margin:8px 0 5px;color:#eadcc6;font:700 15px/1.15 var(--display);letter-spacing:-.02em;overflow-wrap:anywhere}.v64-guide-snapshot em{display:block;color:#746d64;font:400 8.5px/1.35 var(--sans);font-style:normal}.v64-guide-snapshot .burn b{color:#ef9271}
.vxp-era-card,.vxp-emission-deep,.vxp-valueflow,.vxp-benefits article,.vxp-loop,.vxp-burnmap,.vxp-howgrid article,.vxp-whygrid article,.vxp-fair,.v28-guide-contracts,.vxp-howtruth,.v64-support{border-color:rgba(255,255,255,.07)!important;background:linear-gradient(150deg,rgba(255,255,255,.021),rgba(255,255,255,.005) 58%,rgba(0,0,0,.11))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.018)!important}
.vxp-benefits article,.vxp-howgrid article,.vxp-whygrid article,#vxp-how-contracts .vxi-caddr,.vxp-fair>div>span{transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease!important}
.vxp-benefits article:hover,.vxp-howgrid article:hover,.vxp-whygrid article:hover,#vxp-how-contracts .vxi-caddr:hover,.vxp-fair>div>span:hover{transform:translateY(-3px)!important;border-color:rgba(255,190,76,.19)!important;background:linear-gradient(150deg,rgba(244,184,75,.035),rgba(255,255,255,.006))!important;box-shadow:0 14px 34px rgba(0,0,0,.18)!important}
.vxp-era-track i,.vxp-splitbar i{box-shadow:0 0 18px rgba(242,184,75,.08)}
.vxp-burnmap>div>span{transition:.2s ease!important}.vxp-burnmap>div>span:hover{transform:translateY(-2px);border-color:rgba(239,118,94,.2)!important;background:rgba(239,118,94,.025)!important}
.v64-support{scroll-margin-top:170px;margin-top:14px;padding:20px;border:1px solid rgba(255,255,255,.07);border-radius:17px}
.v64-support>header{display:grid;grid-template-columns:1fr minmax(240px,.75fr);gap:20px;align-items:end;margin-bottom:14px}.v64-support>header .vx-eyebrow{grid-column:1/-1}.v64-support h3{margin:0;font:700 20px/1.1 var(--display);letter-spacing:-.03em;color:#eee2cf}.v64-support>header p{margin:0;color:#837b70;font-size:9.8px;line-height:1.55}
.v64-support>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.v64-support article{position:relative;padding:15px 16px 15px 48px;border:1px solid rgba(255,255,255,.055);border-radius:13px;background:rgba(0,0,0,.09);transition:.2s ease}.v64-support article:hover{transform:translateY(-2px);border-color:rgba(255,190,76,.18);background:rgba(244,184,75,.025)}.v64-support article>span{position:absolute;left:14px;top:15px;display:grid;place-items:center;width:24px;height:24px;border-radius:8px;background:rgba(244,184,75,.07);color:#c18d3c;font:700 7px var(--mono)}.v64-support article>b{display:block;margin:1px 0 6px;font:650 11px var(--display);color:#e8dbc6}.v64-support article>p{margin:0;color:#837b70;font-size:9.2px;line-height:1.55}
.vxp-howdrawer a:focus-visible,.vxp-howdrawer button:focus-visible,.vxp-socialrail a:focus-visible{outline:2px solid rgba(255,206,104,.6)!important;outline-offset:2px!important}
@media(max-width:980px){.v64-guide-snapshot{grid-template-columns:repeat(2,minmax(0,1fr))}.vxp-guide-nav{top:118px!important}.v64-support>header{grid-template-columns:1fr}}
@media(max-width:700px){.vxp-howhead{padding:17px 17px 14px!important}.vxp-guide-nav{top:107px!important;padding:8px 17px!important}.v64-guide-snapshot{grid-template-columns:1fr 1fr;gap:7px}.v64-guide-snapshot>span{min-height:82px;padding:12px}.v64-guide-snapshot b{font-size:12px}.v64-support{padding:15px}.v64-support>div{grid-template-columns:1fr}.v64-support h3{font-size:17px}}
@media(max-width:430px){.v64-guide-snapshot{grid-template-columns:1fr}.vxp-guide-nav{top:112px!important}body[data-cw-chrome="portal"] .vxp-socialrail{max-height:calc(100dvh - 90px);overflow:visible!important}}
@media(prefers-reduced-motion:reduce){.v63-litepaper-link:after{display:none}.vxp-benefits article,.vxp-howgrid article,.vxp-whygrid article,#vxp-how-contracts .vxi-caddr,.vxp-fair>div>span,.v64-support article,.v64-guide-snapshot>span{transition:none!important}}


/* CaveWatch The Vein · REV65 · Litepaper FAB moved above Chat */
.v65-litepaper-fab{position:fixed;right:22px;left:auto;bottom:180px;z-index:9440;width:48px;height:48px;border-radius:17px;display:grid;place-items:center;color:#cbb186;text-decoration:none;border:1px solid rgba(255,186,77,.22);background:radial-gradient(circle at 50% 8%,rgba(255,196,91,.11),transparent 50%),linear-gradient(180deg,rgba(26,20,13,.9),rgba(9,8,6,.93));-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);box-shadow:0 15px 38px rgba(0,0,0,.46),0 0 24px rgba(249,115,22,.055),inset 0 1px rgba(255,255,255,.035);transition:transform .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease}
.v65-litepaper-fab:before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(255,210,122,.018)}
.v65-litepaper-fab svg{width:20px;height:20px;filter:drop-shadow(0 3px 8px rgba(0,0,0,.24))}
.v65-litepaper-fab:hover{transform:translateY(-2px);color:#ffd272;border-color:rgba(255,204,103,.48);box-shadow:0 19px 46px rgba(0,0,0,.54),0 0 30px rgba(249,115,22,.12),inset 0 1px rgba(255,255,255,.045)}
.v65-litepaper-fab:focus-visible{outline:2px solid rgba(255,206,104,.62);outline-offset:2px}
/* REV66: keep Litepaper vertically stacked above the actual Chat trigger at every viewport. */
@media(max-width:620px){.v65-litepaper-fab{right:13px;left:auto;bottom:174px;width:45px;height:45px;border-radius:15px}.v65-litepaper-fab svg{width:19px;height:19px}}
@media(prefers-reduced-motion:reduce){.v65-litepaper-fab{transition:none!important}}

/* ===== vein-rev66-trade-live.css ===== */
/* ==========================================================================
   REV66 · LIVE OIX MARKET / DEXSCREENER
   ========================================================================== */

.vxs-chartside.vxs-dex-chartside{
  position:relative;
  display:block;
  min-height:520px;
  padding:0!important;
  overflow:hidden;
  border-right:1px solid rgba(255,255,255,.045);
  background:
    radial-gradient(circle at 30% 12%,rgba(255,185,64,.035),transparent 38%),
    #080706;
}

.vxs-chart-livebar{
  height:42px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:0 14px;
  border-bottom:1px solid rgba(255,255,255,.055);
  background:rgba(8,7,6,.96);
}

.vxs-chart-livebar>span{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
}

.vxs-chart-livebar i{
  width:7px;
  height:7px;
  flex:0 0 7px;
  border-radius:50%;
  background:#4ed980;
  box-shadow:0 0 12px rgba(78,217,128,.55);
}

.vxs-chart-livebar b{
  font:750 9px/1 var(--mono);
  letter-spacing:.12em;
  color:#c9bdad;
}

.vxs-chart-livebar small{
  font:600 8px/1 var(--mono);
  letter-spacing:.06em;
  color:#6f675e;
}

.vxs-chart-livebar a{
  flex:none;
  color:#b58a43;
  text-decoration:none;
  font:700 8px/1 var(--mono);
  letter-spacing:.08em;
  transition:color .16s ease,opacity .16s ease;
}

.vxs-chart-livebar a:hover{
  color:#e0b55f;
}

#vxs-dex-chart{
  display:block;
  width:100%;
  height:500px;
  min-height:500px;
  border:0;
  margin:0;
  background:#080706;
}

.vxs-dex-chartside #vxs-chart,
.vxs-dex-chartside #vxs-chart-empty,
.vxs-dex-chartside .vxs-tfs[hidden]{
  display:none!important;
}

#vxs-route-title{
  color:#69d98e;
}

#vxs-route-state{
  color:#91887c;
}

#vxs-route-note{
  color:#b58a43;
}

@media(max-width:900px){
  .vxs-chartside.vxs-dex-chartside{
    min-height:460px;
    border-right:0;
  }

  #vxs-dex-chart{
    height:420px;
    min-height:420px;
  }
}

@media(max-width:620px){
  .vxs-chart-livebar small{
    display:none;
  }

  #vxs-dex-chart{
    height:390px;
    min-height:390px;
  }
}


/* REV66 DEX EMBED FOOTER CROP */
.vxs-dex-frame{
  position:relative;
  width:100%;
  height:500px;
  overflow:hidden;
  background:#080706;
}

.vxs-dex-frame #vxs-dex-chart{
  width:100%;
  height:538px;
  min-height:538px;
  border:0;
}

.vxs-chart-livebar{
  justify-content:flex-start;
}

.vxs-chart-livebar>a{
  display:none!important;
}

@media(max-width:900px){
  .vxs-dex-frame{
    height:420px;
  }

  .vxs-dex-frame #vxs-dex-chart{
    height:458px;
    min-height:458px;
  }
}

@media(max-width:620px){
  .vxs-dex-frame{
    height:390px;
  }

  .vxs-dex-frame #vxs-dex-chart{
    height:428px;
    min-height:428px;
  }
}

/* ===== vein-rev67-premium-finish.css ===== */
/* REV67 · final premium composition pass
   Loaded last on purpose: consolidates the accumulated Vault, market and
   mobile Revenue Drop overrides without changing any transaction-bound IDs. */

/* ── Vault earnings routing ─────────────────────────────────────────────── */
#vx-compound.vx-compound{
  position:relative!important;display:grid!important;
  grid-template-columns:minmax(0,1.5fr) minmax(310px,.72fr)!important;
  gap:18px!important;padding:clamp(18px,2.4vw,30px)!important;
  border-color:rgba(255,198,92,.16)!important;
  background:
    radial-gradient(circle at 86% 5%,rgba(64,219,130,.09),transparent 30%),
    radial-gradient(circle at 4% 0,rgba(255,180,56,.09),transparent 36%),
    linear-gradient(145deg,rgba(21,17,12,.94),rgba(7,7,7,.94))!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 24px 70px rgba(0,0,0,.32)!important;
}
#vx-compound:after{content:"";position:absolute;inset:10px;border:1px solid rgba(255,255,255,.025);border-radius:14px;pointer-events:none}
#vx-compound>.vx-comp-copy{display:block!important;min-width:0!important}
#vx-compound .vx-eyebrow{color:#d69b43;letter-spacing:.2em}
#vx-compound h3{font-size:clamp(23px,2vw,31px)!important;letter-spacing:-.035em!important;margin:8px 0 9px!important}
#vx-compound .vx-comp-copy>p{max-width:820px!important;margin-bottom:18px!important;color:#9e9282!important;font-size:12.5px!important}
#vx-compound .vx-comp-row{min-height:72px!important;margin:0!important;padding:13px 15px!important;border-color:rgba(255,200,87,.13)!important;background:linear-gradient(100deg,rgba(255,190,75,.055),rgba(255,255,255,.018))!important}
#vx-compound .vx-comp-tier{display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important;margin-top:12px!important;padding:15px!important;border:1px solid rgba(255,255,255,.065);border-radius:15px;background:rgba(0,0,0,.16)}
#vx-compound .vx-comp-tier>small,#vx-compound #vx-comp-modes,#vx-compound #vx-comp-lock-options{grid-column:1/-1!important}
#vx-compound .vx-comp-tier>small{color:#bda47e!important;font-size:8px!important}
#vx-compound .vx-comp-mode{gap:9px!important;margin:0!important}
#vx-compound .vx-comp-modebtn{min-height:68px!important;padding:12px 14px!important;border-radius:12px!important}
#vx-compound .vx-comp-modebtn.on{border-color:rgba(255,194,82,.52)!important;background:linear-gradient(145deg,rgba(255,190,72,.13),rgba(255,255,255,.025))!important;box-shadow:inset 0 1px 0 rgba(255,240,190,.06)}
#vx-compound #vx-comp-auto-tiers{gap:8px!important}
#vx-compound #vx-comp-auto-tiers button{min-height:54px!important;border-radius:11px!important}
#vx-compound .vx-comp-trigger,#vx-compound #vx-comp-gas-box{min-height:146px!important;margin:0!important;padding:14px 15px!important;border:1px solid rgba(255,255,255,.07)!important;border-radius:13px!important;background:linear-gradient(145deg,rgba(255,255,255,.025),rgba(0,0,0,.17))!important;box-sizing:border-box!important}
#vx-compound .vx-comp-trigger{grid-column:1!important}
#vx-compound #vx-comp-gas-box{grid-column:2!important;color:#9c8f7c}
#vx-compound #vx-comp-gas-box>b{display:block;color:#eee0cc;font-size:12px;margin-bottom:4px}
#vx-compound #vx-comp-gas-balance{color:#79df9d;font:750 17px var(--mono)}
#vx-compound #vx-comp-policy-note{grid-column:1/-1!important;margin:0!important;padding:9px 11px!important;border:1px solid rgba(98,227,143,.09)!important;border-radius:9px!important;background:rgba(68,198,111,.035)!important;color:#93a991!important;opacity:1!important}
#vx-compound>.vx-comp-side{display:flex!important;flex-direction:column!important;gap:10px!important;margin:0!important;padding:14px!important;border:1px solid rgba(255,200,87,.09);border-radius:15px;background:linear-gradient(180deg,rgba(255,196,87,.035),rgba(0,0,0,.2))}
#vx-compound .vx-comp-side .vx-comp-fig{min-height:100px!important;margin:0!important;padding:15px!important;border-color:rgba(255,255,255,.07)!important;background:rgba(0,0,0,.2)!important;justify-content:center!important}
#vx-compound .vx-comp-side .vx-comp-fig b{font-size:clamp(18px,1.8vw,24px)!important;overflow-wrap:anywhere}
#vx-compound .vx-comp-actions{display:grid!important;grid-template-columns:1fr!important;gap:8px!important}
#vx-compound .vx-comp-actions .vx-btn{min-height:46px!important}
#vx-compound .vx-comp-side>.vx-vnote{margin:2px 1px 0!important;font-size:9.5px!important;line-height:1.55!important;color:#73695b!important}

/* ── Trade terminal ─────────────────────────────────────────────────────── */
#vxs-root{grid-template-columns:minmax(0,1.48fr) minmax(350px,.82fr)!important;border-radius:22px!important;border-color:rgba(255,197,88,.14)!important;background:linear-gradient(155deg,rgba(16,13,10,.98),rgba(5,5,5,.98))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 28px 80px rgba(0,0,0,.4)!important}
.vxs-head{gap:clamp(12px,2vw,24px)!important;padding:16px 18px!important;background:linear-gradient(90deg,rgba(255,194,83,.045),rgba(0,0,0,.26))!important}
.vxs-pairmark{margin-right:auto}.vxs-pairmark img{width:39px!important;height:39px!important}.vxs-pairmark b{font-size:17px!important}
.vxs-fact{min-width:82px;padding-left:14px;border-left:1px solid rgba(255,255,255,.055)}
.vxs-pricefact{min-width:145px}.vxs-fact b{font-size:14px!important}.vxs-chg{display:inline-flex;align-items:center;min-height:20px}.vxs-chg.up{color:#68dc91!important}.vxs-chg.down{color:#ff806d!important}.vxs-chg.flat{color:#8b8175!important}
.vxs-netpill{margin-left:0!important}
.vxs-chartside.vxs-dex-chartside{min-height:552px!important;border-color:rgba(255,255,255,.055)!important}
.vxs-dex-frame{height:510px!important}.vxs-dex-frame #vxs-dex-chart{height:548px!important;min-height:548px!important}
.vxs-chart-livebar{height:42px!important;padding:0 16px!important;background:rgba(7,7,7,.98)!important}
.vxs-ticket{min-height:552px!important;padding:16px!important;gap:11px!important;background:radial-gradient(circle at 100% 0,rgba(88,216,130,.055),transparent 34%)}
.vxs-sides button,.vxs-amtbox,.vxs-quote,#vxs-go,.vxs-routecard{border-radius:13px!important}
.vxs-routecard{margin-top:auto!important;padding:12px 13px!important;border:1px solid rgba(92,218,137,.1)!important;background:rgba(49,139,80,.035)!important}

/* Claim-time Revenue Drop token marks stay compact on phones. */
@media(max-width:700px){
  .vxs-revealed-row{grid-template-columns:1fr!important;gap:8px!important}
  .vxs-revealed-token{min-height:68px!important;justify-content:flex-start!important;gap:10px!important;padding:9px 11px!important}
  .vxs-revealed-token img{width:34px!important;height:34px!important;max-width:34px!important;max-height:34px!important;flex:0 0 34px!important}
  .vxs-revealed-token strong{font-size:14px!important}.vxs-revealed-token b{font-size:10px!important}
}

@media(max-width:1040px){
  #vxs-root{grid-template-columns:1fr!important}.vxs-chartside.vxs-dex-chartside{border-right:0!important;border-bottom:1px solid rgba(255,255,255,.055)!important}
  .vxs-ticket{min-height:0!important}.vxs-netpill{margin-left:auto!important}
}
@media(max-width:900px){
  #vx-compound.vx-compound{grid-template-columns:1fr!important}
  #vx-compound>.vx-comp-side{margin-top:0!important;display:grid!important;grid-template-columns:1fr 1fr!important}
  #vx-compound .vx-comp-actions,#vx-compound .vx-comp-side>.vx-vnote{grid-column:1/-1!important}
}
@media(max-width:620px){
  #vx-compound.vx-compound{padding:15px!important;border-radius:16px!important}
  #vx-compound .vx-comp-tier{grid-template-columns:1fr!important;padding:12px!important}
  #vx-compound .vx-comp-trigger,#vx-compound #vx-comp-gas-box{grid-column:1!important;min-height:0!important;margin:0!important}
  #vx-compound #vx-comp-modes{grid-template-columns:1fr!important}
  #vx-compound>.vx-comp-side{grid-template-columns:1fr!important;padding:11px!important}
  #vx-compound .vx-comp-actions,#vx-compound .vx-comp-side>.vx-vnote{grid-column:1!important}
  .vxs-head{align-items:flex-start!important}.vxs-pairmark{width:100%;margin:0!important}.vxs-fact{flex:1;min-width:calc(33.333% - 10px);padding-left:9px}.vxs-netpill{margin:2px 0 0!important}
  .vxs-chartside.vxs-dex-chartside{min-height:412px!important}.vxs-dex-frame{height:370px!important}.vxs-dex-frame #vxs-dex-chart{height:408px!important;min-height:408px!important}
  .vxs-ticket{padding:12px!important}.vxs-slip{flex-wrap:wrap}.vxs-slip small{width:100%;margin:0 0 2px!important}
}

@media(prefers-reduced-motion:reduce){#vx-compound *,#vxs-root *{scroll-behavior:auto!important}}

/* Verified deployment marks in the How It Works register. */
#vxp-how-contracts .vxi-caddr{position:relative;overflow:hidden;padding-top:13px!important;background:radial-gradient(circle at 105% 0,rgba(82,215,132,.055),transparent 42%),rgba(255,255,255,.015)!important}
#vxp-how-contracts .vxi-caddr:after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(82,215,132,.36),transparent)}
.vxi-verified{display:inline-flex;align-items:center;gap:5px;width:max-content;margin-bottom:4px;padding:3px 6px;border:1px solid rgba(82,215,132,.16);border-radius:999px;background:rgba(82,215,132,.05);color:#78d797;font:750 6px/1 var(--mono);letter-spacing:.1em}
.vxi-verified i{width:11px;height:11px;display:grid;place-items:center;border-radius:50%;background:#59c981;color:#07130b;font:900 7px var(--sans);font-style:normal}

/* ===== vein-rev68-jackpot-ledger.css ===== */
/* REV68 · compact on-chain jackpot ledger + wallet brand fidelity */

.v68-last-hit{
  position:relative;display:grid;grid-template-columns:minmax(220px,.9fr) minmax(250px,1.1fr) minmax(210px,.78fr);
  align-items:center;gap:18px;margin:14px 0;padding:15px 18px;overflow:hidden;
  border:1px solid rgba(242,184,75,.14);border-radius:16px;
  background:
    radial-gradient(circle at 3% 50%,rgba(242,168,54,.09),transparent 25%),
    linear-gradient(105deg,rgba(25,19,11,.93),rgba(9,9,8,.95) 58%,rgba(15,12,9,.94));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 18px 48px rgba(0,0,0,.25);
}
.v68-last-hit:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 28%,rgba(255,218,139,.035) 49%,transparent 70%);transform:translateX(-120%);animation:v68LedgerSweep 11s ease-in-out infinite}
.v68-last-hit:after{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,#f1b84d,transparent);box-shadow:0 0 18px rgba(241,184,77,.2)}
.v68-last-hit-lucky{border-color:rgba(171,159,242,.15);background:radial-gradient(circle at 3% 50%,rgba(171,159,242,.1),transparent 25%),linear-gradient(105deg,rgba(20,16,29,.94),rgba(9,8,11,.95) 58%,rgba(14,12,19,.94))}
.v68-last-hit-lucky:after{background:linear-gradient(180deg,transparent,#ab9ff2,transparent);box-shadow:0 0 18px rgba(171,159,242,.22)}
.v68-hit-id,.v68-hit-value,.v68-hit-target{position:relative;z-index:1;min-width:0}
.v68-hit-id{display:flex;align-items:center;gap:12px}.v68-hit-icon{width:46px;height:46px;display:grid;place-items:center;flex:0 0 46px;border:1px solid rgba(255,201,100,.13);border-radius:13px;background:radial-gradient(circle,rgba(255,191,75,.12),rgba(255,255,255,.015));box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.v68-last-hit-lucky .v68-hit-icon{border-color:rgba(171,159,242,.16);background:radial-gradient(circle,rgba(171,159,242,.12),rgba(255,255,255,.015))}
.v68-hit-icon img{width:35px;height:35px;object-fit:contain;filter:drop-shadow(0 7px 13px rgba(0,0,0,.42))}
.v68-last-hit small{display:block;color:#7e7160;font:700 7px/1 var(--mono);letter-spacing:.15em;text-transform:uppercase}
.v68-hit-id b{display:block;margin-top:7px;color:#e8dcc8;font:650 13px/1.2 var(--display);letter-spacing:-.015em}
.v68-hit-value,.v68-hit-target{padding-left:18px;border-left:1px solid rgba(255,255,255,.055)}
.v68-hit-value>b{display:block;margin:6px 0 5px;color:#f1c45f;font:700 clamp(16px,1.6vw,22px)/1.05 var(--mono);letter-spacing:-.03em}
.v68-last-hit-lucky .v68-hit-value>b{color:#c7bcff}
.v68-hit-value>span{display:block;color:#8b8174;font-size:9px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v68-hit-target>b{display:block;margin:7px 0 7px;color:#d9cbb8;font:650 11px/1.25 var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v68-hit-target>a{display:inline-flex;color:#957746;font:700 6.5px/1 var(--mono);letter-spacing:.13em;text-decoration:none}.v68-hit-target>a:hover{color:#f1c45f}
.v68-last-hit[data-state="empty"] .v68-hit-value>b,.v68-last-hit[data-state="error"] .v68-hit-value>b{color:#8d8478;font-size:14px}.v68-last-hit[data-state="loading"] .v68-hit-value>b{animation:v68Pulse 1.8s ease-in-out infinite}

.vxp-wicon img,#vxp-connect-icon img{display:block;width:100%;height:100%;object-fit:contain}.vxp-wicon img{border-radius:10px}

@keyframes v68LedgerSweep{0%,70%{transform:translateX(-120%)}88%,100%{transform:translateX(120%)}}
@keyframes v68Pulse{50%{opacity:.48}}

@media(max-width:800px){
  .v68-last-hit{grid-template-columns:1fr 1fr;gap:12px;padding:13px 14px}
  .v68-hit-target{grid-column:1/-1;padding:11px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.05);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px}
  .v68-hit-target>b{margin:0}.v68-hit-target>a{justify-self:end}
}
@media(max-width:520px){
  .v68-last-hit{grid-template-columns:1fr;margin:10px 0;padding:12px}
  .v68-hit-icon{width:40px;height:40px;flex-basis:40px}.v68-hit-icon img{width:31px;height:31px}
  .v68-hit-value,.v68-hit-target{grid-column:auto;padding:10px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.05)}
  .v68-hit-target{display:block}.v68-hit-target>b{margin:6px 0}.v68-hit-value>span{white-space:normal}
  .vx-mldraws>span{min-width:0}.vx-mldraws small{font-size:6.3px!important;line-height:1.28!important;white-space:normal!important}
}
@media(prefers-reduced-motion:reduce){.v68-last-hit:before{animation:none}.v68-last-hit[data-state="loading"] .v68-hit-value>b{animation:none}}

/* ===== vein-rev69-hotfix.css ===== */
/* REV69 · focused production hotfix: Vault composition and wallet identity. */
#vx-compound .vx-comp-ops{
  grid-column:1/-1;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:12px;
  align-items:stretch;
}
#vx-compound .vx-comp-ops>.vx-comp-trigger,
#vx-compound .vx-comp-ops>#vx-comp-gas-box{
  grid-column:auto!important;
  width:auto;
  min-width:0;
  margin:0!important;
  min-height:148px;
  box-sizing:border-box;
}
#vx-compound #vx-comp-gas-box{
  display:flex;
  flex-wrap:wrap;
  align-content:flex-start;
  align-items:baseline;
  column-gap:5px;
  row-gap:5px;
  padding:20px 22px;
}
#vx-compound #vx-comp-gas-box>b,
#vx-compound #vx-comp-gas-box>small,
#vx-compound #vx-comp-gas-box>button{
  flex:0 0 100%;
}
#vx-compound #vx-comp-gas-box br{display:none}
#vx-compound #vx-comp-gas-box>small{line-height:1.55}
#vx-compound #vx-comp-gas-topup{width:max-content!important;max-width:100%;margin-top:5px!important}
#vx-compound #vx-comp-policy-note{grid-column:1/-1!important}
body.vxp-wallet-auth-pending #vxp-connect{border-color:rgba(255,190,66,.48)}
@media(max-width:720px){
  #vx-compound .vx-comp-ops{grid-template-columns:1fr}
  #vx-compound .vx-comp-ops>.vx-comp-trigger,
  #vx-compound .vx-comp-ops>#vx-comp-gas-box{min-height:0}
}
