/*
 * 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;
  --text-quiet: #6E6E6C;
  --text-muted: #9A9A97;
  --text-dim: #B9B8B5;
  --text-soft: #C9C8C5;

  /* Type scale. Display sizes are fluid; the article measure is fixed at ~68ch. */
  --step-quote: clamp(30px, 4.6vw, 64px);
  --step-quote-long: clamp(24px, 3.7vw, 50px);
  --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);
  -webkit-text-size-adjust: 100%;
}

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; }

/*
 * 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;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
.pill[data-astro-cid-wpvy4v7s] {
  position: fixed;
  top: 14px;
  left: 50%;
  translate: -50%;
  z-index: 40;
  display: flex;
  align-items: center;
  gap: clamp(10px, 1.7vw, 22px);
  max-width: calc(100% - 24px);
  background: #0a0a0ab8;
  backdrop-filter: blur(14px);
  border: 1px solid #2a2a2a;
  border-radius: 999px;
  padding: .55em clamp(12px, 1.4vw, 18px);
  font-size: clamp(11px, .88vw, 13px);
  font-weight: 500;
  white-space: nowrap;
}

.pill[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
  text-decoration: none;
}

.pill[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover {
  opacity: .72;
}

.mark[data-astro-cid-wpvy4v7s] svg {
  height: clamp(9px, 1.15vw, 15px);
  width: auto;
  color: var(--type);
  display: block;
}

.mark[data-astro-cid-wpvy4v7s] {
  padding: 11px 12px;
  margin: -11px -12px;
}

.nav-cta[data-astro-cid-wpvy4v7s] {
  margin-left: clamp(14px, 2.4vw, 34px);
  border: 1px solid #f4f4f373;
  border-radius: 999px;
  padding: .45em .85em;
  font-weight: 700;
}

.nav-cta[data-astro-cid-wpvy4v7s]:hover {
  border-color: var(--type);
  opacity: 1;
}

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

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

.panel[data-astro-cid-wpvy4v7s] {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  translate: -50%;
  display: none;
  flex-direction: column;
  gap: 9px;
  background: #0a0a0af0;
  backdrop-filter: blur(14px);
  border: 1px solid #2a2a2a;
  padding: 16px 20px;
  min-width: 220px;
}

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

@supports (animation-timeline: scroll()) {
  .pill[data-astro-cid-wpvy4v7s].held {
    opacity: 0;
    translate: -50% -8px;
    animation: linear both nav-in;
    animation-timeline: scroll(root);
    animation-range: 4vh 14vh;
  }

  @keyframes nav-in {
    to {
      opacity: 1;
      translate: -50%;
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  .pill[data-astro-cid-wpvy4v7s].held {
    opacity: 1;
    translate: -50%;
    animation: none;
  }
}

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

@supports (animation-timeline: scroll()) {
  .trigger-icon[data-astro-cid-wpvy4v7s].held {
    opacity: 0;
    translate: 0 -8px;
    animation: linear both nav-in-mobile;
    animation-timeline: scroll(root);
    animation-range: 4vh 14vh;
  }

  @keyframes nav-in-mobile {
    to {
      opacity: 1;
      translate: 0;
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  .trigger-icon[data-astro-cid-wpvy4v7s].held {
    opacity: 1;
    translate: 0;
    animation: none;
  }
}

@media (width <= 640px) {
  .pill[data-astro-cid-wpvy4v7s] {
    width: calc(100% - 24px);
    justify-content: center;
  }

  .pill[data-astro-cid-wpvy4v7s] > a[data-astro-cid-wpvy4v7s]:not(.mark), .pill[data-astro-cid-wpvy4v7s] > .menu[data-astro-cid-wpvy4v7s], .pill[data-astro-cid-wpvy4v7s] .nav-cta[data-astro-cid-wpvy4v7s] {
    display: none;
  }

  .mobile-trigger[data-astro-cid-wpvy4v7s] {
    display: block;
    position: fixed;
    z-index: 41;
    top: 14px;
    right: 12px;
  }

  .mobile-trigger[data-astro-cid-wpvy4v7s] summary[data-astro-cid-wpvy4v7s] {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 32px;
    padding: 0 12px 0 20px;
    box-sizing: content-box;
  }

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

  .trigger-icon[data-astro-cid-wpvy4v7s] {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    width: 22px;
    height: 16px;
    box-sizing: content-box;
  }

  .trigger-icon[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s] {
    display: block;
    height: 1.5px;
    background: var(--type);
    transition: transform .18s, opacity .18s;
  }

  .mobile-trigger[data-astro-cid-wpvy4v7s][open] .trigger-icon[data-astro-cid-wpvy4v7s] > span[data-astro-cid-wpvy4v7s]:first-child {
    transform: translateY(6.75px) rotate(45deg);
  }

  .mobile-trigger[data-astro-cid-wpvy4v7s][open] .trigger-icon[data-astro-cid-wpvy4v7s] > span[data-astro-cid-wpvy4v7s]:last-child {
    transform: translateY(-6.75px) rotate(-45deg);
  }

  .overlay[data-astro-cid-wpvy4v7s] {
    position: fixed;
    inset: 0;
    z-index: 42;
    background: var(--ground);
    padding: 90px var(--gutter) 40px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    overflow-y: auto;
  }

  .overlay[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
    display: block;
    font-size: 17px;
    font-weight: 500;
    color: var(--type);
    text-decoration: none;
    padding: 11px 0;
    border-bottom: 1px solid #171717;
  }

  .mgroup-label[data-astro-cid-wpvy4v7s] {
    font-size: 12px;
    color: #6e6e6c;
    margin: 18px 0 2px;
    text-transform: none;
  }

  .mgroup[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
    font-size: 15px;
    font-weight: 400;
    color: var(--text-dim);
    padding: 9px 0 9px 14px;
    border-bottom-color: #141414;
  }

  .overlay[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover {
    opacity: .72;
  }
}
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] {
  text-decoration: none;
  padding: 6px 0;
  margin: -6px 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), Georgia, serif;
  font-size: 12px;
  line-height: 1.65;
  color: #6e6e6c;
  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: #6e6e6c;
}
.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: 14px 24px;
  padding: 16px clamp(16px, 4vw, 48px);
}

.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), Georgia, 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;
  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: var(--accent);
  color: var(--ground);
  border: 1px solid var(--accent);
}

.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;
  }

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