/* GoBunnyy motion system — presence & hierarchy, not noise */

:root {
  --gb-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --gb-ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
  --gb-dur-fast: 180ms;
  --gb-dur: 520ms;
  --gb-dur-slow: 780ms;
}

/* 1) Hero entrance — first viewport comes alive */
.hero-content > *,
.hero-routing > * {
  opacity: 0;
  transform: translateY(18px);
  animation: gb-rise-in var(--gb-dur-slow) var(--gb-ease-out) forwards;
}

.hero-content > *:nth-child(1) { animation-delay: 80ms; }
.hero-content > *:nth-child(2) { animation-delay: 160ms; }
.hero-content > *:nth-child(3) { animation-delay: 240ms; }
.hero-content > *:nth-child(4) { animation-delay: 320ms; }

.hero-routing > *:nth-child(1) { animation-delay: 380ms; }
.hero-routing > *:nth-child(2) { animation-delay: 460ms; }
.hero-routing > *:nth-child(3) { animation-delay: 540ms; }

.hero-section {
  position: relative;
  overflow: hidden;
}

.hero-section::after {
  content: "";
  position: absolute;
  inset: -20% -10% auto;
  height: 55%;
  pointer-events: none;
  background:
    radial-gradient(ellipse 60% 50% at 20% 40%, rgba(0, 0, 85, 0.07), transparent 70%),
    radial-gradient(ellipse 50% 45% at 85% 30%, rgba(1, 62, 55, 0.08), transparent 70%);
  animation: gb-ambient 14s var(--gb-ease-soft) infinite alternate;
  z-index: 0;
}

.hero-section .header-container,
.hero-section .hero-inner {
  position: relative;
  z-index: 1;
}

@keyframes gb-rise-in {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes gb-ambient {
  from { transform: translate3d(0, 0, 0) scale(1); opacity: 0.85; }
  to { transform: translate3d(2%, 3%, 0) scale(1.05); opacity: 1; }
}

/* Subpage intros use scroll/IO reveal via site.js */

/* 2) Scroll reveal */
[data-reveal] {
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity var(--gb-dur) var(--gb-ease-out),
    transform var(--gb-dur) var(--gb-ease-out);
  /* Avoid transform expanding document scroll overflow */
  overflow-anchor: none;
}

@supports (overflow: clip) {
  /* Keep translated pre-reveal nodes from inflating scroll height */
  .divisions-section,
  .ai-section,
  .consulting-section,
  .solutions-section,
  .cta-section,
  .process-section,
  main#content {
    overflow-x: clip;
  }
}

[data-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0);
  will-change: auto;
}

[data-reveal-stagger] > [data-reveal] {
  transition-delay: calc(var(--reveal-i, 0) * 70ms);
}

.jobs-list > [data-reveal] {
  transition-delay: calc(var(--reveal-i, 0) * 70ms);
}

/* Keep WOW-compatible classes visible if WOW fails */
.wow {
  visibility: visible;
}

/* 3) Interactive micro-motion */
.button,
a.button {
  transition:
    transform var(--gb-dur-fast) var(--gb-ease-out),
    box-shadow var(--gb-dur-fast) var(--gb-ease-out),
    background-color var(--gb-dur-fast) var(--gb-ease-soft),
    border-color var(--gb-dur-fast) var(--gb-ease-soft),
    color var(--gb-dur-fast) var(--gb-ease-soft);
}

.button:hover,
a.button:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(11, 18, 21, 0.12);
}

.button:active,
a.button:active {
  transform: translateY(0);
  box-shadow: none;
}

.division-card,
.ai-card,
.service-card,
.solution-card,
.hero-route-card,
.job-card,
.process-step,
.consulting-pillar,
.contact-form-box {
  transition:
    transform var(--gb-dur) var(--gb-ease-out),
    box-shadow var(--gb-dur) var(--gb-ease-out),
    border-color var(--gb-dur-fast) var(--gb-ease-soft);
}

.division-card:hover,
.ai-card:hover,
.service-card:hover,
.solution-card:hover,
.hero-route-card:hover,
.job-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 32px rgba(11, 18, 21, 0.1);
}

.hero-route-card .hero-route-cta {
  display: inline-block;
  transition: transform var(--gb-dur-fast) var(--gb-ease-out);
}

.hero-route-card:hover .hero-route-cta {
  transform: translateX(4px);
}

.division-icon,
.ai-card-icon,
.service-icon {
  transition: transform var(--gb-dur) var(--gb-ease-out);
}

.division-card:hover .division-icon,
.ai-card:hover .ai-card-icon,
.service-card:hover .service-icon {
  transform: scale(1.06);
}

.scroll-top-btn {
  transition:
    opacity var(--gb-dur-fast) var(--gb-ease-soft),
    transform var(--gb-dur-fast) var(--gb-ease-out),
    visibility var(--gb-dur-fast);
}

.scroll-top-btn.is-visible:hover {
  transform: translateY(-3px);
}

#header {
  transition:
    background-color var(--gb-dur-fast) var(--gb-ease-soft),
    box-shadow var(--gb-dur-fast) var(--gb-ease-soft),
    backdrop-filter var(--gb-dur-fast) var(--gb-ease-soft);
}

#nav-main a,
#nav-mobile a {
  transition: color var(--gb-dur-fast) var(--gb-ease-soft);
}

.form-field input,
.form-field select,
.form-field textarea {
  transition:
    border-color var(--gb-dur-fast) var(--gb-ease-soft),
    box-shadow var(--gb-dur-fast) var(--gb-ease-soft);
}

.consent-check {
  transition:
    border-color var(--gb-dur-fast) var(--gb-ease-soft),
    background-color var(--gb-dur-fast) var(--gb-ease-soft);
}

/* Footer soft entrance when scrolled into view */
#landing-footer[data-reveal].is-revealed {
  transition-duration: 640ms;
}

@media (prefers-reduced-motion: reduce) {
  .hero-content > *,
  .hero-routing > *,
  .hero-section::after {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .button:hover,
  a.button:hover,
  .division-card:hover,
  .ai-card:hover,
  .service-card:hover,
  .solution-card:hover,
  .hero-route-card:hover,
  .job-card:hover {
    transform: none;
  }
}
