/* ==========================================================================
   KaratShield Secure Vault — Motion System
   AOS overrides + custom luxury keyframes (respects prefers-reduced-motion)
   ========================================================================== */

[data-aos] { transition-property: transform, opacity; }
[data-aos="fade-up"] { transform: translateY(32px); opacity: 0; transition-duration: 800ms; transition-timing-function: cubic-bezier(0.19,1,0.22,1); }
[data-aos="fade-up"].aos-animate { transform: translateY(0); opacity: 1; }
[data-aos="fade-down"] { transform: translateY(-32px); opacity: 0; transition-duration: 800ms; transition-timing-function: cubic-bezier(0.19,1,0.22,1); }
[data-aos="fade-down"].aos-animate { transform: translateY(0); opacity: 1; }
[data-aos="fade-left"] { transform: translateX(40px); opacity: 0; transition-duration: 800ms; }
[data-aos="fade-left"].aos-animate { transform: translateX(0); opacity: 1; }
[data-aos="fade-right"] { transform: translateX(-40px); opacity: 0; transition-duration: 800ms; }
[data-aos="fade-right"].aos-animate { transform: translateX(0); opacity: 1; }
[data-aos="zoom-in"] { transform: scale(0.92); opacity: 0; transition-duration: 700ms; }
[data-aos="zoom-in"].aos-animate { transform: scale(1); opacity: 1; }

@keyframes floatSlow { 0%, 100% { transform: translateY(0) translateX(0); } 50% { transform: translateY(-18px) translateX(6px); } }
@keyframes floatSlower { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(22px); } }
.float-el { animation: floatSlow 8s ease-in-out infinite; }
.float-el-alt { animation: floatSlower 11s ease-in-out infinite; }

@keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
.shimmer-line { background: linear-gradient(90deg, transparent 0%, rgba(201,162,39,0.5) 50%, transparent 100%); background-size: 200% 100%; animation: shimmer 3.5s linear infinite; }

@keyframes pulseRing { 0% { box-shadow: 0 0 0 0 rgba(201,162,39,0.35); } 100% { box-shadow: 0 0 0 16px rgba(201,162,39,0); } }
.pulse-ring { animation: pulseRing 2.2s var(--ease-out) infinite; }

@keyframes rotateSlow { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.rotate-slow { animation: rotateSlow 40s linear infinite; }

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.fade-in { animation: fadeIn var(--dur-slow) var(--ease-out) both; }

/* Counter number tick */
.counting { font-variant-numeric: tabular-nums; }

/* Page transition overlay */
.page-transition-overlay { position: fixed; inset: 0; z-index: var(--z-loader); background: var(--black-pure); transform: translateY(100%); pointer-events: none; }
.page-transition-overlay.active { transition: transform 0.5s var(--ease-in-out); transform: translateY(0%); }

/* Magnetic hover wrapper (JS toggles transform via inline style) */
.magnetic { will-change: transform; transition: transform 0.25s var(--ease-out); }

/* Marquee for logo / partner strip */
.marquee-track { display: flex; gap: var(--space-8); width: max-content; animation: marquee 32s linear infinite; }
.marquee-track:hover { animation-play-state: paused; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.marquee-wrap { overflow: hidden; mask-image: linear-gradient(90deg, transparent, black 8%, black 92%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, black 8%, black 92%, transparent); }

@media (prefers-reduced-motion: reduce) {
  [data-aos] { transition: none !important; transform: none !important; opacity: 1 !important; }
  .float-el, .float-el-alt, .rotate-slow, .marquee-track, .pulse-ring, .shimmer-line { animation: none !important; }
}
