/*
 * Colour read off the live Squarespace site's theme variables in site.css and
 * converted from HSL. None of these values is invented.
 *   --ground  hsl(0, 0%, 0%)
 *   --type    hsl(60, 4.35%, 95.49%)
 *   --accent  hsl(349.09, 82.5%, 52.94%)   4.84:1 on pure black
 *   --grey    hsl(0, 0%, 21.96%)
 * The ground is pure black deliberately. See spec §5 before changing it.
 */
:root {
  --ground: #000000;
  --type: #F4F4F3;
  --accent: #EA2448;
  --grey: #383838;

  /*
   * Extended neutrals. Tasks 6-14 needed finer text- and surface-hierarchy
   * steps than the four base tokens alone give (a hairline reads differently
   * from a border, muted meta text from body text), so every task from Nav
   * onward introduced literal hex greys as it went, each one legitimate on
   * its own but never registered anywhere. Task 16's whole-site colour audit
   * is what actually surfaced them all at once: 14 distinct colours in the
   * built CSS, not 4. All ten of these are achromatic (no rogue hue sneaked
   * in alongside them, which is what the audit is actually guarding
   * against), so registering them here is the "add it to tokens.css... so
   * every addition is a decision rather than a drift" the audit's own
   * comment asks for, rather than a silent one.
   * Two families: near-black surfaces/borders, and muted text.
   */
  --surface-1: #141414;
  --surface-2: #171717;
  --surface-3: #1E1E1E;
  --surface-4: #232323;
  --surface-5: #2A2A2A;
  --surface-6: #3D3D3D;
  /* Raised from a 5.23:1-on-black value. --text-quiet carries ~90% of the
     site's 11-14px meta/label text (checked: 34 of 38 pairings site-wide),
     where WCAG's flat 4.5:1 floor is real but not generous enough to read
     comfortably at that size. Now 6.23:1. It's also the last remaining grey
     text tier: --text-muted/--text-dim/--text-soft read as too hard to read
     for real body copy, so they now resolve straight to --type (white) and
     stay only as semantic names so call sites don't need touching. --text-quiet
     stays grey because it carries genuinely minor annotations only (eyebrow
     labels, timestamps, source attribution), never body copy. */
  --text-quiet: #8C8C8A;
  --text-muted: var(--type);
  --text-dim: var(--type);
  --text-soft: var(--type);

  /* Type scale. Display sizes are fluid; the article measure is fixed at ~68ch. */
  --step-quote: clamp(30px, 4.6vw, 64px);
  /* Sized for a genuinely long quote (30+ words): the previous 50px max read
     as oversized once beat 3 started sourcing a real athlete quote of that
     length rather than a short placeholder. */
  --step-quote-long: clamp(19px, 2.6vw, 34px);
  --step-title: clamp(30px, 4.4vw, 52px);
  --step-section: clamp(22px, 2.6vw, 34px);
  --step-body: 19px;
  --step-meta: 13px;

  --leading-tight: 1.01;
  --leading-body: 1.72;
  --tracking-display: -0.035em;

  --measure: 68ch;
  --gutter: 8vw;
}
/*
 * Cross-document view transitions, CSS only. Spec §8 asks for native View
 * Transitions between routes; this is the native form and costs no JavaScript,
 * which is what lets article pages stay script-free. Browsers without support
 * navigate instantly, which §8 names as the accepted fallback.
 */
@view-transition { navigation: auto; }

*, *::before, *::after { box-sizing: border-box; }

html {
  background: var(--ground);
  scroll-padding-top: 84px;
  -webkit-text-size-adjust: 100%;
  /* The site has no light mode (tokens.css's --ground is pure black by
     deliberate design, spec §5), so telling the UA that up front keeps
     native chrome — scrollbars, form controls, the browser's own dark/light
     heuristics — in the same dark register as the page around it. */
  color-scheme: dark;
}

/* Fixed product header: in-page navigation must never land underneath it. */
[id] { scroll-margin-top: 84px; }

body {
  margin: 0;
  background: var(--ground);
  color: var(--type);
  font-family: var(--font-display), system-ui, sans-serif;
  font-weight: 500;
  -webkit-font-smoothing: antialiased;
}

img, svg, video { display: block; max-width: 100%; }

a { color: inherit; }

/*
 * touch-action: manipulation drops the double-tap-to-zoom delay some mobile
 * browsers still add before honouring a tap on these; every one of them is
 * already a real button/link/control with its own tap target, never a zoom
 * surface. The default translucent tap highlight is disabled deliberately,
 * not silently: every one of these elements already carries its own
 * hover/active/focus-visible feedback, and the default highlight is a light
 * flash that reads wrong against this site's all-black ground.
 */
a, button, input, select, textarea, summary {
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.skip-link {
  position: fixed; top: 12px; left: 12px; z-index: 100;
  translate: 0 -160%; padding: 10px 14px;
  background: var(--type); color: var(--ground); border-radius: 999px;
  font-size: 13px; font-weight: 700; text-decoration: none;
  transition: translate .18s ease;
}

.skip-link:focus-visible { translate: 0; }

/*
 * Every "Book an intro call" control is a <button> (Cal.com's popup embed
 * attaches to data-cal-link elements; there is no href to navigate once the
 * script has taken over), styled to read exactly like the <a> it replaced.
 * Each one's own component styles still set border, colour and spacing —
 * this only strips the UA button chrome those styles don't already cover.
 */
.cal-trigger {
  background: none; border: 0; padding: 0; margin: 0;
  font: inherit; color: inherit; cursor: pointer; text-align: inherit;
  -webkit-appearance: none; appearance: none;
}

:focus-visible {
  outline: 2px solid var(--type);
  outline-offset: 3px;
}

/* The Finder method link is useful context but should not add another mobile
   row before the primary search. Keep the existing hero flow intact and pin
   the link beside the eyebrow, where it remains visible and keyboard-focusable. */
@media (max-width: 760px) {
  main .finder-hero {
    position: relative;
  }

  main .finder-hero .method-link {
    position: absolute;
    top: 0;
    right: 0;
    margin: 0;
    font-size: 12px;
    line-height: 1.4;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}.site-header[data-astro-cid-wpvy4v7s] {
  position: fixed;
  inset: 0 0 auto;
  z-index: 40;
  height: 64px;
  border-bottom: 1px solid color-mix(in srgb, var(--type) 12%, transparent);
  background: color-mix(in srgb, var(--ground) 88%, transparent);
  backdrop-filter: blur(18px) saturate(130%);
}

.site-nav[data-astro-cid-wpvy4v7s] {
  width: min(1440px, 100%);
  height: 100%;
  margin: 0 auto;
  padding: 0 clamp(20px, 3vw, 48px);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 28px;
}

.brand[data-astro-cid-wpvy4v7s], .mobile-brand[data-astro-cid-wpvy4v7s] {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  width: fit-content;
  text-decoration: none;
}

.brand[data-astro-cid-wpvy4v7s] svg, .mobile-brand[data-astro-cid-wpvy4v7s] svg {
  width: 38px;
  height: auto;
  color: var(--type);
}

.brand[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s], .mobile-brand[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s] {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: -.01em;
}

.desktop-links[data-astro-cid-wpvy4v7s] {
  display: flex;
  align-items: center;
  gap: clamp(18px, 2vw, 32px);
}

.desktop-links[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s], .nav-cta[data-astro-cid-wpvy4v7s] {
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
}

.desktop-links[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
  color: var(--text-quiet);
  text-decoration: none;
  transition: color .16s;
}

.desktop-links[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover, .desktop-links[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:focus-visible {
  color: var(--type);
}

.menu[data-astro-cid-wpvy4v7s] {
  position: relative;
}

.menu[data-astro-cid-wpvy4v7s]:after {
  content: "";
  position: absolute;
  left: -12px;
  right: -12px;
  top: 100%;
  height: 18px;
}

.panel[data-astro-cid-wpvy4v7s] {
  position: absolute;
  top: calc(100% + 18px);
  left: 50%;
  translate: -50%;
  display: none;
  min-width: 230px;
  padding: 10px;
  background: color-mix(in srgb, var(--surface-1) 96%, transparent);
  border: 1px solid var(--surface-5);
  box-shadow: 0 24px 64px #0000007a;
}

.panel[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
  display: block;
  padding: 10px 11px;
  color: var(--text-muted);
}

.panel[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover {
  color: var(--type);
  background: var(--surface-3);
}

.menu[data-astro-cid-wpvy4v7s]:hover .panel[data-astro-cid-wpvy4v7s], .menu[data-astro-cid-wpvy4v7s]:focus-within .panel[data-astro-cid-wpvy4v7s] {
  display: block;
}

.nav-cta[data-astro-cid-wpvy4v7s] {
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 0 16px;
  border: 1px solid var(--surface-6);
  border-radius: 8px;
  background: var(--type);
  color: var(--ground);
  transition: background .16s, color .16s;
}

.nav-cta[data-astro-cid-wpvy4v7s]:hover {
  background: var(--accent);
  color: #fff;
}

.mobile-menu[data-astro-cid-wpvy4v7s] {
  display: none;
}

@media (width <= 920px) {
  .site-nav[data-astro-cid-wpvy4v7s] {
    grid-template-columns: 1fr auto;
  }

  .desktop-links[data-astro-cid-wpvy4v7s] {
    display: none;
  }

  .nav-cta[data-astro-cid-wpvy4v7s] {
    margin-right: 50px;
  }

  .mobile-menu[data-astro-cid-wpvy4v7s] {
    display: block;
    position: fixed;
    top: 10px;
    right: 14px;
    z-index: 42;
  }

  .mobile-menu[data-astro-cid-wpvy4v7s] summary[data-astro-cid-wpvy4v7s] {
    width: 44px;
    height: 44px;
    display: grid;
    place-content: center;
    gap: 6px;
    list-style: none;
    cursor: pointer;
  }

  .mobile-menu[data-astro-cid-wpvy4v7s] summary[data-astro-cid-wpvy4v7s]::-webkit-details-marker {
    display: none;
  }

  .mobile-menu[data-astro-cid-wpvy4v7s] summary[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s] {
    width: 21px;
    height: 1px;
    background: var(--type);
    transition: transform .18s;
  }

  .mobile-menu[data-astro-cid-wpvy4v7s][open] summary[data-astro-cid-wpvy4v7s] {
    position: fixed;
    top: 10px;
    right: 14px;
    z-index: 44;
  }

  .mobile-menu[data-astro-cid-wpvy4v7s][open] summary[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:first-child {
    transform: translateY(3.5px) rotate(45deg);
  }

  .mobile-menu[data-astro-cid-wpvy4v7s][open] summary[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:last-child {
    transform: translateY(-3.5px) rotate(-45deg);
  }

  .mobile-sheet[data-astro-cid-wpvy4v7s] {
    position: fixed;
    inset: 0;
    z-index: 43;
    overflow-y: auto;
    overscroll-behavior: contain;
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 18px 24px 48px;
    background: var(--ground);
  }

  .mobile-brand[data-astro-cid-wpvy4v7s] {
    min-height: 44px;
    margin-bottom: 28px;
  }

  .mobile-sheet[data-astro-cid-wpvy4v7s] > a[data-astro-cid-wpvy4v7s]:not(.mobile-brand) {
    padding: 14px 0;
    border-bottom: 1px solid var(--surface-5);
    font-size: 22px;
    text-decoration: none;
  }

  .mgroup[data-astro-cid-wpvy4v7s] {
    padding: 18px 0;
    border-bottom: 1px solid var(--surface-5);
    display: grid;
    gap: 12px;
  }

  .mgroup-label[data-astro-cid-wpvy4v7s] {
    margin: 0 0 4px;
    color: var(--text-quiet);
    font-size: 11px;
    letter-spacing: .08em;
    text-transform: uppercase;
  }

  .mgroup[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
    color: var(--text-muted);
    font-family: var(--font-body), system-ui, sans-serif;
    font-size: 15px;
    text-decoration: none;
  }
}

@media (width <= 520px) {
  .site-nav[data-astro-cid-wpvy4v7s] {
    padding-inline: 18px;
  }

  .brand[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s] {
    display: none;
  }

  .nav-cta[data-astro-cid-wpvy4v7s] {
    padding-inline: 12px;
    font-size: 12px;
  }

  .nav-cta[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s] {
    display: none;
  }
}
footer[data-astro-cid-jo6i4kqk] {
  border-top: 1px solid var(--grey);
  margin-top: 12vh;
  padding: 40px var(--gutter) 60px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

footer[data-astro-cid-jo6i4kqk] nav[data-astro-cid-jo6i4kqk] {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 28px;
  font-size: 13px;
}

footer[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk] {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  text-decoration: none;
  padding: 0;
  margin: 0;
}

footer[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover {
  opacity: .72;
}

.credit[data-astro-cid-jo6i4kqk], .colophon[data-astro-cid-jo6i4kqk] {
  font-family: var(--font-body), system-ui, sans-serif;
  font-size: 12px;
  line-height: 1.65;
  color: var(--text-quiet);
  margin: 0;
  max-width: 62ch;
}

.credit[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk] {
  text-decoration: underline;
  text-underline-offset: .18em;
  text-decoration-color: var(--text-quiet);
}
.cookie-consent[data-astro-cid-kror3uvh] {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 60;
  background: #0a0a0af5;
  backdrop-filter: blur(14px);
  border-top: 1px solid var(--surface-5);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 24px;
  padding: 14px clamp(16px, 4vw, 48px);
  padding-bottom: max(14px, env(safe-area-inset-bottom));
}

.cookie-consent[data-astro-cid-kror3uvh][hidden] {
  display: none;
}

.cookie-consent[data-astro-cid-kror3uvh] p[data-astro-cid-kror3uvh] {
  margin: 0;
  max-width: 62ch;
  font-family: var(--font-body), system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-soft);
}

.cookie-consent[data-astro-cid-kror3uvh] a[data-astro-cid-kror3uvh] {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: .18em;
  text-decoration-color: var(--text-quiet);
}

.cookie-consent[data-astro-cid-kror3uvh] a[data-astro-cid-kror3uvh]:hover {
  text-decoration-color: var(--type);
}

.cookie-actions[data-astro-cid-kror3uvh] {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
}

.cookie-consent[data-astro-cid-kror3uvh] button[data-astro-cid-kror3uvh] {
  font-family: var(--font-display), system-ui, sans-serif;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .01em;
  cursor: pointer;
  white-space: nowrap;
  border-radius: 999px;
  min-height: 44px;
  padding: .65em 1.2em;
}

.cookie-decline[data-astro-cid-kror3uvh] {
  background: none;
  color: var(--type);
  border: 1px solid #f4f4f373;
}

.cookie-decline[data-astro-cid-kror3uvh]:hover {
  border-color: var(--type);
}

.cookie-accept[data-astro-cid-kror3uvh] {
  background: color-mix(in srgb, var(--accent) 75%, var(--ground));
  color: var(--type);
  border: 1px solid color-mix(in srgb, var(--accent) 75%, var(--ground));
}

.cookie-accept[data-astro-cid-kror3uvh]:hover {
  opacity: .88;
}

@media (width <= 640px) {
  .cookie-consent[data-astro-cid-kror3uvh] {
    flex-direction: column;
    align-items: stretch;
  }

  .cookie-actions[data-astro-cid-kror3uvh] {
    justify-content: flex-end;
    flex-wrap: wrap;
  }

  .cookie-consent[data-astro-cid-kror3uvh] {
    padding: 14px 16px;
    gap: 10px;
    padding-bottom: max(14px, env(safe-area-inset-bottom));
  }

  .cookie-consent[data-astro-cid-kror3uvh] p[data-astro-cid-kror3uvh] {
    min-height: 0;
  }
}
