/* The website: TrenchBrain's public pages (index, login, terms, privacy).
   A SaaS landing in the app's own dark style: centred type, cards whose edges
   catch the light, the product itself as the pictures (site.js). Sits on the
   app's tokens, components and blocks; the page's own parts are prefixed s-,
   desk- (the frame the desk sits in; the desk itself is desk.html)
   and ill- (the pictures in the bento). */

.site-html,
.site-html body {
  height: auto;
  min-height: 100%;
}
.site {
  --s-bg: #0c0c0e;
  --s-card: #111113;
  --s-ink: #ececee;
  --s-muted: #9a9ba2;
  /* Large quiet text and icons: 3:1 on the page and its cards. */
  --s-dim: #68696f;
  /* Small quiet text (notes, fine print, step numbers): 4.5:1 on the page and its cards. */
  --s-quiet: #7d7e85;
  --s-line: rgb(255 255 255 / 6%);
  --s-max: 1180px;
  --s-gut: 24px;
  --s-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
  overflow-x: clip;
  background: var(--s-bg);
  color: var(--s-ink);
  font-size: 15px;
}
.site-wrap {
  position: relative;
  width: 100%;
  max-width: calc(var(--s-max) + 2 * var(--s-gut));
  margin: 0 auto;
  padding: 0 var(--s-gut);
}
/* Two hairlines frame the content, all the way down. */
.site-lines {
  position: fixed;
  z-index: 0;
  top: 0;
  bottom: 0;
  left: 50%;
  width: min(var(--s-max), 100% - 2 * var(--s-gut));
  border-right: 1px solid rgb(255 255 255 / 3.5%);
  border-left: 1px solid rgb(255 255 255 / 3.5%);
  transform: translateX(-50%);
  pointer-events: none;
}
.site main,
.site-foot {
  position: relative;
  z-index: 1;
  overflow-x: clip;
}
.site h1 > span,
.site h2 {
  text-wrap: balance;
}
.site .tb-word {
  display: block;
  width: 100%;
  height: auto;
}

/* The gliding wheel (Lenis, site.js): what its own stylesheet asks for. */
html.lenis,
html.lenis body {
  height: auto;
}
.lenis:not(.lenis-autoToggle).lenis-stopped {
  overflow: clip;
}
.lenis [data-lenis-prevent] {
  overscroll-behavior: contain;
}
.lenis.lenis-smooth iframe {
  pointer-events: none;
}

/* ───────── Buttons ───────── */
.s-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 38px;
  padding: 0 18px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: var(--weight-bold);
  letter-spacing: -0.01em;
  white-space: nowrap;
  transition:
    background 200ms,
    box-shadow 200ms,
    transform 200ms var(--s-ease),
    color 200ms;
}
.s-btn-sm {
  height: 32px;
  padding: 0 14px;
  font-size: 13px;
}
.s-btn-lg {
  height: 46px;
  padding: 0 24px;
  font-size: 15px;
}
.s-btn-light {
  background: #ececee;
  color: #0c0c0e;
}
.s-btn-light:hover {
  background: #fff;
}
.s-btn-glow {
  box-shadow:
    0 2px 18px rgb(255 255 255 / 22%),
    0 0 0 1px rgb(255 255 255 / 40%) inset;
}
.s-btn-glow:hover {
  box-shadow:
    0 4px 28px rgb(255 255 255 / 32%),
    0 0 0 1px rgb(255 255 255 / 60%) inset;
  transform: translateY(-1px);
}
.s-btn-ghost {
  background: rgb(255 255 255 / 4%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 9%);
  color: var(--s-ink);
}
.s-btn-ghost:hover {
  background: rgb(255 255 255 / 8%);
}
.s-btn-price {
  margin-left: 4px;
  padding-left: 11px;
  border-left: 1px solid rgb(0 0 0 / 14%);
  font-weight: var(--weight-medium);
  color: rgb(12 12 14 / 58%);
}

/* ───────── Nav ───────── */
.site-nav {
  position: fixed;
  z-index: 50;
  top: 0;
  right: 0;
  left: 0;
  transition:
    background 300ms,
    box-shadow 300ms,
    backdrop-filter 300ms;
}
.site-nav.scrolled,
.site-nav.open {
  background: rgb(12 12 14 / 72%);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
  backdrop-filter: blur(18px) saturate(1.4);
  box-shadow: 0 1px 0 var(--s-line);
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: 68px;
}
.nav-brand {
  width: 132px;
  flex-shrink: 0;
  color: var(--s-ink);
}
.nav-links {
  display: flex;
  gap: 4px;
}
.nav-links a {
  padding: 8px 12px;
  border-radius: 999px;
  font-size: 13.5px;
  font-weight: var(--weight-medium);
  color: var(--s-muted);
  transition:
    color 150ms,
    background 150ms;
}
.nav-links a:hover {
  background: rgb(255 255 255 / 4%);
  color: var(--s-ink);
}
.nav-acts {
  display: flex;
  align-items: center;
  gap: 8px;
}
.nav-menu {
  display: none;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  color: var(--s-ink);
}
.nav-sheet {
  display: grid;
  gap: 4px;
  padding: 8px var(--s-gut) 20px;
}
.nav-sheet > a:not(.s-btn) {
  padding: 12px 4px;
  border-bottom: 1px solid var(--s-line);
  font-size: 16px;
  font-weight: var(--weight-medium);
}
.nav-sheet .s-btn {
  height: 46px;
  margin-top: 10px;
}

/* ───────── Rising into view ───────── */
[data-reveal] {
  opacity: 0;
  filter: blur(6px);
  transform: translateY(22px);
  transition:
    opacity 900ms var(--s-ease) calc(var(--d, 0) * 90ms),
    filter 900ms var(--s-ease) calc(var(--d, 0) * 90ms),
    transform 1000ms var(--s-ease) calc(var(--d, 0) * 90ms);
}
[data-reveal].in {
  opacity: 1;
  filter: none;
  transform: none;
}

/* ───────── Cards: the page's own ───────── */
/* Same dark as the page, a light from below, and a top edge that catches
   the light and fades out toward the corners. */
.proof-card,
.bc,
.price-card,
.step {
  position: relative;
  border-radius: 28px;
  background:
    radial-gradient(110% 70% at 50% 115%, rgb(87 87 89 / 20%), transparent 62%),
    var(--s-card);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 5.5%),
    0 30px 60px -40px rgb(0 0 0 / 90%);
}
.proof-card::before,
.bc::before,
.price-card::before,
.step::before {
  content: '';
  position: absolute;
  top: 0;
  right: 14%;
  left: 14%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgb(255 255 255 / 24%), transparent);
  pointer-events: none;
}

/* ───────── Hero ───────── */
.hero {
  position: relative;
  z-index: 2;
  padding: 150px 0 0;
  text-align: center;
}
.hero-light {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 900px;
  background:
    radial-gradient(55% 50% at 50% 0%, rgb(255 255 255 / 7.5%), transparent 72%),
    radial-gradient(35% 32% at 50% 18%, rgb(59 123 246 / 7%), transparent 72%);
  pointer-events: none;
}
.hero-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}
/* The live line over the headline: plain text, only its dot in colour. */
.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 13px;
  font-weight: var(--weight-medium);
  color: #7e7f86;
  transition: color 200ms;
}
.hero-badge:hover {
  color: #a1a2a9;
}
.hero-badge .live-dot {
  width: 6px;
  height: 6px;
}
.hero-badge b {
  font-weight: var(--weight-medium);
  color: #c9cad0;
}
.hero-title {
  --h1: clamp(40px, 5.6vw, 66px);
  margin-top: 26px;
  font-size: var(--h1);
  line-height: 1.04;
  font-weight: var(--weight-medium);
  letter-spacing: -0.048em;
}
.hero-title > span {
  display: block;
}
.hero-title .l2 {
  color: var(--s-dim);
}
/* An icon tile sits in the headline, like a word. */
.h-tile {
  position: relative;
  display: inline-block;
  overflow: hidden;
  width: 1em;
  height: 1em;
  margin: 0 0.12em;
  border-radius: 0.26em;
  background: linear-gradient(180deg, #26262b, #17171a);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 12%),
    0 0 0 1px rgb(255 255 255 / 7%),
    0 14px 30px -12px rgb(0 0 0 / 90%);
  vertical-align: -0.12em;
  transform: rotate(-6deg);
  animation: h-tile 6s ease-in-out infinite;
}
.h-tile .ht-logo {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  opacity: 0;
  transform: translateY(22%) scale(0.8);
  transition:
    opacity 450ms var(--s-ease),
    transform 650ms var(--s-ease);
}
.h-tile .ht-logo.on {
  opacity: 1;
  transform: none;
}
.h-tile .logo-solana {
  width: 0.52em;
  height: auto;
}
/* Robinhood's feather in its neon, on the dark tile. */
.h-tile .logo-robinhood {
  width: 0.4em;
  height: auto;
  color: #ccff00;
}
@keyframes h-tile {
  50% {
    transform: rotate(4deg) translateY(-0.04em);
  }
}
.hero-sub {
  max-width: 580px;
  margin-top: 24px;
  font-size: 17.5px;
  line-height: 1.55;
  color: var(--s-muted);
  letter-spacing: -0.01em;
}
.hero-cta {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-top: 32px;
}
.hero-note {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 20px;
  margin-top: 20px;
  font-size: 12.5px;
  color: var(--s-quiet);
}
.hero-note > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
/* Phones get the short words, so the three fit on one line. */
.hn-short {
  display: none;
}
.hero-note .i {
  color: var(--s-dim);
}

/* The desk: the app's Now, tilted back, standing up as the page scrolls. */
.desk-stage {
  position: relative;
  width: min(1280px, 100% - 2 * var(--s-gut) - 20px);
  margin: 80px auto 0;
  perspective: 1800px;
}
/* Until the first answer (body.site-wait, site.js home) the hero's badge, the desk and the numbers keep the places
   they will take, unseen, so nothing under them moves when they land; an answer without one lets its place go. */
.site-wait .hero-badge[hidden] {
  display: inline-flex !important;
  visibility: hidden;
}
.site-wait .desk-stage[hidden],
.site-wait .proof[hidden] {
  display: block !important;
  visibility: hidden;
}
.site-wait .proof-card[hidden] {
  display: flex !important;
  visibility: hidden;
}
.desk-stage::after {
  content: '';
  position: absolute;
  z-index: 3;
  right: -40px;
  bottom: -16px;
  left: -40px;
  height: 30%;
  background: linear-gradient(to bottom, transparent, var(--s-bg) 88%);
  pointer-events: none;
}
.desk-glow {
  position: absolute;
  z-index: 0;
  top: -90px;
  left: 50%;
  width: 78%;
  height: 300px;
  background:
    radial-gradient(50% 45% at 50% 50%, rgb(59 123 246 / 20%), transparent 100%),
    radial-gradient(30% 30% at 50% 50%, rgb(255 255 255 / 9%), transparent 100%);
  filter: blur(10px);
  transform: translateX(-50%);
  pointer-events: none;
}
/* It leans back around its bottom edge, so no part of it is ever drawn larger
   than it is: Chrome paints a tilted layer once at its own size and then
   stretches it, and whatever gets stretched turns soft. */
.desk-tilt {
  --p: 0;
  position: relative;
  z-index: 1;
  transform-origin: 50% 100%;
  transform: translateY(calc((1 - var(--p)) * 10px)) rotateX(calc((1 - var(--p)) * 13deg));
}
/* Once it stands up it's flat, so its text is drawn sharp. */
.desk-tilt.flat {
  transform: none;
}
.desk-scale {
  width: max-content;
  transform: scale(var(--s, 1));
  transform-origin: 0 0;
}
/* The frame the desk lives in (desk.html): always the laptop size, scaled to fit. */
.desk {
  display: block;
  width: 1280px;
  height: 800px;
  border: 0;
  border-radius: 22px;
  background: var(--frame);
  box-shadow:
    0 0 0 1px rgb(255 255 255 / 10%),
    0 0 0 9px rgb(255 255 255 / 2.5%),
    0 0 0 10px rgb(255 255 255 / 6%),
    0 60px 140px -30px rgb(0 0 0 / 95%),
    0 0 140px -30px rgb(59 123 246 / 22%);
  pointer-events: none;
  user-select: none;
}
.ill-feed .feed-item.fresh {
  animation:
    s-in 600ms var(--s-ease) both,
    s-flash 2.4s var(--s-ease);
}
@keyframes s-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
}
@keyframes s-flash {
  from {
    background: rgb(149 133 255 / 10%);
  }
}

/* ───────── Proof ───────── */
.proof {
  position: relative;
  z-index: 1;
  padding: 120px 0 0;
}
.rays {
  position: absolute;
  top: -150px;
  right: 0;
  left: 0;
  height: 660px;
  -webkit-mask-image: radial-gradient(70% 100% at 50% 0%, #000 35%, transparent 88%);
  mask-image: radial-gradient(70% 100% at 50% 0%, #000 35%, transparent 88%);
  pointer-events: none;
}
.rays svg {
  width: 100%;
  height: 100%;
}
.rays line {
  stroke: rgb(255 255 255 / 7%);
  stroke-width: 1;
}
.proof-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  align-items: stretch;
}
.proof-card {
  --r: 0deg;
  --ty: 0px;
  display: flex;
  flex-direction: column;
  min-height: 290px;
  padding: 34px 34px 32px;
}
.proof-card.tilt-l {
  --r: -2.6deg;
  --ty: 16px;
}
.proof-card.tilt-r {
  --r: 2.6deg;
  --ty: 16px;
}
.proof-card[data-reveal] {
  transform: translateY(calc(var(--ty) + 40px)) rotate(calc(var(--r) * 2.4));
}
.proof-card[data-reveal].in {
  transform: translateY(var(--ty)) rotate(var(--r));
}
.proof-card[data-reveal].in:hover {
  transform: none;
  transition-delay: 0ms;
}
.pc-ic {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: rgb(255 255 255 / 4%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 7%);
  color: var(--s-muted);
}
.proof-card p {
  margin-top: 22px;
  font-size: 16px;
  line-height: 1.5;
  color: var(--s-muted);
}
.proof-card p b {
  font-weight: var(--weight-medium);
  color: var(--s-ink);
}
.proof-num {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0 12px;
  margin-top: auto;
  padding-top: 26px;
  font-size: 42px;
  line-height: 1.1;
  font-weight: var(--weight-medium);
  letter-spacing: -0.045em;
}
.proof-num b {
  font-weight: inherit;
  font-variant-numeric: tabular-nums;
}
.proof-num span {
  color: var(--s-dim);
}

/* ───────── Sections ───────── */
.s-section {
  position: relative;
  padding: 140px 0 0;
}
.s-head {
  max-width: 660px;
  margin: 0 auto 60px;
  text-align: center;
}
.s-eyebrow {
  font-size: 14px;
  font-weight: var(--weight-medium);
  color: var(--s-muted);
  text-align: center;
}
.s-head h2 {
  margin-top: 14px;
  font-size: clamp(30px, 3.7vw, 46px);
  line-height: 1.12;
  font-weight: var(--weight-medium);
  letter-spacing: -0.04em;
  color: rgb(236 236 238 / 94%);
}

/* ───────── The bento ───────── */
.bento {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 18px;
}
.bc {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 460px;
  overflow: hidden;
  padding: 22px 28px 30px;
}
.bc-7 {
  grid-column: span 7;
}
.bc-6 {
  grid-column: span 6;
}
.bc-5 {
  grid-column: span 5;
}
.bc-4 {
  grid-column: span 4;
}
/* A card we have no picture of our own for: its words alone, at its foot. */
.bc.bc-bare {
  min-height: 0;
}
.bc.bc-bare .bc-body {
  margin-top: auto;
  padding-top: 48px;
}
/* The time a picture of Now was taken (it is never the live list). */
.ill-when {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 2px;
  font-size: 12px;
  color: var(--ink-3);
}
.ill-when b {
  font-weight: var(--weight-medium);
  color: var(--ink-2);
}
/* The card under the pointer catches the light. */
.bc::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), rgb(255 255 255 / 4.5%), transparent 60%);
  opacity: 0;
  transition: opacity 300ms;
  pointer-events: none;
}
.bc:hover::after {
  opacity: 1;
}
.bc-label {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 13px;
  color: rgb(255 255 255 / 45%);
}
.bc-visual {
  position: relative;
  display: grid;
  flex: 1;
  place-items: center;
  min-height: 230px;
  margin: 16px 0 24px;
}
.bc-body {
  position: relative;
  z-index: 1;
}
.bc-icon {
  display: inline-grid;
  margin-bottom: 14px;
  color: var(--up-ink);
}
.bc-icon .i {
  width: 18px;
  height: 18px;
}
.bc h3 {
  font-size: 19px;
  line-height: 26px;
  font-weight: var(--weight-medium);
  letter-spacing: -0.02em;
}
.bc p {
  max-width: 460px;
  margin-top: 8px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--s-muted);
}

/* Now: the ranking */
.ill-now {
  display: grid;
  gap: 8px;
  width: 100%;
  max-width: 560px;
}
.ir {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) 88px 76px;
  align-items: center;
  gap: 12px;
  padding: 10px 14px 10px 12px;
  border-radius: 14px;
  background: rgb(255 255 255 / 2.5%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 5%);
  transition:
    background 400ms,
    box-shadow 400ms;
}
.ir.lead {
  background: rgb(255 255 255 / 4.5%);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 11%),
    0 10px 30px -18px rgb(0 0 0 / 80%);
}
.ir.moved {
  box-shadow: inset 0 0 0 1px rgb(18 183 106 / 45%);
}
.ir-name {
  display: grid;
  min-width: 0;
}
.ir-name b {
  font-size: 14px;
  font-weight: var(--weight-bold);
}
.ir-name small {
  overflow: hidden;
  font-size: 12px;
  color: var(--ink-3);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ir-name small.said {
  color: var(--violet-ink);
}
.ir .spark {
  width: 88px;
  height: 28px;
}
.ir-num {
  display: grid;
  justify-items: end;
}
.ir-num b {
  font-size: 13.5px;
  font-weight: var(--weight-bold);
}
.ir-num em {
  font-size: 12px;
  font-style: normal;
  font-weight: var(--weight-strong);
}

/* Drop alerts */
.ill-drop {
  position: relative;
  width: 100%;
  max-width: 440px;
  padding-top: 46px;
}
.idp-toast {
  position: absolute;
  top: 0;
  right: 14px;
  left: 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  height: 38px;
  padding: 0 14px 0 12px;
  border-radius: 12px;
  background: rgb(30 30 34 / 92%);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 9%),
    0 12px 30px -12px rgb(0 0 0 / 90%);
  font-size: 13px;
  animation: idp-toast 700ms var(--s-ease) both;
}
.idp-toast .i {
  color: var(--up-ink);
}
.idp-toast time {
  margin-left: auto;
  font-size: 11.5px;
  color: var(--ink-4);
}
@keyframes idp-toast {
  from {
    opacity: 0;
    transform: translateY(-12px) scale(0.97);
  }
}
.idp-card {
  padding: 14px 16px 16px;
  border-radius: 16px;
  background: linear-gradient(262deg, rgb(50 50 50 / 22%) 5%, rgb(43 43 43 / 22%) 55%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 8%);
  animation: s-in 700ms var(--s-ease) 120ms both;
}
.idp-top {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12.5px;
  color: var(--ink-3);
}
.idp-top .live-dot {
  width: 6px;
  height: 6px;
}
.idp-text {
  margin-top: 10px;
  font-size: 14px;
  line-height: 22px;
  color: var(--ink-3);
}
.idp-text > .coin {
  --s: 20px !important;
  display: inline-grid;
  margin-right: 6px;
  vertical-align: -5px;
}
.idp-text b {
  color: var(--ink);
  font-weight: var(--weight-strong);
}
.idp-stats {
  display: grid;
  grid-template-columns: repeat(3, auto);
  justify-content: start;
  gap: 22px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line-soft);
}
.idp-stats div {
  display: grid;
  gap: 3px;
}
.idp-stats span {
  font-size: 11.5px;
  color: var(--ink-3);
}
.idp-stats b {
  font-size: 17px;
  font-weight: var(--weight-strong);
  letter-spacing: -0.02em;
}

/* Calls: the podium */
.ill-calls {
  width: 100%;
  max-width: 400px;
}
.ill-pod {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 14px;
}
.ipd {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
}
.ipd-face {
  position: relative;
  margin-bottom: 4px;
}
.ipd-crown {
  position: absolute;
  top: -18px;
  left: 50%;
  color: var(--amber);
  transform: translateX(-50%);
}
.ipd-lvl {
  position: absolute;
  right: -4px;
  bottom: -2px;
  display: grid;
  place-items: center;
  width: 17px;
  height: 17px;
  border-radius: 6px;
  background: #3a2c12;
  box-shadow: 0 0 0 2px var(--s-card);
  font-size: 10px;
  font-weight: var(--weight-bold);
  color: var(--amber-ink);
}
.ipd b {
  font-size: 13px;
  font-weight: var(--weight-bold);
}
.ipd small {
  font-size: 11.5px;
  color: var(--ink-3);
}
.ipd-bar {
  position: relative;
  display: block;
  width: 104px;
  height: 0;
  margin-top: 8px;
  border-radius: 14px 14px 4px 4px;
  background: linear-gradient(180deg, rgb(255 255 255 / 8%), rgb(255 255 255 / 1.5%));
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 10%);
  transition: height 1100ms var(--s-ease);
}
.ipd-bar em {
  position: absolute;
  top: 10px;
  right: 0;
  left: 0;
  font-size: 12px;
  font-style: normal;
  font-weight: var(--weight-bold);
  color: var(--ink-3);
  text-align: center;
}
.p1 .ipd-bar {
  background: linear-gradient(180deg, rgb(243 182 78 / 24%), rgb(243 182 78 / 2%));
  box-shadow: inset 0 1px 0 rgb(255 226 170 / 25%);
}
.p1 .ipd-bar em {
  color: var(--amber-ink);
}
.on .p1 .ipd-bar {
  height: 110px;
}
.on .p2 .ipd-bar {
  height: 80px;
  transition-delay: 120ms;
}
.on .p3 .ipd-bar {
  height: 62px;
  transition-delay: 240ms;
}
.ill-rounds {
  margin-top: 14px;
}
.ird {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 10px;
  border-radius: 12px;
  background: rgb(255 255 255 / 2.5%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 5%);
  font-size: 12.5px;
  color: var(--ink-3);
}
.ird.fresh {
  animation: s-in 600ms var(--s-ease) both;
}
.ird > span:nth-child(2) {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}
.ird b {
  color: var(--ink);
  font-weight: var(--weight-strong);
}
.ird-x {
  margin-left: auto;
  padding: 2px 8px;
  border-radius: 7px;
  box-shadow: inset 0 0 0 1px var(--line);
  font-size: 12px;
  font-weight: var(--weight-bold);
  color: var(--ink-2);
}
.ird-x.up {
  box-shadow: inset 0 0 0 1px rgb(18 183 106 / 35%);
  color: var(--up-ink);
}

/* Runs: the whole run, played */
.ill-runs {
  --p: 0%;
  width: 100%;
  max-width: 600px;
}
.irn-top {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
}
.irn-top > b {
  font-size: 14px;
  font-weight: var(--weight-bold);
}
.irn-when {
  margin-left: 6px;
  color: var(--ink-3);
}
.irn-when b {
  color: var(--ink);
  font-weight: var(--weight-strong);
}
.irn-x {
  margin-left: auto;
  font-size: 18px;
  font-weight: var(--weight-bold);
  letter-spacing: -0.02em;
}
.irn-marks {
  position: relative;
  height: 26px;
  margin-top: 10px;
}
.irn-marks span {
  position: absolute;
  bottom: 6px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11.5px;
  font-weight: var(--weight-strong);
  white-space: nowrap;
  transform: translateX(-12px);
}
.irn-marks .seen {
  color: var(--accent-ink);
}
.irn-marks .top {
  color: var(--amber-ink);
  transform: translateX(-50%);
}
.irn-strip {
  position: relative;
  height: 120px;
  border-radius: 14px;
  background: rgb(255 255 255 / 2%);
  box-shadow: inset 0 0 0 1px var(--line-soft);
}
.irn-strip svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.irn-strip path {
  vector-effect: non-scaling-stroke;
  stroke-linejoin: round;
}
.irn-strip .dim {
  fill: none;
  stroke: rgb(255 255 255 / 20%);
  stroke-width: 1.5;
}
.irn-strip .lit {
  clip-path: inset(-6px calc(100% - var(--p)) -6px 0);
}
.irn-strip .line {
  fill: none;
  stroke: var(--up);
  stroke-width: 2;
}
.irn-seen {
  position: absolute;
  top: 0;
  bottom: 0;
  border-left: 1px dashed rgb(59 123 246 / 55%);
}
.irn-cur {
  position: absolute;
  top: -5px;
  bottom: -5px;
  left: var(--p);
  width: 2px;
  margin-left: -1px;
  border-radius: 1px;
  background: #f4f4f5;
  box-shadow: 0 0 14px rgb(255 255 255 / 45%);
}
.irn-ticks {
  position: relative;
  height: 8px;
  margin-top: 8px;
}
.irn-ticks > div {
  position: absolute;
  inset: 0;
}
.irn-ticks i {
  position: absolute;
  top: 0;
  width: 2px;
  height: 8px;
  margin-left: -1px;
  border-radius: 1px;
  background: rgb(255 255 255 / 12%);
}
.irn-ticks .lit {
  clip-path: inset(0 calc(100% - var(--p)) 0 0);
}
.irn-ticks .lit .said {
  background: var(--violet);
}
.irn-ticks .lit .buy {
  background: var(--up);
}
.irn-ticks .lit .sell {
  background: var(--down);
}

/* Wallets: the feed of their trades */
.ill-feed {
  display: grid;
  width: 100%;
  -webkit-mask-image: linear-gradient(to bottom, #000 70%, transparent);
  mask-image: linear-gradient(to bottom, #000 70%, transparent);
}

/* Stream: on air */
.ill-air {
  width: 100%;
  max-width: 360px;
  overflow: hidden;
  border-radius: 18px;
  background: var(--surface);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 7%),
    0 24px 50px -24px rgb(0 0 0 / 90%);
  animation: s-in 600ms var(--s-ease) both;
}
.ia-top {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 12px 12px 14px;
}
.ia-name {
  display: grid;
  min-width: 0;
}
.ia-name b {
  font-size: 14px;
  font-weight: var(--weight-bold);
}
.ia-name small {
  overflow: hidden;
  font-size: 11.5px;
  color: var(--ink-3);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ia-next {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
  height: 26px;
  margin-left: auto;
  padding: 0 10px 0 8px;
  overflow: hidden;
  border-radius: 8px;
  background: rgb(255 255 255 / 4%);
  box-shadow: inset 0 0 0 1px var(--line-soft);
  font-size: 11.5px;
  color: var(--ink-3);
}
.ia-next > :not(.ia-fill) {
  position: relative;
}
.ia-next .i {
  color: var(--accent-ink);
}
.ia-next b {
  color: var(--ink);
  font-weight: var(--weight-strong);
}
.ia-fill {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 0;
  background: linear-gradient(90deg, rgb(59 123 246 / 8%), rgb(59 123 246 / 30%));
  box-shadow: inset -2px 0 0 var(--accent-ink);
  animation: ia-fill 5.2s linear forwards;
}
@keyframes ia-fill {
  to {
    width: 100%;
  }
}
.ia-post {
  position: relative;
  padding: 26px 20px 28px;
  border-top: 1px solid var(--line-soft);
  text-align: center;
  background-image: radial-gradient(circle, rgb(255 255 255 / 14%) 1px, transparent 1.4px);
  background-size: 16px 16px;
  background-position: center;
}
.ia-post::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(70% 70% at 50% 50%, var(--surface) 35%, transparent 100%);
}
.ia-post > * {
  position: relative;
}
.ia-post p {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: var(--weight-strong);
  color: var(--ink-3);
}
.ia-post p .i {
  width: 12px;
  height: 12px;
  color: var(--ink);
}
.ia-post q {
  display: block;
  margin-top: 8px;
  font-size: 15px;
  line-height: 1.45;
  color: var(--ink);
  quotes: '“' '”';
}
.ia-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-top: 1px solid var(--line-soft);
  font-size: 12px;
  color: var(--ink-3);
}
.ia-foot b {
  color: var(--ink);
  font-weight: var(--weight-bold);
}
.ia-foot em {
  margin-left: auto;
  padding: 2px 7px;
  border-radius: 6px;
  background: var(--down-soft);
  font-size: 10.5px;
  font-style: normal;
  font-weight: var(--weight-bold);
  letter-spacing: 0.04em;
  color: var(--down-ink);
  text-transform: uppercase;
}

/* Brief: the latest editions */
.ill-brief {
  display: grid;
  gap: 4px;
  width: 100%;
  max-width: 400px;
}
.ibr {
  display: flex;
  gap: 10px;
  padding: 10px;
  border-radius: 12px;
  transition: background 400ms;
}
.ibr.on {
  background: rgb(255 255 255 / 4.5%);
}
.ibr.fresh {
  animation: s-in 600ms var(--s-ease) both;
}
.ibr-body {
  display: grid;
  flex: 1;
  min-width: 0;
}
.ibr-head {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12.5px;
}
.ibr-head b {
  font-weight: var(--weight-bold);
}
.ibr-head em {
  font-size: 12px;
  font-style: normal;
  font-weight: var(--weight-strong);
}
.ibr-new {
  font-size: 11px;
  font-weight: var(--weight-strong);
  color: var(--up-ink);
}
.ibr-head time {
  margin-left: auto;
  font-size: 11px;
  color: var(--ink-4);
}
.ibr-text {
  display: -webkit-box;
  margin-top: 2px;
  overflow: hidden;
  font-size: 12.5px;
  line-height: 17px;
  color: var(--ink-2);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

/* F&F: the paper book */
.ill-fnf {
  width: 100%;
  max-width: 540px;
}
.if-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.if-head span {
  font-size: 12.5px;
  color: var(--ink-3);
}
.if-head b {
  font-size: 26px;
  font-weight: var(--weight-bold);
  letter-spacing: -0.03em;
}
.if-head small {
  margin-left: 5px;
  font-size: 13px;
  font-weight: var(--weight-medium);
  letter-spacing: 0;
  color: var(--ink-3);
}
.ill-fnf > svg {
  width: 100%;
  height: 150px;
  margin-top: 8px;
  overflow: visible;
}
.ill-fnf .zero {
  stroke: rgb(255 255 255 / 12%);
  stroke-dasharray: 3 4;
  vector-effect: non-scaling-stroke;
}
.ill-fnf .line {
  fill: none;
  stroke: var(--up);
  stroke-width: 2;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  vector-effect: non-scaling-stroke;
  filter: drop-shadow(0 0 6px rgb(18 183 106 / 50%));
  transition: stroke-dashoffset 2200ms var(--s-ease);
}
.ill-fnf .area {
  opacity: 0;
  transition: opacity 1200ms ease 900ms;
}
.bc-visual.on .ill-fnf .line {
  stroke-dashoffset: 0;
}
.bc-visual.on .ill-fnf .area {
  opacity: 1;
}
.if-bots {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}
.if-bot {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 30px;
  padding: 0 11px 0 5px;
  border-radius: 999px;
  background: rgb(255 255 255 / 3.5%);
  box-shadow: inset 0 0 0 1px var(--line-soft);
  font-size: 12px;
}
.if-bot b {
  font-weight: var(--weight-bold);
}
.if-bot em {
  font-style: normal;
  font-weight: var(--weight-strong);
}
.if-bot > span:last-child {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--ink-3);
}
.if-bot > span:last-child .i {
  color: var(--up-ink);
}

/* Ask */
.ill-ask {
  width: 100%;
  max-width: 470px;
  /* a long question stays inside the card on a phone (its line ends in an ellipsis) */
  min-width: 0;
}
.ik-q {
  display: flex;
  align-items: center;
  gap: 10px;
  height: 50px;
  padding: 0 7px;
  border-radius: 999px;
  background: rgb(30 30 34 / 80%);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 9%),
    0 16px 40px -20px rgb(0 0 0 / 90%);
}
.ik-mark {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 32% 24%, #6f9dff 0%, var(--accent) 72%);
  box-shadow: 0 4px 14px -4px rgb(59 123 246 / 65%);
  color: #fff;
}
.ik-mark .tb-mark {
  width: 14px;
  height: 14px;
}
.ik-typed {
  min-width: 0;
  overflow: hidden;
  font-size: 14px;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.ik-caret {
  width: 2px;
  height: 18px;
  margin-left: -8px;
  border-radius: 1px;
  background: var(--accent-ink);
  animation: ik-caret 1s steps(2) infinite;
}
@keyframes ik-caret {
  50% {
    opacity: 0;
  }
}
.ik-send {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  margin-left: auto;
  flex-shrink: 0;
  border-radius: 50%;
  background: #f4f4f5;
  color: #0f0f11;
}
.ik-a {
  margin-top: 12px;
  padding: 14px 16px;
  border-radius: 18px;
  background: var(--surface);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 7%);
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 500ms var(--s-ease),
    transform 600ms var(--s-ease);
}
.ik-a.on {
  opacity: 1;
  transform: none;
}
/* While the next question is typed, the last answer waits, dimmed. */
.ik-a.wait {
  opacity: 0.35;
  transform: none;
}
.ik-coin {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.ik-coin b {
  font-weight: var(--weight-bold);
}
.ik-coin .num {
  margin-left: auto;
  font-weight: var(--weight-strong);
}
.ik-a p {
  margin-top: 8px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--ink-2);
}
.ik-a p b {
  color: var(--ink);
  font-weight: var(--weight-strong);
}
.ik-src {
  display: flex;
  gap: 6px;
  margin-top: 10px;
}

/* ───────── Sources ───────── */
.sources {
  padding: 110px 0 0;
}
.marquee {
  margin-top: 22px;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.marquee-track {
  display: flex;
  gap: 12px;
  width: max-content;
  animation: marquee 48s linear infinite;
}
.marquee:hover .marquee-track {
  animation-play-state: paused;
}
@keyframes marquee {
  to {
    transform: translateX(calc(-50% - 6px));
  }
}
.src {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  height: 44px;
  padding: 0 18px 0 14px;
  border-radius: 999px;
  background: rgb(255 255 255 / 2.5%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 7%);
  font-size: 14.5px;
  font-weight: var(--weight-medium);
  color: var(--ink-2);
  white-space: nowrap;
}
.src .i,
.src .logo-fomo {
  width: 17px;
  height: 17px;
}
.src[data-src='discord'] .i {
  color: #8e98ff;
}
.src[data-src='telegram'] .i {
  color: #45b2e8;
}
.src[data-src='twitch'] .i {
  color: #a970ff;
}
.src[data-src='stream'] .i {
  color: #53fc18;
}
.src[data-src='coins'] .i,
.src[data-src='flash'] .i {
  color: var(--amber-ink);
}
.src[data-src='wallet'] .i {
  color: var(--up-ink);
}
.src i[data-logo] {
  display: inline-grid;
}

/* ───────── How it works ───────── */
.steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}
.step {
  padding: 30px 30px 32px;
}
.step-n {
  position: absolute;
  top: 28px;
  right: 30px;
  font-size: 13px;
  font-weight: var(--weight-strong);
  color: var(--s-quiet);
  font-variant-numeric: tabular-nums;
}
.step-ic {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 12px;
  background: linear-gradient(180deg, #232327, #19191c);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 10%),
    0 0 0 1px rgb(255 255 255 / 6%);
  color: var(--s-ink);
}
.step h3 {
  margin-top: 22px;
  font-size: 19px;
  line-height: 26px;
  font-weight: var(--weight-medium);
  letter-spacing: -0.02em;
}
.step p {
  margin-top: 8px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--s-muted);
}
.trust {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 18px;
}
.trust-item {
  display: flex;
  gap: 14px;
  padding: 20px 22px;
  border-radius: 20px;
  box-shadow: inset 0 0 0 1px var(--s-line);
}
.trust-ic {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  flex-shrink: 0;
  border-radius: 10px;
  background: rgb(18 183 106 / 8%);
  box-shadow: inset 0 0 0 1px rgb(18 183 106 / 18%);
  color: var(--up-ink);
}
.trust-item b {
  font-size: 15px;
  font-weight: var(--weight-medium);
}
.trust-item p {
  margin-top: 3px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--s-muted);
}

/* ───────── Pricing ───────── */
.price-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.giant {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.giant[hidden] {
  display: none;
}
/* Only the number is giant: the caption's own words ("Today's") stay caption-sized. */
.giant > span {
  display: block;
  font-size: clamp(130px, 21vw, 300px);
  line-height: 0.86;
  font-weight: var(--weight-bold);
  letter-spacing: -0.065em;
  background: linear-gradient(180deg, rgb(255 255 255 / 88%) 15%, rgb(255 255 255 / 4%) 88%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-variant-numeric: tabular-nums;
}
/* What the number is, above it: the price card overlaps the number's foot and would cover a caption under it. The
   number's glyph box reaches above its tight line box, so the caption sits on top of it, with room to breathe. */
.giant small {
  position: relative;
  z-index: 1;
  display: block;
  order: -1;
  margin-bottom: 18px;
  font-size: 14px;
  color: var(--s-muted);
}
/* The card: wide and low. What it costs and the way in on the left,
   everything in it on the right, today's biggest run glowing in the corner. */
.price-card {
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.45fr);
  width: min(1000px, 100%);
  margin-top: -64px;
  overflow: hidden;
  background:
    radial-gradient(55% 90% at 100% 100%, rgb(18 183 106 / 10%), transparent 70%),
    radial-gradient(110% 70% at 50% 115%, rgb(87 87 89 / 20%), transparent 62%),
    rgb(17 17 19 / 92%);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
}
.pcd-main,
.pcd-side {
  position: relative;
  z-index: 1;
  padding: 30px 34px 28px;
}
.pcd-main {
  display: flex;
  flex-direction: column;
}
.pcd-side {
  border-left: 1px solid var(--s-line);
}
.pcd-top,
.pcd-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 28px;
}
.pcd-name,
.pcd-head > span:first-child {
  font-size: 14px;
  font-weight: var(--weight-medium);
  color: var(--s-muted);
}
.pcd-price {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-top: 14px;
}
.pcd-price b {
  font-size: 56px;
  line-height: 1;
  font-weight: var(--weight-medium);
  letter-spacing: -0.05em;
}
.pcd-price span {
  font-size: 15px;
  color: var(--s-muted);
}
.pcd-pitch {
  margin-top: 14px;
  font-size: 15.5px;
  line-height: 1.5;
  color: var(--s-ink);
}
.pcd-go {
  width: 100%;
  margin-top: auto;
}
.pcd-pitch + .pcd-go {
  margin-top: 26px;
}
.pcd-note {
  margin-top: 12px;
  font-size: 12.5px;
  color: var(--s-quiet);
  text-align: center;
}
/* Whop's own wordmark: membership and billing run there. */
.pcd-via {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 28px;
  padding: 0 10px;
  border-radius: 8px;
  background: rgb(255 255 255 / 3.5%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 7%);
  font-size: 12px;
  color: var(--ink-3);
}
.pcd-via i {
  display: inline-flex;
  color: #f4f4f5;
}
.pcd-via .logo-whop-word {
  width: 60px;
  height: 13px;
}
.pcd-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-rows: repeat(5, auto);
  grid-auto-flow: column;
  gap: 13px 24px;
  margin-top: 24px;
}
.pcd-list li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--ink-2);
}
.pcd-list .i {
  width: 15px;
  height: 15px;
  color: var(--up-ink);
}
.pcd-art {
  position: absolute;
  z-index: 0;
  right: 0;
  bottom: 0;
  width: 58%;
  height: 72px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 45%);
  mask-image: linear-gradient(90deg, transparent, #000 45%);
  pointer-events: none;
}
.pcd-art svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}
.pcd-art .line {
  fill: none;
  stroke: var(--up);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
  filter: drop-shadow(0 0 8px rgb(18 183 106 / 60%));
}

/* ───────── FAQ ───────── */
.faq-wrap {
  max-width: calc(780px + 2 * var(--s-gut));
}
.faq-list {
  display: grid;
  gap: 10px;
}
.faq-item {
  border-radius: 18px;
  background: rgb(255 255 255 / 1.5%);
  box-shadow: inset 0 0 0 1px var(--s-line);
  transition:
    background 200ms,
    box-shadow 200ms;
}
.faq-item[open] {
  background: rgb(255 255 255 / 3%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 9%);
}
.faq-item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 18px 18px 22px;
  font-size: 16px;
  font-weight: var(--weight-medium);
  letter-spacing: -0.015em;
  cursor: pointer;
  list-style: none;
}
.faq-item summary::-webkit-details-marker {
  display: none;
}
.faq-ic {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  border-radius: 50%;
  background: rgb(255 255 255 / 4%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 7%);
  color: var(--s-muted);
  transition: transform 300ms var(--s-ease);
}
.faq-item[open] .faq-ic {
  transform: rotate(45deg);
  color: var(--s-ink);
}
.faq-a {
  overflow: hidden;
}
.faq-a p {
  max-width: 660px;
  padding: 0 22px 20px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--s-muted);
}

/* ───────── Last call ───────── */
.final {
  position: relative;
  padding: 170px 0 150px;
  text-align: center;
}
.final-light {
  position: absolute;
  inset: 0;
  background: radial-gradient(45% 55% at 50% 100%, rgb(255 255 255 / 5%), transparent 70%);
  pointer-events: none;
}
/* A run drawn in thin bars behind the words: quiet, then up and holding,
   standing on the footer's line. Light passes through them, left to right. */
.final-bars {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  width: min(var(--s-max), 100% - 2 * var(--s-gut));
  margin: 0 auto;
  -webkit-mask-image: radial-gradient(75% 95% at 50% 100%, #000 25%, transparent 85%);
  mask-image: radial-gradient(75% 95% at 50% 100%, #000 25%, transparent 85%);
  pointer-events: none;
}
.final-bars[data-reveal] {
  filter: none;
  transform: none;
}
.final-bars i {
  position: relative;
  width: 4px;
  height: var(--h);
  border-radius: 3px 3px 0 0;
  background: linear-gradient(to top, rgb(255 255 255 / 10%), rgb(255 255 255 / 1.5%));
  transform: scaleY(0);
  transform-origin: 50% 100%;
  transition: transform 1400ms var(--s-ease) calc(var(--i) * 14ms);
}
.final-bars.in i {
  transform: none;
}
.final-bars i::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(to top, rgb(18 183 106 / 42%), rgb(18 183 106 / 0%));
  opacity: 0;
  animation: bar-lit 6.5s ease-in-out calc(1.6s + var(--i) * 45ms) infinite;
}
@keyframes bar-lit {
  0%,
  26%,
  100% {
    opacity: 0;
  }
  9% {
    opacity: 1;
  }
}
.final-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.final h2 {
  font-size: clamp(34px, 4.6vw, 56px);
  line-height: 1.06;
  font-weight: var(--weight-medium);
  letter-spacing: -0.045em;
}
.final p {
  max-width: 480px;
  margin-top: 16px;
  font-size: 17px;
  line-height: 1.55;
  color: var(--s-muted);
}

/* ───────── Footer ───────── */
.site-foot {
  padding: 60px 0 44px;
  border-top: 1px solid var(--s-line);
}
.foot-inner {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 40px;
}
.foot-brand a {
  display: block;
  width: 150px;
  color: var(--s-ink);
}
.foot-brand p {
  max-width: 280px;
  margin-top: 14px;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--s-muted);
}
.foot-cols {
  display: flex;
  gap: 72px;
}
.foot-cols h3 {
  margin-bottom: 12px;
  font-size: 13px;
  font-weight: var(--weight-bold);
  color: var(--ink-2);
}
.foot-cols a {
  display: block;
  font-size: 14px;
  line-height: 2.1;
  color: var(--s-muted);
  transition: color 150ms;
}
.foot-cols a:hover {
  color: var(--s-ink);
}
.foot-base {
  position: relative;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px 24px;
  margin-top: 44px;
  padding-top: 26px;
  font-size: 12.5px;
  color: var(--s-quiet);
}

.foot-base::before {
  content: '';
  position: absolute;
  top: 0;
  right: var(--s-gut);
  left: var(--s-gut);
  border-top: 1px solid var(--s-line);
}

/* ───────── Sign in (login.html) ───────── */
.auth {
  position: relative;
  display: grid;
  align-items: center;
  min-height: 100svh;
  padding: 116px 0 72px;
}
.auth-light {
  position: absolute;
  inset: 0 0 auto;
  height: 760px;
  background:
    radial-gradient(40% 50% at 28% 20%, rgb(255 255 255 / 6%), transparent 70%),
    radial-gradient(45% 55% at 78% 45%, rgb(59 123 246 / 9%), transparent 72%);
  pointer-events: none;
}
.auth-grid {
  display: grid;
  grid-template-columns: minmax(0, 440px) minmax(0, 1fr);
  align-items: center;
  gap: 72px;
}
.auth-card {
  position: relative;
  padding: 34px 34px 26px;
  border-radius: 28px;
  background:
    radial-gradient(110% 60% at 50% 115%, rgb(87 87 89 / 18%), transparent 62%),
    var(--s-card);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 6%),
    0 40px 80px -40px rgb(0 0 0 / 90%);
}
.auth-card::before {
  content: '';
  position: absolute;
  top: 0;
  right: 14%;
  left: 14%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgb(255 255 255 / 26%), transparent);
}
.auth-tabs {
  --seg-h: 32px;
  display: flex;
}
.auth-tabs .tb-seg {
  flex: 1;
  font-size: 13.5px;
}
.auth-pane h1 {
  margin-top: 26px;
  font-size: 30px;
  line-height: 36px;
  font-weight: var(--weight-medium);
  letter-spacing: -0.035em;
}
.auth-sub {
  margin-top: 8px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--s-muted);
}
.auth-go {
  width: 100%;
  margin-top: 24px;
}
/* The door's own answers (gate.html): Sign in and Join side by side. */
.gate-acts {
  display: flex;
  gap: 10px;
  margin-top: 24px;
}
.gate-acts .s-btn {
  flex: 1;
}
.auth-rule {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 26px 0 18px;
  font-size: 12.5px;
  color: var(--s-quiet);
  white-space: nowrap;
}
.auth-rule::before,
.auth-rule::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--s-line);
}
.auth-form label {
  display: block;
  margin-bottom: 9px;
  font-size: 13.5px;
  font-weight: var(--weight-medium);
  color: var(--ink-2);
}
.auth-field {
  height: 48px;
  padding: 0 6px 0 14px;
  border-radius: 13px;
  gap: 10px;
}
.auth-field input {
  font-size: 15px;
  letter-spacing: 0.01em;
}
.auth-field.bad {
  box-shadow:
    inset 0 0 0 1px rgb(255 100 133 / 70%),
    0 0 0 3px rgb(255 100 133 / 14%);
}
.auth-field.bad > .i {
  color: var(--down-ink);
}
.auth-unlock {
  gap: 6px;
  height: 36px;
  padding: 0 12px 0 14px;
  border-radius: 10px;
}
.auth-unlock.busy {
  pointer-events: none;
}
.auth-unlock.busy > * {
  opacity: 0;
}
.auth-unlock.busy {
  position: relative;
}
.auth-unlock.busy::after {
  content: '';
  position: absolute;
  inset: 0;
  width: 16px;
  height: 16px;
  margin: auto;
  border: 2px solid rgb(12 12 14 / 22%);
  border-top-color: #0c0c0e;
  border-radius: 50%;
  animation: spin 700ms linear infinite;
}
@keyframes spin {
  to {
    transform: rotate(1turn);
  }
}
.auth-err {
  display: flex;
  gap: 8px;
  margin-top: 11px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--down-ink);
  animation: s-in 400ms var(--s-ease) both;
}
.auth-err[hidden] {
  display: none;
}
.auth-err .i {
  margin-top: 2px;
}
.auth-err a {
  color: var(--s-ink);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.auth-hint {
  margin-top: 10px;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--s-quiet);
}
.auth-err:not([hidden]) + .auth-hint {
  display: none;
}
.auth-checkout {
  margin-top: 22px;
  padding: 16px 16px 14px;
  border-radius: 18px;
  background: rgb(255 255 255 / 2.5%);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 7%);
}
.ac-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.ac-name {
  display: grid;
}
.ac-price {
  display: flex;
  align-items: baseline;
  gap: 3px;
}
.ac-price b {
  font-size: 26px;
  font-weight: var(--weight-medium);
  letter-spacing: -0.04em;
}
.ac-price small {
  font-size: 13px;
  color: var(--ink-3);
}
.ac-list {
  display: grid;
  gap: 9px;
  margin: 16px 0 18px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}
.ac-list li {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 13.5px;
  color: var(--ink-2);
}
.ac-list .i {
  color: var(--up-ink);
}
.ac-go {
  width: 100%;
}
.ac-note {
  display: grid;
  justify-items: center;
  gap: 3px;
  margin-top: 12px;
  font-size: 12px;
  color: var(--s-quiet);
}
.ac-by {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ac-note i {
  display: inline-flex;
  color: #d4d4d8;
}
.ac-note .logo-whop-word {
  width: 51px;
  height: 11px;
}
/* Whop's mark on the sign-in button. */
.whop-mark {
  display: inline-flex;
}
.whop-mark .logo-whop {
  width: 24px;
  height: 12px;
}
.auth-switch {
  margin-top: 16px;
  font-size: 13.5px;
  color: var(--s-muted);
  text-align: center;
}
.auth-switch button,
.auth-legal a {
  color: var(--s-ink);
  text-decoration: underline;
  text-decoration-color: rgb(255 255 255 / 25%);
  text-underline-offset: 3px;
  transition: text-decoration-color 150ms;
}
.auth-switch button:hover,
.auth-legal a:hover {
  text-decoration-color: currentColor;
}
/* Four links in one sentence: each gets a little room so the finger-sized squares of neighbours never overlap. */
.auth-legal a {
  padding-inline: 3px;
}
.auth-legal {
  margin-top: 26px;
  padding-top: 18px;
  border-top: 1px solid var(--s-line);
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--s-quiet);
}
/* Beside the card: the desk, live, leaning in. */
.as-panel {
  position: relative;
  padding: 22px 24px 24px;
  border-radius: 28px;
  background:
    radial-gradient(90% 60% at 50% 110%, rgb(59 123 246 / 10%), transparent 70%),
    var(--s-card);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 6%),
    0 0 0 9px rgb(255 255 255 / 2%),
    0 0 0 10px rgb(255 255 255 / 5%),
    0 50px 100px -40px rgb(0 0 0 / 95%);
}
.as-top {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 13px;
}
.as-top b {
  font-weight: var(--weight-bold);
}
.as-top > span:last-child {
  margin-left: auto;
  color: var(--ink-3);
}
.as-now {
  margin-top: 18px;
}
.as-now .ill-now {
  max-width: none;
}
.as-drop {
  position: absolute;
  top: -22px;
  right: -26px;
  width: max-content;
}
.as-drop .idp-toast time {
  margin-left: 14px;
}
.as-drop .idp-toast {
  position: static;
  height: 44px;
  font-size: 13px;
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 10%),
    0 20px 40px -14px rgb(0 0 0 / 95%);
}
.as-drop .idp-toast > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  white-space: nowrap;
}
.as-proof {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--line-soft);
}
.as-proof div {
  display: grid;
  gap: 4px;
}
.as-proof b {
  font-size: 28px;
  line-height: 1.1;
  font-weight: var(--weight-medium);
  letter-spacing: -0.04em;
}
.as-proof span {
  font-size: 12.5px;
  color: var(--ink-3);
}
.site-foot-slim {
  padding: 22px 0 28px;
}
.site-foot-slim .foot-base {
  align-items: center;
  margin-top: 0;
  padding-top: 0;
}
.site-foot-slim .foot-base::before {
  display: none;
}
.foot-slim {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 20px;
}
.foot-slim a {
  color: var(--s-muted);
  transition: color 150ms;
}
.foot-slim a:hover {
  color: var(--s-ink);
}
.site .toasts {
  position: fixed;
  bottom: 28px;
}

/* ───────── Terms and privacy (terms.html, privacy.html) ───────── */
.lg-hero {
  position: relative;
  padding: 150px 0 0;
  text-align: center;
}
.lg-hero .hero-light {
  height: 620px;
}
.lg-hero .site-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.lg-switch {
  --seg-h: 30px;
}
.lg-switch .tb-seg {
  padding: 0 14px;
  font-size: 13.5px;
}
.lg-hero h1 {
  margin-top: 28px;
  font-size: clamp(38px, 5vw, 58px);
  line-height: 1.05;
  font-weight: var(--weight-medium);
  letter-spacing: -0.045em;
}
.lg-hero .lg-lede {
  max-width: 560px;
  margin-top: 16px;
  font-size: 17px;
  line-height: 1.55;
  color: var(--s-muted);
}
.lg-short {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 56px;
  text-align: left;
}
.lg-short .trust-item {
  background: rgb(255 255 255 / 1.5%);
}
.lg-body {
  display: grid;
  grid-template-columns: 220px minmax(0, 720px);
  justify-content: center;
  gap: 72px;
  padding-top: 90px;
  padding-bottom: 120px;
}
.lg-toc {
  position: sticky;
  top: 100px;
  align-self: start;
  display: grid;
  gap: 2px;
  max-height: calc(100vh - 124px);
  overflow-y: auto;
}
.lg-toc p {
  margin-bottom: 10px;
  font-size: 12.5px;
  font-weight: var(--weight-bold);
  color: var(--ink-3);
}
.lg-toc a {
  display: flex;
  gap: 10px;
  padding: 7px 10px;
  border-radius: 9px;
  font-size: 13.5px;
  color: var(--s-muted);
  transition:
    color 150ms,
    background 150ms;
}
.lg-toc a span {
  width: 18px;
  color: var(--s-quiet);
  font-variant-numeric: tabular-nums;
}
.lg-toc a:hover {
  color: var(--s-ink);
}
.lg-toc a.on {
  background: rgb(255 255 255 / 4%);
  color: var(--s-ink);
}
.lg-toc a.on span {
  color: var(--up-ink);
}
.lg-text section {
  padding: 0 0 36px;
  scroll-margin-top: 96px;
}
.lg-text section + section {
  padding-top: 36px;
  border-top: 1px solid var(--s-line);
}
.lg-text h2 {
  display: flex;
  align-items: baseline;
  gap: 14px;
  font-size: 21px;
  line-height: 28px;
  font-weight: var(--weight-medium);
  letter-spacing: -0.02em;
}
.lg-text h2 span {
  font-size: 13px;
  font-weight: var(--weight-strong);
  color: var(--s-quiet);
  font-variant-numeric: tabular-nums;
}
.lg-text p,
.lg-text li {
  font-size: 15.5px;
  line-height: 1.7;
  color: var(--s-muted);
}
.lg-text p {
  margin-top: 12px;
}
.lg-text ul {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}
.lg-text li {
  position: relative;
  padding-left: 22px;
}
.lg-text li::before {
  content: '';
  position: absolute;
  top: 0.78em;
  left: 4px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--s-dim);
}
.lg-text b {
  font-weight: var(--weight-medium);
  color: var(--s-ink);
}
.lg-text a {
  color: var(--s-ink);
  text-decoration: underline;
  text-decoration-color: rgb(255 255 255 / 25%);
  text-underline-offset: 3px;
}
.lg-contact {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 8px;
  padding: 22px 24px;
  border-radius: 20px;
  background: rgb(255 255 255 / 2%);
  box-shadow: inset 0 0 0 1px var(--s-line);
}
.lg-contact b {
  display: block;
  font-size: 15px;
  font-weight: var(--weight-medium);
}
.lg-contact span {
  font-size: 13.5px;
  color: var(--s-muted);
}

/* ───────── Less motion ───────── */
@media (prefers-reduced-motion: reduce) {
  .h-tile,
  .marquee-track,
  .ia-fill,
  .ik-caret,
  .final-bars i::after {
    animation: none;
  }
  .final-bars i {
    transform: none;
    transition: none;
  }
  [data-reveal] {
    opacity: 1;
    filter: none;
    transform: none;
    transition: none;
  }
}

/* ───────── Smaller windows ───────── */
@media (max-width: 1100px) {
  .nav-links {
    display: none;
  }
  .bc-7,
  .bc-6,
  .bc-5 {
    grid-column: span 6;
  }
  .bc-4 {
    grid-column: span 6;
  }
  .bc-4:last-of-type {
    grid-column: span 12;
  }
  .pcd-list {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    grid-auto-flow: row;
  }
  .auth-grid {
    grid-template-columns: minmax(0, 460px);
    justify-content: center;
  }
  .auth-side {
    display: none;
  }
  .lg-body {
    grid-template-columns: minmax(0, 720px);
    padding-top: 64px;
  }
  .lg-toc {
    display: none;
  }
  .proof-grid,
  .steps,
  .trust {
    gap: 14px;
  }
  .proof-card {
    padding: 28px;
  }
  .proof-num {
    font-size: 36px;
  }
}
@media (max-width: 760px) {
  .site {
    --s-gut: 16px;
  }
  .nav-inner {
    height: 60px;
  }
  .nav-brand {
    width: 118px;
  }
  .nav-acts .s-btn:not(.nav-back) {
    display: none;
  }
  /* The door is one screen tall when its content is: the footer sits right under it, not a whole screen below. */
  .site-auth {
    display: flex;
    flex-direction: column;
    min-height: 100svh;
  }
  .auth {
    align-items: start;
    flex: 1;
    min-height: 0;
    padding: 92px 0 32px;
  }
  .auth-card {
    padding: 26px 20px 20px;
    border-radius: 24px;
  }
  .auth-pane h1 {
    font-size: 26px;
    line-height: 32px;
  }
  .lg-hero {
    padding-top: 112px;
  }
  .lg-short {
    grid-template-columns: minmax(0, 1fr);
    margin-top: 40px;
  }
  .lg-body {
    padding-top: 48px;
    padding-bottom: 80px;
  }
  .lg-text h2 {
    font-size: 19px;
  }
  .nav-menu {
    display: grid;
  }
  /* On a phone the hero reads from the left. */
  .hero {
    padding-top: 108px;
    text-align: left;
  }
  .hero-inner {
    align-items: flex-start;
  }
  .hero-badge {
    font-size: 12px;
  }
  .hero-title {
    --h1: clamp(36px, 10.4vw, 46px);
  }
  .hero-sub {
    margin-top: 18px;
    font-size: 16px;
  }
  .hero-cta {
    width: 100%;
  }
  .hero-cta .s-btn {
    flex: 1 1 100%;
  }
  .hero-note {
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: 14px;
    font-size: 12px;
    white-space: nowrap;
  }
  .hn-long {
    display: none;
  }
  .hn-short {
    display: inline;
  }
  /* The desk stays the web app on a phone, only smaller. */
  .desk-stage {
    margin-top: 56px;
  }
  .desk-stage::after {
    right: -8px;
    left: -8px;
  }
  .desk-glow {
    top: -60px;
    width: 100%;
    height: 220px;
  }
  .desk-tilt {
    transform: translateY(calc((1 - var(--p)) * 8px)) rotateX(calc((1 - var(--p)) * 10deg));
  }
  .desk-tilt.flat {
    transform: none;
  }
  .proof {
    padding-top: 80px;
  }
  .proof-grid,
  .steps,
  .trust {
    grid-template-columns: minmax(0, 1fr);
  }
  .proof-card.tilt-l,
  .proof-card.tilt-r {
    --r: 0deg;
    --ty: 0px;
  }
  .proof-card {
    min-height: 0;
  }
  .s-section {
    padding-top: 100px;
  }
  .s-head {
    margin-bottom: 40px;
  }
  .bento {
    gap: 14px;
  }
  .bc-7,
  .bc-6,
  .bc-5,
  .bc-4,
  .bc-4:last-of-type {
    grid-column: 1 / -1;
  }
  .bc {
    min-height: 0;
    padding: 20px 20px 24px;
    border-radius: 24px;
  }
  .bc-visual {
    min-height: 0;
    margin: 18px 0 22px;
  }
  .ir {
    grid-template-columns: 30px minmax(0, 1fr) 70px;
  }
  .ir .spark {
    display: none;
  }
  .idp-stats {
    gap: 14px;
  }
  .ipd-bar {
    width: 84px;
  }
  .sources {
    padding-top: 80px;
  }
  .price-card {
    grid-template-columns: minmax(0, 1fr);
    margin-top: -40px;
  }
  .pcd-main,
  .pcd-side {
    padding: 24px 22px;
  }
  .pcd-side {
    padding-bottom: 92px;
    border-top: 1px solid var(--s-line);
    border-left: 0;
  }
  .pcd-art {
    width: 100%;
  }
  .foot-cols {
    gap: 40px;
  }
  .final {
    padding: 120px 0 110px;
  }
}

/* The smallest phones: the podium's steps and the hero's note close up. */
@media (max-width: 380px) {
  .hero-note {
    gap: 10px;
  }
  .ill-pod {
    gap: 8px;
  }
  .ipd-bar {
    width: 72px;
  }
  .ird {
    font-size: 12px;
  }
}
