/* Блоби, reveal/stagger, конфеті, календар-переходи */

.blob-field{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}
.blob{position:absolute;border-radius:50%;filter:blur(50px);opacity:.55;will-change:transform}
.blob1{width:420px;height:420px;background:radial-gradient(circle at 30% 30%,#818CF8,#4F46E5);top:-140px;left:-100px;animation:blob-float-1 22s ease-in-out infinite}
.blob2{width:360px;height:360px;background:radial-gradient(circle at 30% 30%,#5EEAD4,#14B8A6);bottom:-140px;right:-80px;animation:blob-float-2 26s ease-in-out infinite}
.blob3{width:260px;height:260px;background:radial-gradient(circle at 30% 30%,#FDBA74,#F97316);top:20%;right:10%;animation:blob-float-3 18s ease-in-out infinite}
@keyframes blob-float-1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(60px,40px) scale(1.1)}}
@keyframes blob-float-2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-50px,-30px) scale(1.08)}}
@keyframes blob-float-3{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-30px,50px) scale(.92)}}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.reveal.in{opacity:1;transform:none}
.reveal-stagger.in > *{opacity:1;transform:none}
.reveal-stagger > *{opacity:0;transform:translateY(24px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1)}
.reveal-stagger.in > *:nth-child(1){transition-delay:.02s}
.reveal-stagger.in > *:nth-child(2){transition-delay:.09s}
.reveal-stagger.in > *:nth-child(3){transition-delay:.16s}
.reveal-stagger.in > *:nth-child(4){transition-delay:.23s}
.reveal-stagger.in > *:nth-child(5){transition-delay:.30s}
.reveal-stagger.in > *:nth-child(6){transition-delay:.37s}
.reveal-stagger.in > *:nth-child(7){transition-delay:.44s}
.reveal-stagger.in > *:nth-child(8){transition-delay:.51s}
.reveal-stagger.in > *:nth-child(9){transition-delay:.58s}

@keyframes fade-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.calendar-grid-wrap{position:relative;overflow:hidden}
.month-slide-out-l{animation:cal-out-l .28s ease forwards}
.month-slide-out-r{animation:cal-out-r .28s ease forwards}
.month-slide-in-l{animation:cal-in-l .32s ease forwards}
.month-slide-in-r{animation:cal-in-r .32s ease forwards}
@keyframes cal-out-l{to{opacity:0;transform:translateX(-30px)}}
@keyframes cal-out-r{to{opacity:0;transform:translateX(30px)}}
@keyframes cal-in-l{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:none}}
@keyframes cal-in-r{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:none}}

.hero-chip-in{animation:chip-pop .5s cubic-bezier(.34,1.56,.64,1) backwards}
@keyframes chip-pop{from{opacity:0;transform:scale(.7) translateY(8px)}to{opacity:1;transform:none}}

#confetti-canvas{position:fixed;inset:0;z-index:1300;pointer-events:none}

.pulse-dot{width:9px;height:9px;border-radius:50%;background:var(--coral);position:relative;flex-shrink:0}
.pulse-dot::after{content:"";position:absolute;inset:-5px;border-radius:50%;background:var(--coral);opacity:.5;animation:pulse-ring 1.8s ease-out infinite}
@keyframes pulse-ring{0%{transform:scale(.6);opacity:.6}100%{transform:scale(2.1);opacity:0}}

.spin-slow{animation:spin-slow 12s linear infinite}
@keyframes spin-slow{to{transform:rotate(360deg)}}

.count-up{font-variant-numeric:tabular-nums}
