/* ==========================================================================
   Fresh Blend — nieuwe huisstijl

   Everything here is scoped to .fb, which sits on <body> for a converted page
   and on the header and footer alone for pages still running on site.css. Both
   stylesheets are loaded on every page during the conversion; site.css can go
   once the last page carries .fb.

   Source of truth: temp/Fresh Blend New Style Project (concept 4a) and the
   pre-brandbook PDF. Design reference width is 1280px; sizes below scale from
   that with clamp().

   Authored here, served from public/css/newstyle.css — copy after editing.
   ========================================================================== */

:root {
  --fb-room: #fcf8f2;
  --fb-beige: #eee9e2;
  /* Inset and band fills over cream: 60% opaque so grain and blobs stay readable. */
  --fb-beige-fill: color-mix(in srgb, var(--fb-beige) 60%, transparent);
  --fb-mist: #f2f1ee;
  --fb-tan: #b49c6c;
  --fb-tan-deep: #6e655c;
  --fb-espresso: #3a2a1c;
  --fb-paper: #fff8f2;
  --fb-accent: #ff6a2e;
  --fb-accent-dark: #e85815;
  --fb-navy: #17263F;
  --fb-navy-hi: #253D65;
  --fb-navy-deep: #0E192C;

  --fb-line: rgba(180, 156, 108, 0.4);

  --fb-font-display: "early-sans-variable", sans-serif;
  --fb-font-ui: "early-sans-variable", sans-serif;
  --fb-font-body: "early-sans-variable", sans-serif;
  --fb-tracking-display: -0.011em;
  --fb-tracking-body: 0.015em;
  --fb-tracking-ui: 0.06em;
  --fb-size-copy: clamp(16px, 1.3vw, 18px);
  --fb-size-section: clamp(36px, 6.4vw, 88px);
  --fb-copy-lh: 1.72;
  --fb-section-lh: 0.86;
  --fb-copy: var(--fb-tan-deep);

  /* Horizontal page padding. 72px at the 1280px reference width. */
  --fb-pad: clamp(24px, 5.6vw, 80px);
  /* Vertical padding of a content block, top and bottom.
     Content never sits flush with the section edge. */
  --fb-section-y: clamp(96px, 10vw, 152px);
  /* Space between sibling tiles / cards. */
  --fb-gap: clamp(24px, 2.4vw, 36px);
  /* Inner padding of a tile or card. */
  --fb-card-pad: clamp(32px, 3.2vw, 52px);
  --fb-ease: cubic-bezier(0.22, 1, 0.36, 1);

  --fb-btn-fill: var(--fb-accent);
  --fb-btn-text: var(--fb-paper);
  --fb-btn-line: var(--fb-accent);
  --fb-btn-fill-hover: var(--fb-navy);
  --fb-btn-text-hover: var(--fb-paper);
  --fb-btn-line-hover: var(--fb-navy);

  --fb-btn-outline-fill: transparent;
  --fb-btn-outline-text: var(--fb-espresso);
  --fb-btn-outline-line: var(--fb-tan);
  --fb-btn-outline-fill-hover: #fff;
  --fb-btn-outline-text-hover: var(--fb-espresso);
  --fb-btn-outline-line-hover: var(--fb-accent);
}

/* — base — */

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

html:has(body.fb) {
  -webkit-text-size-adjust: 100%;
}

/* Brand scope. Sits on <body> for a converted page, and on the header and
   footer alone on pages that still run on site.css, so the two palettes can
   share a document without leaking into each other. */
.fb {
  background: var(--fb-room);
  color: var(--fb-copy);
  font-family: var(--fb-font-body);
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  font-weight: 300;
  font-style: normal;
  letter-spacing: var(--fb-tracking-body);
}

body.fb {
  margin: 0;
  /* Clip the tilted marquee here, not on html. Overflow-x on both
     html and body makes body the scrollport, so window scroll never
     fires and sticky/index motion stall (Chrome and Firefox). */
  overflow-x: clip;
}

/* Element resets go through :where() so that a single component class is
   always specific enough to override them. */
.fb :where(img) {
  display: block;
  max-width: 100%;
}

.fb :where(h1, h2, h3, h4, h5, h6) {
  font-family: var(--fb-font-display);
  font-weight: 900;
  letter-spacing: var(--fb-tracking-display);
  /* site.css uppercases every heading; the new brand sets its case in the copy. */
  text-transform: none;
  margin: 0;
  color: var(--fb-navy);
  /* Prefer even lines over a leftover word. JS bakes the same rule into
     [data-fb-title] masks, which otherwise lock the browser wrap. */
  text-wrap: pretty;
}

.fb :where(p) {
  margin: 0;
}

.fb :where(a) {
  color: inherit;
  text-decoration: none;
}

/* site.css fades every link to 0.85 on hover. Kill that inside the brand. */
.fb a:hover,
.fb a:focus-visible {
  opacity: 1;
}

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

.fb ::selection {
  background: rgba(255, 106, 46, 0.24);
}

.fb-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* Small uppercase label used across every section. */
.fb-label {
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-section {
  padding-inline: var(--fb-pad);
}

.fb-rule {
  border-top: 1px solid var(--fb-line);
}

/* Emphasised word inside a heading: same Early Sans Black cut, often accent-coloured. */
.fb-strong {
  font-weight: 900;
  font-size: 0.98em;
}

.fb-strong--accent {
  color: var(--fb-accent);
}

/* — header — */

.fb-header {
  position: relative;
  z-index: 20;
  overflow: visible;
  padding: 26px var(--fb-pad) 0;
  /* Explicit, because on a page that still runs on site.css the body behind
     this header is navy. */
  background: var(--fb-room);
  --fb-dropdown-width: 240px;
}

.fb-header__bar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 22px;
}

.fb-header__navs {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0;
  margin-left: auto;
  padding-top: 14px;
}

.fb-header__badge {
  z-index: 4;
  flex: none;
  margin-top: 28px;
  margin-left: 28px;
  width: clamp(96px, 8.8vw, 120px);
  height: clamp(96px, 8.8vw, 120px);
  font-size: 11px;
}

.fb-header__toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--fb-espresso);
  cursor: pointer;
}

.fb-header__toggle svg {
  width: 26px;
  height: 26px;
}

.fb-header__toggle .fb-header__bars,
.fb-header__toggle .fb-header__cross {
  transition: opacity 160ms ease;
}

.fb-header__toggle .fb-header__cross,
.fb-header[data-open="true"] .fb-header__toggle .fb-header__bars {
  display: none;
}

.fb-header[data-open="true"] .fb-header__toggle .fb-header__cross {
  display: block;
}

.fb-header__brand {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  color: inherit;
}

.fb-header__logo {
  height: clamp(38px, 3.9vw, 50px);
  width: auto;
}

.fb-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 26px;
  font-family: var(--fb-font-ui);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
}

.fb-nav__link {
  color: var(--fb-espresso);
  text-decoration: none;
  padding-bottom: 7px;
  background-image: linear-gradient(var(--fb-accent), var(--fb-accent));
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 2px;
  transition:
    background-size 280ms var(--fb-ease),
    color 200ms ease;
}

.fb-nav__link:hover,
.fb-nav__link:focus-visible {
  color: var(--fb-accent);
  background-size: 100% 2px;
}

.fb-nav--primary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
  font-size: clamp(14px, 1.2vw, 17px);
  letter-spacing: var(--fb-tracking-ui);
}

.fb-nav--primary .fb-nav__link,
.fb-header__dropdown-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding-bottom: 0;
  background-image: none;
  color: inherit;
}

.fb-nav--primary .fb-nav__link:hover,
.fb-nav--primary .fb-nav__link:focus-visible,
.fb-header__dropdown-btn:hover,
.fb-header__dropdown-btn:focus-visible,
.fb-nav--primary .fb-nav__link[aria-current="page"],
.fb-header__dropdown-btn.is-current {
  background-size: 0;
  color: var(--fb-accent);
}

.fb-header__dropdown {
  position: relative;
  display: flex;
  align-items: center;
  width: auto;
  flex: none;
  margin-right: 53px;
}

.fb-header__dropdown-btn {
  gap: 7px;
  width: auto;
  margin: 0;
  border: 0;
  background: none;
  font-family: var(--fb-font-ui);
  font-weight: 400;
  font-size: clamp(14px, 1.2vw, 17px);
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
}

.fb-header__dropdown-btn svg {
  width: 9px;
  height: 6px;
  opacity: 0.7;
  transition: transform 220ms var(--fb-ease);
}

.fb-header__dropdown[data-open="true"] .fb-header__dropdown-btn svg,
.fb-header__dropdown:hover .fb-header__dropdown-btn svg,
.fb-header__dropdown:focus-within .fb-header__dropdown-btn svg {
  transform: rotate(180deg);
}

/* Tiny round separators, Austin Werner language, in brand orange. */
.fb-header__dropdown::after,
.fb-nav--primary .fb-nav__link:not(:last-child)::after {
  content: "";
  width: 5px;
  height: 5px;
  flex: none;
  border-radius: 50%;
  background: var(--fb-accent);
  box-shadow: 0 0 8px color-mix(in srgb, var(--fb-accent) 80%, transparent);
}

.fb-nav--primary .fb-nav__link:not(:last-child)::after {
  margin: 0 24px;
}

.fb-header__dropdown::after {
  position: absolute;
  left: 100%;
  top: 50%;
  margin: 0 0 0 24px;
  transform: translateY(-50%);
}

.fb-nav--services {
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  z-index: 30;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  box-sizing: border-box;
  width: var(--fb-dropdown-width);
  min-width: var(--fb-dropdown-width);
  padding: 16px 18px 0;
  background: color-mix(in srgb, var(--fb-navy-deep) 58%, transparent);
  border: 0;
  border-radius: 0 0 16px 16px;
  box-shadow: none;
  overflow: hidden;
  -webkit-backdrop-filter: blur(80px);
  backdrop-filter: blur(80px);
  letter-spacing: normal;
  text-transform: none;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%);
  transition:
    opacity 180ms var(--fb-ease),
    visibility 0s linear 180ms;
}

.fb-header__dropdown::before {
  content: "";
  position: absolute;
  left: -48px;
  right: -48px;
  top: 100%;
  height: 12px;
}

.fb-header__dropdown[data-open="true"] .fb-nav--services,
.fb-header__dropdown:hover .fb-nav--services,
.fb-header__dropdown:focus-within .fb-nav--services {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%);
  transition-delay: 0s;
}

.fb-nav--services .fb-nav__link {
  display: block;
  padding: 9px 18px;
  margin-left: -18px;
  margin-right: -18px;
  color: var(--fb-paper);
  font-size: 15px;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 1.35;
  text-transform: none;
  background-image: none;
  white-space: nowrap;
  text-shadow: none;
}

.fb-nav--services .fb-nav__link:last-child {
  padding-bottom: 14px;
}

.fb-nav--services .fb-nav__link + .fb-nav__link {
  border-top: 1px solid color-mix(in srgb, var(--fb-paper) 8%, transparent);
}

.fb-nav--services .fb-nav__link:hover,
.fb-nav--services .fb-nav__link:focus-visible,
.fb-nav--services .fb-nav__link[aria-current="page"] {
  color: var(--fb-accent);
  background-color: color-mix(in srgb, var(--fb-navy-deep) 72%, transparent);
  background-size: 0;
}

.fb-nav--services .fb-nav__link--more {
  display: flex;
  align-items: center;
  gap: 4px;
  color: var(--fb-accent);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.1em;
  line-height: 1.3;
  text-transform: uppercase;
}

.fb-nav--services .fb-nav__link--more:hover,
.fb-nav--services .fb-nav__link--more:focus-visible {
  color: var(--fb-accent);
}

.fb-nav__more-label,
.fb-nav__more-arrow {
  display: inline-block;
  transition: transform 420ms var(--fb-ease);
}

.fb-nav__more-arrow {
  width: 11px;
  height: 8px;
}

.fb-nav__more-arrow svg {
  display: block;
  width: 100%;
  height: 100%;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-nav--services .fb-nav__link--more:hover .fb-nav__more-label,
  .fb-nav--services .fb-nav__link--more:focus-visible .fb-nav__more-label {
    transform: translateX(4px);
  }

  .fb-nav--services .fb-nav__link--more:hover .fb-nav__more-arrow,
  .fb-nav--services .fb-nav__link--more:focus-visible .fb-nav__more-arrow {
    transform: translateX(8px);
  }
}

/* Homepage v1 and inner pages: one overlay bar, photo runs to the top of the viewport. */
@media (min-width: 901px) {
  body:is(.fb-home, .fb-page) .fb-header {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    background: transparent;
  }

  body:is(.fb-home, .fb-page) .fb-header__badge {
    margin-top: 36px;
    width: clamp(110px, 10.4vw, 140px);
    height: clamp(110px, 10.4vw, 140px);
    font-size: 12px;
  }

  body:is(.fb-home, .fb-page) .fb-nav--primary .fb-nav__link,
  body:is(.fb-home, .fb-page) .fb-header__dropdown-btn {
    color: var(--fb-paper);
  }

  body:is(.fb-home, .fb-page) .fb-nav--primary .fb-nav__link:hover,
  body:is(.fb-home, .fb-page) .fb-nav--primary .fb-nav__link:focus-visible,
  body:is(.fb-home, .fb-page) .fb-header__dropdown-btn:hover,
  body:is(.fb-home, .fb-page) .fb-header__dropdown-btn:focus-visible,
  body:is(.fb-home, .fb-page) .fb-nav--primary .fb-nav__link[aria-current="page"],
  body:is(.fb-home, .fb-page) .fb-header__dropdown-btn.is-current {
    color: var(--fb-accent);
  }

  body:is(.fb-home, .fb-page) .fb-hero {
    border-top: 0;
    min-height: 760px;
  }

  body:is(.fb-home, .fb-page) .fb-hero__media,
  body:is(.fb-home, .fb-page) .fb-hero__scrim {
    inset: 0;
  }

  /* Photo itself dissolves into the cream on the left. The dissolve
     starts after the title column, so the fade does not sit on the type. */
  body:is(.fb-home, .fb-page) .fb-hero__media {
    -webkit-mask-image: linear-gradient(
      to right,
      transparent 0%,
      transparent 16%,
      rgba(0, 0, 0, 0.18) 30%,
      rgba(0, 0, 0, 0.45) 44%,
      rgba(0, 0, 0, 0.82) 60%,
      #000 74%
    );
    mask-image: linear-gradient(
      to right,
      transparent 0%,
      transparent 16%,
      rgba(0, 0, 0, 0.18) 30%,
      rgba(0, 0, 0, 0.45) 44%,
      rgba(0, 0, 0, 0.82) 60%,
      #000 74%
    );
  }

  /* Slides sit at z-index 1, so the overlay has to sit above them. */
  body:is(.fb-home, .fb-page) .fb-hero__scrim {
    z-index: 1;
    background:
      linear-gradient(
        to left,
        rgba(58, 42, 28, 0.72) 0%,
        rgba(58, 42, 28, 0.3) 46%,
        rgba(58, 42, 28, 0) 78%
      );
  }

  body:is(.fb-home, .fb-page) .fb-hero__mark {
    z-index: 2;
  }

  body:is(.fb-home, .fb-page) .fb-hero__body {
    padding-top: 148px;
  }

  /* Cream stays under the logo and title (an L). The dissolve sits
     past the type, so the fade is not on the letters. A dark fade on
     ::after still covers the top of the photo so the white menu stays
     readable. Same on home 1 and 2. */
  body:is(.fb-home, .fb-page) .fb-hero__scrim::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(
      to right,
      var(--fb-room) 0%,
      var(--fb-room) 24%,
      rgba(252, 248, 242, 0.88) 38%,
      rgba(252, 248, 242, 0.5) 52%,
      rgba(252, 248, 242, 0.18) 66%,
      rgba(252, 248, 242, 0) 80%
    );
    -webkit-mask-image:
      linear-gradient(to right, #000 0%, #000 11%, transparent 20%),
      linear-gradient(to bottom, transparent 0%, transparent 10%, #000 28%);
    mask-image:
      linear-gradient(to right, #000 0%, #000 11%, transparent 20%),
      linear-gradient(to bottom, transparent 0%, transparent 10%, #000 28%);
    -webkit-mask-composite: source-over;
    mask-composite: add;
  }

  body:is(.fb-home, .fb-page) .fb-hero__scrim::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(
      to bottom,
      rgba(58, 42, 28, 0.84) 0%,
      rgba(58, 42, 28, 0.52) 92px,
      rgba(58, 42, 28, 0.18) 150px,
      rgba(58, 42, 28, 0) 210px
    );
    -webkit-mask-image: linear-gradient(
      to right,
      transparent 0%,
      transparent 10%,
      rgba(0, 0, 0, 0.22) 16%,
      rgba(0, 0, 0, 0.62) 24%,
      rgba(0, 0, 0, 0.92) 34%,
      #000 46%
    );
    mask-image: linear-gradient(
      to right,
      transparent 0%,
      transparent 10%,
      rgba(0, 0, 0, 0.22) 16%,
      rgba(0, 0, 0, 0.62) 24%,
      rgba(0, 0, 0, 0.92) 34%,
      #000 46%
    );
  }

  body.fb-home.fb-home--sitemap .fb-sitemap__cols .fb-sitemap__heading {
    color: var(--fb-paper);
    text-shadow: 0 1px 10px rgba(58, 42, 28, 0.42);
  }

  body.fb-home.fb-home--sitemap .fb-sitemap__cols .fb-sitemap__heading:hover,
  body.fb-home.fb-home--sitemap .fb-sitemap__cols .fb-sitemap__heading:focus-visible,
  body.fb-home.fb-home--sitemap .fb-sitemap__cols .fb-sitemap__heading[aria-current="page"] {
    color: var(--fb-accent);
  }

  body.fb-home.fb-home--sitemap .fb-header--mega:is(
    :has(.fb-mega-slot:hover),
    :has(.fb-mega-slot:focus-within),
    [data-mega="true"],
    [data-open="true"],
    :target
  ) .fb-sitemap__cols .fb-sitemap__heading {
    color: var(--fb-navy);
    text-shadow: none;
  }

  body.fb-home.fb-home--sitemap .fb-header--mega:is(
    :has(.fb-mega-slot:hover),
    :has(.fb-mega-slot:focus-within),
    [data-mega="true"],
    [data-open="true"],
    :target
  ) .fb-sitemap__cols .fb-sitemap__heading:hover,
  body.fb-home.fb-home--sitemap .fb-header--mega:is(
    :has(.fb-mega-slot:hover),
    :has(.fb-mega-slot:focus-within),
    [data-mega="true"],
    [data-open="true"],
    :target
  ) .fb-sitemap__cols .fb-sitemap__heading:focus-visible,
  body.fb-home.fb-home--sitemap .fb-header--mega:is(
    :has(.fb-mega-slot:hover),
    :has(.fb-mega-slot:focus-within),
    [data-mega="true"],
    [data-open="true"],
    :target
  ) .fb-sitemap__cols .fb-sitemap__heading[aria-current="page"] {
    color: var(--fb-accent);
  }

  /* Laptop and down: the photo sits further under the nav, so the
     top fade has to cover the labels and the open pulldown. */
  @media (max-width: 1400px) {
    body:is(.fb-home, .fb-page) .fb-hero__scrim::after {
      background: linear-gradient(
        to bottom,
        rgba(58, 42, 28, 0.84) 0%,
        rgba(58, 42, 28, 0.52) 200px,
        rgba(58, 42, 28, 0.22) 340px,
        rgba(58, 42, 28, 0) 480px
      );
    }
  }

  /* Type-only hero: no photo wash, no cream L, no top fade. */
  body:is(.fb-home, .fb-page) .fb-hero--panel .fb-hero__scrim {
    background: none;
  }

  body:is(.fb-home, .fb-page) .fb-hero--panel .fb-hero__scrim::before,
  body:is(.fb-home, .fb-page) .fb-hero--panel .fb-hero__scrim::after {
    content: none;
  }

  /* Homepage v1 and inner pages: a beige shelf the width of the
     menu, dark oval drop onto the photo. Dropdowns hang from the
     lip. Home 2 keeps the mega menu. The first pass was
     espresso-on-espresso and disappeared in the hero wash. */
  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-header__navs {
    --fb-shelf-nudge: 14px;
    isolation: isolate;
    overflow: visible;
  }

  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-header__navs::before {
    content: "";
    position: absolute;
    left: -132px;
    right: -88px;
    top: calc(100% + var(--fb-shelf-nudge));
    z-index: 20;
    height: 3px;
    pointer-events: none;
    border-radius: 1px;
    background: linear-gradient(
      to bottom,
      rgba(252, 248, 242, 0.72),
      rgba(180, 156, 108, 0.55) 55%,
      rgba(58, 42, 28, 0.7)
    );
    box-shadow: 0 1px 0 rgba(20, 12, 6, 0.45);
    -webkit-mask-image: linear-gradient(
      to right,
      transparent 0%,
      #000 10%,
      #000 90%,
      transparent 100%
    );
    mask-image: linear-gradient(
      to right,
      transparent 0%,
      #000 10%,
      #000 90%,
      transparent 100%
    );
  }

  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-header__navs::after {
    content: "";
    position: absolute;
    left: -108px;
    right: -64px;
    top: calc(100% + var(--fb-shelf-nudge));
    z-index: 0;
    height: 44px;
    pointer-events: none;
    background: radial-gradient(
      ellipse 72% 100% at 50% 0%,
      rgba(20, 12, 6, 0.58) 0%,
      rgba(20, 12, 6, 0.28) 38%,
      rgba(20, 12, 6, 0.08) 62%,
      transparent 78%
    );
  }

  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-header__dropdown,
  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-nav--primary {
    z-index: 3;
  }

  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-header__dropdown::before {
    height: calc(var(--fb-shelf-nudge) + 4px);
  }

  body:is(.fb-home, .fb-page):not(.fb-home--sitemap) .fb-nav--services {
    top: calc(100% + var(--fb-shelf-nudge));
  }
}

/* Inner pages without a photograph: white opening under a solid header. */
body.fb-page:has(.fb-hero--panel) .fb-header {
  background: #fff;
}

@media (min-width: 901px) {
  body.fb-page:has(.fb-hero--panel) .fb-header {
    position: relative;
  }

  body.fb-page:has(.fb-hero--panel) .fb-nav--primary .fb-nav__link,
  body.fb-page:has(.fb-hero--panel) .fb-header__dropdown-btn {
    color: var(--fb-espresso);
  }

  body.fb-page:has(.fb-hero--panel) .fb-nav--primary .fb-nav__link:hover,
  body.fb-page:has(.fb-hero--panel) .fb-nav--primary .fb-nav__link:focus-visible,
  body.fb-page:has(.fb-hero--panel) .fb-header__dropdown-btn:hover,
  body.fb-page:has(.fb-hero--panel) .fb-header__dropdown-btn:focus-visible,
  body.fb-page:has(.fb-hero--panel) .fb-nav--primary .fb-nav__link[aria-current="page"],
  body.fb-page:has(.fb-hero--panel) .fb-header__dropdown-btn.is-current {
    color: var(--fb-accent);
  }

  body.fb-page:has(.fb-hero--panel) .fb-hero {
    z-index: 1;
    min-height: 0;
  }
}

/* — mega menu (homepage 2): menu-1 headings stay put, extras draw in — */

.fb-header--mega {
  overflow: visible;
  padding-top: 14px;
}

.fb-header--mega .fb-header__bar {
  position: relative;
  z-index: 2;
  align-items: flex-start;
  padding-bottom: 10px;
}

.fb-header--mega .fb-header__brand {
  position: relative;
  z-index: 3;
}

.fb-header--mega .fb-mega-slot {
  position: absolute;
  left: 16.5rem;
  right: 8.75rem;
  width: calc((100% - 16.5rem - 8.75rem - 2rem) * 4 / 5);
  min-width: 0;
  margin-left: auto;
  margin-right: auto;
  padding: 8px 32px 0;
}

.fb-header--mega .fb-header__badge {
  margin-left: auto;
}

.fb-header--mega .fb-mega-slot::before {
  content: "";
  position: absolute;
  top: -14px;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 0;
  background: color-mix(in srgb, var(--fb-paper) 82%, transparent);
  box-shadow:
    0 0 14px color-mix(in srgb, var(--fb-paper) 45%, transparent),
    0 0 28px color-mix(in srgb, var(--fb-accent) 10%, transparent);
  -webkit-backdrop-filter: blur(12px) saturate(1.05);
  backdrop-filter: blur(12px) saturate(1.05);
  opacity: 0;
  pointer-events: none;
  transition:
    opacity 280ms ease,
    box-shadow 280ms ease;
}

.fb-header--mega:is(
  :has(.fb-mega-slot:hover),
  :has(.fb-mega-slot:focus-within),
  [data-mega="true"],
  [data-open="true"],
  :target
) .fb-mega-slot::before {
  opacity: 1;
}

.fb-header--mega .fb-sitemap__cols,
.fb-header--mega .fb-mega {
  position: relative;
  z-index: 1;
}

.fb-header--mega .fb-sitemap__cols {
  grid-template-columns: 1fr auto 1fr;
  justify-content: stretch;
  justify-items: center;
  gap: 8px 32px;
  width: 100%;
  max-width: 100%;
  margin-inline: 0;
}

.fb-header--mega .fb-sitemap__col {
  width: max-content;
  max-width: 100%;
}

.fb-header--mega .fb-sitemap__link:not(.fb-sitemap__link--more) {
  display: block;
}

.fb-header--mega .fb-mega {
  display: grid;
  grid-template-rows: 0fr;
  pointer-events: none;
  transition: grid-template-rows 560ms var(--fb-ease);
}

.fb-header--mega .fb-mega__draw {
  overflow: hidden;
  min-height: 0;
}

.fb-header--mega:is(
  :has(.fb-mega-slot:hover),
  :has(.fb-mega-slot:focus-within),
  [data-mega="true"],
  [data-open="true"],
  :target
) .fb-mega {
  grid-template-rows: 1fr;
  pointer-events: auto;
}

.fb-sitemap__cols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px 36px;
  padding: 0 0 4px;
}

.fb-sitemap__heading {
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  appearance: none;
  -webkit-appearance: none;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 22px;
  letter-spacing: 0.04em;
  line-height: 1.15;
  text-align: left;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--fb-navy);
  white-space: nowrap;
  cursor: pointer;
  transition: color 200ms ease;
}

a.fb-sitemap__heading {
  cursor: pointer;
}

.fb-sitemap__reveal {
  display: grid;
  grid-template-rows: 0fr;
  overflow: hidden;
  transition: grid-template-rows 560ms var(--fb-ease);
}

.fb-sitemap__reveal > * {
  min-height: 0;
}

.fb-header--mega:is(
  :has(.fb-mega-slot:hover),
  :has(.fb-mega-slot:focus-within),
  [data-mega="true"],
  [data-open="true"],
  :target
) .fb-sitemap__reveal {
  grid-template-rows: 1fr;
}

.fb-sitemap__list {
  margin: 0;
  padding: 26px 0 8px;
  list-style: none;
}

.fb-sitemap__list li + li {
  margin-top: 4px;
}

.fb-sitemap__link {
  display: inline-block;
  font-family: var(--fb-font-ui);
  font-weight: 400;
  font-size: 14px;
  letter-spacing: 0;
  line-height: 1.4;
  text-transform: none;
  color: var(--fb-espresso);
  text-decoration: none;
  padding-bottom: 2px;
  background-image: linear-gradient(var(--fb-accent), var(--fb-accent));
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 2px;
  transition:
    color 200ms ease,
    background-size 280ms var(--fb-ease),
    transform 320ms var(--fb-ease);
}

.fb-sitemap__link:hover,
.fb-sitemap__link:focus-visible,
.fb-sitemap__link[aria-current="page"] {
  color: var(--fb-accent);
  background-size: 100% 2px;
}

.fb-sitemap__link--more {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding-bottom: 0;
  background-image: none;
  color: var(--fb-accent);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.1em;
  line-height: 1.3;
  text-transform: uppercase;
  white-space: nowrap;
}

.fb-sitemap__link--more:hover,
.fb-sitemap__link--more:focus-visible,
.fb-sitemap__link--more[aria-current="page"] {
  color: var(--fb-accent);
}

.fb-sitemap__more-label,
.fb-sitemap__more-arrow {
  display: inline-block;
  transition: transform 420ms var(--fb-ease);
}

.fb-sitemap__more-arrow {
  width: 11px;
  height: 8px;
}

.fb-sitemap__more-arrow svg {
  display: block;
  width: 100%;
  height: 100%;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-sitemap__link:not(.fb-sitemap__link--more):hover,
  .fb-sitemap__link:not(.fb-sitemap__link--more):focus-visible {
    transform: translateX(8px);
  }

  .fb-sitemap__link--more:hover .fb-sitemap__more-label,
  .fb-sitemap__link--more:focus-visible .fb-sitemap__more-label {
    transform: translateX(4px);
  }

  .fb-sitemap__link--more:hover .fb-sitemap__more-arrow,
  .fb-sitemap__link--more:focus-visible .fb-sitemap__more-arrow {
    transform: translateX(8px);
  }
}

.fb-sitemap__bottom {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 16px;
  min-height: 0;
  padding: 8px 0 14px;
}

.fb-sitemap__bottom > .fb-sitemap__heading {
  margin: 0;
  text-align: right;
}

.fb-sitemap__social {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 0;
}

.fb-sitemap__social a {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: var(--fb-navy);
  color: var(--fb-paper);
  transition:
    background-color 200ms ease,
    color 200ms ease;
}

.fb-sitemap__social a:hover,
.fb-sitemap__social a:focus-visible {
  background: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-sitemap__social svg {
  width: 16px;
  height: 16px;
}

.fb-header--mega .fb-sitemap__list,
.fb-header--mega .fb-sitemap__bottom {
  opacity: 0;
  transform: translateY(-10px);
  transition:
    opacity 380ms var(--fb-ease),
    transform 480ms var(--fb-ease);
}

.fb-header--mega .fb-sitemap__col:nth-child(1) .fb-sitemap__list { transition-delay: 70ms; }
.fb-header--mega .fb-sitemap__col:nth-child(2) .fb-sitemap__list { transition-delay: 110ms; }
.fb-header--mega .fb-sitemap__col:nth-child(3) .fb-sitemap__list { transition-delay: 150ms; }
.fb-header--mega .fb-sitemap__bottom { transition-delay: 220ms; }

.fb-header--mega:is(
  :has(.fb-mega-slot:hover),
  :has(.fb-mega-slot:focus-within),
  [data-mega="true"],
  [data-open="true"],
  :target
) .fb-sitemap__list,
.fb-header--mega:is(
  :has(.fb-mega-slot:hover),
  :has(.fb-mega-slot:focus-within),
  [data-mega="true"],
  [data-open="true"],
  :target
) .fb-sitemap__bottom {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .fb-header--mega .fb-mega,
  .fb-header--mega .fb-mega-slot::before,
  .fb-header--mega .fb-sitemap__reveal,
  .fb-header--mega .fb-sitemap__list,
  .fb-header--mega .fb-sitemap__bottom,
  .fb-sitemap__link,
  .fb-sitemap__more-label,
  .fb-sitemap__more-arrow {
    transition: none;
    transform: none;
  }
}

/* — hero — */

.fb-hero {
  position: relative;
  z-index: 4;
  min-height: 640px;
  border-top: 1px solid var(--fb-line);
}

body:is(.fb-home, .fb-page) .fb-hero {
  border-top: 0;
}

.fb-hero__media {
  position: absolute;
  inset: 0 0 0 max(400px, 34%);
  overflow: hidden;
  -webkit-mask-image: linear-gradient(
    to right,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.28) 30%,
    rgba(0, 0, 0, 1) 62%
  );
  mask-image: linear-gradient(
    to right,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.28) 30%,
    rgba(0, 0, 0, 1) 62%
  );
}

.fb-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fb-hero__slides {
  position: absolute;
  inset: 0;
}

.fb-hero__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}

.fb-hero__slide.is-active,
.fb-hero__slide.is-entering,
.fb-hero__slide.is-leaving {
  opacity: 1;
}

.fb-hero__slide.is-active {
  z-index: 1;
}

.fb-hero__slide.is-leaving {
  z-index: 1;
}

/* Diagonal seam between two still photos, travelling left to right. */
.fb-hero__slide.is-entering {
  z-index: 2;
  -webkit-mask-image: linear-gradient(
    108deg,
    #000 0%,
    #000 40%,
    rgba(0, 0, 0, 0.35) 50%,
    transparent 62%,
    transparent 100%
  );
  mask-image: linear-gradient(
    108deg,
    #000 0%,
    #000 40%,
    rgba(0, 0, 0, 0.35) 50%,
    transparent 62%,
    transparent 100%
  );
  -webkit-mask-size: 250% 160%;
  mask-size: 250% 160%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  animation: fb-hero-wipe 1.15s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}

@keyframes fb-hero-wipe {
  from {
    -webkit-mask-position: 100% 50%;
    mask-position: 100% 50%;
  }

  to {
    -webkit-mask-position: 0% 50%;
    mask-position: 0% 50%;
  }
}

/* Hero without a photograph: the right half becomes a brand panel carrying an
   oversized mark, so the composition still has a subject. */
.fb-hero__panel {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: linear-gradient(148deg, var(--fb-beige) 0%, #ddd4c6 46%, var(--fb-tan) 100%);
}

.fb-hero__panel img {
  position: absolute;
  right: 3%;
  top: 50%;
  transform: translateY(-50%);
  height: 94%;
  width: auto;
  opacity: 0.5;
}

.fb-hero--panel .fb-hero__body {
  padding-bottom: 130px;
}

.fb-hero__scrim {
  position: absolute;
  inset: 0 0 0 max(400px, 34%);
  pointer-events: none;
  background: linear-gradient(
    to left,
    rgba(58, 42, 28, 0.72) 0%,
    rgba(58, 42, 28, 0.3) 46%,
    rgba(58, 42, 28, 0) 78%
  );
}

.fb-hero__mark {
  position: absolute;
  right: 40px;
  bottom: 118px;
  height: clamp(140px, 20.3vw, 260px);
  width: auto;
  overflow: visible;
  pointer-events: none;
}

.fb-hero__body {
  position: relative;
  z-index: 2;
  padding: 30px var(--fb-pad) 110px;
  max-width: 800px;
}

.fb-hero__kicker {
  color: var(--fb-accent);
  letter-spacing: var(--fb-tracking-ui);
  margin-bottom: 34px;
}

.fb-hero__title {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  font-size: clamp(44px, 8vw, 108px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
  text-transform: none;
  /* Tight cream halo, close to the glyphs. */
  filter:
    drop-shadow(0 0 3px var(--fb-room))
    drop-shadow(0 0 8px color-mix(in srgb, var(--fb-room) 65%, transparent));
}

.fb-hero__title span,
.fb-hero__title .fb-title__mask {
  display: block;
  width: max-content;
  white-space: nowrap;
}

.fb-hero__foot {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 40px;
  align-items: end;
  margin-top: 46px;
}

.fb-hero__intro {
  font-family: var(--fb-font-body);
  font-weight: 300;
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  color: var(--fb-copy);
  max-width: 38ch;
}

.fb-hero__badge,
.fb-laptop__cta {
  position: relative;
  display: flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: clamp(122px, 11.9vw, 158px);
  height: clamp(122px, 11.9vw, 158px);
  border-radius: 999px;
  background: var(--fb-accent);
  color: var(--fb-paper);
  text-align: center;
  text-decoration: none;
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  line-height: 1.25;
  text-transform: uppercase;
  isolation: isolate;
  border: 0;
  cursor: pointer;
  appearance: none;
  box-shadow:
    0 16px 32px rgba(58, 42, 28, 0.22),
    0 4px 10px rgba(58, 42, 28, 0.12);
  transition:
    background-color 240ms ease,
    color 240ms ease,
    scale 480ms var(--fb-ease),
    rotate 480ms var(--fb-ease),
    box-shadow 480ms var(--fb-ease);
}

.fb-hero__badge::before,
.fb-laptop__cta::before {
  content: "";
  position: absolute;
  inset: -14px;
  border: 1px dashed var(--fb-tan);
  border-radius: 999px;
  animation: fb-spin 22s linear infinite, fb-ring-pulse 3.2s ease-in-out infinite;
  transition:
    inset 480ms var(--fb-ease),
    border-color 240ms ease,
    border-style 240ms ease;
}

.fb-hero__badge::after,
.fb-laptop__cta::after {
  content: "";
  position: absolute;
  inset: 16%;
  z-index: -1;
  border-radius: 999px;
  background: var(--fb-paper);
  opacity: 0;
  transform: scale(0.4);
  transition:
    transform 480ms var(--fb-ease),
    opacity 240ms ease;
}

.fb-hero__badge:hover,
.fb-hero__badge:focus-visible,
.fb-laptop__cta:hover,
.fb-laptop__cta:focus-visible {
  background: var(--fb-espresso);
  color: var(--fb-paper);
  box-shadow: 0 22px 46px rgba(255, 106, 46, 0.42);
}

.fb-hero__badge {
  animation: fb-cta-float-hero 4.2s ease-in-out infinite;
  will-change: translate;
}

.fb-hero__badge:hover,
.fb-hero__badge:focus-visible {
  animation-play-state: paused;
  scale: 1.1;
  rotate: -8deg;
}

.fb-hero__badge:hover::before,
.fb-hero__badge:focus-visible::before,
.fb-laptop__cta:hover::before,
.fb-laptop__cta:focus-visible::before {
  inset: -22px;
  border-style: solid;
  border-color: var(--fb-accent);
  animation:
    fb-spin 7s linear infinite,
    fb-ring-pulse 3.2s ease-in-out infinite;
}

.fb-hero__badge:hover::after,
.fb-hero__badge:focus-visible::after,
.fb-laptop__cta:hover::after,
.fb-laptop__cta:focus-visible::after {
  opacity: 0.16;
  transform: scale(1);
}

/* — marquee band — */

.fb-marquee {
  position: absolute;
  left: -8%;
  right: -8%;
  bottom: -44px;
  z-index: 3;
  padding: 18px 0;
  background: var(--fb-navy-hi);
  transform: rotate(-1.2deg);
  overflow: hidden;
  animation: fb-marquee-tilt 30s ease-in-out infinite alternate;
  animation-delay: -15s;
}

.fb-marquee__track {
  display: flex;
  width: max-content;
  align-items: center;
  animation: fb-marquee 30s linear infinite;
}

.fb-marquee__item {
  margin: 0 22px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(26px, 3.6vw, 48px);
  letter-spacing: -0.03em;
  color: var(--fb-paper);
  white-space: nowrap;
}

.fb-marquee__dot {
  font-size: 16px;
  color: var(--fb-accent);
}

@keyframes fb-marquee {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}

/* Rest pose is -1.2deg. The delay starts the swing at that midpoint. */
@keyframes fb-marquee-tilt {
  from {
    transform: rotate(-1.8deg);
  }
  to {
    transform: rotate(-0.6deg);
  }
}

@keyframes fb-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* Independent `scale` so the ring can breathe without fighting the spin. */
@keyframes fb-ring-pulse {
  from,
  to {
    scale: 0.96;
  }

  50% {
    scale: 1.07;
  }
}

/* — services index — */

.fb-index__head {
  padding: 176px var(--fb-pad) 88px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: baseline;
  gap: 18px 40px;
}

.fb-index__head .fb-label {
  flex: none;
  white-space: nowrap;
}

.fb-index__heading {
  font-size: var(--fb-size-section);
  line-height: var(--fb-section-lh);
  letter-spacing: var(--fb-tracking-display);
  text-align: center;
}

.fb-index__list {
  padding-bottom: 0;
}

[data-fb-index] {
  --fb-p: 1;
  --fb-index-tight: 16px;
  --fb-index-spread: 32px;
}

.fb-index__row {
  --fb-i: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  column-gap: 28px;
  padding: 16px var(--fb-pad);
  position: relative;
  text-decoration: none;
  color: var(--fb-espresso);
  transition: background-color 420ms ease;
}

.fb-index__row::before,
.fb-index__row:last-child::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--fb-line);
  pointer-events: none;
}

.fb-index__row::before {
  top: 0;
}

.fb-index__row:last-child::after {
  bottom: 0;
}

.fb-index__row.fb-reveal {
  /* Rows keep their own padding motion. Do not start at opacity 0:
     that hide lives on .fb-reveal, and index rows are excluded from
     the IntersectionObserver that would otherwise reveal them. */
  opacity: 1;
  transform: none;
  transition: background-color 420ms ease;
}

@media (prefers-reduced-motion: no-preference) {
  html.fb-js [data-fb-index] .fb-index__row {
    --fb-p: 0;
    padding-block: calc(
      var(--fb-index-tight) + (var(--fb-index-spread) - var(--fb-index-tight)) * (1 - var(--fb-p, 0))
    );
    transform: none;
  }
}

.fb-index__row:nth-child(even) {
  flex-direction: row-reverse;
}

.fb-index__row:hover,
.fb-index__row:focus-visible {
  background: var(--fb-mist);
}

.fb-index__title {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(32px, 5.94vw, 84px);
  line-height: 0.92;
  letter-spacing: -0.05em;
  text-transform: uppercase;
  color: var(--fb-navy);
}

.fb-index__text {
  align-self: center;
  flex: 0 0 34ch;
  width: 34ch;
  max-width: 34ch;
  font-family: var(--fb-font-body);
  font-weight: 300;
  font-size: var(--fb-size-copy);
  line-height: 1.35;
  color: var(--fb-copy);
  text-align: left;
  transition: transform 1.15s cubic-bezier(0.33, 0, 0.2, 1);
}

.fb-index__row:nth-child(even) .fb-index__text {
  text-align: right;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-index__row:hover .fb-index__text,
  .fb-index__row:focus-visible .fb-index__text {
    transform: translateX(36px);
  }

  .fb-index__row:nth-child(even):hover .fb-index__text,
  .fb-index__row:nth-child(even):focus-visible .fb-index__text {
    transform: translateX(-36px);
  }
}

/* — work — */

.fb-work {
  padding: var(--fb-section-y) 0 0;
}

/* Homepage: the last dienst line is the seam. Do not add a second
   band of cream before “Het werk”. Inner pages keep section-y. */
body.fb-home .fb-index + .fb-work {
  padding-top: 0;
}

.fb-work__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 0;
  padding: 48px 0 8px;
}

.fb-work__heading {
  font-size: clamp(40px, 7.5vw, 106px);
  line-height: 0.86;
  letter-spacing: var(--fb-tracking-display);
}

.fb-textlink {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 15px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  text-decoration: none;
  white-space: nowrap;
  transform-origin: right center;
  transition:
    color 320ms var(--fb-ease),
    transform 420ms var(--fb-ease);
}

.fb-textlink__label {
  display: inline-block;
}

.fb-textlink__arrow {
  display: inline-block;
  transition: transform 420ms var(--fb-ease);
}

.fb-textlink:hover,
.fb-textlink:focus-visible {
  color: var(--fb-accent);
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-textlink:hover,
  .fb-textlink:focus-visible {
    transform: scale(1.05);
  }

  .fb-textlink:hover .fb-textlink__arrow,
  .fb-textlink:focus-visible .fb-textlink__arrow,
  .fb-blog__row:hover .fb-blog__arrow,
  .fb-blog__row:focus-visible .fb-blog__arrow,
  .fb-posts__card:hover .fb-posts__more-arrow,
  .fb-posts__card:focus-visible .fb-posts__more-arrow,
  a.fb-dienstgrid__item:hover .fb-dienstgrid__arrow,
  a.fb-dienstgrid__item:focus-visible .fb-dienstgrid__arrow,
  .fb-digest__more:hover .fb-digest__more-arrow,
  .fb-digest__more:focus-visible .fb-digest__more-arrow,
  .fb-laptop__nav[data-fb-laptop-next]:hover svg,
  .fb-laptop__nav[data-fb-laptop-next]:focus-visible svg {
    transform: translateX(8px);
  }

  .fb-digest__file:hover .fb-digest__photo,
  .fb-digest__file:focus-within .fb-digest__photo {
    transform: scale(1.04);
  }

  .fb-laptop__nav[data-fb-laptop-prev]:hover svg,
  .fb-laptop__nav[data-fb-laptop-prev]:focus-visible svg {
    transform: translateX(-8px);
  }

  .fb-pager__link[rel="next"]:hover svg,
  .fb-pager__link[rel="next"]:focus-visible svg {
    transform: translateX(8px);
  }

  .fb-pager__link[rel="prev"]:hover svg,
  .fb-pager__link[rel="prev"]:focus-visible svg {
    transform: translateX(-8px);
  }

  .fb-pager__link[data-fb-pager-next]:not(:disabled):hover svg,
  .fb-pager__link[data-fb-pager-next]:not(:disabled):focus-visible svg {
    transform: translateX(8px);
  }

  .fb-pager__link[data-fb-pager-prev]:not(:disabled):hover svg,
  .fb-pager__link[data-fb-pager-prev]:not(:disabled):focus-visible svg {
    transform: translateX(-8px);
  }

  .fb-posts__card:hover .fb-posts__photo,
  .fb-posts__card:focus-visible .fb-posts__photo {
    opacity: 0.5;
  }

  .fb-posts__card:hover .fb-posts__mast:not(:has(.fb-posts__mast-label)) .fb-posts__photo,
  .fb-posts__card:focus-visible .fb-posts__mast:not(:has(.fb-posts__mast-label)) .fb-posts__photo {
    opacity: 1;
  }
}

.fb-work__grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 20px;
  align-items: start;
}

.fb-work__item {
  margin: 0;
}

.fb-work__item:nth-child(1) {
  grid-column: 1 / span 7;
  grid-row: 1;
  padding-right: 110px;
}

.fb-work__item:nth-child(2) {
  grid-column: 7 / span 6;
  grid-row: 1;
  margin-top: 250px;
  position: relative;
  z-index: 2;
}

.fb-work__item:nth-child(3) {
  grid-column: 2 / span 5;
  grid-row: 2;
  margin-top: 60px;
  position: relative;
  z-index: 3;
}

.fb-work__visual {
  display: block;
  overflow: hidden;
  height: 430px;
  transition: transform 640ms var(--fb-ease);
}

/* Stand-in tile while a case has no visual: the mark, cropped a little
   differently per case so the three do not read as one repeated block. */
.fb-work__mark {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: linear-gradient(158deg, var(--fb-beige) 0%, #ddd4c6 100%);
}

.fb-work__mark img {
  position: absolute;
  left: 50%;
  top: 50%;
  height: 150%;
  width: auto;
  opacity: 0.6;
  transform: translate(-50%, -50%);
}

.fb-work__item:nth-child(2) .fb-work__mark img {
  left: 22%;
  height: 190%;
}

.fb-work__item:nth-child(3) .fb-work__mark img {
  left: 78%;
  height: 210%;
}

.fb-work__item:nth-child(2) .fb-work__visual {
  height: 320px;
}

.fb-work__item:nth-child(3) .fb-work__visual {
  height: 260px;
}

.fb-work__item:hover .fb-work__visual {
  transform: scale(1.04);
}

.fb-work__visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fb-work__caption {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--fb-line);
}

.fb-work__title {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(22px, 2.5vw, 34px);
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-work__item:not(:first-child) .fb-work__title {
  font-size: clamp(20px, 2.03vw, 28px);
}

.fb-work__tags {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  text-align: right;
}

/* — laptop cases (scroll sequence) — */

.fb-laptop {
  --fb-screen-x: 22.85%;
  --fb-screen-y: 17.35%;
  --fb-screen-w: 54.35%;
  --fb-screen-h: 63.2%;
  /* Edge-only fade: stays outside the open laptop (~17% inset). */
  --fb-laptop-feather-x: 10%;
  --fb-laptop-feather-y: 8%;
  --fb-laptop-rise: 0;
  /* Title stays in flow. This gap keeps any display font off the lid. */
  --fb-work-laptop-gap: clamp(36px, 4.5vw, 72px);
  height: 300vh;
}

body.fb-page .fb-work {
  padding-top: calc(var(--fb-section-y) / 2);
}

/* Case detail: shorter track, compact pin that rises to full viewport. */
.fb-laptop:not(.is-scroll) {
  height: 200vh;
}

.fb-laptop__pin {
  position: sticky;
  top: calc((1 - var(--fb-laptop-rise, 0)) * 32svh);
  display: flex;
  flex-direction: column;
  height: calc(68svh + var(--fb-laptop-rise, 0) * 32svh);
  padding: 0;
}

.fb-laptop .fb-work__head {
  position: relative;
  z-index: 4;
  flex: 0 0 auto;
  padding: 48px var(--fb-pad) var(--fb-work-laptop-gap);
}

.fb-laptop__stage {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  z-index: 1;
  display: grid;
  place-items: center;
  padding: 0 clamp(6px, 1vw, 16px);
  container-type: size;
  container-name: fb-laptop-stage;
}

.fb-laptop__device {
  position: relative;
  width: min(1680px, 100%);
  aspect-ratio: 1440 / 811;
  margin-inline: auto;
}

/* Fit the frame in the leftover height so case copy never covers the laptop. */
@container fb-laptop-stage (min-height: 1px) {
  .fb-laptop__device {
    width: min(1680px, 100%, calc(100cqh * 1440 / 811));
  }
}

/* Phone: the MacBook sits in ~66% of the frame, so 148% width brings it
   almost to the page edge. No extra sticky track: the next section
   follows the laptop instead of leaving a cream gap. */
@media (max-width: 720px) {
  .fb-laptop,
  .fb-laptop:not(.is-scroll) {
    height: auto;
    --fb-laptop-feather-x: 0%;
    --fb-laptop-feather-y: 6%;
  }

  .fb-laptop__pin {
    position: relative;
    top: auto;
    height: auto;
  }

  .fb-laptop .fb-work__head {
    position: relative;
    padding: 28px var(--fb-pad) var(--fb-work-laptop-gap);
  }

  .fb-laptop__stage {
    container-type: normal;
    flex: none;
    overflow: hidden;
    padding: 0 0 88px;
  }

  .fb-laptop__device {
    width: 148%;
    margin-inline: -24%;
  }

  .fb-laptop.is-scroll:not(.is-single) .fb-laptop__nav {
    display: flex;
  }
}

/* Soften the cropped frame on all four sides without touching the laptop. */
.fb-laptop__device::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  background:
    linear-gradient(
      to right,
      var(--fb-room) 0%,
      transparent var(--fb-laptop-feather-x),
      transparent calc(100% - var(--fb-laptop-feather-x)),
      var(--fb-room) 100%
    ),
    linear-gradient(
      to bottom,
      var(--fb-room) 0%,
      transparent var(--fb-laptop-feather-y),
      transparent calc(100% - var(--fb-laptop-feather-y)),
      var(--fb-room) 100%
    );
}

.fb-laptop__seq,
.fb-laptop__canvas {
  display: block;
  width: 100%;
  height: 100%;
}

.fb-laptop__canvas {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
}

.fb-laptop.is-ready .fb-laptop__canvas {
  opacity: 1;
}

.fb-laptop.is-ready .fb-laptop__seq {
  opacity: 0;
}

.fb-laptop__screen {
  position: absolute;
  left: var(--fb-screen-x);
  top: var(--fb-screen-y);
  z-index: 4;
  width: var(--fb-screen-w);
  height: var(--fb-screen-h);
  overflow: hidden;
  border-radius: 1.1% / 1.3%;
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease;
}

.fb-laptop.is-open .fb-laptop__screen {
  opacity: 1;
}

.fb-laptop__shot {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  opacity: 0;
  pointer-events: none;
}

.fb-laptop__shot img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.fb-laptop__shot--logo {
  display: grid;
  place-items: center;
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
}

.fb-laptop__shot--logo.has-logo-bg {
  background:
    radial-gradient(
      ellipse at 50% 42%,
      color-mix(in srgb, var(--fb-logo-bg) 86%, #fff) 0%,
      var(--fb-logo-bg) 54%,
      color-mix(in srgb, var(--fb-logo-bg) 76%, #000) 100%
    );
}

.fb-laptop__brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  width: 100%;
  height: 100%;
}

.fb-laptop__logo {
  display: block;
  width: min(62%, 520px);
  height: min(46%, 220px);
  background-color: var(--fb-room);
  -webkit-mask: var(--fb-logo) center / contain no-repeat;
  mask: var(--fb-logo) center / contain no-repeat;
  pointer-events: none;
}

.fb-laptop__logo-name {
  max-width: 80%;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(22px, 2.8vw, 42px);
  line-height: 0.95;
  letter-spacing: var(--fb-tracking-display);
  text-align: center;
  color: var(--fb-paper);
}

.fb-laptop__soon {
  margin: 0;
  font-family: var(--fb-font-body);
  font-size: clamp(11px, 1.05vw, 14px);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fb-paper);
  opacity: 0.82;
}

.fb-laptop__shot.is-active,
.fb-laptop__shot.is-entering,
.fb-laptop__shot.is-leaving {
  opacity: 1;
}

.fb-laptop__shot.is-leaving {
  z-index: 1;
}

.fb-laptop__shot.is-active {
  z-index: 1;
}

.fb-laptop__shot.is-entering {
  z-index: 2;
  -webkit-mask-image: linear-gradient(
    90deg,
    #000 0%,
    #000 40%,
    rgba(0, 0, 0, 0.35) 50%,
    transparent 62%,
    transparent 100%
  );
  mask-image: linear-gradient(
    90deg,
    #000 0%,
    #000 40%,
    rgba(0, 0, 0, 0.35) 50%,
    transparent 62%,
    transparent 100%
  );
  -webkit-mask-size: 280% 100%;
  mask-size: 280% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  animation: fb-laptop-wipe 700ms cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}

@keyframes fb-laptop-wipe {
  from {
    -webkit-mask-position: 100% 50%;
    mask-position: 100% 50%;
  }

  to {
    -webkit-mask-position: 0% 50%;
    mask-position: 0% 50%;
  }
}

.fb-laptop__shot[data-fb-compare] {
  --fb-compare: 52%;
}

.fb-laptop.is-open .fb-laptop__shot[data-fb-compare].is-active {
  pointer-events: auto;
  cursor: ew-resize;
  touch-action: none;
}

.fb-laptop__before {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  clip-path: inset(0 calc(100% - var(--fb-compare)) 0 0);
  pointer-events: none;
}

.fb-laptop__compare-label {
  position: absolute;
  bottom: 10px;
  z-index: 4;
  padding: 5px 8px;
  border-radius: 2px;
  background: color-mix(in srgb, var(--fb-navy) 78%, transparent);
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--fb-tracking-ui);
  line-height: 1;
  text-transform: uppercase;
  color: var(--fb-paper);
  pointer-events: none;
  white-space: nowrap;
}

.fb-laptop__compare-label.is-before {
  left: 10px;
}

.fb-laptop__compare-label.is-after {
  right: 10px;
}

.fb-laptop__compare-rule {
  position: absolute;
  top: 0;
  bottom: 0;
  left: var(--fb-compare);
  z-index: 3;
  width: 2px;
  background: var(--fb-paper);
  transform: translateX(-50%);
  pointer-events: none;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--fb-navy) 18%, transparent);
}

.fb-laptop__compare-handle {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--fb-tan);
  border-radius: 999px;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  cursor: ew-resize;
  pointer-events: auto;
  transform: translate(-50%, -50%);
}

.fb-laptop__compare-handle:hover,
.fb-laptop__compare-handle:focus-visible {
  background: var(--fb-accent);
  border-color: var(--fb-accent);
  color: var(--fb-paper);
  outline: none;
}

.fb-laptop__compare-handle svg {
  display: block;
  width: 18px;
  height: 18px;
}

.fb-laptop__nav {
  position: absolute;
  top: calc(var(--fb-screen-y) + var(--fb-screen-h) * 0.5);
  z-index: 6;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--fb-accent);
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  scale: 0.86;
  transition:
    color 220ms ease,
    opacity 220ms ease,
    scale 420ms var(--fb-ease);
}

.fb-laptop__nav[data-fb-laptop-prev] {
  left: calc(var(--fb-screen-x) - 1.4% - 6px);
  transform: translate(-100%, -50%);
}

.fb-laptop__nav[data-fb-laptop-next] {
  left: calc(var(--fb-screen-x) + var(--fb-screen-w) + 1.4% + 6px);
  transform: translateY(-50%);
}

.fb-laptop__nav svg {
  display: block;
  width: 48px;
  height: 48px;
  transition: transform 420ms var(--fb-ease);
}

.fb-laptop.is-open .fb-laptop__nav {
  opacity: 1;
  pointer-events: auto;
  scale: 1;
}

.fb-laptop.is-single .fb-laptop__nav,
.fb-laptop.is-single .fb-laptop__index {
  display: none;
}

.fb-laptop__nav:hover,
.fb-laptop__nav:focus-visible {
  color: var(--fb-accent-dark);
}

.fb-laptop__meta {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(var(--fb-screen-y) + var(--fb-screen-h) + 9%);
  z-index: 5;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
  padding: 0 var(--fb-pad);
  opacity: 0;
  pointer-events: none;
  transform: translateY(16px);
  transition:
    opacity 280ms ease,
    transform 480ms var(--fb-ease);
}

.fb-laptop.is-open .fb-laptop__meta {
  opacity: 1;
  pointer-events: auto;
  transform: none;
}

.fb-laptop__copy {
  text-align: center;
}

.fb-laptop__index {
  margin-bottom: 8px;
  color: var(--fb-tan-deep);
}

.fb-laptop__title {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(28px, 3.6vw, 48px);
  line-height: 1;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-laptop__flip {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(12px, 1.8vw, 20px);
}

.fb-laptop__flip .fb-laptop__title {
  min-width: 0;
}

.fb-laptop__case-nav {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid var(--fb-tan);
  border-radius: 999px;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  text-decoration: none;
  transition:
    background-color 220ms ease,
    color 220ms ease,
    border-color 220ms ease;
}

.fb-laptop__case-nav:hover,
.fb-laptop__case-nav:focus-visible {
  background: var(--fb-accent);
  border-color: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-laptop__case-nav svg {
  display: block;
  width: 20px;
  height: 20px;
  transition: transform 420ms var(--fb-ease);
}

.fb-laptop__tags {
  margin-top: 8px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-laptop__cta {
  /* Overlaps the lid's top-right corner, then lifts with shadow.
     Translate lives in custom properties so the float keyframes
     keep the mobile inset instead of snapping back to desktop. */
  --fb-cta-x: -42%;
  --fb-cta-y: -56%;
  position: absolute;
  top: calc(var(--fb-screen-y) - 2.2%);
  left: calc(var(--fb-screen-x) + var(--fb-screen-w) + 1.5%);
  right: auto;
  z-index: 5;
  width: clamp(96px, 8.6vw, 128px);
  height: clamp(96px, 8.6vw, 128px);
  font-size: 11px;
  letter-spacing: var(--fb-tracking-ui);
  opacity: 0;
  pointer-events: none;
  translate: var(--fb-cta-x) var(--fb-cta-y);
  transition:
    background-color 240ms ease,
    color 240ms ease,
    scale 480ms var(--fb-ease),
    rotate 480ms var(--fb-ease),
    box-shadow 480ms var(--fb-ease),
    opacity 220ms ease;
}

.fb-laptop.is-open .fb-laptop__cta {
  opacity: 1;
  pointer-events: auto;
  animation: fb-cta-float 4.2s ease-in-out infinite;
  will-change: translate;
}

.fb-laptop.is-open .fb-laptop__cta:hover,
.fb-laptop.is-open .fb-laptop__cta:focus-visible {
  animation-play-state: paused;
  scale: 1.1;
  rotate: -8deg;
}

@keyframes fb-cta-float {
  from,
  to {
    translate: var(--fb-cta-x) var(--fb-cta-y);
  }

  50% {
    translate: var(--fb-cta-x) calc(var(--fb-cta-y) - 8px);
  }
}

@keyframes fb-cta-float-hero {
  from,
  to {
    translate: 0 0;
  }

  50% {
    translate: 0 -8px;
  }
}

.fb-laptop__cta span {
  position: relative;
  z-index: 1;
}

/* — clients — */

.fb-clients {
  background: var(--fb-beige-fill);
  padding: var(--fb-section-y) 0;
  overflow: hidden;
}

.fb-clients__label {
  margin: 0 auto 40px;
  padding-inline: var(--fb-pad);
  max-width: 18em;
  font-size: clamp(32px, 4.2vw, 58px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
  text-align: center;
  text-wrap: balance;
}

.fb-clients__label:has(+ .fb-clients__intro) {
  margin-bottom: 18px;
}

.fb-clients__intro {
  /* ch, not rem: html is 62.5% so 36rem was a 200px column after padding. */
  width: min(76ch, calc(100% - (2 * var(--fb-pad))));
  margin: 0 auto 28px;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  text-align: center;
  color: var(--fb-copy);
}

.fb-clients__more {
  display: flex;
  justify-content: center;
  margin-top: 20px;
  padding-inline: var(--fb-pad);
}

.fb-clients:has(+ .fb-reviews-classic) {
  padding-bottom: clamp(72px, 9vw, 128px);
}

.fb-clients__viewport {
  overflow: hidden;
  padding-block: 28px;
  -webkit-mask-image: linear-gradient(
    to right,
    transparent,
    #000 4%,
    #000 96%,
    transparent
  );
  mask-image: linear-gradient(
    to right,
    transparent,
    #000 4%,
    #000 96%,
    transparent
  );
}

.fb-clients__track {
  display: flex;
  width: max-content;
  align-items: center;
  animation: fb-marquee 88s linear infinite;
}

.fb-clients__set {
  display: flex;
  align-items: center;
  gap: 72px;
  padding-right: 72px;
}

.fb-clients__item {
  position: relative;
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  height: 56px;
  padding: 0 20px;
}

a.fb-clients__item {
  color: inherit;
  text-decoration: none;
}

.fb-clients__set .fb-clients__item {
  flex: 0 0 252px;
  width: 252px;
  height: 112px;
  padding: 0;
}

.fb-clients__item img {
  max-height: 44px;
  max-width: 140px;
  width: auto;
  height: auto;
  object-fit: contain;
  transform-origin: center center;
  transition: transform 720ms cubic-bezier(0.22, 1, 0.36, 1);
}

.fb-clients__set .fb-clients__item img {
  max-height: 72px;
  max-width: 78%;
}

/* Tan PNGs recast to accent navy. Scoped to the ticker so chips stay gold. */
.fb-clients .fb-clients__item img {
  filter: brightness(0) invert(20%) sepia(30%) saturate(1400%) hue-rotate(180deg) brightness(85%) contrast(85%);
}

.fb-clients .fb-clients__name {
  color: var(--fb-navy-hi);
}

.fb-clients__item:hover,
.fb-clients__item:focus-within {
  z-index: 1;
}

.fb-clients__item:hover img,
.fb-clients__item:focus-within img,
.fb-clients__item:hover .fb-clients__name,
.fb-clients__item:focus-within .fb-clients__name {
  transform: scale(1.22);
}

/* Stand-in for a client with no logo file: the name as a wordmark. */
.fb-clients__name {
  display: inline-block;
  padding-inline: 8px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(17px, 1.6vw, 23px);
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  text-align: center;
  color: var(--fb-tan-deep);
  transform-origin: center center;
  transition: transform 720ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* — google reviews — */

.fb-reviews {
  --fb-p: 0.42;
  --fb-rest: 0.42;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  clip-path: inset(0);
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
  color: var(--fb-paper);
}

.fb-reviews__pin {
  position: relative;
  overflow: visible;
}

.fb-reviews__stage {
  position: relative;
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  grid-template-rows: auto minmax(0, 1fr);
  column-gap: clamp(8px, 0.9vw, 16px);
  min-height: 100vh;
  overflow: visible;
  padding: 32px var(--fb-pad) 40px;
  perspective: 1400px;
  perspective-origin: 50% 42%;
  transform-style: preserve-3d;
}

.fb-reviews__bar {
  grid-column: 1 / -1;
  grid-row: 1;
  position: relative;
  z-index: 4;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.fb-reviews__pill {
  display: inline-flex;
  align-items: center;
  height: 34px;
  padding: 0 16px;
  border: 1px solid rgba(255, 248, 242, 0.22);
  border-radius: 999px;
  background: rgba(255, 248, 242, 0.08);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-paper);
}

.fb-reviews__backdrop {
  grid-column: 3 / 6;
  grid-row: 2;
  align-self: stretch;
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 0;
  padding: 0 4%;
  text-align: center;
  pointer-events: none;
}

.fb-reviews .fb-reviews__heading {
  max-width: 12ch;
  width: 100%;
  font-size: clamp(45px, 5.7vw, 93px);
  line-height: var(--fb-section-lh);
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-paper);
}

.fb-reviews__heading .fb-strong {
  color: var(--fb-accent);
  white-space: nowrap;
}

.fb-reviews__intro {
  max-width: 36ch;
  width: 100%;
  margin-top: 22px;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.75;
  color: rgba(255, 248, 242, 0.72);
}

.fb-reviews__score-wrap {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  min-width: min(260px, 100%);
}

.fb-reviews__score {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
  padding: 14px 18px;
  border: 1px solid rgba(255, 248, 242, 0.2);
  border-radius: 20px;
  background: rgba(255, 248, 242, 0.1);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  text-decoration: none;
  color: var(--fb-paper);
  box-shadow: inset 0 1px 0 rgba(255, 248, 242, 0.16);
  transition: background-color 220ms ease;
}

.fb-reviews__score:hover,
.fb-reviews__score:focus-visible {
  background: rgba(255, 248, 242, 0.18);
}

.fb-reviews__maps {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  text-align: right;
  color: rgba(255, 248, 242, 0.7);
  text-decoration: none;
}

.fb-reviews__maps:hover,
.fb-reviews__maps:focus-visible {
  color: var(--fb-accent);
}

.fb-reviews__score-value {
  font-family: var(--fb-font-display);
  font-weight: 700;
  font-size: clamp(32px, 3.4vw, 46px);
  line-height: 0.9;
  letter-spacing: var(--fb-tracking-display);
  font-variant-numeric: tabular-nums;
}

.fb-reviews__score-copy {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  gap: 6px;
}

.fb-reviews__score-meta {
  font-size: 13px;
  line-height: 1.4;
  color: rgba(255, 248, 242, 0.68);
}

.fb-reviews__stars {
  display: flex;
  gap: 2px;
  color: var(--fb-accent);
}

.fb-reviews__stars svg {
  display: block;
  width: 16px;
  height: 16px;
}

.fb-reviews__g {
  display: block;
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  margin-bottom: auto;
}

.fb-reviews__float {
  grid-column: 1 / -1;
  grid-row: 2;
  z-index: 1;
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: 1fr 1fr 1fr;
  align-items: stretch;
  min-height: 0;
  pointer-events: none;
  transform-style: preserve-3d;
}

.fb-reviews__card {
  --fb-dy: -80vh;
  --fb-z: 40px;
  --fb-ry: 0deg;
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  width: auto;
  padding: 12px 12px 10px;
  border: 1px solid rgba(255, 248, 242, 0.22);
  border-radius: 22px;
  background: rgba(23, 38, 63, 0.22);
  -webkit-backdrop-filter: blur(32px) saturate(1.45);
  backdrop-filter: blur(32px) saturate(1.45);
  box-shadow:
    inset 0 1px 0 rgba(255, 248, 242, 0.18),
    0 22px 48px rgba(8, 14, 28, 0.22);
  color: var(--fb-paper);
  font-family: var(--fb-font-ui);
  z-index: 3;
  pointer-events: auto;
  transform-origin: center 40%;
  transform:
    translate3d(0, calc((var(--fb-p) - var(--fb-rest)) * var(--fb-dy)), var(--fb-z))
    rotateY(var(--fb-ry))
    rotateX(calc((var(--fb-rest) - var(--fb-p)) * 8deg));
  backface-visibility: hidden;
  will-change: transform;
}

.fb-reviews__card:nth-child(1) {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
  --fb-dy: -28vh;
  --fb-z: 56px;
  --fb-ry: 12deg;
}

.fb-reviews__card:nth-child(2) {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  --fb-dy: -44vh;
  --fb-z: 88px;
  --fb-ry: 7deg;
}

.fb-reviews__card:nth-child(3) {
  grid-column: 3;
  grid-row: 3;
  align-self: end;
  --fb-dy: 62vh;
  --fb-z: 150px;
  --fb-ry: 4deg;
}

.fb-reviews__card:nth-child(4) {
  grid-column: 5;
  grid-row: 1;
  align-self: start;
  --fb-dy: -38vh;
  --fb-z: 42px;
  --fb-ry: -5deg;
}

.fb-reviews__card:nth-child(5) {
  grid-column: 6;
  grid-row: 3;
  align-self: end;
  --fb-dy: 54vh;
  --fb-z: 124px;
  --fb-ry: -8deg;
}

.fb-reviews__card:nth-child(6) {
  grid-column: 7;
  grid-row: 2;
  align-self: center;
  --fb-dy: 22vh;
  --fb-z: 10px;
  --fb-ry: -12deg;
}

.fb-reviews__who {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.fb-reviews__avatar {
  display: flex;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--fb-accent);
  color: var(--fb-paper);
  font-family: var(--fb-font-display);
  font-weight: 600;
  font-size: 14px;
}

.fb-reviews__who-copy {
  min-width: 0;
  flex: 1;
}

.fb-reviews__name {
  font-family: var(--fb-font-display);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.fb-reviews__when {
  margin-top: 4px;
  font-size: 12px;
  color: rgba(255, 248, 242, 0.62);
}

.fb-reviews__card .fb-reviews__stars {
  margin-top: 10px;
}

.fb-reviews__quote {
  margin-top: 8px;
  font-family: var(--fb-font-ui);
  font-weight: 300;
  font-size: 14px;
  line-height: 1.45;
  color: rgba(255, 248, 242, 0.88);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

.fb-reviews__more {
  display: flex;
  margin-top: 10px;
  padding-top: 0;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: rgba(255, 248, 242, 0.7);
  white-space: nowrap;
}

.fb-reviews__more:hover {
  color: var(--fb-accent);
}

.fb-reviews__write {
  position: relative;
  z-index: 4;
  margin-top: 28px;
  pointer-events: auto;
}

.fb-reviews__card .fb-reviews__g {
  width: 20px;
  height: 20px;
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .fb-reviews__pill,
  .fb-reviews__score,
  .fb-reviews__card {
    background: var(--fb-navy);
  }
}

@media (prefers-reduced-transparency: reduce) {
  .fb-reviews__pill,
  .fb-reviews__score,
  .fb-reviews__card {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    background: var(--fb-navy);
  }
}

/* — google reviews: classic score + quotes — */

.fb-reviews-classic {
  background: var(--fb-beige-fill);
  color: var(--fb-navy);
  padding: 8px var(--fb-pad) var(--fb-section-y);
}

.fb-reviews-classic__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 36px;
  max-width: 1280px;
  margin: 0 auto;
}

.fb-reviews-classic__heading {
  margin: 0;
  max-width: 14ch;
  font-size: clamp(32px, 4.2vw, 58px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
  text-align: center;
  text-wrap: balance;
}

.fb-reviews-classic__score {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 12px 18px;
  width: 100%;
  max-width: 52rem;
  padding: 16px 22px;
  border: 1px solid color-mix(in srgb, var(--fb-navy) 10%, transparent);
  border-radius: 18px;
  background: var(--fb-paper);
}

.fb-reviews-classic__g {
  display: block;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}

.fb-reviews-classic__value {
  margin: 0;
  font-family: var(--fb-font-display);
  font-weight: 700;
  font-size: clamp(28px, 2.8vw, 36px);
  line-height: 0.9;
  letter-spacing: var(--fb-tracking-display);
  font-variant-numeric: tabular-nums;
  color: var(--fb-navy);
}

.fb-reviews-classic__stars {
  display: flex;
  gap: 2px;
  color: var(--fb-accent);
}

.fb-reviews-classic__stars svg {
  display: block;
  width: 16px;
  height: 16px;
}

.fb-reviews-classic__meta {
  margin: 0;
  font-size: 14px;
  line-height: 1.4;
  color: var(--fb-tan-deep);
  white-space: nowrap;
}

.fb-reviews-classic__maps {
  margin-left: auto;
}

.fb-reviews-classic__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--fb-gap);
  align-items: stretch;
  width: 100%;
}

.fb-reviews-classic__card {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  min-width: 0;
  padding: 20px 20px 18px;
  border: 1px solid color-mix(in srgb, var(--fb-navy) 10%, transparent);
  border-radius: 18px;
  background: var(--fb-paper);
  color: var(--fb-navy);
}

.fb-reviews-classic__who {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.fb-reviews-classic__avatar {
  display: flex;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--fb-accent);
  color: var(--fb-paper);
  font-family: var(--fb-font-display);
  font-weight: 600;
  font-size: 14px;
}

.fb-reviews-classic__who-copy {
  min-width: 0;
  flex: 1;
}

.fb-reviews-classic__name {
  display: block;
  margin: 0;
  font-family: var(--fb-font-display);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.fb-reviews-classic__when {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--fb-tan-deep);
  white-space: nowrap;
}

.fb-reviews-classic__card .fb-reviews-classic__stars {
  margin-top: 12px;
}

.fb-reviews-classic__quote {
  display: block;
  flex: 1;
  margin: 8px 0 0;
  font-family: var(--fb-font-body);
  font-weight: 300;
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  color: var(--fb-copy);
}

.fb-reviews-classic__more {
  display: flex;
  margin-top: auto;
  padding-top: 14px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  text-decoration: none;
  white-space: nowrap;
}

.fb-reviews-classic__more:hover,
.fb-reviews-classic__more:focus-visible {
  color: var(--fb-accent);
}

.fb-reviews-classic__write {
  display: flex;
  justify-content: center;
}

@media (max-width: 1100px) {
  .fb-reviews-classic__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .fb-clients:has(+ .fb-reviews-classic) {
    padding-bottom: 72px;
  }

  .fb-reviews-classic {
    padding-block: 8px 80px;
  }

  .fb-reviews-classic__inner {
    gap: 28px;
  }

  .fb-reviews-classic__score {
    flex-direction: column;
    text-align: center;
    padding: 18px 16px;
  }

  .fb-reviews-classic__maps {
    margin-left: 0;
  }

  .fb-reviews-classic__meta {
    white-space: normal;
  }

  .fb-reviews-classic__grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* — approach — */

.fb-approach {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-approach__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  margin-bottom: 64px;
}

.fb-approach__heading {
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-approach__intro {
  align-self: end;
  font-family: var(--fb-font-body);
  font-weight: 300;
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  color: var(--fb-copy);
}

.fb-approach__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--fb-gap);
  align-items: stretch;
}

.fb-approach__grid:has(> :nth-child(1):last-child) {
  grid-template-columns: minmax(0, 1fr);
  max-width: 28rem;
}

.fb-approach__grid:has(> :nth-child(2):last-child) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.fb-approach__grid:has(> :nth-child(3):last-child) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fb-approach__grid:has(> :nth-child(4):last-child) {
  grid-template-columns: 1.2fr 0.9fr 0.9fr 1.2fr;
}

.fb-approach__grid:has(> :nth-child(n+5)) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fb-approach__item {
  position: relative;
  z-index: 0;
  display: flex;
  flex-direction: column;
  align-self: stretch;
  min-width: 0;
}

.fb-approach__item:hover,
.fb-approach__item:focus-within {
  z-index: 2;
}

.fb-approach__tilt {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  align-self: stretch;
  padding: var(--fb-card-pad) var(--fb-card-pad) calc(var(--fb-card-pad) + 12px);
  overflow: hidden;
  border-radius: 24px;
  transform-style: preserve-3d;
  transform: perspective(900px) rotateX(0deg) rotateY(0deg) scale(1);
  box-shadow: 0 18px 44px rgba(23, 38, 63, 0.08);
  will-change: transform;
}

.fb-approach__shine {
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  opacity: 0;
}

.fb-approach__item--0 {
  color: var(--fb-navy);
}

.fb-approach__item--0 .fb-approach__tilt {
  background: #fff1e6;
}

.fb-approach__item--1 {
  color: var(--fb-navy);
}

.fb-approach__item--1 .fb-approach__tilt {
  background: #e7edf6;
}

.fb-approach__item--2 {
  color: var(--fb-espresso);
}

.fb-approach__item--2 .fb-approach__tilt {
  background: #f3ebe0;
}

.fb-approach__item--3 {
  color: var(--fb-accent-dark);
}

.fb-approach__item--3 .fb-approach__tilt {
  background: var(--fb-paper);
}

.fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(1) {
  grid-column: 1 / 3;
}

.fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(2) {
  grid-column: 3 / 5;
  margin-top: 52px;
}

.fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(3) {
  grid-column: 1 / 3;
  width: 88%;
  justify-self: end;
}

.fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(4) {
  grid-column: 3 / 5;
}

.fb-approach__copy {
  position: relative;
  z-index: 1;
  display: flex;
  flex: 1;
  flex-direction: column;
}

.fb-approach__title {
  display: block;
  max-width: 16ch;
  min-width: 0;
  margin: 0;
  overflow-wrap: break-word;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(22px, 2.1vw, 30px);
  line-height: 1.05;
  letter-spacing: var(--fb-tracking-display);
  min-height: 2lh;
  color: var(--fb-navy);
}

.fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(1) .fb-approach__title,
.fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(4) .fb-approach__title {
  max-width: 13ch;
  font-size: clamp(24px, 2.6vw, 36px);
}

.fb-approach__text {
  max-width: 28em;
  margin: 0;
  padding-top: 20px;
  font-weight: 300;
  font-size: clamp(15px, 1.2vw, 17px);
  line-height: 1.7;
  color: var(--fb-tan-deep);
}

.fb-approach__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: auto;
  padding: 28px 0 0;
  list-style: none;
}

.fb-approach__tag {
  display: inline-flex;
  align-items: center;
  padding: 10px 14px;
  background: var(--fb-navy);
  color: var(--fb-paper);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(14px, 1.25vw, 16px);
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  text-decoration: none;
  white-space: nowrap;
  transition:
    background-color 200ms ease,
    color 200ms ease,
    box-shadow 200ms ease;
}

a.fb-approach__tag:hover,
a.fb-approach__tag:focus-visible {
  background: var(--fb-accent);
  color: var(--fb-paper);
  outline: none;
  box-shadow: 0 0 0 3px rgba(255, 106, 46, 0.16);
}

@media (prefers-reduced-motion: reduce) {
  .fb-approach__tilt {
    transform: none;
    will-change: auto;
  }

  .fb-approach__shine {
    display: none;
  }
}

/* — approach slides: stacked cards over a photo, next card peeking —

   Same four points as the columns above, one slide each. Smaller than
   the BeeToGreen health stack this follows. */

.fb-approach:has(+ .fb-slides) {
  padding-bottom: clamp(96px, 9vw, 128px);
}

.fb-slides {
  --fb-slides-ease: cubic-bezier(0.32, 0.08, 0.18, 1);
  --fb-slides-swap: 880ms;
  --fb-slides-photo: 1100ms;
  --fb-split: 0;
  position: relative;
  padding: clamp(32px, 3.2vw, 48px) var(--fb-pad) clamp(96px, 9vw, 128px);
}

.fb-slides__sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.fb-slides__scene {
  position: relative;
  overflow: visible;
  width: min(960px, 100%);
  min-height: 420px;
  margin-inline: auto;
  padding-bottom: 88px;
}

.fb-slides__photos {
  position: absolute;
  inset: 0 0 56px;
  overflow: hidden;
  border-radius: 28px;
}

.fb-slides__photo {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  transition: opacity var(--fb-slides-photo) var(--fb-slides-ease);
}

.fb-slides__photo.is-active {
  opacity: 1;
}

.fb-slides__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.05);
  transition: transform 1.6s var(--fb-slides-ease);
}

.fb-slides__photo.is-active img {
  transform: scale(1);
}

.fb-slides__photos::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(23, 38, 63, 0.18);
  pointer-events: none;
}

.fb-slides__stage {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 420px;
  padding: 48px 16px 72px;
}

.fb-slides__stack {
  position: relative;
  display: grid;
  container-type: inline-size;
  width: min(560px, 86%);
  min-height: 300px;
}

.fb-slides__card {
  grid-area: 1 / 1;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-self: stretch;
  min-width: 0;
  min-height: 300px;
  padding: var(--fb-card-pad) clamp(20px, 5cqi, 44px) calc(var(--fb-card-pad) + 12px);
  overflow: hidden;
  border-radius: 24px;
  text-align: center;
  user-select: none;
  touch-action: pan-y;
  box-shadow:
    0 28px 80px rgba(23, 38, 63, 0.32),
    0 8px 28px rgba(58, 42, 28, 0.16);
  transition:
    transform var(--fb-slides-swap) var(--fb-slides-ease),
    opacity var(--fb-slides-swap) var(--fb-slides-ease),
    box-shadow var(--fb-slides-swap) var(--fb-slides-ease);
}

.fb-slides__card--0 {
  color: var(--fb-accent);
  background: #fff1e6;
}

.fb-slides__card--1 {
  color: var(--fb-navy);
  background: #e7edf6;
}

.fb-slides__card--2 {
  color: var(--fb-espresso);
  background: #f3ebe0;
}

.fb-slides__card--3 {
  color: var(--fb-accent-dark);
  background: var(--fb-paper);
}

.fb-slides__card.is-active {
  z-index: 3;
  translate: 0 calc(var(--fb-split) * -14px);
  transform: translateY(0);
  opacity: 1;
}

.fb-slides__card.is-next {
  z-index: 2;
  translate: 0 calc(var(--fb-split) * 26px);
  transform: translateY(64%);
  opacity: 1;
  cursor: pointer;
}

.fb-slides__card.is-queued,
.fb-slides__card.is-prev {
  z-index: 1;
  pointer-events: none;
  opacity: 0;
}

.fb-slides__card.is-queued {
  translate: 0 calc(var(--fb-split) * 32px);
  transform: translateY(88%);
}

.fb-slides__card.is-prev {
  translate: 0 calc(var(--fb-split) * -22px);
  transform: translateY(-24%);
}

.fb-slides__mark {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(160px, 24vw, 240px);
  line-height: 0.8;
  letter-spacing: var(--fb-tracking-display);
  color: currentColor;
  opacity: 0.1;
  pointer-events: none;
}

.fb-slides__word {
  position: relative;
  z-index: 1;
  max-width: 100%;
  min-width: 0;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(22px, 8.8cqi, 52px);
  line-height: 0.95;
  letter-spacing: var(--fb-tracking-display);
  overflow-wrap: anywhere;
  hyphens: auto;
  color: var(--fb-accent);
}

.fb-slides__lead {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin-top: 10px;
  overflow-wrap: break-word;
  hyphens: manual;
  font-family: var(--fb-font-ui);
  font-weight: 700;
  font-size: clamp(16px, 1.7vw, 20px);
  line-height: 1.2;
  color: var(--fb-navy);
}

.fb-slides__text {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: min(28em, 100%);
  min-width: 0;
  margin: 14px auto 0;
  overflow-wrap: break-word;
  hyphens: manual;
  font-weight: 400;
  font-size: 15px;
  line-height: 1.55;
  color: var(--fb-navy);
  opacity: 0.88;
}

.fb-slides__nav {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid var(--fb-tan);
  border-radius: 999px;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  cursor: pointer;
  transition:
    background-color 220ms ease,
    color 220ms ease,
    border-color 220ms ease;
}

.fb-slides__nav svg {
  display: block;
  width: 20px;
  height: 20px;
}

.fb-slides__nav:hover,
.fb-slides__nav:focus-visible {
  background: var(--fb-accent);
  border-color: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-slides__index {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 16px;
  z-index: 4;
  display: flex;
  justify-content: center;
  gap: 8px;
  margin: 0;
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: currentColor;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--fb-slides-swap) var(--fb-slides-ease);
}

.fb-slides__card.is-active .fb-slides__index {
  opacity: 0.55;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-slides__nav:hover svg {
    transform: translateX(2px);
  }

  .fb-slides__nav[data-fb-slides-prev]:hover svg {
    transform: translateX(-2px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .fb-slides {
    --fb-split: 0;
  }

  .fb-slides__card,
  .fb-slides__photo,
  .fb-slides__photo img {
    transition: none;
  }

  .fb-slides__photo img {
    transform: none;
  }
}

@media (max-width: 720px) {
  .fb-approach:has(+ .fb-slides) {
    padding-bottom: 72px;
  }

  .fb-slides {
    padding: 24px var(--fb-pad) 80px;
  }

  .fb-slides__scene {
    min-height: 0;
    padding-bottom: 56px;
  }

  .fb-slides__photos {
    border-radius: 20px;
  }

  .fb-slides__stage {
    flex-wrap: wrap;
    gap: 16px;
    min-height: 0;
    padding: 36px 16px 56px;
  }

  .fb-slides__stack {
    width: min(560px, 100%);
    order: -1;
    min-height: 280px;
  }

  .fb-slides__card {
    min-height: 280px;
    padding: var(--fb-card-pad) 20px calc(var(--fb-card-pad) + 8px);
  }

  .fb-slides__word {
    font-size: clamp(22px, 7.2cqi, 36px);
  }

  .fb-slides__nav {
    width: 44px;
    height: 44px;
  }
}

/* — values: stacked words with overlapping photos — */

.fb-values {
  overflow: visible;
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-values__label {
  display: block;
  width: min(1120px, 100%);
  margin: 0 auto 8px;
}

.fb-values__stage {
  position: relative;
  width: min(1120px, 100%);
  margin-inline: auto;
  overflow: visible;
}

.fb-values__words {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  margin-inline: auto;
  padding: 72px 0 140px;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(42px, 9.2vw, 124px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
  text-align: center;
  color: var(--fb-navy);
}

.fb-values__word,
.fb-values__words .fb-title__mask {
  display: block;
  white-space: nowrap;
}

.fb-values__dot {
  color: var(--fb-accent);
  font-weight: 900;
  pointer-events: none;
  animation: fb-title-cursor 1.4s ease-in-out infinite;
}

.fb-values__photo {
  position: absolute;
  z-index: 2;
  margin: 0;
  overflow: hidden;
  border-radius: 16px;
  background: var(--fb-beige);
  pointer-events: none;
  will-change: transform;
}

.fb-values__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

.fb-values__photo--start {
  top: 48px;
  left: -6%;
  width: min(28vw, 300px);
  aspect-ratio: 5 / 4;
  transform-origin: 100% 80%;
}

.fb-values__photo--start img {
  object-position: 50% 42%;
}

.fb-values__photo--end {
  right: -4%;
  top: auto;
  bottom: 20px;
  width: min(22vw, 240px);
  aspect-ratio: 5 / 4;
  transform-origin: 0 80%;
}

.fb-values__photo--end img {
  object-position: 42% 48%;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-values__word {
    transition: color 280ms var(--fb-ease);
  }

  .fb-values__word:hover {
    color: var(--fb-accent);
  }
}

/* — bureau + team — */

.fb-bureau {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(300px, 1.12fr);
  gap: clamp(16px, 2vw, 28px);
  align-items: stretch;
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-bureau__copy {
  min-width: 0;
}

.fb-bureau .fb-break {
  display: grid;
  min-width: 0;
  min-height: 100%;
  padding: 0;
  overflow: visible;
  background: transparent;
}

.fb-bureau .fb-break__grid,
.fb-bureau .fb-break__grid:has(> :nth-child(2):last-child) {
  position: relative;
  display: block;
  min-height: clamp(520px, 56vw, 740px);
  height: 100%;
  overflow: visible;
}

.fb-bureau .fb-break__frame {
  position: absolute;
  z-index: 1;
  overflow: hidden;
  min-height: 0;
  margin: 0;
  will-change: transform;
}

.fb-bureau .fb-break__frame:nth-child(1) {
  top: 0;
  left: 0;
  width: 64%;
  height: 76%;
}

.fb-bureau .fb-break__frame:nth-child(2) {
  z-index: 2;
  right: 0;
  bottom: 0;
  width: 44%;
  height: 68%;
}

.fb-bureau .fb-break__frame:nth-child(n + 3) {
  display: none;
}

.fb-bureau .fb-break__frame img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: none;
  transition: none;
}

.fb-bureau .fb-break__frame:nth-child(1) img {
  object-position: 72% 42%;
}

.fb-bureau .fb-break__frame:nth-child(2) img {
  object-position: 42% 52%;
}

.fb-bureau .fb-break__frame.fb-reveal,
.fb-bureau .fb-break__frame.fb-reveal.is-visible {
  opacity: 1;
  transform: none;
}

.fb-bureau__label,
.fb-team__label {
  display: block;
  margin-bottom: 22px;
}

.fb-bureau__statement {
  max-width: none;
  margin-bottom: 22px;
  font-weight: 900;
  font-size: clamp(28px, 3.6vw, 48px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-bureau__text {
  max-width: 46ch;
  font-weight: 300;
  font-style: normal;
  font-size: var(--fb-size-copy);
  letter-spacing: var(--fb-tracking-body);
  line-height: 1.82;
  color: var(--fb-tan-deep);
}

.fb-team__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  padding: 28px 0;
  border-top: 1px solid var(--fb-line);
}

.fb-team__row:last-child {
  border-bottom: 1px solid var(--fb-line);
}

.fb-team__name {
  font-family: var(--fb-font-ui);
  font-weight: 700;
  font-size: clamp(24px, 2.66vw, 37px);
  line-height: 1;
  letter-spacing: 0;
  color: var(--fb-navy-hi);
}

.fb-team__role {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  text-align: right;
}

/* — crew: 40% copy, 60% portraits. Cards grow in width only. — */

.fb-crew {
  display: grid;
  grid-template-columns: 4fr 6fr;
  gap: clamp(28px, 4vw, 72px);
  align-items: center;
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-crew__aside {
  min-width: 0;
}

.fb-crew__label {
  display: block;
  margin-bottom: 18px;
}

.fb-crew__heading {
  font-size: clamp(32px, 4.2vw, 62px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-accent);
}

.fb-crew__text {
  max-width: 28ch;
  margin-top: 18px;
  font-weight: 300;
  font-size: var(--fb-size-copy);
  letter-spacing: var(--fb-tracking-body);
  line-height: 1.82;
  color: var(--fb-tan-deep);
}

.fb-crew__strip {
  --fb-crew-open: 4.6;
  --fb-crew-shut: 0.82;
  --fb-crew-gap: 8px;
  --fb-crew-n: 5;
  container-type: inline-size;
  display: flex;
  gap: var(--fb-crew-gap);
  height: clamp(360px, 62vh, 560px);
  min-width: 0;
}

.fb-crew__card {
  position: relative;
  display: block;
  flex: var(--fb-crew-shut) 1 0;
  min-width: 56px;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 16px;
  background: var(--fb-navy);
  color: var(--fb-paper);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: flex 0.7s var(--fb-ease);
}

.fb-crew__card.is-open {
  flex: var(--fb-crew-open) 1 0;
}

.fb-crew__card img {
  position: absolute;
  top: 0;
  left: 50%;
  height: 100%;
  width: calc(
    (100cqi - (var(--fb-crew-n) - 1) * var(--fb-crew-gap))
    * var(--fb-crew-open)
    / (var(--fb-crew-open) + var(--fb-crew-shut) * (var(--fb-crew-n) - 1))
  );
  max-width: none;
  object-fit: cover;
  object-position: center 32%;
  transform: translateX(-50%);
}

.fb-crew__card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(14, 25, 44, 0.82) 0%,
    rgba(14, 25, 44, 0.28) 36%,
    rgba(14, 25, 44, 0) 64%
  );
  pointer-events: none;
}

.fb-crew__spine,
.fb-crew__meta {
  position: absolute;
  z-index: 1;
  pointer-events: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.fb-crew__spine {
  left: 50%;
  bottom: 16px;
  writing-mode: vertical-rl;
  transform: translateX(-50%) rotate(180deg);
  transform-origin: center center;
  font-family: var(--fb-font-ui);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  opacity: 1;
  transition: opacity 0.55s var(--fb-ease) 0.12s;
}

.fb-crew__meta {
  right: 18px;
  bottom: 18px;
  left: 18px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
}

.fb-crew__name,
.fb-crew__role {
  opacity: 0;
  transform: translate3d(0, 10px, 0);
  transition:
    opacity 0.7s var(--fb-ease),
    transform 0.7s var(--fb-ease);
}

.fb-crew__name {
  max-width: 12ch;
  font-family: var(--fb-font-ui);
  font-weight: 700;
  font-size: clamp(22px, 2.2vw, 32px);
  line-height: 1.05;
  letter-spacing: 0;
}

.fb-crew__role {
  max-width: 11ch;
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-align: right;
  color: rgba(255, 248, 242, 0.78);
  transition-delay: 70ms;
}

.fb-crew__card.is-open .fb-crew__spine {
  opacity: 0;
  transition-delay: 0s;
  transition-duration: 0.28s;
}

.fb-crew__card.is-open .fb-crew__name,
.fb-crew__card.is-open .fb-crew__role {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.fb-crew__card:not(.is-open) .fb-crew__name,
.fb-crew__card:not(.is-open) .fb-crew__role {
  transition-duration: 0.28s;
  transition-delay: 0s;
}

.fb-crew__card:focus-visible {
  outline: 2px solid var(--fb-accent);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .fb-crew__card {
    flex: 1 1 0;
    min-width: 0;
    transition: none;
  }

  .fb-crew__spine {
    display: none;
  }

  .fb-crew__name,
  .fb-crew__role {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

@media (max-width: 860px) {
  .fb-crew {
    grid-template-columns: 1fr;
    gap: 28px;
    padding-block: 96px;
  }

  .fb-crew__strip {
    height: 380px;
  }

  .fb-crew__card {
    min-width: 40px;
  }
}

/* — gevel: pins in the centre, scroll eases through the drawing — */

.fb-gevel {
  --fb-p: 0;
  --fb-ink: 0;
  --fb-photo: 0;
  --fb-gevel-top: 16vh;
  min-height: 180vh;
  isolation: isolate;
}

.fb-gevel__pin {
  position: sticky;
  top: var(--fb-gevel-top);
  padding: 12px var(--fb-pad) 32px;
}

.fb-gevel__label {
  margin: 0 0 22px;
  color: var(--fb-tan-deep);
}

.fb-gevel__frame {
  position: relative;
  width: 100%;
  max-width: 1320px;
  margin-inline: auto;
}

.fb-gevel__reveal {
  position: relative;
  aspect-ratio: 1942 / 809;
}

.fb-gevel__photo,
.fb-gevel__svg {
  position: absolute;
}

.fb-gevel__svg {
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  color: var(--fb-espresso);
  pointer-events: none;
  mix-blend-mode: multiply;
  opacity: calc(1 - var(--fb-photo, 0));
}

.fb-gevel__photo {
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: fill;
  opacity: var(--fb-photo, 0);
  mix-blend-mode: multiply;
  --fb-soft: calc(18% + (1 - var(--fb-p)) * 20%);
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--fb-soft),
    #000 calc(100% - var(--fb-soft)),
    transparent 100%
  );
  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--fb-soft),
    #000 calc(100% - var(--fb-soft)),
    transparent 100%
  );
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: calc(var(--fb-p) * 100%) 100%;
  mask-size: calc(var(--fb-p) * 100%) 100%;
}

.fb-gevel__line {
  fill: none;
  stroke: currentColor;
  stroke-linecap: square;
  stroke-linejoin: miter;
  stroke-dasharray: 1;
  stroke-dashoffset: clamp(
    0,
    calc(1 - (var(--fb-ink) * 1.66 - var(--fb-d, 0)) / 0.28),
    1
  );
  opacity: 1;
}

/* — band: beige strip is a window onto a viewport-centred wordmark — */

.fb-band {
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
  min-height: 520px;
  padding: 80px var(--fb-pad) var(--fb-section-y);
  background: var(--fb-beige);
  border-top: 1px solid var(--fb-line);
  border-bottom: 1px solid var(--fb-line);
}

.fb-band__pin {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: min(100%, 640px);
}

.fb-band.is-pinned .fb-band__pin {
  position: fixed;
  inset: 0;
  width: auto;
  align-content: center;
  padding-bottom: 72px;
  pointer-events: none;
  clip-path: inset(var(--fb-clip-t, 100%) var(--fb-clip-r, 0px) var(--fb-clip-b, 100%) var(--fb-clip-l, 0px));
}

.fb-band.is-pinned .fb-logo {
  width: min(calc(100vw - 2 * var(--fb-pad)), 640px);
}

/* — full wordmark animation (homepage band) — */

.fb-logo {
  display: block;
  position: relative;
  z-index: 1;
  width: min(100%, 640px);
  height: auto;
  overflow: hidden;
  margin: 0;
}

.fb-logo__gold {
  fill: var(--fb-tan);
}

.fb-logo__ink {
  fill: var(--fb-espresso);
}

.fb-logo__from-left,
.fb-logo__from-right,
.fb-logo__bloom,
.fb-logo__rise {
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
}

.fb-logo.is-played .fb-logo__from-left {
  animation: fb-logo-left 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

.fb-logo.is-played .fb-logo__from-right {
  animation: fb-logo-right 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

.fb-logo.is-played .fb-logo__bloom {
  animation: fb-logo-bloom 1.3s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

.fb-logo.is-played .fb-logo__rise {
  animation: fb-logo-rise 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

@keyframes fb-logo-left {
  from {
    opacity: 0;
    transform: translateX(-70px);
    filter: blur(8px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-logo-right {
  from {
    opacity: 0;
    transform: translateX(70px);
    filter: blur(8px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-logo-bloom {
  from {
    opacity: 0;
    transform: scale(1.08);
    filter: blur(6px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-logo-rise {
  from {
    opacity: 0;
    transform: translateY(14px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.fb-header .fb-logo {
  height: clamp(38px, 3.9vw, 50px);
  width: auto;
  max-width: min(52vw, 240px);
  margin: 0;
  overflow: hidden;
}

.fb-header .fb-logo .fb-logo__from-left,
.fb-header .fb-logo .fb-logo__from-right,
.fb-header .fb-logo .fb-logo__bloom,
.fb-header .fb-logo .fb-logo__rise {
  opacity: 1;
}

.fb-header .fb-logo__rise {
  display: none;
}

@media (prefers-reduced-motion: no-preference) {
  .fb-header .fb-logo.is-played .fb-logo__from-left {
    animation: fb-header-logo-left 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) both;
    animation-delay: var(--fb-d, 0s);
  }

  .fb-header .fb-logo.is-played .fb-logo__from-right {
    animation: fb-header-logo-right 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) both;
    animation-delay: var(--fb-d, 0s);
  }

  .fb-header .fb-logo.is-played .fb-logo__bloom {
    animation: fb-header-logo-bloom 1.3s cubic-bezier(0.2, 0.8, 0.2, 1) both;
    animation-delay: var(--fb-d, 0s);
  }
}

@keyframes fb-header-logo-left {
  from {
    opacity: 0;
    transform: translateX(-18%);
    filter: blur(4px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-header-logo-right {
  from {
    opacity: 0;
    transform: translateX(18%);
    filter: blur(4px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-header-logo-bloom {
  from {
    opacity: 0;
    transform: scale(1.08);
    filter: blur(4px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

/* — hero brand mark (icon only, paper on the photo) — */

.fb-mark {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

.fb-mark.fb-hero__mark {
  width: auto;
  height: clamp(140px, 20.3vw, 260px);
}

.fb-hero__mark .fb-logo__gold {
  fill: var(--fb-paper);
}

.fb-mark .fb-logo__from-left,
.fb-mark .fb-logo__from-right,
.fb-mark .fb-logo__bloom {
  opacity: 1;
  transform-box: fill-box;
  transform-origin: center;
}

.fb-mark.is-armed .fb-logo__from-left,
.fb-mark.is-armed .fb-logo__from-right,
.fb-mark.is-armed .fb-logo__bloom {
  opacity: 0;
}

.fb-mark.is-looping .fb-logo__from-left,
.fb-mark.is-looping .fb-logo__from-right,
.fb-mark.is-looping .fb-logo__bloom {
  animation: none;
}

.fb-mark.is-played:not(.is-leaving) .fb-logo__from-left {
  animation: fb-mark-left 1.3s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

.fb-mark.is-played:not(.is-leaving) .fb-logo__from-right {
  animation: fb-mark-right 1.3s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

.fb-mark.is-played:not(.is-leaving) .fb-logo__bloom {
  animation: fb-mark-bloom 1.5s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  animation-delay: var(--fb-d, 0s);
}

.fb-mark.is-leaving .fb-logo__from-left {
  animation: fb-mark-left 1.3s cubic-bezier(0.2, 0.8, 0.2, 1) reverse both;
  animation-delay: calc(0.45s - var(--fb-d, 0s));
}

.fb-mark.is-leaving .fb-logo__from-right {
  animation: fb-mark-right 1.3s cubic-bezier(0.2, 0.8, 0.2, 1) reverse both;
  animation-delay: calc(0.45s - var(--fb-d, 0s));
}

.fb-mark.is-leaving .fb-logo__bloom {
  animation: fb-mark-bloom 1.5s cubic-bezier(0.2, 0.8, 0.2, 1) reverse both;
  animation-delay: calc(0.45s - var(--fb-d, 0s));
}

@keyframes fb-mark-left {
  from {
    opacity: 0;
    transform: translateX(-14%);
    filter: blur(6px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-mark-right {
  from {
    opacity: 0;
    transform: translateX(14%);
    filter: blur(6px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

@keyframes fb-mark-bloom {
  from {
    opacity: 0;
    transform: scale(1.08);
    filter: blur(6px);
  }

  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}

.fb-band::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 52%;
  pointer-events: none;
  background: linear-gradient(
    to bottom,
    rgba(180, 156, 108, 0) 0%,
    rgba(180, 156, 108, 0.08) 42%,
    rgba(138, 107, 76, 0.2) 100%
  );
}

.fb-band__label {
  position: absolute;
  z-index: 2;
  top: 28px;
}

.fb-band__label--left {
  left: var(--fb-pad);
}

.fb-band__label--right {
  right: var(--fb-pad);
}

/* — block wipe (section transition) —

   Orange pixel skyline between two sections, after the fill on
   runrobrun.com. --fb-p goes 0-1-0. Cells snap on from the bottom,
   then off in that same order (--fb-out flips the delay). */

.fb-blocks {
  --fb-p: 1;
  --fb-out: 0;
  --fb-cols: 10;
  --fb-rows: 3;
  --fb-cell: calc(100vw / var(--fb-cols));
  position: relative;
  height: calc(var(--fb-cell) * var(--fb-rows));
  overflow: hidden;
  pointer-events: none;
}

html.fb-js .fb-blocks {
  --fb-p: 0;
}

.fb-blocks__grid {
  display: grid;
  grid-template-columns: repeat(var(--fb-cols), var(--fb-cell));
  grid-template-rows: repeat(var(--fb-rows), var(--fb-cell));
  position: absolute;
  inset: 0;
  z-index: 1;
}

.fb-blocks__cell {
  --fb-use-d: calc(var(--d, 0) + var(--fb-out, 0) * (0.86 - 2 * var(--d, 0)));
  --fb-on: clamp(0, (var(--fb-p) - var(--fb-use-d)) / 0.1, 1);
  background: var(--fb-accent);
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  opacity: var(--fb-on);
  transform: scale(calc(0.9 + (var(--fb-on) * 0.1)));
  transform-origin: 50% 100%;
}

.fb-blocks__cell--photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.fb-blocks__dust {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.fb-blocks__speck {
  --fb-use-d: calc(var(--d, 0.7) + var(--fb-out, 0) * (0.86 - 2 * var(--d, 0.7)));
  --fb-on: clamp(0, (var(--fb-p) - var(--fb-use-d)) / 0.12, 1);
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: calc(var(--fb-cell) * var(--s, 0.3));
  height: calc(var(--fb-cell) * var(--s, 0.3));
  background: var(--fb-accent);
  opacity: var(--fb-on);
  transform: scale(var(--fb-on));
  transform-origin: 50% 100%;
}

/* — statement — */

.fb-statement {
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
  color: #fff;
  padding: var(--fb-section-y) var(--fb-pad);
  text-align: center;
}

.fb-statement__text {
  width: min(36ch, 100%);
  max-width: 100%;
  margin-inline: auto;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(22px, 3.2vw, 40px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
  color: #fff;
  text-wrap: pretty;
}

.fb-statement__meta {
  margin-top: 28px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: rgba(255, 248, 242, 0.7);
}

.fb-statement__logos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 28px 48px;
  width: min(720px, 100%);
  margin: 36px auto 0;
  padding: 0;
  list-style: none;
}

.fb-statement__logos li {
  display: flex;
  align-items: center;
  margin: 0;
}

.fb-statement__logo {
  display: block;
  width: auto;
  max-width: 100%;
  object-fit: contain;
}

.fb-statement__logo--brand {
  height: 40px;
}

.fb-statement__logo--google {
  height: 48px;
}

.fb-statement__logo--kmo {
  height: 40px;
}

/* — rupture —

   Navy field, pixelated beige window, type knocking out where it
   crosses the frame. JS recedes navy cells from the centre on
   scroll (same dissolve as runrobrun.com) and paints an orange
   cell under the pointer. The clip-path window is the no-JS look. */

.fb-rupture {
  --fb-rupture-cols: 18;
  --fb-rupture-rows: 12;
  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  min-height: min(78vh, 860px);
  overflow: hidden;
  background: var(--fb-navy);
  color: var(--fb-paper);
}

html.fb-js .fb-rupture.is-ready {
  background: var(--fb-beige);
}

html.fb-js .fb-rupture.is-ready .fb-rupture__window {
  display: none;
}

.fb-rupture__window {
  position: absolute;
  inset: 0;
  background: var(--fb-beige);
  clip-path: polygon(
    15% 0%,
    85% 0%,
    85% 6.25%,
    90% 6.25%,
    90% 12.5%,
    92.5% 12.5%,
    92.5% 25%,
    85% 25%,
    85% 31.25%,
    87.5% 31.25%,
    87.5% 37.5%,
    95% 37.5%,
    95% 43.75%,
    82.5% 43.75%,
    82.5% 56.25%,
    92.5% 56.25%,
    92.5% 68.75%,
    85% 68.75%,
    85% 75%,
    87.5% 75%,
    87.5% 81.25%,
    95% 81.25%,
    95% 87.5%,
    90% 87.5%,
    90% 93.75%,
    82.5% 93.75%,
    82.5% 100%,
    10% 100%,
    10% 93.75%,
    5% 93.75%,
    5% 81.25%,
    12.5% 81.25%,
    12.5% 75%,
    7.5% 75%,
    7.5% 62.5%,
    15% 62.5%,
    15% 56.25%,
    12.5% 56.25%,
    12.5% 50%,
    5% 50%,
    5% 37.5%,
    10% 37.5%,
    10% 31.25%,
    7.5% 31.25%,
    7.5% 18.75%,
    12.5% 18.75%,
    12.5% 6.25%,
    15% 6.25%
  );
}

.fb-rupture__pixels,
.fb-rupture__hover {
  display: none;
  grid-template-columns: repeat(var(--fb-rupture-cols), minmax(0, 1fr));
  grid-template-rows: repeat(var(--fb-rupture-rows), 1fr);
  pointer-events: none;
  position: absolute;
  inset: 0;
}

html.fb-js .fb-rupture.is-ready .fb-rupture__pixels,
html.fb-js .fb-rupture.is-ready .fb-rupture__hover {
  display: grid;
}

.fb-rupture__pixels {
  z-index: 2;
}

.fb-rupture__hover {
  z-index: 1;
}

.fb-rupture__cell {
  background: var(--fb-navy);
}

.fb-rupture__spark {
  visibility: hidden;
  background: var(--fb-accent);
}

.fb-rupture__quote {
  position: relative;
  z-index: 3;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 8vh 2vw;
  color: #fff;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(46px, 10.4vw, 148px);
  line-height: 0.86;
  letter-spacing: var(--fb-tracking-display);
  text-align: center;
  text-transform: none;
  mix-blend-mode: difference;
  pointer-events: none;
}

.fb-rupture__line {
  display: block;
}

.fb-rupture__mark {
  font-weight: 900;
}

/* — blog — */

.fb-blog {
  padding: var(--fb-section-y) 0 72px;
}

.fb-blog__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  padding: 0 var(--fb-pad) 40px;
}

.fb-blog__heading {
  font-size: clamp(36px, 5.94vw, 84px);
  line-height: 0.9;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-accent);
}

.fb-blog__row {
  display: grid;
  grid-template-columns: 150px 1fr 1fr 40px;
  gap: 24px;
  align-items: baseline;
  padding: 36px var(--fb-pad);
  border-top: 1px solid var(--fb-line);
  text-decoration: none;
  color: var(--fb-espresso);
  transition: background-color 260ms ease;
}

.fb-blog__row:last-child {
  border-bottom: 1px solid var(--fb-line);
}

.fb-blog__row:hover,
.fb-blog__row:focus-visible {
  background: var(--fb-mist);
}

.fb-blog__category {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 13px;
  color: var(--fb-tan-deep);
}

.fb-blog__category {
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
}

.fb-blog__title {
  display: block;
  min-width: 0;
  min-height: 2lh;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(22px, 2.34vw, 33px);
  line-height: 1.1;
  letter-spacing: var(--fb-tracking-display);
  text-transform: uppercase;
  color: var(--fb-navy);
}

.fb-blog__excerpt {
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.72;
  color: var(--fb-tan-deep);
}

.fb-blog__arrow {
  display: inline-block;
  font-size: 20px;
  color: var(--fb-tan-deep);
  text-align: right;
  transition: transform 420ms var(--fb-ease);
}

/* — blog cards (stacked magazine teasers, alternative to the rows) — */

.fb-posts {
  padding: var(--fb-section-y) 0 80px;
  background: var(--fb-beige-fill);
}

.fb-posts__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  padding: 0 var(--fb-pad) 48px;
}

.fb-posts__heading {
  font-size: clamp(32px, 4.4vw, 58px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-posts__lead {
  min-width: 0;
}

.fb-posts__intro {
  max-width: 46ch;
  margin: 16px 0 0;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
  color: var(--fb-tan-deep);
}

.fb-posts__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--fb-gap);
  align-items: stretch;
  padding: 0 var(--fb-pad);
}

.fb-posts__card {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  aspect-ratio: 1;
  min-width: 0;
  overflow: hidden;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  text-decoration: none;
  box-shadow:
    0 28px 88px rgba(23, 38, 63, 0.11),
    0 8px 22px rgba(23, 38, 63, 0.05);
  transition:
    background-color 260ms ease,
    box-shadow 260ms ease;
}

.fb-posts__card:hover,
.fb-posts__card:focus-visible {
  background: var(--fb-mist);
  box-shadow:
    0 36px 104px rgba(23, 38, 63, 0.14),
    0 12px 28px rgba(23, 38, 63, 0.06);
}

.fb-posts__mast {
  position: relative;
  isolation: isolate;
  display: flex;
  flex: 0 0 46%;
  align-items: flex-end;
  min-height: 0;
  padding: 28px 32px;
  overflow: hidden;
  background: var(--fb-navy);
  color: var(--fb-paper);
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(28px, 2.6vw, 40px);
  line-height: 0.9;
  letter-spacing: var(--fb-tracking-display);
}

.fb-posts__card:nth-child(3n + 2) .fb-posts__mast {
  background: var(--fb-espresso);
}

.fb-posts__card:nth-child(3n + 3) .fb-posts__mast {
  background: var(--fb-navy-hi);
}

.fb-posts__card:nth-child(n) .fb-posts__mast.has-logo-bg {
  background: var(--fb-logo-bg);
}

.fb-posts__photo {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.32;
  pointer-events: none;
  transition: opacity 420ms var(--fb-ease);
}

.fb-posts__mast:not(:has(.fb-posts__mast-label)) .fb-posts__photo {
  opacity: 0.92;
}

.fb-posts__mast-label {
  position: relative;
  z-index: 1;
  text-shadow: 0 1px 14px rgba(14, 25, 44, 0.4);
}

.fb-posts__mast--logo {
  display: grid;
  place-items: center;
  place-content: center;
  padding: 28px 32px;
}

.fb-posts__mast--logo .fb-posts__logo {
  position: absolute;
  inset: 0;
  width: min(68%, 220px);
  height: min(42%, 92px);
  margin: auto;
}

.fb-posts__mast--logo .fb-posts__mast-label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.fb-posts__logo {
  display: block;
  width: min(68%, 220px);
  height: min(42%, 92px);
  background-color: var(--fb-room);
  -webkit-mask: var(--fb-logo) center / contain no-repeat;
  mask: var(--fb-logo) center / contain no-repeat;
  pointer-events: none;
}

.fb-posts__copy {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 0;
  padding: 28px 32px 0;
}

.fb-posts__title {
  display: -webkit-box;
  min-height: 2lh;
  max-height: 3lh;
  margin: 0 0 12px;
  overflow: hidden;
  font-family: var(--fb-font-ui);
  font-weight: 700;
  font-size: clamp(20px, 1.7vw, 26px);
  line-height: 1.15;
  letter-spacing: 0;
  color: var(--fb-navy);
  transition: color 260ms ease;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.fb-posts__card:hover .fb-posts__title,
.fb-posts__card:focus-visible .fb-posts__title {
  color: var(--fb-accent);
}

.fb-posts__excerpt {
  display: -webkit-box;
  flex: 1;
  overflow: hidden;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.72;
  color: var(--fb-tan-deep);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.fb-posts__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 14px;
}

.fb-posts__tag {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border: 1px solid var(--fb-line);
  background: var(--fb-paper);
  color: var(--fb-tan-deep);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  white-space: nowrap;
}

.fb-posts__more {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: 0.4em;
  margin-top: auto;
  padding: 22px 32px 28px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  transition: color 260ms ease;
}

.fb-posts__card:hover .fb-posts__more,
.fb-posts__card:focus-visible .fb-posts__more {
  color: var(--fb-accent);
}

.fb-posts__more-arrow {
  display: inline-block;
  transition: transform 420ms var(--fb-ease);
}

/* — atmosphere (paper grain + drifting blobs, reused on cream blocks) — */

.fb-has-atm {
  position: relative;
  isolation: isolate;
}

.fb-has-atm:not(.fb-cta--section):not(.fb-footer) {
  background-color: color-mix(in srgb, var(--fb-room) 58%, #fff);
}

.fb-has-atm > :not(.fb-atm) {
  position: relative;
  z-index: 1;
}

.fb-atm {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

/* One field at a time. The second of two neighbours keeps its cream,
   but not a second set of blobs. Footer sits outside main, so also
   drop it when the last block in main already carries atmosphere. */
.fb-has-atm + .fb-has-atm > .fb-atm,
main:has(> .fb-has-atm:last-child) + .fb-footer > .fb-atm {
  display: none;
}

.fb-atm__blobs {
  position: absolute;
  inset: -16%;
  filter: blur(64px);
  transform: translate3d(var(--fb-atm-x, 0), var(--fb-atm-y, 0), 0);
}

.fb-atm--b {
  --fb-atm-x: 16%;
  --fb-atm-y: -10%;
}

.fb-atm--c {
  --fb-atm-x: -14%;
  --fb-atm-y: 12%;
}

.fb-atm__blob {
  position: absolute;
  display: block;
  border-radius: 50%;
  will-change: transform, opacity;
}

.fb-atm__blob--a {
  width: 42vmax;
  height: 42vmax;
  top: 6%;
  left: -10%;
  background: color-mix(in srgb, var(--fb-navy) 14%, transparent);
  animation: fb-atm-drift-a 9s ease-in-out infinite alternate;
}

.fb-atm__blob--b {
  width: 36vmax;
  height: 36vmax;
  top: -8%;
  right: -8%;
  background: color-mix(in srgb, var(--fb-tan) 22%, transparent);
  animation: fb-atm-drift-b 11s ease-in-out infinite alternate;
}

.fb-atm__blob--c {
  width: 40vmax;
  height: 40vmax;
  bottom: 4%;
  left: 6%;
  background: color-mix(in srgb, var(--fb-accent) 16%, transparent);
  animation: fb-atm-drift-c 8s ease-in-out infinite alternate;
}

.fb-atm__blob--d {
  width: 28vmax;
  height: 28vmax;
  top: 38%;
  left: 42%;
  background: color-mix(in srgb, var(--fb-navy-hi) 12%, transparent);
  animation: fb-atm-drift-d 10s ease-in-out infinite alternate;
}

.fb-atm__blob--e {
  width: 34vmax;
  height: 34vmax;
  bottom: -4%;
  right: -4%;
  background: color-mix(in srgb, var(--fb-espresso) 8%, transparent);
  animation: fb-atm-drift-e 12s ease-in-out infinite alternate;
}

.fb-atm__noise {
  position: absolute;
  inset: 0;
  z-index: 1;
  opacity: 0.16;
  mix-blend-mode: overlay;
  filter: contrast(120%);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220'%3E%3Cfilter id='fb-atm-n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.15' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23fb-atm-n)'/%3E%3C/svg%3E");
  background-size: 140px 140px;
}

@keyframes fb-atm-drift-a {
  0% { transform: translate3d(0, 0, 0) scale(1); opacity: 0.82; }
  100% { transform: translate3d(8%, 12%, 0) scale(1.12); opacity: 1; }
}

@keyframes fb-atm-drift-b {
  0% { transform: translate3d(0, 0, 0) scale(1.04); opacity: 0.7; }
  100% { transform: translate3d(-12%, 8%, 0) scale(0.92); opacity: 0.94; }
}

@keyframes fb-atm-drift-c {
  0% { transform: translate3d(0, 0, 0) scale(0.96); opacity: 0.76; }
  100% { transform: translate3d(10%, -12%, 0) scale(1.1); opacity: 0.58; }
}

@keyframes fb-atm-drift-d {
  0% { transform: translate3d(0, 6%, 0) scale(1); opacity: 0.55; }
  100% { transform: translate3d(-14%, -8%, 0) scale(1.18); opacity: 0.86; }
}

@keyframes fb-atm-drift-e {
  0% { transform: translate3d(0, 0, 0) scale(1.06); opacity: 0.62; }
  100% { transform: translate3d(-6%, -14%, 0) scale(0.9); opacity: 0.84; }
}

/* — blog tabs (sticky folder files that stack on scroll) — */

.fb-digest {
  padding: var(--fb-section-y) 0 80px;
}

.fb-digest__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  padding: 0 var(--fb-pad) 40px;
}

.fb-digest__heading {
  font-size: clamp(32px, 4.4vw, 58px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-digest__files {
  width: min(70.4rem, calc(100% - (2 * var(--fb-pad))));
  margin-inline: auto;
  padding: 0 0 18vh;
}

.fb-digest__file {
  position: sticky;
  top: 28px;
  z-index: calc(2 + var(--fb-digest-i, 0));
  filter: drop-shadow(0 28px 80px rgba(23, 38, 63, 0.16));
}

.fb-digest__tabrow {
  display: grid;
  grid-template-columns: repeat(var(--fb-digest-n, 3), minmax(0, 1fr));
  pointer-events: none;
}

.fb-digest__tab {
  grid-column: calc(var(--fb-digest-i, 0) + 1);
  display: block;
  padding: 14px 36px;
  overflow: hidden;
  border: 0;
  border-radius: 16px 16px 0 0;
  background: var(--fb-navy);
  color: var(--fb-paper);
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: 0.08em;
  line-height: 1;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
  pointer-events: auto;
}

.fb-digest__file:nth-child(3n + 2) .fb-digest__tab {
  background: var(--fb-espresso);
}

.fb-digest__file:nth-child(3n + 3) .fb-digest__tab {
  background: var(--fb-navy-hi);
}

.fb-digest__board {
  display: flex;
  flex-direction: column;
  padding: 24px 28px 0;
  border: 0;
  border-radius: 16px;
  background: #fff;
}

.fb-digest__board:has(.fb-digest__media) {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(14rem, 0.88fr);
  grid-template-areas:
    "copy media"
    "more media";
  min-height: 280px;
  padding: 0;
  overflow: hidden;
}

.fb-digest__file:first-child .fb-digest__board {
  border-radius: 0 16px 16px 16px;
}

.fb-digest__copy {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

.fb-digest__board:has(.fb-digest__media) .fb-digest__copy {
  grid-area: copy;
  padding: 24px 28px 0;
}

.fb-digest__field {
  margin: 0;
}

.fb-digest__key {
  display: block;
  margin-bottom: 6px;
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  white-space: nowrap;
}

.fb-digest__value {
  font-family: var(--fb-font-ui);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fb-espresso);
}

.fb-digest__title {
  display: block;
  max-width: 22ch;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(22px, 2.6vw, 34px);
  line-height: 1.05;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-digest__excerpt {
  display: block;
  max-width: 42ch;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.72;
  color: var(--fb-tan-deep);
}

.fb-digest__more {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  align-self: flex-end;
  gap: 0.4em;
  margin-top: auto;
  padding: 14px 0 18px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  text-decoration: none;
  transition: color 260ms ease;
}

.fb-digest__more:hover,
.fb-digest__more:focus-visible {
  color: var(--fb-accent);
}

.fb-digest__more-arrow {
  display: inline-block;
  transition: transform 420ms var(--fb-ease);
}

.fb-digest__board:has(.fb-digest__media) .fb-digest__more {
  grid-area: more;
  justify-self: end;
  padding: 14px 28px 18px;
}

.fb-digest__media {
  grid-area: media;
  display: block;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  background: var(--fb-beige);
}

.fb-digest__photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transform: scale(1);
  transition: transform 420ms var(--fb-ease);
}

/* — closing CTA — */

.fb-cta {
  padding: var(--fb-section-y) var(--fb-pad) 120px;
}

.fb-cta__heading {
  margin-bottom: 34px;
  font-size: clamp(31px, 7.8vw, 111px);
  font-weight: 700;
  line-height: 0.94;
  letter-spacing: var(--fb-tracking-display);
}

.fb-cta__word {
  display: block;
  width: max-content;
  max-width: 100%;
  font-weight: 900;
  /* Layout is the grown size so scaling up never shifts the page. */
  font-size: 1.62em;
  color: var(--fb-accent);
  white-space: nowrap;
  transform: scale(var(--fb-cta-scale, 0.75));
  transform-origin: left top;
}

/* Mid-page version: the same composition, sized so it punctuates a page
   instead of closing one. */
.fb-cta--section {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 50px;
  padding: clamp(88px, 8vw, 136px) var(--fb-pad);
  border-top: 1px solid var(--fb-line);
  background: var(--fb-beige-fill);
}

.fb-cta--section .fb-cta__heading {
  /* Wider than other inner titles: the accent line is 1.62em and must
     stay inside the reveal mask, not clip on the last italic glyphs. */
  max-width: min(100%, 28ch);
  margin-bottom: 0;
  font-size: clamp(32px, 4.8vw, 68px);
  line-height: 0.98;
  letter-spacing: var(--fb-tracking-display);
}

.fb-cta--section .fb-cta__heading + .fb-cta__text {
  margin-top: 26px;
}

.fb-cta--section .fb-cta__buttons {
  justify-self: end;
  align-self: center;
}

.fb-cta__foot {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 50px;
  align-items: end;
}

.fb-cta__text {
  max-width: 50ch;
  font-weight: 300;
  font-size: var(--fb-size-copy);
  line-height: 1.6;
}

.fb-cta__buttons {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  padding: 22px 10px 22px 22px;
}

.fb-cta__badge {
  width: clamp(152px, 13.6vw, 184px);
  height: clamp(152px, 13.6vw, 184px);
  padding: 18px;
  font-size: 11px;
  letter-spacing: 0.08em;
}

.fb-cta__badge > span {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15em;
}

.fb-cta__badge-line {
  display: block;
  white-space: nowrap;
}

.fb-btn,
.fb .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 46px;
  padding: 0 28px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-family: var(--fb-font-ui);
  font-size: 15px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: none;
  transition:
    background-color 280ms var(--fb-ease),
    border-color 280ms var(--fb-ease),
    color 220ms var(--fb-ease);
}

.fb-on-dark,
.fb-reviews,
.fb-statement,
.fb-case-quote,
.fb-case-stats,
.partner-cta,
.cta--dark {
  --fb-btn-fill-hover: #fff;
  --fb-btn-text-hover: var(--fb-navy);
  --fb-btn-line-hover: #fff;
  --fb-btn-outline-fill: var(--fb-navy);
  --fb-btn-outline-text: var(--fb-beige);
  --fb-btn-outline-line: var(--fb-beige);
  --fb-btn-outline-fill-hover: #000;
  --fb-btn-outline-text-hover: var(--fb-beige);
  --fb-btn-outline-line-hover: var(--fb-accent);
}

.fb-btn--primary,
.fb .btn:not(.btn--ghost):not(.btn--secondary) {
  font-weight: 600;
  color: var(--fb-btn-text);
  background: var(--fb-btn-fill);
  border-color: var(--fb-btn-line);
}

.fb-btn--primary:hover,
.fb-btn--primary:focus-visible,
.fb .btn:not(.btn--ghost):not(.btn--secondary):hover,
.fb .btn:not(.btn--ghost):not(.btn--secondary):focus-visible {
  background: var(--fb-btn-fill-hover);
  border-color: var(--fb-btn-line-hover);
  color: var(--fb-btn-text-hover);
  transform: none;
}

.fb-btn--outline,
.fb .btn--ghost,
.fb .btn--secondary {
  font-weight: 500;
  color: var(--fb-btn-outline-text);
  background: var(--fb-btn-outline-fill);
  border-color: var(--fb-btn-outline-line);
}

.fb-btn--outline:hover,
.fb-btn--outline:focus-visible,
.fb .btn--ghost:hover,
.fb .btn--ghost:focus-visible,
.fb .btn--secondary:hover,
.fb .btn--secondary:focus-visible {
  background: var(--fb-btn-outline-fill-hover);
  border-color: var(--fb-btn-outline-line-hover);
  color: var(--fb-btn-outline-text-hover);
}

/* — footer — */

.fb-footer {
  padding: 36px var(--fb-pad) 24px;
  background: #fff;
  color: var(--fb-espresso);
  border-top: 1px solid color-mix(in srgb, var(--fb-tan) 22%, transparent);
}

.fb-footer > .fb-atm {
  display: none;
}

.fb-footer__logo {
  display: block;
  height: 72px;
  width: auto;
  margin-bottom: 16px;
}

.fb-footer__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-areas: "brand diensten info contact";
  gap: 22px 28px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.08em;
  line-height: 1.7;
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-footer__brand { grid-area: brand; }
.fb-footer__diensten { grid-area: diensten; }
.fb-footer__info { grid-area: info; }
.fb-footer__contact { grid-area: contact; }

.fb-footer__heading {
  display: block;
  margin-bottom: 6px;
  color: var(--fb-accent);
}

.fb-footer__grid a:not(.fb-btn) {
  color: inherit;
  text-decoration: none;
  transition: color 200ms ease;
}

.fb-footer__grid a:not(.fb-btn):hover {
  color: var(--fb-accent);
}

.fb-footer__grid a.fb-footer__heading {
  color: var(--fb-accent);
}

.fb-footer__grid a.fb-footer__heading:hover {
  color: var(--fb-accent-dark);
}

.fb-footer__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.fb-footer__social {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}

.fb-footer__grid .fb-footer__social a {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 999px;
  background: var(--fb-navy);
  color: var(--fb-paper);
  transition:
    background-color 200ms ease,
    color 200ms ease;
}

.fb-footer__grid .fb-footer__social a:hover,
.fb-footer__grid .fb-footer__social a:focus-visible {
  background: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-footer__social svg {
  width: 16px;
  height: 16px;
}

.fb-footer__badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}

.fb-footer__badge {
  display: block;
  width: auto;
  object-fit: contain;
}

.fb-footer__badge--google {
  height: 36px;
}

.fb-footer__badge--kmo {
  height: 24px;
}

.fb-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 24px;
  margin-top: 18px;
  padding-top: 0;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-footer__legal {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 26px;
}

.fb-footer__cookies {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit;
  cursor: pointer;
  transition: color 200ms ease;
}

.fb-footer__cookies:hover,
.fb-footer__cookies:focus-visible {
  color: var(--fb-accent);
}

.fb-footer__bottom a {
  color: inherit;
  text-decoration: none;
  transition: color 200ms ease;
}

.fb-footer__bottom a:hover,
.fb-footer__bottom a[aria-current="true"] {
  color: var(--fb-accent);
}

.fb-footer__langs {
  display: flex;
  gap: 12px;
}

/* — scroll reveal — */

.fb-reveal:not(.fb-index__row) {
  opacity: 0;
  transform: translateY(26px);
  transition:
    opacity 640ms var(--fb-ease),
    transform 640ms var(--fb-ease);
}

.fb-reveal.is-visible {
  opacity: 1;
  transform: none;
}

/* — title line reveal (Filmbot-style clip) —

   Each visual line sits in an overflow mask and slides up from below.
   JS splits the heading; until then html.fb-js hides it so the unsplit
   copy never flashes. Reduced motion skips the clip. */

@media (prefers-reduced-motion: no-preference) {
  html.fb-js [data-fb-title]:not(.is-ready) {
    visibility: hidden;
  }
}

[data-fb-title] {
  text-wrap: pretty;
}

[data-fb-title] .fb-title__mask {
  display: block;
  overflow: hidden;
  padding-top: 0.28em;
  padding-right: 0.34em;
  padding-bottom: 0.26em;
  /* One negative margin between lines: two would collapse and
     add a padding’s worth of leading on stacked titles. */
  margin-top: 0;
  margin-right: -0.34em;
  margin-bottom: -0.54em;
}

[data-fb-title] .fb-title__mask:first-child {
  margin-top: -0.28em;
}

[data-fb-title] .fb-title__mask:last-child {
  margin-bottom: -0.26em;
}

[data-fb-title] .fb-title__line {
  display: block;
  transform: translate3d(0, 108%, 0);
}

[data-fb-title] .fb-title__word {
  display: inline;
}

[data-fb-title].is-in .fb-title__line {
  animation: fb-title-in 1.05s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--i, 0) * 85ms);
}

[data-fb-title].is-in.is-static .fb-title__line {
  animation: none;
  transform: none;
}

@keyframes fb-title-in {
  from {
    transform: translate3d(0, 108%, 0);
  }

  to {
    transform: translate3d(0, 0, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-fb-title] .fb-title__line {
    transform: none;
    animation: none;
  }
}

/* Contrasting end mark after every display title, blinking like a caret.
   JS reuses a title's own ? ! : ; … when present, otherwise injects a period.
   Navy titles get an orange mark; orange titles get a navy mark.
   The mark sits on the last word so it stays on that line.
   Without JS the last child (or the heading itself) draws a period. */
.fb-title__cursor,
html:not(.fb-js) [data-fb-title]:not(:has(> span))::after,
html:not(.fb-js) [data-fb-title] > span:last-child::after {
  color: var(--fb-accent);
  font-weight: 900;
  pointer-events: none;
}

.fb-title__cursor {
  display: inline;
  white-space: nowrap;
}

.fb-hero__title .fb-title__cursor {
  display: inline;
  width: auto;
  white-space: nowrap;
}

html:not(.fb-js) [data-fb-title]:not(:has(> span))::after,
html:not(.fb-js) [data-fb-title] > span:last-child::after {
  content: ".";
}

.fb-blog__heading .fb-title__cursor,
.fb-crew__heading .fb-title__cursor,
.fb-cta__word .fb-title__cursor,
.fb-strong--accent .fb-title__cursor,
.fb-title__line.fb-strong--accent .fb-title__cursor,
html:not(.fb-js) .fb-blog__heading::after,
html:not(.fb-js) .fb-crew__heading::after,
html:not(.fb-js) .fb-blog__heading > span:last-child::after,
html:not(.fb-js) .fb-crew__heading > span:last-child::after,
html:not(.fb-js) .fb-cta__heading > span:last-child::after,
html:not(.fb-js) .fb-hero__title > span:last-child.fb-strong--accent::after {
  color: var(--fb-navy);
}

.fb-reviews__heading .fb-strong .fb-title__cursor,
html:not(.fb-js) .fb-reviews__heading > span:last-child::after {
  color: var(--fb-paper);
}

[data-fb-title].is-in .fb-title__cursor {
  animation: fb-title-cursor 1.4s ease-in-out infinite;
  animation-delay: calc(1.05s + var(--i, 0) * 85ms);
}

html:not(.fb-js) [data-fb-title]:not(:has(> span))::after,
html:not(.fb-js) [data-fb-title] > span:last-child::after {
  animation: fb-title-cursor 1.4s ease-in-out infinite;
}

@keyframes fb-title-cursor {
  0%,
  100% {
    opacity: 1;
  }

  50% {
    opacity: 0.18;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fb-title__cursor,
  html:not(.fb-js) [data-fb-title]:not(:has(> span))::after,
  html:not(.fb-js) [data-fb-title] > span:last-child::after {
    animation: none;
    opacity: 1;
  }
}

/* — letter hover (Klausen-style swap) —

   Each word clips its own two stacked copies, so long wrapping titles
   (blog rows) animate the same way as the short service names.
   --i is 0–1 across the title, so a long line does not become a wave.
   Padding keeps descenders visible. Letters must travel 100% plus that
   padding, otherwise the outgoing tops leak at the bottom of the clip. */

.fb-letter-hover {
  --fb-letter-pad: 0.18em;
}

.fb-letter-hover__word {
  display: inline-block;
  overflow: hidden;
  position: relative;
  vertical-align: top;
  white-space: nowrap;
  padding-bottom: var(--fb-letter-pad);
  margin-bottom: calc(var(--fb-letter-pad) * -1);
  /* Early Sans plus tight caps tracking clips the last glyph. */
  padding-right: 0.18em;
  margin-right: -0.18em;
}

.fb-letter-hover__layer {
  display: block;
}

.fb-letter-hover__layer--next {
  color: var(--fb-accent);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
}

.fb-letter-hover__layer--next .fb-letter-hover__char {
  transform: translateY(calc(-115% - var(--fb-letter-pad)));
}

.fb-letter-hover__char {
  display: inline-block;
  transition: transform 0.7s cubic-bezier(0.11, 0.82, 0.39, 0.92);
  transition-delay: calc(var(--i, 0) * 28ms);
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  a:hover .fb-letter-hover__layer:not(.fb-letter-hover__layer--next) .fb-letter-hover__char,
  a:focus-visible .fb-letter-hover__layer:not(.fb-letter-hover__layer--next) .fb-letter-hover__char {
    transform: translateY(calc(115% + var(--fb-letter-pad)));
  }

  a:hover .fb-letter-hover__layer--next .fb-letter-hover__char,
  a:focus-visible .fb-letter-hover__layer--next .fb-letter-hover__char {
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  a:hover [data-fb-letter-hover],
  a:focus-visible [data-fb-letter-hover] {
    color: var(--fb-accent);
  }
}

/* — body copy word reveal (Distillati-style deblur) —

   Regular paragraphs split into words. Each word fades in from a
   slight skew and blur as the block enters the viewport. */

@media (prefers-reduced-motion: no-preference) {
  html.fb-js [data-fb-copy]:not(.is-ready) {
    visibility: hidden;
  }

  [data-fb-copy]:not(.is-in) .fb-copy__word {
    opacity: 0;
    filter: blur(8px);
    transform: skew(-20deg, 0deg);
  }

  [data-fb-copy].is-in .fb-copy__word {
    animation: fb-copy-in 0.75s cubic-bezier(0.215, 0.61, 0.355, 1) both;
    animation-delay: calc(var(--i, 0) * 20ms);
  }
}

[data-fb-copy] .fb-copy__word {
  display: inline-block;
}

@keyframes fb-copy-in {
  from {
    opacity: 0;
    filter: blur(8px);
    transform: skew(-20deg, 0deg);
  }

  to {
    opacity: 1;
    filter: blur(0);
    transform: skew(0deg, 0deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-fb-copy] .fb-copy__word {
    opacity: 1;
    filter: none;
    transform: none;
    animation: none;
  }
}

/* ==========================================================================
   Inner pages

   Same vocabulary as the homepage: overlay header, photo hero, editorial rows,
   magazine cards, reviews, photo breaks, oversized type.
   ========================================================================== */

.fb-page-hero {
  min-height: 0;
}

.fb-page-hero .fb-hero__body {
  /* Full row on small screens. 64vw clips one-word titles such as
     Succesverhalen. Keep that cream column only beside the photo. */
  max-width: min(920px, 100%);
  padding-top: 48px;
  padding-bottom: 40px;
}

.fb-page-hero .fb-hero__foot {
  grid-template-columns: 1fr;
  margin-top: 10px;
  align-items: start;
}

/* Inner heroes share one 600px photo band. Tagline and intro sit in
   that opening, as wide as the copy column, without a line clamp. */
@media (min-width: 901px) {
  body.fb-page .fb-page-hero {
    min-height: 600px;
    height: 600px;
    overflow: hidden;
  }

  /* Blog titles wrap to several display lines. Keep the 600px band
     as a floor, but let the photo grow so the extra leading stays
     inside the frame. */
  body.fb-page .fb-page-hero:has(+ .fb-article) {
    height: auto;
  }

  body.fb-page .fb-page-hero .fb-hero__body {
    padding-top: 118px;
    padding-bottom: 40px;
  }

  body.fb-page .fb-page-hero:not(.fb-hero--panel) .fb-hero__body {
    max-width: min(920px, 64vw);
  }

  body.fb-page .fb-page-hero--tags .fb-hero__body {
    padding-bottom: 96px;
  }
}

body.fb-page .fb-page-hero + * {
  padding-top: calc(var(--fb-section-y) / 2);
}

body.fb-page .fb-page-hero + .fb-statement {
  padding-bottom: calc(var(--fb-section-y) / 2);
}

/* Scroll hint sits between the case title and the laptop, so ~ not +.
   Negative margin tucks the empty top of the frames under the cream
   title band. Sticky pin stays at top: 0 so the lid keeps header room. */
body.fb-page .fb-page-hero__switch ~ .fb-work {
  padding-top: 0;
  margin-top: -40px;
}

@media (min-width: 901px) {
  body.fb-page .fb-page-hero__switch ~ .fb-work {
    margin-top: -80px;
  }
}

body.fb-page .fb-page-hero__switch ~ .fb-work .fb-laptop__pin {
  top: 0;
}

body.fb-page .fb-page-hero__switch ~ .fb-work .fb-laptop__stage {
  place-items: start center;
}

body.fb-page .fb-page-hero.fb-hero--panel {
  background: #fff;
}

body.fb-page .fb-page-hero.fb-hero--panel .fb-hero__media,
body.fb-page .fb-page-hero.fb-hero--panel .fb-hero__panel {
  display: none;
}

body.fb-page .fb-page-hero.fb-hero--panel .fb-hero__title {
  filter: none;
}

body.fb-page .fb-page-hero.fb-hero--panel .fb-hero__body {
  padding-bottom: 28px;
}

@media (min-width: 901px) {
  body.fb-page .fb-page-hero.fb-hero--panel {
    height: auto;
    min-height: 0;
  }

  body.fb-page .fb-page-hero.fb-hero--panel .fb-hero__body {
    padding-top: 36px;
    padding-bottom: 28px;
  }
}

body.fb-page .fb-page-hero.fb-hero--panel + * {
  padding-top: clamp(12px, 2vw, 28px);
}

body.fb-page .fb-page-hero.fb-hero--panel + .fb-statement {
  padding-bottom: clamp(12px, 2vw, 28px);
}

/* Photo stays under the overlay header. Index rows after that
   opening stay a white band. Explainer cards keep the cream atm. */
body.fb-page .fb-page-hero + .fb-has-atm:not(.fb-explain) {
  background-color: #fff;
}

body.fb-page .fb-page-hero + .fb-has-atm:not(.fb-explain) > .fb-atm {
  display: none;
}

body.fb-page .fb-page-hero ~ .fb-work .fb-work__head,
body.fb-page .fb-page-hero__switch ~ .fb-work .fb-work__head {
  padding-top: 0;
}

/* Inner pages keep display type, a step under the homepage poster
   (108px). CMS sentences wrap, so they keep the house hero leading
   (0.92). Homepage stacked spans stay nowrap via .fb-hero__title
   span; that rule beats a class pair, so inner page words and the
   accent override it here. The title keeps a two-line minimum so
   the copy below stays clear when it wraps; longer titles can take
   more lines. Padding on the wrapper keeps the blinking end mark
   from being sliced. */
.fb-page-hero__title-clip {
  max-width: 100%;
  overflow: hidden;
  padding-top: 0.28em;
  padding-right: 0.55em;
  padding-bottom: 0.26em;
  font-size: clamp(38px, 6vw, 80px);
  line-height: 0.92;
}

.fb-page-hero__title {
  display: block;
  min-height: 2lh;
  max-width: min(max(16ch, min-content), 100%);
  overflow: visible;
  font-size: inherit;
  line-height: inherit;
}

.fb-page-hero__title > span.fb-strong,
.fb-page-hero__title span.fb-title__word {
  display: inline;
  width: auto;
  white-space: normal;
}

.fb-page-hero--long .fb-page-hero__title-clip {
  font-size: clamp(32px, 5.1vw, 70px);
  line-height: 0.92;
}

.fb-page-hero--long .fb-hero__title {
  max-width: min(max(22ch, min-content), 100%);
}

/* FAQ index: “Veelgestelde vragen” as two locked lines in the leftover
   hero measure, with the house-style accent on the second line. */
.fb-page-hero--stack .fb-page-hero__title-clip {
  font-size: clamp(40px, 5.8vw, 76px);
  line-height: 0.92;
}

.fb-page-hero--stack .fb-page-hero__title,
.fb-page-hero--stack.fb-page-hero--long .fb-hero__title {
  max-width: none;
  min-height: 0;
}

.fb-page-hero__title--stack > span,
.fb-page-hero__title--stack > span.fb-strong,
.fb-page-hero--stack .fb-title__mask,
.fb-page-hero--stack .fb-title__line,
.fb-page-hero__title--stack span.fb-title__word {
  display: block;
  width: max-content;
  white-space: nowrap;
}

.fb-page-hero--from-top .fb-hero__media img {
  object-position: top center;
}

/* Inner heroes hug their copy, so the homepage-sized icon would sit
   under the round contact badge. Keep the loop, shrink the mark. */
.fb-page-hero .fb-hero__mark,
.fb-page-hero .fb-mark.fb-hero__mark {
  right: var(--fb-pad);
  bottom: 24px;
  height: clamp(76px, 9.6vw, 124px);
}

.fb-page-hero .fb-hero__mark .fb-logo__gold {
  fill: var(--fb-room);
}

.fb-page-hero__logo-mark {
  position: absolute;
  right: var(--fb-pad);
  bottom: 24px;
  z-index: 3;
  display: block;
  width: clamp(160px, 22vw, 280px);
  height: clamp(76px, 9.6vw, 124px);
  background-color: var(--fb-room);
  -webkit-mask: var(--fb-logo) right bottom / contain no-repeat;
  mask: var(--fb-logo) right bottom / contain no-repeat;
  pointer-events: none;
}

.fb-page-hero__tags {
  position: absolute;
  left: var(--fb-pad);
  bottom: 24px;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  max-width: calc(100% - var(--fb-pad) - clamp(168px, 24vw, 300px));
  margin: 0;
  padding: 0;
  list-style: none;
}

.fb-page-hero--tags .fb-hero__body {
  padding-bottom: 96px;
}

.fb-page-hero__client {
  margin: 0;
  min-width: 0;
  max-width: none;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(50px, 7.92vw, 101px);
  line-height: 1;
  letter-spacing: -0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--fb-accent);
}

html.is-case-flip .fb-page-hero__client {
  flex: none;
  width: var(--fb-case-title-from);
  overflow: hidden;
  opacity: 0;
}

html.is-case-flip.is-case-flip-play .fb-page-hero__client {
  width: var(--fb-case-title-to);
  opacity: 1;
  transition:
    width 560ms var(--fb-ease),
    opacity 280ms ease;
}

.fb-page-hero__switch {
  position: relative;
  z-index: 4;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: calc(var(--fb-section-y) / 2) var(--fb-pad) 0;
  background: var(--fb-room);
  text-align: center;
}

.fb-page-hero__flip {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(14px, 2.2vw, 22px);
  width: 100%;
}

.fb-page-hero__switch .fb-page-hero__client {
  flex: 0 1 auto;
}

.fb-page-hero__site {
  margin: 0;
  /* Keep the cream band as tall as a case with a website button, so the
     laptop sits at the same distance under every title. */
  min-height: 46px;
}

.fb-page-hero__site .fb-btn {
  width: fit-content;
}

.fb-page-hero__soon {
  display: inline-flex;
  align-items: center;
  min-height: 46px;
  font-family: var(--fb-font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--fb-espresso);
}

.fb-page-hero__nav {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid var(--fb-tan);
  border-radius: 999px;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  text-decoration: none;
  transition:
    background-color 220ms ease,
    color 220ms ease,
    border-color 220ms ease;
}

.fb-page-hero__nav:hover,
.fb-page-hero__nav:focus-visible {
  background: var(--fb-accent);
  border-color: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-page-hero__nav-mark,
.fb-page-hero__scroll-mark {
  display: flex;
  align-items: center;
  justify-content: center;
}

.fb-page-hero__nav svg {
  display: block;
  width: 20px;
  height: 20px;
  transition: transform 420ms var(--fb-ease);
}

.fb-page-hero__scroll {
  position: fixed;
  left: 50%;
  bottom: 5%;
  z-index: 6;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--fb-accent);
  text-decoration: none;
  transform: translateX(-50%);
  transition: opacity 280ms ease, transform 280ms ease, color 220ms ease;
}

.fb-page-hero__scroll-label {
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--fb-tracking-ui);
  line-height: 1.2;
  text-transform: uppercase;
  white-space: nowrap;
}

.fb-page-hero__scroll:hover,
.fb-page-hero__scroll:focus-visible {
  color: var(--fb-accent-dark);
}

.fb-page-hero__scroll svg {
  display: block;
  width: 28px;
  height: 28px;
}

.fb-page-hero__scroll.is-away {
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 8px);
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .fb-page-hero__nav[rel="next"]:hover svg,
  .fb-page-hero__nav[rel="next"]:focus-visible svg,
  .fb-laptop__case-nav[rel="next"]:hover svg,
  .fb-laptop__case-nav[rel="next"]:focus-visible svg {
    transform: translateX(2px);
  }

  .fb-page-hero__nav[rel="prev"]:hover svg,
  .fb-page-hero__nav[rel="prev"]:focus-visible svg,
  .fb-laptop__case-nav[rel="prev"]:hover svg,
  .fb-laptop__case-nav[rel="prev"]:focus-visible svg {
    transform: translateX(-2px);
  }

  .fb-page-hero__scroll svg {
    animation: fb-scroll-bob 1.8s ease-in-out infinite;
  }
}

@keyframes fb-scroll-bob {
  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(7px);
  }
}

@media (max-width: 700px) {
  .fb-page-hero__tags {
    max-width: calc(100% - var(--fb-pad) - 92px);
  }

  .fb-page-hero__switch {
    gap: 12px;
  }

  .fb-page-hero__flip {
    gap: 8px;
  }

  .fb-page-hero__client {
    font-size: clamp(20px, 6.4vw, 28px);
  }

  .fb-page-hero__nav {
    width: 40px;
    height: 40px;
  }
}

/* Same shorter measure on inner-page section titles. */
body.fb-page :is(
  .fb-approach__heading,
  .fb-features__heading,
  .fb-blog__heading,
  .fb-posts__heading,
  .fb-digest__heading,
  .fb-crew__heading,
  .fb-reviews__heading,
  .fb-contact__heading,
  .fb-faq__heading,
  .fb-explain__heading,
  .fb-textblock__heading,
  .fb-index__heading,
  .fb-dienstgrid__heading
) {
  max-width: 14ch;
  font-size: var(--fb-size-section);
  line-height: var(--fb-section-lh);
}

.fb-page-hero__logo {
  display: block;
  width: auto;
  height: auto;
  max-width: min(480px, 100%);
  max-height: clamp(96px, 18vw, 168px);
  margin: 0 0 22px;
  object-fit: contain;
  object-position: left center;
}

.fb-page-hero .fb-page-hero__tagline {
  max-width: none;
  margin-bottom: 12px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(20px, 2.2vw, 31px);
  line-height: 1.12;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-page-hero .fb-hero__intro {
  max-width: calc(min(920px, 64vw) * 0.8);
}

/* — photo break: three frames that interrupt a long copy page — */

.fb-break {
  padding: var(--fb-section-y) var(--fb-pad);
  background: var(--fb-room);
}

.fb-break__grid {
  display: grid;
  grid-template-columns: 1.2fr 0.85fr 1fr;
  gap: var(--fb-gap);
  align-items: stretch;
  min-height: clamp(220px, 36vw, 460px);
}

.fb-break__grid:has(> :nth-child(2):last-child) {
  grid-template-columns: 1.15fr 0.95fr;
}

.fb-break__grid:has(> :only-child) {
  grid-template-columns: 1fr;
  min-height: clamp(280px, 42vw, 520px);
}

.fb-break__frame {
  overflow: hidden;
  border-radius: 24px;
  align-self: stretch;
  min-height: 0;
  background: var(--fb-navy);
}

.fb-break__frame:nth-child(2) {
  margin-top: clamp(24px, 4vw, 56px);
  margin-bottom: clamp(12px, 2vw, 28px);
}

.fb-break__frame:nth-child(3) {
  margin-top: clamp(8px, 1.6vw, 20px);
}

.fb-break__frame img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fb-break__caption {
  margin: 18px 0 0;
  color: var(--fb-tan-deep);
}

@media (max-width: 900px) {
  .fb-break__grid {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .fb-break__frame,
  .fb-break__frame:nth-child(2),
  .fb-break__frame:nth-child(3) {
    margin: 0;
    min-height: 220px;
  }
}

/* — feature list (approach columns) — */

.fb-features {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-features__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  margin-bottom: 64px;
}

.fb-features__heading {
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-features__intro {
  align-self: end;
  max-width: 46ch;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
}

.fb-features__grid {
  display: grid;
  grid-template-columns: repeat(var(--fb-cols, 3), minmax(0, 1fr));
  gap: var(--fb-gap);
}

.fb-features__item {
  padding: 0;
}

.fb-features__title {
  display: block;
  min-height: 3.3em;
  margin-bottom: 12px;
  font-family: var(--fb-font-ui);
  font-weight: 700;
  font-size: clamp(24px, 2.34vw, 32px);
  line-height: 1.1;
  letter-spacing: 0;
}

.fb-features__text {
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.78;
  color: var(--fb-tan-deep);
}

.fb-features:has(.fb-slides) .fb-features__head {
  margin-bottom: 32px;
}

.fb-features .fb-slides {
  padding: 0;
}

/* Follow-up feature blocks have their own heading. Keep the usual
   section gap so that title does not sit on the peeking slide. */
.fb-features + .fb-features {
  padding-top: var(--fb-section-y);
}

/* Card blocks have no peek. Don't stack two full section gaps. */
.fb-features--cards + .fb-features {
  padding-top: 0;
}

.fb-features:has(.fb-approach__grid) .fb-features__head {
  margin-bottom: 48px;
}

/* — explainer cards — */

.fb-explain {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-explain__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  margin-bottom: 48px;
}

.fb-explain__head:not(:has(.fb-explain__intro)) {
  grid-template-columns: 1fr;
  gap: 0;
  margin-bottom: 28px;
}

.fb-explain__heading {
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-explain__heading > span {
  display: block;
}

body.fb-page .fb-explain__heading.fb-explain__heading--split {
  max-width: 28ch;
}

@media (min-width: 701px) {
  .fb-explain__heading--split > span:last-child,
  .fb-explain__heading--split > .fb-title__mask:last-child .fb-title__line {
    white-space: nowrap;
  }
}

.fb-explain__intro {
  align-self: end;
  max-width: 46ch;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
  color: var(--fb-tan-deep);
}

.fb-explain__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--fb-gap);
  align-items: stretch;
}

.fb-explain__grid:has(> :nth-child(1):last-child) {
  grid-template-columns: minmax(0, 1fr);
  max-width: 36rem;
}

.fb-explain__grid:has(> :nth-child(3):last-child) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fb-explain__card {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  min-width: 0;
  padding: var(--fb-card-pad);
  border-radius: 24px;
  background: var(--fb-paper);
  box-shadow: 0 18px 44px rgba(23, 38, 63, 0.08);
}

.fb-explain__card--0 {
  background: #fff1e6;
}

.fb-explain__card--1 {
  background: #e7edf6;
}

.fb-explain__card--2 {
  background: #f3ebe0;
}

.fb-explain__title {
  display: block;
  min-width: 0;
  min-height: 2lh;
  margin: 0 0 18px;
  overflow-wrap: break-word;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(22px, 2.1vw, 30px);
  line-height: 1.05;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-explain__body {
  flex: 1;
}

.fb-explain__body.fb-prose ul,
.fb-explain__body.fb-prose ol {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 0;
}

.fb-explain__body.fb-prose li {
  position: relative;
  margin: 0;
  padding: 0 0 0 1.4em;
  font-family: var(--fb-font-body);
  font-size: var(--fb-size-copy);
  line-height: 1.7;
  color: var(--fb-tan-deep);
}

.fb-explain__body.fb-prose li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--fb-accent);
  transform: translateY(-50%);
}

.fb-explain__body.fb-prose li strong {
  display: block;
  margin-bottom: 4px;
  font-family: var(--fb-font-ui);
  font-weight: 700;
  font-size: 15px;
  line-height: 1.3;
  color: var(--fb-navy);
}

/* — chapter titles, not content — */

/* White band so a kicker + heading still reads as a title,
   without a navy block between the lists. */
.fb-chapter,
.fb-offer__head,
.fb-chapter--accent {
  padding: clamp(56px, 6.2vw, 88px) var(--fb-pad);
  background: #fff;
  color: var(--fb-navy);
}

.fb-chapter .fb-label,
.fb-offer__head .fb-label {
  color: color-mix(in srgb, var(--fb-navy) 58%, var(--fb-espresso));
}

.fb-chapter :is(
  .fb-index__heading,
  .fb-approach__heading,
  .fb-posts__heading,
  .fb-digest__heading
),
.fb-offer__head .fb-index__heading {
  color: var(--fb-navy);
}

.fb-chapter--accent :is(.fb-index__heading, .fb-posts__heading) {
  color: var(--fb-navy);
}

.fb-chapter .fb-approach__intro,
.fb-chapter .fb-articles__intro,
.fb-chapter .fb-posts__intro {
  color: var(--fb-tan-deep);
}

.fb-chapter .fb-textlink {
  color: var(--fb-tan-deep);
}

.fb-chapter .fb-textlink:hover,
.fb-chapter .fb-textlink:focus-visible {
  color: var(--fb-accent);
}

.fb-chapter .fb-title__cursor,
html:not(.fb-js) .fb-chapter [data-fb-title] > span:last-child::after {
  color: var(--fb-accent);
}

.fb-chapter .fb-blog__heading .fb-title__cursor,
html:not(.fb-js) .fb-chapter .fb-blog__heading > span:last-child::after {
  color: var(--fb-navy);
}

/* Tuck the white band under the hanging, tilted marquee.
   52px covers the pull-up; 44px is the ticker hanging below the hero,
   so visible space above the title matches the bottom padding. */
body.fb-home .fb-index {
  padding-top: 0;
}

body.fb-home .fb-index .fb-chapter--accent {
  margin-top: -52px;
  padding-top: calc(52px + 44px + clamp(56px, 6.2vw, 88px));
}

.fb-approach:has(> .fb-chapter) {
  padding-top: 0;
  padding-inline: 0;
}

.fb-approach:has(> .fb-chapter) .fb-approach__grid {
  padding-inline: var(--fb-pad);
}

.fb-blog:has(> .fb-chapter),
.fb-posts:has(> .fb-chapter),
.fb-digest:has(> .fb-chapter) {
  padding-top: 0;
}

/* No cream strip between the blog rows and Recente artikelen. */
.fb-blog:has(+ .fb-posts) {
  padding-bottom: 0;
}

.fb-blog:has(+ .fb-posts) .fb-blog__row:last-child {
  border-bottom: 0;
}

/* Beige gap under the white title band, same as the space below the cards. */
.fb-posts:has(> .fb-chapter) .fb-posts__grid,
.fb-digest:has(> .fb-chapter) .fb-digest__files {
  padding-top: 80px;
}

.fb-page .fb-offer [data-fb-index] {
  --fb-index-tight: 12px;
  --fb-index-spread: 24px;
}

.fb-page .fb-offer .fb-index__row {
  padding: 12px var(--fb-pad);
  column-gap: 24px;
}

.fb-page .fb-offer .fb-index__title {
  flex: 1 1 52%;
  min-width: 12ch;
  font-size: clamp(22px, 3vw, 40px);
  line-height: 1.02;
}

.fb-page .fb-offer .fb-index__row:nth-child(even) {
  flex-direction: row;
}

.fb-page .fb-offer .fb-index__row:nth-child(even) .fb-index__text {
  text-align: left;
}

/* — article and case lists sit on the homepage blog rows — */

.fb-articles .fb-pager,
.fb-cases .fb-pager {
  padding: 36px var(--fb-pad) 80px;
}

.fb-posts.fb-articles .fb-pager {
  padding: 36px var(--fb-pad) 0;
}

.fb-articles__intro {
  max-width: 46ch;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
}

.fb-articles__empty {
  padding: 0 var(--fb-pad) var(--fb-section-y);
  font-size: var(--fb-size-copy);
  color: var(--fb-tan-deep);
}

.fb-pager {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin-top: 32px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
}

.fb-pager[hidden] {
  display: none;
}

.fb-pager__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--fb-accent);
  font: inherit;
  letter-spacing: inherit;
  text-decoration: none;
  text-transform: inherit;
  cursor: pointer;
}

.fb-pager__link svg {
  display: block;
  width: 22px;
  height: 22px;
  transition: transform 420ms var(--fb-ease);
}

.fb-pager__link:disabled,
.fb-pager__link--off {
  color: var(--fb-tan);
  cursor: default;
}

.fb-pager__status {
  min-width: 4.5ch;
  color: var(--fb-tan-deep);
  text-align: center;
}

/* — article and case detail — */

.fb-article {
  --fb-check-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round' d='M2.8 8.3l3.5 3.4 6.9-7.2'/%3E%3C/svg%3E");
  padding: calc(var(--fb-section-y) / 2) 0 0;
}

.fb-article__layout {
  display: grid;
  gap: 0;
  width: 100%;
}

.fb-article__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 28px;
  margin: 0 var(--fb-pad) clamp(36px, 4vw, 64px);
  padding-bottom: 22px;
  border-bottom: 1px solid var(--fb-line);
}

.fb-article__who {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 18px;
  margin: 0;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-article__date {
  color: var(--fb-accent);
}

.fb-article__body {
  max-width: none;
  width: 100%;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
  hyphens: manual;
}

.fb-article__body.fb-prose > p:first-of-type {
  color: inherit;
  font-size: inherit;
  line-height: inherit;
}

.fb-article__row--lede .fb-article__body.fb-prose > p:first-of-type {
  color: var(--fb-navy);
  font-size: 1.08em;
  line-height: 1.55;
}

.fb-article__row {
  padding: 0 var(--fb-pad);
  margin-bottom: clamp(40px, 5vw, 72px);
}

.fb-article__row--split {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: var(--fb-gap);
  align-items: stretch;
}

.fb-article__row--split.fb-article__row--flip {
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.fb-article__row--flip .fb-article__copy {
  order: 2;
}

.fb-article__row--flip .fb-article__media,
.fb-article__row--flip .fb-article__panel {
  order: 1;
}

.fb-article__media,
.fb-article__panel {
  margin: 0;
  min-height: 220px;
}

.fb-article__media {
  overflow: hidden;
  background: var(--fb-navy);
}

.fb-article__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fb-article__media--cover img {
  object-position: center 42%;
}

.fb-article__body.fb-prose strong {
  font-weight: 700;
  color: var(--fb-navy);
}

.fb-article__panel {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 14px;
  padding: clamp(24px, 2.6vw, 40px);
  background: var(--fb-beige);
  color: var(--fb-navy);
}

.fb-article__panel-kicker {
  margin: 0;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-article__panel-text {
  margin: 0;
  font-family: var(--fb-font-display);
  font-weight: 700;
  font-size: clamp(20px, 2.1vw, 28px);
  line-height: 1.22;
  letter-spacing: var(--fb-tracking-display);
  text-wrap: pretty;
}

.fb-article__quote {
  margin-bottom: clamp(40px, 5vw, 72px);
}

@media (max-width: 900px) {
  .fb-article__row--split,
  .fb-article__row--split.fb-article__row--flip {
    grid-template-columns: 1fr;
  }

  .fb-article__row--flip .fb-article__copy,
  .fb-article__row--flip .fb-article__media,
  .fb-article__row--flip .fb-article__panel {
    order: 0;
  }

  .fb-article__media,
  .fb-article__panel {
    min-height: 0;
    aspect-ratio: auto;
    max-height: none;
  }

  .fb-article__panel {
    min-height: 0;
  }
}

.fb-article__body.fb-prose h2 {
  margin: 1.45em 0 0.45em;
  font-family: var(--fb-font-display);
  font-size: clamp(24px, 2.6vw, 34px);
  font-weight: 900;
  line-height: 1.12;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-article__body.fb-prose h2:first-child {
  margin-top: 0;
}

.fb-article__body.fb-prose h3 {
  margin: 1.25em 0 0.4em;
  font-family: var(--fb-font-display);
  font-size: clamp(18px, 1.7vw, 22px);
  font-weight: 700;
  line-height: 1.25;
  color: var(--fb-navy);
}

.fb-article__body.fb-prose blockquote {
  margin: 1.5em 0;
  padding: 4px 0 4px 22px;
  border-left: 3px solid var(--fb-accent);
  background: none;
  color: var(--fb-navy);
  font-family: var(--fb-font-display);
  font-weight: 700;
  font-size: clamp(18px, 1.8vw, 24px);
  line-height: 1.35;
  letter-spacing: var(--fb-tracking-display);
}

.fb-article__body.fb-prose blockquote p {
  margin: 0;
  color: inherit;
}

.fb-article__body.fb-prose :is(figure, img) {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  margin: 1.6em 0;
}

.fb-article__body.fb-prose img {
  object-fit: cover;
}

.fb-article__body.fb-prose table {
  width: 100%;
  max-width: 100%;
  margin: 1.4em 0;
  border-collapse: collapse;
}

.fb-article__body.fb-prose ol {
  list-style: decimal;
  padding-left: 1.3em;
}

.fb-article__body.fb-prose ol li {
  padding-left: 0.35em;
}

.fb-article__body.fb-prose ol li::before {
  content: none;
}

.fb-article__body.fb-prose li p {
  margin-bottom: 0;
}

.fb-article__body.fb-prose ul li {
  margin-bottom: 8px;
}

.fb-article__body.fb-prose ul.fb-checks li {
  padding-left: 28px;
}

.fb-article__body.fb-prose ul.fb-checks li::before {
  width: 15px;
  height: 15px;
  border-radius: 0;
  background: var(--fb-accent);
  top: 0.38em;
  transform: none;
  -webkit-mask: var(--fb-check-icon) center / contain no-repeat;
  mask: var(--fb-check-icon) center / contain no-repeat;
}

.fb-check {
  display: inline-block;
  width: 0.78em;
  height: 0.78em;
  margin-left: 0.12em;
  vertical-align: -0.06em;
  background: var(--fb-accent);
  -webkit-mask: var(--fb-check-icon) center / contain no-repeat;
  mask: var(--fb-check-icon) center / contain no-repeat;
}

.fb-article__terms {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  list-style: none;
}

.fb-article__term {
  display: inline-flex;
  align-items: center;
  padding: 8px 12px;
  border: 1px solid var(--fb-line);
  background: var(--fb-paper);
  color: var(--fb-tan-deep);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  text-decoration: none;
  white-space: nowrap;
}

a.fb-article__term:hover,
a.fb-article__term:focus-visible {
  border-color: var(--fb-accent);
  color: var(--fb-accent);
  outline: none;
}

.fb-article__back {
  margin-top: 30px;
  padding: 0 var(--fb-pad) var(--fb-section-y);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-accent);
}

.fb-article__back a {
  color: inherit;
  text-decoration: none;
}

.fb-article .fb-article__back {
  margin-top: 8px;
  font-size: inherit;
  letter-spacing: inherit;
  text-transform: none;
  color: inherit;
}

.fb-case {
  padding: var(--fb-section-y) var(--fb-pad) 80px;
}

.fb-case--foot {
  padding-block: 28px 48px;
}

.fb-case-stats {
  padding: clamp(72px, 9vw, 128px) var(--fb-pad);
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
  color: #fff;
}

.fb-case-stats__inner {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: clamp(28px, 4vw, 48px);
  width: min(100%, 1120px);
  margin-inline: auto;
}

.fb-case-stats__heading {
  margin: 0;
  max-width: 14ch;
  font-size: clamp(36px, 5.94vw, 84px);
  line-height: 0.9;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-paper);
}

.fb-case-stats__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  align-items: stretch;
  list-style: none;
  margin: 0;
  padding: 0;
}

.fb-case-stats__card {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  min-width: 0;
  padding: clamp(22px, 2.4vw, 32px);
  border: 1px solid rgba(255, 248, 242, 0.22);
  border-radius: 22px;
  background: rgba(23, 38, 63, 0.22);
  -webkit-backdrop-filter: blur(32px) saturate(1.45);
  backdrop-filter: blur(32px) saturate(1.45);
  box-shadow:
    inset 0 1px 0 rgba(255, 248, 242, 0.18),
    0 22px 48px rgba(8, 14, 28, 0.22);
}

.fb-case-stats__value {
  display: block;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(36px, 4.6vw, 64px);
  line-height: 0.9;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-accent);
  white-space: nowrap;
}

.fb-case-stats__label {
  display: block;
  margin-top: auto;
  padding-top: 14px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: rgba(255, 248, 242, 0.72);
  line-height: 1.25;
  min-height: 2lh;
}

@media (min-width: 901px) {
  .fb-case-stats__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .fb-case-stats__label {
    white-space: nowrap;
    min-height: 0;
  }
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .fb-case-stats__card {
    background: var(--fb-navy-hi);
  }
}

@media (prefers-reduced-transparency: reduce) {
  .fb-case-stats__card {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    background: var(--fb-navy-hi);
  }
}

.fb-case__pair {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(24px, 3vw, 52px);
}

.fb-case__block {
  padding-top: 8px;
}

.fb-case__block--wide {
  max-width: 780px;
  margin-top: clamp(28px, 3.2vw, 48px);
}

.fb-case__block-heading {
  margin-bottom: 14px;
  font-size: clamp(20px, 2.2vw, 30px);
  line-height: 1.1;
  letter-spacing: var(--fb-tracking-display);
}

.fb-case__block-text {
  font-size: var(--fb-size-copy);
  line-height: 1.74;
  color: var(--fb-tan-deep);
}

.fb-case__services {
  margin-top: clamp(28px, 3.2vw, 48px);
  padding-top: 8px;
}

.fb-case__service-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  margin-top: 18px;
  list-style: none;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(18px, 1.8vw, 24px);
  letter-spacing: var(--fb-tracking-display);
}

.fb-case__gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 14px;
  margin-top: clamp(28px, 3.2vw, 48px);
}

.fb-case__gallery img {
  display: block;
  width: 100%;
  height: auto;
}

.fb-case-quote {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  min-height: min(72vh, 780px);
  padding: clamp(80px, 12vw, 160px) var(--fb-pad);
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
  color: #fff;
  text-align: center;
}

.fb-case-quote__inner {
  position: relative;
  width: 100%;
  max-width: 1100px;
  min-width: 0;
  margin-inline: auto;
}

.fb-case-quote__mark {
  display: block;
  margin-bottom: 8px;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(120px, 18vw, 240px);
  line-height: 0.55;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-accent);
}

.fb-case-quote__card {
  margin: 0;
  min-width: 0;
  max-width: 100%;
}

.fb-case-quote__text {
  width: 100%;
  max-width: 100%;
  margin-inline: auto;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(36px, 6.4vw, 92px);
  line-height: 0.96;
  letter-spacing: var(--fb-tracking-display);
  color: #fff;
  overflow-wrap: break-word;
  text-wrap: balance;
}

.fb-case-quote__who {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: 8px 14px;
  margin-top: 28px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-accent);
}

.fb-case-quote__name {
  font-style: normal;
}

.fb-case-quote__role {
  color: rgba(255, 248, 242, 0.7);
}

.fb-case-more {
  padding-top: 0;
}

/* — text block — */

.fb-textblock {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-textblock__inner {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: 60px;
  align-items: start;
}

.fb-textblock__heading {
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-textblock__inner:not(:has(.fb-textblock__heading)) {
  grid-template-columns: 1fr;
}

.fb-textblock .fb-prose {
  max-width: 58ch;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
}

.fb-textblock__copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 28px;
  max-width: 58ch;
}

.fb-textblock__copy .fb-prose {
  max-width: none;
}

.fb-textblock__badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 20px 32px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.fb-textblock__badges li {
  display: flex;
  align-items: center;
  margin: 0;
}

.fb-textblock__badge {
  display: block;
  width: auto;
  max-width: 100%;
  object-fit: contain;
}

.fb-textblock__badge--google {
  height: 56px;
}

.fb-textblock__badge--kmo {
  height: 36px;
}

/* Heading-less prose: navy quote field, white copy. */
.fb-textblock--quote {
  background:
    radial-gradient(ellipse at 50% 42%, var(--fb-navy-hi) 0%, var(--fb-navy) 52%, var(--fb-navy-deep) 100%);
  color: #fff;
  text-align: center;
}

.fb-textblock--quote .fb-textblock__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  max-width: 920px;
  margin-inline: auto;
  gap: 0;
}

.fb-textblock__mark {
  display: block;
  margin-bottom: 12px;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(72px, 10vw, 140px);
  line-height: 0.55;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-accent);
}

.fb-textblock.fb-textblock--quote .fb-prose {
  width: min(36ch, 100%);
  max-width: 100%;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(22px, 3.2vw, 40px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
  color: #fff;
  text-wrap: pretty;
}

/* Full-width legal documents (cookie, privacy, terms). */

.fb-legal {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-legal__inner {
  display: grid;
  gap: 36px;
  width: 100%;
}

.fb-legal__heading {
  max-width: none;
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-legal .fb-prose {
  max-width: none;
  width: 100%;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
}

.fb-legal .fb-prose h2 {
  margin: 1.35em 0 0.45em;
  font-family: var(--fb-font-display);
  font-size: clamp(28px, 3.6vw, 48px);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-legal .fb-prose h2:first-child {
  margin-top: 0;
}

.fb-legal .fb-prose h3 {
  margin: 1.15em 0 0.4em;
  font-family: var(--fb-font-display);
  font-size: clamp(20px, 2.2vw, 28px);
  font-weight: 500;
  line-height: 1.15;
  color: var(--fb-navy);
}

.fb-legal .fb-prose ol {
  list-style: decimal;
  padding-left: 1.3em;
}

.fb-legal .fb-prose ol li {
  padding-left: 0.35em;
}

.fb-legal .fb-prose ol li::before {
  content: none;
}

/* Cookie banner: HF interaction, Fresh Blend chrome. */

.fb-cookie {
  pointer-events: none;
  position: fixed;
  inset-inline: 0;
  bottom: clamp(16px, 2.4vw, 28px);
  z-index: 80;
  display: flex;
  justify-content: center;
  padding-inline: var(--fb-pad);
  background: transparent;
}

.fb-cookie[hidden],
.fb-cookie [hidden] {
  display: none !important;
}

.fb-cookie:not([hidden]) {
  animation: fb-cookie-in 420ms var(--fb-ease) both;
}

.fb-cookie__card {
  pointer-events: auto;
  width: min(52.8rem, 100%);
  overflow: hidden;
  border-radius: 22px;
  background: var(--fb-paper);
  box-shadow: 0 28px 72px -24px rgba(23, 38, 63, 0.42);
}

.fb-cookie__main {
  display: grid;
  gap: 14px;
  padding: 16px 22px 14px;
}

.fb-cookie__title {
  margin: 0;
  font-family: var(--fb-font-display);
  font-size: clamp(16px, 1.5vw, 20px);
  font-weight: 500;
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  color: var(--fb-navy);
}

.fb-cookie__copy {
  margin: 6px 0 0;
  max-width: 52ch;
  font-family: var(--fb-font-body);
  font-size: 14px;
  line-height: 1.45;
  color: var(--fb-tan-deep);
}

.fb-cookie__actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.fb-cookie__actions--row {
  margin-top: 12px;
  flex-direction: row;
  flex-wrap: wrap;
}

.fb-cookie__actions--row .fb-cookie__btn {
  width: auto;
  flex: 1 1 10rem;
}

.fb-cookie__btn {
  display: inline-flex;
  height: 40px;
  width: 100%;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: 999px;
  padding-inline: 18px;
  font-family: var(--fb-font-ui);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: normal;
  white-space: nowrap;
  cursor: pointer;
  transition:
    background-color 280ms var(--fb-ease),
    border-color 280ms var(--fb-ease),
    color 220ms var(--fb-ease);
}

@media (min-width: 640px) {
  .fb-cookie__main {
    grid-template-columns: minmax(0, 1fr) minmax(13.75rem, auto);
    align-items: center;
    gap: 16px 24px;
  }

  .fb-cookie__actions {
    min-width: 13.75rem;
  }

  .fb-cookie__opts {
    grid-template-columns: 1fr;
  }
}

.fb-cookie__btn--fill {
  background: var(--fb-accent);
  border-color: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-cookie__btn--fill:hover,
.fb-cookie__btn--fill:focus-visible {
  background: var(--fb-navy);
  border-color: var(--fb-navy);
  color: var(--fb-paper);
}

.fb-cookie__btn--line {
  border-color: var(--fb-accent);
  background: transparent;
  color: var(--fb-accent);
}

.fb-cookie__btn--line:hover,
.fb-cookie__btn--line:focus-visible {
  background: var(--fb-navy);
  border-color: var(--fb-navy);
  color: var(--fb-paper);
}

.fb-cookie__prefs {
  padding: 16px 22px 14px;
}

.fb-cookie__opts {
  display: grid;
  gap: 8px;
  margin-top: 12px;
}

.fb-cookie__opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--fb-line);
  border-radius: 16px;
  padding: 10px 14px;
  cursor: pointer;
}

.fb-cookie__opt:has(input:disabled) {
  cursor: default;
  background: var(--fb-room);
}

.fb-cookie__opt-title {
  display: block;
  font-family: var(--fb-font-display);
  color: var(--fb-navy);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: var(--fb-tracking-display);
}

.fb-cookie__opt-help {
  display: block;
  margin-top: 0.12rem;
  font-family: var(--fb-font-body);
  font-size: 0.82rem;
  line-height: 1.35;
  color: var(--fb-tan-deep);
}

.fb-cookie__foot {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  background: var(--fb-beige);
  padding: 10px 22px;
  font-family: var(--fb-font-display);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-cookie__foot a {
  color: inherit;
  text-decoration: none;
}

.fb-cookie__foot a:hover,
.fb-cookie__foot a:focus-visible {
  color: var(--fb-accent);
}

.fb-cookie__switch {
  appearance: none;
  flex-shrink: 0;
  width: 2.75rem;
  height: 1.55rem;
  margin: 0;
  border: 0;
  border-radius: 999px;
  background: var(--fb-beige);
  box-shadow: inset 0 0 0 1px var(--fb-line);
  cursor: pointer;
  transition: background-color 220ms var(--fb-ease);
}

.fb-cookie__switch::after {
  content: "";
  display: block;
  width: 1.2rem;
  height: 1.2rem;
  margin: 0.175rem 0 0 0.175rem;
  border-radius: 999px;
  background: var(--fb-paper);
  box-shadow: 0 1px 4px rgba(23, 38, 63, 0.2);
  transition: transform 220ms var(--fb-ease);
}

.fb-cookie__switch:checked {
  background: var(--fb-accent);
  box-shadow: none;
}

.fb-cookie__switch:checked::after {
  transform: translateX(1.2rem);
}

.fb-cookie__switch:disabled {
  cursor: default;
  opacity: 1;
}

.fb-cookie__switch:focus-visible {
  outline: 2px solid var(--fb-accent);
  outline-offset: 3px;
}

@keyframes fb-cookie-in {
  from {
    opacity: 0;
    transform: translateY(1.1rem);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fb-cookie:not([hidden]) {
    animation: none;
  }
}

/* — platform row — */

.fb-chips {
  padding: var(--fb-section-y) var(--fb-pad);
  background: var(--fb-beige-fill);
}

.fb-chips__kicker {
  margin-bottom: 22px;
}

.fb-chips__intro {
  max-width: 54ch;
  margin: 0 0 36px;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
}

.fb-chips__grid {
  margin-top: 8px;
}

.fb-chips__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 8px 4px;
  margin-top: 8px;
}

.fb-chips__list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  list-style: none;
}

.fb-chips__chip {
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(18px, 1.8vw, 24px);
  letter-spacing: var(--fb-tracking-display);
}

/* — realisaties search + dienst tags — */

.fb-posts.fb-cases {
  padding-top: 36px;
}

.fb-posts.fb-cases > .fb-chapter {
  padding-block: clamp(28px, 3.1vw, 44px);
}

.fb-posts.fb-cases .fb-posts__grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(16px, 1.6vw, 24px);
}

.fb-posts.fb-cases .fb-posts__card {
  aspect-ratio: auto;
}

.fb-posts.fb-cases .fb-posts__mast {
  flex: 0 0 auto;
  aspect-ratio: 4 / 3;
}

.fb-posts.fb-articles {
  padding-top: 36px;
}

.fb-posts.fb-articles > .fb-chapter {
  padding-block: clamp(28px, 3.1vw, 44px);
}

.fb-posts.fb-articles .fb-posts__grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(16px, 1.6vw, 24px);
}

.fb-posts.fb-articles .fb-posts__card {
  aspect-ratio: auto;
}

.fb-posts.fb-articles .fb-posts__mast {
  flex: 0 0 auto;
  aspect-ratio: 4 / 3;
}

.fb-posts.fb-home-posts .fb-posts__grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(16px, 1.6vw, 24px);
}

.fb-posts.fb-home-posts .fb-posts__card {
  aspect-ratio: auto;
}

.fb-posts.fb-home-posts .fb-posts__mast {
  flex: 0 0 auto;
  aspect-ratio: 4 / 3;
}

.fb-posts:not(.fb-cases) .fb-posts__tag {
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  background: color-mix(in srgb, var(--fb-room) 70%, #fff);
}

.fb-posts__card[hidden] {
  display: none;
}

.fb-filter {
  display: grid;
  gap: 22px;
  padding: 8px var(--fb-pad) 44px;
}

.fb-filter__search {
  position: relative;
  display: grid;
  width: min(100%, 28rem);
}

.fb-filter__search-icon {
  position: absolute;
  left: 16px;
  top: 50%;
  display: block;
  width: 18px;
  height: 18px;
  color: var(--fb-tan);
  pointer-events: none;
  transform: translateY(-50%);
}

.fb-filter__search-icon svg {
  display: block;
  width: 100%;
  height: 100%;
}

.fb-filter__search-input {
  width: 100%;
  padding: 12px 16px 12px 44px;
  border: 1px solid var(--fb-line);
  border-radius: 0;
  background: var(--fb-paper);
  color: var(--fb-navy);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(15px, 1.35vw, 18px);
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  appearance: none;
}

.fb-filter__search-input::-webkit-search-decoration,
.fb-filter__search-input::-webkit-search-results-button,
.fb-filter__search-input::-webkit-search-results-decoration {
  display: none;
}

.fb-filter__search-input:hover,
.fb-filter__search-input:focus-visible {
  border-color: var(--fb-accent);
}

.fb-filter__search-input:focus {
  outline: none;
}

.fb-filter__search-input:focus-visible {
  box-shadow: 0 0 0 3px rgba(255, 106, 46, 0.16);
}

.fb-filter__search-input::placeholder {
  color: var(--fb-tan);
  font-weight: 400;
}

.fb-filter__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.fb-filter__tag {
  display: inline-flex;
  align-items: center;
  padding: 10px 14px;
  border: 1px solid var(--fb-line);
  background: var(--fb-paper);
  color: var(--fb-tan-deep);
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(15px, 1.35vw, 18px);
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  text-decoration: none;
  white-space: nowrap;
  transition:
    border-color 200ms ease,
    background-color 200ms ease,
    color 200ms ease,
    box-shadow 200ms ease;
}

.fb-filter__tag:hover,
.fb-filter__tag:focus-visible {
  border-color: var(--fb-accent);
  color: var(--fb-navy);
}

.fb-filter__tag.is-on {
  border-color: var(--fb-navy);
  background: var(--fb-navy);
  color: var(--fb-paper);
}

.fb-filter__tag.is-on:hover,
.fb-filter__tag.is-on:focus-visible {
  border-color: var(--fb-accent);
  background: var(--fb-accent);
  color: var(--fb-paper);
}

.fb-filter__hint {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  column-gap: clamp(24px, 6vw, 80px);
  min-height: calc(4px + (var(--fb-size-copy) * 1.72 * 2));
  padding-top: 4px;
}

.fb-filter__hint:not(.is-on) {
  visibility: hidden;
  pointer-events: none;
}

.fb-filter__blurb {
  max-width: 46ch;
  min-height: 2lh;
  margin: 0;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.72;
  color: var(--fb-copy);
}

.fb-filter__more {
  justify-self: end;
  padding-top: 0.2em;
}

.fb-filter__empty {
  padding: 8px var(--fb-pad) 48px;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.72;
  color: var(--fb-tan-deep);
}

.fb-filter__empty[hidden] {
  display: none;
}

/* — diensten directory: lifted cards, scattered like HF Projects — */

.fb-dienstgrid {
  overflow: visible;
}

.fb-dienstgrid__head {
  margin-bottom: 36px;
}

.fb-dienstgrid__heading {
  font-size: clamp(32px, 4.4vw, 58px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
  color: var(--fb-navy);
}

.fb-dienstgrid .fb-chips__intro {
  margin: 16px 0 0;
}

.fb-dienstgrid__list {
  isolation: isolate;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(20px, 2vw, 28px) clamp(16px, 1.6vw, 24px);
  align-items: stretch;
  padding: 12px 4px 36px;
}

.fb-dienstgrid__item {
  position: relative;
  z-index: 0;
  display: flex;
  flex-direction: column;
  align-self: stretch;
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.fb-dienstgrid__item:hover,
.fb-dienstgrid__item:focus-visible {
  z-index: 2;
}

.fb-dienstgrid__item--0 {
  rotate: -1.6deg;
  translate: 6px 8px;
}

.fb-dienstgrid__item--1 {
  rotate: 2.1deg;
  translate: -10px 26px;
}

.fb-dienstgrid__item--2 {
  rotate: -0.8deg;
  translate: 8px -6px;
}

.fb-dienstgrid__item--3 {
  rotate: 1.5deg;
  translate: -4px 20px;
}

.fb-dienstgrid__item--4 {
  rotate: 1.8deg;
  translate: 10px 6px;
}

.fb-dienstgrid__item--5 {
  rotate: -1.4deg;
  translate: -8px 22px;
}

.fb-dienstgrid__item--6 {
  rotate: 0.7deg;
  translate: 2px -4px;
}

.fb-dienstgrid__item--7 {
  rotate: -2deg;
  translate: 12px 14px;
}

.fb-dienstgrid__card {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  align-self: stretch;
  min-width: 0;
  padding: clamp(22px, 2vw, 32px);
  overflow: hidden;
  border-radius: 24px;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  transform-style: preserve-3d;
  transform: perspective(900px) rotateX(0deg) rotateY(0deg) scale(1);
  box-shadow:
    0 18px 40px rgba(23, 38, 63, 0.14),
    0 2px 8px rgba(23, 38, 63, 0.06);
  animation: fb-dienst-float 7.4s ease-in-out infinite;
  will-change: transform, translate;
  transition: box-shadow 260ms ease;
}

.fb-dienstgrid__item--1 .fb-dienstgrid__card {
  animation-duration: 8.6s;
  animation-delay: -2.1s;
}

.fb-dienstgrid__item--2 .fb-dienstgrid__card {
  animation-duration: 6.9s;
  animation-delay: -4.4s;
}

.fb-dienstgrid__item--3 .fb-dienstgrid__card {
  animation-duration: 8.1s;
  animation-delay: -1.2s;
}

.fb-dienstgrid__item--4 .fb-dienstgrid__card {
  animation-duration: 7.7s;
  animation-delay: -5.3s;
}

.fb-dienstgrid__item--5 .fb-dienstgrid__card {
  animation-duration: 8.3s;
  animation-delay: -3.2s;
}

.fb-dienstgrid__item--6 .fb-dienstgrid__card {
  animation-duration: 7.1s;
  animation-delay: -6s;
}

.fb-dienstgrid__item--7 .fb-dienstgrid__card {
  animation-duration: 8.8s;
  animation-delay: -1.8s;
}

@keyframes fb-dienst-float {
  0%,
  100% {
    translate: 0 0;
  }

  50% {
    translate: 0 -0.7rem;
  }
}

.fb-dienstgrid__item:hover .fb-dienstgrid__card,
.fb-dienstgrid__item:focus-visible .fb-dienstgrid__card {
  box-shadow:
    0 26px 52px rgba(23, 38, 63, 0.18),
    0 4px 12px rgba(23, 38, 63, 0.08);
}

.fb-dienstgrid__item:focus-visible {
  outline: none;
}

.fb-dienstgrid__item:focus-visible .fb-dienstgrid__card {
  box-shadow:
    0 0 0 3px rgba(255, 106, 46, 0.16),
    0 26px 52px rgba(23, 38, 63, 0.18),
    0 4px 12px rgba(23, 38, 63, 0.08);
}

.fb-dienstgrid__shine {
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  opacity: 0;
}

.fb-dienstgrid__copy {
  position: relative;
  z-index: 1;
  display: flex;
  flex: 1;
  flex-direction: column;
}

.fb-dienstgrid__title {
  display: block;
  min-height: 2lh;
  margin-bottom: 12px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: clamp(20px, 1.55vw, 26px);
  letter-spacing: var(--fb-tracking-display);
  line-height: 1.15;
  color: var(--fb-navy);
}

a.fb-dienstgrid__item:hover .fb-dienstgrid__title,
a.fb-dienstgrid__item:focus-visible .fb-dienstgrid__title {
  color: var(--fb-accent);
}

.fb-dienstgrid__text {
  display: block;
  flex: 1;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.72;
  color: var(--fb-copy);
}

.fb-dienstgrid__more {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4em;
  margin-top: auto;
  padding-top: 22px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fb-tan-deep);
  transition: color 260ms ease;
}

.fb-dienstgrid__more-label {
  min-width: 0;
}

a.fb-dienstgrid__item:hover .fb-dienstgrid__more,
a.fb-dienstgrid__item:focus-visible .fb-dienstgrid__more {
  color: var(--fb-accent);
}

.fb-dienstgrid__arrow {
  display: inline-block;
  transition: transform 420ms var(--fb-ease);
}

.fb-dienstgrid--labels .fb-dienstgrid__card {
  min-height: 168px;
  justify-content: center;
}

.fb-dienstgrid--labels .fb-dienstgrid__copy {
  justify-content: center;
}

.fb-dienstgrid--labels .fb-dienstgrid__title {
  margin-bottom: 0;
}

@media (prefers-reduced-motion: reduce) {
  .fb-dienstgrid__item,
  .fb-dienstgrid__item--0,
  .fb-dienstgrid__item--1,
  .fb-dienstgrid__item--2,
  .fb-dienstgrid__item--3,
  .fb-dienstgrid__item--4,
  .fb-dienstgrid__item--5,
  .fb-dienstgrid__item--6,
  .fb-dienstgrid__item--7 {
    rotate: 0deg;
    translate: 0;
  }

  .fb-dienstgrid__card {
    animation: none;
    transform: none;
    will-change: auto;
  }

  .fb-dienstgrid__shine {
    display: none;
  }
}

/* — questions —
   Not the offer index: those rows are full-bleed display titles.
   FAQ sits in a padded two-column, with compact UI-type cards. */

.fb-faq {
  padding: var(--fb-section-y) 0 80px;
}

.fb-faq__inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  padding: 0 var(--fb-pad);
}

.fb-faq__inner:has(.fb-faq__heading) {
  grid-template-columns: minmax(12rem, 0.38fr) minmax(0, 1fr);
  gap: 40px 64px;
  align-items: start;
}

.fb-faq__heading {
  /* Margin, not padding: title-reveal JS bakes lines from clientWidth. */
  margin: 0;
  min-width: 0;
  container-type: inline-size;
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

body.fb-page .fb-faq__heading {
  max-width: none;
  font-size: clamp(28px, 15cqi, 56px);
  line-height: 0.92;
}

/* Default “Veelgestelde vragen” sits in the leftover column: two locked
   lines, type scaled to that width so the mask cannot clip a word. */
.fb-faq__heading--stack {
  min-width: 0;
}

.fb-faq__heading--stack > span {
  display: block;
  white-space: nowrap;
}

body.fb-page .fb-faq__heading.fb-faq__heading--stack {
  max-width: none;
  font-size: clamp(24px, 11cqi, 46px);
  line-height: 0.92;
}

.fb-faq__heading--stack .fb-title__line {
  white-space: nowrap;
}

.fb-faq__list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}

.fb-faq__item {
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(23, 38, 63, 0.06);
}

.fb-faq__item.is-open,
html:not(.fb-js) .fb-faq__item[open] {
  background: var(--fb-paper);
}

.fb-faq__question {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 40px;
  gap: 16px;
  align-items: center;
  padding: 20px 22px;
  cursor: pointer;
  list-style: none;
}

.fb-faq__question::-webkit-details-marker {
  display: none;
}

.fb-faq__text {
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: clamp(16px, 1.35vw, 20px);
  line-height: 1.35;
  letter-spacing: -0.01em;
  color: var(--fb-navy);
}

/* A plus sign drawn from two rules, rotated into a minus when open. */
.fb-faq__sign {
  position: relative;
  align-self: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--fb-line);
  border-radius: 999px;
  background: transparent;
  transition:
    background-color 0.3s var(--fb-ease),
    border-color 0.3s var(--fb-ease);
}

.fb-faq__sign::before,
.fb-faq__sign::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 1.5px;
  margin: -0.75px 0 0 -6px;
  background: var(--fb-espresso);
  transition:
    transform 0.3s var(--fb-ease),
    background-color 0.3s var(--fb-ease);
}

.fb-faq__sign::after {
  transform: rotate(90deg);
}

.fb-faq__question:hover .fb-faq__sign,
.fb-faq__question:focus-visible .fb-faq__sign {
  border-color: var(--fb-navy);
}

.fb-faq__item.is-open .fb-faq__sign,
html:not(.fb-js) .fb-faq__item[open] .fb-faq__sign {
  background: var(--fb-navy);
  border-color: var(--fb-navy);
}

.fb-faq__item.is-open .fb-faq__sign::before,
.fb-faq__item.is-open .fb-faq__sign::after,
html:not(.fb-js) .fb-faq__item[open] .fb-faq__sign::before,
html:not(.fb-js) .fb-faq__item[open] .fb-faq__sign::after {
  background: var(--fb-paper);
}

.fb-faq__item.is-open .fb-faq__sign::after,
html:not(.fb-js) .fb-faq__item[open] .fb-faq__sign::after {
  transform: rotate(0deg);
}

.fb-faq__panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 560ms var(--fb-ease);
}

.fb-faq__body {
  overflow: hidden;
  min-height: 0;
}

.fb-faq__answer {
  max-width: 62ch;
  padding: 0 22px 22px;
  font-size: var(--fb-size-copy);
  line-height: 1.74;
  color: var(--fb-tan-deep);
  opacity: 0;
  transform: translateY(8px);
  transition:
    opacity 380ms var(--fb-ease),
    transform 380ms var(--fb-ease);
}

.fb-faq__item.is-open .fb-faq__panel,
html:not(.fb-js) .fb-faq__item[open] .fb-faq__panel {
  grid-template-rows: 1fr;
}

.fb-faq__item.is-open .fb-faq__answer,
html:not(.fb-js) .fb-faq__item[open] .fb-faq__answer {
  opacity: 1;
  transform: none;
  transition-delay: 80ms;
}

@media (prefers-reduced-motion: reduce) {
  .fb-faq__panel,
  .fb-faq__answer,
  .fb-faq__sign,
  .fb-faq__sign::before,
  .fb-faq__sign::after {
    transition: none;
  }

  .fb-faq__item[open] .fb-faq__panel,
  .fb-faq__item.is-open .fb-faq__panel {
    grid-template-rows: 1fr;
  }

  .fb-faq__item[open] .fb-faq__answer,
  .fb-faq__item.is-open .fb-faq__answer {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 900px) {
  .fb-faq__inner:has(.fb-faq__heading) {
    grid-template-columns: 1fr;
    gap: 28px;
  }
}

@media (max-width: 640px) {
  .fb-faq__question {
    gap: 12px;
    padding: 18px 16px;
  }

  .fb-faq__answer {
    padding: 0 16px 18px;
  }

  body.fb-page .fb-faq__heading {
    max-width: none;
  }
}

/* — people — */

.fb-people {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-people__head {
  margin-bottom: 48px;
}

.fb-people__heading {
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-people__intro {
  max-width: 54ch;
  margin-top: 18px;
  font-weight: 400;
  font-size: var(--fb-size-copy);
  line-height: 1.82;
}

/* — contact — */

.fb-contact {
  padding: var(--fb-section-y) var(--fb-pad);
}

.fb-contact__heading {
  margin-bottom: 56px;
  font-size: clamp(34px, 5.3vw, 76px);
  line-height: 0.92;
  letter-spacing: var(--fb-tracking-display);
}

.fb-contact__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: clamp(30px, 4vw, 76px);
  align-items: start;
}

.fb-contact__row,
.fb-contact__row:last-child {
  color: inherit;
  text-decoration: none;
  border: none;
}

.fb-contact__row .fb-team__name {
  transition: color 200ms ease;
}

.fb-contact__row:hover .fb-team__name,
.fb-contact__row:focus-visible .fb-team__name {
  color: var(--fb-accent);
}

.fb-contact__row .fb-team__role {
  text-transform: none;
  letter-spacing: 0;
  font-size: clamp(15px, 1.25vw, 18px);
  line-height: 1.35;
  max-width: 24ch;
}

.fb-contact__form {
  background: var(--fb-beige-fill);
  padding: var(--fb-card-pad);
  font-family: var(--fb-font-ui);
}

.fb-contact__form-heading {
  margin-bottom: 10px;
  font-size: clamp(21px, 2.2vw, 30px);
  line-height: 1.14;
  letter-spacing: var(--fb-tracking-display);
}

.fb-contact__form-intro {
  max-width: 54ch;
  margin-bottom: 28px;
  font-family: var(--fb-font-ui);
  line-height: 1.72;
  color: var(--fb-tan-deep);
}

.fb-contact__map {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: clamp(30px, 4vw, 76px);
  align-items: stretch;
  margin-top: clamp(48px, 6vw, 88px);
}

.fb-contact__map-kicker {
  margin-bottom: 10px;
  font-family: var(--fb-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb-contact__map-heading {
  margin-bottom: 14px;
  font-size: clamp(26px, 3.2vw, 44px);
  line-height: 1.08;
  letter-spacing: var(--fb-tracking-display);
}

.fb-contact__map-intro {
  max-width: 42ch;
  line-height: 1.72;
  color: var(--fb-tan-deep);
}

.fb-contact__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 28px;
}

.fb-contact__nav-btn {
  gap: 10px;
  padding-inline: 18px;
}

.fb-contact__nav-btn svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

.fb-contact__map-frame {
  min-height: 320px;
  background: var(--fb-beige-fill);
  overflow: hidden;
}

.fb-contact__map-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 320px;
  border: 0;
}

.fb-contact--briefing .fb-contact__grid {
  grid-template-columns: 1fr;
  max-width: none;
}

.fb-contact--briefing .fb-contact__form {
  background: transparent;
  padding: 0;
}

.fb-contact--briefing .fb-contact__form-heading {
  margin-bottom: 14px;
  font-size: clamp(32px, 4.6vw, 64px);
  line-height: 0.98;
}

.fb-contact--briefing .fb-contact__form-intro {
  max-width: 54ch;
  margin-bottom: 18px;
  font-family: var(--fb-font-body);
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  color: var(--fb-copy);
}

.fb-contact--briefing .fb-contact__form-intro + .fb-contact__form-intro {
  margin-bottom: 18px;
}

.fb-contact--briefing .fb-contact__form-cta {
  margin: 8px 0 40px;
}

.fb-contact--briefing .fb-contact__map {
  max-width: none;
}

/* — forms —
   The markup comes from components/contact-form.blade.php, which is shared
   with the pages still running on site.css, so the brand skin is scoped. */

.fb .form {
  display: grid;
  gap: 20px;
  max-width: 640px;
  font-family: var(--fb-font-ui);
}

.fb-contact__form .form {
  max-width: none;
}

.fb .form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.fb .form__row--3 {
  grid-template-columns: 1fr 1fr 1fr;
}

.fb .form__group {
  display: grid;
  gap: 8px;
  /* site.css spaces the groups with a margin; here the grid gap does it. */
  margin-bottom: 0;
}

.fb .form__label {
  margin-bottom: 0;
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb .form__required {
  color: var(--fb-accent);
}

.fb .form input,
.fb .form textarea,
.fb .form select {
  width: 100%;
  padding: 13px 16px;
  border: 1px solid var(--fb-tan);
  border-radius: 0;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  font-family: var(--fb-font-ui);
  font-size: 18px;
  line-height: 1.5;
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease;
}

.fb .form input:focus,
.fb .form textarea:focus,
.fb .form select:focus {
  outline: none;
  border-color: var(--fb-accent);
  background: var(--fb-paper);
  box-shadow: 0 0 0 3px rgba(255, 106, 46, 0.16);
}

.fb .form input::placeholder,
.fb .form textarea::placeholder {
  color: var(--fb-tan);
}

.fb .form textarea {
  min-height: 160px;
  resize: vertical;
}

.fb .form__group--compact textarea {
  min-height: 96px;
}

.fb .form input[type="file"] {
  padding: 11px 12px;
  font-size: 15px;
  cursor: pointer;
}

.fb .form__color {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 10px;
  align-items: stretch;
}

.fb .form input[type="color"],
.fb .form .form__color-picker {
  box-sizing: border-box;
  width: 56px;
  min-width: 56px;
  height: 56px;
  padding: 0;
  border: 1px solid var(--fb-line);
  border-radius: 0;
  background: transparent;
  overflow: hidden;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}

.fb .form .form__color-picker::-webkit-color-swatch-wrapper {
  padding: 0;
}

.fb .form .form__color-picker::-webkit-color-swatch {
  border: 0;
  border-radius: 0;
}

.fb .form .form__color-picker::-moz-color-swatch {
  border: 0;
  border-radius: 0;
}

.fb .form--briefing .form__row:has(.form__group--color) {
  grid-template-columns: minmax(148px, 0.9fr) minmax(0, 1.1fr) minmax(0, 1.1fr);
  gap: 12px;
  align-items: start;
}

.fb .form--briefing [data-fb-brief-panel="brand"] {
  gap: 18px;
}

.fb .form--briefing [data-fb-brief-panel="brand"] .form__help {
  font-size: 12px;
  line-height: 1.45;
}

.fb .form__fieldset {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  border: 0;
}

.fb .form__checkbox {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 0;
  font-size: 15px;
  line-height: 1.6;
  color: var(--fb-espresso);
}

.fb .form__checkbox input {
  width: auto;
  margin-top: 4px;
  padding: 0;
  accent-color: var(--fb-accent);
}

.fb .form__choices {
  display: grid;
  gap: 8px;
}

.fb .form__choice,
.fb .form__chip {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 0;
  min-height: 46px;
  padding: 10px 18px;
  border: 1px solid var(--fb-tan);
  border-radius: 999px;
  background: var(--fb-paper);
  color: var(--fb-espresso);
  font-family: var(--fb-font-ui);
  font-size: 15px;
  line-height: 1.25;
  text-align: center;
  cursor: pointer;
  transition:
    background-color 200ms ease,
    border-color 200ms ease,
    color 200ms ease,
    box-shadow 200ms ease;
}

.fb .form__choice input,
.fb .form__chip input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: pointer;
}

.fb .form__choice:hover,
.fb .form__chip:hover,
.fb .form__choice:has(input:focus-visible),
.fb .form__chip:has(input:focus-visible) {
  border-color: var(--fb-accent);
}

.fb .form__choice:has(input:checked),
.fb .form__chip:has(input:checked) {
  background: var(--fb-accent);
  border-color: var(--fb-accent);
  color: var(--fb-paper);
  box-shadow: none;
}

.fb .form__choice span,
.fb .form__chip span {
  position: relative;
  z-index: 1;
  pointer-events: none;
}

.fb .form__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.fb .form__block {
  display: grid;
  gap: 20px;
  padding-top: 36px;
  border-top: 1px solid var(--fb-line);
}

.fb .form__honeypot + .form__block,
.fb .form__board > .form__block:first-child {
  padding-top: 4px;
  border-top: 0;
}

.fb .form__stage {
  display: grid;
  gap: 0;
  min-width: 0;
  max-width: 100%;
}

.fb .form__progress {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 4px 0 0;
  background: none;
}

.fb .form__progress-step {
  margin: 0 0 2px;
  white-space: nowrap;
}

.fb .form__progress-tabs {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 6px;
  align-items: end;
  min-width: 0;
  padding: 8px 8px 0;
  border-radius: 16px 16px 0 0;
  background: #fff;
}

.fb .form__tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 0;
  padding: 14px 12px;
  border: 0;
  border-radius: 16px 16px 0 0;
  background: color-mix(in srgb, var(--fb-navy) 22%, #fff);
  color: var(--fb-navy);
  font-family: var(--fb-font-ui);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.08em;
  line-height: 1.15;
  text-transform: uppercase;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background-color 200ms ease,
    color 200ms ease;
}

.fb .form__tab:hover,
.fb .form__tab:focus-visible {
  background: color-mix(in srgb, var(--fb-navy) 34%, #fff);
  color: var(--fb-navy);
}

.fb .form__tab.is-on,
.fb .form__tab[aria-selected="true"] {
  background: var(--fb-accent);
  color: var(--fb-paper);
}

.fb .form__tab.is-on:hover,
.fb .form__tab.is-on:focus-visible,
.fb .form__tab[aria-selected="true"]:hover,
.fb .form__tab[aria-selected="true"]:focus-visible {
  background: var(--fb-accent-dark);
  color: var(--fb-paper);
}

.fb .form__tab.is-done:not(.is-on) {
  background: var(--fb-espresso);
  color: var(--fb-paper);
}

.fb .form__tab-num {
  color: var(--fb-accent);
}

.fb .form__tab.is-on .form__tab-num,
.fb .form__tab[aria-selected="true"] .form__tab-num {
  color: var(--fb-navy);
}

.fb .form__tab.is-done:not(.is-on) .form__tab-num {
  color: var(--fb-accent);
}

.fb .form__tab-label {
  overflow: hidden;
  text-overflow: ellipsis;
}

.fb .form__tab-check {
  display: none;
  flex: none;
  width: 14px;
  height: 14px;
}

.fb .form__tab-check svg {
  display: block;
  width: 100%;
  height: 100%;
}

.fb .form__tab.is-done .form__tab-check {
  display: block;
}

.fb .form__board {
  display: grid;
  gap: 28px;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  padding: 28px clamp(24px, 3.2vw, 44px) 32px;
  border-radius: 0 0 16px 16px;
  background: #fff;
}

.fb .form--briefing .form__block {
  gap: 32px;
}

.fb .form--briefing .form__row {
  gap: 28px;
}

.fb .form--briefing .form__group {
  gap: 10px;
}

.fb .form--briefing .form__chips {
  gap: 12px;
}

.fb .form--briefing .form__block-title {
  margin: 0 0 8px;
}

.fb .form--briefing .form__help {
  margin: 2px 0 0;
}

.fb .form__pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 8px;
}

.fb .form--briefing .form__pager {
  margin-top: 12px;
  padding-top: 8px;
}

.fb .form--briefing .form__pager [data-fb-brief-next],
.fb .form--briefing .form__pager .form__submit {
  margin-left: auto;
}

.fb .form__review {
  display: grid;
  gap: 18px;
}

.fb .form__review-block {
  display: grid;
  gap: 10px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--fb-line);
}

.fb .form__review-block:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.fb .form__review-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
}

.fb .form__review-title {
  margin: 0;
  font-family: var(--fb-font-ui);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.fb .form__review-edit {
  padding: 0;
  border: 0;
  background: none;
  color: var(--fb-accent);
  font-family: var(--fb-font-ui);
  font-size: 13px;
  letter-spacing: 0.04em;
  cursor: pointer;
}

.fb .form__review-edit:hover,
.fb .form__review-edit:focus-visible {
  color: var(--fb-navy);
}

.fb .form__review-list {
  display: grid;
  gap: 8px;
  margin: 0;
}

.fb .form__review-list div {
  display: grid;
  gap: 2px;
}

.fb .form__review-list dt {
  font-family: var(--fb-font-ui);
  font-size: 11px;
  letter-spacing: var(--fb-tracking-ui);
  text-transform: uppercase;
  color: var(--fb-tan-deep);
}

.fb .form__review-list dd {
  margin: 0;
  font-family: var(--fb-font-ui);
  font-size: 15px;
  line-height: 1.45;
}

@media (max-width: 640px) {
  .fb .form--briefing .form__pager {
    flex-direction: column;
    align-items: stretch;
  }

  .fb .form--briefing .form__pager .fb-btn {
    width: 100%;
    margin-left: 0;
  }
}

@media (max-width: 980px) {
  .fb .form__progress-tabs {
    display: flex;
    overflow-x: auto;
    scrollbar-width: thin;
  }

  .fb .form__tab {
    flex: none;
    min-width: 11.5rem;
  }
}

html.fb-js .form--briefing[data-fb-brief-wizard].is-ready .form__block:not(.is-active) {
  display: none;
}

html.fb-js .form--briefing[data-fb-brief-wizard].is-ready .form__block {
  padding-top: 12px;
  border-top: 0;
}

html.fb-js .form--briefing.is-ready.is-first [data-fb-brief-prev] {
  opacity: 0.38;
  pointer-events: none;
}

html.fb-js .form--briefing.is-ready.is-last [data-fb-brief-next] {
  display: none;
}

html.fb-js .form--briefing[data-fb-brief-wizard].is-ready:not(.is-last) .form__submit {
  display: none;
}

html.fb-js .form--briefing[data-fb-brief-wizard]:not(.is-ready) [data-fb-brief-prev],
html.fb-js .form--briefing[data-fb-brief-wizard]:not(.is-ready) [data-fb-brief-next],
html:not(.fb-js) .form__progress,
html:not(.fb-js) [data-fb-brief-prev],
html:not(.fb-js) [data-fb-brief-next] {
  display: none;
}

.fb .form__block-kicker {
  margin-bottom: 0;
  color: var(--fb-accent);
}

.fb .form__block-title {
  margin: -6px 0 8px;
  font-family: var(--fb-font-display);
  font-weight: 900;
  font-size: clamp(26px, 3vw, 40px);
  line-height: 1.05;
  letter-spacing: var(--fb-tracking-display);
}

.fb .form__help {
  font-size: 13px;
  line-height: 1.6;
  color: var(--fb-tan-deep);
}

.fb .form__error {
  font-size: 13px;
  color: #b8341c;
}

.fb .form__group--error input,
.fb .form__group--error textarea,
.fb .form__group--error select {
  border-color: #b8341c;
}

.fb .form__success {
  max-width: 640px;
  margin-bottom: 26px;
  padding: 16px 20px;
  border-left: 3px solid var(--fb-accent);
  background: var(--fb-beige-fill);
}

/* Leftover .btn markup (page builder, partner CTA) uses the same tokens. */
.fb .form__submit {
  justify-self: start;
  margin-top: 6px;
}

.fb .form__submit.fb-hero__badge {
  margin-top: 18px;
}

/* — rendered markdown — */

.fb-prose {
  font-family: var(--fb-font-body);
  font-weight: 400;
  font-style: normal;
  font-size: var(--fb-size-copy);
  letter-spacing: var(--fb-tracking-body);
  line-height: var(--fb-copy-lh);
  color: var(--fb-copy);
}

.fb-prose p {
  margin-bottom: 1em;
}

.fb-prose > :last-child {
  margin-bottom: 0;
}

.fb-prose ul,
.fb-prose ol {
  margin: 0 0 1em;
  padding: 0;
  list-style: none;
}

.fb-prose li {
  position: relative;
  margin-bottom: 14px;
  padding-left: 24px;
}

.fb-prose li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--fb-accent);
  transform: translateY(-50%);
}

.fb-prose strong {
  font-weight: 600;
}

.fb-prose a {
  color: var(--fb-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 1100px) {
  .fb-index__head {
    flex-direction: column;
    align-items: center;
    gap: 18px;
    padding-top: 132px;
    padding-bottom: 72px;
  }

  .fb-chapter,
  .fb-offer__head {
    padding-block: clamp(48px, 9vw, 72px);
  }

  .fb-posts.fb-cases > .fb-chapter,
  .fb-posts.fb-articles > .fb-chapter {
    padding-block: clamp(24px, 4.5vw, 36px);
  }

  .fb-approach__grid,
  .fb-approach__grid:has(> :nth-child(3):last-child),
  .fb-approach__grid:has(> :nth-child(4):last-child),
  .fb-approach__grid:has(> :nth-child(n+5)) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .fb-posts.fb-cases .fb-posts__grid,
  .fb-posts.fb-articles .fb-posts__grid,
  .fb-posts.fb-home-posts .fb-posts__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(1),
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(2),
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(3),
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(4) {
    grid-column: auto;
    width: auto;
    margin-top: 0;
    justify-self: stretch;
  }

  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(even) {
    margin-top: 36px;
  }

  .fb-approach__title,
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(1) .fb-approach__title,
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(4) .fb-approach__title {
    max-width: none;
    font-size: clamp(22px, 2.6vw, 28px);
  }

  .fb-values__photo--start {
    width: min(30vw, 300px);
  }

  .fb-bureau {
    grid-template-columns: 1fr;
    gap: 54px;
  }

  .fb-bureau .fb-break__grid,
  .fb-bureau .fb-break__grid:has(> :nth-child(2):last-child) {
    display: grid;
    grid-template-columns: 1.2fr 0.92fr;
    min-height: clamp(280px, 62vw, 420px);
    height: auto;
  }

  .fb-bureau .fb-break__frame:nth-child(1),
  .fb-bureau .fb-break__frame:nth-child(2) {
    position: relative;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: auto;
    height: auto;
    min-height: 220px;
    transform: none;
    will-change: auto;
  }

  .fb-blog__row {
    grid-template-columns: 110px 1fr 1fr 30px;
    gap: 18px;
  }

  .fb-features__head,
  .fb-explain__head,
  .fb-textblock__inner {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .fb-textblock__badge--google {
    height: 48px;
  }

  .fb-textblock__badge--kmo {
    height: 28px;
  }

  .fb-features__grid,
  .fb-explain__grid,
  .fb-explain__grid:has(> :nth-child(3):last-child) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .fb-dienstgrid__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .fb-features__title {
    min-height: 0;
  }

  .fb-reviews__stage {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

  .fb-reviews__backdrop {
    grid-column: 2 / 5;
  }

  .fb-reviews__card:nth-child(1) {
    grid-column: 1;
    grid-row: 2;
  }

  .fb-reviews__card:nth-child(2) {
    grid-column: 2;
    grid-row: 1;
  }

  .fb-reviews__card:nth-child(3) {
    grid-column: 4;
    grid-row: 3;
  }

  .fb-reviews__card:nth-child(4) {
    grid-column: 5;
    grid-row: 2;
  }

  .fb-reviews__card:nth-child(5),
  .fb-reviews__card:nth-child(6) {
    display: none;
  }
}

@media (max-width: 900px) {
  .fb-hero {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow-x: clip;
  }

  .fb-hero__body {
    order: 1;
    max-width: none;
    padding-bottom: 56px;
  }

  .fb-hero__media {
    order: 2;
    position: relative;
    inset: auto;
    height: 300px;
    -webkit-mask-image: none;
    mask-image: none;
  }

  /* The standalone scrim is anchored to the hero, which no longer matches the
     photo once the photo drops into the flow — so tint the photo itself. */
  .fb-hero__scrim {
    display: none;
  }

  .fb-hero__media::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
      to top,
      rgba(58, 42, 28, 0.55) 0%,
      rgba(58, 42, 28, 0) 60%
    );
  }

  .fb-hero__mark {
    right: 20px;
    bottom: 20px;
  }

  /* Keep the band on the photo. Relative + left:-6% only shifts a
     100% bar off-screen, so body overflow-x clips the left edge and
     the tilt hangs onto the white section below.
     A small hang matches desktop: the high side of the tilt meets
     the photo edge, the low side sits on the next band. */
  .fb-marquee {
    position: absolute;
    left: -12%;
    right: -12%;
    bottom: -24px;
    margin-top: 0;
    width: auto;
  }

  body.fb-home .fb-hero__mark,
  body.fb-home .fb-mark.fb-hero__mark {
    bottom: 72px;
    height: clamp(88px, 24vw, 120px);
  }

  body.fb-home .fb-index .fb-chapter--accent {
    margin-top: 0;
  }

  .fb-page-hero__client {
    color: var(--fb-accent);
  }

  .fb-work__grid {
    display: flex;
    flex-direction: column;
    gap: 44px;
  }

  .fb-work__item:nth-child(1),
  .fb-work__item:nth-child(2),
  .fb-work__item:nth-child(3) {
    margin-top: 0;
    padding-right: 0;
  }

  .fb-work__visual,
  .fb-work__item:nth-child(2) .fb-work__visual,
  .fb-work__item:nth-child(3) .fb-work__visual {
    height: 260px;
  }

  .fb-laptop,
  .fb-laptop:not(.is-scroll) {
    height: auto;
  }

  .fb-laptop__nav {
    width: 52px;
    height: 52px;
  }

  .fb-laptop__nav svg {
    width: 40px;
    height: 40px;
  }

  .fb-laptop__case-nav {
    width: 40px;
    height: 40px;
  }

  .fb-approach__head {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .fb-values__photo--end {
    top: auto;
    bottom: 20px;
    width: min(28vw, 220px);
  }

  .fb-reviews__bar {
    flex-direction: column;
    align-items: flex-start;
  }

  .fb-reviews__score-wrap {
    align-items: flex-start;
  }

  .fb-reviews__maps {
    text-align: left;
  }

  .fb-reviews__score {
    min-width: 0;
    max-width: 420px;
  }

  .fb-footer__grid {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "brand contact"
      "diensten info";
    gap: 28px 32px;
  }

  .fb-blog__row {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .fb-blog__arrow {
    display: none;
  }

  .fb-posts__grid,
  .fb-posts.fb-cases .fb-posts__grid,
  .fb-posts.fb-articles .fb-posts__grid,
  .fb-posts.fb-home-posts .fb-posts__grid {
    grid-template-columns: 1fr;
  }

  .fb-dienstgrid__list {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 0;
  }

  .fb-dienstgrid__item,
  .fb-dienstgrid__item--0,
  .fb-dienstgrid__item--1,
  .fb-dienstgrid__item--2,
  .fb-dienstgrid__item--3,
  .fb-dienstgrid__item--4,
  .fb-dienstgrid__item--5,
  .fb-dienstgrid__item--6,
  .fb-dienstgrid__item--7 {
    rotate: 0deg;
    translate: 0;
  }

  .fb-dienstgrid__title {
    min-height: 0;
  }

  .fb-filter__hint {
    grid-template-columns: 1fr;
    row-gap: 10px;
  }

  .fb-filter__more {
    justify-self: start;
  }

  .fb-digest__file {
    top: 16px;
  }

  .fb-digest__files {
    padding-bottom: 10vh;
  }

  .fb-digest__tabrow {
    grid-template-columns: repeat(var(--fb-digest-n, 3), minmax(0, 1fr));
  }

  .fb-digest__tab {
    padding: 12px 18px;
    font-size: 12px;
  }

  .fb-digest__board {
    padding: 22px 20px 0;
  }

  .fb-digest__board:has(.fb-digest__media) {
    grid-template-columns: 1fr;
    grid-template-areas:
      "media"
      "copy"
      "more";
    min-height: 0;
    padding: 0;
  }

  .fb-digest__board:has(.fb-digest__media) .fb-digest__copy {
    padding: 22px 20px 0;
  }

  .fb-digest__board:has(.fb-digest__media) .fb-digest__more {
    padding: 14px 20px 18px;
  }

  .fb-digest__media {
    aspect-ratio: 16 / 10;
  }

  .fb-digest__title {
    max-width: none;
  }

  .fb-page-hero .fb-hero__foot {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .fb-page-hero__tagline,
  .fb-page-hero .fb-hero__intro {
    max-width: none;
  }

  .fb-features__grid {
    grid-template-columns: 1fr;
  }

  .fb-contact__grid,
  .fb-contact__map {
    grid-template-columns: 1fr;
  }

  .fb .form__row,
  .fb .form__row--3 {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 860px) {
  html:has(.fb-header[data-open="true"]),
  body:has(.fb-header[data-open="true"]) {
    overflow: hidden;
  }

  .fb-header[data-open="true"] {
    position: fixed;
    inset: 0;
    z-index: 40;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--fb-room);
    padding-bottom: 28px;
  }

  .fb-header[data-open="true"] .fb-header__bar {
    flex: 1;
    min-height: 0;
    align-content: flex-start;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    scrollbar-width: none;
  }

  .fb-header[data-open="true"] .fb-header__bar::-webkit-scrollbar {
    display: none;
  }

  .fb-header[data-open="true"] .fb-header__brand,
  .fb-header[data-open="true"] .fb-header__toggle {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--fb-room);
  }

  .fb-header[data-open="true"] .fb-header__badge,
  body:has(.fb-header[data-open="true"]) .fb-hero__media > .fb-header__badge,
  body:has(.fb-header[data-open="true"]) .fb-hero__body > .fb-header__badge {
    display: none;
  }

  .fb-header__bar {
    flex-wrap: wrap;
    align-items: center;
  }

  .fb-header__navs {
    padding-top: 0;
  }

  .fb-header__toggle {
    display: inline-flex;
    margin-left: auto;
  }

  /* Round CTA leaves the top row and sits on the hero photo seam. */
  .fb-header__badge,
  .fb-header--mega .fb-header__badge {
    position: absolute;
    right: var(--fb-pad);
    top: 100%;
    z-index: 5;
    margin-top: 12px;
    margin-left: 0;
    width: 124px;
    height: 124px;
    font-size: 12px;
    letter-spacing: var(--fb-tracking-ui);
  }

  .fb-header__badge::before {
    inset: -10px;
  }

  .fb-hero__media {
    overflow: visible;
  }

  .fb-hero__media > .fb-header__badge,
  .fb-hero__body > .fb-header__badge {
    position: absolute;
    right: var(--fb-pad);
    left: auto;
    top: 0;
    bottom: auto;
    z-index: 5;
    margin: -52px 0 0;
  }

  .fb-hero__body > .fb-header__badge {
    right: 0;
    top: auto;
    bottom: 0;
    margin: 0 0 -48px;
  }

  .fb-hero__body {
    padding-bottom: 72px;
  }

  .fb-header--mega .fb-mega-slot {
    display: none;
    position: static;
    left: auto;
    right: auto;
    transform: none;
    flex-basis: 100%;
    width: auto;
    max-width: none;
    margin-left: 0;
    margin-right: 0;
    padding: 8px 0 0;
  }

  .fb-header--mega[data-open="true"] .fb-mega-slot {
    display: block;
  }

  .fb-header--mega .fb-mega-slot::before {
    display: none;
  }

  .fb-header--mega .fb-mega {
    position: static;
    display: grid;
    grid-template-rows: 1fr;
    padding: 0;
    pointer-events: auto;
  }

  .fb-header--mega .fb-mega__draw {
    padding: 0;
  }

  .fb-header--mega .fb-sitemap__reveal {
    grid-template-rows: 1fr;
  }

  .fb-header--mega .fb-sitemap__list,
  .fb-header--mega .fb-sitemap__bottom {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .fb-header--mega .fb-sitemap__cols {
    grid-template-columns: 1fr;
    justify-items: start;
    gap: 28px;
    width: auto;
    margin-inline: 0;
    padding: 20px 0 8px;
  }

  .fb-header--mega .fb-sitemap__heading {
    white-space: normal;
  }

  .fb-header--mega .fb-sitemap__link {
    white-space: normal;
  }

  .fb-header--mega .fb-sitemap__list {
    padding: 18px 0 0;
  }

  .fb-header--mega .fb-sitemap__bottom {
    align-items: flex-start;
    padding: 8px 0 20px;
  }

  .fb-header--mega .fb-sitemap__bottom > .fb-sitemap__heading {
    text-align: left;
  }

  .fb-header__navs {
    display: none;
    flex-basis: 100%;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    padding-top: 8px;
  }

  .fb-header[data-open="true"] .fb-header__navs {
    display: flex;
  }

  .fb-header__dropdown {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    width: 100%;
    flex: none;
    margin-right: 0;
    padding: 18px 0 6px;
    border-top: 1px solid var(--fb-line);
  }

  .fb-header__dropdown-btn {
    display: none;
  }

  .fb-header[data-open="true"] .fb-header__dropdown-btn {
    display: inline-flex;
    align-items: center;
    font-family: var(--fb-font-display);
    font-weight: 500;
    font-size: 17px;
    letter-spacing: var(--fb-tracking-display);
    line-height: 1.15;
    text-transform: none;
    color: var(--fb-navy);
    pointer-events: none;
    cursor: default;
  }

  .fb-header[data-open="true"] a.fb-header__dropdown-btn {
    pointer-events: auto;
    cursor: pointer;
  }

  .fb-header[data-open="true"] a.fb-header__dropdown-btn:hover,
  .fb-header[data-open="true"] a.fb-header__dropdown-btn:focus-visible {
    color: var(--fb-accent);
  }

  .fb-header[data-open="true"] .fb-header__dropdown-btn svg {
    display: none;
  }

  .fb-header__dropdown::before,
  .fb-header__dropdown::after,
  .fb-nav--primary .fb-nav__link::after {
    display: none;
  }

  .fb-header .fb-nav {
    display: none;
  }

  .fb-header[data-open="true"] .fb-nav {
    display: flex;
    flex-direction: column;
    /* Otherwise the links stretch and take the hover underline with them. */
    align-items: flex-start;
    gap: 10px;
    padding: 10px 0 4px;
    border-top: 0;
    position: static;
    min-width: 0;
    background: none;
    box-shadow: none;
  }

  .fb-header[data-open="true"] .fb-nav--primary {
    width: 100%;
    margin-top: 8px;
    padding: 18px 0 8px;
    border-top: 1px solid var(--fb-line);
  }

  .fb-header[data-open="true"] .fb-nav--primary .fb-nav__link {
    display: flex;
    font-family: var(--fb-font-display);
    font-size: 17px;
    letter-spacing: var(--fb-tracking-display);
    text-transform: none;
    color: var(--fb-navy);
  }

  .fb-header[data-open="true"] .fb-nav--services {
    display: flex;
    position: static;
    left: auto;
    min-width: 0;
    width: auto;
    padding: 10px 0 4px;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    background: none;
    overflow: visible;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    -webkit-mask-image: none;
    mask-image: none;
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: none;
  }

  .fb-header[data-open="true"] .fb-nav--services .fb-nav__link {
    color: var(--fb-espresso);
    padding: 0;
    margin: 0;
    text-shadow: none;
  }

  .fb-header[data-open="true"] .fb-nav--services .fb-nav__link--more {
    color: var(--fb-accent);
    font-size: 11px;
  }

  .fb-header[data-open="true"] .fb-nav--services .fb-nav__link + .fb-nav__link {
    border-top: 0;
  }

  .fb-header .fb-nav__link {
    font-size: 15px;
  }

  .fb-header[data-open="true"] .fb-header__dropdown-btn,
  .fb-header[data-open="true"] .fb-nav--primary .fb-nav__link {
    font-size: 17px;
  }

  .fb-values {
    padding-block: 28px 40px;
  }

  .fb-values__words {
    align-items: center;
    width: 100%;
    margin: 0;
    padding: 128px 0 140px;
    font-size: clamp(32px, 8.5vw, 56px);
    text-align: center;
  }

  .fb-values__photo--start {
    top: 0;
    left: 0;
    width: min(32vw, 180px);
    aspect-ratio: 1;
  }

  .fb-values__photo--end {
    top: auto;
    right: 0;
    bottom: 0;
    width: min(30vw, 168px);
    aspect-ratio: 1;
  }
}

@media (max-width: 720px) {

  .fb-index__list {
    padding-bottom: 0;
  }

  .fb-work {
    padding-top: 72px;
  }

  body.fb-home .fb-index + .fb-work {
    padding-top: 0;
  }

  .fb-index__row,
  .fb-index__row:nth-child(even),
  .fb-page .fb-offer .fb-index__row:nth-child(even) {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    padding-block: 14px;
  }

  [data-fb-index] {
    --fb-index-tight: 14px;
    --fb-index-spread: 22px;
  }

  .fb-index__row:hover .fb-index__text,
  .fb-index__row:nth-child(even):hover .fb-index__text,
  .fb-index__row:focus-visible .fb-index__text {
    transform: none;
  }

  .fb-index__text,
  .fb-index__row:nth-child(even) .fb-index__text,
  .fb-page .fb-offer .fb-index__row:nth-child(even) .fb-index__text {
    align-self: flex-start;
    flex: none;
    width: auto;
    text-align: left;
  }

  .fb-page .fb-offer .fb-index__title {
    flex: none;
    min-width: 0;
  }

  .fb-hero__foot,
  .fb-cta__foot {
    grid-template-columns: 1fr;
    gap: 32px;
    align-items: start;
  }

  .fb-cta--section {
    grid-template-columns: 1fr;
    row-gap: 32px;
  }

  .fb-cta--section .fb-cta__buttons {
    justify-self: start;
  }

  .fb-work__head,
  .fb-blog__head,
  .fb-posts__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }

  .fb-posts__title {
    min-height: 0;
  }

  .fb-textlink {
    transform-origin: left center;
  }

  .fb-approach__grid,
  .fb-approach__grid:has(> :nth-child(2):last-child),
  .fb-approach__grid:has(> :nth-child(3):last-child),
  .fb-approach__grid:has(> :nth-child(4):last-child),
  .fb-approach__grid:has(> :nth-child(n+5)) {
    grid-template-columns: 1fr;
  }

  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(even) {
    margin-top: 0;
  }

  .fb-approach__title,
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(1) .fb-approach__title,
  .fb-approach__grid:has(> :nth-child(4):last-child) .fb-approach__item:nth-child(4) .fb-approach__title {
    min-height: 0;
  }

  .fb-approach__tilt {
    padding: 28px 22px 32px;
  }

  .fb-values {
    padding-block: 28px 40px;
  }

  .fb-values__words {
    align-items: center;
    width: 100%;
    margin: 0;
    padding: 128px 0 140px;
    font-size: clamp(32px, 9vw, 48px);
    text-align: center;
  }

  .fb-values__photo--start {
    top: 0;
    left: 0;
    width: min(36vw, 148px);
    aspect-ratio: 1;
  }

  .fb-values__photo--end {
    top: auto;
    right: 0;
    bottom: 0;
    width: min(34vw, 136px);
    aspect-ratio: 1;
  }

  .fb-statement {
    padding-block: 96px;
  }

  .fb-statement__logos {
    gap: 20px 16px;
    margin-top: 28px;
  }

  .fb-statement__logo--brand {
    height: 34px;
  }

  .fb-statement__logo--google {
    height: 40px;
  }

  .fb-statement__logo--kmo {
    height: 34px;
  }

  .fb-case-quote {
    min-height: 0;
    padding-block: 80px;
  }

  .fb-textblock--quote {
    padding-block: 80px;
  }

  .fb-textblock__mark {
    font-size: clamp(64px, 18vw, 96px);
  }

  .fb-textblock.fb-textblock--quote .fb-prose,
  .fb-statement__text {
    font-size: clamp(20px, 5.2vw, 28px);
  }

  .fb-case-stats {
    padding-block: 72px;
  }

  .fb-case-quote__mark {
    font-size: clamp(88px, 28vw, 140px);
  }

  .fb-case-quote__text {
    max-width: 100%;
    font-size: clamp(24px, 7vw, 32px);
  }

  .fb-rupture {
    min-height: min(62vh, 640px);
  }

  .fb-rupture__quote {
    width: 100%;
    font-size: clamp(34px, 11vw, 64px);
  }

  .fb-team__row {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
  }

  .fb-team__role {
    text-align: left;
  }

  .fb-band {
    min-height: 340px;
    padding-block: 72px 96px;
  }

  .fb-band.is-pinned .fb-band__pin {
    padding-bottom: 48px;
  }

  .fb-band__label {
    top: 18px;
    font-size: 11px;
  }

  .fb-footer__grid {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
    grid-template-areas:
      "brand brand"
      "diensten info"
      "contact contact";
    gap: 28px 20px;
    letter-spacing: 0.06em;
  }

  .fb-footer__social {
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 16px;
  }

  .fb-footer__grid .fb-footer__social a {
    width: 44px;
    height: 44px;
  }

  .fb-footer__social svg {
    width: 18px;
    height: 18px;
  }

  .fb-footer__contact .fb-btn {
    width: 100%;
  }

  .fb-footer__bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    margin-top: 28px;
    padding-top: 18px;
    border-top: 1px solid color-mix(in srgb, var(--fb-tan) 22%, transparent);
  }

  .fb-footer__legal {
    gap: 10px 18px;
  }

  .fb-footer__legal a,
  .fb-footer__cookies {
    white-space: nowrap;
  }

  .fb-cta {
    padding-block: 96px 80px;
  }

  .fb-approach,
  .fb-clients {
    padding-block: 96px;
  }

  .fb-gevel {
    --fb-gevel-top: 0px;
    min-height: 0;
  }

  .fb-gevel__pin {
    position: relative;
    top: auto;
    min-height: 0;
    padding-block: 96px;
  }

  .fb-reviews {
    height: auto;
  }

  .fb-reviews__pin {
    position: relative;
    height: auto;
    min-height: 0;
    overflow: visible;
  }

  .fb-reviews__stage {
    position: relative;
    display: flex;
    flex-direction: column;
    height: auto;
    overflow: visible;
    padding-block: 56px;
    perspective: none;
    transform-style: flat;
  }

  .fb-reviews__backdrop {
    position: relative;
    inset: auto;
    grid-column: auto;
    grid-row: auto;
    padding: 36px 0 28px;
    pointer-events: auto;
  }

  .fb-reviews .fb-reviews__heading,
  body.fb-page .fb-reviews .fb-reviews__heading {
    max-width: 100%;
    font-size: clamp(66px, 18vw, 102px);
  }

  .fb-reviews__float {
    display: flex;
    flex-direction: column;
    gap: 18px;
    grid-column: auto;
    grid-row: auto;
    pointer-events: auto;
  }

  .fb-reviews__card,
  .fb-reviews__card:nth-child(n) {
    position: relative;
    top: auto;
    right: auto;
    left: auto;
    grid-column: auto;
    grid-row: auto;
    display: flex;
    width: 100%;
    transform: none;
    will-change: auto;
  }

  .fb-reviews__card:nth-child(odd) {
    width: 92%;
    align-self: start;
  }

  .fb-reviews__card:nth-child(even) {
    width: 92%;
    align-self: end;
  }

  .fb-reviews__card.fb-reviews__card--echo {
    display: none;
  }

  .fb-reviews__write {
    margin-top: 28px;
  }

  .fb-laptop,
  .fb-laptop:not(.is-scroll) {
    height: auto;
  }

  .fb-laptop__meta {
    padding-bottom: 0;
  }

  .fb-laptop__cta {
    /* Park inside the cropped frame: overflow:hidden on the stage
       and overflow-x:clip on body would otherwise cut the badge
       and its dashed ring. Same crop math as the laptop nav. */
    top: calc(var(--fb-screen-y) + 6%);
    left: auto;
    right: calc((24 / 148) * 100% + 22px);
    width: 84px;
    height: 84px;
    font-size: 9px;
    letter-spacing: 0.1em;
    --fb-cta-x: 0px;
    --fb-cta-y: 0px;
  }

  /* Same circular chip as page-hero / case-nav, inset from the cropped
     MacBook so overflow:hidden does not clip the tap target. */
  .fb-laptop__nav {
    width: 44px;
    height: 44px;
    border: 1px solid var(--fb-tan);
    border-radius: 999px;
    background: var(--fb-paper);
    color: var(--fb-espresso);
    transition:
      background-color 220ms ease,
      color 220ms ease,
      border-color 220ms ease,
      opacity 220ms ease,
      scale 420ms var(--fb-ease);
  }

  .fb-laptop__nav svg {
    width: 20px;
    height: 20px;
  }

  .fb-laptop__nav[data-fb-laptop-prev] {
    left: calc((24 / 148) * 100% + 10px);
    transform: translateY(-50%);
  }

  .fb-laptop__nav[data-fb-laptop-next] {
    left: auto;
    right: calc((24 / 148) * 100% + 10px);
    transform: translateY(-50%);
  }

  .fb-laptop__nav:hover,
  .fb-laptop__nav:focus-visible {
    background: var(--fb-accent);
    border-color: var(--fb-accent);
    color: var(--fb-paper);
    outline: none;
  }

  .fb-laptop__nav[data-fb-laptop-next]:hover svg,
  .fb-laptop__nav[data-fb-laptop-next]:focus-visible svg {
    transform: translateX(2px);
  }

  .fb-laptop__nav[data-fb-laptop-prev]:hover svg,
  .fb-laptop__nav[data-fb-laptop-prev]:focus-visible svg {
    transform: translateX(-2px);
  }

  .fb-explain__grid,
  .fb-explain__grid:has(> :nth-child(1):last-child),
  .fb-explain__grid:has(> :nth-child(3):last-child),
  .fb-features__grid,
  .fb-textblock__inner {
    grid-template-columns: 1fr;
    max-width: none;
  }

  .fb-explain__title {
    min-height: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fb-marquee,
  .fb-marquee__track,
  .fb-clients__track,
  .fb-hero__badge,
  .fb-hero__badge::before,
  .fb-laptop__cta::before,
  .fb-laptop.is-open .fb-laptop__cta,
  .fb-atm__blob,
  .fb-page-hero__scroll svg,
  .fb-dienstgrid__card {
    animation: none;
    transition: none;
  }

  .fb-laptop.is-scroll .fb-laptop__nav {
    display: flex;
  }

  .fb-laptop__shot.is-entering {
    animation: none;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .fb-values__photo {
    transform: none;
    will-change: auto;
  }

  .fb-values__dot {
    animation: none;
    opacity: 1;
  }

  .fb-clients__viewport {
    overflow: visible;
    -webkit-mask-image: none;
    mask-image: none;
    padding-inline: var(--fb-pad);
  }

  .fb-clients__track,
  .fb-clients__set {
    flex-wrap: wrap;
    justify-content: flex-start;
    width: auto;
    max-width: 100%;
    gap: 24px 32px;
    padding-right: 0;
  }

  .fb-clients__set[aria-hidden="true"] {
    display: none;
  }

  .fb-clients__item img,
  .fb-clients__item .fb-clients__name,
  .fb-clients__item:hover img,
  .fb-clients__item:focus-within img,
  .fb-clients__item:hover .fb-clients__name,
  .fb-clients__item:focus-within .fb-clients__name {
    transition: none;
    transform: none;
  }

  .fb-hero__badge,
  .fb-laptop__cta,
  .fb-hero__badge::before,
  .fb-laptop__cta::before,
  .fb-hero__badge::after,
  .fb-laptop__cta::after {
    transition: none;
  }

  .fb-hero__slide,
  .fb-hero__slide.is-entering {
    transition: none;
    animation: none;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .fb-header__dropdown-btn svg,
  .fb-nav--services,
  .fb-nav__more-label,
  .fb-nav__more-arrow,
  .fb-textlink__arrow,
  .fb-blog__arrow,
  .fb-posts__more-arrow,
  .fb-dienstgrid__arrow,
  .fb-digest__more-arrow,
  .fb-digest__photo,
  .fb-posts__photo,
  .fb-laptop__nav svg,
  .fb-laptop__case-nav svg,
  .fb-page-hero__nav svg,
  .fb-page-hero__scroll svg,
  .fb-pager__link svg {
    transition: none;
    transform: none;
  }

  .fb-reviews {
    --fb-p: 0.42;
  }

  .fb-reviews__card {
    transform: none;
    will-change: auto;
  }

  .fb-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .fb-bureau .fb-break__frame,
  .fb-bureau .fb-break__frame.fb-reveal,
  .fb-bureau .fb-break__frame.fb-reveal.is-visible {
    transform: none;
    will-change: auto;
  }

  [data-fb-index] {
    --fb-p: 1;
  }

  .fb-index__row {
    padding-block: 16px;
  }

  .fb-digest__file {
    position: relative;
    top: auto;
    filter: drop-shadow(0 18px 40px rgba(23, 38, 63, 0.12));
  }

  .fb-digest__files {
    padding-bottom: 0;
  }

  .fb-index__row::before,
  .fb-index__row:last-child::after {
    transform: none;
    transition: none;
  }

  @media (max-width: 720px) {
    .fb-index__row {
      padding-block: 14px;
    }
  }

  .fb-cta__word {
    font-size: 1.22em;
    transform: none;
  }

  .fb-blocks,
  html.fb-js .fb-blocks {
    --fb-p: 1;
  }

  .fb-blocks__cell,
  .fb-blocks__speck {
    transform: none;
  }

  .fb-gevel {
    --fb-p: 1;
    --fb-ink: 1;
    --fb-photo: 1;
    --fb-gevel-top: 0px;
    min-height: 0;
  }

  .fb-gevel__pin {
    position: relative;
    top: auto;
    min-height: 0;
  }

  .fb-gevel__photo {
    opacity: 1;
    animation: none;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .fb-gevel__svg {
    opacity: 0;
  }

  .fb-gevel__line {
    animation: none;
    stroke-dashoffset: 0;
    opacity: 1;
  }

  .fb-logo__from-left,
  .fb-logo__from-right,
  .fb-logo__bloom,
  .fb-logo__rise,
  .fb-mark.is-armed .fb-logo__from-left,
  .fb-mark.is-armed .fb-logo__from-right,
  .fb-mark.is-armed .fb-logo__bloom,
  .fb-mark.is-leaving .fb-logo__from-left,
  .fb-mark.is-leaving .fb-logo__from-right,
  .fb-mark.is-leaving .fb-logo__bloom,
  .fb-mark.is-looping .fb-logo__from-left,
  .fb-mark.is-looping .fb-logo__from-right,
  .fb-mark.is-looping .fb-logo__bloom {
    opacity: 1;
    animation: none;
    filter: none;
    transform: none;
  }

  .fb-band.is-pinned .fb-band__pin {
    position: relative;
    inset: auto;
    width: min(100%, 640px);
    padding-bottom: 0;
    clip-path: none;
  }

  .fb-band.is-pinned .fb-logo {
    width: min(100%, 640px);
  }

  .fb-laptop {
    height: auto;
    --fb-laptop-rise: 1;
  }

  .fb-laptop__pin {
    position: relative;
    height: auto;
  }

  .fb-laptop .fb-work__head,
  .fb-laptop__stage {
    position: relative;
    inset: auto;
  }

  .fb-laptop__stage {
    container-type: normal;
    flex: none;
    padding-bottom: 12px;
  }

  .fb-laptop__device {
    width: min(1680px, 100%);
  }

  .fb-laptop__screen,
  .fb-laptop__meta {
    opacity: 1;
    pointer-events: auto;
    transform: none;
    transition: none;
  }

  .fb-laptop__shot {
    transition: none;
    animation: none;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .fb-laptop__nav {
    opacity: 1;
    pointer-events: auto;
    scale: 1;
    transition: none;
  }

  .fb-laptop__cta {
    opacity: 1;
    pointer-events: auto;
    transition: none;
  }
}

/* Running copy: Early Sans Light, same cut as the homepage index rows. */
.fb-hero__intro,
.fb-index__text,
.fb-approach__intro,
.fb-bureau__text,
.fb-crew__text,
.fb-cta__text,
.fb-prose,
.fb-features__intro,
.fb-features__text,
.fb-explain__intro,
.fb-chips__intro,
.fb-clients__intro,
.fb-articles__intro,
.fb-articles__empty,
.fb-article__body,
.fb-case__block-text,
.fb-contact__map-intro,
.fb-faq__answer,
.fb-blog__excerpt,
.fb-posts__intro,
.fb-posts__excerpt,
.fb-digest__excerpt,
.fb-reviews-classic__quote,
.fb-textblock .fb-prose {
  font-family: var(--fb-font-body);
  font-weight: 300;
  font-size: var(--fb-size-copy);
  line-height: var(--fb-copy-lh);
  color: var(--fb-copy);
}

.fb-textblock.fb-textblock--quote .fb-prose {
  font-family: var(--fb-font-display);
  font-weight: 900;
  letter-spacing: var(--fb-tracking-display);
  color: #fff;
}

/* Early Sans Variable is the display cut for capitals and heavy titles.
   UI chrome uses the same family at a lighter weight. */
.fb-marquee__item,
.fb-index__title,
.fb-work__title,
.fb-laptop__title,
.fb-clients__label,
.fb-reviews-classic__heading,
.fb-reviews__score-value,
.fb-blog__title,
.fb-digest__title,
.fb-page-hero__tagline,
.fb-case-stats__value,
.fb-case__service-list,
.fb-case-quote__mark,
.fb-case-quote__text,
.fb-textblock__mark,
.fb-textblock--quote .fb-prose,
.fb-statement__text,
.fb-chips__chip,
.fb-clients__name {
  font-family: var(--fb-font-display);
  font-weight: 900;
  letter-spacing: var(--fb-tracking-display);
}

.fb-faq__text,
.fb-label,
.fb-header__toggle,
.fb-nav,
.fb-header__dropdown-btn,
.fb-hero__badge,
.fb-textlink,
.fb-work__tags,
.fb-laptop__tags,
.fb-reviews__pill,
.fb-reviews__maps,
.fb-reviews__avatar,
.fb-reviews__name,
.fb-reviews__more,
.fb-team__role,
.fb-statement__meta,
.fb-blog__category,
.fb-digest__tab,
.fb-digest__key,
.fb-digest__value,
.fb-footer__grid,
.fb-footer__bottom,
.fb-pager,
.fb-article__terms,
.fb-article__term,
.fb-article__who,
.fb-article__back,
.fb-contact__form-intro,
.fb .form,
.fb .form input,
.fb .form textarea,
.fb .form select,
.fb .form__label,
.fb .form__checkbox,
.fb .form__choice,
.fb .form__chip,
.fb .form__help,
.fb .form__error,
.fb .form__success {
  font-family: var(--fb-font-ui);
}

/* After the shared display/body groups: Early Sans needs tighter
   tracking on a few homepage-scale titles, and a shorter body line
   on the index rows. Inner page heroes keep their own clip metrics. */
.fb-index__title {
  letter-spacing: -0.05em;
}

.fb-marquee__item {
  letter-spacing: -0.03em;
}

.fb-index__text {
  line-height: 1.35;
}

body.fb-home .fb-hero__title {
  line-height: 0.92;
}
