.reveal {
    animation: revealUp .8s cubic-bezier(.2,.8,.2,1) both;
}

.reveal:nth-child(2) { animation-delay: .08s; }
.reveal:nth-child(3) { animation-delay: .16s; }
.reveal:nth-child(4) { animation-delay: .24s; }

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

.ambient {
    position: fixed;
    width: 360px;
    height: 360px;
    border-radius: 50%;
    filter: blur(100px);
    opacity: .12;
    pointer-events: none;
    z-index: -2;
    animation: float 12s ease-in-out infinite;
}

.ambient-1 {
    top: 10%;
    left: -140px;
    background: var(--pink);
}

.ambient-2 {
    right: -140px;
    bottom: 5%;
    background: var(--purple);
    animation-delay: -5s;
}

@keyframes float {
    0%, 100% { transform: translate(0,0) scale(1); }
    50% { transform: translate(30px,-25px) scale(1.08); }
}

.brand-mark {
    animation: softPulse 4s ease-in-out infinite;
}

@keyframes softPulse {
    0%, 100% { box-shadow: 0 0 0 rgba(255,107,154,0); }
    50% { box-shadow: 0 0 30px rgba(255,107,154,.13); }
}
