/* ===========================
   ANIMATIONS — Cat Theme 🐾✨
   ========================= */

/* ===== CARD ENTRANCE ===== */
@keyframes cardEnter {
    from {
        opacity: 0;
        transform: translateY(16px) scale(0.95);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.anim-card-enter {
    animation: cardEnter 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

/* ===== FADE IN UP ===== */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.anim-fade-in-up {
    animation: fadeInUp 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

/* ===== DOT POP ===== */
@keyframes dotPop {
    0% {
        transform: scale(0);
    }

    60% {
        transform: scale(1.4);
    }

    100% {
        transform: scale(1);
    }
}

.anim-dot-pop {
    animation: dotPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

/* ===== STAGGERED DELAYS ===== */
.anim-card-enter:nth-child(1) {
    animation-delay: 0s;
}

.anim-card-enter:nth-child(2) {
    animation-delay: 0.06s;
}

.anim-card-enter:nth-child(3) {
    animation-delay: 0.12s;
}

.anim-card-enter:nth-child(4) {
    animation-delay: 0.18s;
}

.anim-card-enter:nth-child(5) {
    animation-delay: 0.24s;
}

.anim-card-enter:nth-child(6) {
    animation-delay: 0.30s;
}

/* ===== CELL ENTRANCE (staggered) ===== */
@keyframes cellPop {
    from {
        opacity: 0;
        transform: scale(0.8);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

.day-cell {
    animation: cellPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

/* Stagger each cell */
.day-cell:nth-child(1) {
    animation-delay: 0.01s;
}

.day-cell:nth-child(2) {
    animation-delay: 0.02s;
}

.day-cell:nth-child(3) {
    animation-delay: 0.03s;
}

.day-cell:nth-child(4) {
    animation-delay: 0.04s;
}

.day-cell:nth-child(5) {
    animation-delay: 0.05s;
}

.day-cell:nth-child(6) {
    animation-delay: 0.06s;
}

.day-cell:nth-child(7) {
    animation-delay: 0.07s;
}

.day-cell:nth-child(8) {
    animation-delay: 0.08s;
}

.day-cell:nth-child(9) {
    animation-delay: 0.09s;
}

.day-cell:nth-child(10) {
    animation-delay: 0.10s;
}

.day-cell:nth-child(11) {
    animation-delay: 0.11s;
}

.day-cell:nth-child(12) {
    animation-delay: 0.12s;
}

.day-cell:nth-child(13) {
    animation-delay: 0.13s;
}

.day-cell:nth-child(14) {
    animation-delay: 0.14s;
}

.day-cell:nth-child(15) {
    animation-delay: 0.15s;
}

.day-cell:nth-child(16) {
    animation-delay: 0.16s;
}

.day-cell:nth-child(17) {
    animation-delay: 0.17s;
}

.day-cell:nth-child(18) {
    animation-delay: 0.18s;
}

.day-cell:nth-child(19) {
    animation-delay: 0.19s;
}

.day-cell:nth-child(20) {
    animation-delay: 0.20s;
}

.day-cell:nth-child(21) {
    animation-delay: 0.21s;
}

.day-cell:nth-child(22) {
    animation-delay: 0.22s;
}

.day-cell:nth-child(23) {
    animation-delay: 0.23s;
}

.day-cell:nth-child(24) {
    animation-delay: 0.24s;
}

.day-cell:nth-child(25) {
    animation-delay: 0.25s;
}

.day-cell:nth-child(26) {
    animation-delay: 0.26s;
}

.day-cell:nth-child(27) {
    animation-delay: 0.27s;
}

.day-cell:nth-child(28) {
    animation-delay: 0.28s;
}

.day-cell:nth-child(29) {
    animation-delay: 0.29s;
}

.day-cell:nth-child(30) {
    animation-delay: 0.30s;
}

.day-cell:nth-child(31) {
    animation-delay: 0.31s;
}

.day-cell:nth-child(32) {
    animation-delay: 0.32s;
}

.day-cell:nth-child(33) {
    animation-delay: 0.33s;
}

.day-cell:nth-child(34) {
    animation-delay: 0.34s;
}

.day-cell:nth-child(35) {
    animation-delay: 0.35s;
}

.day-cell:nth-child(36) {
    animation-delay: 0.36s;
}

.day-cell:nth-child(37) {
    animation-delay: 0.37s;
}

/* ===== SHAKE ===== */
@keyframes shake {

    0%,
    100% {
        transform: translateX(0);
    }

    20% {
        transform: translateX(-8px);
    }

    40% {
        transform: translateX(8px);
    }

    60% {
        transform: translateX(-4px);
    }

    80% {
        transform: translateX(4px);
    }
}

.anim-shake {
    animation: shake 0.5s ease-in-out;
}

/* ===== CAT BOUNCE ===== */
@keyframes catBounce {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-6px);
    }
}

.cat-avatar {
    animation: catBounce 3s ease-in-out infinite;
}

.cat-avatar:nth-child(2) {
    animation-delay: 0.3s;
}

.cat-avatar:nth-child(3) {
    animation-delay: 0.6s;
}

/* ===== BANNER GENTLE FLOAT ===== */
@keyframes bannerFloat {

    0%,
    100% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.02);
    }
}

.banner-img {
    animation: bannerFloat 8s ease-in-out infinite;
}

/* ===== PAW TRAIL (decorative) ===== */
@keyframes pawTrail {
    0% {
        opacity: 0;
        transform: translateY(10px) rotate(-15deg);
    }

    30% {
        opacity: 0.5;
    }

    100% {
        opacity: 0;
        transform: translateY(-20px) rotate(15deg);
    }
}

/* ===== PURR (for today highlight) ===== */
@keyframes purr {

    0%,
    100% {
        box-shadow: 0 4px 16px rgba(232, 131, 124, 0.3);
    }

    50% {
        box-shadow: 0 4px 24px rgba(232, 131, 124, 0.5), 0 0 0 6px rgba(232, 131, 124, 0.1);
    }
}

.day-cell.today {
    animation: cellPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both,
        purr 2.5s ease-in-out infinite 0.5s;
}

/* ===== CONFETTI COLORS (for fish themed) ===== */
@keyframes fishConfetti {
    0% {
        transform: translateY(0) rotate(0deg);
        opacity: 1;
    }

    100% {
        transform: translateY(100vh) rotate(720deg);
        opacity: 0;
    }
}