*{margin:0}
html,body{background:#0F0F0F}

@font-face {
    font-family: 'Barlow Condensed';
    font-style: normal;
    font-weight: 700;
    font-display: block;
    src: url(/fonts/barlow-condensed-700.woff2) format('woff2');
  }
  @font-face {
    font-family: 'Barlow Condensed';
    font-style: normal;
    font-weight: 900;
    font-display: block;
    src: url(/fonts/barlow-condensed-900.woff2) format('woff2');
  }
  @font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 400;
    font-display: block;
    src: url(/fonts/dm-sans-400.woff2) format('woff2');
  }

  /* Lift's own tokens: ground, card and silhouette greys straight from the app,
     accent = the brand yellow used by the GET STARTED button and worked muscles. */
  :root {
    --ground: #0F0F0F;
    --card: #171717;
    --card-2: #1E1E1E;
    --line: #2A2A2A;
    --body-grey: #333333;
    --muted: #6B6B6B;
    --text: #F0F0F0;
    --accent: #E8FF47;

    /* Data ramp — semantic, never used as the accent. */
    --ramp-0: #4DA6FF;
    --ramp-1: #7FD39B;
    --ramp-2: #E8FF47;
    --ramp-3: #F0A24B;
    --ramp-4: #FF5252;

    --display: 'Barlow Condensed', 'Arial Narrow', sans-serif;
    --body: 'DM Sans', system-ui, sans-serif;

    --gutter: clamp(20px, 5vw, 64px);
    --measure: 62ch;
  }

  /* Deliberately single-theme: this is a mockup of a product that only exists
     in the dark. Tokens are fixed so the viewer's light mode can't half-invert it. */

  * { box-sizing: border-box; }

  .page {
    background: var(--ground);
    color: var(--text);
    font-family: var(--body);
    font-weight: 400;
    line-height: 1.6;
    margin: 0 auto;
    max-width: 1180px;
    padding: 0 var(--gutter) 96px;
    overflow-x: hidden;
  }

  .page :where(h1, h2, h3) {
    font-family: var(--display);
    font-weight: 900;
    text-transform: uppercase;
    line-height: 0.92;
    letter-spacing: -0.005em;
    text-wrap: balance;
    margin: 0;
  }

  .eyebrow {
    font-family: var(--display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-size: 12px;
    color: var(--muted);
    margin: 0;
  }

  .lede { color: #B8B8B8; max-width: var(--measure); font-size: 17px; margin: 0; }
  .page p { margin: 0; }

  /* ── Masthead ─────────────────────────────────────────────── */
  .masthead {
    display: flex; align-items: baseline; gap: 12px;
    padding: 40px 0 0;
  }
  .wordmark {
    font-family: var(--display); font-weight: 900; text-transform: uppercase;
    font-size: 36px; letter-spacing: 0.01em; line-height: 1;
  }
  .wordmark .dot { color: var(--accent); }
  .masthead .host { font-size: 12px; color: var(--muted); letter-spacing: 0.04em; }

  /* ── Hero ─────────────────────────────────────────────────── */
  .hero { padding: clamp(56px, 11vw, 128px) 0 clamp(40px, 7vw, 80px); display: grid; gap: 28px; }
  .hero h1 { font-size: clamp(44px, 8.6vw, 98px); }
  .hero h1 em { font-style: normal; color: var(--accent); }
  .hero .lede { font-size: clamp(17px, 2.1vw, 21px); }

  /* ── Section rhythm ───────────────────────────────────────── */
  .section { padding: clamp(52px, 8vw, 104px) 0; border-top: 1px solid var(--line); display: grid; gap: 32px; }
  .section > header { display: grid; gap: 14px; }
  .section h2 { font-size: clamp(34px, 6vw, 62px); }

  /* ── Frames: the phone captures ───────────────────────────── */
  .frames { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: clamp(20px, 3vw, 40px); }
  .frame { display: grid; gap: 14px; align-content: start; }
  .shot {
    aspect-ratio: 480 / 730;
    background:
      repeating-linear-gradient(135deg, #141414 0 12px, #171717 12px 24px);
    border: 1px solid var(--line);
    border-radius: 14px;
    display: grid; place-content: center; gap: 8px;
    text-align: center; padding: 24px;
  }
  .shot .slot {
    font-family: var(--display); font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.14em; font-size: 12px; color: var(--muted);
  }
  .shot .what { font-size: 13px; color: #8A8A8A; max-width: 24ch; line-height: 1.45; }
  .frame figcaption { font-size: 14px; color: #A8A8A8; line-height: 1.5; }
  .frame figcaption b { color: var(--text); font-weight: 500; }
  .frames.one { grid-template-columns: minmax(0, 300px); }

  /* Numbered because the funnel genuinely is a sequence — each step narrows
     what the next one can offer. */
  .steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(248px, 1fr)); gap: clamp(20px, 3vw, 36px); }
  .steps li { display: grid; gap: 10px; align-content: start; }
  .steps .step-n { font-family: var(--display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.16em; font-size: 11px; color: var(--accent); }
  .steps h3 { font-size: 21px; letter-spacing: 0.02em; }
  .steps p { font-size: 15px; color: #A3A3A3; }
  .steps .shot { margin-top: 8px; }

  /* ── The live legend: the app's real ramp ─────────────────── */
  .legend { display: grid; gap: 10px; padding: 22px; background: var(--card); border: 1px solid var(--line); border-radius: 14px; }
  .ramp { display: flex; gap: 4px; }
  .ramp span { height: 10px; flex: 1; border-radius: 3px; }
  .legend .ends { display: flex; justify-content: space-between; font-family: var(--display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; font-size: 11px; color: var(--muted); }
  .legend .note { font-size: 13px; color: #9A9A9A; }

  /* ── Stat strip ───────────────────────────────────────────── */
  .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); gap: 10px; }
  .stat { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; display: grid; gap: 2px; }
  .stat b {
    font-family: var(--display); font-weight: 900; font-size: 30px; line-height: 1;
    font-variant-numeric: tabular-nums; color: var(--text);
  }
  .stat .hr { color: var(--ramp-4); }
  .stat .go { color: var(--accent); }
  .stat span { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; }

  /* ── Rotation row ─────────────────────────────────────────── */
  .rotation { display: flex; flex-wrap: wrap; gap: 8px; }
  .day {
    font-family: var(--display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em;
    font-size: 15px; padding: 10px 16px; border-radius: 10px;
    background: var(--card); border: 1px solid var(--line); color: #9E9E9E;
  }
  .day.next { color: var(--text); border-color: var(--accent); }
  .day.next::after {
    content: 'Next'; margin-left: 10px; font-size: 10px; letter-spacing: 0.12em;
    background: var(--accent); color: #111; padding: 2px 7px; border-radius: 999px; vertical-align: 2px;
  }

  .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 28px; }
  .col h3 { font-size: 20px; margin-bottom: 8px; letter-spacing: 0.02em; }
  .col p { font-size: 15px; color: #A3A3A3; }

  /* ── Footer ───────────────────────────────────────────────── */
  .foot { border-top: 1px solid var(--line); padding-top: 32px; display: grid; gap: 10px; }
  .foot p { font-size: 14px; color: var(--muted); }

  /* ── Direction notes: editorial scaffolding, not the page ──── */
  .notes {
    margin-top: 72px; border: 1px dashed #3A3A2A; border-radius: 16px;
    padding: clamp(22px, 3vw, 34px); background: #131309; display: grid; gap: 20px;
  }
  .notes h2 { font-size: 24px; color: var(--accent); }
  .notes .why { font-size: 14px; color: #9A9A8A; max-width: var(--measure); }
  .opt { display: grid; gap: 6px; padding-top: 16px; border-top: 1px solid #2A2A1E; }
  .opt h3 { font-family: var(--display); font-weight: 700; font-size: 17px; letter-spacing: 0.06em; color: var(--text); }
  .opt p { font-size: 14px; color: #9A9A8A; max-width: var(--measure); }
  .opt .tag {
    font-family: var(--display); font-weight: 700; font-size: 11px; letter-spacing: 0.14em;
    text-transform: uppercase; color: #0F0F0F; background: var(--accent);
    padding: 2px 8px; border-radius: 999px; justify-self: start;
  }

  @media (prefers-reduced-motion: no-preference) {
    .hero h1 { animation: rise 620ms cubic-bezier(.2,.7,.3,1) both; }
    .hero .lede { animation: rise 620ms cubic-bezier(.2,.7,.3,1) 90ms both; }
    @keyframes rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
  }

  a { color: var(--accent); }
  a:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

  /* legend swatches as classes so the CSP needs no unsafe-inline */
  .ramp .r0 { background: var(--ramp-0); }
  .ramp .r1 { background: var(--ramp-1); }
  .ramp .r2 { background: var(--ramp-2); }
  .ramp .r3 { background: var(--ramp-3); }
  .ramp .r4 { background: var(--ramp-4); }

