/* CIDA Egypt — motion. GENERATED by tokens/build-css.py — do not edit.
 *
 * Principle: WEIGHT AND LIGHT, NOT TRAVEL.
 * Things reveal by being lit, not by flying in. Motion is slow, weighted and
 * deliberate. Continuous motion is permitted only where it adds life.
 */

:root {
  /* ---- durations ---- */
  --dur-instant: 120ms;
  --dur-quick:   240ms;
  --dur-base:    420ms;
  --dur-slow:    720ms;
  --dur-rake:   1600ms;   /* the signature gold rake: 1400-1800ms */

  /* ---- easings ---- */
  --ease-out:   cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out:cubic-bezier(0.65, 0, 0.35, 1);
  --ease-weight:cubic-bezier(0.16, 0.84, 0.44, 1);  /* heavy object settling */

  /* ---- seal ---- */
  --seal-oscillation: 20deg;   /* +/-18-22 only. Never a full turn. */
  --seal-period: 24s;
}

/* --------------------------------------------------------------------------
 * The gold rake — the brand's one recognisable motion.
 * A specular sweep travelling across a gold surface.
 * -------------------------------------------------------------------------- */

@keyframes cida-rake {
  0%   { background-position: -140% 0; }
  100% { background-position:  240% 0; }
}

.rake {
  background-image: linear-gradient(
    105deg,
    rgba(244, 238, 214, 0) 38%,
    rgba(244, 238, 214, 0.55) 50%,
    rgba(244, 238, 214, 0) 62%
  );
  background-size: 220% 100%;
  background-repeat: no-repeat;
  animation: cida-rake var(--dur-rake) var(--ease-in-out) infinite;
}

/* --------------------------------------------------------------------------
 * Seal micro-oscillation. Axial only — past ~20deg foreshortening would render
 * ring script unreadable, and the mark stops reading as a struck face.
 * -------------------------------------------------------------------------- */

@keyframes cida-seal-oscillate {
  0%, 100% { transform: rotate(calc(var(--seal-oscillation) * -0.5)); }
  50%      { transform: rotate(calc(var(--seal-oscillation) *  0.5)); }
}

.seal-live {
  animation: cida-seal-oscillate var(--seal-period) var(--ease-in-out) infinite;
  transform-origin: 50% 50%;
  will-change: transform;
}

/* --------------------------------------------------------------------------
 * Reveals. Short travel, long fade — weight, not flight.
 * -------------------------------------------------------------------------- */

@keyframes cida-lift {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}

.reveal { animation: cida-lift var(--dur-slow) var(--ease-weight) both; }

/* --------------------------------------------------------------------------
 * Reduced motion.
 * BOTH states are designed, not derived: the rake becomes a static specular and
 * the seal becomes still. Nothing simply disappears.
 * -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .rake {
    animation: none;
    background-position: 46% 0;   /* hold the specular where it reads best */
  }

  .seal-live { animation: none; transform: none; }
  .reveal    { animation: none; opacity: 1; transform: none; }
}
