/* V13 motion budget: three decorative layers on desktop, two on mobile.
   All continuous keyframes are transform-only. No top/left/filter animations.
   The page's actual text and product mockups are static while idle. */
@media (prefers-reduced-motion: no-preference) {
 .thread-float { animation: thread-suspend 16s ease-in-out infinite; animation-play-state: paused; }
 .bead-one { animation: thread-drift 19s ease-in-out infinite; animation-play-state: paused; }
 .bead-two { animation: thread-drift-secondary 23s ease-in-out infinite; animation-play-state: paused; }
 .hero.is-ambient-running .thread-float,
 .hero.is-ambient-running .thread-bead { animation-play-state: running; will-change: transform; }
 /* These classes exist only during entry, then are removed. Content is
    visible without JS or observers; no permanently hidden reveal nodes. */
 .reveal-enter { animation: content-enter .48s var(--ease) both; }
 .contact-dialog[open] { animation: dialog-enter .2s var(--ease) both; }
 .mobile-menu:not([hidden]) { animation: menu-enter .18s var(--ease) both; }
 .back-to-top:not([hidden]) { animation: menu-enter .18s ease both; }
}
@keyframes thread-suspend {
 0%, 100% { transform: translate3d(0, 3px, 0) rotate(-.65deg); }
 50% { transform: translate3d(0, -7px, 0) rotate(.65deg); }
}
@keyframes thread-drift {
 0%, 100% { transform: translate3d(0, 0, 0); }
 50% { transform: translate3d(7px, 11px, 0); }
}
@keyframes thread-drift-secondary {
 0%, 100% { transform: translate3d(0, 0, 0); }
 50% { transform: translate3d(9px, -8px, 0); }
}
@keyframes content-enter {
 from { opacity: .35; transform: translate3d(0, 8px, 0); }
 to { opacity: 1; transform: none; }
}
@keyframes dialog-enter {
 from { opacity: 0; transform: translate3d(0, 5px, 0); }
 to { opacity: 1; transform: none; }
}
@keyframes menu-enter { from { opacity: 0; } to { opacity: 1; } }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
 .product-card .desktop-device,
 .product-card .phone-device { transition: translate .4s var(--ease); }
 .product-card:hover .desktop-device { translate: 0 -3px; }
 .product-card:hover .ndt-phone,
 .product-card:hover .trust-call-phone { translate: 0 -6px; }
 .product-card:hover .trust-list-phone { translate: 0 -2px; }
 .hero-about span { transition: transform .22s var(--ease); }
 .hero-about:hover span { transform: translate(2px, -2px); }
 .back-link { transition: color .2s; }
}
@media (max-width: 767px) {
 /* Less texture movement on touch screens; no pointer parallax. */
 @keyframes thread-suspend {
  0%, 100% { transform: translate3d(0, 2px, 0); }
  50% { transform: translate3d(0, -4px, 0); }
 }
}
@media (prefers-reduced-motion: reduce) {
 html { scroll-behavior: auto !important; }
 *, *::before, *::after { animation: none !important; transition: none !important; }
 .thread-pointer, .thread-float, .thread-bead { transform: none !important; }
 .reveal-enter { opacity: 1; transform: none; }
}
