*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: 16px;
}

body {
  margin: 0;
  padding: 0;
  font-family: var(--font-body);
  background-color: var(--color-bg-dark);
  color: var(--color-text-primary);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1,
h2,
h3,
h4,
h5,
h6,
p {
  margin: 0;
  padding: 0;
}

a {
  text-decoration: none;
  color: inherit;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: var(--z-nav);
  padding: var(--space-md) var(--space-md);
  display: flex;
  justify-content: space-between;
  align-items: center;
  transition: transform 0.35s var(--ease-editorial), background-color 0.35s ease, backdrop-filter 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
  will-change: transform;
}

.site-header.is-scrolled {
  background-color: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.site-header.is-hidden {
  transform: translateY(-100%);
  pointer-events: none;
}

@media (min-width: 768px) {
  .site-header {
    padding: 20px 80px;
  }
}

/* Mobile sub-page back button — hidden by default, shown when subpage is active */
.site-header_mobile-back {
  display: none;
  appearance: none;
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.7);
  border-radius: 0;
  padding: 6px 10px 6px 0;
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  position: relative;
  z-index: 321;
  transition: color 0.2s ease;
  flex-shrink: 0;
}

.site-header_mobile-back:hover {
  color: #FFFFFF;
}

@media (max-width: 991px) {
  body.mobile-subpage-open .site-header_mobile-back {
    display: inline-flex;
  }

  body.mobile-subpage-open .site-header_brand {
    display: none;
  }
}

.site-header_brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--color-text-primary);
  font-family: var(--font-heading);
  font-size: var(--font-size-lg);
  font-weight: 800;
  letter-spacing: -0.03em;
  text-decoration: none;
}

.site-header_logo {
  height: 42px;
  width: auto;
  display: block;
}

/* On mobile (<992px), crop to logo icon mark only to maintain compact header */
@media (max-width: 991px) {
  .site-header_brand {
    width: 45px;
    height: 38px;
    overflow: hidden;
    flex-shrink: 0;
  }

  .site-header_logo {
    height: 38px;
    width: auto;
    max-width: none;
  }
}

@media (max-width: 991px) {
  .site-header_cta {
    display: none !important;
  }
}

.site-header_nav {
  display: none;
}

@media (min-width: 992px) {
  .site-header_nav {
    display: flex;
    align-items: center;
    gap: var(--space-lg);
  }
}

.site-header_link {
  font-family: var(--font-heading);
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  font-weight: 500;
  transition: color var(--duration-fast) var(--ease-editorial);
}

.site-header_link:hover {
  color: var(--color-text-primary);
}

.site-header_actions {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* ============================================================
   REUSABLE SECTION MAIN BUTTON (.main-btn)
   - Vertical text slide / swap ticker hover animation
   - Diagonal arrow translate hover animation
   - Pure motion: all other hover distractions removed
   ============================================================ */

.main-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-md, 12px);
  height: 48px;
  padding: 6px 6px 6px 20px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.20);
  background: rgba(255, 255, 255, 0.05);
  color: var(--color-text-primary, #ffffff);
  text-decoration: none;
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 500;
  letter-spacing: -0.01em;
  box-sizing: border-box;
  cursor: pointer;
}

/* 1. Vertical text slide / text swap container */
.main-btn_label {
  display: inline-flex;
  flex-direction: column;
  height: 24px;
  line-height: 24px;
  overflow: hidden;
  position: relative;
  pointer-events: none;
}

.main-btn_text {
  display: block;
  height: 24px;
  line-height: 24px;
  white-space: nowrap;
  transition: transform 0.38s ease-in-out;
  will-change: transform;
}

/* On hover: Text slides vertically upward to reveal duplicate text layer */
.main-btn:hover .main-btn_text,
.hero_cta:hover .main-btn_text,
.cta-banner_cta:hover .main-btn_text,
.video-testimonial_cta-pill:hover .main-btn_text,
.final-cta_btn:hover .main-btn_text,
.site-header_cta:hover .main-btn_text,
.case-studies_explore-cta:hover .main-btn_text,
.expertise_cta:hover .main-btn_text {
  transform: translateY(-100%);
}

/* 2. Diagonal arrow swap / loop animation (Appinventiv-style) */
.main-btn_icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background-color: var(--color-primary, #0088cc);
  display: grid;
  place-items: center;
  position: relative;
  flex-shrink: 0;
  color: #ffffff;
  overflow: hidden;
  pointer-events: none;
}

.main-btn_icon img,
.main-btn_icon svg {
  display: block;
  position: absolute;
  transition: transform 0.3s ease-in-out;
  will-change: transform;
}

/* Original arrow: starts centered (0, 0) */
.main-btn_icon img:not(.main-btn_icon-copy),
.main-btn_icon svg:not(.main-btn_icon-copy) {
  transform: translate(0, 0);
  opacity: 1;
  transition: transform 0.3s ease-in-out, opacity 0.2s ease-in-out;
}

/* Copy arrow: starts hidden at bottom-left (-200%, 200%) and invisible */
.main-btn_icon .main-btn_icon-copy {
  transform: translate(-200%, 200%);
  opacity: 0;
  transition: transform 0.3s ease-in-out, opacity 0.2s ease-in-out;
}

/* On hover: original arrow slides out diagonally to top-right (200%, -200%) */
.main-btn:hover .main-btn_icon img:not(.main-btn_icon-copy),
.main-btn:hover .main-btn_icon svg:not(.main-btn_icon-copy),
.hero_cta:hover .hero_cta-icon img:not(.main-btn_icon-copy),
.hero_cta:hover .hero_cta-icon svg:not(.main-btn_icon-copy),
.cta-banner_cta:hover .cta-banner_cta-icon img:not(.main-btn_icon-copy),
.cta-banner_cta:hover .cta-banner_cta-icon svg:not(.main-btn_icon-copy),
.video-testimonial_cta-pill:hover .video-testimonial_cta-icon svg:not(.main-btn_icon-copy),
.video-testimonial_cta-pill:hover .video-testimonial_cta-icon img:not(.main-btn_icon-copy),
.final-cta_btn:hover .final-cta_btn-icon svg:not(.main-btn_icon-copy),
.final-cta_btn:hover .final-cta_btn-icon img:not(.main-btn_icon-copy),
.site-header_cta:hover .site-header_cta-arrow svg:not(.main-btn_icon-copy),
.case-studies_explore-cta:hover .case-studies_explore-badge svg:not(.main-btn_icon-copy),
.case-studies_explore-cta:hover .case-studies_explore-badge img:not(.main-btn_icon-copy),
.expertise_cta:hover .expertise_cta-icon svg:not(.main-btn_icon-copy),
.expertise_cta:hover .expertise_cta-icon img:not(.main-btn_icon-copy) {
  transform: translate(200%, -200%);
  opacity: 0;
}

/* On hover: copy arrow slides into center (0, 0) with opacity 1 and 0.1s delay */
.main-btn:hover .main-btn_icon .main-btn_icon-copy,
.hero_cta:hover .hero_cta-icon .main-btn_icon-copy,
.cta-banner_cta:hover .cta-banner_cta-icon .main-btn_icon-copy,
.video-testimonial_cta-pill:hover .video-testimonial_cta-icon .main-btn_icon-copy,
.final-cta_btn:hover .final-cta_btn-icon .main-btn_icon-copy,
.site-header_cta:hover .site-header_cta-arrow .main-btn_icon-copy,
.case-studies_explore-cta:hover .case-studies_explore-badge .main-btn_icon-copy,
.expertise_cta:hover .expertise_cta-icon .main-btn_icon-copy {
  transform: translate(0, 0);
  opacity: 1;
  transition-delay: 0.1s;
}

/* Header CTA specialization */
.site-header_cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 6px 6px 6px 18px;
  border-radius: 999px;
  background-color: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.20);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  color: var(--color-text-primary);
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
}

.site-header_cta-arrow {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background-color: #0088cc;
  display: grid;
  place-items: center;
  position: relative;
  pointer-events: none;
  overflow: hidden;
}

/* ----------------------------------------------------------
   Count-Down Odometer — Conax-style slot machine (Global)
   .odometer           → flex row wrapper
   .count-down-digit   → per-character column clip
   .count-down-item    → the scrolling strip inside each digit
   .count-down-number  → individual number cell in the strip
   .count-down-suffix  → static "+" or other suffix character
---------------------------------------------------------- */
.odometer {
  display: inline-flex;
  align-items: center;
  gap: 0;
  line-height: 1;
  overflow: hidden;
}

.count-down-digit {
  height: 1em;
  overflow: hidden;
  display: inline-block;
  position: relative;
}

.count-down-item {
  display: flex;
  flex-direction: column;
  width: 100%;
  will-change: transform;
}

/* _1 direction: initially offset to show bottom digit, scrolls down to reveal target digit at top */
.count-down-item._1 {
  transform: translateY(-88.9%);
}

/* _2 direction: starts at top, scrolls upward */
.count-down-item._2 {
  transform: translateY(0%);
}

.count-down-number {
  height: 1em;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.count-down-number.semibold {
  font-weight: 700;
}

.count-down-suffix {
  display: inline-flex;
  align-items: center;
  height: 1em;
  line-height: 1;
  font-weight: 700;
}

.count-down-space {
  display: inline-block;
  width: 0.28em;
  height: 1em;
  line-height: 1;
  pointer-events: none;
}