/* Motion. Nothing here hides content. Reduced motion removes animation entirely. */

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }

  .btn,
  .card,
  .text-link,
  .nav-link,
  .dropdown a,
  .nav-btn {
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
  }

  .btn::after {
    content: "";
    width: 0.45rem;
    height: 0.45rem;
    border-right: 2px solid currentColor;
    border-top: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.2s ease;
  }

  .btn:hover::after,
  .btn:focus-visible::after {
    transform: translateX(3px) rotate(45deg);
  }

  .text-link {
    position: relative;
  }

  .text-link::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.2s ease;
  }

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

  .site-nav {
    transition: transform 0.24s ease;
  }

  .logo-track {
    animation: ticker 50s linear infinite;
  }

  .logo-marquee:hover .logo-track,
  .logo-marquee:focus-within .logo-track {
    animation-play-state: paused;
  }

  .accordion-icon {
    transition: transform 0.2s ease;
  }
}

@keyframes ticker {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-100%);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }

  .hero-terrain-canvas,
  .ambient {
    display: none !important;
  }

  .hero-video {
    transform: none !important;
    animation: none !important;
  }

  .reveal-line,
  .reveal-handle,
  .hotspot-dot {
    animation: none !important;
  }

  .reveal-over {
    width: 100% !important;
  }

  .reveal-labels {
    opacity: 1 !important;
  }

  .reveal-line,
  .reveal-handle {
    display: none !important;
  }

  .logo-marquee {
    overflow: visible;
  }

  .logo-track[aria-hidden="true"] {
    display: none !important;
  }

  .logo-track {
    flex-wrap: wrap;
  }

  html.is-wiping::before,
  html.is-wiping::after,
  .page-wipe {
    display: none !important;
    animation: none !important;
  }
}

/* Soft branded fade on internal navigations. Cover, then reveal. */
.page-wipe {
  position: fixed;
  inset: 0;
  z-index: 500;
  background: #281848;
  opacity: 0;
  pointer-events: none;
}

.page-wipe.is-on {
  pointer-events: auto;
  animation: page-wipe-in 520ms cubic-bezier(0.45, 0.05, 0.2, 1) forwards;
}

html.is-wiping::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 500;
  background: #281848;
  pointer-events: none;
  animation: page-wipe-out 520ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes page-wipe-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes page-wipe-out {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* Atrobot — refined interactive motion */
@media (prefers-reduced-motion: no-preference) {

  /* Smooth reveal for existing cards and content */
  .card,
  .service-grid > *,
  .practice-grid > *,
  .value-grid > * {
    transition:
      transform 380ms cubic-bezier(.2,.7,.2,1),
      box-shadow 380ms ease,
      border-color 380ms ease;
  }

  /* Subtle lift — no excessive 3D movement */
  .card:hover,
  .card:focus-within,
  .service-grid > *:hover,
  .practice-grid > *:hover,
  .value-grid > *:hover {
    transform: translateY(-5px);
    box-shadow: 0 18px 40px rgba(40, 24, 72, .12);
  }

  /* Soft lavender cursor spotlight */
  .card,
  .service-grid > *,
  .practice-grid > *,
  .value-grid > * {
    position: relative;
    isolation: isolate;
  }

  .card::after,
  .service-grid > *::after,
  .practice-grid > *::after,
  .value-grid > *::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    border-radius: inherit;
    opacity: 0;
    background: radial-gradient(
      260px circle at var(--pointer-x, 50%) var(--pointer-y, 50%),
      rgba(164, 112, 181, .13),
      transparent 72%
    );
    transition: opacity 300ms ease;
  }

  .card:hover::after,
  .service-grid > *:hover::after,
  .practice-grid > *:hover::after,
  .value-grid > *:hover::after {
    opacity: 1;
  }

  /* Gentle image zoom inside cards */
  .card img,
  .service-grid img,
  .practice-grid img,
  .value-grid img {
    transition: transform 650ms cubic-bezier(.2,.7,.2,1);
  }

  .card:hover img,
  .service-grid > *:hover img,
  .practice-grid > *:hover img,
  .value-grid > *:hover img {
    transform: scale(1.035);
  }

  /* Premium button light sweep */
  .btn {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition:
      transform 250ms ease,
      box-shadow 250ms ease,
      background-color 250ms ease;
  }

  .btn::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(
      110deg,
      transparent 25%,
      rgba(255, 255, 255, .25) 48%,
      transparent 70%
    );
    transform: translateX(-120%);
    transition: transform 650ms ease;
    pointer-events: none;
  }

  .btn:hover::before,
  .btn:focus-visible::before {
    transform: translateX(120%);
  }

  .btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 9px 24px rgba(40, 24, 72, .16);
  }

  /* Keep thermal imagery and hero layers unaffected */
  .hero-slide img,
  .thermal-hot,
  .thermal-ir {
    backface-visibility: hidden;
  }
}

/* Never force motion for reduced-motion users */
@media (prefers-reduced-motion: reduce) {
  .card,
  .service-grid > *,
  .practice-grid > *,
  .value-grid > *,
  .btn {
    transform: none !important;
  }
}



/* ==========================================
   ATROBOT — BOLD CINEMATIC SCROLL REVEALS
   ========================================== */

@media (prefers-reduced-motion: no-preference) {

  [data-scroll-reveal] {
    opacity: 0;
    transform: translate3d(0, 55px, 0);
    filter: blur(5px);

    transition:
      opacity 420ms ease-out,
      transform 600ms cubic-bezier(.16, 1, .3, 1),
      filter 450ms ease-out;

    transition-delay: var(--reveal-delay, 0ms);
    will-change: opacity, transform, filter;
  }

  [data-scroll-reveal].is-revealed {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
    will-change: auto;
  }

  /* More noticeable image entrances */
  img[data-scroll-reveal],
  video[data-scroll-reveal],
  .scroll-visual[data-scroll-reveal] {
    transform: scale(.92);
    filter: blur(5px);

    transition:
      opacity 500ms ease-out,
      transform 850ms cubic-bezier(.16, 1, .3, 1),
      filter 500ms ease-out;
  }

  img[data-scroll-reveal].is-revealed,
  video[data-scroll-reveal].is-revealed,
  .scroll-visual[data-scroll-reveal].is-revealed {
    transform: scale(1);
    filter: blur(0);
  }

  /* Stronger heading entrances */
  h2[data-scroll-reveal],
  h3[data-scroll-reveal],
  .section-heading[data-scroll-reveal] {
    transform: translate3d(0, 38px, 0);
    transition-duration: 500ms;
  }

  /* Faster, more obvious card reveals */
  [data-reveal-group] > [data-scroll-reveal] {
    transition-delay: var(--reveal-delay, 0ms);
  }

  /* Reduced stagger makes the page feel responsive */
  [data-scroll-reveal] {
    transition-delay: var(--reveal-delay, 0ms);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-scroll-reveal] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}


/* ATROBOT — Reference-inspired scroll motion */
@media (prefers-reduced-motion: no-preference) {
  [data-scroll-reveal] {
    opacity: 0;
    transform: translate3d(0, 48px, 0);
    filter: blur(2px);
    transition:
      opacity 480ms ease-out,
      transform 680ms cubic-bezier(.22, 1, .36, 1),
      filter 450ms ease-out;
    transition-delay: var(--reveal-delay, 0ms);
  }

  [data-scroll-reveal].is-revealed {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
  }

  /* Images have a more noticeable entrance */
  img[data-scroll-reveal],
  video[data-scroll-reveal],
  figure[data-scroll-reveal],
  .scroll-visual[data-scroll-reveal] {
    transform: translate3d(0, 32px, 0) scale(.94);
    transition:
      opacity 550ms ease-out,
      transform 820ms cubic-bezier(.16, 1, .3, 1),
      filter 500ms ease-out;
  }

  img[data-scroll-reveal].is-revealed,
  video[data-scroll-reveal].is-revealed,
  figure[data-scroll-reveal].is-revealed,
  .scroll-visual[data-scroll-reveal].is-revealed {
    transform: translate3d(0, 0, 0) scale(1);
  }

  /* Headings lead the sequence */
  h2[data-scroll-reveal],
  h3[data-scroll-reveal],
  .section-heading[data-scroll-reveal] {
    transform: translate3d(0, 38px, 0);
    transition-duration: 560ms;
  }

  /* Paragraphs follow with a lighter movement */
  p[data-scroll-reveal],
  li[data-scroll-reveal] {
    transition-duration: 520ms;
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-scroll-reveal] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}


