
  /* PP Eiko remains the design typeface; use a locally installed licensed copy when available. */
 @font-face {
  font-family: 'PP Eiko';
  src: url('../fonts/PP Eiko Thin.woff2') format('woff2');
  font-weight: 100;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'PP Eiko';
  src: url('../fonts/PP Eiko Italic Light.woff2') format('woff2');
  font-weight: 300;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'PP Eiko';
  src: url('../fonts/PP Eiko Italic.woff2') format('woff2');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'PP Eiko';
  src: url('../fonts/PP Eiko Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'PP Eiko';
  src: url('../fonts/PP Eiko Heavy.woff2') format('woff2');
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}

  @font-face {
    font-family: 'Satoshi';
    src: url('../fonts/satoshi-variable.woff2') format('woff2');
    font-weight: 300 900;
    font-style: normal;
    font-display: swap;
  }

  @font-face {
    font-family: 'Satoshi';
    src: url('../fonts/satoshi-variable-italic.woff2') format('woff2');
    font-weight: 300 900;
    font-style: italic;
    font-display: swap;
  }

  :root {
    --ink: #FAF8F2;
    --ink-rgb: 250, 248, 242;
    --ink-soft: rgba(var(--ink-rgb), 0.72);
    --ink-muted: rgba(var(--ink-rgb), 0.56);
    --black: #131224;
    --black-rgb: 19, 18, 36;
    --deep: #131224;
    --deep-2: #071b21;
    --panel: #FAF8F2;
    --panel-ink: #131224;
    --panel-muted: rgba(var(--black-rgb), 0.42);
    --accent: #ff5a35;
    --accent-soft: rgba(255, 90, 53, 0.34);
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --ease-in-out: cubic-bezier(0.76, 0, 0.24, 1);
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }

  html,
  body {
    width: 100%;
    min-height: 100%;
    background: var(--black);
  }

  body {
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    overflow-x: hidden;
    color: var(--ink);
  }

  a { color: inherit; text-decoration: none; }
  button { font: inherit; }

  .hero {
    position: relative;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
    background:
      radial-gradient(circle at 58% 42%, rgba(28, 55, 66, 0.52), transparent 36%),
      linear-gradient(135deg, var(--black) 0%, #071919 42%, #071b21 100%);
    cursor: default;
    isolation: isolate;
  }

  .video-stage {
    position: absolute;
    z-index: 1;
    top: 50%;
    left: 50%;
    width: min(94vw, calc(94vh * 16 / 9), 1760px);
    max-width: 1760px;
    max-height: 990px;
    aspect-ratio: 16 / 9;
    transform: translate(-50%, -50%);
    overflow: hidden;
    background: var(--black);
    isolation: isolate;
    box-shadow:
      inset 0 0 110px rgba(var(--black-rgb), 0.90),
      inset 0 0 210px rgba(var(--black-rgb), 0.62),
      0 0 160px rgba(var(--black-rgb), 0.98);
  }

  .hero-video {
    position: absolute;
    z-index: 1;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: var(--black);
    transform: scale(1.018);
    transform-origin: center;
    will-change: transform, opacity;
    transition: opacity 0.58s var(--ease-out), filter 0.58s var(--ease-out);
  }

  .face-video {
    opacity: 0;
    pointer-events: none;
    filter: saturate(1.02) contrast(1.02);
  }

  .hero.face-active .face-video {
    opacity: 1;
  }

  .hero.face-active #heroVideo {
    opacity: 0;
  }

  .video-stage::before {
    content: "";
    position: absolute;
    z-index: 3;
    inset: -108px;
    pointer-events: none;
    background:
      radial-gradient(
        ellipse at center,
        rgba(var(--black-rgb), 0) 34%,
        rgba(var(--black-rgb), 0.10) 45%,
        rgba(var(--black-rgb), 0.42) 64%,
        rgba(var(--black-rgb), 0.82) 80%,
        rgba(var(--black-rgb), 1) 100%
      );
    filter: blur(70px);
    opacity: 1;
  }

  .video-stage::after {
    content: "";
    position: absolute;
    z-index: 4;
    inset: -26px;
    pointer-events: none;
    background:
      linear-gradient(to bottom,
        rgba(var(--black-rgb),1) 0%,
        rgba(var(--black-rgb),0.98) 4%,
        rgba(var(--black-rgb),0.80) 11%,
        rgba(var(--black-rgb),0.44) 22%,
        rgba(var(--black-rgb),0.12) 35%,
        rgba(var(--black-rgb),0) 46%,
        rgba(var(--black-rgb),0) 54%,
        rgba(var(--black-rgb),0.12) 65%,
        rgba(var(--black-rgb),0.44) 78%,
        rgba(var(--black-rgb),0.80) 89%,
        rgba(var(--black-rgb),0.98) 96%,
        rgba(var(--black-rgb),1) 100%
      ),
      linear-gradient(to right,
        rgba(var(--black-rgb),1) 0%,
        rgba(var(--black-rgb),0.92) 5%,
        rgba(var(--black-rgb),0.56) 14%,
        rgba(var(--black-rgb),0.18) 27%,
        rgba(var(--black-rgb),0) 41%,
        rgba(var(--black-rgb),0) 59%,
        rgba(var(--black-rgb),0.18) 73%,
        rgba(var(--black-rgb),0.56) 86%,
        rgba(var(--black-rgb),0.92) 95%,
        rgba(var(--black-rgb),1) 100%
      );
    filter: blur(24px);
    opacity: 1;
  }

  .overlay {
    position: absolute;
    inset: 0;
    z-index: 4;
    background:
      radial-gradient(circle at 56% 38%, rgba(31, 63, 72, 0.34), transparent 38%),
      linear-gradient(180deg, rgba(var(--black-rgb), 0.56) 0%, rgba(6, 18, 20, 0.18) 46%, rgba(var(--black-rgb), 0.64) 100%);
    pointer-events: none;
  }

  .hero-grain {
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;
    opacity: 0.35;
    mix-blend-mode: plus-lighter;
    background-image: url("../images/home/hero-overlay.webp");
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
  }

  .fade-curtain {
    position: fixed;
    inset: 0;
    z-index: 80;
    background: var(--black);
    pointer-events: none;
    opacity: 1;
    transition: opacity 1.35s ease;
  }

  .fade-curtain.hidden { opacity: 0; }

  .site-header {
    position: fixed;
    z-index: 70;
    top: 32px;
    left: 30px;
    right: 25px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    pointer-events: none;
    opacity: 0;
    transform: translateY(-10px);
    animation: revealHeader 1s var(--ease-out) 0.7s forwards;
  }

  .brand-logo,
  .header-actions {
    pointer-events: auto;
  }

  .brand-logo {
    display: inline-flex;
    align-items: center;
    width: 119px;
    height: auto;
    line-height: 0;
  }

  .brand-logo img {
    display: block;
    width: 100%;
    height: auto;
  }

  .header-actions {
    display: flex;
    align-items: center;
    gap: 10px;
  }

  .pill {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 0 13px;
    border-radius: 999px;
    border: 1px solid rgba(var(--ink-rgb), 0.84);
    overflow: hidden;
    cursor: pointer;
    text-transform: uppercase;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.015em;
    line-height: 1;
    transition:
      color 0.34s var(--ease-out),
      background-color 0.34s var(--ease-out),
      border-color 0.34s var(--ease-out),
      transform 0.34s var(--ease-out),
      box-shadow 0.34s var(--ease-out);
    will-change: transform;
  }

  .pill::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: var(--pill-fill, currentColor);
    transform: translateY(102%);
    transition: transform 0.42s var(--ease-out);
  }

  .pill:hover,
  .pill:focus-visible {
    transform: translateY(-1px);
    outline: none;
  }

  .pill:hover::before,
  .pill:focus-visible::before {
    transform: translateY(0);
  }

  .pill-label {
    position: relative;
    z-index: 1;
    display: inline-flex;
    height: 1em;
    overflow: hidden;
    line-height: 1;
  }

  .pill-label::before,
  .pill-label::after {
    content: attr(data-text);
    display: block;
    transition: transform 0.42s var(--ease-out);
    white-space: nowrap;
  }

  .pill-label::after {
    position: absolute;
    left: 0;
    top: 100%;
  }

  .pill:hover .pill-label::before,
  .pill:focus-visible .pill-label::before { transform: translateY(-115%); }

  .pill:hover .pill-label::after,
  .pill:focus-visible .pill-label::after { transform: translateY(-100%); }

  .contact-pill {
    --pill-fill: var(--panel-ink);
    background: var(--ink);
    color: var(--panel-ink);
    border-color: var(--ink);
  }

  .contact-pill:hover,
  .contact-pill:focus-visible {
    color: var(--ink);
    border-color: var(--panel-ink);
    box-shadow: 0 12px 28px rgba(var(--black-rgb), 0.18);
  }

  .menu-pill {
    gap: 9px;
    padding-right: 11px;
    --pill-fill: transparent;
    background: transparent;
    color: var(--ink);
    border-color: rgba(var(--ink-rgb), 0.84);
  }

  .menu-pill::before {
    content: none;
  }

  .menu-pill:hover,
  .menu-pill:focus-visible {
    color: var(--ink);
    border-color: var(--ink);
    background: transparent;
  }

  .menu-icon {
    position: relative;
    z-index: 1;
    display: inline-block;
    width: 14px;
    height: 10px;
    flex: 0 0 14px;
  }

  .menu-icon-line {
    position: absolute;
    left: 0;
    display: block;
    width: 14px;
    height: 1px;
    background: currentColor;
    border-radius: 1px;
    transform-origin: 50% 50%;
    transition:
      top 0.34s var(--ease-out),
      bottom 0.34s var(--ease-out),
      transform 0.44s var(--ease-out),
      background-color 0.34s ease;
  }

  .menu-icon-line:first-child { top: 2px; }
  .menu-icon-line:last-child { bottom: 2px; }

  .menu-pill:hover .menu-icon-line:first-child,
  .menu-pill:focus-visible .menu-icon-line:first-child { top: 4px; }

  .menu-pill:hover .menu-icon-line:last-child,
  .menu-pill:focus-visible .menu-icon-line:last-child { bottom: 4px; }

  .hero.menu-is-open .contact-pill {
    --pill-fill: var(--ink);
    background: var(--panel-ink);
    border-color: var(--panel-ink);
    color: var(--ink);
  }

  .hero.menu-is-open .contact-pill:hover,
  .hero.menu-is-open .contact-pill:focus-visible {
    color: var(--panel-ink);
    border-color: var(--panel-ink);
  }

  .hero.menu-is-open .menu-pill {
    background: transparent;
    border-color: var(--panel-ink);
    color: var(--panel-ink);
  }

  .hero.menu-is-open .menu-pill:hover,
  .hero.menu-is-open .menu-pill:focus-visible {
    color: var(--panel-ink);
    border-color: var(--panel-ink);
    background: transparent;
  }

  .hero.menu-is-open .menu-icon-line:first-child {
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
  }

  .hero.menu-is-open .menu-icon-line:last-child {
    bottom: auto;
    top: 50%;
    transform: translateY(-50%) rotate(-45deg);
  }

  .menu-panel {
    position: fixed;
    z-index: 60;
    top: 20px;
    right: 15px;
    bottom: 18px;
    width: min(395px, calc(100vw - 30px));
    border-radius: 7px;
    background: var(--panel);
    color: var(--panel-ink);
    overflow: hidden;
    pointer-events: none;
    opacity: 0;
    transform: translateX(10px) scaleX(0.95) scaleY(0.04);
    transform-origin: top right;
    clip-path: inset(0 0 93% 92% round 18px);
    transition:
      opacity 0.24s ease,
      transform 0.72s var(--ease-in-out),
      clip-path 0.72s var(--ease-in-out);
  }

  .hero.menu-is-open .menu-panel {
    pointer-events: auto;
    opacity: 1;
    transform: translateX(0) scaleX(1) scaleY(1);
    clip-path: inset(0 0 0 0 round 7px);
  }

  .menu-inner {
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 290px 48px 38px;
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.42s ease 0s, transform 0.54s var(--ease-out) 0s;
  }

  .hero.menu-is-open .menu-inner {
    opacity: 1;
    transform: translateY(0);
    transition-delay: 0.31s;
  }

  .menu-links {
    display: grid;
    gap: 15px;
    list-style: none;
  }

  .menu-link {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 39px;
    overflow: visible;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(28px, 2.25vw, 34px);
    line-height: 1.1;
    font-weight: 500;
    letter-spacing: -0.035em;
    color: var(--panel-ink);
    outline: none;
  }

  .menu-link-text {
    position: relative;
    display: inline-block;
    overflow: visible;
    line-height: 1.1;
  }

  .menu-link-text::before,
  .menu-link-text::after {
    content: attr(data-text);
    display: block;
    white-space: nowrap;
    transition:
      opacity 0.38s ease,
      filter 0.44s var(--ease-out),
      transform 0.44s var(--ease-out);
    will-change: opacity, filter, transform;
  }

  .menu-link-text::after {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0;
    filter: blur(8px);
    transform: translateY(0.18em);
  }

  .menu-link:hover .menu-link-text::before,
  .menu-link:focus-visible .menu-link-text::before {
    opacity: 0;
    filter: blur(8px);
    transform: translateY(-0.18em);
  }

  .menu-link:hover .menu-link-text::after,
  .menu-link:focus-visible .menu-link-text::after {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
  }

  .menu-link-arrow {
    position: relative;
    display: block;
    width: 10px;
    height: 10px;
    margin-left: 24px;
    opacity: 0;
    transform: translateX(-8px);
    transition: opacity 0.28s ease, transform 0.38s var(--ease-out);
  }

  .menu-link-arrow::before {
    content: "";
    position: absolute;
    top: 50%;
    right: 0;
    width: 10px;
    height: 1px;
    background: currentColor;
    transform: translateY(-50%);
  }

  .menu-link-arrow::after {
    content: "";
    position: absolute;
    top: 2px;
    right: 0;
    width: 6px;
    height: 6px;
    border-top: 1px solid currentColor;
    border-right: 1px solid currentColor;
    transform: rotate(45deg);
    transform-origin: 50% 50%;
  }

  .menu-link:hover .menu-link-arrow,
  .menu-link:focus-visible .menu-link-arrow {
    opacity: 1;
    transform: translateX(0);
  }

  .menu-meta {
    margin-top: auto;
    display: grid;
    gap: 58px;
    font-size: 17px;
    line-height: 1.25;
    letter-spacing: -0.025em;
  }

  .meta-title {
    display: block;
    margin-bottom: 12px;
    font-size: 13px;
    line-height: 1;
    font-weight: 400;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--panel-muted);
  }

  .meta-row {
    display: grid;
    grid-template-columns: 26px 1fr;
    align-items: baseline;
    gap: 8px;
    margin-top: 9px;
  }

  .meta-key { color: var(--panel-muted); }

  .social-links {
    display: flex;
    gap: 28px;
    flex-wrap: wrap;
  }

  .social-links a,
  .meta-row a {
    transition: color 0.26s ease, opacity 0.26s ease;
  }

  .social-links a:hover,
  .meta-row a:hover { color: var(--accent); }

  .hero-content {
    position: relative;
    z-index: 8;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0 6vw;
    pointer-events: none;
  }

  .hero-profile-kicker {
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    margin-bottom: 1.7rem;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: rgba(var(--ink-rgb), 0.84);
    opacity: 0;
    transform: translateY(10px);
    animation: revealUp 1s var(--ease-out) 1.2s forwards;
    white-space: nowrap;
  }

  .kicker-separator {
    display: inline-block;
    margin: 0 18px;
    color: var(--accent);
    font-size: 0.78em;
    transform: translateY(-0.04em);
  }

  .hero-title {
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-weight: 600;
    font-size: clamp(2.55rem, 4vw, 4rem);
    line-height: 1.08;
    letter-spacing: 0.006em;
    word-spacing: 0.045em;
    color: var(--ink);
    width: min(92vw, 1220px);
    max-width: min(92vw, 1220px);
    opacity: 0;
    transform: translateY(18px);
    animation: revealUp 1.1s var(--ease-out) 1.42s forwards;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-wrap: balance;
  }

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

  .claim-word {
    position: relative;
    display: block;
    width: 100%;
    height: 1.08em;
    margin: 0.02em auto 0;
    overflow: visible;
    perspective: 900px;
    text-align: center;
  }

  .claim-word-inner {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
  }

  .claim-word-face {
    position: absolute;
    top: 0;
    left: 50%;
    display: block;
    width: max-content;
    white-space: nowrap;
    text-align: center;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-weight: 300;
    font-style: italic;
    letter-spacing: 0.01em;
    color: var(--ink);
    transform-origin: 50% 50%;
    will-change: transform, opacity, filter;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    transition:
      opacity 0.38s ease,
      filter 0.46s var(--ease-out),
      transform 0.46s var(--ease-out);
  }

  .claim-word-front {
    opacity: 1;
    filter: blur(0);
    transform: translateX(-50%) translateY(0);
  }

  .claim-word-front {
    color: var(--ink);
  }

  .claim-word-back {
    color: var(--accent);
    opacity: 0;
    filter: blur(10px) drop-shadow(0 0 22px var(--accent-soft));
    transform: translateX(-50%) translateY(0.16em);
  }

  .hero.is-cta-hover .claim-word-front {
    opacity: 0;
    filter: blur(10px);
    transform: translateX(-50%) translateY(-0.16em);
  }

  .hero.is-cta-hover .claim-word-back {
    opacity: 1;
    filter: blur(0) drop-shadow(0 0 22px var(--accent-soft));
    transform: translateX(-50%) translateY(0);
  }

  .hero-cta {
    position: relative;
    appearance: none;
    border: 0;
    background: transparent;
    margin-top: 1.72rem;
    padding: 0.78rem 0 1.05rem;
    min-width: 0;
    width: max-content;
    cursor: pointer;
    pointer-events: auto;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.105em;
    line-height: 1;
    text-transform: uppercase;
    color: rgba(var(--ink-rgb), 0.86);
    opacity: 0;
    transform: translateY(12px);
    animation: revealUp 1s var(--ease-out) 1.76s forwards;
    transition: color 0.25s ease, filter 0.25s ease, transform 0.25s ease, opacity 0.25s ease;
  }

  .hero-cta:hover,
  .hero-cta:focus-visible,
  .hero.is-cta-hover .hero-cta {
    color: var(--accent);
    filter: drop-shadow(0 0 20px var(--accent-soft));
    outline: none;
  }

  .cta-label {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 12px;
    white-space: nowrap;
    overflow: visible;
  }

  .cta-text {
    position: relative;
    display: inline-flex;
    height: 1em;
    line-height: 1;
    overflow: hidden;
  }

  .cta-text::before,
  .cta-text::after {
    content: attr(data-text);
    display: block;
    transition: transform 0.46s var(--ease-out);
    white-space: nowrap;
  }

  .cta-text::after {
    position: absolute;
    left: 0;
    top: 100%;
  }

  .hero-cta:hover .cta-text::before,
  .hero-cta:focus-visible .cta-text::before { transform: translateY(-115%); }

  .hero-cta:hover .cta-text::after,
  .hero-cta:focus-visible .cta-text::after { transform: translateY(-100%); }

  .cta-arrow {
    display: inline-block;
    transform: translateX(0);
    transition: transform 0.32s var(--ease-out);
  }

  .hero-cta:hover .cta-arrow,
  .hero-cta:focus-visible .cta-arrow { transform: translateX(6px); }

  .cta-underline {
    position: absolute;
    left: 50%;
    top: calc(100% + 1.05rem);
    display: block;
    width: 68px;
    height: 1px;
    background: currentColor;
    opacity: 0.86;
    transform: translateX(-50%);
    transform-origin: center;
    transition:
      width 0.38s var(--ease-out),
      background-color 0.25s ease,
      opacity 0.25s ease;
    pointer-events: none;
  }

  .hero-cta:hover .cta-underline,
  .hero-cta:focus-visible .cta-underline,
  .hero.is-cta-hover .hero-cta .cta-underline {
    width: 100%;
    opacity: 1;
  }

  @keyframes revealUp {
    to { opacity: 1; transform: translateY(0); }
  }

  @keyframes revealHeader {
    to { opacity: 1; transform: translateY(0); }
  }

  @media (max-width: 760px) {
    .site-header {
      top: 22px;
      left: 20px;
      right: 20px;
    }

    .brand-logo { width: 104px; }

    .header-actions { gap: 7px; }

    .pill {
      min-height: 28px;
      padding: 0 11px;
      font-size: 12px;
    }

    .menu-panel {
      top: 12px;
      right: 10px;
      left: 10px;
      bottom: 12px;
      width: auto;
    }

    .menu-inner {
      padding: 210px 34px 34px;
    }

    .menu-meta {
      gap: 38px;
      font-size: 15px;
    }

    .social-links { gap: 18px; }

    .hero-profile-kicker {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: 9px 0;
      max-width: 84vw;
      font-size: 10px;
      letter-spacing: 0.18em;
      line-height: 1.4;
      white-space: normal;
    }

    .kicker-separator { margin: 0 10px; }

    .hero-title {
      font-size: clamp(2rem, 9vw, 3rem);
      line-height: 1.03;
    }

    .claim-line { white-space: normal; }
  }

  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
      animation-duration: 0.001ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.001ms !important;
      scroll-behavior: auto !important;
    }

    .hero-profile-kicker,
    .hero-title,
    .hero-cta,
    .site-header {
      opacity: 1;
      transform: none;
    }
  }


  /* v4 refinements: softer Trionn-like blur, staggered menu reveal, locked face rewind */
  .hero-video {
    -webkit-mask-image: radial-gradient(ellipse at center,
      #000 0%,
      #000 55%,
      rgba(0,0,0,0.86) 68%,
      rgba(0,0,0,0.46) 84%,
      rgba(0,0,0,0) 100%);
    mask-image: radial-gradient(ellipse at center,
      #000 0%,
      #000 55%,
      rgba(0,0,0,0.86) 68%,
      rgba(0,0,0,0.46) 84%,
      rgba(0,0,0,0) 100%);
  }

  .video-stage::before {
    inset: -138px;
    filter: blur(88px);
    background:
      radial-gradient(
        ellipse at center,
        rgba(var(--black-rgb), 0) 28%,
        rgba(var(--black-rgb), 0.10) 42%,
        rgba(var(--black-rgb), 0.50) 62%,
        rgba(var(--black-rgb), 0.88) 80%,
        rgba(var(--black-rgb), 1) 100%
      );
  }

  .video-stage::after {
    inset: -34px;
    filter: blur(30px);
    background:
      linear-gradient(to bottom,
        rgba(var(--black-rgb),1) 0%,
        rgba(var(--black-rgb),1) 5%,
        rgba(var(--black-rgb),0.86) 13%,
        rgba(var(--black-rgb),0.52) 24%,
        rgba(var(--black-rgb),0.16) 37%,
        rgba(var(--black-rgb),0) 47%,
        rgba(var(--black-rgb),0) 53%,
        rgba(var(--black-rgb),0.16) 63%,
        rgba(var(--black-rgb),0.52) 76%,
        rgba(var(--black-rgb),0.86) 87%,
        rgba(var(--black-rgb),1) 95%,
        rgba(var(--black-rgb),1) 100%
      ),
      linear-gradient(to right,
        rgba(var(--black-rgb),1) 0%,
        rgba(var(--black-rgb),0.96) 6%,
        rgba(var(--black-rgb),0.66) 16%,
        rgba(var(--black-rgb),0.22) 30%,
        rgba(var(--black-rgb),0) 43%,
        rgba(var(--black-rgb),0) 57%,
        rgba(var(--black-rgb),0.22) 70%,
        rgba(var(--black-rgb),0.66) 84%,
        rgba(var(--black-rgb),0.96) 94%,
        rgba(var(--black-rgb),1) 100%
      );
  }

  .contact-pill {
    --pill-fill: #dedbd2;
    background: var(--ink);
    color: var(--panel-ink);
    border-color: var(--ink);
  }

  .contact-pill:hover,
  .contact-pill:focus-visible {
    color: var(--panel-ink);
    border-color: #dedbd2;
    box-shadow: 0 12px 28px rgba(var(--black-rgb), 0.14);
  }

  .hero.menu-is-open .contact-pill,
  .hero.menu-is-closing .contact-pill {
    --pill-fill: var(--panel-ink);
    background: var(--panel-ink);
    border-color: var(--panel-ink);
    color: var(--ink);
  }

  .hero.menu-is-open .contact-pill:hover,
  .hero.menu-is-open .contact-pill:focus-visible,
  .hero.menu-is-closing .contact-pill:hover,
  .hero.menu-is-closing .contact-pill:focus-visible {
    color: var(--ink);
    border-color: var(--panel-ink);
  }

  .hero.menu-is-closing .menu-pill {
    background: transparent;
    border-color: var(--panel-ink);
    color: var(--panel-ink);
  }

  .hero.menu-is-closing .menu-icon-line:first-child {
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
  }

  .hero.menu-is-closing .menu-icon-line:last-child {
    bottom: auto;
    top: 50%;
    transform: translateY(-50%) rotate(-45deg);
  }

  .menu-panel {
    transition:
      opacity 0.24s ease,
      transform 0.74s var(--ease-in-out),
      clip-path 0.74s var(--ease-in-out);
  }

  .hero.menu-is-closing .menu-panel {
    pointer-events: none;
    opacity: 0;
    transform: translateX(10px) scaleX(0.95) scaleY(0.04);
    clip-path: inset(0 0 93% 92% round 18px);
    transition-delay: 0.42s;
  }

  .menu-inner {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero.menu-is-open .menu-inner {
    opacity: 1;
    transform: none;
    transition-delay: 0s;
  }

  .menu-links li,
  .menu-meta section {
    opacity: 0;
    filter: blur(12px);
    transform: translateY(22px);
    transition:
      opacity 0.52s ease,
      filter 0.68s var(--ease-out),
      transform 0.68s var(--ease-out);
    will-change: opacity, filter, transform;
  }

  .hero.menu-is-open .menu-links li,
  .hero.menu-is-open .menu-meta section {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
  }

  .hero.menu-is-open .menu-links li:nth-child(1) { transition-delay: 0.46s; }
  .hero.menu-is-open .menu-links li:nth-child(2) { transition-delay: 0.52s; }
  .hero.menu-is-open .menu-links li:nth-child(3) { transition-delay: 0.58s; }
  .hero.menu-is-open .menu-links li:nth-child(4) { transition-delay: 0.64s; }
  .hero.menu-is-open .menu-meta section:nth-of-type(1) { transition-delay: 0.74s; }
  .hero.menu-is-open .menu-meta section:nth-of-type(2) { transition-delay: 0.80s; }

  .hero:not(.menu-is-open) .menu-links li:nth-child(1) { transition-delay: 0s; }
  .hero:not(.menu-is-open) .menu-links li:nth-child(2) { transition-delay: 0.045s; }
  .hero:not(.menu-is-open) .menu-links li:nth-child(3) { transition-delay: 0.09s; }
  .hero:not(.menu-is-open) .menu-links li:nth-child(4) { transition-delay: 0.135s; }
  .hero:not(.menu-is-open) .menu-meta section:nth-of-type(1) { transition-delay: 0.19s; }
  .hero:not(.menu-is-open) .menu-meta section:nth-of-type(2) { transition-delay: 0.235s; }

  .menu-link-text::before,
  .menu-link-text::after {
    content: none !important;
  }

  .menu-link-text {
    display: inline-grid;
    overflow: visible;
    line-height: 1.1;
  }

  .menu-link-text .blur-layer {
    grid-area: 1 / 1;
    display: inline-flex;
    white-space: nowrap;
    pointer-events: none;
  }

  .menu-link-text .char {
    display: inline-block;
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
    transition:
      opacity 0.62s ease,
      filter 0.76s var(--ease-out),
      transform 0.76s var(--ease-out);
    transition-delay: var(--rd, 0ms);
    will-change: opacity, filter, transform;
  }

  .menu-link-text .blur-layer-hover .char {
    opacity: 0;
    filter: blur(14px);
    transform: translateY(0.22em);
  }

  .menu-link:hover .menu-link-text .blur-layer-base .char,
  .menu-link:focus-visible .menu-link-text .blur-layer-base .char {
    opacity: 0;
    filter: blur(14px);
    transform: translateY(-0.22em);
    transition-delay: var(--d, 0ms);
  }

  .menu-link:hover .menu-link-text .blur-layer-hover .char,
  .menu-link:focus-visible .menu-link-text .blur-layer-hover .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
    transition-delay: calc(var(--d, 0ms) + 90ms);
  }

  .claim-word-face {
    opacity: 1 !important;
    filter: none !important;
    transform: translateX(-50%) translateY(0) !important;
    transition: none !important;
  }

  .claim-word-face .char {
    display: inline-block;
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
    transition:
      opacity 0.66s ease,
      filter 0.82s var(--ease-out),
      transform 0.82s var(--ease-out);
    transition-delay: var(--rd, 0ms);
    will-change: opacity, filter, transform;
  }

  .claim-word-back .char {
    opacity: 0;
    filter: blur(16px);
    transform: translateY(0.22em);
  }

  .hero.is-cta-hover .claim-word-front .char {
    opacity: 0;
    filter: blur(16px);
    transform: translateY(-0.22em);
    transition-delay: var(--d, 0ms);
  }

  .hero.is-cta-hover .claim-word-back .char {
    opacity: 1;
    filter: blur(0) drop-shadow(0 0 22px var(--accent-soft));
    transform: translateY(0);
    transition-delay: calc(var(--d, 0ms) + 110ms);
  }


  /* v5 refinements */
  .brand-logo {
    position: relative;
    z-index: 75;
    transform: translateZ(0);
  }

  .brand-logo img {
    image-rendering: auto;
    transform: translateZ(0);
    backface-visibility: hidden;
  }

  /* Contact button: simple darkening, no sliding/rotating text fill. */
  .contact-pill::before {
    content: none !important;
  }

  .contact-pill .pill-label {
    overflow: visible;
  }

  .contact-pill .pill-label::before {
    transform: none !important;
    transition: none !important;
  }

  .contact-pill .pill-label::after {
    content: none !important;
  }

  .contact-pill:hover,
  .contact-pill:focus-visible {
    background: #e3dfd6;
    color: var(--panel-ink);
    border-color: #e3dfd6;
    transform: translateY(-1px);
  }

  .hero.menu-is-open .contact-pill,
  .hero.menu-is-closing .contact-pill {
    background: var(--panel-ink);
    border-color: var(--panel-ink);
    color: var(--ink);
  }

  .hero.menu-is-open .contact-pill:hover,
  .hero.menu-is-open .contact-pill:focus-visible,
  .hero.menu-is-closing .contact-pill:hover,
  .hero.menu-is-closing .contact-pill:focus-visible {
    background: var(--panel-ink);
    color: var(--ink);
    border-color: var(--panel-ink);
  }

  .claim-word-front {
    color: var(--ink) !important;
    font-style: italic;
  }

  .claim-word-back {
    color: var(--accent) !important;
    font-style: italic;
  }

  .cta-label .cta-underline {
    width: 68px;
  }

  .hero-cta:hover .cta-label .cta-underline,
  .hero-cta:focus-visible .cta-label .cta-underline,
  .hero.is-cta-hover .hero-cta .cta-label .cta-underline {
    width: 100%;
  }


  /* v6 organic blur timing: less mechanical, more diffused letter behaviour */
  .claim-word-face .char,
  .menu-link-text .char,
  .cta-text .char {
    transition-duration: var(--dur, 780ms);
    transition-timing-function: var(--ease-out);
  }

  .claim-word-face .char {
    transition-delay: var(--rd, 0ms);
  }

  .hero.is-cta-hover .claim-word-front .char {
    opacity: 0;
    filter: blur(var(--blur-out, 17px));
    transform: translateY(var(--out-y, -0.20em)) translateX(var(--out-x, 0));
    transition-delay: var(--out, var(--d, 0ms));
  }

  .hero.is-cta-hover .claim-word-back .char {
    opacity: 1;
    filter: blur(0) drop-shadow(0 0 22px var(--accent-soft));
    transform: translateY(0) translateX(0);
    transition-delay: var(--in, calc(var(--d, 0ms) + 110ms));
  }

  .menu-link:hover .menu-link-text .blur-layer-base .char,
  .menu-link:focus-visible .menu-link-text .blur-layer-base .char {
    opacity: 0;
    filter: blur(var(--blur-out, 14px));
    transform: translateY(var(--out-y, -0.18em)) translateX(var(--out-x, 0));
    transition-delay: var(--out, var(--d, 0ms));
  }

  .menu-link:hover .menu-link-text .blur-layer-hover .char,
  .menu-link:focus-visible .menu-link-text .blur-layer-hover .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    transition-delay: var(--in, calc(var(--d, 0ms) + 90ms));
  }

  .menu-link-text .blur-layer-hover .char,
  .cta-text .blur-layer-hover .char {
    opacity: 0;
    filter: blur(var(--blur-in, 14px));
    transform: translateY(var(--in-y, 0.20em)) translateX(var(--in-x, 0));
  }

  /* CTA text now also uses the same organic blur/fade rather than a mechanical vertical roll. */
  .cta-text::before,
  .cta-text::after {
    content: none !important;
  }

  .cta-text {
    display: inline-grid;
    height: auto;
    overflow: visible;
    line-height: 1;
  }

  .cta-text .blur-layer {
    grid-area: 1 / 1;
    display: inline-flex;
    white-space: nowrap;
    pointer-events: none;
  }

  .cta-text .char {
    display: inline-block;
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    transition:
      opacity 0.64s ease,
      filter 0.78s var(--ease-out),
      transform 0.78s var(--ease-out);
    transition-delay: var(--rd, 0ms);
    will-change: opacity, filter, transform;
  }

  .hero-cta:hover .cta-text .blur-layer-base .char,
  .hero-cta:focus-visible .cta-text .blur-layer-base .char,
  .hero.is-cta-hover .hero-cta .cta-text .blur-layer-base .char {
    opacity: 0;
    filter: blur(var(--blur-out, 13px));
    transform: translateY(var(--out-y, -0.16em)) translateX(var(--out-x, 0));
    transition-delay: var(--out, var(--d, 0ms));
  }

  .hero-cta:hover .cta-text .blur-layer-hover .char,
  .hero-cta:focus-visible .cta-text .blur-layer-hover .char,
  .hero.is-cta-hover .hero-cta .cta-text .blur-layer-hover .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    transition-delay: var(--in, calc(var(--d, 0ms) + 80ms));
  }


  /* v7 refinements: lock interactions until intro is fully visible + one-shot organic menu hover */
  .hero:not(.is-ready) .brand-logo,
  .hero:not(.is-ready) .header-actions,
  .hero:not(.is-ready) .hero-cta,
  .hero:not(.is-ready) .menu-panel {
    pointer-events: none !important;
  }

  .hero:not(.is-ready) .hero-cta,
  .hero:not(.is-ready) .pill {
    cursor: default;
  }

  .menu-blur-target {
    transition: opacity 0.34s ease, color 0.24s ease;
    will-change: opacity;
  }

  .menu-panel.has-menu-hover .menu-blur-target:not(.is-hover-source) {
    opacity: 0.48;
  }

  .menu-panel.has-menu-hover .menu-blur-target.is-hover-source {
    opacity: 1;
  }

  .meta-row a,
  .social-links a {
    position: relative;
    display: inline-flex;
    align-items: center;
    width: max-content;
    overflow: visible;
    color: var(--panel-ink);
    outline: none;
  }

  .social-links a:hover,
  .meta-row a:hover,
  .social-links a:focus-visible,
  .meta-row a:focus-visible {
    color: var(--panel-ink);
  }

  .meta-row a .menu-link-text,
  .social-links a .menu-link-text {
    display: inline-grid;
    line-height: 1.15;
    overflow: visible;
  }

  .meta-row a .menu-link-text .blur-layer,
  .social-links a .menu-link-text .blur-layer {
    grid-area: 1 / 1;
    display: inline-flex;
    white-space: nowrap;
    pointer-events: none;
  }

  .meta-row a .menu-link-text .char,
  .social-links a .menu-link-text .char {
    display: inline-block;
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    transition:
      opacity var(--dur, 720ms) ease,
      filter var(--dur, 720ms) var(--ease-out),
      transform var(--dur, 720ms) var(--ease-out);
    transition-delay: var(--rd, 0ms);
    will-change: opacity, filter, transform;
  }

  .meta-row a .menu-link-text .blur-layer-hover .char,
  .social-links a .menu-link-text .blur-layer-hover .char {
    opacity: 0;
    filter: blur(var(--blur-in, 14px));
    transform: translateY(var(--in-y, 0.20em)) translateX(var(--in-x, 0));
  }

  .menu-inline-arrow {
    flex: 0 0 10px;
    margin-left: 9px;
    transform: translateX(-6px);
  }

  /* Neutralise the old :hover-driven blur so mouseleave does not replay the effect backwards. */
  .menu-panel .menu-blur-target:hover .menu-link-text .blur-layer-base .char,
  .menu-panel .menu-blur-target:focus-visible .menu-link-text .blur-layer-base .char,
  .menu-panel .menu-blur-target:focus-within .menu-link-text .blur-layer-base .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    transition-delay: var(--rd, 0ms);
  }

  .menu-panel .menu-blur-target:hover .menu-link-text .blur-layer-hover .char,
  .menu-panel .menu-blur-target:focus-visible .menu-link-text .blur-layer-hover .char,
  .menu-panel .menu-blur-target:focus-within .menu-link-text .blur-layer-hover .char {
    opacity: 0;
    filter: blur(var(--blur-in, 14px));
    transform: translateY(var(--in-y, 0.20em)) translateX(var(--in-x, 0));
    transition-delay: var(--rd, 0ms);
  }

  .menu-panel .menu-blur-target:hover .menu-link-arrow,
  .menu-panel .menu-blur-target:focus-visible .menu-link-arrow,
  .menu-panel .menu-blur-target:focus-within .menu-link-arrow {
    opacity: 0;
    transform: translateX(-8px);
  }

  /* One-shot enter state: blur/fade plays only when JS adds this class. */
  .menu-panel .menu-blur-target.is-blur-play .menu-link-text .blur-layer-base .char {
    opacity: 0;
    filter: blur(var(--blur-out, 14px));
    transform: translateY(var(--out-y, -0.18em)) translateX(var(--out-x, 0));
    transition-delay: var(--out, var(--d, 0ms));
  }

  .menu-panel .menu-blur-target.is-blur-play .menu-link-text .blur-layer-hover .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    transition-delay: var(--in, calc(var(--d, 0ms) + 90ms));
  }

  .menu-panel .menu-blur-target.is-blur-play .menu-link-arrow {
    opacity: 1;
    transform: translateX(0);
  }

  .menu-panel .menu-blur-target.is-resetting .menu-link-text .char,
  .menu-panel .menu-blur-target.is-resetting .menu-link-arrow {
    transition-duration: 0ms !important;
    transition-delay: 0ms !important;
  }

  .menu-panel .menu-blur-target.is-resetting .menu-link-text .blur-layer-base .char {
    opacity: 1 !important;
    filter: blur(0) !important;
    transform: translateY(0) translateX(0) !important;
  }

  .menu-panel .menu-blur-target.is-resetting .menu-link-text .blur-layer-hover .char {
    opacity: 0 !important;
    filter: blur(var(--blur-in, 14px)) !important;
    transform: translateY(var(--in-y, 0.20em)) translateX(var(--in-x, 0)) !important;
  }

  .menu-panel .menu-blur-target.is-resetting .menu-link-arrow {
    opacity: 0 !important;
    transform: translateX(-8px) !important;
  }


  /* v8 menu hover: softer, less "expand blur", letters escape up/down individually. */
  .menu-panel .menu-blur-target .menu-link-text .char {
    transition-duration: var(--dur, 640ms);
  }

  .menu-panel .menu-blur-target .menu-link-text .blur-layer-hover .char {
    filter: blur(var(--blur-in, 6px));
    transform: translateY(var(--in-y, 0.08em)) translateX(var(--in-x, 0));
  }

  .menu-panel .menu-blur-target.is-blur-play .menu-link-text .blur-layer-base .char {
    filter: blur(var(--blur-out, 6px));
    transform: translateY(var(--out-y, 0.10em)) translateX(var(--out-x, 0));
  }

  .menu-panel .menu-blur-target.is-resetting .menu-link-text .blur-layer-hover .char {
    filter: blur(var(--blur-in, 6px)) !important;
    transform: translateY(var(--in-y, 0.08em)) translateX(var(--in-x, 0)) !important;
  }



  /* v9 refinements: instant contact reset, reversed menu close, short empty beat in menu hover. */
  .hero.menu-is-closing .contact-pill {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: var(--panel-ink) !important;
    transition-duration: 0ms !important;
  }

  .hero.menu-is-closing .contact-pill:hover,
  .hero.menu-is-closing .contact-pill:focus-visible {
    background: #e3dfd6 !important;
    border-color: #e3dfd6 !important;
    color: var(--panel-ink) !important;
  }

  .contact-pill .pill-label {
    display: inline-flex !important;
    height: 1em !important;
    overflow: hidden !important;
    line-height: 1 !important;
  }

  .contact-pill .pill-label::before,
  .contact-pill .pill-label::after {
    content: attr(data-text) !important;
    display: block !important;
    white-space: nowrap !important;
    transform: translateY(0) !important;
    transition: transform 0.42s var(--ease-out) !important;
  }

  .contact-pill .pill-label::after {
    position: absolute !important;
    left: 0 !important;
    top: 100% !important;
  }

  .contact-pill:hover .pill-label::before,
  .contact-pill:focus-visible .pill-label::before {
    transform: translateY(-115%) !important;
  }

  .contact-pill:hover .pill-label::after,
  .contact-pill:focus-visible .pill-label::after {
    transform: translateY(-100%) !important;
  }

  .hero.menu-is-open .contact-pill .pill-label::before,
  .hero.menu-is-open .contact-pill .pill-label::after {
    color: var(--ink);
  }

  .hero.menu-is-closing .menu-links li,
  .hero.menu-is-closing .menu-meta section {
    opacity: 0;
    filter: blur(12px);
    transform: translateY(22px);
    transition-duration: 0.48s, 0.56s, 0.56s;
    transition-timing-function: ease, var(--ease-in-out), var(--ease-in-out);
  }

  /* Closing is the exact inverse rhythm of the opening: social first, then contact block,
     then menu items from bottom to top, before the panel retracts. */
  .hero.menu-is-closing .menu-meta section:nth-of-type(2) { transition-delay: 0s; }
  .hero.menu-is-closing .menu-meta section:nth-of-type(1) { transition-delay: 0.055s; }
  .hero.menu-is-closing .menu-links li:nth-child(4) { transition-delay: 0.115s; }
  .hero.menu-is-closing .menu-links li:nth-child(3) { transition-delay: 0.17s; }
  .hero.menu-is-closing .menu-links li:nth-child(2) { transition-delay: 0.225s; }
  .hero.menu-is-closing .menu-links li:nth-child(1) { transition-delay: 0.28s; }

  .hero.menu-is-closing .menu-panel {
    transition-delay: 0.58s !important;
  }

  .menu-panel .menu-blur-target.is-blur-play .menu-link-text .blur-layer-base .char {
    transition-duration: 170ms !important;
    transition-timing-function: ease-out !important;
    transition-delay: var(--out, 0ms) !important;
    filter: blur(var(--blur-out, 5px));
    transform: translateY(var(--out-y, 0.09em)) translateX(var(--out-x, 0));
  }

  .menu-panel .menu-blur-target.is-blur-play .menu-link-text .blur-layer-hover .char {
    transition-duration: var(--dur, 540ms) !important;
    transition-timing-function: var(--ease-out) !important;
    transition-delay: var(--in, 230ms) !important;
  }

  .menu-panel .menu-blur-target.is-blur-play .menu-link-arrow {
    transition-delay: 230ms;
  }


  /* v10: social links alignment fix.
     Facebook is kept on the same baseline/row as LinkedIn and Instagram. */
  .social-links {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 24px;
    white-space: nowrap;
  }

  .social-links a {
    align-items: center;
    line-height: 1;
    min-height: 18px;
    vertical-align: top;
  }

  .social-links a .menu-link-text,
  .social-links a .menu-link-text .blur-layer {
    line-height: 1;
    align-items: center;
  }

  .social-links a .menu-inline-arrow {
    align-self: center;
  }

  @media (max-width: 640px) {
    .social-links {
      gap: 16px;
    }
  }




  /* v12: Business and Social hover items keep the blur text effect but no arrow. */
  .meta-row a .menu-inline-arrow,
  .social-links a .menu-inline-arrow {
    display: none !important;
  }

  /* v11: contact header stays dark only while the closing panel is physically underneath it.
     When the panel has retracted past the contact button, JS removes .menu-contact-on-panel
     and the color snaps back instantly. */
  .hero.menu-contact-on-panel .contact-pill,
  .hero.menu-is-closing.menu-contact-on-panel .contact-pill {
    background: var(--panel-ink) !important;
    border-color: var(--panel-ink) !important;
    color: var(--ink) !important;
    transition-duration: 0ms !important;
  }

  .hero.menu-contact-on-panel .contact-pill:hover,
  .hero.menu-contact-on-panel .contact-pill:focus-visible,
  .hero.menu-is-closing.menu-contact-on-panel .contact-pill:hover,
  .hero.menu-is-closing.menu-contact-on-panel .contact-pill:focus-visible {
    background: var(--panel-ink) !important;
    border-color: var(--panel-ink) !important;
    color: var(--ink) !important;
  }

  .hero.menu-is-closing:not(.menu-contact-on-panel) .contact-pill {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: var(--panel-ink) !important;
    transition-duration: 0ms !important;
  }

  .hero.menu-is-closing:not(.menu-contact-on-panel) .contact-pill:hover,
  .hero.menu-is-closing:not(.menu-contact-on-panel) .contact-pill:focus-visible {
    background: #e3dfd6 !important;
    border-color: #e3dfd6 !important;
    color: var(--panel-ink) !important;
  }


  /* v13: claim appears through a soft organic blur on site opening. */
  .hero-title {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }

  .claim-line {
    overflow: visible;
  }

  .claim-line .char,
  .claim-word-front .char {
    opacity: 0;
    filter: blur(var(--blur-in, 16px));
    transform: translateY(var(--in-y, 0.18em)) translateX(var(--in-x, 0));
    animation: claimIntroBlurIn var(--dur, 860ms) var(--ease-out) forwards;
    will-change: opacity, filter, transform;
  }

  .claim-line .char {
    animation-delay: calc(1.34s + var(--in, var(--d, 0ms)));
  }

  .claim-word-front .char {
    animation-delay: calc(1.56s + var(--in, var(--d, 0ms)));
  }

  .claim-word-back .char {
    animation: none;
  }

  .hero.claim-intro-complete .claim-line .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    animation: none;
  }

  .hero.claim-intro-complete:not(.is-cta-hover) .claim-word-front .char {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) translateX(0);
    animation: none;
  }

  .hero.claim-intro-complete.is-cta-hover .claim-word-front .char {
    animation: none;
  }

  @keyframes claimIntroBlurIn {
    0% {
      opacity: 0;
      filter: blur(var(--blur-in, 16px));
      transform: translateY(var(--in-y, 0.18em)) translateX(var(--in-x, 0));
    }
    56% {
      opacity: 1;
    }
    100% {
      opacity: 1;
      filter: blur(0);
      transform: translateY(0) translateX(0);
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .claim-line .char,
    .claim-word-front .char {
      opacity: 1 !important;
      filter: blur(0) !important;
      transform: none !important;
      animation: none !important;
    }
  }


  /* v14: scroll hero — transparent intro panel + HERO_FORM to INTRO_LOGO transition. */
  .hero-scroll-wrap {
    position: relative;
    height: 225vh;
    min-height: 1500px;
    background: var(--black);
  }

  .hero-scroll-wrap .hero {
    position: sticky;
    top: 0;
  }

  .hero {
    --scroll-progress: 0;
    --scroll-panel-y: 105%;
    --scroll-copy-opacity: 0;
    --hero-content-opacity: 1;
    --hero-content-y: 0px;
  }

  .scroll-logo-video {
    z-index: 2;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    filter: saturate(1.02) contrast(1.04);
    transition: none !important;
  }

  .hero.logo-video-active #heroVideo,
  .hero.logo-video-active .face-video {
    opacity: 0 !important;
    visibility: hidden;
    transition: none !important;
  }

  .hero.logo-video-active .scroll-logo-video {
    opacity: 1 !important;
    visibility: visible;
  }

  .hero.face-active .scroll-logo-video {
    opacity: 0;
    visibility: hidden;
  }

  .hero-content {
    opacity: var(--hero-content-opacity, 1);
    transform: translateY(var(--hero-content-y, 0px));
    will-change: opacity, transform;
  }

  .intro-scroll-panel {
    position: absolute;
    z-index: 14;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    /* Same safety zone as the fixed header: the copy never touches the browser edges. */
    padding-left: clamp(30px, 5.2vw, 112px);
    padding-right: clamp(25px, 5.2vw, 112px);
    pointer-events: none;
    background: transparent;
    opacity: var(--scroll-panel-opacity, 0);
    transform: translate3d(0, var(--scroll-panel-y, 105%), 0);
    will-change: opacity, transform;
  }

  .intro-scroll-panel::before {
    content: none;
  }

  .intro-scroll-copy {
    width: 100%;
    max-width: none;
    overflow: visible;
  }

  .intro-scroll-text {
    width: 100%;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: var(--intro-fit-size, clamp(1.88rem, 2.58vw, 3.18rem));
    font-weight: 500;
    line-height: 1.12;
    letter-spacing: -0.047em;
    text-align: left;
    color: rgba(var(--ink-rgb), 0.22);
    text-wrap: normal;
    overflow: visible;
  }

  .intro-scroll-line {
    display: block;
    white-space: nowrap;
  }

  .intro-scroll-word {
    position: relative;
    display: inline-block;
    margin-right: 0.15em;
    opacity: 1;
    color: rgba(var(--ink-rgb), 0.22);
    filter: none;
    transform: none;
    will-change: opacity, filter, transform;
  }

  .intro-scroll-word::after {
    content: attr(data-word);
    position: absolute;
    left: 0;
    top: 0;
    color: rgb(var(--ink-rgb));
    opacity: var(--word-active, 0);
    filter: none;
    transform: none;
    pointer-events: none;
    will-change: opacity;
  }

  .intro-about-link {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    width: max-content;
    margin: clamp(22px, 2.2vw, 38px) 0 0 auto;
    padding: 0 0 9px;
    pointer-events: auto;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.78rem, 0.74vw, 0.94rem);
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: var(--ink);
    opacity: var(--about-link-opacity, 0);
    transform: translateY(calc((1 - var(--about-link-opacity, 0)) * 12px));
    transition: color 0.28s ease, filter 0.28s ease;
    will-change: opacity, transform;
  }

  .intro-about-link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: currentColor;
    opacity: 0.78;
    transform-origin: left center;
    transform: scaleX(var(--about-link-opacity, 0));
  }

  .intro-about-link-arrow {
    display: inline-block;
    margin-left: 12px;
    transform: translateX(0);
    transition: transform 0.32s var(--ease-out);
  }

  .intro-about-link:hover,
  .intro-about-link:focus-visible {
    color: var(--accent);
    filter: drop-shadow(0 0 18px var(--accent-soft));
    outline: none;
  }

  .intro-about-link:hover .intro-about-link-arrow,
  .intro-about-link:focus-visible .intro-about-link-arrow {
    transform: translateX(6px);
  }

  @media (max-width: 760px) {
    .hero-scroll-wrap {
      height: 230vh;
      min-height: 1250px;
    }

    .intro-scroll-panel {
      align-items: flex-end;
      padding: 0 22px 17vh;
    }

    .intro-scroll-copy {
      width: 100%;
      max-width: 100%;
    }

    .intro-scroll-text {
      width: 100%;
      font-size: clamp(1.55rem, 7.4vw, 3rem);
      line-height: 1.08;
      letter-spacing: -0.052em;
    }

    .intro-scroll-line {
      display: inline;
      white-space: normal;
    }

    .intro-about-link {
      margin-top: 24px;
      font-size: 0.78rem;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .hero-scroll-wrap {
      height: auto;
      min-height: 100vh;
    }

    .hero-scroll-wrap .hero {
      position: relative;
    }

    .intro-scroll-panel {
      position: relative;
      min-height: 80vh;
      opacity: 1 !important;
      transform: none !important;
    }

    .intro-scroll-word::after {
      opacity: 1 !important;
      filter: blur(0) !important;
      transform: none !important;
    }
  }


  /* v15: vision block width, muted-to-white word reveal, and restrained white button hovers. */
  .intro-scroll-panel {
    padding-left: clamp(30px, 6vw, 122px);
    padding-right: clamp(25px, 6vw, 122px);
  }

  .intro-scroll-copy {
    display: grid;
    grid-template-columns: clamp(92px, 8.4vw, 132px) minmax(0, 1fr);
    align-items: start;
    column-gap: clamp(30px, 4.8vw, 76px);
    width: min(1180px, calc(100vw - clamp(92px, 12vw, 244px)));
    max-width: min(1180px, calc(100vw - clamp(92px, 12vw, 244px)));
    margin: 0 auto;
    overflow: visible;
  }

  .intro-scroll-eyebrow {
    display: block;
    padding-top: 0.54em;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: rgba(var(--ink-rgb), 0.84);
    white-space: nowrap;
  }

  .intro-scroll-main {
    width: 100%;
    max-width: 960px;
    min-width: 0;
  }

  .intro-scroll-text {
    width: 100%;
    font-size: var(--intro-fit-size, clamp(1.72rem, 2.28vw, 2.72rem));
    line-height: 1.13;
    letter-spacing: -0.043em;
    color: rgba(var(--ink-rgb), 0.22) !important;
    overflow: visible;
  }

  .intro-scroll-line {
    display: block;
    white-space: nowrap;
  }

  .intro-scroll-word {
    color: rgba(var(--ink-rgb), 0.22) !important;
  }

  .intro-scroll-word::after {
    color: rgb(var(--ink-rgb)) !important;
    opacity: var(--word-active, 0) !important;
  }

  .hero-cta,
  .intro-about-link {
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 0.82rem !important;
    font-weight: 600;
    letter-spacing: 0.105em;
    line-height: 1;
    text-transform: uppercase;
    color: var(--ink) !important;
    filter: none !important;
  }

  .hero-cta:hover,
  .hero-cta:focus-visible,
  .hero.is-cta-hover .hero-cta,
  .intro-about-link:hover,
  .intro-about-link:focus-visible {
    color: var(--ink) !important;
    filter: none !important;
    outline: none;
  }

  .hero-cta .cta-label,
  .intro-about-link {
    gap: 12px;
  }

  .hero-cta .cta-text {
    display: inline-block !important;
    height: auto !important;
    overflow: visible !important;
    line-height: 1 !important;
  }

  .hero-cta .cta-text::before,
  .hero-cta .cta-text::after {
    content: none !important;
  }

  .hero-cta .cta-text .blur-layer {
    display: none !important;
  }

  .hero-cta .cta-arrow,
  .intro-about-link-arrow {
    display: inline-block;
    margin-left: 12px;
    transform: none !important;
    transition: none !important;
  }

  .hero-cta .cta-underline {
    left: 0;
    top: calc(100% + 0.92rem);
    width: 68px;
    height: 1px;
    background: var(--ink);
    opacity: 0.86;
    transform: none;
    transform-origin: left center;
    transition: width 0.42s var(--ease-out), opacity 0.25s ease;
  }

  .hero-cta:hover .cta-underline,
  .hero-cta:focus-visible .cta-underline,
  .hero.is-cta-hover .hero-cta .cta-underline {
    width: 100%;
    opacity: 1;
  }

  .intro-about-link {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    width: max-content;
    margin: clamp(22px, 2vw, 34px) 0 0 auto;
    padding: 0 0 9px;
    pointer-events: auto;
    opacity: var(--about-link-opacity, 0);
    transform: translateY(calc((1 - var(--about-link-opacity, 0)) * 12px));
    transition: none;
  }

  .intro-about-link::after {
    left: 0;
    right: 0;
    bottom: 0;
    width: auto;
    background: var(--ink);
    opacity: 0.86;
    transform-origin: left center;
    transform: scaleX(var(--about-underline-scale, 0));
    transition: transform 0.42s var(--ease-out), opacity 0.25s ease;
  }

  .intro-about-link:hover::after,
  .intro-about-link:focus-visible::after {
    transform: scaleX(1);
    opacity: 1;
  }

  @media (max-width: 980px) {
    .intro-scroll-copy {
      grid-template-columns: 1fr;
      row-gap: 22px;
      width: min(760px, calc(100vw - 44px));
      max-width: min(760px, calc(100vw - 44px));
    }

    .intro-scroll-eyebrow {
      padding-top: 0;
      font-size: 10px;
      letter-spacing: 0.18em;
    }

    .intro-scroll-main {
      max-width: 100%;
    }
  }


  @media (max-width: 760px) {
    .intro-scroll-panel {
      align-items: center;
      padding-left: 22px;
      padding-right: 22px;
      padding-bottom: 0;
    }

    .intro-scroll-copy {
      width: 100%;
      max-width: 100%;
      grid-template-columns: 1fr;
    }

    .intro-scroll-text {
      font-size: clamp(1.32rem, 7.1vw, 2.35rem);
      line-height: 1.12;
      letter-spacing: -0.046em;
    }

    .intro-scroll-line {
      display: inline;
      white-space: normal;
    }

    .hero-cta,
    .intro-about-link {
      font-size: 0.78rem !important;
    }
  }



  /* v16: faster video handoff, 54px vision margins, centered CTA line,
     and right-to-left underline wipe on the À propos button. */
  .intro-scroll-panel {
    padding-left: 54px !important;
    padding-right: 54px !important;
  }

  .intro-scroll-copy {
    width: calc(100vw - 108px) !important;
    max-width: calc(100vw - 108px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    grid-template-columns: clamp(96px, 7.4vw, 132px) minmax(0, 1fr) !important;
    column-gap: clamp(28px, 3.6vw, 64px) !important;
  }

  .intro-scroll-main {
    max-width: none !important;
    width: 100% !important;
  }

  .intro-scroll-text {
    font-size: var(--intro-fit-size, clamp(1.7rem, 2.18vw, 2.78rem)) !important;
    line-height: 1.12 !important;
    letter-spacing: -0.043em !important;
  }

  .intro-about-link {
    margin-left: auto !important;
    margin-right: 0 !important;
  }

  .hero-cta .cta-underline {
    left: 50% !important;
    right: auto !important;
    width: 68px !important;
    transform: translateX(-50%) !important;
    transform-origin: center center !important;
    background: var(--ink) !important;
    opacity: 0.86 !important;
    transition: width 0.42s var(--ease-out), opacity 0.25s ease !important;
  }

  .hero-cta:hover .cta-underline,
  .hero-cta:focus-visible .cta-underline,
  .hero.is-cta-hover .hero-cta .cta-underline {
    width: 100% !important;
    opacity: 1 !important;
    transform: translateX(-50%) !important;
  }

  .intro-about-link::after {
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    transform-origin: left center;
    transform: scaleX(var(--about-underline-scale, 0));
    animation: none;
  }

  @keyframes aboutUnderlineWipe {
    0% {
      transform-origin: right center;
      transform: scaleX(1);
    }
    46% {
      transform-origin: right center;
      transform: scaleX(0);
    }
    47% {
      transform-origin: left center;
      transform: scaleX(0);
    }
    100% {
      transform-origin: left center;
      transform: scaleX(1);
    }
  }

  .intro-about-link:hover::after,
  .intro-about-link:focus-visible::after {
    animation: aboutUnderlineWipe 0.72s var(--ease-in-out) forwards !important;
    opacity: 1 !important;
  }

  @media (max-width: 760px) {
    .intro-scroll-panel {
      padding-left: 22px !important;
      padding-right: 22px !important;
    }

    .intro-scroll-copy {
      width: 100% !important;
      max-width: 100% !important;
      grid-template-columns: 1fr !important;
    }
  }


  /* v17: justified vision text, slower scroll, loop video, and fixed underline hover. */
  .hero-scroll-wrap {
    height: 252vh !important;
    min-height: 1720px !important;
  }

  .scroll-loop-video {
    z-index: 2;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    filter: saturate(1.02) contrast(1.04);
    transition: none !important;
  }

  .hero.logo-video-active #heroVideo,
  .hero.logo-video-active .face-video,
  .hero.loop-video-active #heroVideo,
  .hero.loop-video-active .face-video {
    opacity: 0 !important;
    visibility: hidden !important;
    transition: none !important;
  }

  .hero.loop-video-active .scroll-logo-video {
    opacity: 0 !important;
    visibility: hidden !important;
  }

  .hero.loop-video-active .scroll-loop-video {
    opacity: 1 !important;
    visibility: visible !important;
  }

  .intro-scroll-panel {
    padding-left: 54px !important;
    padding-right: 54px !important;
  }

  .intro-scroll-copy {
    width: calc(100vw - 108px) !important;
    max-width: calc(100vw - 108px) !important;
    grid-template-columns: clamp(96px, 7.3vw, 132px) minmax(0, 1fr) !important;
    column-gap: clamp(30px, 3.9vw, 70px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    overflow: visible !important;
  }

  .intro-scroll-main {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  .intro-scroll-text {
    width: 100% !important;
    max-width: none !important;
    /* v20: nudged up slightly per feedback ("corps du texte légèrement plus grand"). */
    font-size: var(--intro-fit-size, clamp(2.16rem, 2.74vw, 3.42rem)) !important;
    line-height: 1.115 !important;
    letter-spacing: -0.047em !important;
    text-align: justify !important;
    text-align-last: left !important;
    color: rgba(var(--ink-rgb), 0.24) !important;
    overflow: visible !important;
  }

  .intro-scroll-line {
    display: inline !important;
    white-space: normal !important;
  }

  .intro-scroll-word {
    display: inline-block !important;
    margin-right: 0 !important;
    color: rgba(var(--ink-rgb), 0.24) !important;
  }

  .intro-scroll-word::after {
    color: rgb(var(--ink-rgb)) !important;
    opacity: var(--word-active, 0) !important;
  }

  .intro-about-link {
    position: relative !important;
    z-index: 30 !important;
    pointer-events: auto !important;
    margin-left: auto !important;
    margin-right: 0 !important;
  }

  .intro-about-link::after {
    left: 0 !important;
    right: auto !important;
    width: 100% !important;
    transform-origin: left center;
    transform: scaleX(var(--about-underline-scale, 0));
    animation: none !important;
    transition: transform 0.42s var(--ease-out), opacity 0.25s ease !important;
  }

  @keyframes aboutUnderlineWipeV17 {
    0% { transform-origin: right center; transform: scaleX(1); }
    44% { transform-origin: right center; transform: scaleX(0); }
    45% { transform-origin: left center; transform: scaleX(0); }
    100% { transform-origin: left center; transform: scaleX(1); }
  }

  .intro-about-link:hover::after,
  .intro-about-link:focus-visible::after {
    animation: aboutUnderlineWipeV17 0.72s var(--ease-in-out) forwards !important;
    opacity: 1 !important;
  }

  @media (max-width: 980px) {
    .intro-scroll-text {
      font-size: var(--intro-fit-size, clamp(1.62rem, 6.1vw, 2.7rem)) !important;
      text-align: left !important;
    }
  }

  @media (max-width: 760px) {
    .hero-scroll-wrap {
      height: 246vh !important;
      min-height: 1320px !important;
    }

    .intro-scroll-panel {
      padding-left: 22px !important;
      padding-right: 22px !important;
    }

    .intro-scroll-copy {
      width: 100% !important;
      max-width: 100% !important;
      grid-template-columns: 1fr !important;
    }
  }


  /* v19: faster reverse handoff for INTRO_LOGO on upward scroll. */
  /* v18: stabilised scroll-video handoff + medium text weights. */
  .hero-scroll-wrap {
    /* Slightly longer sticky area = a touch slower scroll rhythm. */
    height: 262vh !important;
    min-height: 1810px !important;
  }

  .claim-line,
  .claim-line .char {
    font-weight: 500 !important;
  }

  .intro-scroll-text,
  .intro-scroll-word,
  .intro-scroll-word::after {
    font-weight: 500 !important;
  }

  @media (max-width: 760px) {
    .hero-scroll-wrap {
      height: 254vh !important;
      min-height: 1370px !important;
    }
  }


  /* ============================================================
     v21 — HOMEPAGE CONTINUATION
     Adds: intro secondary SEO copy, horizontal light work section,
     typographic expertises, selected references, immersive contact footer.
     Existing hero/video logic is intentionally left untouched.
     ============================================================ */

  .intro-scroll-copy {
    grid-template-columns: clamp(92px, 7.3vw, 132px) minmax(0, 1fr) minmax(220px, 320px) !important;
    column-gap: clamp(30px, 3.8vw, 68px) !important;
    align-items: end !important;
  }

  .intro-seo-copy {
    align-self: end;
    max-width: 320px;
    padding-bottom: 0.18em;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.82rem, 0.82vw, 0.98rem);
    font-weight: 500;
    line-height: 1.56;
    letter-spacing: -0.015em;
    color: rgba(var(--ink-rgb), 0.72);
    opacity: var(--scroll-panel-opacity, 0);
    will-change: opacity;
  }

  .intro-seo-copy strong {
    display: block;
    margin-bottom: 14px;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(var(--ink-rgb), 0.92);
  }

  @media (max-width: 1120px) {
    .intro-scroll-copy {
      grid-template-columns: clamp(82px, 8vw, 120px) minmax(0, 1fr) !important;
      align-items: start !important;
    }

    .intro-seo-copy {
      grid-column: 2;
      max-width: 560px;
      margin-top: 28px;
      font-size: 0.92rem;
    }
  }

  @media (max-width: 760px) {
    .intro-seo-copy {
      grid-column: 1;
      max-width: 100%;
      margin-top: 24px;
      font-size: 0.88rem;
      line-height: 1.5;
    }
  }

  .section-kicker {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 22px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: rgba(var(--black-rgb), 0.46);
  }

  .section-kicker::before {
    content: "";
    width: 24px;
    height: 1px;
    background: currentColor;
    opacity: 0.52;
  }

  .work-section {
    position: relative;
    z-index: 30;
    height: var(--work-scroll-height, 260vh);
    min-height: 1560px;
    background: transparent;
    color: var(--panel-ink);
    overflow: clip;
    --work-bg-progress: 0;
    --work-content-reveal: 0;
    --work-content-opacity: 0;
  }

  .work-section::before {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0;
    background:
      radial-gradient(circle at 86% 18%, rgba(255,255,255,0.72), transparent 28%),
      linear-gradient(180deg, #F7F7F7 0%, #F7F7F7 100%);
    transform: translate3d(0, calc((1 - var(--work-bg-progress, 1)) * 100vh), 0);
    will-change: transform;
  }

  .work-sticky {
    position: sticky;
    z-index: 1;
    top: 0;
    height: 100vh;
    min-height: 760px;
    overflow: hidden;
  }

  .work-layout {
    position: relative;
    width: 100%;
    height: 100%;
    display: grid;
    grid-template-columns: 49.2% 50.8%;
    align-items: center;
    opacity: var(--work-content-opacity, 1);
    transform: translate3d(0, calc((1 - var(--work-content-opacity, 1)) * 34px), 0);
    -webkit-mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 1) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 1) * 100% + 13%));
    mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 1) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 1) * 100% + 13%));
    will-change: opacity, transform, mask-image;
  }

  .work-layout::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 49.2%;
    width: 1px;
    background: rgba(var(--black-rgb), 0.075);
    pointer-events: none;
  }

  .work-left {
    align-self: center;
    padding-left: clamp(44px, 11.7vw, 190px);
    padding-right: clamp(32px, 6vw, 104px);
    transform: translateY(2.5vh);
  }

  .work-left h2 {
    max-width: 10.8ch;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(3.18rem, 5.15vw, 6.15rem);
    font-weight: 500;
    line-height: 0.92;
    letter-spacing: -0.068em;
    color: rgba(var(--black-rgb), 0.76);
  }

  .work-all-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    width: max-content;
    margin-top: clamp(34px, 5.4vw, 72px);
    margin-left: clamp(48px, 7.3vw, 138px);
    padding-bottom: 10px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.70rem, 0.74vw, 0.82rem);
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: rgba(var(--black-rgb), 0.58);
    transition: color 0.28s ease;
  }

  .work-all-link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: currentColor;
    opacity: 0.78;
    transform-origin: left center;
    transform: scaleX(0.42);
    transition: transform 0.45s var(--ease-out), opacity 0.24s ease;
  }

  .work-all-link span {
    display: inline-block;
    margin-left: 34px;
    transition: transform 0.32s var(--ease-out);
  }

  .work-all-link:hover,
  .work-all-link:focus-visible {
    color: rgba(var(--black-rgb), 0.92);
    outline: none;
  }

  .work-all-link:hover::after,
  .work-all-link:focus-visible::after {
    transform: scaleX(1);
    opacity: 1;
  }

  .work-all-link:hover span,
  .work-all-link:focus-visible span { transform: translateX(6px); }

  .work-viewport {
    width: 100%;
    overflow: visible;
    padding-right: clamp(32px, 4.1vw, 78px);
  }

  .work-track {
    display: flex;
    align-items: flex-start;
    gap: clamp(52px, 6.4vw, 126px);
    width: max-content;
    transform: translate3d(var(--work-x, 0px), 0, 0);
    will-change: transform;
  }

  .project-card {
    display: block;
    flex: 0 0 min(42.7vw, 820px);
    color: rgba(var(--black-rgb), 0.78);
    outline: none;
  }

  .project-thumb {
    position: relative;
    width: 100%;
    aspect-ratio: 36 / 25;
    overflow: hidden;
    border-radius: 7px;
    background: var(--project-bg);
    isolation: isolate;
    box-shadow: 0 24px 70px rgba(var(--black-rgb), 0.08);
  }

  .project-thumb::before,
  .project-thumb::after {
    content: "";
    position: absolute;
    pointer-events: none;
  }

  .project-thumb::before {
    z-index: 3;
    inset: 5.2%;
    border: 1px solid rgba(250, 248, 242, 0.46);
    opacity: 0.72;
    transition: opacity 0.48s ease, inset 0.62s var(--ease-out);
  }

  .project-thumb::after {
    z-index: 2;
    inset: 0;
    background:
      radial-gradient(circle at var(--px, 72%) var(--py, 28%), rgba(255,255,255,0.42), transparent 23%),
      linear-gradient(180deg, rgba(255,255,255,0.14) 0%, rgba(0,0,0,0.06) 48%, rgba(0,0,0,0.34) 100%);
    opacity: 0.82;
    transition: opacity 0.55s var(--ease-out), transform 0.9s var(--ease-out);
  }

  .project-card:hover .project-thumb::before,
  .project-card:focus-visible .project-thumb::before {
    inset: 4.4%;
    opacity: 0.92;
  }

  .project-card:hover .project-thumb::after,
  .project-card:focus-visible .project-thumb::after {
    opacity: 0.96;
    transform: scale(1.035);
  }

  .project-visual-noise,
  .project-visual-title,
  .project-visual-label {
    position: absolute;
    z-index: 4;
    pointer-events: none;
  }

  .project-visual-noise {
    inset: 0;
    background:
      linear-gradient(115deg, transparent 0 38%, rgba(255,255,255,0.08) 38.2% 38.8%, transparent 39% 100%),
      repeating-linear-gradient(0deg, rgba(255,255,255,0.045) 0 1px, transparent 1px 12px);
    mix-blend-mode: overlay;
    opacity: 0.48;
  }

  .project-visual-title {
    left: 7.1%;
    bottom: 5.6%;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(3.4rem, 5.1vw, 6.9rem);
    font-weight: 400;
    line-height: 0.88;
    letter-spacing: -0.075em;
    color: rgba(250, 248, 242, 0.92);
    text-shadow: 0 18px 45px rgba(0,0,0,0.22);
    white-space: nowrap;
  }

  .project-visual-label {
    top: 25%;
    left: 16.2%;
    max-width: 13ch;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.68rem, 0.7vw, 0.82rem);
    font-weight: 600;
    line-height: 1.08;
    letter-spacing: -0.03em;
    text-transform: uppercase;
    color: rgba(250, 248, 242, 0.72);
  }

  .project-copy {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: clamp(28px, 4vw, 76px);
    padding-top: clamp(20px, 2.1vw, 30px);
  }

  .project-copy h3 {
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(1.92rem, 2.15vw, 2.65rem);
    font-weight: 500;
    line-height: 0.96;
    letter-spacing: -0.052em;
    color: rgba(var(--black-rgb), 0.72);
  }

  .project-copy p {
    max-width: 30ch;
    margin-top: 12px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.91rem, 0.9vw, 1.02rem);
    font-weight: 500;
    line-height: 1.22;
    letter-spacing: -0.02em;
    color: rgba(var(--black-rgb), 0.54);
  }

  .project-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    min-width: 166px;
    justify-content: space-between;
    padding-bottom: 10px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.70rem, 0.74vw, 0.82rem);
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.095em;
    text-transform: uppercase;
    color: rgba(var(--black-rgb), 0.56);
    transition: color 0.28s ease;
  }

  .project-link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: currentColor;
    transform: scaleX(0.26);
    transform-origin: left center;
    opacity: 0.72;
    transition: transform 0.42s var(--ease-out), opacity 0.24s ease;
  }

  .project-card:hover .project-link,
  .project-card:focus-visible .project-link { color: rgba(var(--black-rgb), 0.94); }

  .project-card:hover .project-link::after,
  .project-card:focus-visible .project-link::after {
    transform: scaleX(1);
    opacity: 1;
  }

  .project-thumb--01 { --project-bg: linear-gradient(140deg, #e9ece5 0%, #ced9d8 28%, #a9c0c4 46%, #bb6a28 100%); --px: 18%; --py: 16%; }
  .project-thumb--02 { --project-bg: linear-gradient(135deg, #0b0e12 0%, #1a2430 48%, #7b2e20 100%); --px: 72%; --py: 25%; }
  .project-thumb--03 { --project-bg: linear-gradient(135deg, #e2ded2 0%, #9db5ae 48%, #1f4248 100%); --px: 26%; --py: 30%; }
  .project-thumb--04 { --project-bg: linear-gradient(135deg, #1c1a24 0%, #33263f 44%, #d56540 100%); --px: 56%; --py: 22%; }

  @media (max-width: 1180px) {
    .work-layout {
      grid-template-columns: 43% 57%;
    }

    .work-layout::before { left: 43%; }

    .work-left {
      padding-left: 54px;
      padding-right: 42px;
    }

    .work-left h2 {
      font-size: clamp(2.8rem, 5.8vw, 5rem);
    }

    .project-card { flex-basis: min(52vw, 760px); }
  }

  @media (max-width: 900px) {
    .work-section {
      height: auto !important;
      min-height: 0;
      background: var(--panel);
      --work-bg-progress: 1 !important;
      --work-content-reveal: 1 !important;
      --work-content-opacity: 1 !important;
    }

    .work-section::before {
      transform: none !important;
    }

    .work-sticky {
      position: relative;
      height: auto;
      min-height: 0;
      display: block;
      padding: 112px 32px 98px;
      overflow: hidden;
    }

    .work-layout {
      display: block;
      height: auto;
      opacity: 1;
      transform: none;
      -webkit-mask-image: none;
      mask-image: none;
    }

    .work-layout::before { content: none; }

    .work-left {
      padding: 0;
      transform: none;
      margin-bottom: 44px;
    }

    .work-left h2 {
      max-width: 9.5ch;
      font-size: clamp(3rem, 12vw, 5rem);
    }

    .work-all-link {
      margin-left: 0;
      margin-top: 28px;
    }

    .work-viewport {
      overflow-x: auto;
      padding-right: 0;
      padding-bottom: 16px;
      scrollbar-width: none;
      -webkit-overflow-scrolling: touch;
    }

    .work-viewport::-webkit-scrollbar { display: none; }

    .work-track {
      transform: none !important;
      gap: 28px;
      scroll-snap-type: x mandatory;
    }

    .project-card {
      flex: 0 0 min(82vw, 680px);
      scroll-snap-align: start;
    }

    .project-copy {
      grid-template-columns: 1fr;
      gap: 16px;
    }

    .project-link {
      width: max-content;
    }
  }

  @media (max-width: 640px) {
    .work-sticky {
      padding: 94px 22px 76px;
    }

    .project-card { flex-basis: 86vw; }
    .project-thumb { aspect-ratio: 36 / 25; }
    .project-visual-title { font-size: clamp(3.4rem, 17vw, 5.8rem); }
    .project-visual-label { top: 18%; left: 9%; }
  }

  .expertise-section {
    position: relative;
    z-index: 21;
    background: var(--panel);
    color: var(--panel-ink);
    padding: clamp(120px, 12vw, 190px) 54px clamp(112px, 11vw, 170px);
    border-top: 1px solid rgba(var(--black-rgb), 0.08);
  }

  .expertise-inner,
  .references-inner,
  .contact-footer-inner {
    width: min(100%, 1520px);
    margin: 0 auto;
  }

  .expertise-head {
    display: grid;
    grid-template-columns: minmax(240px, 390px) minmax(0, 560px);
    gap: clamp(34px, 7vw, 140px);
    align-items: end;
    margin-bottom: clamp(56px, 7vw, 98px);
  }

  .expertise-head h2 {
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(2.3rem, 5vw, 5.8rem);
    font-weight: 500;
    line-height: 0.96;
    letter-spacing: -0.058em;
  }

  .expertise-head p {
    max-width: 48ch;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.98rem, 1.08vw, 1.16rem);
    font-weight: 500;
    line-height: 1.58;
    letter-spacing: -0.018em;
    color: rgba(var(--black-rgb), 0.58);
  }

  .expertise-list {
    border-top: 1px solid rgba(var(--black-rgb), 0.12);
  }

  .expertise-row {
    display: grid;
    grid-template-columns: minmax(220px, 0.45fr) minmax(0, 0.55fr);
    gap: clamp(24px, 5vw, 96px);
    align-items: center;
    padding: clamp(26px, 3.8vw, 48px) 0;
    border-bottom: 1px solid rgba(var(--black-rgb), 0.12);
    outline: none;
    cursor: default;
  }

  .expertise-row-title {
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(2rem, 5.8vw, 7rem);
    font-weight: 500;
    line-height: 0.92;
    letter-spacing: -0.07em;
    color: rgba(var(--black-rgb), 0.92);
    transition: color 0.38s ease, transform 0.48s var(--ease-out), opacity 0.38s ease;
  }

  .expertise-row-text {
    max-width: 48ch;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.98rem, 1.05vw, 1.15rem);
    font-weight: 500;
    line-height: 1.55;
    letter-spacing: -0.018em;
    color: rgba(var(--black-rgb), 0.54);
    opacity: 0.54;
    transform: translateY(8px);
    transition: opacity 0.42s ease, transform 0.48s var(--ease-out), color 0.38s ease;
  }

  .expertise-row:hover .expertise-row-title,
  .expertise-row:focus-visible .expertise-row-title {
    color: var(--accent);
    transform: translateX(10px);
  }

  .expertise-row:hover .expertise-row-text,
  .expertise-row:focus-visible .expertise-row-text {
    opacity: 1;
    transform: translateY(0);
    color: rgba(var(--black-rgb), 0.76);
  }

  .references-section {
    position: relative;
    z-index: 22;
    background: var(--panel);
    color: var(--panel-ink);
    padding: clamp(96px, 10vw, 150px) 54px clamp(108px, 11vw, 170px);
    border-top: 1px solid rgba(var(--black-rgb), 0.08);
  }

  .references-head {
    display: grid;
    grid-template-columns: minmax(240px, 390px) minmax(0, 560px);
    gap: clamp(34px, 7vw, 140px);
    align-items: end;
    margin-bottom: clamp(56px, 7vw, 92px);
  }

  .references-head h2 {
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(2.2rem, 4.8vw, 5.4rem);
    font-weight: 500;
    line-height: 0.98;
    letter-spacing: -0.055em;
  }

  .references-head p {
    max-width: 48ch;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.98rem, 1.05vw, 1.14rem);
    font-weight: 500;
    line-height: 1.58;
    letter-spacing: -0.018em;
    color: rgba(var(--black-rgb), 0.58);
  }

  .logo-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    border-top: 1px solid rgba(var(--black-rgb), 0.10);
    border-left: 1px solid rgba(var(--black-rgb), 0.10);
  }

  .logo-mark {
    min-height: clamp(92px, 11vw, 158px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 18px;
    border-right: 1px solid rgba(var(--black-rgb), 0.10);
    border-bottom: 1px solid rgba(var(--black-rgb), 0.10);
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(1rem, 1.45vw, 1.45rem);
    font-weight: 700;
    letter-spacing: -0.03em;
    color: rgba(var(--black-rgb), 0.54);
    filter: grayscale(1);
    transition: color 0.34s ease, background-color 0.34s ease, letter-spacing 0.34s var(--ease-out);
  }

  .logo-mark:hover {
    color: rgba(var(--black-rgb), 0.92);
    background: rgba(var(--black-rgb), 0.025);
    letter-spacing: -0.015em;
  }

  .site-footer {
    position: relative;
    z-index: 23;
    min-height: 100vh;
    background:
      radial-gradient(circle at 78% 18%, rgba(255, 90, 53, 0.14), transparent 30%),
      linear-gradient(135deg, var(--black) 0%, #071919 48%, #071b21 100%);
    color: var(--ink);
    padding: clamp(86px, 9vw, 130px) 54px 34px;
    overflow: hidden;
  }

  .site-footer::after {
    content: "LANGE";
    position: absolute;
    left: 50%;
    bottom: -0.18em;
    transform: translateX(-50%);
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(8rem, 25vw, 28rem);
    font-weight: 600;
    line-height: 0.72;
    letter-spacing: -0.08em;
    color: rgba(var(--ink-rgb), 0.035);
    pointer-events: none;
    white-space: nowrap;
  }

  .contact-footer-inner {
    position: relative;
    z-index: 2;
    min-height: calc(100vh - clamp(86px, 9vw, 130px) - 34px);
    display: flex;
    flex-direction: column;
  }

  .footer-topline {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: clamp(82px, 13vw, 190px);
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: rgba(var(--ink-rgb), 0.64);
  }

  .footer-claim {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(220px, 360px);
    gap: clamp(36px, 7vw, 120px);
    align-items: end;
    margin-bottom: auto;
  }

  .footer-claim h2 {
    max-width: 10ch;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(3.6rem, 10.6vw, 13rem);
    font-weight: 500;
    line-height: 0.88;
    letter-spacing: -0.078em;
  }

  .footer-cta {
    position: relative;
    display: inline-flex;
    width: max-content;
    align-items: center;
    padding-bottom: 9px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.105em;
    text-transform: uppercase;
    color: var(--ink);
    transition: color 0.28s ease;
  }

  .footer-cta::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: currentColor;
    transform-origin: left center;
    transform: scaleX(0.28);
    opacity: 0.72;
    transition: transform 0.45s var(--ease-out), opacity 0.25s ease;
  }

  .footer-cta:hover,
  .footer-cta:focus-visible {
    color: var(--accent);
    outline: none;
  }

  .footer-cta:hover::after,
  .footer-cta:focus-visible::after {
    transform: scaleX(1);
    opacity: 1;
  }

  .footer-contact-grid {
    display: grid;
    grid-template-columns: minmax(220px, 0.7fr) minmax(220px, 0.7fr) minmax(220px, 1fr);
    gap: clamp(34px, 7vw, 120px);
    margin-top: clamp(78px, 9vw, 140px);
    padding-top: 34px;
    border-top: 1px solid rgba(var(--ink-rgb), 0.14);
  }

  .footer-group-title {
    display: block;
    margin-bottom: 18px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(var(--ink-rgb), 0.44);
  }

  .footer-contact-grid a,
  .footer-contact-grid span {
    display: block;
    width: max-content;
    max-width: 100%;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(1.02rem, 1.35vw, 1.36rem);
    font-weight: 500;
    line-height: 1.42;
    letter-spacing: -0.025em;
    color: rgba(var(--ink-rgb), 0.86);
    transition: color 0.26s ease;
  }

  .footer-contact-grid a:hover,
  .footer-contact-grid a:focus-visible {
    color: var(--accent);
    outline: none;
  }

  .footer-social {
    display: flex;
    flex-wrap: wrap;
    gap: 0 28px;
  }

  .footer-bottom {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    margin-top: 42px;
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    color: rgba(var(--ink-rgb), 0.42);
  }

  .reveal-item {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.82s var(--ease-out), transform 0.82s var(--ease-out);
  }

  .reveal-item.in-view {
    opacity: 1;
    transform: translateY(0);
  }

  @media (max-width: 1100px) {
    .logo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .footer-claim { grid-template-columns: 1fr; }
    .footer-contact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }

  @media (max-width: 900px) {
    .work-section {
      height: auto !important;
      min-height: 0;
    }

    .work-sticky {
      position: relative;
      height: auto;
      min-height: 0;
      display: block;
      padding: 112px 32px 98px;
      overflow: hidden;
    }

    .work-section-head,
    .expertise-head,
    .references-head {
      grid-template-columns: 1fr;
      gap: 24px;
    }

    .work-section-head h2,
    .expertise-head h2,
    .references-head h2 {
      max-width: 12ch;
    }

    .work-viewport {
      overflow-x: auto;
      padding-bottom: 16px;
      scrollbar-width: none;
      -webkit-overflow-scrolling: touch;
    }

    .work-viewport::-webkit-scrollbar { display: none; }

    .work-track {
      transform: none !important;
      scroll-snap-type: x mandatory;
    }

    .project-card {
      flex-basis: min(82vw, 680px);
      scroll-snap-align: start;
    }

    .project-copy {
      grid-template-columns: 1fr;
      gap: 9px;
    }

    .expertise-section,
    .references-section {
      padding-left: 32px;
      padding-right: 32px;
    }

    .expertise-row {
      grid-template-columns: 1fr;
      gap: 14px;
    }

    .expertise-row-text {
      opacity: 1;
      transform: none;
    }
  }

  @media (max-width: 640px) {
    .work-sticky,
    .expertise-section,
    .references-section,
    .site-footer {
      padding-left: 22px;
      padding-right: 22px;
    }

    .work-sticky { padding-top: 94px; padding-bottom: 76px; }
    .project-card { flex-basis: 86vw; }
    .project-thumb { aspect-ratio: 36 / 25; }
    .logo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .logo-mark { min-height: 92px; }
    .footer-topline,
    .footer-bottom { flex-direction: column; }
    .footer-contact-grid { grid-template-columns: 1fr; }
    .footer-social { display: grid; gap: 6px; }
  }

  @media (prefers-reduced-motion: reduce) {
    .work-section {
      height: auto !important;
      min-height: 0;
      background: var(--panel);
      --work-bg-progress: 1 !important;
      --work-content-reveal: 1 !important;
      --work-content-opacity: 1 !important;
    }
    .work-section::before { transform: none !important; }
    .work-sticky { position: relative; height: auto; min-height: 0; }
    .work-layout { opacity: 1 !important; transform: none !important; -webkit-mask-image: none !important; mask-image: none !important; clip-path: none !important; }
    .work-track { transform: none !important; }
    .reveal-item { opacity: 1 !important; transform: none !important; }
  }


  /* v22 — corrected Work transition and horizontal editorial rail.
     The light background overlaps the end of the intro, then the whole canvas
     scrolls horizontally: title, CTA and project thumbnails together. */
  .work-section {
    z-index: 45;
    margin-top: -100vh;
    height: var(--work-scroll-height, 300vh);
    min-height: 1780px;
    overflow: hidden;
    background: transparent !important;
    --work-x: 0px;
  }

  .work-section::before {
    position: absolute;
    inset: 0;
    z-index: 0;
    background:
      radial-gradient(circle at 82% 18%, rgba(255,255,255,0.92), transparent 31%),
      linear-gradient(180deg, #f6f5f0 0%, #e6e4de 100%);
    transform: translate3d(0, calc((1 - var(--work-bg-progress, 0)) * 104vh), 0) !important;
  }

  .work-sticky {
    position: sticky;
    top: 0;
    height: 100vh;
    min-height: 760px;
    overflow: hidden;
  }

  .work-layout {
    width: max-content;
    min-width: 100vw;
    height: 100%;
    display: flex !important;
    align-items: center;
    gap: clamp(48px, 5.6vw, 106px);
    padding-left: clamp(60px, 11.8vw, 190px);
    padding-right: clamp(90px, 10vw, 190px);
    opacity: var(--work-content-opacity, 1);
    transform: translate3d(var(--work-x, 0px), calc((1 - var(--work-content-opacity, 1)) * 48px), 0) !important;
    -webkit-mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 1) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 1) * 100% + 13%));
    mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 1) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 1) * 100% + 13%));
  }

  .work-layout::before {
    left: min(49.8vw, 790px) !important;
    background: rgba(var(--black-rgb), 0.07);
  }

  .work-left {
    flex: 0 0 clamp(440px, 41.5vw, 690px);
    align-self: center;
    padding: 0 !important;
    transform: translateY(1.4vh) !important;
  }

  .work-left h2 {
    max-width: 11.5ch;
    font-size: clamp(3.25rem, 5.35vw, 6.35rem);
    font-weight: 500;
    line-height: 0.93;
    letter-spacing: -0.072em;
    color: rgba(var(--black-rgb), 0.74);
    text-wrap: balance;
  }

  .work-all-link {
    margin-top: clamp(38px, 5.3vw, 76px) !important;
    margin-left: clamp(72px, 8.2vw, 148px) !important;
    color: rgba(var(--black-rgb), 0.55);
  }

  .work-viewport {
    flex: 0 0 auto;
    width: auto !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  .work-track {
    display: flex;
    align-items: flex-start;
    gap: clamp(76px, 8.4vw, 156px);
    width: max-content;
    transform: none !important;
    padding-right: clamp(96px, 11vw, 210px);
  }

  .project-card {
    flex: 0 0 min(44vw, 830px);
    --project-reveal: 1;
    opacity: calc(0.26 + (var(--project-reveal, 1) * 0.74));
    transform: translate3d(0, calc((1 - var(--project-reveal, 1)) * 92px), 0);
    will-change: transform, opacity;
  }

  .project-thumb {
    aspect-ratio: 36 / 25;
    border-radius: 7px;
  }

  .project-copy {
    padding-top: clamp(20px, 2vw, 28px);
  }

  .project-link {
    min-width: 178px;
  }

  @media (max-width: 1180px) {
    .work-layout {
      gap: clamp(42px, 5.2vw, 82px);
      padding-left: 54px;
      padding-right: 90px;
    }

    .work-left {
      flex-basis: clamp(360px, 38vw, 510px);
    }

    .work-left h2 {
      font-size: clamp(2.9rem, 6vw, 5rem);
    }

    .project-card {
      flex-basis: min(57vw, 760px);
    }
  }

  @media (max-width: 900px) {
    .work-section {
      margin-top: 0;
      height: auto !important;
      min-height: 0;
      background: #efeee9 !important;
      --work-bg-progress: 1 !important;
      --work-content-reveal: 1 !important;
      --work-content-opacity: 1 !important;
    }

    .work-section::before {
      transform: none !important;
    }

    .work-sticky {
      position: relative;
      height: auto;
      min-height: 0;
      display: block;
      padding: 112px 0 98px 0 !important;
    }

    .work-layout {
      width: 100%;
      min-width: 0;
      height: auto;
      display: block !important;
      padding: 0 32px !important;
      transform: none !important;
      opacity: 1 !important;
      -webkit-mask-image: none !important;
      mask-image: none !important;
    }

    .work-layout::before {
      content: none !important;
    }

    .work-left {
      width: 100%;
      max-width: none;
      margin-bottom: 54px;
      transform: none !important;
    }

    .work-left h2 {
      max-width: 10ch;
    }

    .work-all-link {
      margin-left: 0 !important;
    }

    .work-viewport {
      width: calc(100vw - 32px) !important;
      overflow-x: auto !important;
      padding-bottom: 16px !important;
      scrollbar-width: none;
      -webkit-overflow-scrolling: touch;
    }

    .work-track {
      gap: 24px;
      padding-right: 32px;
      scroll-snap-type: x mandatory;
    }

    .project-card {
      flex-basis: min(82vw, 680px);
      scroll-snap-align: start;
      opacity: 1 !important;
      transform: none !important;
    }
  }

  @media (max-width: 640px) {
    .work-sticky {
      padding-top: 94px !important;
      padding-bottom: 76px !important;
    }

    .work-layout {
      padding-left: 22px !important;
      padding-right: 22px !important;
    }

    .work-viewport {
      width: calc(100vw - 22px) !important;
    }

    .work-track {
      padding-right: 22px;
    }

    .project-card {
      flex-basis: 86vw;
    }

    .project-thumb {
      aspect-ratio: 36 / 25;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .work-section { margin-top: 0 !important; }
    .project-card { opacity: 1 !important; transform: none !important; }
  }


  /* v23 — realign intro + corrected full-screen Work handoff.
     The light section now enters after a breathing moment, covers the intro cleanly,
     then the whole Work canvas scrolls horizontally, title included. */
  html {
    scroll-behavior: smooth;
  }

  .hero-scroll-wrap {
    height: 315vh !important;
    min-height: 2100px !important;
  }

  .intro-scroll-copy {
    width: min(1540px, calc(100vw - clamp(72px, 7vw, 132px))) !important;
    max-width: min(1540px, calc(100vw - clamp(72px, 7vw, 132px))) !important;
    grid-template-columns: clamp(112px, 9.2vw, 164px) minmax(520px, 1fr) minmax(245px, 340px) !important;
    column-gap: clamp(30px, 3.9vw, 72px) !important;
    align-items: center !important;
  }

  .intro-scroll-eyebrow {
    align-self: end !important;
    padding-top: 0 !important;
    padding-bottom: 0.48em !important;
  }

  .intro-scroll-main {
    max-width: 980px !important;
    align-self: center !important;
  }

  .intro-seo-copy {
    align-self: end !important;
    max-width: 330px !important;
    padding-bottom: 0 !important;
    transform: translate3d(0, clamp(34px, 6.5vh, 78px), 0);
    font-size: clamp(0.82rem, 0.82vw, 0.96rem) !important;
    line-height: 1.58 !important;
  }

  .intro-seo-copy strong {
    margin-bottom: 16px !important;
  }

  .work-section {
    z-index: 45 !important;
    margin-top: 0 !important;
    height: var(--work-scroll-height, 340vh) !important;
    min-height: 2050px !important;
    overflow: hidden !important;
    background: transparent !important;
    color: var(--panel-ink);
    isolation: isolate;
    --work-bg-progress: 0;
    --work-content-reveal: 0;
    --work-content-opacity: 0;
    --work-x: 0px;
  }

  .work-section::before {
    content: "";
    position: absolute !important;
    z-index: 0 !important;
    inset: 0 !important;
    background:
      radial-gradient(circle at 82% 18%, rgba(255,255,255,0.96), transparent 30%),
      linear-gradient(180deg, #f6f5f0 0%, #e6e4de 100%) !important;
    transform: translate3d(0, calc((1 - var(--work-bg-progress, 0)) * 108vh), 0) !important;
    will-change: transform;
  }

  .work-sticky {
    position: sticky !important;
    top: 0 !important;
    height: 100vh !important;
    height: 100svh !important;
    min-height: 720px !important;
    overflow: hidden !important;
    z-index: 1;
  }

  .work-layout {
    position: relative !important;
    width: max-content !important;
    min-width: max-content !important;
    height: 100% !important;
    display: flex !important;
    align-items: center !important;
    gap: clamp(40px, 4.6vw, 88px) !important;
    padding-left: clamp(56px, 11.7vw, 190px) !important;
    padding-right: clamp(130px, 14vw, 260px) !important;
    opacity: var(--work-content-opacity, 1) !important;
    transform: translate3d(var(--work-x, 0px), calc((1 - var(--work-content-opacity, 1)) * 58px), 0) !important;
    transition: transform 0.14s linear, opacity 0.18s ease;
    -webkit-mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 0) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 0) * 100% + 12%)) !important;
    mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 0) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 0) * 100% + 12%)) !important;
    will-change: transform, opacity, mask-image;
  }

  .work-layout::before {
    content: "" !important;
    position: absolute !important;
    top: 0 !important;
    bottom: 0 !important;
    left: min(49.6vw, 790px) !important;
    width: 1px !important;
    background: rgba(var(--black-rgb), 0.07) !important;
    pointer-events: none;
  }

  .work-left {
    flex: 0 0 clamp(460px, 44vw, 710px) !important;
    align-self: center !important;
    padding: 0 !important;
    transform: translate3d(0, 1.2vh, 0) !important;
  }

  .work-left h2 {
    max-width: 10.7ch !important;
    font-family: 'PP Eiko', 'Satoshi', sans-serif;
    font-size: clamp(3.18rem, 5.25vw, 6.25rem) !important;
    font-weight: 500 !important;
    line-height: 0.93 !important;
    letter-spacing: -0.072em !important;
    color: rgba(var(--black-rgb), 0.68) !important;
    text-wrap: balance;
  }

  .work-all-link {
    margin-top: clamp(36px, 5vw, 72px) !important;
    margin-left: clamp(70px, 8.2vw, 148px) !important;
    color: rgba(var(--black-rgb), 0.52) !important;
  }

  .work-viewport {
    flex: 0 0 auto !important;
    width: auto !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  .work-track {
    display: flex !important;
    align-items: flex-start !important;
    gap: clamp(72px, 8.4vw, 156px) !important;
    width: max-content !important;
    transform: none !important;
    padding-right: clamp(140px, 15vw, 280px) !important;
  }

  .project-card {
    flex: 0 0 clamp(560px, 43.5vw, 830px) !important;
    --project-reveal: 1;
    opacity: calc(0.20 + (var(--project-reveal, 1) * 0.80)) !important;
    transform: translate3d(0, calc((1 - var(--project-reveal, 1)) * 118px), 0) !important;
    transition: transform 0.18s linear, opacity 0.18s ease;
    will-change: transform, opacity;
  }

  .project-thumb {
    aspect-ratio: 36 / 25 !important;
    border-radius: 7px !important;
  }

  .project-copy {
    padding-top: clamp(20px, 2vw, 30px) !important;
  }

  @media (max-width: 1180px) {
    .intro-scroll-copy {
      grid-template-columns: clamp(92px, 8vw, 130px) minmax(0, 1fr) !important;
      align-items: start !important;
    }

    .intro-seo-copy {
      grid-column: 2 !important;
      max-width: 560px !important;
      margin-top: 28px !important;
      transform: none !important;
    }

    .work-layout {
      padding-left: 54px !important;
      padding-right: 150px !important;
      gap: clamp(42px, 5vw, 82px) !important;
    }

    .work-left {
      flex-basis: clamp(360px, 42vw, 560px) !important;
    }

    .project-card {
      flex-basis: min(57vw, 760px) !important;
    }
  }

  @media (max-width: 900px) {
    .hero-scroll-wrap {
      height: 274vh !important;
      min-height: 1470px !important;
    }

    .work-section {
      margin-top: 0 !important;
      height: auto !important;
      min-height: 0 !important;
      background: #efeee9 !important;
      --work-bg-progress: 1 !important;
      --work-content-reveal: 1 !important;
      --work-content-opacity: 1 !important;
    }

    .work-section::before { transform: none !important; }

    .work-sticky {
      position: relative !important;
      height: auto !important;
      min-height: 0 !important;
      padding: 112px 0 98px 0 !important;
    }

    .work-layout {
      width: 100% !important;
      min-width: 0 !important;
      display: block !important;
      height: auto !important;
      padding: 0 32px !important;
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
      -webkit-mask-image: none !important;
      mask-image: none !important;
    }

    .work-layout::before { content: none !important; }

    .work-left {
      width: 100% !important;
      max-width: none !important;
      margin-bottom: 54px !important;
      transform: none !important;
    }

    .work-left h2 {
      max-width: 10.5ch !important;
    }

    .work-all-link { margin-left: 0 !important; }

    .work-viewport {
      width: calc(100vw - 32px) !important;
      overflow-x: auto !important;
      padding-bottom: 16px !important;
      scrollbar-width: none;
      -webkit-overflow-scrolling: touch;
    }

    .work-track {
      gap: 24px !important;
      padding-right: 32px !important;
      scroll-snap-type: x mandatory;
    }

    .project-card {
      flex-basis: min(82vw, 680px) !important;
      scroll-snap-align: start;
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
  }

  @media (max-width: 640px) {
    .work-layout {
      padding-left: 22px !important;
      padding-right: 22px !important;
    }

    .work-viewport { width: calc(100vw - 22px) !important; }
    .work-track { padding-right: 22px !important; }
    .project-card { flex-basis: 86vw !important; }
  }



  /* ============================================================
     v24 — CLEAN SCROLL ARCHITECTURE FIX
     Final overrides for intro alignment + Work handoff.
     This neutralises the previous stacked Work patches without touching hero/video logic.
     ============================================================ */

  html {
    scroll-behavior: smooth;
  }

  /* Give the intro enough breathing room before the Work section arrives. */
  .hero-scroll-wrap {
    height: 352vh !important;
    min-height: 2720px !important;
  }

  .intro-scroll-panel {
    align-items: center !important;
    padding-left: clamp(42px, 5.8vw, 112px) !important;
    padding-right: clamp(42px, 5.8vw, 112px) !important;
  }

  .intro-scroll-copy {
    width: min(1540px, calc(100vw - clamp(84px, 11.6vw, 224px))) !important;
    max-width: min(1540px, calc(100vw - clamp(84px, 11.6vw, 224px))) !important;
    display: grid !important;
    grid-template-columns: clamp(108px, 9vw, 164px) minmax(0, 980px) minmax(245px, 340px) !important;
    grid-template-rows: auto !important;
    column-gap: clamp(30px, 3.8vw, 72px) !important;
    align-items: center !important;
    overflow: visible !important;
  }

  .intro-scroll-eyebrow {
    grid-column: 1 !important;
    grid-row: 1 !important;
    align-self: end !important;
    justify-self: start !important;
    padding-top: 0 !important;
    padding-bottom: 0.58em !important;
  }

  .intro-scroll-main {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: center !important;
    max-width: 980px !important;
    width: 100% !important;
  }

  .intro-seo-copy {
    grid-column: 3 !important;
    grid-row: 1 !important;
    align-self: end !important;
    justify-self: start !important;
    max-width: 330px !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: translate3d(0, clamp(42px, 7.2vh, 92px), 0) !important;
    font-size: clamp(0.82rem, 0.82vw, 0.96rem) !important;
    line-height: 1.58 !important;
    color: rgba(var(--ink-rgb), 0.74) !important;
    opacity: var(--scroll-panel-opacity, 0) !important;
  }

  .intro-seo-copy strong {
    margin-bottom: 16px !important;
    letter-spacing: 0.22em !important;
  }

  /* Work section: no negative overlap. It naturally rises over the sticky intro,
     then stays full-screen while the whole canvas moves horizontally. */
  .work-section {
    position: relative !important;
    z-index: 45 !important;
    margin-top: 0 !important;
    height: var(--work-scroll-height, 360vh) !important;
    min-height: 0 !important;
    background: transparent !important;
    color: var(--panel-ink) !important;
    overflow: clip !important;
    isolation: isolate !important;
    --work-bg-progress: 0;
    --work-content-reveal: 0;
    --work-content-opacity: 0;
    --work-x: 0px;
  }

  .work-section::before {
    content: "" !important;
    position: absolute !important;
    z-index: 0 !important;
    inset: 0 !important;
    background:
      radial-gradient(circle at 80% 16%, rgba(255,255,255,0.94), transparent 30%),
      radial-gradient(circle at 48% 50%, rgba(255,255,255,0.55), transparent 42%),
      linear-gradient(180deg, #f6f5f0 0%, #F7F7F7 100%) !important;
    transform: translate3d(0, calc((1 - var(--work-bg-progress, 0)) * 108vh), 0) !important;
    will-change: transform !important;
  }

  .work-sticky {
    position: sticky !important;
    z-index: 1 !important;
    top: 0 !important;
    height: 100vh !important;
    height: 100svh !important;
    min-height: 720px !important;
    overflow: hidden !important;
    background: transparent !important;
  }

  .work-layout {
    position: relative !important;
    width: max-content !important;
    min-width: max-content !important;
    height: 100% !important;
    display: flex !important;
    align-items: center !important;
    gap: clamp(42px, 4.8vw, 92px) !important;
    padding-left: clamp(56px, 11.8vw, 190px) !important;
    padding-right: clamp(150px, 15vw, 300px) !important;
    opacity: var(--work-content-opacity, 0) !important;
    transform: translate3d(var(--work-x, 0px), calc((1 - var(--work-content-opacity, 0)) * 72px), 0) !important;
    transition: opacity 0.16s ease-out !important;
    -webkit-mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 0) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 0) * 100% + 12%)) !important;
    mask-image: linear-gradient(90deg,
      #000 0%,
      #000 calc(var(--work-content-reveal, 0) * 100%),
      rgba(0,0,0,0) calc(var(--work-content-reveal, 0) * 100% + 12%)) !important;
    /* Security margin: the work content is clipped by the rising light sheet,
       so thumbnails/text never bleed over the dark intro while the sheet is still climbing. */
    clip-path: inset(max(0px, calc((1 - var(--work-bg-progress, 0)) * 108vh - 7vh)) 0 0 0) !important;
    will-change: transform, opacity, mask-image, clip-path !important;
  }

  .work-layout::before {
    content: "" !important;
    position: absolute !important;
    top: 0 !important;
    bottom: 0 !important;
    left: min(49.7vw, 790px) !important;
    width: 1px !important;
    background: rgba(var(--black-rgb), 0.075) !important;
    pointer-events: none !important;
  }

  .work-left {
    flex: 0 0 clamp(455px, 44vw, 710px) !important;
    width: auto !important;
    max-width: none !important;
    align-self: center !important;
    padding: 0 !important;
    margin: 0 !important;
    transform: translate3d(0, 1vh, 0) !important;
  }

  .work-left h2 {
    max-width: 10.8ch !important;
    font-family: 'PP Eiko', 'Satoshi', sans-serif !important;
    font-size: clamp(3.14rem, 5.18vw, 6.18rem) !important;
    font-weight: 500 !important;
    line-height: 0.93 !important;
    letter-spacing: -0.072em !important;
    color: rgba(var(--black-rgb), 0.68) !important;
    text-wrap: balance !important;
  }

  .work-all-link {
    margin-top: clamp(36px, 5vw, 72px) !important;
    margin-left: clamp(66px, 8.1vw, 146px) !important;
    color: rgba(var(--black-rgb), 0.52) !important;
  }

  .work-viewport {
    flex: 0 0 auto !important;
    width: auto !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  .work-track {
    display: flex !important;
    align-items: flex-start !important;
    gap: clamp(70px, 8.2vw, 150px) !important;
    width: max-content !important;
    transform: none !important;
    padding-right: clamp(150px, 15vw, 300px) !important;
  }

  .project-card {
    flex: 0 0 clamp(560px, 43.5vw, 830px) !important;
    display: block !important;
    --project-reveal: 1;
    opacity: calc(0.18 + (var(--project-reveal, 1) * 0.82)) !important;
    transform: translate3d(0, calc((1 - var(--project-reveal, 1)) * 122px), 0) !important;
    transition: opacity 0.16s ease-out !important;
    will-change: transform, opacity !important;
  }

  .project-thumb {
    aspect-ratio: 36 / 25 !important;
    border-radius: 7px !important;
  }

  .project-copy {
    padding-top: clamp(20px, 2vw, 30px) !important;
  }

  @media (max-width: 1180px) {
    .intro-scroll-copy {
      width: min(980px, calc(100vw - 64px)) !important;
      max-width: min(980px, calc(100vw - 64px)) !important;
      grid-template-columns: clamp(86px, 8.5vw, 130px) minmax(0, 1fr) !important;
      grid-template-rows: auto auto !important;
      align-items: start !important;
    }

    .intro-scroll-eyebrow { grid-column: 1 !important; grid-row: 1 !important; }
    .intro-scroll-main { grid-column: 2 !important; grid-row: 1 !important; }

    .intro-seo-copy {
      grid-column: 2 !important;
      grid-row: 2 !important;
      max-width: 580px !important;
      margin-top: 28px !important;
      transform: none !important;
    }

    .work-layout {
      padding-left: 54px !important;
      padding-right: 170px !important;
      gap: clamp(42px, 5vw, 82px) !important;
    }

    .work-left { flex-basis: clamp(360px, 42vw, 560px) !important; }
    .project-card { flex-basis: min(57vw, 760px) !important; }
  }

  @media (max-width: 900px) {
    .hero-scroll-wrap {
      height: 286vh !important;
      min-height: 1520px !important;
    }

    .intro-scroll-copy {
      width: 100% !important;
      max-width: 100% !important;
      grid-template-columns: 1fr !important;
      grid-template-rows: auto auto auto !important;
    }

    .intro-scroll-eyebrow,
    .intro-scroll-main,
    .intro-seo-copy {
      grid-column: 1 !important;
      grid-row: auto !important;
    }

    .intro-seo-copy {
      max-width: 100% !important;
      margin-top: 24px !important;
      transform: none !important;
    }

    .work-section {
      height: auto !important;
      min-height: 0 !important;
      background: #efeee9 !important;
      --work-bg-progress: 1 !important;
      --work-content-reveal: 1 !important;
      --work-content-opacity: 1 !important;
    }

    .work-section::before { transform: none !important; }

    .work-sticky {
      position: relative !important;
      height: auto !important;
      min-height: 0 !important;
      padding: 112px 0 98px !important;
      overflow: hidden !important;
    }

    .work-layout {
      width: 100% !important;
      min-width: 0 !important;
      display: block !important;
      height: auto !important;
      padding: 0 32px !important;
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
      -webkit-mask-image: none !important;
      mask-image: none !important;
    }

    .work-layout::before { content: none !important; }

    .work-left {
      width: 100% !important;
      max-width: none !important;
      margin-bottom: 54px !important;
      transform: none !important;
    }

    .work-left h2 { max-width: 10.5ch !important; }
    .work-all-link { margin-left: 0 !important; }

    .work-viewport {
      width: calc(100vw - 32px) !important;
      overflow-x: auto !important;
      overflow-y: hidden !important;
      padding-bottom: 16px !important;
      scrollbar-width: none !important;
      -webkit-overflow-scrolling: touch !important;
    }

    .work-viewport::-webkit-scrollbar { display: none !important; }

    .work-track {
      gap: 24px !important;
      padding-right: 32px !important;
      scroll-snap-type: x mandatory !important;
    }

    .project-card {
      flex-basis: min(82vw, 680px) !important;
      scroll-snap-align: start !important;
      opacity: 1 !important;
      transform: none !important;
    }
  }

  @media (max-width: 640px) {
    .work-sticky { padding-top: 94px !important; padding-bottom: 76px !important; }
    .work-layout { padding-left: 22px !important; padding-right: 22px !important; }
    .work-viewport { width: calc(100vw - 22px) !important; }
    .work-track { padding-right: 22px !important; }
    .project-card { flex-basis: 86vw !important; }
    .project-thumb { aspect-ratio: 36 / 25 !important; }
  }

  @media (prefers-reduced-motion: reduce) {
    .work-section { height: auto !important; background: #efeee9 !important; }
    .work-section::before { transform: none !important; }
    .work-sticky { position: relative !important; height: auto !important; }
    .work-layout { opacity: 1 !important; transform: none !important; -webkit-mask-image: none !important; mask-image: none !important; clip-path: none !important; }
    .project-card { opacity: 1 !important; transform: none !important; }
  }



  /* v26 — work content appears once the light sheet reaches mid-height over the intro. */

  /* v25 — remove the remaining intro/work gap.
     The Work sheet starts one viewport before the hero sticky releases: the light
     background passes over the intro, then the Work content appears only after
     the sheet is full screen. */
  @media (min-width: 901px) {
    .work-section {
      margin-top: -100vh !important;
    }

    .work-section::before {
      transform: translate3d(0, calc((1 - var(--work-bg-progress, 0)) * 106vh), 0) !important;
    }
  }



  /* v27: final intro hierarchy + slightly longer pause before the light work sheet.
     MA VISION is aligned with the intro copy. Positionnement sits below, right aligned,
     instead of living as a third column beside the intro text. */
  .hero-scroll-wrap {
    height: 330vh !important;
    min-height: 2360px !important;
  }

  .intro-scroll-copy {
    width: min(1280px, calc(100vw - clamp(84px, 11.6vw, 224px))) !important;
    max-width: min(1280px, calc(100vw - clamp(84px, 11.6vw, 224px))) !important;
    display: grid !important;
    grid-template-columns: clamp(108px, 9vw, 164px) minmax(0, 980px) !important;
    grid-template-rows: auto auto !important;
    column-gap: clamp(30px, 3.8vw, 72px) !important;
    row-gap: clamp(26px, 3.6vh, 44px) !important;
    align-items: start !important;
    overflow: visible !important;
  }

  .intro-scroll-eyebrow {
    grid-column: 1 !important;
    grid-row: 1 !important;
    align-self: start !important;
    justify-self: start !important;
    padding-top: 0.62em !important;
    padding-bottom: 0 !important;
  }

  .intro-scroll-main {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: start !important;
    max-width: 980px !important;
    width: 100% !important;
  }

  .intro-seo-copy {
    grid-column: 2 !important;
    grid-row: 2 !important;
    justify-self: end !important;
    align-self: start !important;
    max-width: 340px !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    opacity: var(--scroll-panel-opacity, 0) !important;
  }

  @media (max-width: 1180px) {
    .intro-scroll-copy {
      width: min(980px, calc(100vw - 64px)) !important;
      max-width: min(980px, calc(100vw - 64px)) !important;
      grid-template-columns: clamp(86px, 8.5vw, 130px) minmax(0, 1fr) !important;
      grid-template-rows: auto auto !important;
    }

    .intro-scroll-eyebrow {
      grid-column: 1 !important;
      grid-row: 1 !important;
      padding-top: 0.58em !important;
    }

    .intro-scroll-main {
      grid-column: 2 !important;
      grid-row: 1 !important;
    }

    .intro-seo-copy {
      grid-column: 2 !important;
      grid-row: 2 !important;
      justify-self: end !important;
      max-width: 520px !important;
      margin-top: 0 !important;
      transform: none !important;
    }
  }

  @media (max-width: 900px) {
    .hero-scroll-wrap {
      height: 335vh !important;
      min-height: 1780px !important;
    }
  }

  @media (max-width: 760px) {
    .hero-scroll-wrap {
      height: 292vh !important;
      min-height: 1560px !important;
    }

    .intro-scroll-copy {
      width: 100% !important;
      max-width: 100% !important;
      grid-template-columns: 1fr !important;
      grid-template-rows: auto auto auto !important;
      row-gap: 22px !important;
    }

    .intro-scroll-eyebrow,
    .intro-scroll-main,
    .intro-seo-copy {
      grid-column: 1 !important;
      grid-row: auto !important;
      justify-self: start !important;
    }

    .intro-scroll-eyebrow {
      padding-top: 0 !important;
    }

    .intro-seo-copy {
      max-width: 100% !important;
    }
  }


  /* Asset organisation: project thumbnails live in /THUMB, logo/overlay in /IMG, videos in /VIDEOS, fonts in /FONT.
     Replace THUMB1.jpg, THUMB2.jpg, etc. with your final images.
     The original gradient remains as a fallback if an image is missing. */
  .project-thumb {
    background-image: var(--thumb-image), var(--project-bg) !important;
    background-size: cover, cover !important;
    background-position: center, center !important;
    background-repeat: no-repeat !important;
  }

  .project-thumb--01 { --thumb-image: url("../../projets/A/images/thumb.jpg"); }
  .project-thumb--02 { --thumb-image: url("../../projets/B/images/thumb.jpg"); }
  .project-thumb--03 { --thumb-image: url("../../projets/C/images/thumb.jpg"); }
  .project-thumb--04 { --thumb-image: url("../../projets/D/images/thumb.jpg"); }


  /* v3 placeholders: remove all text/elements inside thumbnails and use a plain black background. */
  .project-thumb {
    background: #000 !important;
    background-image: none !important;
  }

  .project-thumb::before,
  .project-thumb::after {
    content: none !important;
    display: none !important;
  }

  .project-thumb .project-visual-noise,
  .project-thumb .project-visual-label,
  .project-thumb .project-visual-title {
    display: none !important;
  }


  /* v28 — Trionn-like horizontal shutter transition between intro and work.
     A dedicated sticky layer sits above the intro. Six horizontal rows fill with
     the light work background from bottom to top while the user scrolls. */
  @media (min-width: 901px) {
    .work-section {
      position: relative !important;
      z-index: 90 !important;
      margin-top: -100vh !important;
      height: var(--work-scroll-height, 430vh) !important;
      min-height: 2720px !important;
      overflow: clip !important;
      background: transparent !important;
      isolation: isolate !important;
      --work-bg-progress: 0;
      --work-content-reveal: 0;
      --work-content-opacity: 0;
      --work-band-0: 0;
      --work-band-1: 0;
      --work-band-2: 0;
      --work-band-3: 0;
      --work-band-4: 0;
      --work-band-5: 0;
    }

    .work-section::before,
    .work-section::after {
      content: none !important;
      display: none !important;
    }

    .work-bg-wipe {
      position: sticky !important;
      top: 0 !important;
      z-index: 0 !important;
      width: 100% !important;
      height: 100vh !important;
      height: 100svh !important;
      margin: 0 0 -100vh 0 !important;
      overflow: hidden !important;
      pointer-events: none !important;
      background: transparent !important;
      contain: paint !important;
    }

    .work-bg-band {
      position: absolute !important;
      left: 0 !important;
      width: 100% !important;
      height: calc(100% / 6 + 1px) !important;
      overflow: hidden !important;
      display: block !important;
      pointer-events: none !important;
      background: transparent !important;
    }

    .work-bg-band::before {
      content: "" !important;
      position: absolute !important;
      inset: -1px 0 !important;
      display: block !important;
      transform: translate3d(0, calc((1 - var(--band-progress, 0)) * 110%), 0) !important;
      will-change: transform !important;
      background: #F7F7F7 !important;
    }

    .work-bg-band:nth-child(1) { top: calc(0 * 100% / 6); --band-progress: var(--work-band-0, 0); }
    .work-bg-band:nth-child(2) { top: calc(1 * 100% / 6); --band-progress: var(--work-band-1, 0); }
    .work-bg-band:nth-child(3) { top: calc(2 * 100% / 6); --band-progress: var(--work-band-2, 0); }
    .work-bg-band:nth-child(4) { top: calc(3 * 100% / 6); --band-progress: var(--work-band-3, 0); }
    .work-bg-band:nth-child(5) { top: calc(4 * 100% / 6); --band-progress: var(--work-band-4, 0); }
    .work-bg-band:nth-child(6) { top: calc(5 * 100% / 6); --band-progress: var(--work-band-5, 0); }

    .work-sticky {
      position: sticky !important;
      top: 0 !important;
      z-index: 1 !important;
      background: transparent !important;
    }

    .work-layout {
      /* Extra safety: project content cannot leak over the intro while rows are still filling. */
      clip-path: inset(max(0px, calc((1 - var(--work-bg-progress, 0)) * 118vh - 4vh)) 0 0 0) !important;
    }
  }

  @media (max-width: 900px), (prefers-reduced-motion: reduce) {
    .work-bg-wipe { display: none !important; }
  }

  /* v29 — Shutter refinement: flat final background and delayed project reveal. */
  @media (min-width: 901px) {
    .work-bg-band::before {
      background: #F7F7F7 !important;
      box-shadow: none !important;
    }

    .work-bg-band {
      background: transparent !important;
      box-shadow: none !important;
    }

    .work-bg-wipe {
      background: transparent !important;
    }
  }


  /* v32 — refined intro/work transition and project layout adjustments. */
  @media (min-width: 901px) {
    /* Intro: wider text block and slightly larger copy. */
    .intro-scroll-copy {
      grid-template-columns: clamp(100px, 8.4vw, 140px) minmax(0, 1fr) !important;
      width: min(1360px, calc(100vw - clamp(82px, 9vw, 176px))) !important;
      max-width: min(1360px, calc(100vw - clamp(82px, 9vw, 176px))) !important;
      column-gap: clamp(34px, 4.4vw, 78px) !important;
    }

    .intro-scroll-main {
      max-width: 1120px !important;
    }

    .intro-scroll-text {
      font-size: var(--intro-fit-size, clamp(2rem, 2.56vw, 3.18rem)) !important;
      line-height: 1.12 !important;
      letter-spacing: -0.047em !important;
    }

    /* Work title: slightly smaller; CTA centered below the title. */
    .work-left {
      display: flex !important;
      flex-direction: column !important;
      align-items: flex-start !important;
    }

    .work-left h2 {
      max-width: 10.5ch !important;
      font-size: clamp(2.9rem, 4.45vw, 5.35rem) !important;
      line-height: 0.94 !important;
      letter-spacing: -0.064em !important;
    }

    .work-all-link {
      margin-left: 0 !important;
      align-self: center !important;
      transform: translateX(-0.8vw) !important;
    }

    /* Keep the light work background full-screen once the shutter is nearly complete. */
    .work-bg-wipe::after {
      content: "" !important;
      position: absolute !important;
      inset: 0 !important;
      display: block !important;
      z-index: 2 !important;
      pointer-events: none !important;
      background: #F7F7F7 !important;
      opacity: var(--work-solid-bg, 0) !important;
      will-change: opacity !important;
    }

    .work-bg-band { z-index: 1 !important; }
    .work-bg-band::before { background: #F7F7F7 !important; }

    /* Thumbnails must be replaceable from /THUMB. Black is only a fallback. */
    .project-thumb {
      background-color: #000 !important;
      background-image: var(--thumb-image) !important;
      background-size: cover !important;
      background-position: center !important;
      background-repeat: no-repeat !important;
    }

    .project-thumb .project-visual-noise,
    .project-thumb .project-visual-label,
    .project-thumb .project-visual-title {
      display: none !important;
    }

    /* Separators between each project, matching the first vertical divider. */
    .work-track {
      --project-gap: clamp(52px, 6.4vw, 126px);
      gap: var(--project-gap) !important;
    }

    .project-card {
      position: relative !important;
    }

    .project-card:not(:first-child)::before {
      content: "";
      position: absolute;
      left: calc(var(--project-gap) * -0.5);
      top: -22vh;
      width: 1px;
      height: 130vh;
      background: rgba(var(--black-rgb), 0.075);
      pointer-events: none;
    }
  }

  /* v9 — keep v7 transition intact; only fix work title CTA and thumbnail overlay. */
  @media (min-width: 901px) {
    .work-left {
      text-align: left !important;
    }

    .work-left h2 {
      margin-left: auto !important;
      margin-right: auto !important;
      width: max-content !important;
      max-width: 10.8ch !important;
    }

    .work-all-link {
      margin-left: auto !important;
      margin-right: auto !important;
      justify-content: center !important;
    }

    .project-thumb::after {
      content: none !important;
      display: none !important;
    }
  }



  /* LANGE FINAL BUGFIX — authoritative cleanup for work section
     - Keeps the shutter transition intact
     - Centers the left CTA under the title block
     - Removes all thumbnail veil/overlay layers
     - Restores actual THUMB images
     - Prevents ghosted/faded project cards during horizontal scroll */
  @media (min-width: 901px) {
    .work-left {
      display: flex !important;
      align-items: center !important;
      justify-content: center !important;
      padding-left: clamp(44px, 11.7vw, 190px) !important;
      padding-right: clamp(32px, 6vw, 104px) !important;
      transform: translate3d(0, 1vh, 0) !important;
    }

    .work-left-titleblock {
      display: flex !important;
      flex-direction: column !important;
      align-items: center !important;
      width: fit-content !important;
      max-width: 10.8ch !important;
      margin: 0 auto !important;
    }

    .work-left-titleblock h2,
    .work-left h2 {
      width: 100% !important;
      max-width: 10.8ch !important;
      margin: 0 !important;
      text-align: left !important;
    }

    .work-all-link {
      align-self: center !important;
      justify-content: center !important;
      width: max-content !important;
      margin-top: clamp(36px, 5vw, 72px) !important;
      margin-left: 0 !important;
      margin-right: 0 !important;
      transform: none !important;
      translate: none !important;
      left: auto !important;
      right: auto !important;
    }

    .work-track {
      transform: translate3d(var(--work-x, 0px), 0, 0) !important;
      gap: clamp(70px, 8.2vw, 150px) !important;
      padding-right: clamp(150px, 15vw, 300px) !important;
    }

    .project-card {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
      will-change: auto !important;
    }

    .project-thumb {
      background: var(--thumb-image), var(--project-bg) !important;
      background-color: #000 !important;
      background-image: var(--thumb-image), var(--project-bg) !important;
      background-size: cover, cover !important;
      background-position: center center, center center !important;
      background-repeat: no-repeat, no-repeat !important;
      box-shadow: 0 24px 70px rgba(var(--black-rgb), 0.08) !important;
      filter: none !important;
      opacity: 1 !important;
      isolation: isolate !important;
    }

    .project-thumb::before,
    .project-thumb::after {
      content: none !important;
      display: none !important;
      opacity: 0 !important;
      background: none !important;
      border: 0 !important;
      box-shadow: none !important;
      transform: none !important;
    }

    .project-visual-noise,
    .project-visual-title,
    .project-visual-label,
    .project-thumb .project-visual-noise,
    .project-thumb .project-visual-title,
    .project-thumb .project-visual-label {
      display: none !important;
      opacity: 0 !important;
      visibility: hidden !important;
    }
  }

  @media (max-width: 900px) {
    .project-thumb {
      background: var(--thumb-image), var(--project-bg) !important;
      background-size: cover, cover !important;
      background-position: center center, center center !important;
      background-repeat: no-repeat, no-repeat !important;
    }

    .project-thumb::before,
    .project-thumb::after {
      content: none !important;
      display: none !important;
    }

    .project-visual-noise,
    .project-visual-title,
    .project-visual-label { display: none !important; }
  }



  /* LANGE FINAL POSITION FIX — title block + horizontal rail end
     This patch keeps the shutter and the thumbnail cleanup from the previous file.
     It only corrects the work title position, the 3-line title wrap, and the final horizontal offset. */
  @media (min-width: 901px) {
    .work-left {
      /* The global .work-layout already has the left page margin.
         Extra padding here was pushing the title block too far right. */
      padding-left: 0 !important;
      padding-right: 0 !important;
      align-items: flex-start !important;
      justify-content: center !important;
    }

    .work-left-titleblock {
      align-items: center !important;
      width: fit-content !important;
      max-width: 11.4ch !important;
      margin: 0 !important;
    }

    .work-left-titleblock h2,
    .work-left h2 {
      width: 100% !important;
      max-width: 11.4ch !important;
      margin: 0 !important;
      text-align: left !important;
      font-size: clamp(2.9rem, 4.45vw, 5.35rem) !important;
      line-height: 0.94 !important;
      letter-spacing: -0.066em !important;
    }

    .work-all-link {
      align-self: center !important;
      margin-left: 0 !important;
      margin-right: 0 !important;
      margin-top: clamp(34px, 4.8vw, 66px) !important;
      transform: none !important;
      translate: none !important;
    }

    /* IMPORTANT: .work-layout is already translated by --work-x.
       Applying --work-x again on .work-track was doubling the horizontal movement,
       which made the last thumbnail overshoot and left a huge empty area. */
    .work-track {
      transform: none !important;
    }
  }



  /* LANGE FINAL MICRO-ADJUST — title 3 lines + CTA left-aligned to title block */
  @media (min-width: 901px) {
    .work-left {
      justify-content: flex-start !important;
      padding-left: clamp(84px, 8.4vw, 150px) !important;
      padding-right: clamp(28px, 4vw, 76px) !important;
    }

    .work-left-titleblock {
      align-items: flex-start !important;
      width: clamp(330px, 25.6vw, 470px) !important;
      max-width: clamp(330px, 25.6vw, 470px) !important;
      margin-left: 0 !important;
      margin-right: auto !important;
    }

    .work-left-titleblock h2,
    .work-left h2 {
      width: 100% !important;
      max-width: none !important;
      font-size: clamp(2.65rem, 4.08vw, 4.98rem) !important;
      line-height: 0.94 !important;
      letter-spacing: -0.068em !important;
      text-align: left !important;
      text-wrap: balance !important;
    }

    .work-all-link {
      align-self: flex-start !important;
      margin-left: 0 !important;
      margin-right: 0 !important;
      justify-content: flex-start !important;
      transform: none !important;
    }
  }

  @media (min-width: 901px) and (max-width: 1180px) {
    .work-left-titleblock {
      width: clamp(300px, 31vw, 390px) !important;
      max-width: clamp(300px, 31vw, 390px) !important;
    }

    .work-left-titleblock h2,
    .work-left h2 {
      font-size: clamp(2.45rem, 4.65vw, 4.25rem) !important;
    }
  }



  /* LANGE FINAL PROJECT REVEAL — restore vertical entrance per project
     Keeps thumbnail cleanup and horizontal rail end fix intact. */
  @media (min-width: 901px) {
    .project-card {
      --project-reveal: 0;
      opacity: calc(0.20 + (var(--project-reveal, 1) * 0.80)) !important;
      transform: translate3d(0, calc((1 - var(--project-reveal, 1)) * 112px), 0) !important;
      transition: none !important;
      will-change: transform, opacity !important;
    }

    .project-thumb {
      background: var(--thumb-image), var(--project-bg) !important;
      background-image: var(--thumb-image), var(--project-bg) !important;
      filter: none !important;
    }

    .project-thumb::before,
    .project-thumb::after {
      content: none !important;
      display: none !important;
    }
  }

  @media (max-width: 900px), (prefers-reduced-motion: reduce) {
    .project-card {
      --project-reveal: 1 !important;
      opacity: 1 !important;
      transform: none !important;
    }
  }



  /* Shared 36:25 project thumbnail proportion for Home and Work. */
  .project-thumb {
    background: transparent !important;
    background-image: none !important;
    background-color: transparent !important;
    display: block !important;
    overflow: hidden !important;
  }

  .project-thumb-img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    object-position: center center !important;
    border: 0 !important;
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    mix-blend-mode: normal !important;
    background: transparent !important;
  }

  .project-thumb::before,
  .project-thumb::after {
    content: none !important;
    display: none !important;
    opacity: 0 !important;
    background: none !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  .project-visual-noise,
  .project-visual-title,
  .project-visual-label {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }



  /* LANGE MENU CLOSE FIX — instant menu button color reset on close */
  .hero.menu-is-closing .menu-pill {
    background: transparent !important;
    border-color: rgba(var(--ink-rgb), 0.84) !important;
    color: var(--ink) !important;
    transition-duration: 0ms !important;
  }

  .hero.menu-is-closing .menu-pill:hover,
  .hero.menu-is-closing .menu-pill:focus-visible {
    background: transparent !important;
    border-color: var(--ink) !important;
    color: var(--ink) !important;
  }



  /* LANGE HEADER TRUE FLOATING FIX
     Le header + le panel menu sont promus au niveau du body par JS.
     Ils sortent donc du stacking context de la hero et passent vraiment au-dessus des projets. */

  .site-header {
    position: fixed !important;
    z-index: 2147483000 !important;
    pointer-events: none !important;
  }

  .brand-logo,
  .header-actions,
  .contact-pill,
  .menu-pill {
    pointer-events: auto !important;
  }

  .menu-panel {
    position: fixed !important;
    z-index: 2147482500 !important;
  }

  .fade-curtain {
    z-index: 2147483600 !important;
  }

  .menu-panel.menu-is-open {
    pointer-events: auto !important;
    opacity: 1 !important;
    transform: translateX(0) scaleX(1) scaleY(1) !important;
    clip-path: inset(0 0 0 0 round 7px) !important;
  }

  .menu-panel.menu-is-closing {
    pointer-events: none !important;
    opacity: 0 !important;
    transform: translateX(10px) scaleX(0.95) scaleY(0.04) !important;
    clip-path: inset(0 0 93% 92% round 18px) !important;
    transition-delay: 0.58s !important;
  }

  .menu-panel.menu-is-open .menu-inner {
    opacity: 1 !important;
    transform: translateY(0) !important;
    transition-delay: 0.31s !important;
  }

  .menu-panel.menu-is-open .menu-links li,
  .menu-panel.menu-is-open .menu-meta section {
    opacity: 1 !important;
    filter: blur(0) !important;
    transform: translateY(0) !important;
  }

  .menu-panel.menu-is-open .menu-links li:nth-child(1) { transition-delay: 0.46s !important; }
  .menu-panel.menu-is-open .menu-links li:nth-child(2) { transition-delay: 0.52s !important; }
  .menu-panel.menu-is-open .menu-links li:nth-child(3) { transition-delay: 0.58s !important; }
  .menu-panel.menu-is-open .menu-links li:nth-child(4) { transition-delay: 0.64s !important; }
  .menu-panel.menu-is-open .menu-meta section:nth-of-type(1) { transition-delay: 0.74s !important; }
  .menu-panel.menu-is-open .menu-meta section:nth-of-type(2) { transition-delay: 0.80s !important; }

  .menu-panel.menu-is-closing .menu-links li,
  .menu-panel.menu-is-closing .menu-meta section {
    opacity: 0 !important;
    filter: blur(12px) !important;
    transform: translateY(22px) !important;
    transition-duration: 0.48s, 0.56s, 0.56s !important;
    transition-timing-function: ease, var(--ease-in-out), var(--ease-in-out) !important;
  }

  .menu-panel.menu-is-closing .menu-meta section:nth-of-type(2) { transition-delay: 0s !important; }
  .menu-panel.menu-is-closing .menu-meta section:nth-of-type(1) { transition-delay: 0.055s !important; }
  .menu-panel.menu-is-closing .menu-links li:nth-child(4) { transition-delay: 0.115s !important; }
  .menu-panel.menu-is-closing .menu-links li:nth-child(3) { transition-delay: 0.17s !important; }
  .menu-panel.menu-is-closing .menu-links li:nth-child(2) { transition-delay: 0.225s !important; }
  .menu-panel.menu-is-closing .menu-links li:nth-child(1) { transition-delay: 0.28s !important; }

  .site-header.menu-is-open .menu-pill {
    background: transparent !important;
    border-color: var(--panel-ink) !important;
    color: var(--panel-ink) !important;
  }

  .site-header.menu-is-open .menu-icon-line:first-child {
    top: 50% !important;
    transform: translateY(-50%) rotate(45deg) !important;
  }

  .site-header.menu-is-open .menu-icon-line:last-child {
    bottom: auto !important;
    top: 50% !important;
    transform: translateY(-50%) rotate(-45deg) !important;
  }

  .site-header.menu-is-open .contact-pill,
  .site-header.menu-contact-on-panel .contact-pill {
    background: var(--panel-ink) !important;
    border-color: var(--panel-ink) !important;
    color: var(--ink) !important;
  }

  .site-header.menu-is-open .contact-pill .pill-label::before,
  .site-header.menu-is-open .contact-pill .pill-label::after,
  .site-header.menu-contact-on-panel .contact-pill .pill-label::before,
  .site-header.menu-contact-on-panel .contact-pill .pill-label::after {
    color: var(--ink) !important;
  }

  .site-header.menu-is-closing:not(.is-on-light):not(.menu-contact-on-panel) .contact-pill {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: var(--panel-ink) !important;
    transition-duration: 0ms !important;
  }

  .site-header.menu-is-closing:not(.is-on-light) .menu-pill {
    background: transparent !important;
    border-color: rgba(var(--ink-rgb), 0.84) !important;
    color: var(--ink) !important;
    transition-duration: 0ms !important;
  }

  .site-header.is-on-light .brand-logo img {
    filter: brightness(0) saturate(100%) !important;
  }

  .site-header:not(.is-on-light) .brand-logo img {
    filter: none !important;
  }

  .site-header.is-on-light .menu-pill,
  .site-header.menu-is-closing.is-on-light .menu-pill {
    color: var(--panel-ink) !important;
    border-color: rgba(var(--black-rgb), 0.82) !important;
    background: transparent !important;
  }

  .site-header.is-on-light .menu-pill:hover,
  .site-header.is-on-light .menu-pill:focus-visible {
    color: var(--panel-ink) !important;
    border-color: var(--panel-ink) !important;
    background: transparent !important;
  }

  .site-header.is-on-light .contact-pill,
  .site-header.menu-is-closing.is-on-light:not(.menu-contact-on-panel) .contact-pill {
    background: var(--panel-ink) !important;
    border-color: var(--panel-ink) !important;
    color: var(--ink) !important;
  }

  .site-header.is-on-light .contact-pill .pill-label::before,
  .site-header.is-on-light .contact-pill .pill-label::after {
    color: var(--ink) !important;
  }



  /* LANGE F7 BACKGROUND FIX
     Fond clair de contenu en #F7F7F7.
     Important : ne touche PAS à --panel ni au .menu-panel, pour garder le menu expand dans sa couleur initiale.
     Important : .work-section reste transparent pour ne pas afficher le fond clair avant le shutter. */

  .work-section {
    background: transparent !important;
    background-color: transparent !important;
  }

  .work-section::before {
    background: #F7F7F7 !important;
  }

  .work-bg-band::before,
  .work-bg-wipe::after {
    background: #F7F7F7 !important;
  }

  .work-bg-band,
  .work-bg-wipe {
    background: transparent !important;
    box-shadow: none !important;
  }

  .work-sticky,
  .work-layout {
    background: transparent !important;
  }

  .expertise-section,
  .references-section {
    background: #F7F7F7 !important;
    background-color: #F7F7F7 !important;
  }

  .expertise-section::before,
  .references-section::before {
    background: #F7F7F7 !important;
  }

  /* Le menu expand garde explicitement sa couleur d'origine. */
  .menu-panel {
    background: var(--panel) !important;
    color: var(--panel-ink) !important;
  }



  /* LANGE MENU EXPAND WHITE
     Le menu expand passe en blanc, sans toucher au fond clair #F7F7F7 du site. */
  .menu-panel {
    background: #FFFFFF !important;
    background-color: #FFFFFF !important;
    color: var(--panel-ink) !important;
  }

  .menu-panel .menu-link,
  .menu-panel .menu-link-text,
  .menu-panel .meta-title,
  .menu-panel .meta-row,
  .menu-panel .social-links a {
    color: var(--panel-ink) !important;
  }

  .menu-panel .meta-title,
  .menu-panel .meta-key {
    color: rgba(var(--black-rgb), 0.42) !important;
  }

  .site-header.menu-is-open .menu-pill,
  .site-header.menu-is-open.is-on-light .menu-pill {
    background: transparent !important;
    border-color: var(--panel-ink) !important;
    color: var(--panel-ink) !important;
  }

  .site-header.menu-is-open .contact-pill,
  .site-header.menu-contact-on-panel .contact-pill {
    background: var(--panel-ink) !important;
    border-color: var(--panel-ink) !important;
    color: var(--ink) !important;
  }



  /* LANGE MENU EXPAND TEXT SIZE +
     Agrandissement léger des textes du menu expand. */
  .menu-panel .menu-link {
    font-size: clamp(31px, 2.48vw, 38px) !important;
    line-height: 1.08 !important;
  }

  .menu-panel .menu-links {
    gap: 16px !important;
  }

  .menu-panel .menu-meta {
    font-size: 18.5px !important;
    line-height: 1.24 !important;
  }

  .menu-panel .meta-title {
    font-size: 13.5px !important;
    letter-spacing: 0.01em !important;
  }

  .menu-panel .social-links {
    gap: 30px !important;
  }

  @media (max-width: 760px) {
    .menu-panel .menu-link {
      font-size: clamp(30px, 8.8vw, 38px) !important;
    }

    .menu-panel .menu-meta {
      font-size: 16px !important;
    }

    .menu-panel .social-links {
      gap: 20px !important;
    }
  }



  /* LANGE LIGHT CONTENT TEXT BLACK
     Reprise du noir texte du menu expand pour les titres et textes sur fond clair. */
  .work-section,
  .expertise-section,
  .references-section {
    color: var(--panel-ink) !important;
  }

  .work-left h2,
  .project-copy h3,
  .expertise-title,
  .expertise-card h3,
  .references-title,
  .client-name {
    color: var(--panel-ink) !important;
  }

  .work-all-link,
  .project-copy p,
  .project-link,
  .expertise-copy,
  .expertise-card p,
  .references-copy,
  .client-meta,
  .section-kicker {
    color: var(--panel-ink) !important;
  }

  .work-all-link::after,
  .project-link::after,
  .section-kicker::before {
    background: var(--panel-ink) !important;
    color: var(--panel-ink) !important;
    opacity: 1 !important;
  }

  .work-all-link:hover,
  .work-all-link:focus-visible,
  .project-card:hover .project-link,
  .project-card:focus-visible .project-link {
    color: var(--panel-ink) !important;
  }

/* ============================================================
   v25 — Smooth scroll layer (Lenis + fallback)
   Keeps the original layout/animations but prevents native smooth-scroll
   from fighting the Lenis RAF loop.
   ============================================================ */
html.has-smooth-scroll,
html.has-smooth-scroll body {
  height: auto;
}

/* ============================================================
   ABOUT PAGE — MARQUES_OFF / MARQUES_ON / FACE1 / FACE2 / PROCESS
   Route-specific only. Header, menu, Lenis, cursor, rollovers and
   footer remain driven by the shared site system.
   ============================================================ */
.about-page {
  background: #f3f2ed;
  color: var(--panel-ink);
}

.about-page main {
  position: relative;
  z-index: 3;
}

.about-page .about-hero-placeholder {
  position: relative;
  width: 100%;
  height: 100svh;
  min-height: 720px;
  overflow: hidden;
  background:
    radial-gradient(circle at 72% 30%, rgba(52, 46, 102, 0.42), transparent 34%),
    radial-gradient(circle at 18% 78%, rgba(22, 73, 83, 0.36), transparent 38%),
    #131224;
  isolation: isolate;
}

.about-page .about-hero-placeholder::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  background: url('../images/home/hero-overlay.webp') center / cover no-repeat;
  opacity: 0.18;
  mix-blend-mode: screen;
  pointer-events: none;
}

.about-brands-section {
  --about-bg-progress: 0;
  --about-content-opacity: 0;
  --about-solid-bg: 0;
  --about-band-0: 0;
  --about-band-1: 0;
  --about-band-2: 0;
  --about-band-3: 0;
  --about-band-4: 0;
  --about-band-5: 0;
  position: relative;
  z-index: 4;
  width: 100%;
  height: clamp(940px, 60.9375vw, 1170px);
  min-height: 940px;
  overflow: visible;
  background: #f7f7f7;
  color: var(--panel-ink);
  isolation: isolate;
}

.about-brands-sticky {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.about-brands-wipe {
  position: fixed;
  z-index: 0;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  contain: paint;
  opacity: 1;
  visibility: visible;
  transition: opacity 80ms linear;
}

.about-brands-section.is-transition-complete .about-brands-wipe {
  opacity: 0;
  visibility: hidden;
}

.about-brands-wipe::after {
  content: "";
  position: absolute;
  z-index: 2;
  inset: 0;
  background: #f7f7f7;
  opacity: var(--about-solid-bg);
  will-change: opacity;
}

.about-brands-band {
  position: absolute;
  z-index: 1;
  left: 0;
  width: 100%;
  height: calc(100% / 6 + 1px);
  display: block;
  overflow: hidden;
  pointer-events: none;
}

.about-brands-band::before {
  content: "";
  position: absolute;
  inset: -1px 0;
  background: #f7f7f7;
  transform: translate3d(0, var(--about-band-shift, 110%), 0);
  will-change: transform;
}

.about-brands-band:nth-child(1) { top: calc(0 * 100% / 6); --about-band-progress: var(--about-band-0); }
.about-brands-band:nth-child(2) { top: calc(1 * 100% / 6); --about-band-progress: var(--about-band-1); }
.about-brands-band:nth-child(3) { top: calc(2 * 100% / 6); --about-band-progress: var(--about-band-2); }
.about-brands-band:nth-child(4) { top: calc(3 * 100% / 6); --about-band-progress: var(--about-band-3); }
.about-brands-band:nth-child(5) { top: calc(4 * 100% / 6); --about-band-progress: var(--about-band-4); }
.about-brands-band:nth-child(6) { top: calc(5 * 100% / 6); --about-band-progress: var(--about-band-5); }

.about-brands-section:not(.is-content-ready) .about-brands-inner {
  pointer-events: none;
}

.about-brands-inner {
  position: relative;
  z-index: 3;
  width: min(53.0208vw, 1018px);
  height: 100%;
  margin: 0 auto;
  padding-top: clamp(212px, 14.2708vw, 274px);
  opacity: var(--about-content-opacity);
  will-change: opacity;
}

.brands-copy {
  position: relative;
}

.brands-kicker {
  margin: 0;
  text-align: center;
  text-transform: uppercase;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.375;
  letter-spacing: 0;
  color: rgba(var(--black-rgb), 0.5);
}

.brands-display {
  display: grid;
  justify-items: center;
  margin-top: clamp(72px, 4.7396vw, 91px);
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(68px, 4.2708vw, 82px);
  font-weight: 500;
  line-height: 1.1707;
  letter-spacing: 0;
  color: var(--panel-ink);
}

.brand-line {
  display: flex;
  align-items: baseline;
  gap: 0.18em;
  width: max-content;
  max-width: 100%;
  margin-inline: auto;
  justify-content: center;
  white-space: nowrap;
}

.brand-line.reveal-item.in-view {
  transform: none;
  filter: none;
  will-change: auto;
}

.brand-word {
  position: relative;
  z-index: 3;
  display: inline;
  appearance: none;
  border: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-align: left;
  cursor: pointer;
  transition:
    color 320ms ease,
    filter 420ms var(--ease-out),
    transform 520ms var(--ease-out);
}

.brand-word:hover,
.brand-word:focus-visible,
.brand-word.is-active {
  z-index: 5;
  color: var(--panel-ink);
  filter: none;
  outline: none;
  transform: translateY(-1px);
}

.brands-display.is-brand-hovered .brand-word:not(.is-active) {
  color: rgba(var(--black-rgb), 0.2);
}

.brand-word:focus-visible {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.14em;
}

.brand-hover-card {
  --brand-card-x: 50%;
  --brand-card-y: 50%;
  --brand-card-rotate: -8deg;
  --brand-card-gradient: linear-gradient(138deg, #1b0e0c 0%, #684128 56%, #b99559 100%);
  position: absolute;
  z-index: 4;
  top: 0;
  left: 0;
  width: clamp(198px, 12.023vw, 231px);
  aspect-ratio: 230.84 / 174.87;
  display: grid;
  place-items: center;
  padding: 28px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--brand-card-gradient);
  box-shadow: 0 18px 40px rgba(var(--black-rgb), 0.16);
  opacity: 0;
  pointer-events: none;
  transform:
    translate3d(var(--brand-card-x), var(--brand-card-y), 0)
    translate(-50%, -50%)
    rotate(var(--brand-card-rotate))
    scale(0.82);
  transform-origin: center;
  transition:
    opacity 260ms ease,
    transform 540ms var(--ease-out);
  will-change: transform, opacity;
}

.brand-hover-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 26% 18%, rgba(255, 255, 255, 0.25), transparent 38%),
    linear-gradient(125deg, transparent 25%, rgba(255, 255, 255, 0.12) 54%, transparent 75%);
  pointer-events: none;
}

.brand-hover-card.is-visible {
  opacity: 1;
  transform:
    translate3d(var(--brand-card-x), var(--brand-card-y), 0)
    translate(-50%, -50%)
    rotate(var(--brand-card-rotate))
    scale(1);
}

.brand-hover-card img {
  position: relative;
  z-index: 1;
  display: block;
  width: min(55%, 128px);
  max-height: 56px;
  object-fit: contain;
  filter: invert(1) brightness(2) drop-shadow(0 4px 10px rgba(0, 0, 0, 0.18));
}

.brands-secondary {
  position: relative;
  z-index: 5;
  width: min(100%, 647px);
  margin: clamp(70px, 4.7396vw, 91px) auto 0;
  display: grid;
  grid-template-columns: 106px 202px 161px 178px;
  color: rgba(var(--black-rgb), 0.5);
}

.brands-secondary ul {
  min-width: 0;
  margin: 0;
  padding: 0 0 0 40px;
  list-style: none;
  border-left: 1px solid rgba(var(--black-rgb), 0.2);
}

.brands-secondary ul:first-child {
  padding-left: 0;
  border-left: 0;
}

.brands-secondary li {
  min-height: 27px;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: -0.05em;
  white-space: nowrap;
}

.brands-secondary ul:last-child li:last-child {
  color: rgba(var(--black-rgb), 0.3);
}

.about-face-section {
  --face-x: 62%;
  --face-y: 32%;
  --face-radius: 200px;
  position: relative;
  width: 100%;
  height: clamp(820px, 60.9375vw, 1170px);
  min-height: min(100svh, 1170px);
  overflow: hidden;
  background: #5e160d;
  color: #faf8f2;
  isolation: isolate;
}

.about-face-image {
  position: absolute;
  z-index: 0;
  top: -0.1709%;
  left: -10.5729%;
  width: 119.9479%;
  height: 110.7692%;
  object-fit: fill;
  user-select: none;
  pointer-events: none;
}

.about-face-image--alternate {
  z-index: 1;
  left: -10.6771%;
  opacity: 0;
  -webkit-mask-image: radial-gradient(
    circle var(--face-radius) at var(--face-x) var(--face-y),
    #000 0%,
    #000 56%,
    rgba(0, 0, 0, 0.92) 66%,
    rgba(0, 0, 0, 0.56) 79%,
    rgba(0, 0, 0, 0.18) 91%,
    transparent 100%
  );
  mask-image: radial-gradient(
    circle var(--face-radius) at var(--face-x) var(--face-y),
    #000 0%,
    #000 56%,
    rgba(0, 0, 0, 0.92) 66%,
    rgba(0, 0, 0, 0.56) 79%,
    rgba(0, 0, 0, 0.18) 91%,
    transparent 100%
  );
  transition: opacity 420ms ease;
  will-change: opacity, mask-image, -webkit-mask-image;
}

.about-face-section.is-face-revealed .about-face-image--alternate {
  opacity: 1;
}

.about-face-shade {
  position: absolute;
  z-index: 2;
  inset: 0;
  background: transparent;
  pointer-events: none;
}

.about-face-hotspot {
  position: absolute;
  z-index: 7;
  top: 2%;
  left: 35.5%;
  width: 36.5%;
  height: 58%;
  border-radius: 48% 52% 46% 54%;
  cursor: pointer;
}

.about-face-heading,
.about-linkedin,
.about-face-divider,
.about-face-quote {
  position: absolute;
  z-index: 5;
}

.about-face-heading {
  top: 8.8034%;
  left: 11.1458%;
}

.about-face-heading h1 {
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(70px, 4.2708vw, 82px);
  font-weight: 500;
  line-height: 1.1707;
  letter-spacing: 0;
  color: #faf8f2;
}

.about-face-heading p {
  margin: 7px 0 0;
  font-size: clamp(20px, 1.25vw, 24px);
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0;
  color: rgba(250, 248, 242, 0.7);
}

.about-linkedin {
  top: 30.9402%;
  left: 73.0208%;
  width: min(14.7917vw, 284px);
  display: grid;
  justify-items: start;
  gap: 12px;
  color: #faf8f2;
}

.about-linkedin-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background: #050505;
  color: #faf8f2;
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.05em;
  transition: filter 480ms var(--ease-out), opacity 480ms var(--ease-out);
}

.about-linkedin > span:last-child {
  font-size: clamp(16px, 1.0417vw, 20px);
  font-weight: 500;
  line-height: 1.2857;
  letter-spacing: -0.05em;
  color: rgba(250, 248, 242, 0.8);
}

.about-linkedin:hover .about-linkedin-icon,
.about-linkedin:focus-visible .about-linkedin-icon {
  color: #faf8f2;
  background: #050505;
  transform: none;
  filter: blur(1.2px);
  opacity: 0.76;
}

.about-linkedin:focus-visible {
  outline: 1px solid rgba(250, 248, 242, 0.8);
  outline-offset: 10px;
}

.about-face-divider {
  top: 62.1368%;
  left: 11.1458%;
  right: 12.1875%;
  height: 2px;
  background: rgba(250, 248, 242, 0.2);
  transform-origin: left center;
}

.about-face-quote {
  top: 67.0940%;
  left: 11.1458%;
  right: 12.1875%;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.about-face-quote p {
  width: min(22vw, 418px);
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(66px, 4.2708vw, 82px);
  font-weight: 500;
  line-height: 1.1707;
  letter-spacing: 0;
  color: #faf8f2;
}

.about-face-quote .quote-line {
  display: block;
  white-space: nowrap;
}

.about-face-quote > span {
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(72px, 4.2708vw, 82px);
  font-weight: 500;
  line-height: 1;
  color: #faf8f2;
}

.about-process-section {
  position: relative;
  width: 100%;
  min-height: clamp(940px, 60.9375vw, 1170px);
  padding: clamp(178px, 11.6667vw, 224px) 0 clamp(140px, 9vw, 172px);
  background: #14141d;
  color: #faf8f2;
}

.about-process-inner {
  width: min(92.8125vw, 1782px);
  margin: 0 auto;
}

.about-process-head {
  display: grid;
  grid-template-columns: minmax(150px, 187px) minmax(0, 1fr);
  column-gap: clamp(48px, 3.6458vw, 70px);
  align-items: start;
}

.about-process-head > p {
  margin: 0;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.375;
  font-weight: 700;
  text-transform: uppercase;
  color: rgba(250, 248, 242, 0.7);
}

.about-process-head > div {
  width: min(100%, 792px);
}

.about-process-head h2 {
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(70px, 4.2708vw, 82px);
  font-weight: 500;
  line-height: 1.1707;
  letter-spacing: 0;
  color: #faf8f2;
  white-space: nowrap;
}

.about-process-head > div > p {
  margin: 7px 0 0;
  font-size: clamp(17px, 1.0938vw, 21px);
  font-weight: 500;
  line-height: 1.2857;
  letter-spacing: -0.05em;
  color: rgba(250, 248, 242, 0.8);
}

.about-process-grid {
  width: min(calc(100% - 257px), 1385px);
  margin: clamp(100px, 6.25vw, 120px) 0 0 min(13.3854vw, 257px);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 413px));
  column-gap: clamp(46px, 3.8021vw, 73px);
}

.about-process-step {
  min-width: 0;
  min-height: 294px;
  padding-bottom: 62px;
  border-bottom: 1px solid rgba(250, 248, 242, 0.7);
}

.process-step-number {
  margin: 0;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.375;
  font-weight: 700;
  text-transform: uppercase;
  color: rgba(250, 248, 242, 0.7);
}

.about-process-step h3 {
  min-height: 96px;
  margin: 10px 0 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: 36px;
  font-weight: 500;
  line-height: 96px;
  letter-spacing: 0;
  color: #faf8f2;
  white-space: nowrap;
}

.about-process-step > p:last-child {
  margin: 7px 0 0;
  font-size: clamp(16px, 0.9375vw, 18px);
  font-weight: 400;
  line-height: 1.34;
  letter-spacing: -0.018em;
  font-weight: 500;
  line-height: normal;
  letter-spacing: -0.055em;
  color: rgba(250, 248, 242, 0.5);
}

.about-process-step .process-step-number,
.about-process-step h3,
.about-process-step > p:last-child {
  opacity: 0;
  filter: blur(7px);
  transform: translate3d(0, 16px, 0);
  transition:
    opacity 680ms ease,
    filter 800ms var(--ease-out),
    transform 800ms var(--ease-out);
}

.about-process-step.in-view .process-step-number,
.about-process-step.in-view h3,
.about-process-step.in-view > p:last-child {
  opacity: 1;
  filter: blur(0);
  transform: none;
}

.about-process-step.in-view .process-step-number {
  transition-delay: var(--reveal-delay, 0ms);
}

.about-process-step.in-view h3 {
  transition-delay: calc(var(--reveal-delay, 0ms) + 90ms);
}

.about-process-step.in-view > p:last-child {
  transition-delay: calc(var(--reveal-delay, 0ms) + 180ms);
}

.about-page .reveal-item {
  opacity: 0;
  filter: blur(10px);
  transform: translate3d(0, 26px, 0);
  transition:
    opacity 820ms ease var(--reveal-delay, 0ms),
    filter 940ms var(--ease-out) var(--reveal-delay, 0ms),
    transform 940ms var(--ease-out) var(--reveal-delay, 0ms);
  will-change: opacity, filter, transform;
}

.about-page .reveal-item.in-view {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0);
}

.about-page .about-face-divider.reveal-item {
  transform: scaleX(0);
}

.about-page .about-face-divider.reveal-item.in-view {
  transform: scaleX(1);
}

.about-page .about-linkedin:hover .about-linkedin-icon.reveal-item.in-view,
.about-page .about-linkedin:focus-visible .about-linkedin-icon.reveal-item.in-view {
  color: #faf8f2;
  background: #050505;
  filter: blur(1.2px);
  opacity: 0.76;
  transform: none;
}

@media (max-width: 1180px) {
  .about-brands-inner {
    width: calc(100% - 96px);
    max-width: 1018px;
  }

  .brands-display {
    font-size: clamp(58px, 7vw, 78px);
  }

  .about-process-inner {
    width: calc(100% - 96px);
  }

  .about-process-grid {
    width: calc(100% - 210px);
    margin-left: 210px;
    column-gap: 42px;
  }

  .about-linkedin {
    left: auto;
    right: 9%;
    width: 260px;
  }
}

@media (max-width: 900px) {
  .about-page .about-hero-placeholder {
    height: 82svh;
    min-height: 620px;
  }

  .about-brands-section {
    height: auto;
    min-height: 0;
    padding: 128px 32px 140px;
    overflow: hidden;
    background: #f7f7f7;
  }

  .about-brands-sticky {
    position: static;
    height: auto;
    min-height: 0;
    overflow: visible;
  }

  .about-brands-wipe {
    display: none;
  }

  .about-brands-inner {
    width: 100%;
    height: auto;
    padding: 0;
    opacity: 1;
    clip-path: none;
  }

  .brands-display {
    margin-top: 62px;
    font-size: clamp(50px, 8.6vw, 72px);
    line-height: 1.08;
  }

  .brand-line {
    width: 100%;
    flex-wrap: wrap;
    white-space: normal;
  }

  .brands-secondary {
    width: min(100%, 650px);
    margin-top: 86px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    row-gap: 42px;
  }

  .brands-secondary ul,
  .brands-secondary ul:first-child {
    padding-left: 28px;
    border-left: 1px solid rgba(var(--black-rgb), 0.16);
  }

  .about-face-section {
    --face-radius: 160px;
    height: 100svh;
    min-height: 760px;
  }

  .about-face-image {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-position: 58% center;
  }

  .about-face-hotspot {
    top: 17%;
    left: 45%;
    width: min(42vw, 360px);
    height: 40%;
  }

  .about-face-heading {
    top: 10%;
    left: 32px;
  }

  .about-face-heading h1 {
    font-size: clamp(56px, 10vw, 78px);
  }

  .about-linkedin {
    top: 34%;
    right: 32px;
    width: min(270px, 38vw);
  }

  .about-face-divider {
    top: 65%;
    left: 32px;
    right: 32px;
  }

  .about-face-quote {
    top: 70%;
    left: 32px;
    right: 32px;
  }

  .about-face-quote p {
    width: min(46vw, 370px);
    font-size: clamp(54px, 9vw, 78px);
  }

  .about-process-section {
    min-height: 0;
    padding: 132px 32px 148px;
  }

  .about-process-inner {
    width: 100%;
  }

  .about-process-head {
    grid-template-columns: 1fr;
    row-gap: 42px;
  }

  .about-process-head h2 {
    white-space: normal;
  }

  .about-process-grid {
    width: 100%;
    margin: 92px 0 0;
    grid-template-columns: 1fr;
    row-gap: 76px;
  }

  .about-process-step {
    min-height: 0;
    padding-bottom: 54px;
  }

  .about-process-step h3 {
    min-height: 0;
    margin-top: 18px;
    line-height: 1.05;
    white-space: normal;
  }
}

@media (max-width: 640px) {
  .about-page .about-hero-placeholder {
    height: 78svh;
    min-height: 560px;
  }

  .about-brands-section {
    padding: 100px 22px 116px;
  }

  .brands-kicker {
    max-width: 280px;
    font-size: 14px;
  }

  .brands-display {
    margin-top: 52px;
    font-size: clamp(42px, 12.4vw, 62px);
  }

  .brand-hover-card {
    width: 180px;
    padding: 22px;
  }

  .brands-secondary {
    margin-top: 72px;
    gap: 36px 18px;
  }

  .brands-secondary ul,
  .brands-secondary ul:first-child {
    padding-left: 14px;
  }

  .brands-secondary li {
    font-size: 14px;
    white-space: normal;
  }

  .about-face-section {
    --face-radius: 142px;
    min-height: 720px;
  }

  .about-face-hotspot {
    top: 19%;
    left: 38%;
    width: 54vw;
  }

  .about-face-heading {
    top: 9%;
    left: 22px;
  }

  .about-face-heading h1 {
    font-size: clamp(48px, 15vw, 66px);
  }

  .about-face-heading p {
    font-size: 18px;
  }

  .about-linkedin {
    top: 37%;
    right: 22px;
    width: 185px;
  }

  .about-linkedin > span:last-child {
    font-size: 14px;
  }

  .about-face-divider {
    top: 66%;
    left: 22px;
    right: 22px;
    height: 2px;
  }

  .about-face-quote {
    top: 71%;
    left: 22px;
    right: 22px;
  }

  .about-face-quote p {
    width: min(64vw, 300px);
    font-size: clamp(46px, 13vw, 62px);
  }

  .about-face-quote > span {
    font-size: 58px;
  }

  .about-process-section {
    padding: 104px 22px 122px;
  }

  .about-process-head h2 {
    font-size: clamp(48px, 14vw, 64px);
  }

  .about-process-grid {
    margin-top: 72px;
    row-gap: 60px;
  }

  .about-process-step h3 {
    font-size: 42px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .about-brands-section {
    height: auto;
    min-height: 0;
    background: #f7f7f7;
  }

  .about-brands-sticky {
    position: static;
    height: auto;
    min-height: 0;
  }

  .about-brands-wipe {
    display: none;
  }

  .about-brands-inner {
    opacity: 1;
    clip-path: none;
  }

  .about-page .reveal-item,
  .about-page .reveal-item.in-view {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }

  .about-process-step .process-step-number,
  .about-process-step h3,
  .about-process-step > p:last-child {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }

  .brand-hover-card,
  .about-face-image--alternate,
  .about-linkedin-icon {
    transition-duration: 0.001ms !important;
  }
}

html.has-smooth-scroll,
html.has-smooth-scroll.lenis,
html.has-smooth-scroll.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}

html.has-smooth-scroll body {
  overscroll-behavior-y: none;
}

html.has-smooth-scroll.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

html.has-smooth-scroll.lenis.lenis-stopped {
  overflow: clip;
}

html.has-smooth-scroll.lenis.lenis-smooth iframe {
  pointer-events: none;
}


/* ============================================================
   LANGE FIX v2 — Menu button color releases as soon as the panel
   has visually cleared the header button zone, not after cleanup.
   .menu-contact-on-panel is removed by JS before menu-is-closing ends.
   ============================================================ */
.site-header.menu-is-closing.menu-contact-on-panel .menu-pill,
.site-header.menu-is-closing.menu-contact-on-panel:not(.is-on-light) .menu-pill,
.site-header.menu-is-closing.menu-contact-on-panel.is-on-light .menu-pill {
  background: transparent !important;
  border-color: var(--panel-ink) !important;
  color: var(--panel-ink) !important;
  transition-duration: 0ms !important;
}

.site-header.menu-is-closing.menu-contact-on-panel .menu-pill:hover,
.site-header.menu-is-closing.menu-contact-on-panel .menu-pill:focus-visible {
  background: transparent !important;
  border-color: var(--panel-ink) !important;
  color: var(--panel-ink) !important;
}

.site-header.menu-is-closing .menu-icon-line:first-child {
  top: 50% !important;
  transform: translateY(-50%) rotate(45deg) !important;
}

.site-header.menu-is-closing .menu-icon-line:last-child {
  bottom: auto !important;
  top: 50% !important;
  transform: translateY(-50%) rotate(-45deg) !important;
}

/* Large fullscreen displays: let the 16:9 stage grow past its former
   1760px ceiling and extend the vignette beyond the video boundary. */
@media (min-width: 1800px) and (min-height: 900px) {
  .video-stage {
    width: min(100vw, 192vh, 2240px);
    max-width: 2240px;
    max-height: 1260px;
    overflow: visible;
    background: transparent;
  }
}

/* Reverse handoff: HERO_FORM stays fully opaque and frozen underneath the
   face, so fading the top layer cannot produce a luminance dip. */
.hero.face-active.face-returning #heroVideo {
  opacity: 1;
  transition: none;
}

/* Desktop transition runway: give HERO_FORM -> INTRO_LOGO and the reverse
   enough physical scroll distance to complete inside the neutral state band. */
@media (min-width: 901px) {
  .hero-scroll-wrap {
    height: 360vh !important;
    min-height: 2600px !important;
  }
}

/* ============================================================
   TRANSITION STATE FIX — stable INTRO_LOGO reverse handoff
   The logo remains visible on frame 0 while the matching HERO_FORM
   frame is already prepared underneath, then both layers crossfade.
   ============================================================ */
.hero.logo-video-active.logo-handoff-prep #heroVideo {
  opacity: 0 !important;
  visibility: visible !important;
  transition: opacity 0.24s var(--ease-out) !important;
}

.hero.logo-video-active.logo-handoff-prep .scroll-logo-video {
  opacity: 1 !important;
  visibility: visible !important;
  transition: opacity 0.24s var(--ease-out) !important;
}

.hero.logo-video-active.logo-handoff-prep.logo-returning #heroVideo {
  opacity: 1 !important;
}

.hero.logo-video-active.logo-handoff-prep.logo-returning .scroll-logo-video {
  opacity: 0 !important;
}

/* ============================================================
   POINTER FX — 21TSI-inspired soft background lens + MetaLab cursor
   Isolated from the video transition controller and desktop-only.
   ============================================================ */
html.has-pointer-fx,
html.has-pointer-fx * {
  cursor: none !important;
}

@media (hover: hover) and (pointer: fine) {
  .pointer-distortion {
    --lens-x: -240px;
    --lens-y: -240px;
    --lens-skew-x: 0deg;
    --lens-skew-y: 0deg;
    position: fixed;
    top: 0;
    left: 0;
    width: 184px;
    height: 184px;
    z-index: 2147483600;
    pointer-events: none;
    opacity: 0;
    border-radius: 50%;
    transform: translate3d(var(--lens-x), var(--lens-y), 0)
      skew(var(--lens-skew-x), var(--lens-skew-y)) scale(1.025);
    transform-origin: center;
    backdrop-filter: blur(2.4px) saturate(1.035) contrast(1.015);
    -webkit-backdrop-filter: blur(2.4px) saturate(1.035) contrast(1.015);
    -webkit-mask-image: radial-gradient(circle, #000 0 21%, rgba(0, 0, 0, .92) 35%, rgba(0, 0, 0, .44) 60%, transparent 76%);
    mask-image: radial-gradient(circle, #000 0 21%, rgba(0, 0, 0, .92) 35%, rgba(0, 0, 0, .44) 60%, transparent 76%);
    will-change: transform, opacity;
    contain: strict;
    transition: opacity .28s ease;
  }

  .pointer-distortion::after {
    content: "";
    position: absolute;
    inset: 17%;
    border-radius: 50%;
    background: radial-gradient(circle at 38% 34%, rgba(255,255,255,.028), transparent 56%);
    box-shadow: inset 8px 0 20px rgba(255,255,255,.018), inset -9px 0 22px rgba(15,12,35,.045);
    opacity: .72;
  }

  .pointer-distortion.is-visible {
    opacity: .84;
  }

  .pointer-distortion.is-suppressed {
    opacity: 0 !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    transition: none !important;
  }

  .pointer-cursor {
    --cursor-x: -60px;
    --cursor-y: -60px;
    position: fixed;
    top: 0;
    left: 0;
    width: 96px;
    height: 96px;
    z-index: 2147483647;
    pointer-events: none;
    opacity: 0;
    color: #fff;
    transform: translate3d(var(--cursor-x), var(--cursor-y), 0);
    transform-origin: center;
    will-change: transform, opacity;
    transition: opacity .18s ease;
  }

  .pointer-cursor::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 12px;
    height: 12px;
    background: currentColor;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: width .34s cubic-bezier(.2,.72,.2,1),
                height .34s cubic-bezier(.2,.72,.2,1);
  }

  .pointer-cursor.is-visible {
    opacity: 1;
  }

  .pointer-cursor.is-interactive::before {
    width: 34px;
    height: 34px;
    background: transparent;
    border: 1px solid currentColor;
  }

  .pointer-cursor.is-on-light {
    color: #131224;
  }

  .pointer-cursor.is-pressed::before {
    width: 28px;
    height: 28px;
    transition-duration: .12s;
  }
}

@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  .pointer-distortion,
  .pointer-cursor {
    display: none !important;
  }
}

/* Intro copy — editorial scale; auto-fit allows up to five desktop lines. */
@media (min-width: 981px) {
  .intro-scroll-main {
    max-width: 1180px !important;
  }

  .intro-scroll-text {
    width: 100% !important;
    max-width: none !important;
    font-family: 'PP Eiko', 'Satoshi', serif !important;
    font-size: var(--intro-fit-size, clamp(3rem, 3.4vw, 4.4rem)) !important;
    font-weight: 500 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.035em !important;
    text-align: left !important;
    text-align-last: auto !important;
    text-wrap: balance;
  }
}

@media (min-width: 1121px) {
  .intro-scroll-panel {
    padding-left: 54px !important;
    padding-right: 54px !important;
  }

  .intro-scroll-copy {
    width: min(1640px, calc(100vw - 108px)) !important;
    max-width: min(1640px, calc(100vw - 108px)) !important;
    grid-template-columns:
      clamp(110px, 7vw, 130px)
      minmax(0, 1fr)
      clamp(250px, 16vw, 280px) !important;
    column-gap: clamp(36px, 2.8vw, 52px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }

  .intro-scroll-main {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
  }
}

@media (max-width: 980px) {
  .intro-scroll-text {
    font-family: 'PP Eiko', 'Satoshi', serif !important;
    font-size: var(--intro-fit-size, clamp(2.35rem, 5.8vw, 3.6rem)) !important;
    font-weight: 500 !important;
    line-height: 1.14 !important;
    letter-spacing: -0.035em !important;
    text-align: left !important;
    text-align-last: auto !important;
  }
}

@media (max-width: 760px) {
  .intro-scroll-text {
    font-size: var(--intro-fit-size, clamp(2rem, 8vw, 3rem)) !important;
    line-height: 1.13 !important;
  }
}

.intro-scroll-word {
  display: inline-block !important;
  white-space: nowrap !important;
  margin-right: 0 !important;
}

.intro-scroll-nobreak {
  display: inline-block;
  white-space: nowrap;
}

.intro-seo-copy {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

/* ============================================================
   VISION DECOMPOSITION — the six original white expressions leave
   the paragraph, assemble into one line, then hand off to the marquee.
   The extra 190vh belongs to typography, followed by a 45vh aligned hold;
   the existing 260vh media runway remains unchanged in JS.
   ============================================================ */
@media (min-width: 901px) and (prefers-reduced-motion: no-preference) {
  .hero-scroll-wrap {
    --media-scroll-vh: 260;
    --vision-scroll-vh: 190;
    --vision-hold-vh: 45;
    height: 595vh !important;
    min-height: calc(2600px + 235vh) !important;
  }

  .hero {
    --vision-meta-opacity: 1;
    --vision-marquee-opacity: 0;
  }

  .intro-scroll-word:not(.vision-keyword) {
    opacity: var(--vision-word-opacity, 1) !important;
    filter: blur(var(--vision-word-blur, 0px)) !important;
    transform: translate3d(0, var(--vision-word-y, 0px), 0) !important;
    will-change: opacity, filter, transform;
  }

  .vision-keyword {
    position: relative !important;
    z-index: 4;
    display: inline-block !important;
    color: rgb(var(--ink-rgb)) !important;
    transform-origin: 50% 50%;
    will-change: transform, opacity, filter;
  }

  .vision-keyword::after {
    content: none !important;
    display: none !important;
  }

  .vision-keyword-source,
  .vision-keyword-final {
    display: inline-block;
    color: rgb(var(--ink-rgb)) !important;
    white-space: nowrap;
    pointer-events: none;
  }

  .vision-keyword-source {
    opacity: calc(1 - var(--keyword-case, 0));
  }

  .vision-keyword-final {
    position: absolute;
    top: 50%;
    left: 50%;
    opacity: var(--keyword-case, 0);
    transform: translate(-50%, -50%);
  }

  .intro-scroll-eyebrow {
    opacity: calc(var(--scroll-panel-opacity, 0) * var(--vision-meta-opacity, 1)) !important;
  }

  .intro-about-link {
    opacity: calc(var(--about-link-opacity, 0) * var(--vision-meta-opacity, 1)) !important;
  }

  .intro-seo-copy {
    opacity: calc(var(--scroll-panel-opacity, 0) * var(--vision-meta-opacity, 1)) !important;
  }

  .hero.vision-meta-hidden .intro-about-link {
    pointer-events: none !important;
  }

  .vision-assembly-layer,
  .vision-marquee {
    position: absolute;
    inset: 0;
    z-index: 15;
    overflow: hidden;
    pointer-events: none;
  }

  .vision-assembly-separator {
    position: absolute;
    display: block;
    color: var(--accent);
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: clamp(0.58rem, 0.7vw, 0.86rem);
    line-height: 1;
    opacity: 0;
    transform: translate3d(-50%, -50%, 0) scale(0.82);
    transform-origin: center;
    will-change: transform, opacity;
  }

  .vision-target-line {
    position: fixed;
    top: 52%;
    left: 50%;
    z-index: -1;
    display: block;
    width: max-content;
    height: auto;
    visibility: hidden;
    pointer-events: none;
    transform: translate(-50%, -50%);
  }

  .vision-line-group {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: clamp(16px, 1.4vw, 30px);
    width: max-content;
    padding-right: clamp(16px, 1.4vw, 30px);
    white-space: nowrap;
    color: rgb(var(--ink-rgb));
    font-family: 'PP Eiko', 'Satoshi', serif !important;
    padding-block: 0.14em;
    font-size: clamp(4rem, 4.4vw, 5.8rem) !important;
    font-weight: 500 !important;
    line-height: 0.98 !important;
    letter-spacing: -0.03em !important;
    text-transform: lowercase !important;
  }

  .vision-target-line > .vision-line-group {
    padding-right: 0;
  }

  .vision-line-keyword {
    display: inline-block;
    flex: 0 0 auto;
    color: rgb(var(--ink-rgb));
  }

  .vision-line-separator {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    color: var(--accent);
    font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 0.34em;
    line-height: 1;
  }

  .vision-marquee {
    top: 52%;
    bottom: auto;
    height: clamp(112px, 11vw, 180px);
    overflow: visible;
    opacity: var(--vision-marquee-opacity, 0);
    transform: translateY(-50%);
    will-change: opacity;
  }

  .vision-marquee-track {
    position: absolute;
    top: 50%;
    left: 50%;
    display: flex;
    align-items: center;
    width: max-content;
    animation: visionMarqueeLoop 29s linear infinite;
    animation-play-state: paused;
    transform: translate3d(-25%, -50%, 0);
    will-change: transform;
  }

  .vision-marquee.is-running .vision-marquee-track {
    animation-play-state: running;
  }

  .vision-marquee.is-reset .vision-marquee-track {
    animation: none;
    transform: translate3d(-25%, -50%, 0);
  }

  .hero.vision-measuring .intro-scroll-panel {
    opacity: 1 !important;
    transform: none !important;
  }

  .hero.vision-measuring .vision-keyword {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
  }

  .hero.vision-measuring .vision-keyword-source {
    opacity: 1 !important;
  }

  .hero.vision-measuring .vision-keyword-final {
    opacity: 0 !important;
  }

  @keyframes visionMarqueeLoop {
    from { transform: translate3d(-25%, -50%, 0); }
    to { transform: translate3d(-75%, -50%, 0); }
  }
}

@media (min-width: 901px) and (max-width: 980px) and (prefers-reduced-motion: no-preference) {
  .vision-line-group {
    font-size: clamp(3.5rem, 7.4vw, 4.6rem) !important;
  }
}

@media (max-width: 900px), (prefers-reduced-motion: reduce) {
  .vision-assembly-layer,
  .vision-marquee,
  .vision-target-line {
    display: none !important;
  }

  .vision-keyword,
  .vision-keyword-source {
    color: rgb(var(--ink-rgb)) !important;
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
  }

  .vision-keyword-final {
    display: none !important;
  }
}

/* ============================================================
   FIGMA FOOTER — node 16:1520
   Desktop geometry follows the 1920 × 895 Figma frame exactly.
   Existing site interactions/Lenis/header theme remain untouched.
   ============================================================ */
.site-footer {
  position: relative;
  z-index: 23;
  width: 100%;
  min-height: clamp(720px, 46.6146vw, 895px);
  height: clamp(720px, 46.6146vw, 895px);
  padding: 0;
  overflow: hidden;
  background: #14141d;
  color: #faf8f2;
  isolation: isolate;
}

.site-footer::after {
  content: none !important;
}

.footer-ribbon {
  position: absolute;
  z-index: 0;
  bottom: 0;
  height: 100%;
  width: auto;
  max-width: none;
  pointer-events: none;
  user-select: none;
}

.footer-ribbon--left { left: 0; }
.footer-ribbon--right { right: 0; }

.contact-footer-inner {
  position: relative;
  z-index: 2;
  width: min(90vw, 1399px);
  min-height: 0;
  height: auto;
  margin: 0 auto;
  padding: clamp(174px, 11.823vw, 227px) 0 0;
  display: block;
}

.footer-main-row {
  display: grid;
  grid-template-columns: minmax(0, 958px) minmax(220px, 271px);
  column-gap: clamp(92px, 8.854vw, 170px);
  align-items: end;
  width: min(100%, 1399px);
}

.footer-message {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  min-width: 0;
}

.footer-kicker {
  margin: 0;
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: uppercase;
  color: rgba(250, 248, 242, 0.70);
}

.footer-message h2 {
  margin: 0;
  width: 100%;
  max-width: none;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(64px, 4.6875vw, 90px);
  font-weight: 500;
  line-height: 1.0222;
  letter-spacing: -0.0222em;
  color: #faf8f2;
}

.footer-cta {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-self: start;
  width: max-content;
  max-width: 100%;
  min-height: 22px;
  padding: 0 0 9px;
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 13.1px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.1052em;
  text-transform: uppercase;
  white-space: nowrap;
  color: #faf8f2;
  transition: color 0.28s ease;
}

.footer-cta::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  opacity: 0.72;
  transform: scaleX(0.2836);
  transform-origin: left center;
  transition: transform 0.45s var(--ease-out), opacity 0.25s ease;
}

.footer-cta:hover,
.footer-cta:focus-visible {
  color: var(--accent);
  outline: none;
}

.footer-cta:hover::after,
.footer-cta:focus-visible::after {
  transform: scaleX(1);
  opacity: 1;
}

.footer-meta-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  width: 100%;
  margin-top: 75px;
}

.footer-copyright {
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.375;
  text-transform: uppercase;
  color: rgba(250, 248, 242, 0.40);
  white-space: nowrap;
}

.footer-meta {
  display: grid;
  grid-template-columns: 243px 81px;
  column-gap: 53px;
  align-items: start;
  width: 377px;
}

.footer-group-title {
  display: block;
  margin: 0 0 20px;
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.375;
  letter-spacing: 0;
  text-transform: uppercase;
  color: rgba(250, 248, 242, 0.40);
}

.footer-business-links,
.footer-social-links {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
}

.footer-business-links a,
.footer-social-links a {
  display: block;
  width: max-content;
  max-width: 100%;
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.3333;
  letter-spacing: 0;
  color: rgba(250, 248, 242, 0.80);
  transition: color 0.26s ease;
}

.footer-meta-key {
  color: rgba(250, 248, 242, 0.40);
}

.footer-business-links a:hover,
.footer-business-links a:focus-visible,
.footer-social-links a:hover,
.footer-social-links a:focus-visible {
  color: var(--accent);
  outline: none;
}

@media (max-width: 1280px) {
  .site-footer {
    min-height: 760px;
    height: 760px;
  }

  .contact-footer-inner {
    width: min(90vw, 1399px);
    padding-top: 172px;
  }

  .footer-main-row {
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 64px;
  }

  .footer-message h2 {
    font-size: clamp(60px, 6.4vw, 78px);
  }

  .footer-meta {
    grid-template-columns: minmax(220px, 255px) 91px;
    column-gap: clamp(56px, 7vw, 96px);
    width: auto;
  }
}

@media (max-width: 900px) {
  .site-footer {
    height: auto;
    min-height: 760px;
    padding: 96px 32px 72px;
  }

  .footer-ribbon {
    height: 100%;
    opacity: 0.9;
  }

  .contact-footer-inner {
    width: 100%;
    padding: 0;
  }

  .footer-main-row {
    display: grid;
    grid-template-columns: 1fr;
    row-gap: 48px;
    width: 100%;
  }

  .footer-message h2 {
    font-size: clamp(54px, 9.4vw, 76px);
    line-height: 1.02;
  }

  .footer-meta-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 52px;
    margin-top: 96px;
  }

  .footer-meta {
    grid-template-columns: minmax(220px, 1fr) minmax(120px, 0.55fr);
    width: 100%;
    column-gap: 56px;
  }
}

@media (max-width: 640px) {
  .site-footer {
    min-height: 720px;
    padding: 80px 22px 58px;
  }

  .footer-message {
    gap: 12px;
  }

  .footer-kicker {
    font-size: 13px;
  }

  .footer-message h2 {
    font-size: clamp(44px, 13vw, 62px);
    letter-spacing: -0.026em;
  }

  .footer-cta {
    font-size: 12px;
    white-space: normal;
  }

  .footer-meta-row {
    margin-top: 82px;
    gap: 44px;
  }

  .footer-meta {
    grid-template-columns: 1fr;
    row-gap: 40px;
  }

  .footer-group-title,
  .footer-copyright {
    font-size: 14px;
  }

  .footer-business-links a,
  .footer-social-links a {
    font-size: 16px;
  }
}

/* ============================================================
   CONTACT POPUP — Figma CONTACT_POPUP (node 16:1549)
   Uses the same top-right expansion language as the existing menu.
   ============================================================ */
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.footer-cta {
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  text-align: left;
}

.contact-panel {
  position: fixed;
  z-index: 2147483250;
  top: clamp(20px, 2.3932svh, 28px);
  right: 15px;
  bottom: clamp(20px, 2.3932svh, 28px);
  width: min(522px, calc(100vw - 30px));
  min-height: 0;
  border-radius: 7px;
  background: #FFFFFF;
  color: var(--panel-ink);
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transform: translateX(10px) scaleX(0.95) scaleY(0.04);
  transform-origin: top right;
  clip-path: inset(0 0 93% 92% round 18px);
  transition:
    opacity 0.24s ease,
    transform 0.74s var(--ease-in-out),
    clip-path 0.74s var(--ease-in-out);
  isolation: isolate;
}

.contact-panel.is-open {
  pointer-events: auto;
  opacity: 1;
  transform: translateX(0) scaleX(1) scaleY(1);
  clip-path: inset(0 0 0 0 round 7px);
}

.contact-panel.is-closing {
  pointer-events: none;
  opacity: 0;
  transform: translateX(10px) scaleX(0.95) scaleY(0.04);
  clip-path: inset(0 0 93% 92% round 18px);
  transition-delay: 0.42s;
}

.contact-panel-scroll {
  position: absolute;
  inset: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--black-rgb), 0.22) transparent;
}

.contact-panel-inner {
  width: 100%;
  min-height: 100%;
  padding: 67px 38px 42px 30px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.contact-panel-close {
  position: absolute;
  z-index: 3;
  top: 15px;
  right: 18px;
  width: 24px;
  height: 24px;
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--panel-ink);
  cursor: pointer;
  opacity: 0;
  transform: scale(0.86) rotate(-12deg);
  transition: opacity 0.35s ease, transform 0.5s var(--ease-out);
}

.contact-panel.is-open .contact-panel-close {
  opacity: 1;
  transform: scale(1) rotate(0deg);
  transition-delay: 0.32s;
}

.contact-panel.is-closing .contact-panel-close {
  opacity: 0;
  transform: scale(0.86) rotate(12deg);
  transition-delay: 0s;
}

.contact-panel-close span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 1px;
  background: currentColor;
  transform-origin: center;
}

.contact-panel-close span:first-child {
  transform: translate(-50%, -50%) rotate(45deg);
}

.contact-panel-close span:last-child {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.contact-panel-intro {
  width: 100%;
  max-width: 454px;
}

.contact-panel-intro h2 {
  margin: 0;
  width: 294px;
  max-width: 100%;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: 32px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--panel-ink);
}

.contact-panel-intro p {
  margin: 7px 0 0;
  width: 100%;
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.38;
  letter-spacing: -0.02em;
  color: rgba(var(--black-rgb), 0.62);
}

.contact-panel-form {
  width: 100%;
  max-width: 454px;
  margin-top: 33px;
  display: grid;
  gap: 17px;
}

.contact-field {
  position: relative;
  display: block;
  width: 100%;
  height: 48px;
  border: 1px solid rgba(var(--black-rgb), 0.18);
  border-radius: 5px;
  background: transparent;
  transition: border-color 0.26s ease, background-color 0.26s ease;
}

.contact-field--message {
  height: 137px;
}

.contact-field:focus-within {
  border-color: rgba(var(--black-rgb), 0.72);
  background: rgba(var(--black-rgb), 0.018);
}

.contact-field input,
.contact-field textarea {
  display: block;
  width: 100%;
  height: 100%;
  padding: 11px 16px;
  border: 0;
  outline: 0;
  resize: none;
  background: transparent;
  color: var(--panel-ink);
  caret-color: var(--accent);
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: -0.018em;
}

.contact-field input::placeholder,
.contact-field textarea::placeholder {
  color: rgba(var(--black-rgb), 0.48);
  opacity: 1;
}

.contact-field input:-webkit-autofill,
.contact-field input:-webkit-autofill:hover,
.contact-field input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--panel-ink);
  box-shadow: 0 0 0 1000px var(--panel) inset;
  transition: background-color 9999s ease-out;
}

.contact-submit {
  position: relative;
  width: 100%;
  height: 27px;
  margin-top: 16px;
  padding: 0 8px 12px 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  appearance: none;
  border: 0;
  border-bottom: 1px solid rgba(var(--black-rgb), 0.72);
  background: transparent;
  color: var(--panel-ink);
  cursor: pointer;
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 13.1px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.105em;
  text-transform: uppercase;
  text-align: left;
  transition: color 0.28s ease, border-color 0.28s ease;
}

.contact-submit span:last-child {
  transition: transform 0.34s var(--ease-out);
}

.contact-submit:hover,
.contact-submit:focus-visible {
  color: var(--accent);
  border-color: var(--accent);
  outline: none;
}

.contact-submit:hover span:last-child,
.contact-submit:focus-visible span:last-child {
  transform: translateX(5px);
}

.contact-panel-email-note {
  width: 100%;
  max-width: 454px;
  margin-top: auto;
  padding-top: 42px;
  border-top: 1px solid rgba(var(--black-rgb), 0.18);
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: -0.018em;
  color: rgba(var(--black-rgb), 0.62);
  cursor: default;
}

.contact-panel-intro,
.contact-panel-form .contact-field,
.contact-panel-form .contact-submit,
.contact-panel-email-note {
  opacity: 0;
  filter: blur(12px);
  transform: translateY(22px);
  transition:
    opacity 0.52s ease,
    filter 0.68s var(--ease-out),
    transform 0.68s var(--ease-out);
  will-change: opacity, filter, transform;
}

.contact-panel.is-open .contact-panel-intro,
.contact-panel.is-open .contact-panel-form .contact-field,
.contact-panel.is-open .contact-panel-form .contact-submit,
.contact-panel.is-open .contact-panel-email-note {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}

.contact-panel.is-open .contact-panel-intro { transition-delay: 0.40s; }
.contact-panel.is-open .contact-panel-form .contact-field:nth-of-type(1) { transition-delay: 0.47s; }
.contact-panel.is-open .contact-panel-form .contact-field:nth-of-type(2) { transition-delay: 0.53s; }
.contact-panel.is-open .contact-panel-form .contact-field:nth-of-type(3) { transition-delay: 0.59s; }
.contact-panel.is-open .contact-panel-form .contact-field:nth-of-type(4) { transition-delay: 0.65s; }
.contact-panel.is-open .contact-panel-form .contact-submit { transition-delay: 0.71s; }
.contact-panel.is-open .contact-panel-email-note { transition-delay: 0.77s; }

.contact-panel.is-closing .contact-panel-intro,
.contact-panel.is-closing .contact-panel-form .contact-field,
.contact-panel.is-closing .contact-panel-form .contact-submit,
.contact-panel.is-closing .contact-panel-email-note {
  opacity: 0;
  filter: blur(12px);
  transform: translateY(18px);
  transition-duration: 0.32s, 0.42s, 0.42s;
  transition-delay: 0s;
}

/* Contact panel sits above the right side of the fixed header while open. */
.site-header.contact-is-open .header-actions,
.site-header.contact-is-closing .header-actions {
  pointer-events: none !important;
}

@media (max-height: 800px) and (min-width: 761px) {
  .contact-panel-inner {
    min-height: 930px;
  }

  .contact-panel-email-note {
    margin-top: 90px;
  }
}

@media (max-width: 760px) {
  .contact-panel {
    top: 12px;
    right: 10px;
    bottom: 12px;
    left: 10px;
    width: auto;
  }

  .contact-panel-inner {
    padding: 72px 24px 28px;
  }

  .contact-panel-close {
    top: 18px;
    right: 18px;
  }

  .contact-panel-intro,
  .contact-panel-form,
  .contact-panel-email-note {
    max-width: none;
  }

  .contact-panel-intro h2 {
    width: min(82vw, 330px);
    font-size: clamp(31px, 9vw, 40px);
    line-height: 0.98;
  }

  .contact-panel-intro p {
    margin-top: 12px;
    font-size: 16px;
  }

  .contact-panel-form {
    margin-top: 28px;
    gap: 14px;
  }

  .contact-field {
    height: 52px;
  }

  .contact-field--message {
    height: 150px;
  }

  .contact-submit {
    margin-top: 12px;
  }

  .contact-panel-email-note {
    margin-top: 84px;
    padding-top: 28px;
    font-size: 15px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .contact-panel,
  .contact-panel-close,
  .contact-panel-intro,
  .contact-panel-form .contact-field,
  .contact-panel-form .contact-submit,
  .contact-panel-email-note {
    transition-duration: 0.001ms !important;
    transition-delay: 0ms !important;
  }
}

/* ============================================================
   CONTACT PAGE — FRAME_CONTACT + FRAME_FAQ
   Route-specific layout only. The header, menu, form controls,
   footer, cursor and Trionn rollover system stay shared with Home.
   ============================================================ */
.contact-page {
  background: #f3f2ed;
  color: var(--panel-ink);
}

.contact-page .contact-hero-placeholder {
  position: relative;
  width: 100%;
  height: 100svh;
  min-height: 720px;
  overflow: hidden;
  background:
    radial-gradient(circle at 74% 28%, rgba(63, 49, 104, 0.44), transparent 34%),
    radial-gradient(circle at 20% 78%, rgba(25, 68, 86, 0.38), transparent 36%),
    #131224;
  isolation: isolate;
}

.contact-page .contact-hero-placeholder::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  background: url('../images/home/hero-overlay.webp') center / cover no-repeat;
  opacity: 0.22;
  mix-blend-mode: screen;
  pointer-events: none;
}

.contact-page main {
  position: relative;
  z-index: 3;
}

.contact-page-section,
.faq-section {
  position: relative;
  width: 100%;
  background: #f3f2ed;
  color: var(--panel-ink);
}

.contact-page-section {
  padding: clamp(132px, 10.4vw, 200px) 0 clamp(148px, 11vw, 212px);
}

.contact-page-inner,
.faq-inner {
  width: min(83.125vw, 1596px);
  margin: 0 auto;
}

.contact-page-inner {
  display: grid;
  grid-template-columns: minmax(380px, 1fr) minmax(520px, 684px);
  column-gap: clamp(90px, 10vw, 192px);
  align-items: start;
}

.contact-page-intro {
  padding-top: 2px;
}

.contact-page-intro h1 {
  width: min(100%, 780px);
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(66px, 5.35vw, 102px);
  font-weight: 500;
  line-height: 0.96;
  letter-spacing: -0.052em;
  color: var(--panel-ink);
  text-wrap: balance;
}

.contact-page-intro p {
  width: min(100%, 410px);
  margin: clamp(28px, 2.6vw, 48px) 0 0;
  font-size: clamp(17px, 1.1vw, 21px);
  font-weight: 400;
  line-height: 1.48;
  letter-spacing: -0.018em;
  color: rgba(var(--black-rgb), 0.58);
}

.contact-page-form-column {
  width: 100%;
}

.contact-page .contact-page-form {
  width: 100%;
  max-width: none;
  margin: 0;
  gap: 20px;
}

.contact-page .contact-page-form .contact-field {
  height: 62px;
  border-color: rgba(var(--black-rgb), 0.22);
  opacity: 1;
  filter: none;
  transform: none;
  transition:
    border-color 0.26s ease,
    background-color 0.26s ease;
}

.contact-page .contact-page-form .contact-field--message {
  height: 190px;
}

.contact-page .contact-page-form .contact-field input,
.contact-page .contact-page-form .contact-field textarea {
  padding: 15px 18px;
  font-size: 17px;
}

.contact-page .contact-page-form .contact-submit {
  height: 32px;
  margin-top: 18px;
  padding: 0 8px 15px 0;
  opacity: 1;
  filter: none;
  transform: none;
  transition: color 0.28s ease;
}

.contact-page-email-note {
  width: 100%;
  margin: clamp(72px, 7vw, 112px) 0 0;
  padding-top: 30px;
  border-top: 1px solid rgba(var(--black-rgb), 0.18);
  font-size: 16px;
  line-height: 1.5;
  letter-spacing: -0.018em;
  color: rgba(var(--black-rgb), 0.58);
}

.contact-page-email-note a {
  color: var(--panel-ink);
  transition: opacity 0.25s ease;
}

.contact-page-email-note a:hover,
.contact-page-email-note a:focus-visible {
  opacity: 0.58;
  outline: none;
}

.faq-section {
  padding: 0 0 clamp(150px, 12vw, 230px);
}

.faq-inner {
  display: grid;
  grid-template-columns: minmax(260px, 0.72fr) minmax(620px, 1.28fr);
  column-gap: clamp(76px, 9vw, 174px);
  align-items: start;
  padding-top: clamp(92px, 7.5vw, 144px);
  border-top: 1px solid rgba(var(--black-rgb), 0.16);
}

.faq-heading p {
  margin: 0 0 24px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(var(--black-rgb), 0.48);
}

.faq-heading h2 {
  width: min(100%, 560px);
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(54px, 4.3vw, 82px);
  font-weight: 500;
  line-height: 0.98;
  letter-spacing: -0.052em;
  color: var(--panel-ink);
}

.faq-list {
  width: 100%;
  border-top: 1px solid rgba(var(--black-rgb), 0.22);
}

.faq-item {
  border-bottom: 1px solid rgba(var(--black-rgb), 0.22);
}

.faq-item h3 {
  margin: 0;
  font: inherit;
}

.faq-question {
  width: 100%;
  min-height: 92px;
  padding: 27px 0;
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) 32px;
  column-gap: 20px;
  align-items: center;
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--panel-ink);
  cursor: pointer;
  text-align: left;
}

.faq-question:focus-visible {
  outline: 1px solid rgba(var(--black-rgb), 0.72);
  outline-offset: 8px;
}

.faq-number {
  align-self: start;
  padding-top: 5px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.12em;
  color: rgba(var(--black-rgb), 0.42);
}

.faq-question-text {
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: clamp(20px, 1.45vw, 28px);
  font-weight: 500;
  line-height: 1.22;
  letter-spacing: -0.026em;
}

.faq-indicator {
  position: relative;
  width: 22px;
  height: 22px;
  justify-self: end;
}

.faq-indicator span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 1px;
  background: currentColor;
  transform: translate(-50%, -50%);
  transform-origin: center;
  transition: transform 0.48s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.35s ease;
}

.faq-indicator span:last-child {
  transform: translate(-50%, -50%) rotate(90deg);
}

.faq-item.is-open .faq-indicator span:last-child {
  opacity: 0;
  transform: translate(-50%, -50%) rotate(90deg) scaleX(0);
}

.faq-answer-wrap {
  display: grid;
  grid-template-rows: 0fr;
  visibility: hidden;
  transition:
    grid-template-rows 560ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 560ms;
}

.faq-answer-wrap > div {
  min-height: 0;
  overflow: hidden;
}

.faq-answer {
  width: min(100%, 670px);
  margin: 0;
  padding: 0 54px 0 78px;
  font-size: clamp(16px, 1.05vw, 19px);
  font-weight: 400;
  line-height: 1.58;
  letter-spacing: -0.016em;
  color: rgba(var(--black-rgb), 0.60);
  opacity: 0;
  transform: translateY(-8px);
  transition:
    opacity 360ms ease,
    transform 560ms cubic-bezier(0.22, 1, 0.36, 1),
    padding-bottom 560ms cubic-bezier(0.22, 1, 0.36, 1);
}

.faq-item.is-open .faq-answer-wrap {
  grid-template-rows: 1fr;
  visibility: visible;
  transition:
    grid-template-rows 560ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 0s;
}

.faq-item.is-open .faq-answer {
  padding-bottom: 38px;
  opacity: 1;
  transform: translateY(0);
  transition-delay: 80ms, 0ms, 0ms;
}

@media (max-width: 1180px) {
  .contact-page-inner,
  .faq-inner {
    width: calc(100% - 96px);
  }

  .contact-page-inner {
    grid-template-columns: minmax(330px, 0.88fr) minmax(470px, 1.12fr);
    column-gap: 72px;
  }

  .faq-inner {
    grid-template-columns: minmax(260px, 0.68fr) minmax(520px, 1.32fr);
    column-gap: 64px;
  }
}

@media (max-width: 900px) {
  .contact-page .contact-hero-placeholder {
    height: 82svh;
    min-height: 620px;
  }

  .contact-page-section {
    padding: 112px 32px 150px;
  }

  .contact-page-inner,
  .faq-inner {
    width: 100%;
  }

  .contact-page-inner,
  .faq-inner {
    grid-template-columns: 1fr;
  }

  .contact-page-inner {
    row-gap: 72px;
  }

  .contact-page-intro h1 {
    width: min(100%, 680px);
  }

  .faq-section {
    padding: 0 32px 160px;
  }

  .faq-inner {
    row-gap: 72px;
  }

  .faq-heading h2 {
    width: min(100%, 620px);
  }
}

@media (max-width: 640px) {
  .contact-page .contact-hero-placeholder {
    height: 78svh;
    min-height: 560px;
  }

  .contact-page-section {
    padding: 88px 22px 120px;
  }

  .contact-page-inner {
    row-gap: 54px;
  }

  .contact-page-intro h1 {
    font-size: clamp(46px, 14vw, 64px);
    line-height: 0.98;
  }

  .contact-page-intro p {
    margin-top: 24px;
    font-size: 16px;
  }

  .contact-page .contact-page-form {
    gap: 14px;
  }

  .contact-page .contact-page-form .contact-field {
    height: 54px;
  }

  .contact-page .contact-page-form .contact-field--message {
    height: 160px;
  }

  .contact-page-email-note {
    margin-top: 64px;
    padding-top: 26px;
    font-size: 15px;
  }

  .faq-section {
    padding: 0 22px 126px;
  }

  .faq-inner {
    padding-top: 78px;
    row-gap: 54px;
  }

  .faq-heading p {
    margin-bottom: 18px;
    font-size: 12px;
  }

  .faq-heading h2 {
    font-size: clamp(44px, 13vw, 60px);
  }

  .faq-question {
    min-height: 82px;
    padding: 23px 0;
    grid-template-columns: 34px minmax(0, 1fr) 26px;
    column-gap: 12px;
  }

  .faq-number {
    font-size: 10px;
  }

  .faq-question-text {
    font-size: 19px;
  }

  .faq-indicator {
    width: 18px;
    height: 18px;
  }

  .faq-indicator span {
    width: 17px;
  }

  .faq-answer {
    padding-left: 46px;
    padding-right: 22px;
    font-size: 15.5px;
    line-height: 1.56;
  }

  .faq-item.is-open .faq-answer {
    padding-bottom: 30px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .faq-answer-wrap,
  .faq-answer,
  .faq-indicator span {
    transition-duration: 0.001ms !important;
    transition-delay: 0ms !important;
  }
}

/* ============================================================
   INTERACTIONS V2 — CONTACT geometry + Trionn-like rollovers
   2026-08-25
   - CONTACT_POPUP aligned to the 522 × 1114 Figma frame at 1920 × 1170.
   - No cursor backdrop blur/lens.
   - Cursor morphs from a dot into a mouse-arrow silhouette on controls.
   - Button labels dissolve/rebuild with a very light per-letter blur.
   - Underlines exit to the right and re-enter from the left.
   - No orange rollover on these controls.
   ============================================================ */

/* CONTACT_POPUP: exact desktop reference geometry from Figma.
   15px top + 1114px panel + 41px bottom = 1170px reference screen. */
@media (min-width: 761px) {
  .contact-panel {
    top: 15px !important;
    right: 18px !important;
    bottom: 41px !important;
    width: min(522px, calc(100vw - 36px)) !important;
  }

  .contact-panel-inner {
    position: relative;
    padding: 67px 38px 42px 30px !important;
  }

  /* Figma: divider y=1005, text y=1048, panel bottom y=1114.
     This keeps the exact 43px divider-to-copy spacing and 42px bottom air. */
  .contact-panel-email-note {
    position: absolute !important;
    left: 30px !important;
    right: 38px !important;
    bottom: 42px !important;
    width: auto !important;
    max-width: none !important;
    min-height: 67px;
    margin: 0 !important;
    padding-top: 42px !important;
  }
}

/* On shorter desktop windows the panel remains scrollable; keep enough room
   so the absolute bottom note never collides with the form. */
@media (max-height: 800px) and (min-width: 761px) {
  .contact-panel-inner {
    min-height: 930px !important;
  }
}

/* Mobile keeps the note in normal flow so the entire form can scroll. */
@media (max-width: 760px) {
  .contact-panel-email-note {
    position: static !important;
    width: 100% !important;
    margin-top: 64px !important;
    padding-top: 28px !important;
  }
}

/* ------------------------------------------------------------
   Cursor: point -> mouse arrow. Absolutely no backdrop blur.
   ------------------------------------------------------------ */
.pointer-distortion {
  display: none !important;
  opacity: 0 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

@media (hover: hover) and (pointer: fine) {
  html.has-pointer-fx input,
  html.has-pointer-fx textarea,
  html.has-pointer-fx [contenteditable="true"] {
    cursor: text !important;
  }

  .pointer-cursor {
    color: #fff;
  }

  .pointer-cursor::before {
    width: 10px !important;
    height: 10px !important;
    border: 0 !important;
    border-radius: 50%;
    background: currentColor !important;
    /* Seven points so the polygon can genuinely interpolate into the arrow. */
    clip-path: polygon(
      50% 0%,
      85% 15%,
      100% 50%,
      85% 85%,
      50% 100%,
      15% 85%,
      0% 50%
    );
    transform: translate(-50%, -50%);
    transform-origin: 0 0;
    transition:
      width .30s cubic-bezier(.2,.72,.2,1),
      height .30s cubic-bezier(.2,.72,.2,1),
      border-radius .24s ease,
      clip-path .30s cubic-bezier(.2,.72,.2,1),
      transform .30s cubic-bezier(.2,.72,.2,1);
  }

  .pointer-cursor.is-interactive::before {
    width: 20px !important;
    height: 26px !important;
    border: 0 !important;
    border-radius: 1px;
    background: currentColor !important;
    clip-path: polygon(
      0% 0%,
      0% 82%,
      22% 61%,
      37% 100%,
      50% 94%,
      35% 57%,
      74% 57%
    );
    /* The arrow tip becomes the actual cursor hotspot. */
    transform: translate(0, 0);
  }

  .pointer-cursor.is-text-field {
    opacity: 0 !important;
  }

  .pointer-cursor.is-pressed::before {
    transform: translate(1px, 1px) scale(.92);
  }
}

/* ------------------------------------------------------------
   Shared per-letter rollover. Only the letters blur, never the background.
   ------------------------------------------------------------ */
.trionn-blur-label,
.button-blur-text,
.cta-text.trionn-blur-label,
.pill-label.trionn-blur-label {
  position: relative;
  display: inline-grid !important;
  height: 1em;
  overflow: visible !important;
  line-height: 1;
  white-space: nowrap;
}

.trionn-blur-label::before,
.trionn-blur-label::after,
.pill-label.trionn-blur-label::before,
.pill-label.trionn-blur-label::after,
.cta-text.trionn-blur-label::before,
.cta-text.trionn-blur-label::after {
  content: none !important;
}

.trionn-blur-label .blur-layer {
  grid-area: 1 / 1;
  display: inline-flex;
  white-space: nowrap;
  pointer-events: none;
}

.trionn-blur-label .char {
  display: inline-block;
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0);
  transition:
    opacity var(--dur, 520ms) ease,
    filter var(--dur, 520ms) var(--ease-out),
    transform var(--dur, 520ms) var(--ease-out);
  transition-delay: var(--rd, 0ms);
  will-change: opacity, filter, transform;
}

.trionn-blur-label .blur-layer-hover .char {
  opacity: 0;
  filter: blur(var(--blur-in, 3px));
  transform: translate3d(var(--in-x, 0), var(--in-y, .04em), 0);
}

/* Header pills + every explicitly marked CTA use the same organic rebuild. */
.pill:hover .trionn-blur-label .blur-layer-base .char,
.pill:focus-visible .trionn-blur-label .blur-layer-base .char,
.trionn-line-button:hover .trionn-blur-label .blur-layer-base .char,
.trionn-line-button:focus-visible .trionn-blur-label .blur-layer-base .char {
  opacity: 0;
  filter: blur(var(--blur-out, 3px));
  transform: translate3d(var(--out-x, 0), var(--out-y, -.04em), 0);
  transition-delay: var(--out, 0ms);
}

.pill:hover .trionn-blur-label .blur-layer-hover .char,
.pill:focus-visible .trionn-blur-label .blur-layer-hover .char,
.trionn-line-button:hover .trionn-blur-label .blur-layer-hover .char,
.trionn-line-button:focus-visible .trionn-blur-label .blur-layer-hover .char {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0);
  transition-delay: var(--in, 150ms);
}

/* Do not let the old pill vertical-roll pseudo text interfere. */
.pill-label.trionn-blur-label {
  height: 1em !important;
}

/* ------------------------------------------------------------
   Underline sweep. Full line equals the visible control width, therefore it
   includes the arrow when the arrow is adjacent and spans to it when justified.
   ------------------------------------------------------------ */
@keyframes langeUnderlineSweep {
  0% {
    transform: scaleX(1);
    transform-origin: right center;
  }
  44% {
    transform: scaleX(0);
    transform-origin: right center;
  }
  45% {
    transform: scaleX(0);
    transform-origin: left center;
  }
  100% {
    transform: scaleX(1);
    transform-origin: left center;
  }
}

.footer-cta::after,
.work-all-link::after,
.intro-about-link::after {
  left: 0 !important;
  right: 0 !important;
  width: auto !important;
  transform: scaleX(1) !important;
  transform-origin: left center !important;
  opacity: .78 !important;
  transition: none !important;
}

.contact-submit {
  border-bottom: 0 !important;
}

.contact-submit::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: currentColor;
  opacity: .72;
  transform: scaleX(1);
  transform-origin: left center;
}

.footer-cta:hover::after,
.footer-cta:focus-visible::after,
.work-all-link:hover::after,
.work-all-link:focus-visible::after,
.intro-about-link:hover::after,
.intro-about-link:focus-visible::after,
.contact-submit:hover::after,
.contact-submit:focus-visible::after {
  animation: langeUnderlineSweep .62s cubic-bezier(.22,.72,.18,1) both !important;
}

/* Hero uses a real child line rather than ::after. */
.cta-label .cta-underline {
  left: 0 !important;
  top: calc(100% + 1.05rem) !important;
  width: 100% !important;
  transform: scaleX(1) !important;
  transform-origin: left center !important;
  opacity: .86 !important;
}

.hero-cta:hover .cta-label .cta-underline,
.hero-cta:focus-visible .cta-label .cta-underline,
.hero.is-cta-hover .hero-cta .cta-label .cta-underline {
  width: 100% !important;
  animation: langeUnderlineSweep .62s cubic-bezier(.22,.72,.18,1) both;
}

/* Keep arrow spacing without changing the designed overall width. */
.footer-cta .button-arrow {
  margin-left: .6em;
}

.work-all-link .button-blur-text {
  margin-left: 0 !important;
  transform: none !important;
}

.work-all-link .button-arrow {
  margin-left: 34px !important;
}

/* ------------------------------------------------------------
   No orange hover state on these controls. The interaction comes from motion,
   not a color change.
   ------------------------------------------------------------ */
.hero-cta:hover,
.hero-cta:focus-visible,
.hero.is-cta-hover .hero-cta {
  color: rgba(var(--ink-rgb), .86) !important;
  filter: none !important;
}

.intro-about-link:hover,
.intro-about-link:focus-visible {
  color: rgba(var(--ink-rgb), .86) !important;
  filter: none !important;
}

.footer-cta:hover,
.footer-cta:focus-visible {
  color: #faf8f2 !important;
}

.contact-submit:hover,
.contact-submit:focus-visible {
  color: var(--panel-ink) !important;
  border-color: transparent !important;
}

.menu-link:hover,
.menu-link:focus-visible,
.meta-row a:hover,
.meta-row a:focus-visible,
.social-links a:hover,
.social-links a:focus-visible {
  color: var(--panel-ink) !important;
}

.footer-business-links a:hover,
.footer-business-links a:focus-visible,
.footer-social-links a:hover,
.footer-social-links a:focus-visible {
  color: rgba(250, 248, 242, .80) !important;
}

/* The contact / menu pills keep their existing background treatment but never
   switch to orange. */
.contact-pill:hover,
.contact-pill:focus-visible,
.menu-pill:hover,
.menu-pill:focus-visible {
  filter: none !important;
}

/* ============================================================
   BUTTON AUDIT V3 — FINAL CASCADE
   2026-08-25
   Purpose: normalise every control after the V2 rollover pass.
   - one stable single-line label box (no giant spacing / vanishing labels)
   - light per-letter blur only on hover/focus
   - every underlined CTA owns one full-width line
   - line exits into the right edge, then rebuilds from the left
   - no orange rollover
   ============================================================ */

/* ---------- Stable label geometry ----------
   The base layer remains in normal flow so the control always keeps its real
   width/height. The hover layer is the only absolute duplicate. */
.trionn-blur-label,
.button-blur-text.trionn-blur-label,
.cta-text.trionn-blur-label,
.pill-label.trionn-blur-label {
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  width: auto !important;
  height: auto !important;
  min-height: 1em !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  vertical-align: baseline;
}

.trionn-blur-label .blur-layer {
  display: inline-flex !important;
  align-items: center !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  pointer-events: none !important;
  transform: none;
}

.trionn-blur-label .blur-layer-base {
  position: relative !important;
  inset: auto !important;
}

.trionn-blur-label .blur-layer-hover {
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  right: auto !important;
  bottom: auto !important;
}

.trionn-blur-label .char {
  display: inline-block !important;
  flex: 0 0 auto;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  vertical-align: baseline;
}

/* The legacy Work rule targeted every descendant span, which also caught each
   generated letter. Neutralise it completely; only the direct arrow keeps the
   designed gap. */
.work-all-link .trionn-blur-label,
.work-all-link .trionn-blur-label .blur-layer,
.work-all-link .trionn-blur-label .char {
  margin-left: 0 !important;
}

.work-all-link:hover .trionn-blur-label,
.work-all-link:focus-visible .trionn-blur-label,
.work-all-link:hover .trionn-blur-label .blur-layer,
.work-all-link:focus-visible .trionn-blur-label .blur-layer {
  transform: none !important;
}

.work-all-link > .button-arrow {
  display: inline-block;
  margin-left: 34px !important;
  transition: transform .32s var(--ease-out) !important;
}

/* The old Contact submit selector `span:last-child` also matched generated
   blur layers / final letters. Keep movement exclusive to the direct arrow. */
.contact-submit .trionn-blur-label .blur-layer {
  transform: none !important;
}

.contact-submit > .button-arrow {
  transition: transform .34s var(--ease-out) !important;
}

.contact-submit:hover > .button-arrow,
.contact-submit:focus-visible > .button-arrow {
  transform: translateX(5px) !important;
}

/* Project-card CTA is now built from the same stable label + arrow pattern. */
.project-link {
  gap: 18px;
  min-width: 0 !important;
  width: max-content;
  justify-content: flex-start !important;
}

.project-link > .button-arrow {
  display: inline-block;
  flex: 0 0 auto;
  transition: transform .32s var(--ease-out);
}

.project-card:hover .project-link > .button-arrow,
.project-card:focus-visible .project-link > .button-arrow {
  transform: translateX(5px);
}

/* ---------- Letter rollover audit ---------- */
.trionn-blur-label .char {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0,0,0);
  transition-property: opacity, filter, transform;
  transition-duration: var(--dur, 500ms);
  transition-timing-function: ease, var(--ease-out), var(--ease-out);
  transition-delay: var(--rd, 0ms);
}

.trionn-blur-label .blur-layer-hover .char {
  opacity: 0;
  filter: blur(var(--blur-in, 3px));
  transform: translate3d(var(--in-x,0), var(--in-y,.04em), 0);
}

.pill:hover .trionn-blur-label .blur-layer-base .char,
.pill:focus-visible .trionn-blur-label .blur-layer-base .char,
.trionn-line-button:hover .trionn-blur-label .blur-layer-base .char,
.trionn-line-button:focus-visible .trionn-blur-label .blur-layer-base .char,
.project-card:hover .project-link .trionn-blur-label .blur-layer-base .char,
.project-card:focus-visible .project-link .trionn-blur-label .blur-layer-base .char {
  opacity: 0;
  filter: blur(var(--blur-out, 3px));
  transform: translate3d(var(--out-x,0), var(--out-y,-.04em), 0);
  transition-delay: var(--out,0ms);
}

.pill:hover .trionn-blur-label .blur-layer-hover .char,
.pill:focus-visible .trionn-blur-label .blur-layer-hover .char,
.trionn-line-button:hover .trionn-blur-label .blur-layer-hover .char,
.trionn-line-button:focus-visible .trionn-blur-label .blur-layer-hover .char,
.project-card:hover .project-link .trionn-blur-label .blur-layer-hover .char,
.project-card:focus-visible .project-link .trionn-blur-label .blur-layer-hover .char {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0,0,0);
  transition-delay: var(--in,140ms);
}

/* Keep the duplicated layers themselves fixed. Only individual letters move. */
.pill:hover .trionn-blur-label .blur-layer,
.pill:focus-visible .trionn-blur-label .blur-layer,
.trionn-line-button:hover .trionn-blur-label .blur-layer,
.trionn-line-button:focus-visible .trionn-blur-label .blur-layer,
.project-card:hover .project-link .trionn-blur-label .blur-layer,
.project-card:focus-visible .project-link .trionn-blur-label .blur-layer {
  transform: none !important;
}

/* ---------- One underline system for ALL underlined controls ---------- */
@keyframes langeUnderlineSweepV3 {
  0%   { transform: scaleX(1); transform-origin: right center; }
  43%  { transform: scaleX(0); transform-origin: right center; }
  44%  { transform: scaleX(0); transform-origin: left center; }
  100% { transform: scaleX(1); transform-origin: left center; }
}

/* The legacy Hero child underline is retired so there can never be two lines. */
.hero-cta .cta-underline {
  display: none !important;
}

.trionn-line-button {
  position: relative !important;
}

.trionn-line-button::after,
.project-link.trionn-line-button::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: auto !important;
  height: 1px !important;
  background: currentColor !important;
  opacity: .78 !important;
  transform: scaleX(1) !important;
  transform-origin: left center !important;
  transition: none !important;
  pointer-events: none;
}

.trionn-line-button:hover::after,
.trionn-line-button:focus-visible::after,
.project-card:hover .project-link.trionn-line-button::after,
.project-card:focus-visible .project-link.trionn-line-button::after {
  animation: langeUnderlineSweepV3 .64s cubic-bezier(.22,.72,.18,1) both !important;
}

/* Remove the older hero-line animation completely. */
.hero-cta:hover .cta-label .cta-underline,
.hero-cta:focus-visible .cta-label .cta-underline,
.hero.is-cta-hover .hero-cta .cta-label .cta-underline {
  animation: none !important;
}

/* The button width must equal text + icon. No inherited stretching on line CTAs. */
.hero-cta,
.intro-about-link,
.work-all-link,
.footer-cta,
.project-link {
  width: max-content;
  max-width: 100%;
}

/* Contact submit is intentionally full field width in the Figma popup; its line
   therefore spans the whole submit row including the far-right arrow. */
.contact-submit {
  width: 100% !important;
}

/* ---------- No orange rollover ---------- */
.hero-cta:hover,
.hero-cta:focus-visible,
.hero.is-cta-hover .hero-cta,
.intro-about-link:hover,
.intro-about-link:focus-visible,
.footer-cta:hover,
.footer-cta:focus-visible {
  color: inherit !important;
  filter: none !important;
}

.work-all-link:hover,
.work-all-link:focus-visible,
.project-card:hover .project-link,
.project-card:focus-visible .project-link {
  color: rgba(var(--black-rgb), .92) !important;
  filter: none !important;
}

.contact-submit:hover,
.contact-submit:focus-visible {
  color: var(--panel-ink) !important;
  border-color: transparent !important;
  filter: none !important;
}

/* Header pills retain their monochrome fill/border behaviour only. */
.contact-pill:hover,
.contact-pill:focus-visible,
.menu-pill:hover,
.menu-pill:focus-visible {
  filter: none !important;
}

/* Close button has no text treatment and remains a clean X. */
.contact-panel-close,
.contact-panel-close:hover,
.contact-panel-close:focus-visible {
  filter: none !important;
}

/* Reduced motion: labels stay on the base layer and lines stay complete. */
@media (prefers-reduced-motion: reduce) {
  .trionn-blur-label .blur-layer-base .char { opacity: 1 !important; filter: none !important; transform: none !important; }
  .trionn-blur-label .blur-layer-hover .char { opacity: 0 !important; }
  .trionn-line-button::after,
  .project-link.trionn-line-button::after { animation: none !important; transform: scaleX(1) !important; }
}

/* ============================================================
   BUTTON AUDIT V4 — HARD FIX
   2026-08-25
   Fixes discovered after browser review:
   1) an older 3-class rule hid HERO CTA blur layers with display:none!important;
   2) V3 kept transform:scaleX(1)!important on CTA pseudo-lines, which prevented
      keyframe transforms from ever animating.
   V4 uses clip-path for the underline sweep so legacy transform rules cannot
   cancel it, and explicitly restores the HERO text layers.
   ============================================================ */

/* --- HERO CTA: restore generated label layers above legacy display:none!important --- */
.hero-cta .cta-text.trionn-blur-label {
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  width: auto !important;
  height: auto !important;
  min-height: 1em !important;
  overflow: visible !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}

.hero-cta .cta-text.trionn-blur-label .blur-layer {
  display: inline-flex !important;
  align-items: center !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}

.hero-cta .cta-text.trionn-blur-label .blur-layer-base {
  position: relative !important;
  inset: auto !important;
}

.hero-cta .cta-text.trionn-blur-label .blur-layer-hover {
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  right: auto !important;
  bottom: auto !important;
}

/* --- All underlined CTA geometry: line spans exactly the clickable content --- */
.hero-cta.trionn-line-button,
.intro-about-link.trionn-line-button,
.work-all-link.trionn-line-button,
.footer-cta.trionn-line-button,
.project-link.trionn-line-button {
  position: relative !important;
  width: max-content !important;
  max-width: 100% !important;
}

.contact-submit.trionn-line-button {
  position: relative !important;
  width: 100% !important;
}

/* Retire every legacy child underline. V4 owns the only visible line. */
.hero-cta .cta-underline {
  display: none !important;
}

@keyframes langeUnderlineClipV4 {
  0% {
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
  /* left edge travels to the right: the line disappears into its right edge */
  44% {
    clip-path: inset(0 0 0 100%);
    -webkit-clip-path: inset(0 0 0 100%);
  }
  /* invisible hand-off: restart from the left edge */
  45% {
    clip-path: inset(0 100% 0 0);
    -webkit-clip-path: inset(0 100% 0 0);
  }
  /* right edge travels right: the line rebuilds from the left */
  100% {
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
}

/* One and only one line for every CTA with an underline. */
.hero-cta.trionn-line-button::after,
.intro-about-link.trionn-line-button::after,
.work-all-link.trionn-line-button::after,
.footer-cta.trionn-line-button::after,
.project-link.trionn-line-button::after,
.contact-submit.trionn-line-button::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: auto !important;
  height: 1px !important;
  background: currentColor !important;
  opacity: .82 !important;
  transform: none !important;
  transform-origin: initial !important;
  clip-path: inset(0 0 0 0);
  -webkit-clip-path: inset(0 0 0 0);
  transition: none !important;
  animation: none !important;
  pointer-events: none !important;
}

/* Explicitly trigger the sweep on the real rollover target of each control. */
.hero-cta.trionn-line-button:hover::after,
.hero-cta.trionn-line-button:focus-visible::after,
.intro-about-link.trionn-line-button:hover::after,
.intro-about-link.trionn-line-button:focus-visible::after,
.work-all-link.trionn-line-button:hover::after,
.work-all-link.trionn-line-button:focus-visible::after,
.footer-cta.trionn-line-button:hover::after,
.footer-cta.trionn-line-button:focus-visible::after,
.contact-submit.trionn-line-button:hover::after,
.contact-submit.trionn-line-button:focus-visible::after,
.project-link.trionn-line-button:hover::after,
.project-link.trionn-line-button:focus-visible::after,
.project-card:hover .project-link.trionn-line-button::after,
.project-card:focus-visible .project-link.trionn-line-button::after {
  animation: langeUnderlineClipV4 .68s cubic-bezier(.22,.72,.18,1) both !important;
}

/* Keep the letter effect restrained and monochrome on every CTA. */
.hero-cta.trionn-line-button:hover,
.hero-cta.trionn-line-button:focus-visible,
.intro-about-link.trionn-line-button:hover,
.intro-about-link.trionn-line-button:focus-visible,
.footer-cta.trionn-line-button:hover,
.footer-cta.trionn-line-button:focus-visible,
.contact-submit.trionn-line-button:hover,
.contact-submit.trionn-line-button:focus-visible {
  filter: none !important;
}

/* Ensure the generated letters never inherit old descendant spacing rules. */
.trionn-line-button .trionn-blur-label,
.trionn-line-button .trionn-blur-label .blur-layer,
.trionn-line-button .trionn-blur-label .char {
  letter-spacing: inherit;
  line-height: 1 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

@media (prefers-reduced-motion: reduce) {
  .hero-cta.trionn-line-button::after,
  .intro-about-link.trionn-line-button::after,
  .work-all-link.trionn-line-button::after,
  .footer-cta.trionn-line-button::after,
  .project-link.trionn-line-button::after,
  .contact-submit.trionn-line-button::after {
    animation: none !important;
    clip-path: inset(0 0 0 0) !important;
    -webkit-clip-path: inset(0 0 0 0) !important;
  }
}

/* ============================================================
   CONTACT PAGE — FIGMA SOURCE OF TRUTH
   FRAME_CONTACT 17:1591 · FRAME_FAQ 17:1629 · TXT_CLIC_FAQ 31:468
   These route-only declarations intentionally come after the shared
   interaction layers so the Home menu, cursor and CTA motion stay untouched.
   ============================================================ */
.contact-page {
  --contact-ink: #faf8f2;
  --contact-deep: #14141d;
  --faq-ink: #131224;
  --faq-paper: #f7f7f7;
  background: var(--contact-deep);
}

.contact-page-section {
  min-height: 1170px;
  padding: 253px 24px 114px;
  background: var(--contact-deep);
  color: var(--contact-ink);
}

.contact-page-inner {
  width: 1005px;
  max-width: 100%;
  margin: 0 auto;
  display: block;
}

.contact-page-intro {
  width: 850px;
  max-width: 100%;
  margin: 0 auto;
  padding: 0;
  text-align: center;
}

.contact-page-intro .contact-page-kicker {
  width: 100%;
  margin: 0;
  color: rgba(250, 248, 242, .70);
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 22px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.contact-page-intro h1 {
  width: 100%;
  margin: 53px 0 0;
  color: var(--contact-ink);
  font-family: 'PP Eiko', Georgia, serif;
  font-size: 82px;
  font-weight: 500;
  line-height: 96px;
  letter-spacing: 0;
  white-space: nowrap;
}

.contact-page-intro .contact-page-subtitle {
  width: 100%;
  margin: 7px 0 0;
  color: rgba(250, 248, 242, .80);
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 27px;
  letter-spacing: 0;
}

.contact-page-form-column {
  width: 100%;
}

.contact-page .contact-page-form {
  width: 100%;
  max-width: none;
  margin: 54px 0 0;
  display: block;
}

.contact-page-form-grid {
  width: 100%;
  height: 216px;
  display: grid;
  grid-template-columns: 472.5px 504.5px;
  column-gap: 28px;
}

.contact-page-form-stack {
  display: grid;
  grid-template-rows: 57px 56px 57px;
  row-gap: 23px;
}

.contact-page .contact-page-form .contact-field {
  height: 100%;
  border: 1px solid rgba(250, 248, 242, .20);
  border-radius: 5px;
  background: var(--contact-deep);
  opacity: 1;
  filter: none;
  transform: none;
  transition: border-color .26s ease, background-color .26s ease;
}

.contact-page .contact-page-form .contact-field--message {
  height: 216px;
}

.contact-page .contact-page-form .contact-field:focus-within {
  border-color: rgba(250, 248, 242, .72);
  background: rgba(250, 248, 242, .025);
}

.contact-page .contact-page-form .contact-field input,
.contact-page .contact-page-form .contact-field textarea {
  padding: 0 16px;
  color: var(--contact-ink);
  caret-color: var(--contact-ink);
  font-size: 18px;
  font-weight: 500;
  line-height: 24px;
}

.contact-page .contact-page-form .contact-field textarea {
  padding-top: 12px;
  padding-bottom: 12px;
}

.contact-page .contact-page-form .contact-field input::placeholder,
.contact-page .contact-page-form .contact-field textarea::placeholder {
  color: rgba(250, 248, 242, .50);
}

.contact-page .contact-page-form .contact-field textarea::placeholder {
  color: rgba(250, 248, 242, .40);
}

.contact-page .contact-page-form .contact-field input:-webkit-autofill,
.contact-page .contact-page-form .contact-field input:-webkit-autofill:hover,
.contact-page .contact-page-form .contact-field input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--contact-ink);
  box-shadow: 0 0 0 1000px var(--contact-deep) inset;
}

.contact-page .contact-submit.trionn-line-button {
  width: 271px !important;
  height: 27px;
  margin: 60px auto 0;
  padding: 0 0 13px;
  color: rgba(250, 248, 242, .70) !important;
  opacity: 1;
  filter: none !important;
  transform: none;
}

.contact-page .contact-submit.trionn-line-button::after {
  background: var(--contact-ink) !important;
  opacity: .70 !important;
}

.contact-page-email-note {
  width: 980px;
  max-width: calc(100% + 14px);
  min-height: 67px;
  margin: 174px 0 0 -14px;
  padding-top: 42px;
  border-top: 1px solid rgba(250, 248, 242, .072);
  color: rgba(250, 248, 242, .40);
  font-size: 18px;
  font-weight: 500;
  line-height: 24px;
  letter-spacing: 0;
}

.contact-page-email-note a {
  color: inherit;
}

.contact-page-email-note a:hover,
.contact-page-email-note a:focus-visible {
  color: var(--contact-ink);
  opacity: 1;
}

.faq-section {
  position: relative;
  min-height: 1170px;
  padding: 216px 0 110px;
  overflow: hidden;
  background: var(--faq-paper);
  color: var(--faq-ink);
}

.faq-ribbon {
  position: absolute;
  z-index: 0;
  left: 0;
  top: 570px;
  width: 791px;
  height: 609px;
  object-fit: contain;
  filter: brightness(0) saturate(100%);
  opacity: .60;
  pointer-events: none;
}

.faq-inner {
  position: relative;
  z-index: 1;
  width: 1569px;
  max-width: calc(100% - 96px);
  margin: 0 auto;
  padding: 0;
  display: grid;
  grid-template-columns: 390px 700px;
  column-gap: 376.5px;
  align-items: start;
  border: 0;
}

.faq-heading h2 {
  width: 390px;
  max-width: 100%;
  margin: 0;
  color: var(--faq-ink);
  font-family: 'PP Eiko', Georgia, serif;
  font-size: 82px;
  font-weight: 500;
  line-height: 96px;
  letter-spacing: 0;
}

.faq-heading p {
  width: 390px;
  max-width: 100%;
  margin: 7px 0 0;
  color: rgba(19, 18, 36, .80);
  font-size: 20px;
  font-weight: 500;
  line-height: 27px;
  letter-spacing: 0;
  text-transform: none;
}

.faq-list {
  width: 700px;
  max-width: 100%;
  border: 0;
}

.faq-item {
  margin: 0 0 40px;
  border-bottom: 1px solid rgba(19, 18, 36, .20);
}

.faq-item:last-child {
  margin-bottom: 0;
}

.faq-question {
  width: 100%;
  min-height: 0;
  padding: 0 0 20px;
  display: grid;
  grid-template-columns: minmax(0, 612px) 13px;
  column-gap: 75px;
  align-items: center;
  color: var(--faq-ink);
}

.faq-question:focus-visible {
  outline: 1px solid rgba(19, 18, 36, .72);
  outline-offset: 8px;
}

.faq-question-text {
  font-family: 'PP Eiko', Georgia, serif;
  font-size: 28px;
  font-weight: 500;
  line-height: 36px;
  letter-spacing: 0;
}

.faq-indicator {
  width: 13px;
  height: 14px;
  justify-self: end;
  color: rgba(19, 18, 36, .70);
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 13.1px;
  font-weight: 700;
  line-height: 13.12px;
  transform: rotate(0deg);
  transform-origin: center;
  transition: transform 560ms cubic-bezier(.22, 1, .36, 1);
}

.faq-item.is-open .faq-indicator {
  transform: rotate(90deg);
}

.faq-answer-wrap {
  display: grid;
  grid-template-rows: 0fr;
  visibility: hidden;
  transition:
    grid-template-rows 560ms cubic-bezier(.22, 1, .36, 1),
    visibility 0s linear 560ms;
}

.faq-answer-wrap > div {
  min-height: 0;
  overflow: hidden;
}

.faq-answer {
  width: 100%;
  margin: 0;
  padding: 0 0 20px;
  color: rgba(19, 18, 36, .80);
  font-size: 20px;
  font-weight: 500;
  line-height: 27px;
  letter-spacing: 0;
  opacity: 0;
  transform: translateY(-7px);
  transition:
    opacity 360ms ease,
    transform 560ms cubic-bezier(.22, 1, .36, 1);
}

.faq-item.is-open .faq-answer-wrap {
  grid-template-rows: 1fr;
  visibility: visible;
  transition:
    grid-template-rows 560ms cubic-bezier(.22, 1, .36, 1),
    visibility 0s linear 0s;
}

.faq-item.is-open .faq-answer {
  padding-bottom: 20px;
  opacity: 1;
  transform: translateY(0);
  transition-delay: 80ms, 0ms;
}

@media (max-width: 1680px) and (min-width: 1181px) {
  .faq-inner {
    width: calc(100% - 112px);
    max-width: none;
    grid-template-columns: minmax(310px, .7fr) minmax(620px, 1.3fr);
    column-gap: clamp(88px, 11vw, 185px);
  }
}

@media (max-width: 1180px) and (min-width: 901px) {
  .contact-page-section {
    padding-left: 48px;
    padding-right: 48px;
  }

  .contact-page-form-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.0677fr);
  }

  .faq-inner {
    width: calc(100% - 96px);
    max-width: none;
    grid-template-columns: minmax(260px, .7fr) minmax(520px, 1.3fr);
    column-gap: 64px;
  }

  .faq-list {
    width: 100%;
  }

  .faq-question {
    grid-template-columns: minmax(0, 1fr) 13px;
    column-gap: 30px;
  }
}

@media (max-width: 900px) {
  .contact-page-section {
    min-height: 0;
    padding: 124px 32px 132px;
  }

  .contact-page-intro {
    text-align: left;
  }

  .contact-page-intro .contact-page-kicker {
    font-size: 14px;
    line-height: 20px;
  }

  .contact-page-intro h1 {
    margin-top: 36px;
    font-size: clamp(58px, 9vw, 76px);
    line-height: 1.08;
    white-space: normal;
  }

  .contact-page-intro .contact-page-subtitle {
    margin-top: 10px;
    font-size: 18px;
    line-height: 25px;
  }

  .contact-page .contact-page-form {
    margin-top: 60px;
  }

  .contact-page-form-grid {
    height: auto;
    grid-template-columns: 1fr;
    row-gap: 18px;
  }

  .contact-page-form-stack {
    grid-template-rows: repeat(3, 57px);
    row-gap: 18px;
  }

  .contact-page .contact-page-form .contact-field--message {
    height: 184px;
  }

  .contact-page .contact-submit.trionn-line-button {
    margin-top: 42px;
  }

  .contact-page-email-note {
    width: 100%;
    max-width: none;
    margin: 108px 0 0;
  }

  .faq-section {
    min-height: 0;
    padding: 124px 32px 148px;
  }

  .faq-ribbon {
    top: auto;
    bottom: -4vw;
    width: min(78vw, 650px);
    height: auto;
  }

  .faq-inner {
    width: 100%;
    max-width: none;
    grid-template-columns: 1fr;
    row-gap: 84px;
  }

  .faq-heading h2,
  .faq-heading p {
    width: 100%;
  }

  .faq-heading h2 {
    font-size: clamp(58px, 9vw, 76px);
    line-height: 1.08;
  }

  .faq-list {
    width: 100%;
  }

  .faq-question {
    grid-template-columns: minmax(0, 1fr) 13px;
    column-gap: 30px;
  }
}

@media (max-width: 640px) {
  .contact-page-section {
    padding: 96px 22px 110px;
  }

  .contact-page-intro .contact-page-kicker {
    font-size: 12px;
    line-height: 18px;
  }

  .contact-page-intro h1 {
    margin-top: 30px;
    font-size: clamp(46px, 14vw, 62px);
    line-height: 1.02;
  }

  .contact-page-intro .contact-page-subtitle {
    margin-top: 14px;
    font-size: 16px;
    line-height: 23px;
  }

  .contact-page .contact-page-form {
    margin-top: 48px;
  }

  .contact-page-form-grid,
  .contact-page-form-stack {
    row-gap: 14px;
  }

  .contact-page-form-stack {
    grid-template-rows: repeat(3, 54px);
  }

  .contact-page .contact-page-form .contact-field--message {
    height: 160px;
  }

  .contact-page .contact-page-form .contact-field input,
  .contact-page .contact-page-form .contact-field textarea {
    font-size: 16px;
  }

  .contact-page .contact-submit.trionn-line-button {
    width: 100% !important;
    margin-top: 34px;
  }

  .contact-page-email-note {
    margin-top: 86px;
    padding-top: 28px;
    font-size: 15px;
    line-height: 22px;
  }

  .faq-section {
    padding: 96px 22px 120px;
  }

  .faq-inner {
    row-gap: 62px;
  }

  .faq-heading h2 {
    font-size: clamp(46px, 14vw, 62px);
    line-height: 1.02;
  }

  .faq-heading p {
    margin-top: 12px;
    font-size: 16px;
    line-height: 23px;
  }

  .faq-item {
    margin-bottom: 32px;
  }

  .faq-question {
    padding-bottom: 18px;
    column-gap: 20px;
  }

  .faq-question-text {
    font-size: 23px;
    line-height: 30px;
  }

  .faq-answer {
    padding-bottom: 18px;
    font-size: 16px;
    line-height: 23px;
  }

  .faq-item.is-open .faq-answer {
    padding-bottom: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .faq-answer-wrap,
  .faq-answer,
  .faq-indicator {
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}

/* ============================================================
   CONTACT HERO — HERO_CONTACT (Figma 85:5)
   The outer section supplies the scroll distance; the inner frame stays
   pinned so the two supplied forms can approach one another without layout
   recalculation or changes to FRAME_CONTACT below.
   ============================================================ */
.contact-page .contact-hero {
  position: relative;
  width: 100%;
  height: 185svh;
  min-height: 1332px;
  overflow: visible;
  background:
    radial-gradient(circle at 58% 42%, rgba(28, 55, 66, 0.52), transparent 36%),
    linear-gradient(135deg, var(--black) 0%, #071919 42%, #071b21 100%);
  isolation: isolate;
}

.contact-hero-sticky {
  --contact-top-x: 0px;
  --contact-top-y: 0px;
  --contact-bottom-x: 0px;
  --contact-bottom-y: 0px;
  --contact-copy-opacity: 1;
  --contact-copy-y: 0px;
  position: sticky;
  top: 0;
  width: 100%;
  height: 100svh;
  min-height: 720px;
  overflow: hidden;
  background:
    radial-gradient(circle at 58% 42%, rgba(28, 55, 66, 0.52), transparent 36%),
    linear-gradient(135deg, var(--black) 0%, #071919 42%, #071b21 100%);
  isolation: isolate;
}

.contact-hero-sticky::before {
  content: '';
  position: absolute;
  z-index: 3;
  inset: 0;
  background:
    radial-gradient(circle at 56% 38%, rgba(31, 63, 72, 0.34), transparent 38%),
    linear-gradient(180deg, rgba(var(--black-rgb), 0.56) 0%, rgba(6, 18, 20, 0.18) 46%, rgba(var(--black-rgb), 0.64) 100%);
  pointer-events: none;
}

.contact-hero-blob {
  position: absolute;
  z-index: 2;
  left: 50%;
  aspect-ratio: 1;
  overflow: hidden;
  mix-blend-mode: screen;
  will-change: transform;
  pointer-events: none;
  isolation: isolate;
  -webkit-mask-image:
    linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%),
    linear-gradient(180deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image:
    linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%),
    linear-gradient(180deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  mask-composite: intersect;
}

.contact-hero-blob video {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
  transform: scale(1.035);
  transform-origin: center;
  user-select: none;
  -webkit-user-drag: none;
}

.contact-hero-blob--top {
  top: clamp(-330px, -27.1svh, -190px);
  width: clamp(430px, 35vw, 672px);
  transform: translate3d(calc(-50% + var(--contact-top-x)), var(--contact-top-y), 0) rotate(180deg);
}

.contact-hero-blob--bottom {
  bottom: clamp(-365px, -29.9svh, -220px);
  width: clamp(450px, 36.667vw, 704px);
  transform: translate3d(calc(-50% + var(--contact-bottom-x)), var(--contact-bottom-y), 0) rotate(7deg) scaleY(-1);
}

.contact-hero-copy {
  position: absolute;
  z-index: 4;
  left: 50%;
  top: 50%;
  width: min(90vw, 1300px);
  color: #faf8f2;
  text-align: center;
  opacity: var(--contact-copy-opacity);
  transform: translate3d(-50%, calc(-50% + var(--contact-copy-y)), 0);
  will-change: transform, opacity;
  pointer-events: none;
}

.contact-hero-copy h1 {
  margin: 0;
  font-family: 'PP Eiko', Georgia, serif;
  font-size: clamp(64px, 5vw, 96px);
  font-weight: 500;
  line-height: 1.0208;
  letter-spacing: 0;
}

.contact-hero-copy h1 span {
  display: block;
  white-space: nowrap;
}

.contact-hero-copy p {
  margin: clamp(22px, 2.22svh, 26px) 0 0;
  color: rgba(250, 248, 242, .70);
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: normal;
  letter-spacing: 0;
  text-transform: uppercase;
}

.contact-hero-overlay {
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: .35;
  mix-blend-mode: plus-lighter;
  transform: translateX(-50%);
  pointer-events: none;
  user-select: none;
}

/* The Contact handoff reuses the site's six-band shutter component and its
   existing responsive behavior; only its placement over this sticky Hero is
   scoped here. */
.contact-hero-transition {
  --contact-band-0: 0%;
  --contact-band-1: 0%;
  --contact-band-2: 0%;
  --contact-band-3: 0%;
  --contact-band-4: 0%;
  --contact-band-5: 0%;
  position: absolute;
  z-index: 12;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  transition: none;
  -webkit-mask-image:
    linear-gradient(to top, #000 0, #000 var(--contact-band-0), transparent calc(var(--contact-band-0) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-1), transparent calc(var(--contact-band-1) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-2), transparent calc(var(--contact-band-2) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-3), transparent calc(var(--contact-band-3) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-4), transparent calc(var(--contact-band-4) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-5), transparent calc(var(--contact-band-5) + .01%));
  mask-image:
    linear-gradient(to top, #000 0, #000 var(--contact-band-0), transparent calc(var(--contact-band-0) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-1), transparent calc(var(--contact-band-1) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-2), transparent calc(var(--contact-band-2) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-3), transparent calc(var(--contact-band-3) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-4), transparent calc(var(--contact-band-4) + .01%)),
    linear-gradient(to top, #000 0, #000 var(--contact-band-5), transparent calc(var(--contact-band-5) + .01%));
  -webkit-mask-size: 100% calc(100% / 6 + 1px);
  mask-size: 100% calc(100% / 6 + 1px);
  -webkit-mask-position: 0 0%, 0 20%, 0 40%, 0 60%, 0 80%, 0 100%;
  mask-position: 0 0%, 0 20%, 0 40%, 0 60%, 0 80%, 0 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

.contact-hero-reveal-section {
  position: absolute !important;
  z-index: 1 !important;
  inset: 0 !important;
  width: 100% !important;
  margin: 0 !important;
  pointer-events: none !important;
}

.contact-page .contact-hero {
  z-index: 2;
}

.contact-page .contact-hero.is-contact-handoff-complete {
  z-index: 0;
}

@media (min-width: 901px) and (prefers-reduced-motion: no-preference) {
  .contact-page main {
    z-index: 1;
    margin-top: -100svh;
  }
}

@media (max-width: 900px), (prefers-reduced-motion: reduce) {
  .contact-hero-transition {
    display: none;
  }
}

/* Two CTA instances share one stable two-layer vertical roll. The clipping is
   confined to the label, so the underline, arrow and button geometry stay put. */
.clean-roll-cta .trionn-blur-label {
  display: inline-grid !important;
  height: 1em !important;
  min-height: 1em !important;
  overflow: hidden !important;
  line-height: 1 !important;
}

.clean-roll-cta .trionn-blur-label .blur-layer {
  grid-area: 1 / 1 !important;
  position: relative !important;
  inset: auto !important;
  opacity: 1 !important;
  filter: none !important;
  transition: transform .54s cubic-bezier(.22, .72, .18, 1) !important;
}

.clean-roll-cta .trionn-blur-label .blur-layer-base {
  transform: translate3d(0, 0, 0) !important;
}

.clean-roll-cta .trionn-blur-label .blur-layer-hover {
  position: absolute !important;
  inset: 0 auto auto 0 !important;
  transform: translate3d(0, 115%, 0) !important;
}

.clean-roll-cta .trionn-blur-label .char,
.clean-roll-cta .trionn-blur-label .blur-layer-hover .char {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  transition: none !important;
}

.clean-roll-cta:hover .trionn-blur-label .blur-layer-base,
.clean-roll-cta:focus-visible .trionn-blur-label .blur-layer-base {
  transform: translate3d(0, -115%, 0) !important;
}

.clean-roll-cta:hover .trionn-blur-label .blur-layer-hover,
.clean-roll-cta:focus-visible .trionn-blur-label .blur-layer-hover {
  transform: translate3d(0, 0, 0) !important;
}

.clean-roll-cta > .button-arrow,
.clean-roll-cta:hover > .button-arrow,
.clean-roll-cta:focus-visible > .button-arrow {
  transform: none !important;
}

.clean-roll-cta::after,
.clean-roll-cta:hover::after,
.clean-roll-cta:focus-visible::after {
  animation: none !important;
  transform: none !important;
  clip-path: inset(0 0 0 0) !important;
}

@media (prefers-reduced-motion: reduce) {
  .clean-roll-cta .trionn-blur-label .blur-layer-base {
    transform: none !important;
  }

  .clean-roll-cta .trionn-blur-label .blur-layer-hover {
    display: none !important;
  }
}

.contact-hero .site-header,
.contact-hero .menu-panel {
  z-index: 20;
}

@media (max-width: 900px) {
  .contact-page .contact-hero {
    height: 170svh;
    min-height: 1054px;
  }

  .contact-hero-sticky {
    min-height: 620px;
  }

  .contact-hero-blob--top {
    top: clamp(-300px, -29svh, -190px);
    width: clamp(430px, 61vw, 580px);
  }

  .contact-hero-blob--bottom {
    bottom: clamp(-330px, -32svh, -205px);
    width: clamp(450px, 64vw, 610px);
  }

  .contact-hero-copy {
    width: calc(100% - 64px);
  }

  .contact-hero-copy h1 {
    font-size: clamp(54px, 9vw, 76px);
    line-height: 1.025;
  }

  .contact-hero-copy p {
    margin-top: 22px;
    font-size: 14px;
  }
}

@media (max-width: 640px) {
  .contact-page .contact-hero {
    height: 155svh;
    min-height: 868px;
  }

  .contact-hero-sticky {
    height: 100svh;
    min-height: 560px;
  }

  .contact-hero-blob--top {
    top: -41vw;
    width: 108vw;
  }

  .contact-hero-blob--bottom {
    bottom: -45vw;
    width: 114vw;
  }

  .contact-hero-copy {
    top: 49%;
    width: calc(100% - 36px);
  }

  .contact-hero-copy h1 {
    font-size: clamp(42px, 12.7vw, 58px);
    line-height: 1.01;
    letter-spacing: -.015em;
  }

  .contact-hero-copy h1 span {
    white-space: normal;
  }

  .contact-hero-copy p {
    width: min(100%, 310px);
    margin: 20px auto 0;
    font-size: 12px;
    line-height: 1.4;
  }

  .contact-hero-overlay {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .contact-page .contact-hero {
    height: 100svh;
    min-height: 720px;
  }

  .contact-hero-sticky {
    position: relative;
  }

  .contact-hero-blob video {
    transform: scale(1.035);
  }

  .contact-hero-copy {
    opacity: 1;
    transform: translate3d(-50%, -50%, 0);
  }
}

/* Point de retour des pages projet : il tombe après la transition claire,
   exactement au début du rail de thumbnails. */
.project-return-anchor {
  position: absolute;
  top: min(118vh, 1120px);
  left: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}

@media (max-width: 900px), (prefers-reduced-motion: reduce) {
  .project-return-anchor {
    top: 0;
  }
}

/* ============================================================
   PROCESS SCROLL — partagé par À propos (sombre) et Services (clair).
   ============================================================ */
.process-scroll-section {
  --process-progress: 0;
  --process-intro-progress: 0;
  --process-intro-blur: 10px;
  --process-intro-y: 38px;
  --process-bg: #14141d;
  --process-ink: #faf8f2;
  --process-copy: rgba(250, 248, 242, 0.5);
  --process-meta: rgba(250, 248, 242, 0.7);
  --process-subtitle: rgba(250, 248, 242, 0.8);
  --process-line: rgba(250, 248, 242, 0.7);
  width: 100%;
  height: 235svh;
  min-height: 1880px;
  padding: 0 !important;
  overflow: clip;
  background: var(--process-bg) !important;
  color: var(--process-ink);
}

.process-scroll-section--light {
  --process-bg: #f7f7f7;
  --process-ink: #14141d;
  --process-copy: rgba(20, 20, 29, 0.5);
  --process-meta: rgba(20, 20, 29, 0.7);
  --process-subtitle: rgba(20, 20, 29, 0.8);
  --process-line: rgba(20, 20, 29, 0.7);
}

.process-scroll-sticky {
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  width: min(92.8125vw, 1782px);
  height: 100svh;
  min-height: 720px;
  margin: 0 auto;
  padding-top: clamp(142px, 19.1453svh, 224px);
  box-sizing: border-box;
}

.process-scroll-section .about-process-head {
  opacity: var(--process-intro-progress);
  filter: blur(var(--process-intro-blur));
  transform: translate3d(0, var(--process-intro-y), 0);
  will-change: opacity, filter, transform;
}

.process-scroll-section .about-process-head > p { color: var(--process-meta); }
.process-scroll-section .about-process-head h2 { color: var(--process-ink); }
.process-scroll-section .about-process-head > div > p { color: var(--process-subtitle); }

.process-scroll-section .about-process-grid {
  margin-top: clamp(74px, 10.2564svh, 120px);
}

.process-scroll-section .process-scroll-step {
  --step-progress: 0;
  --step-opacity: 0;
  --step-blur: 9px;
  --step-y: 52px;
  --step-line-progress: 0;
  position: relative;
  border-bottom: 0;
  opacity: var(--step-opacity);
  filter: blur(var(--step-blur));
  transform: translate3d(0, var(--step-y), 0);
  will-change: opacity, filter, transform;
}

.process-scroll-section .process-scroll-step::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: var(--process-line);
  opacity: 0.72;
  transform: scaleX(var(--step-line-progress));
  transform-origin: left center;
  will-change: transform;
}

.process-scroll-section .process-scroll-step .process-step-number,
.process-scroll-section .process-scroll-step h3,
.process-scroll-section .process-scroll-step > p:last-child {
  opacity: 1;
  filter: none;
  transform: none;
  transition: none;
}

.process-scroll-section .process-scroll-step .process-step-number { color: var(--process-meta); }
.process-scroll-section .process-scroll-step h3 { color: var(--process-ink); }
.process-scroll-section .process-scroll-step > p:last-child { color: var(--process-copy); }

@media (max-height: 820px) and (min-width: 901px) {
  .process-scroll-sticky { padding-top: 120px; }
  .process-scroll-section .about-process-grid { margin-top: 66px; }
}

@media (max-width: 900px) {
  .process-scroll-section {
    height: auto;
    min-height: 0;
    padding: 132px 32px 148px !important;
    overflow: visible;
  }

  .process-scroll-sticky {
    position: relative;
    top: auto;
    display: block;
    width: 100%;
    height: auto;
    min-height: 0;
    padding: 0;
  }

  .process-scroll-section .about-process-head {
    opacity: var(--process-intro-progress);
    filter: blur(var(--process-intro-blur));
    transform: translate3d(0, var(--process-intro-y), 0);
  }

  .process-scroll-section .process-scroll-step {
    opacity: var(--step-opacity);
    filter: blur(var(--step-blur));
    transform: translate3d(0, var(--step-y), 0);
  }
}

@media (max-width: 640px) {
  .process-scroll-section { padding: 104px 22px 122px !important; }
}

@media (prefers-reduced-motion: reduce) {
  .process-scroll-section {
    height: auto;
    min-height: 0;
    padding: clamp(104px, 10vw, 160px) 0 clamp(112px, 10vw, 160px) !important;
    overflow: visible;
  }

  .process-scroll-sticky {
    position: relative;
    top: auto;
    height: auto;
    min-height: 0;
    padding: 0;
  }

  .process-scroll-section .about-process-head,
  .process-scroll-section .process-scroll-step {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
  }

  .process-scroll-section .process-scroll-step { --step-line-progress: 1 !important; }
}

/* ============================================================
   V8 — GLOBAL CORRECTIONS (brief-only scope)
   ============================================================ */
:root {
  --hero-title-size: clamp(2.55rem, 4vw, 4rem);
  --hero-title-line-height: 1.08;
}

.hero-title,
.about-hero-intro,
.contact-hero-copy h1 {
  font-family: 'PP Eiko', 'Satoshi', sans-serif !important;
  font-size: var(--hero-title-size) !important;
  line-height: var(--hero-title-line-height) !important;
}

.trionn-line-button {
  font-family: 'Satoshi', -apple-system, BlinkMacSystemFont, sans-serif !important;
  font-size: 13px !important;
  text-transform: uppercase !important;
}

/* Stable two-layer vertical label roll. */
.clean-roll-cta .trionn-blur-label {
  position: relative !important;
  display: inline-grid !important;
  align-items: center !important;
  height: 1em !important;
  min-height: 1em !important;
  overflow: hidden !important;
  line-height: 1 !important;
}

.clean-roll-cta .trionn-blur-label .blur-layer {
  grid-area: 1 / 1 !important;
  display: inline-flex !important;
  position: relative !important;
  inset: auto !important;
  opacity: 1 !important;
  filter: none !important;
  transform: translate3d(0, 0, 0) !important;
  transition: transform .42s cubic-bezier(.22, .72, .18, 1) !important;
}

.clean-roll-cta .trionn-blur-label .blur-layer-hover {
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  transform: translate3d(0, 115%, 0) !important;
}

.clean-roll-cta .trionn-blur-label .char {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  transition: none !important;
}

.clean-roll-cta:hover .trionn-blur-label .blur-layer-base,
.clean-roll-cta:focus-visible .trionn-blur-label .blur-layer-base,
.project-card:hover .clean-roll-cta .trionn-blur-label .blur-layer-base,
.project-card:focus-visible .clean-roll-cta .trionn-blur-label .blur-layer-base {
  transform: translate3d(0, -115%, 0) !important;
}

.clean-roll-cta:hover .trionn-blur-label .blur-layer-hover,
.clean-roll-cta:focus-visible .trionn-blur-label .blur-layer-hover,
.project-card:hover .clean-roll-cta .trionn-blur-label .blur-layer-hover,
.project-card:focus-visible .clean-roll-cta .trionn-blur-label .blur-layer-hover {
  transform: translate3d(0, 0, 0) !important;
}

@media (pointer: fine) {
  .pointer-cursor { overflow: visible !important; }

  .pointer-cursor:not(.is-interactive)::before {
    border-radius: 50% !important;
    clip-path: circle(50%) !important;
    -webkit-clip-path: circle(50%) !important;
  }
}

/* Home: center the Ma Vision unit as a group without changing its inner alignment. */
@media (min-width: 901px) {
  .intro-scroll-copy {
    left: 50% !important;
    margin-inline: 0 !important;
    transform: translateX(-50%) !important;
  }
}

/* Home Work: final invitation and reversible hand-off to the real Services scene. */
.work-end-panel {
  flex: 0 0 min(68vw, 1040px);
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 28px;
  padding: clamp(48px, 6vw, 104px);
  text-align: center;
  color: var(--ink);
}

.work-end-panel h2 {
  max-width: 760px;
  margin: 0;
  font-family: 'PP Eiko', 'Satoshi', sans-serif;
  font-size: clamp(2.4rem, 4.35vw, 4.65rem);
  font-weight: 500;
  line-height: 1.04;
  letter-spacing: -.025em;
}

.work-end-cta {
  color: currentColor;
}

.work-services-slot {
  flex: 0 0 100vw;
  align-self: stretch;
  min-height: 100%;
  pointer-events: none;
}

@media (min-width: 901px) and (prefers-reduced-motion: no-preference) {
  html.services-enhanced .immersive-services.is-work-handoff {
    z-index: 120 !important;
    overflow: visible !important;
    background: transparent !important;
    pointer-events: none;
  }

  html.services-enhanced .immersive-services.is-work-handoff .immersive-services__sticky {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: auto !important;
    width: 100vw !important;
    background:
      radial-gradient(circle at 58% 42%, rgba(28, 55, 66, 0.52), transparent 36%),
      linear-gradient(135deg, var(--black) 0%, #071919 42%, #071b21 100%) !important;
    transform: translate3d(var(--work-services-x, 100vw), 0, 0) !important;
  }
}

/* Contact: a longer real-form reveal, with the direct email centered and white. */
@media (min-width: 901px) and (prefers-reduced-motion: no-preference) {
  .contact-page .contact-hero {
    height: 215svh !important;
    min-height: 1548px !important;
  }
}

.contact-page-email-note {
  width: 100% !important;
  text-align: center !important;
}

.contact-page-email-note a,
.contact-page-email-note a:hover,
.contact-page-email-note a:focus-visible {
  color: #faf8f2 !important;
}

/* Figma footer 98:5 — structure and ChromaFlow logo treatment. */
.site-footer {
  position: relative !important;
  z-index: 23;
  width: 100%;
  min-height: max(820px, 62.6042vw) !important;
  height: max(820px, 62.6042vw) !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: #14141d !important;
  color: #faf8f2;
  isolation: isolate;
}

.footer-ribbon { display: none !important; }

.footer-logo-effect {
  position: absolute;
  z-index: 1;
  left: 0;
  bottom: -1px;
  width: 100%;
  aspect-ratio: 260 / 55;
  pointer-events: none;
  user-select: none;
}

.footer-logo-vector,
.footer-chromaflow {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.footer-logo-vector svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.footer-logo-base {
  z-index: 0;
}

.footer-logo-base path {
  fill: #14141d !important;
  stroke: none !important;
}

.footer-chromaflow {
  z-index: 1;
  display: block;
}

.footer-logo-stroke {
  z-index: 2;
}

.footer-logo-stroke path {
  fill: none !important;
  stroke: rgba(250, 248, 242, .60) !important;
  stroke-width: 1px !important;
  vector-effect: non-scaling-stroke;
}

.contact-footer-inner {
  position: relative !important;
  z-index: 4 !important;
  display: block !important;
  width: min(85.52vw, 1642px) !important;
  height: auto !important;
  min-height: 0 !important;
  margin: 0 auto !important;
  padding: clamp(96px, 6.98vw, 134px) 0 0 !important;
}

.footer-main-row {
  display: grid !important;
  grid-template-columns: minmax(0, 958px) minmax(220px, 1fr) !important;
  column-gap: clamp(92px, 8.85vw, 170px) !important;
  align-items: end !important;
  width: 100% !important;
}

.footer-message {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 14px !important;
}

.footer-kicker {
  margin: 0 !important;
  font: 500 16px/1.5 'Satoshi', sans-serif !important;
  text-transform: uppercase;
  color: rgba(250, 248, 242, .70) !important;
}

.footer-message h2 {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  font-family: 'PP Eiko', 'Satoshi', sans-serif !important;
  font-size: clamp(56px, 4.6875vw, 90px) !important;
  font-weight: 500 !important;
  line-height: 1.0222 !important;
  letter-spacing: -.0222em !important;
  color: #faf8f2 !important;
}

.footer-cta {
  align-self: end !important;
  justify-self: start !important;
  width: max-content !important;
  max-width: 100%;
  color: #faf8f2 !important;
}

.footer-meta-row {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  width: 100% !important;
  margin-top: 75px !important;
}

.footer-copyright {
  font: 500 16px/1.375 'PP Eiko', 'Satoshi', sans-serif !important;
  text-transform: uppercase;
  color: rgba(250, 248, 242, .40) !important;
}

.footer-meta {
  display: grid !important;
  grid-template-columns: 243px 81px !important;
  column-gap: 53px !important;
  width: 377px !important;
}

.footer-group-title {
  margin-bottom: 20px !important;
  font: 500 16px/1.375 'Satoshi', sans-serif !important;
  text-transform: uppercase;
  color: rgba(250, 248, 242, .40) !important;
}

.footer-business-links,
.footer-social-links {
  gap: 12px !important;
}

.footer-business-links a,
.footer-social-links a {
  font: 500 18px/1.333 'Satoshi', sans-serif !important;
  color: rgba(250, 248, 242, .80) !important;
}

@media (max-width: 1680px) {
  .footer-main-row {
    grid-template-columns: minmax(0, 1fr) max-content !important;
    column-gap: clamp(48px, 5vw, 84px) !important;
  }
}

@media (max-width: 1200px) {
  .footer-main-row {
    grid-template-columns: minmax(0, 1fr) auto !important;
    column-gap: 56px !important;
  }

  .footer-meta {
    grid-template-columns: minmax(210px, 1fr) 90px !important;
    width: auto !important;
  }
}

@media (max-width: 900px) {
  :root {
    --hero-title-size: clamp(2rem, 9vw, 3rem);
    --hero-title-line-height: 1.03;
  }

  .work-end-panel {
    flex-basis: 86vw;
    min-height: min(760px, 82svh);
    padding: 40px 24px;
  }

  .work-end-panel h2 { font-size: clamp(2.2rem, 8vw, 3.9rem); }
  .work-services-slot { display: none; }

  .site-footer {
    min-height: 860px !important;
    height: auto !important;
    padding: 92px 32px 260px !important;
  }

  .contact-footer-inner {
    width: 100% !important;
    padding: 0 !important;
  }

  .footer-main-row {
    grid-template-columns: 1fr !important;
    row-gap: 46px !important;
  }

  .footer-message h2 {
    font-size: clamp(50px, 9.4vw, 76px) !important;
  }

  .footer-meta-row {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 52px !important;
    margin-top: 92px !important;
  }

  .footer-meta {
    grid-template-columns: minmax(210px, 1fr) minmax(100px, .5fr) !important;
    width: 100% !important;
  }

  .footer-logo-effect {
    left: -18%;
    width: 136%;
  }
}

@media (max-width: 640px) {
  .site-footer {
    min-height: 820px !important;
    padding: 78px 22px 210px !important;
  }

  .footer-kicker { font-size: 13px !important; }
  .footer-message h2 { font-size: clamp(42px, 13vw, 60px) !important; }
  .footer-meta-row { margin-top: 78px !important; gap: 42px !important; }
  .footer-meta { grid-template-columns: 1fr !important; row-gap: 34px !important; }
  .footer-group-title,
  .footer-copyright { font-size: 14px !important; }
  .footer-business-links a,
  .footer-social-links a { font-size: 16px !important; }
}

@media (prefers-reduced-motion: reduce) {
  .clean-roll-cta .trionn-blur-label .blur-layer-base {
    transform: none !important;
  }

  .clean-roll-cta .trionn-blur-label .blur-layer-hover {
    display: none !important;
  }

}

/* The Home Hero carried a more specific legacy label rule: keep the shared
   V8 roll authoritative there as well as on every other line CTA. */
.trionn-line-button.clean-roll-cta .trionn-blur-label {
  position: relative !important;
  display: inline-grid !important;
  align-items: center !important;
  height: 1em !important;
  min-height: 1em !important;
  overflow: hidden !important;
  line-height: 1 !important;
}

.trionn-line-button.clean-roll-cta .trionn-blur-label .blur-layer {
  grid-area: 1 / 1 !important;
  display: inline-flex !important;
  position: relative !important;
  inset: auto !important;
  opacity: 1 !important;
  filter: none !important;
  transform: translate3d(0, 0, 0) !important;
  transition: transform .42s cubic-bezier(.22, .72, .18, 1) !important;
}

.trionn-line-button.clean-roll-cta .trionn-blur-label .blur-layer-hover {
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  transform: translate3d(0, 115%, 0) !important;
}

.trionn-line-button.clean-roll-cta:hover .trionn-blur-label .blur-layer-base,
.trionn-line-button.clean-roll-cta:focus-visible .trionn-blur-label .blur-layer-base,
.project-card:hover .trionn-line-button.clean-roll-cta .trionn-blur-label .blur-layer-base,
.project-card:focus-visible .trionn-line-button.clean-roll-cta .trionn-blur-label .blur-layer-base {
  transform: translate3d(0, -115%, 0) !important;
}

.trionn-line-button.clean-roll-cta:hover .trionn-blur-label .blur-layer-hover,
.trionn-line-button.clean-roll-cta:focus-visible .trionn-blur-label .blur-layer-hover,
.project-card:hover .trionn-line-button.clean-roll-cta .trionn-blur-label .blur-layer-hover,
.project-card:focus-visible .trionn-line-button.clean-roll-cta .trionn-blur-label .blur-layer-hover {
  transform: translate3d(0, 0, 0) !important;
}

.trionn-line-button.clean-roll-cta .button-arrow,
.trionn-line-button.clean-roll-cta .cta-arrow,
.trionn-line-button.clean-roll-cta:hover .button-arrow,
.trionn-line-button.clean-roll-cta:hover .cta-arrow,
.trionn-line-button.clean-roll-cta:focus-visible .button-arrow,
.trionn-line-button.clean-roll-cta:focus-visible .cta-arrow {
  transform: none !important;
}
