/**
 * ============================================================================
 * Copyright (c) 2026 BAWASLU-M FH ULM. All Rights Reserved.
 * Badan Pengawas Pemilihan Umum Mahasiswa
 * Fakultas Hukum, Universitas Lambung Mangkurat
 *
 * PROPRIETARY & CONFIDENTIAL SOURCE CODE
 * ----------------------------------------------------------------------------
 * This software, web application, source code, scripts, styles, architecture,
 * and associated assets are the exclusive intellectual property of BAWASLU-M FH ULM.
 *
 * Any unauthorized copying, reproduction, distribution, scraping, decompilation,
 * reverse engineering, modification, or appropriation of this source code,
 * in whole or in part, is strictly prohibited and deemed highly unethical under
 * institutional, academic, and applicable intellectual property legal frameworks.
 * ============================================================================
 */

@keyframes paperFloat {
  0%, 100% {
    transform: translateY(0) rotate(var(--rot, 0deg));
  }
  50% {
    transform: translateY(-5px) rotate(calc(var(--rot, 0deg) + 0.5deg));
  }
}

@keyframes stampSlam {
  0% {
    opacity: 0;
    transform: scale(2.2) rotate(-15deg);
  }
  70% {
    opacity: 1;
    transform: scale(0.92) rotate(calc(var(--rot, -3deg) - 2deg));
  }
  100% {
    opacity: 0.95;
    transform: scale(1) rotate(var(--rot, -3deg));
  }
}

@keyframes pinWiggle {
  0%, 100% { transform: scale(1) rotate(0deg); }
  25% { transform: scale(1.1) rotate(-8deg); }
  75% { transform: scale(1.1) rotate(8deg); }
}

@keyframes paperPlaneDrift {
  0% {
    transform: translate(0, 0) rotate(15deg);
  }
  50% {
    transform: translate(12px, -8px) rotate(18deg);
  }
  100% {
    transform: translate(0, 0) rotate(15deg);
  }
}

@keyframes eyeBlink {
  0%, 96%, 100% { transform: scaleY(1); }
  98% { transform: scaleY(0.1); }
}

@keyframes pulseHighlight {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(209, 62, 62, 0.4);
  }
  50% {
    box-shadow: 0 0 0 10px rgba(209, 62, 62, 0);
  }
}

.animate-stamp {
  animation: stampSlam 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

.animate-float {
  animation: paperFloat 4.5s ease-in-out infinite;
}

.animate-plane {
  animation: paperPlaneDrift 6s ease-in-out infinite;
}

@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;
  }
}
