/* motion.css — keyframes + reduced-motion overrides.
   Extracted verbatim from the original inline <style>. */

@keyframes float {
    0%, 100% { transform: translate(0, 0) rotate(0deg); }
    25% { transform: translate(30px, -30px) rotate(5deg); }
    50% { transform: translate(-20px, 20px) rotate(-5deg); }
    75% { transform: translate(20px, 30px) rotate(3deg); }
}

@keyframes dropIn {
    from { opacity: 0; transform: translateY(-50px) scale(0.8); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes spin { to { transform: rotate(360deg); } }

@keyframes fadeSlideUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes slideDown {
    from { opacity: 0; transform: translateY(-20px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes scaleIn {
    from { opacity: 0; transform: scale(0.9); }
    to { opacity: 1; transform: scale(1); }
}

@keyframes modalIn {
    from { opacity: 0; transform: scale(0.9); }
    to { opacity: 1; transform: scale(1); }
}

@keyframes spinner { to { transform: rotate(360deg); } }

@keyframes ambientDrift {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33%      { transform: translate(2%, -2%) scale(1.04); }
    66%      { transform: translate(-2%, 2%) scale(0.98); }
}

@keyframes grainShift {
    0%   { transform: translate(0, 0); }
    20%  { transform: translate(-3%, 2%); }
    40%  { transform: translate(2%, -1%); }
    60%  { transform: translate(-1%, -3%); }
    80%  { transform: translate(3%, 1%); }
    100% { transform: translate(0, 0); }
}

@keyframes dustRise {
    0%   { transform: translate3d(0, 8%, 0); }
    100% { transform: translate3d(-2%, -110%, 0); }
}

@keyframes floatY {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-10px); }
}

@keyframes glowPulse {
    0%, 100% { opacity: 0.65; transform: scale(1); }
    50%      { opacity: 1;    transform: scale(1.08); }
}

@keyframes shimmerLine {
    0%   { transform: scaleX(0); transform-origin: left; }
    50%  { transform: scaleX(1); transform-origin: left; }
    51%  { transform-origin: right; }
    100% { transform: scaleX(0); transform-origin: right; }
}

@keyframes inkSweep {
    0%   { stroke-dashoffset: 200; opacity: 0; }
    20%  { opacity: 1; }
    100% { stroke-dashoffset: 0;  opacity: 1; }
}

@keyframes modalArtIn {
    from { opacity: 0; transform: scale(0.96) translateY(12px); filter: blur(8px); }
    to   { opacity: 1; transform: scale(1)    translateY(0);     filter: blur(0); }
}

@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;
    }
    .paint-splash, .avatar-ring { animation: none !important; }
}
