/*
 * Digital Architects — overrides loaded after da-corporate.webflow.css (the
 * original Webflow stylesheet, kept verbatim).
 *
 * Re-implements in CSS what Webflow's runtime (webflow.js + IX2 interactions)
 * used to do; the matching JS lives in BaseLayout.astro.
 */

/* Space Grotesk, self-hosted (was loaded from Google Fonts by webfont.js).
   Variable font: one file per subset covers weights 400–700. */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/space-grotesk-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF,
    U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/space-grotesk-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
    U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Mobile menu hamburger -> X (IX2 "Navbar 1 menu [Open]/[Close]", inOutQuint). */
.menu-icon-line-top,
.menu-icon-line-bottom {
  transition: transform 0.5s cubic-bezier(0.86, 0, 0.07, 1);
}
.menu-icon-line-middle {
  transition: width 0.2s cubic-bezier(0.86, 0, 0.07, 1) 0.4s;
}
.w-nav-button.w--open .menu-icon-line-top {
  transform: translateY(8px) rotate(-45deg);
}
.w-nav-button.w--open .menu-icon-line-bottom {
  transform: translateY(-8px) rotate(45deg);
}
.w-nav-button.w--open .menu-icon-line-middle {
  width: 0;
  transition-delay: 0s;
}

/* Mobile menu: Webflow's had an empty "Solutions" dropdown toggle above Contact
   (removed, see README); its 1.5rem of padding kept Contact clear of the navbar.
   Same spacing here: Webflow's 1rem top padding + 1.5rem. */
@media screen and (max-width: 991px) {
  .navbar-menu {
    padding-top: 2.5rem;
  }
}

/* Arrow nudge on icon buttons (IX2 "Arrow Button Right/Left"). */
.icon-embed-xs-for-button {
  transition: transform 0.2s ease;
}
.button.is-icon:hover .icon-embed-xs-for-button {
  transform: translateX(5px);
}

/* Hero circles grow in when scrolled into view (IX2 "growBigIn", outQuart 1s).
   Gated on .w-mod-js so they stay visible without JS. */
.w-mod-js [data-grow-in] {
  opacity: 0;
  transform: scale(0);
}
.w-mod-js [data-grow-in].is-in {
  opacity: 1;
  transform: scale(1);
  transition:
    opacity 1s cubic-bezier(0.25, 1, 0.5, 1),
    transform 1s cubic-bezier(0.25, 1, 0.5, 1);
}

@media (prefers-reduced-motion: reduce) {
  .w-mod-js [data-grow-in] {
    opacity: 1;
    transform: none;
  }
}

/* Contact form honeypot (see functions/api/contact.js): off-screen for people,
   still in the form for bots. */
.form-honeypot {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Turnstile widget on the contact form. The slot spans the card's side padding
   (2rem, from .contact-form) so the normal 300px widget fits on most phones; the
   script measures it to choose between that and the compact one (data-size).
   The widget lines up with the fields; where it's wider than them (phones), it
   shifts left just enough to stay 8px clear of the card's right edge.
   100% here is the width of the field column. */
.w-form-formrecaptcha[data-turnstile] {
  margin-left: -2rem;
  margin-right: -2rem;
  padding-left: clamp(0.5rem, calc(100% + 4rem - 308px), 2rem);
}
.w-form-formrecaptcha[data-turnstile][data-size='compact'] {
  padding-left: 2rem;
}
