/*
 * M3 Motion
 * Spring (motion physics system, M3 Expressive): https://m3.material.io/styles/motion/overview/specs
 *   — kurva CSS = konversi resmi "Web: Convert springs to curves" dari halaman spec.
 * Easing & duration (legacy, dipakai untuk transisi): https://m3.material.io/styles/motion/easing-and-duration/tokens-specs
 *   — diverifikasi terhadap androidx compose material3 tokens/MotionTokens.kt.
 */
@layer tokens, base, components, utilities;
@layer tokens {
  :root {
    /* Spring composites → cubic-bezier + durasi (spatial = posisi/ukuran, effects = warna/opacity) */
    --md-sys-motion-spring-expressive-fast-spatial: cubic-bezier(0.42, 1.67, 0.21, 0.9);
    --md-sys-motion-spring-expressive-fast-spatial-duration: 350ms;
    --md-sys-motion-spring-expressive-default-spatial: cubic-bezier(0.38, 1.21, 0.22, 1);
    --md-sys-motion-spring-expressive-default-spatial-duration: 500ms;
    --md-sys-motion-spring-expressive-slow-spatial: cubic-bezier(0.39, 1.29, 0.35, 0.98);
    --md-sys-motion-spring-expressive-slow-spatial-duration: 650ms;
    --md-sys-motion-spring-expressive-fast-effects: cubic-bezier(0.31, 0.94, 0.34, 1);
    --md-sys-motion-spring-expressive-fast-effects-duration: 150ms;
    --md-sys-motion-spring-expressive-default-effects: cubic-bezier(0.34, 0.8, 0.34, 1);
    --md-sys-motion-spring-expressive-default-effects-duration: 200ms;
    --md-sys-motion-spring-expressive-slow-effects: cubic-bezier(0.34, 0.88, 0.34, 1);
    --md-sys-motion-spring-expressive-slow-effects-duration: 300ms;
    --md-sys-motion-spring-standard-fast-spatial: cubic-bezier(0.27, 1.06, 0.18, 1);
    --md-sys-motion-spring-standard-fast-spatial-duration: 350ms;
    --md-sys-motion-spring-standard-default-spatial: cubic-bezier(0.27, 1.06, 0.18, 1);
    --md-sys-motion-spring-standard-default-spatial-duration: 500ms;
    --md-sys-motion-spring-standard-slow-spatial: cubic-bezier(0.27, 1.06, 0.18, 1);
    --md-sys-motion-spring-standard-slow-spatial-duration: 750ms;
    --md-sys-motion-spring-standard-fast-effects: cubic-bezier(0.31, 0.94, 0.34, 1);
    --md-sys-motion-spring-standard-fast-effects-duration: 150ms;
    --md-sys-motion-spring-standard-default-effects: cubic-bezier(0.34, 0.8, 0.34, 1);
    --md-sys-motion-spring-standard-default-effects-duration: 200ms;
    --md-sys-motion-spring-standard-slow-effects: cubic-bezier(0.34, 0.88, 0.34, 1);
    --md-sys-motion-spring-standard-slow-effects-duration: 300ms;

    /* Easing */
    --md-sys-motion-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
    --md-sys-motion-easing-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1);
    --md-sys-motion-easing-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15);
    --md-sys-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
    --md-sys-motion-easing-standard-decelerate: cubic-bezier(0, 0, 0, 1);
    --md-sys-motion-easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1);
    --md-sys-motion-easing-linear: cubic-bezier(0, 0, 1, 1);

    /* Duration */
    --md-sys-motion-duration-short1: 50ms;
    --md-sys-motion-duration-short2: 100ms;
    --md-sys-motion-duration-short3: 150ms;
    --md-sys-motion-duration-short4: 200ms;
    --md-sys-motion-duration-medium1: 250ms;
    --md-sys-motion-duration-medium2: 300ms;
    --md-sys-motion-duration-medium3: 350ms;
    --md-sys-motion-duration-medium4: 400ms;
    --md-sys-motion-duration-long1: 450ms;
    --md-sys-motion-duration-long2: 500ms;
    --md-sys-motion-duration-long3: 550ms;
    --md-sys-motion-duration-long4: 600ms;
    --md-sys-motion-duration-extra-long1: 700ms;
    --md-sys-motion-duration-extra-long2: 800ms;
    --md-sys-motion-duration-extra-long3: 900ms;
    --md-sys-motion-duration-extra-long4: 1000ms;
  }

  /* Hormati preferensi pengguna: semua durasi ≈ 0 (transisi tetap "terjadi" untuk event JS). */
  @media (prefers-reduced-motion: reduce) {
    :root {
      --md-sys-motion-spring-expressive-fast-spatial-duration: 1ms;
      --md-sys-motion-spring-expressive-default-spatial-duration: 1ms;
      --md-sys-motion-spring-expressive-slow-spatial-duration: 1ms;
      --md-sys-motion-spring-expressive-fast-effects-duration: 1ms;
      --md-sys-motion-spring-expressive-default-effects-duration: 1ms;
      --md-sys-motion-spring-expressive-slow-effects-duration: 1ms;
      --md-sys-motion-spring-standard-fast-spatial-duration: 1ms;
      --md-sys-motion-spring-standard-default-spatial-duration: 1ms;
      --md-sys-motion-spring-standard-slow-spatial-duration: 1ms;
      --md-sys-motion-spring-standard-fast-effects-duration: 1ms;
      --md-sys-motion-spring-standard-default-effects-duration: 1ms;
      --md-sys-motion-spring-standard-slow-effects-duration: 1ms;
      --md-sys-motion-duration-short1: 1ms;
      --md-sys-motion-duration-short2: 1ms;
      --md-sys-motion-duration-short3: 1ms;
      --md-sys-motion-duration-short4: 1ms;
      --md-sys-motion-duration-medium1: 1ms;
      --md-sys-motion-duration-medium2: 1ms;
      --md-sys-motion-duration-medium3: 1ms;
      --md-sys-motion-duration-medium4: 1ms;
      --md-sys-motion-duration-long1: 1ms;
      --md-sys-motion-duration-long2: 1ms;
      --md-sys-motion-duration-long3: 1ms;
      --md-sys-motion-duration-long4: 1ms;
      --md-sys-motion-duration-extra-long1: 1ms;
      --md-sys-motion-duration-extra-long2: 1ms;
      --md-sys-motion-duration-extra-long3: 1ms;
      --md-sys-motion-duration-extra-long4: 1ms;
    }
  }
}
