/* ── Splash ─────────────────────────────────────────────────────────────── */
@keyframes splash-pulse {
    0%, 100% { opacity: 1; }
    50%       { opacity: .85; }
}
@keyframes fade-in {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes bounce-dot {
    0%, 80%, 100% { transform: translateY(0); }
    40%           { transform: translateY(-10px); }
}
@keyframes scale-in {
    from { transform: scale(0); opacity: 0; }
    to   { transform: scale(1); opacity: 1; }
}
@keyframes slide-up {
    from { transform: translateY(100%); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}
@keyframes check-draw {
    0%   { stroke-dashoffset: 200; }
    100% { stroke-dashoffset: 0; }
}
@keyframes ring-pulse {
    0%   { transform: scale(1);   opacity: 1; }
    100% { transform: scale(1.6); opacity: 0; }
}

.anim-fade-in    { animation: fade-in .4s ease both; }
.anim-slide-up   { animation: slide-up .35s ease both; }
.anim-scale-in   { animation: scale-in .3s cubic-bezier(.175,.885,.32,1.275) both; }

.splash-screen   { animation: splash-pulse 3s ease-in-out infinite; }

.bounce-dot {
    display: inline-block;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: #fff;
    animation: bounce-dot 1.2s infinite ease-in-out;
}
.bounce-dot:nth-child(2) { animation-delay: .15s; }
.bounce-dot:nth-child(3) { animation-delay: .3s; }

/* Page transition */
.cowaka-page { animation: fade-in .25s ease both; }

/* Success ring */
.success-ring {
    position: absolute; inset: -6px;
    border-radius: 50%;
    border: 3px solid var(--cowaka-green);
    animation: ring-pulse 1s ease-out forwards;
}

/* Fade out */
@keyframes fadeOut {
    from { opacity: 1; transform: translateX(0); }
    to   { opacity: 0; transform: translateX(-16px); }
}
