/* Keyframes copied verbatim from the handoff. */
@keyframes g9draw{from{stroke-dashoffset:var(--len)}to{stroke-dashoffset:0}}
@keyframes g9fade{from{opacity:0}to{opacity:1}}
@keyframes g9pop{0%{transform:scale(0) rotate(-40deg)}70%{transform:scale(1.08) rotate(4deg)}100%{transform:scale(1) rotate(0)}}
@keyframes g9sway{0%,100%{transform:rotate(0)}50%{transform:rotate(-5deg)}}
@keyframes g9float{0%{transform:translate(0,0);opacity:0}15%{opacity:.9}100%{transform:translate(var(--dx),-150px);opacity:0}}
@keyframes g9breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}
@keyframes g9seed{0%{transform:translateY(-40px);opacity:0}60%{transform:translateY(3px);opacity:1}100%{transform:translateY(0);opacity:1}}
@keyframes g9rise{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes g9fall{0%{transform:translateY(-320px) rotate(-40deg);opacity:0}12%{opacity:1}68%{transform:translateY(0) rotate(18deg)}80%{transform:translateY(-16px) rotate(8deg)}90%{transform:translateY(0) rotate(0)}95%{transform:translateY(-4px)}100%{transform:translateY(0) rotate(0);opacity:1}}
@keyframes g9sink{0%{transform:translateY(0) scale(1);opacity:1}100%{transform:translateY(18px) scale(.55);opacity:0}}
@keyframes g9emerge{0%{transform:translateY(270px)}100%{transform:translateY(0)}}
@keyframes g9crumb{0%{transform:translate(0,0);opacity:0}15%{opacity:1}45%{transform:translate(var(--dx),-28px)}100%{transform:translate(calc(var(--dx) * 1.7),6px);opacity:0}}
@keyframes g9bulge{0%{transform:scaleY(0);opacity:0}40%{transform:scaleY(2.4);opacity:.55}100%{transform:scaleY(1);opacity:.3}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important}}

/* buildScene() element styles, moved to CSS for a strict CSP. */
.scene-0{display:block;overflow:visible}
.scene-1{opacity:0;transform-origin:250px 190px;animation:g9fade 1.6s ease-out 3.6s forwards, g9breathe 6s ease-in-out 5.2s infinite}
.scene-2{stroke-dasharray:150;stroke-dashoffset:150;--len:150;animation:g9draw 1.2s cubic-bezier(.6,.05,.3,1) 2s forwards;opacity:0.45}
.scene-3{stroke-dasharray:40;stroke-dashoffset:40;--len:40;animation:g9draw 0.6s cubic-bezier(.6,.05,.3,1) 2.5s forwards;opacity:0.45}
.scene-4{stroke-dasharray:40;stroke-dashoffset:40;--len:40;animation:g9draw 0.6s cubic-bezier(.6,.05,.3,1) 2.65s forwards;opacity:0.45}
.scene-5{stroke-dasharray:40;stroke-dashoffset:40;--len:40;animation:g9draw 0.6s cubic-bezier(.6,.05,.3,1) 2.8s forwards;opacity:0.45}
.scene-6{stroke-dasharray:40;stroke-dashoffset:40;--len:40;animation:g9draw 0.6s cubic-bezier(.6,.05,.3,1) 2.95s forwards;opacity:0.45}
.scene-7{animation:g9emerge 1.9s cubic-bezier(.22,.9,.25,1) 2.4s both}
.scene-8{stroke-dasharray:420;stroke-dashoffset:420;--len:420;animation:g9draw 1.2s cubic-bezier(.6,.05,.3,1) 0s forwards}
.scene-9{opacity:0.55;transform-origin:280px 300px;transform:scaleY(0);animation:g9bulge .9s ease-out 2.3s both}
.scene-10{opacity:0;--dx:-26px;animation:g9crumb .9s ease-out 2.45s both}
.scene-11{opacity:0;--dx:-12px;animation:g9crumb .9s ease-out 2.51s both}
.scene-12{opacity:0;--dx:6px;animation:g9crumb .9s ease-out 2.47s both}
.scene-13{opacity:0;--dx:20px;animation:g9crumb .9s ease-out 2.55s both}
.scene-14{opacity:0;--dx:34px;animation:g9crumb .9s ease-out 2.49s both}
.scene-15{transform-origin:278px 293px;animation:g9fall 1.3s cubic-bezier(.45,0,.55,1) .25s both}
.scene-16{transform-origin:278px 293px;animation:g9sink .6s ease-in 1.75s forwards}
.scene-17{transform-origin:268px 296px;animation:g9pop .9s cubic-bezier(.3,1.5,.5,1) 4.1s both}
.scene-18{transform-origin:268px 296px;animation:g9sway 4.5s ease-in-out 5s infinite}
.scene-19{opacity:0;--dx:-18px;animation:g9float 5s ease-out 5.2s infinite}
.scene-20{opacity:0;--dx:12px;animation:g9float 5s ease-out 6.1s infinite}
.scene-21{opacity:0;--dx:-8px;animation:g9float 5s ease-out 5.6s infinite}
.scene-22{opacity:0;--dx:20px;animation:g9float 5s ease-out 6.6s infinite}
.scene-23{opacity:0;--dx:6px;animation:g9float 5s ease-out 7.2s infinite}
.scene-24{opacity:0;--dx:-22px;animation:g9float 5s ease-out 7.8s infinite}
