/*
 * Peach Legal — site styles.
 * webflow-base.css carries the original layout/typography; this file adds the
 * self-hosted font and replaces Webflow's JS-driven interactions (IX2) with CSS.
 */

@font-face {
  font-family: Gally;
  src: url("/assets/fonts/gally.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

html {
  scroll-behavior: smooth;
}

/* width/height attributes are set on images to prevent layout shift; keep their aspect ratio. */
img {
  height: auto;
}

section[id] {
  scroll-margin-top: 60px;
}

/* ---------- Page-load fade + purple loader bar (was IX2 "a-12") ---------- */
.js .page-wrapper {
  opacity: 0;
  transition: opacity 0.5s ease;
  /* Safety net: never leave the page hidden if the script fails to run. */
  animation: pl-reveal 0s 3s forwards;
}
.js.is-loaded .page-wrapper {
  opacity: 1;
}
@keyframes pl-reveal {
  to {
    opacity: 1;
  }
}
.loader-wrapper {
  z-index: 1001;
  pointer-events: none;
  transition: opacity 0.2s ease 0.5s, visibility 0s 0.7s;
}
.js .loader {
  width: 0;
  transition: width 0.5s ease;
}
.js.is-loaded .loader {
  width: 100%;
}
.js.is-loaded .loader-wrapper {
  opacity: 0;
  visibility: hidden;
}

.header {
  z-index: 1000;
}

/* ---------- "Say hello" buttons: arrow nudge on hover (was IX2 "a-24".."a-27") ---------- */
.link-primary {
  display: inline-block;
  cursor: pointer;
}
.link-primary-arrow {
  width: 14px;
  height: 14px;
  top: -1px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: middle;
  transition: transform 0.2s ease;
}
.link-primary:hover .link-primary-arrow,
.link-primary:focus-visible .link-primary-arrow {
  transform: translate(3px, -3px);
}

/* ---------- Hero CTA slides in from below (was Webflow "slideInBottom") ---------- */
.js [data-reveal] {
  opacity: 0;
  transform: translateY(100px);
  transition:
    opacity 1s cubic-bezier(0.165, 0.84, 0.44, 1) 0.25s,
    transform 1s cubic-bezier(0.165, 0.84, 0.44, 1) 0.25s;
}
.js [data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* ---------- Hero logo quarter-turn while scrolling (was IX2 "a-69") ---------- */
[data-spin] {
  will-change: transform;
}

/* ---------- Mobile menu (was Webflow navbar + IX2 "a-66"/"a-67") ---------- */
.menu-button {
  border: 0;
  background: transparent;
  font: inherit;
  color: inherit;
}
.menu-line-top,
.menu-line-middle,
.menu-line-bottom {
  display: block;
  transition:
    transform 0.2s ease,
    background-color 0.2s ease,
    opacity 0.2s ease;
}
.menu-button.w--open .menu-line-top {
  transform: translateY(6px);
  background-color: #fff;
}
.menu-button.w--open .menu-line-middle {
  opacity: 0;
}
.menu-button.w--open .menu-line-bottom {
  transform: translateY(-6px);
  background-color: #fff;
}

@media screen and (max-width: 991px) {
  .header.is-open .nav-menu {
    display: block;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    animation: pl-menu-down 0.4s ease both;
  }
}
@keyframes pl-menu-down {
  from {
    clip-path: inset(0 0 100% 0);
  }
  to {
    clip-path: inset(0 0 0 0);
  }
}

/* ---------- Misc ---------- */
.linkedin-link {
  line-height: 0;
}
.copy-toast {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  .js .page-wrapper,
  .js [data-reveal],
  .link-primary-arrow,
  .header.is-open .nav-menu {
    transition: none;
    animation: none;
    opacity: 1;
    transform: none;
  }
}
