.ribbon-sky{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:7;contain:strict;perspective:700px}
.ribbon-particle{position:absolute;top:-40px;left:var(--left);width:12px;height:28px;opacity:0;animation:ribbon-fall var(--fall) var(--delay) linear infinite;pointer-events:none}
.ribbon-particle span{display:block;width:8px;height:17px;border-radius:1px;background:var(--particle-color);animation:ribbon-tumble 2.7s var(--delay) ease-in-out infinite;box-shadow:inset -2px 0 #fff5}
.ribbon-particle.streamer span{width:6px;height:29px;border-radius:2px;animation-duration:3.4s}
.ribbon-particle.paper span{width:10px;height:7px;animation-duration:2.1s}
.ribbon-particle.star span{width:13px;height:13px;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 94%,50% 72%,21% 94%,32% 57%,2% 35%,39% 35%);box-shadow:none;animation-duration:4s}
.ribbon-particle.dot span{width:7px;height:7px;border-radius:50%;box-shadow:inset -1px -1px #fff5}
.ribbon-particle.curled span{width:12px;height:26px;border:3px solid var(--particle-color);border-left-color:transparent;border-right-color:transparent;background:transparent;border-radius:50%;box-shadow:none}
.celebration-paused .ribbon-particle,.celebration-paused .ribbon-particle span{animation-play-state:paused!important}
.bottom-bar{z-index:12}#photo-viewer{z-index:30}
@keyframes ribbon-fall{0%{transform:translate3d(0,-15px,0) rotate(0deg);opacity:0}8%{opacity:var(--strength)}48%{transform:translate3d(var(--drift),52vh,0) rotate(calc(var(--spin)*.5));opacity:var(--strength)}90%{opacity:var(--strength)}100%{transform:translate3d(calc(var(--drift)*-.45),110vh,0) rotate(var(--spin));opacity:0}}
@keyframes ribbon-tumble{0%,100%{transform:rotateX(15deg) rotateY(15deg) rotateZ(-10deg)}50%{transform:rotateX(160deg) rotateY(35deg) rotateZ(25deg)}}
@media(max-width:799px){.ribbon-particle:nth-child(n+35){display:none}.ribbon-particle.streamer span{height:24px}.ribbon-particle.star span{width:11px;height:11px}.ribbon-particle.curled span{width:10px;height:22px}}
@media(prefers-reduced-motion:reduce){.ribbon-sky{display:none}.ribbon-particle,.ribbon-particle span{animation:none!important}}
