/* DAWE v21 — one motion layer for every page.
   Motion uses transform + opacity only for compositor-friendly animation. */
:root {
  --motion-ui: 250ms;
  --motion-page-out: 190ms;
  --motion-page-in: 420ms;
  --motion-reveal: 720ms;
  --motion-ease: cubic-bezier(.22,.61,.36,1);
  --motion-offset: 28px;
}

/* One reveal model for Start, Fabtor, FRUO, Electronics and Contact. */
.motion-ready [data-reveal] {
  opacity: 0;
  transform: translate3d(0,var(--motion-offset),0);
}
.motion-ready [data-reveal].is-revealed {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--motion-reveal) var(--motion-ease) var(--reveal-delay,0ms),
    transform var(--motion-reveal) var(--motion-ease) var(--reveal-delay,0ms);
}

/* Cross-document navigation: deterministic fallback used for every browser.
   The destination class is applied in <head> before first paint. */
html.page-leaving main,
html.page-leaving .site-footer {
  opacity: 0;
  transform: translate3d(0,-7px,0);
  transition:
    opacity var(--motion-page-out) ease,
    transform var(--motion-page-out) var(--motion-ease);
}
html.page-arriving main,
html.page-arriving .site-footer {
  opacity: 0;
  transform: translate3d(0,10px,0);
}
html.page-entered main,
html.page-entered .site-footer {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--motion-page-in) var(--motion-ease),
    transform var(--motion-page-in) var(--motion-ease);
}

/* Ambient movement on the Start page only. */
.hero::before { animation: ambient-drift 8s ease-in-out infinite alternate; }
.hero-field { animation: field-drift 7s ease-in-out infinite alternate; }
.tech-tag { animation: tag-float 4.6s ease-in-out infinite alternate; }
.tag-electronics { animation-delay: -1.4s; }
.tag-automation { animation-delay: -2.8s; }
.orbit i { animation: orbit-glow 3.4s ease-in-out infinite alternate; }
@keyframes ambient-drift {
  from { transform: translate3d(-14px,9px,0) scale(1); }
  to { transform: translate3d(16px,-14px,0) scale(1.025); }
}
@keyframes field-drift {
  from { transform: translate3d(-2%,0,0); opacity: .55; }
  to { transform: translate3d(2.2%,3%,0); opacity: 1; }
}
@keyframes tag-float {
  from { transform: translate3d(0,0,0); }
  to { transform: translate3d(0,-10px,0); }
}
@keyframes orbit-glow { from { opacity: .48; } to { opacity: 1; } }

/* One interaction language for all buttons/cards. */
.btn,.button,.pill,.submit,.card,.capability,.app-highlight,.proof,.tech-tag {
  transition:
    transform var(--motion-ui) var(--motion-ease),
    border-color var(--motion-ui) ease,
    background-color var(--motion-ui) ease,
    box-shadow var(--motion-ui) ease,
    opacity var(--motion-ui) ease;
}
.nav a { transition: color var(--motion-ui) ease, opacity var(--motion-ui) ease; }
.card::before { transition: opacity var(--motion-ui) ease; }
.button span[aria-hidden],
.pill span[aria-hidden],
.submit span[aria-hidden] {
  transition: transform var(--motion-ui) var(--motion-ease), opacity var(--motion-ui) ease;
}
@media (hover:hover) and (pointer:fine) {
  .btn:hover,.button:hover,.pill:hover,.submit:hover { transform: translateY(-3px); }
  .card:hover,.capability:hover,.app-highlight:hover { transform: translateY(-5px); }
  .button:hover span[aria-hidden],
  .pill:hover span[aria-hidden],
  .submit:hover span[aria-hidden] { transform: translateX(5px); }
}

.faq-items details[open] .faq-answer { animation: answer-in 300ms var(--motion-ease); }
@keyframes answer-in {
  from { opacity: .2; transform: translateY(-7px); }
  to { opacity: 1; transform: none; }
}

@media print {
  *,*::before,*::after { animation: none !important; transition: none !important; }
  .motion-ready [data-reveal],
  html.page-arriving main,
  html.page-arriving .site-footer { opacity: 1 !important; transform: none !important; }
}
