/* The outgoing scene and its vehicle share one duration, direction and pause. */
.festi-moments{--journey-duration:3.2s;--journey-ease:cubic-bezier(.4,0,.2,1)}
.festi-moments .festi-moment-scene{clip-path:inset(0);transition:opacity .8s ease}
.festi-procession{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.festi-traveller{position:absolute;visibility:hidden;opacity:0;filter:drop-shadow(0 4px 8px #091e2ec9) drop-shadow(0 0 10px #eac98240);will-change:transform}
.festi-traveller svg{display:block;width:100%;height:auto;overflow:visible}
.festi-traveller-carriage{width:clamp(170px,25vw,310px);left:0;top:29%;transform:translateX(-110%)}
.festi-traveller-plane{width:clamp(150px,23vw,280px);left:0;top:29%;transform:translateX(-110%)}
.festi-traveller-balloon{width:clamp(95px,12vw,145px);left:61%;top:100%;transform:translateY(0)}
.festi-traveller-runners{width:clamp(245px,30vw,365px);left:0;top:30%;transform:translateX(-110%)}
.festi-moments.is-journey .festi-moment-scene.is-active{z-index:1}
.festi-moments.is-journey .festi-moment-scene.is-active::after{display:none}
.festi-moments.is-journey .festi-moment-scene.is-leaving{z-index:2;opacity:1;transform:none;transition:none;animation-duration:var(--journey-duration);animation-timing-function:var(--journey-ease);animation-fill-mode:both}
.festi-moments.is-journey[data-journey=carriage] .is-leaving{animation-name:festi-carriage-scene}
.festi-moments.is-journey[data-journey=plane] .is-leaving{animation-name:festi-plane-scene}
.festi-moments.is-journey[data-journey=balloon] .is-leaving{animation-name:festi-balloon-scene}
.festi-moments.is-journey[data-journey=runners] .is-leaving{animation-name:festi-runners-scene}
.festi-moments.is-journey[data-journey=carriage] .festi-traveller-carriage,
.festi-moments.is-journey[data-journey=plane] .festi-traveller-plane,
.festi-moments.is-journey[data-journey=balloon] .festi-traveller-balloon,
.festi-moments.is-journey[data-journey=runners] .festi-traveller-runners{visibility:visible;animation-duration:var(--journey-duration);animation-timing-function:var(--journey-ease);animation-fill-mode:both}
.festi-moments.is-journey[data-journey=carriage] .festi-traveller-carriage{animation-name:festi-carriage-pass}
.festi-moments.is-journey[data-journey=plane] .festi-traveller-plane{animation-name:festi-plane-pass}
.festi-moments.is-journey[data-journey=balloon] .festi-traveller-balloon{animation-name:festi-balloon-pass}
.festi-moments.is-journey[data-journey=runners] .festi-traveller-runners{animation-name:festi-carriage-pass}
.festi-moments.is-journey[data-journey=runners] .festi-runner{animation:festi-runner-bob .48s ease-in-out var(--stride-delay) infinite alternate}
.festi-moments.is-journey[data-journey=runners] :is(.festi-runner-arm-front,.festi-runner-arm-back){transform-origin:53px 55px;animation:festi-runner-stride .48s ease-in-out var(--stride-delay) infinite alternate}
.festi-moments.is-journey[data-journey=runners] :is(.festi-runner-leg-front,.festi-runner-leg-back){transform-origin:46px 102px;animation:festi-runner-stride .48s ease-in-out var(--stride-delay) infinite alternate}
.festi-moments.is-journey[data-journey=runners] :is(.festi-runner-arm-back,.festi-runner-leg-front){animation-direction:alternate-reverse}
.festi-moments.is-journey .festi-carriage-wheel{animation:festi-wheel-turn .65s linear infinite}
.festi-moments.is-journey .festi-horse-legs{animation:festi-horse-step .32s ease-in-out infinite alternate;transform-origin:260px 112px}
.festi-moments.is-journey .festi-balloon-flame{animation:festi-balloon-fire .24s ease-in-out infinite alternate;transform-origin:90px 197px}
.festi-moments.is-journey .festi-moment-caption{animation-delay:1.5s}
.festi-moments.is-paused .festi-procession *,
.festi-moments.is-paused .festi-moment-scene.is-leaving,
.festi-moments.is-paused .festi-moment-caption{animation-play-state:paused!important}
@keyframes festi-carriage-scene{0%,10%{clip-path:inset(0)}90%,100%{clip-path:inset(0 0 0 100%)}}
@keyframes festi-plane-scene{0%,10%{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}90%,100%{clip-path:polygon(140% 0,140% 0,100% 100%,100% 100%)}}
@keyframes festi-balloon-scene{0%,10%{clip-path:inset(0)}90%,100%{clip-path:inset(0 0 100% 0)}}
@keyframes festi-runners-scene{0%,10%{clip-path:inset(0)}90%,100%{clip-path:inset(0 0 0 100%)}}
@keyframes festi-carriage-pass{0%{left:0;transform:translateX(-110%);opacity:0}8%{opacity:1}10%{left:0;transform:translateX(-65%)}90%{left:100%;transform:translateX(-65%);opacity:1}100%{left:100%;transform:translateX(10%);opacity:0}}
@keyframes festi-plane-pass{0%{left:0;top:42%;transform:translateX(-110%) rotate(-7deg);opacity:0}8%{opacity:1}10%{left:0;top:40%;transform:translateX(-55%) rotate(-7deg)}90%{left:100%;top:13%;transform:translateX(-55%) rotate(-7deg);opacity:1}100%{left:100%;top:10%;transform:translateX(30%) rotate(-7deg);opacity:0}}
@keyframes festi-balloon-pass{0%{top:100%;transform:translateY(15%) rotate(-3deg);opacity:0}8%{opacity:1}10%{top:100%;transform:translateY(-55%) rotate(-3deg)}90%{top:0%;transform:translateY(-95%) rotate(3deg);opacity:1}100%{top:0%;transform:translateY(-120%) rotate(3deg);opacity:0}}
@keyframes festi-wheel-turn{to{transform:rotate(360deg)}}
@keyframes festi-horse-step{from{transform:skewX(-4deg)}to{transform:skewX(4deg)}}
@keyframes festi-balloon-fire{from{transform:scale(.8);opacity:.7}to{transform:scale(1.1);opacity:1}}
@keyframes festi-runner-stride{from{transform:rotate(-19deg)}to{transform:rotate(23deg)}}
@keyframes festi-runner-bob{from{transform:translateY(0)}to{transform:translateY(-5px)}}
@media(max-width:767px){.festi-traveller-carriage{top:24%;width:185px}.festi-traveller-plane{width:170px}.festi-traveller-balloon{width:105px;left:62%}.festi-traveller-runners{top:26%;width:260px}}
@media(prefers-reduced-motion:reduce){.festi-procession{display:none}.festi-moments .festi-moment-scene{animation:none!important;clip-path:none!important;transform:none!important;transition:none}.festi-moments .festi-moment-scene.is-leaving{opacity:0!important}.festi-moments .festi-moment-caption{animation:none!important}}
