/* More expressive movement: a diagonal reveal and a camera move shared by lights. */
.festi-moment-scene{opacity:0;clip-path:inset(0 0 0 100%);transform:scale(1.025);transition:clip-path 1.25s cubic-bezier(.22,.7,.25,1),opacity .95s ease;z-index:0}
.festi-moment-scene.is-active{z-index:2;opacity:1;clip-path:inset(0 0 0 0);animation:festi-camera-arrive 7.8s cubic-bezier(.15,.4,.3,1) both}
.festi-moment-scene.is-leaving{z-index:1;opacity:1;clip-path:inset(0);animation:festi-camera-arrive 7.8s cubic-bezier(.15,.4,.3,1) both}
.festi-moment-scene.is-active::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(110deg,transparent 28%,#ffe5b232 45%,#fff1d347 48%,transparent 64%);mix-blend-mode:screen;transform:translateX(-130%);animation:festi-camera-light 1.8s ease-out both}
.festi-moment-scene:nth-child(even).is-active,.festi-moment-scene:nth-child(even).is-leaving{animation-name:festi-camera-arrive-reverse}
.festi-moments[data-motion-phase="0"] .festi-moment-caption{animation:festi-caption-a .9s cubic-bezier(.22,.7,.25,1) both}
.festi-moments[data-motion-phase="1"] .festi-moment-caption{animation:festi-caption-b .9s cubic-bezier(.22,.7,.25,1) both}
.festi-moment-caption>span{font-size:13px}
.festi-moment-dot{overflow:hidden}
.festi-moment-dot>span{position:relative;background:#fff7e745}
.festi-moment-dot[aria-pressed=true]>span{background:#fff7e74d;box-shadow:none}
.festi-moment-dot[aria-pressed=true]>span::after{content:"";position:absolute;inset:0;border-radius:5px;background:#f7d794;transform-origin:left;animation:festi-chapter-time 6.5s linear both;box-shadow:0 0 12px #ffd58b80}
[dir=rtl] .festi-moment-dot[aria-pressed=true]>span::after{transform-origin:right}
.festi-moment-atmosphere{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;mix-blend-mode:screen;opacity:.9}
.festi-moment-atmosphere>i{position:absolute;left:var(--mote-x);top:100%;width:4px;height:4px;border-radius:50%;background:#ffe6b1;box-shadow:0 0 10px 3px #f1c47b70;animation:festi-golden-mote var(--mote-duration) linear var(--mote-delay) infinite;opacity:0}
.festi-moments:not([data-moment="0"]):not([data-moment="1"]) .festi-moment-atmosphere{display:none}
.festi-moments.is-paused :is(.festi-moment-scene,.festi-moment-caption,.festi-moment-atmosphere>i),
.festi-moments.is-paused .festi-moment-scene::after,
.festi-moments.is-paused .festi-moment-dot>span::after{animation-play-state:paused}
@keyframes festi-camera-arrive{from{transform:scale(1.14) translate(-1.2%,.5%)}to{transform:scale(1.025) translate(.4%,0)}}
@keyframes festi-camera-arrive-reverse{from{transform:scale(1.035) translate(.7%,.3%)}to{transform:scale(1.135) translate(-1%,-.6%)}}
@keyframes festi-camera-light{from{transform:translateX(-130%);opacity:0}25%{opacity:.6}to{transform:translateX(130%);opacity:0}}
@keyframes festi-caption-a{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes festi-caption-b{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes festi-chapter-time{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes festi-golden-mote{0%{opacity:0;transform:translate(0,0) scale(.6)}15%{opacity:.5}75%{opacity:.3}100%{opacity:0;transform:translate(45px,-480px) scale(.3)}}
@media(max-width:767px){
 .festi-moment-caption>span{font-size:11px}
 .festi-moment-atmosphere>i{width:3px;height:3px}
}
@media(prefers-reduced-motion:reduce){
 .festi-moment-scene,.festi-moment-scene.is-active,.festi-moment-scene.is-leaving{animation:none!important;transition:none;transform:none;clip-path:none}
 .festi-moment-scene.is-leaving{opacity:0}
 .festi-moment-scene.is-active::after,.festi-moment-atmosphere{display:none}
 .festi-moments .festi-moment-caption{animation:none!important}
 .festi-moment-dot[aria-pressed=true]>span::after{animation:none;transform:scaleX(1)}
}
