:where([data-etch-element="container"]) {
  inline-size: 100%;
  display: flex;
  flex-direction: column;
  max-inline-size: var(--content-width, 1366px);
  align-self: center; margin-inline: auto;
}
:where([data-etch-element="section"]) {
  inline-size: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}
:where([data-etch-element="flex-div"]) {
  inline-size: 100%;
  display: flex;
  flex-direction: column;
}
:where([data-etch-element="iframe"]) {
  inline-size: 100%;
  height: auto;
 aspect-ratio: 16/9;
}
.site-header {
  background: var(--white);
border-block-end: 1px solid var(--neutral-ultra-light);
padding-block: var(--space-s);
padding-inline: var(--gutter);
position: sticky;
inset-block-start: 0;
z-index: 10;
}
.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--content-gap);
  flex-wrap: nowrap;
}
.site-header__brand {
  display: flex;
align-items: center;
gap: var(--space-xs);
color: var(--base);
text-decoration: none;
flex-shrink: 0;
}
.site-header__mark {
  inline-size: var(--icon-size-m);
block-size: auto;
color: var(--base);
flex-shrink: 0;
}
.site-header__lockup {
  display: flex;
flex-direction: column;
}
.site-header__name {
  font-size: var(--text-l);
font-weight: 800;
line-height: 1;
letter-spacing: -0.03em;
}
.site-header__descriptor {
  font-size: var(--text-xs);
color: var(--neutral);
text-transform: uppercase;
letter-spacing: 0.14em;
line-height: 1;
}
.site-header__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 2.75rem;
  block-size: 2.75rem;
  flex: none;
  padding: 0;
  border: 1px solid var(--neutral-light);
  border-radius: var(--radius);
  background-color: var(--white);
  color: var(--base);
  cursor: pointer;

  &:hover,
  &:focus-visible {
    border-color: var(--primary);
    color: var(--primary);
  }

  &[aria-expanded="true"] .site-header__bars {
    background-color: transparent;
  }

  &[aria-expanded="true"] .site-header__bars::before {
    inset-block-start: 0;
    transform: rotate(45deg);
  }

  &[aria-expanded="true"] .site-header__bars::after {
    inset-block-start: 0;
    transform: rotate(-45deg);
  }

  @media (width >= 1240px) {
    display: none;
  }
}
.site-header__bars {
  position: relative;
  display: block;
  inline-size: var(--space-m);
  block-size: 2px;
  background-color: currentColor;

  &::before,
  &::after {
    content: "";
    position: absolute;
    inset-inline: 0;
    block-size: 2px;
    background-color: currentColor;
    transition: transform var(--transition-duration) var(--ease-snappy);
  }

  &::before {
    inset-block-start: calc(var(--space-xs) * -0.75);
  }

  &::after {
    inset-block-start: calc(var(--space-xs) * 0.75);
  }
}
.site-header__panel {
  position: absolute;
  inset-inline: 0;
  inset-block-start: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  padding: var(--space-m) var(--gutter);
  background-color: var(--white);
  border-block-end: 1px solid var(--neutral-ultra-light);
  box-shadow: var(--box-shadow-1);

  &[data-state="closed"] {
    display: none;
  }

  @media (width >= 1240px) {
    &,
    &[data-state] {
      display: contents;
    }
  }
}
.site-nav {
  display: flex;
  flex-direction: column;
  align-items: stretch;

  @media (width >= 1240px) {
    flex-direction: row;
    align-items: center;
    gap: var(--space-m);
  }
}
.site-nav__item {
  display: flex;
  flex-direction: column;

  @media (width >= 1240px) {
    position: relative;

    &:hover .site-nav__submenu,
    &:focus-within .site-nav__submenu {
      display: flex;
    }
  }
}
.site-nav__link {
  color: var(--base);
  text-decoration: none;
  font-size: var(--text-m);
  white-space: nowrap;
  padding-block: var(--space-s);
  border-block-end: 1px solid var(--neutral-ultra-light);

  &:hover,
  &:focus-visible {
    color: var(--primary);
  }

  @media (width >= 1240px) {
    font-size: var(--text-s);
    padding-block: 0;
    border-block-end: 0;
  }
}
.site-nav__submenu {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-inline-start: var(--space-m);

  @media (width >= 1240px) {
    display: none;
    position: absolute;
    inset-inline-start: 0;
    inset-block-start: 100%;
    min-inline-size: 220px;
    padding: var(--space-xs);
    margin: 0;
    background-color: var(--white);
    border: 1px solid var(--neutral-ultra-light);
    border-radius: var(--radius-m);
    box-shadow: var(--box-shadow-1);
    z-index: 20;
  }

  &:empty {
    display: none !important;
  }
}
.site-nav__sublink {
  display: block;
  color: var(--base);
  text-decoration: none;
  font-size: var(--text-s);
  padding-block: var(--space-xs);
  border-block-end: 1px solid var(--neutral-ultra-light);

  &:hover,
  &:focus-visible {
    color: var(--primary);
  }

  @media (width >= 1240px) {
    padding-inline: var(--space-xs);
    border-block-end: 0;
    white-space: nowrap;
  }
}
.site-header__actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-s);

  @media (width >= 1240px) {
    flex-direction: row;
    align-items: center;
  }
}
.site-header__tel {
  display: inline-flex;
  color: var(--base);
  text-decoration: none;
  font-size: var(--text-m);
  white-space: nowrap;

  &:hover,
  &:focus-visible {
    color: var(--primary);
  }

  @media (width >= 1240px) {
    font-size: var(--text-s);
  }
}
.site-footer {
  background: var(--base);
color: var(--text-light);
padding-block: var(--space-xl);
padding-inline: var(--gutter);
}
.site-footer__inner {
  display: grid;
gap: var(--grid-gap);
grid-template-columns: 1fr;

@media (width >= 768px) {
  grid-template-columns: 2fr 1fr 1fr;
}
}
.site-footer__brand {
  display: flex;
flex-direction: column;
gap: var(--space-xs);
align-items: start;
}
.site-footer__mark {
  inline-size: var(--icon-size-m);
block-size: auto;
color: var(--base-light);
flex-shrink: 0;
}
.site-footer__name {
  font-size: var(--text-l);
font-weight: 800;
line-height: 1.1;
}
.site-footer__note {
  font-size: var(--text-s);
color: var(--text-light-muted);
max-inline-size: 32ch;
}
.site-footer__col {
  display: flex;
flex-direction: column;
gap: var(--space-xs);
align-items: start;
}
.site-footer__heading {
  font-size: var(--text-xs);
text-transform: uppercase;
letter-spacing: 0.14em;
color: var(--text-light-muted);
}
.site-footer__link {
  color: var(--text-light);
text-decoration: none;
font-size: var(--text-s);

&:hover,
&:focus-visible {
  text-decoration: underline;
}
}
.site-footer__address {
  font-size: var(--text-s);
color: var(--text-light-muted);
font-style: normal;
line-height: 1.6;
}
.site-footer__legal {
  display: flex;
flex-wrap: wrap;
gap: var(--space-s);
justify-content: space-between;
align-items: center;
margin-block-start: var(--space-l);
padding-block-start: var(--space-s);
border-block-start: 1px solid var(--base-semi-dark);
font-size: var(--text-xs);
color: var(--text-light-muted);
}
.hero {
  position: relative;
  overflow: hidden;
  --hero-step: calc(var(--transition-duration) / 3);
padding-block-end: var(--section-space-xs);
}
.hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  color: var(--base);
  opacity: 0.05;
}
.hero__drifter {
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 0;
  inline-size: 100%;
  block-size: 200%;
  animation: argyll-drift 46s linear infinite;
}
.hero__inner {
  position: relative;
  z-index: 1;
}
.hero__grid {
  display: grid;
  gap: var(--grid-gap);
  align-items: center;

  @media (width >= 992px) {
    grid-template-columns: 7fr 5fr;
  }
}
.hero__intro {
  display: flex;
  flex-direction: column;
  gap: var(--content-gap);
  align-items: start;
}
.hero__eyebrow {
  font-size: var(--text-xs);
display: flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--primary);
  text-transform: uppercase;
  animation: argyll-rise-in calc(var(--transition-duration) * 2.5) var(--ease-snappy) 0s backwards;
}
.hero__rule {
  inline-size: var(--space-m);
  block-size: 2px;
  background-color: var(--accent);
  flex: none;
}
.hero__title {
  animation: argyll-rise-in calc(var(--transition-duration) * 2.5) var(--ease-snappy) var(--hero-step) backwards;
  max-inline-size: 28ch;
}
.hero__lede {
  font-size: var(--text-l);
max-inline-size: 85ch;
animation: argyll-rise-in calc(var(--transition-duration) * 2.5) var(--ease-snappy) calc(var(--hero-step) * 2) backwards;
}
.hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-s);
  animation: argyll-rise-in calc(var(--transition-duration) * 2.5) var(--ease-snappy) calc(var(--hero-step) * 3) backwards;

  & > a {
    transition-property: all;
  }

  & > a:hover {
    transform: translateY(calc(var(--space-xs) * -0.25));
  }
}
.hero__panel {
  display: flex;
  flex-direction: column;
  gap: var(--space-m);
  padding: var(--space-l);
  background-color: color-mix(in srgb, var(--base-ultra-light) 50%, var(--white));
  border: 1px solid var(--neutral-light);
  border-radius: var(--radius-m);
  animation: argyll-rise-in calc(var(--transition-duration) * 2.5) var(--ease-snappy) calc(var(--hero-step) * 2.5) backwards;
}
.hero__panel-label {
  color: var(--text-dark-muted);
  text-transform: uppercase;
}
.hero__stats {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
}
.hero__stat {
  display: flex;
  align-items: start;
  gap: var(--space-s);
}
.hero__figure {
  color: var(--base);
  line-height: 1;
  flex: none;
  min-inline-size: 6ch;
}
.hero__divider {
  block-size: 1px;
  background-color: var(--neutral-light);
}
.hero__source {
  color: var(--text-dark-muted);
}
.ticker {
  position: relative;
  background-color: var(--bg-dark);
  color: var(--text-light);
  overflow: hidden;
  padding-block: var(--space-s);

  &::before,
  &::after {
    content: "";
    position: absolute;
    inset-block: 0;
    inline-size: var(--space-xxl);
    z-index: 2;
    pointer-events: none;
  }

  &::before {
    inset-inline-start: 0;
    background: linear-gradient(90deg, var(--bg-dark), transparent);
  }

  &::after {
    inset-inline-end: 0;
    background: linear-gradient(270deg, var(--bg-dark), transparent);
  }

  &:hover .ticker__track {
    animation-play-state: paused;
  }

  @media (prefers-reduced-motion: reduce) {
    &::before,
    &::after {
      display: none;
    }
  }
}
.ticker__track {
  display: flex;
  inline-size: max-content;
  animation: argyll-ticker 42s linear infinite;

  @media (prefers-reduced-motion: reduce) {
    inline-size: auto;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-xs) 0;
    animation: none;
  }
}
.ticker__set {
  display: flex;
  flex: none;

  @media (prefers-reduced-motion: reduce) {
    flex: 0 1 auto;
    min-inline-size: 0;
    flex-wrap: wrap;
    justify-content: center;

    &:not(:first-child) {
      display: none;
    }
  }
}
.ticker__item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xl);
  white-space: nowrap;
  padding-inline-end: var(--space-xl);
  font-size: var(--text-s);

  &::after {
    content: "";
    inline-size: calc(var(--space-xs) / 2);
    block-size: calc(var(--space-xs) / 2);
    border-radius: var(--radius-circle);
    background-color: var(--accent);
    flex: none;
  }

  @media (prefers-reduced-motion: reduce) {
    white-space: normal;
    text-align: center;
    padding-inline: var(--space-s);

    &::after {
      display: none;
    }
  }
}
.services {
  /* Straight after the hero, a white section needs less top space: the hero already ends with padding. */
.hero + &:not(.booking) {
  padding-block-start: var(--section-space-xs);
}
}
.services__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  margin-block-end: var(--content-gap);
  max-inline-size: var(--width-70);
}
.services__lede {
  font-size: var(--text-l);

}
.services__grid {
  display: grid;
  gap: var(--grid-gap);

  @media (width >= 768px) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.service {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  padding: var(--space-l);
  border: 1px solid var(--neutral-light);
  border-radius: var(--radius-m);
  background-color: var(--white);
  transition: transform var(--transition-duration) var(--ease-snappy), box-shadow var(--transition-duration), border-color var(--transition-duration);

  &:hover {
    transform: translateY(calc(var(--space-xs) * -0.5));
    box-shadow: var(--box-shadow-1);
    border-color: var(--neutral);
  }

  &:hover .service__more::after {
    transform: translateX(var(--space-xs));
  }
}
.service__more {
  color: var(--primary);
  font-size: var(--text-s);
  margin-block-start: auto;

  &::after {
    content: "\2192";
    display: inline-block;
    margin-inline-start: var(--space-xs);
    transition: transform var(--transition-duration) var(--ease-snappy);
  }

  &::before {
    content: "";
    position: absolute;
    inset: 0;
  }
}
.method {
  background-color: var(--bg-dark);
  color: var(--text-light);
}
.method__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  margin-block-end: var(--content-gap);
  max-inline-size: var(--width-70);
}
.method__title {
  color: var(--text-light);
}
.method__lede {
  color: var(--text-light-muted);
}
.method__stages {
  display: grid;
  gap: var(--space-s);

  @media (width >= 768px) {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}
.stage {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-m);
  border: 1px solid var(--neutral-semi-dark);
  border-radius: var(--radius);
  --stage-time: calc(var(--transition-duration) * 1.5);
  transition: background-color var(--stage-time) var(--ease-snappy), border-color var(--stage-time) var(--ease-snappy), transform var(--stage-time) var(--ease-snappy), box-shadow var(--stage-time) var(--ease-snappy);

  &::after {
    content: "";
    position: absolute;
    inset-inline: -1px;
    inset-block-start: -1px;
    block-size: 2px;
    background-color: var(--accent);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--stage-time) var(--ease-snappy);
  }

  &:hover,
  &.is-on {
    background-color: color-mix(in srgb, var(--accent) 11%, transparent);
    border-color: var(--accent);
    transform: translateY(calc(var(--space-xs) * -0.5));
  }

  &.is-on {
    box-shadow: var(--box-shadow-2);
  }

  &.is-on::after {
    transform: scaleX(1);
  }

  @media (prefers-reduced-motion: reduce) {
    &:last-child {
      background-color: color-mix(in srgb, var(--accent) 11%, transparent);
      border-color: var(--accent);
    }
  }
}
.stage__num {
  color: var(--accent);
  font-size: var(--text-xs);
}
.stage__name {
  color: var(--text-light);
  font-size: var(--h5);
}
.stage__copy {
  color: var(--text-light-muted);
}
.process {
  background-color: var(--bg-ultra-light);
}
.process__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  margin-block-end: var(--content-gap);
  max-inline-size: var(--width-70);
}
.process__source {
  color: var(--text-dark-muted);
}
.process__grid {
  display: grid;
  gap: var(--grid-gap);

  @media (width >= 768px) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  @media (width >= 992px) {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
.step {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-m);
  border: 1px solid var(--neutral-light);
  border-radius: var(--radius);
  background-color: var(--white);
  --step-time: calc(var(--transition-duration) * 1.5);
  transition: background-color var(--step-time) var(--ease-snappy), border-color var(--step-time) var(--ease-snappy), transform var(--step-time) var(--ease-snappy), box-shadow var(--step-time) var(--ease-snappy);

  &::after {
    content: "";
    position: absolute;
    inset-inline: -1px;
    inset-block-start: -1px;
    block-size: 2px;
    background-color: var(--accent);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--step-time) var(--ease-snappy);
  }

  &:hover,
  &.is-on {
    background-color: color-mix(in srgb, var(--accent) 8%, var(--white));
    border-color: var(--accent);
    transform: translateY(calc(var(--space-xs) * -0.5));
  }

  &.is-on {
    box-shadow: var(--box-shadow-1);
  }

  &.is-on::after {
    transform: scaleX(1);
  }

  @media (prefers-reduced-motion: reduce) {
    &:last-child {
      background-color: color-mix(in srgb, var(--accent) 8%, var(--white));
      border-color: var(--accent);
    }
  }
}
.step__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 2.25rem;
  block-size: 2.25rem;
  border-radius: var(--radius-circle);
  background-color: var(--base);
  color: var(--accent);
  font-size: var(--text-xs);
  flex: none;
  margin-block-end: var(--space-xs);
}
.process__foot {
  margin-block-start: var(--content-gap);
  max-inline-size: var(--width-70);
}
.people__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  margin-block-end: var(--content-gap);
  max-inline-size: var(--width-70);
}
.people__grid {
  display: grid;
  gap: var(--grid-gap);

  @media (width >= 768px) {
    grid-template-columns: repeat(2, minmax(0, 1fr));

    & > :last-child:nth-child(odd) {
      grid-column: 1 / -1;
    }
  }

  @media (width >= 992px) {
    grid-template-columns: repeat(6, minmax(0, 1fr));

    & > * {
      grid-column: span 2;
    }

    & > :nth-child(n + 4),
    & > :last-child:nth-child(odd) {
      grid-column: span 3;
    }
  }
}
.person {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-l);
  border: 1px solid var(--neutral-light);
  border-radius: var(--radius-m);
  background-color: var(--white);
  transition: transform var(--transition-duration) var(--ease-snappy), box-shadow var(--transition-duration), border-color var(--transition-duration);

  &:hover {
    transform: translateY(calc(var(--space-xs) * -0.5));
    box-shadow: var(--box-shadow-1);
    border-color: var(--neutral);
  }
}
.person__role {
  color: var(--primary);
  text-transform: uppercase;
}
.person__copy {
  margin-block-start: var(--space-xs);
}
.cta {
  background-color: var(--bg-dark);
  color: var(--text-light);
  text-align: center;
}
.cta__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-s);
}
.cta__title {
  color: var(--text-light);
  max-inline-size: 22ch;
}
.cta__lede {
  font-size: var(--text-l);
color: var(--text-light-muted);
  max-inline-size: var(--width-70);
}
.cta__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-s);
  margin-block-start: var(--space-s);

  & > a {
    transition-property: all;
  }

  & > a:hover {
    transform: translateY(calc(var(--space-xs) * -0.25));
  }
}
.cta__tel {
  color: var(--text-light);
  text-decoration: underline;
}
.motion-script {
  display: none;
}
.service-body {
  /* Straight after the hero, a white section needs less top space: the hero already ends with padding. */
.hero + &:not(.booking) {
  padding-block-start: var(--section-space-xs);
}
}
.service-body__head {
  margin-block-end: var(--content-gap);
}
.service-body__grid {
  display: grid;
  gap: var(--grid-gap);
  align-items: center;

  @media (width >= 992px) {
    grid-template-columns: 7fr 5fr;
  }
}
.service-body__prose {
  display: flex;
  flex-direction: column;
  gap: var(--content-gap);
  max-inline-size: var(--width-60);
align-self: start;
}
.service-body__figure {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.service-body__image {
  inline-size: 100%;
  block-size: auto;
  max-inline-size: 360px;
}
.service-qa {
  background-color: var(--bg-ultra-light);
}
.service-qa__grid {
  display: grid;
  gap: var(--grid-gap);

  @media (width >= 992px) {
    grid-template-columns: 5fr 7fr;
    align-items: center;

    & > .service-qa__list {
      order: 2;
    }

    & > .service-qa__figure {
      order: 1;
    }
  }
}
.service-qa__list {
  display: flex;
  flex-direction: column;
  gap: var(--content-gap);
  max-inline-size: var(--width-60);
}
.qa {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}
.service-qa__figure {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.service-qa__image {
  inline-size: 100%;
  block-size: auto;
  max-inline-size: 320px;
}
.booking {
  background-color: var(--bg-ultra-light);
}
.booking__calendar {
  inline-size: 100%;
}
.contact-details {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--space-xs) var(--space-l);
  margin: 0;
}
.contact-details__label {
  font-weight: 700;
  color: var(--base);
}
.contact-details__value {
  margin: 0;
  min-inline-size: 0;
  overflow-wrap: anywhere;
}
.contact-details__link {
  color: var(--primary);
  text-decoration: underline;
}