/* Weave once; only the background threads keep moving afterward. */
.flight{height:490px;position:relative;isolation:isolate;overflow:hidden;margin-inline:-26px}
.weave-scene{width:100%;height:100%;display:block;overflow:visible}
.weave-scene *{animation-duration:14s;animation-iteration-count:1;animation-fill-mode:both;animation-timing-function:linear}
.ambient{animation-name:ambient}.loom-rails{opacity:1}
.loose-thread{fill:none;stroke:#c78e4b;stroke-width:.65;opacity:.12;stroke-dasharray:1;stroke-dashoffset:1;animation-duration:14s,14s}
.warp-thread,.weft-thread{fill:none;stroke-dasharray:1;stroke-dashoffset:1;stroke-linecap:round;stroke-width:.5}
.warp-thread{stroke:#bc8248}.weft-thread{stroke:#f8c181;stroke-width:.64}
.silk-finish{opacity:0;animation-name:silk}.bird-edge{fill:none;stroke:#ffddb0;stroke-width:.12;opacity:0;animation-name:outline}
.stitches{opacity:0;animation-name:stitches}.shuttle{animation-name:shuttle;opacity:0;filter:drop-shadow(0 0 8px #efa455)}
.scene-annotation{opacity:.65}.scene-captions{position:absolute;inset:auto 0 12px;text-align:center;height:22px;font:12px var(--mono);letter-spacing:.1px;color:#a69b87}
.scene-captions span{position:absolute;inset:0;opacity:0;animation:caption-thread 14s linear 1 both}.scene-captions span:nth-child(2){animation-name:caption-weave}.scene-captions span:nth-child(3){animation-name:caption-woven}
.animation-panel.is-paused *{animation-play-state:paused!important}.phase-track span{color:#62685a;animation:phase-thread 14s linear 1 both}.phase-track span:nth-child(2){animation-name:phase-weave}.phase-track span:nth-child(3){animation-name:phase-woven}#phase-count{display:none}
.pause:disabled{cursor:default;color:#62685a}
@keyframes release{0%{opacity:0;transform:scaleX(.8) translateX(70px)}12%{opacity:.24}24%,86%{opacity:.24;transform:scaleX(1) translateX(0)}100%{opacity:.20;transform:scaleX(1) translateX(0)}}
@keyframes ambient{0%{opacity:.15}70%,100%{opacity:.8}}
@keyframes silk{0%,86%{opacity:0}98%,100%{opacity:.12}}
@keyframes outline{0%,86%{opacity:0}94%,100%{opacity:.75}}
@keyframes stitches{0%,86%{opacity:0}96%,100%{opacity:.8}}
@keyframes caption-thread{0%,4%{opacity:0}8%,18%{opacity:1}24%,100%{opacity:0}}
@keyframes caption-weave{0%,24%{opacity:0}30%,82%{opacity:1}88%,100%{opacity:0}}
@keyframes caption-woven{0%,88%{opacity:0}98%,100%{opacity:1}}
@keyframes phase-thread{0%,20%{color:var(--amber)}24%,100%{color:#62685a}}
@keyframes phase-weave{0%,20%{color:#62685a}24%,84%{color:var(--amber)}88%,100%{color:#62685a}}
@keyframes phase-woven{0%,84%{color:#62685a}88%,100%{color:var(--amber)}}
@media(min-width:1500px){.flight{height:540px}}@media(max-width:760px){.flight{height:auto;aspect-ratio:640/520;margin-inline:-15px}.scene-captions{bottom:0;font-size:10px}.canvas-top{padding-bottom:10px}.animation-controls{margin-top:12px}}
@media(prefers-reduced-motion:reduce){.animation-panel:not(.motion-enabled) *{animation:none!important}.animation-panel:not(.motion-enabled) .warp-thread,.animation-panel:not(.motion-enabled) .weft-thread{stroke-dashoffset:0}.animation-panel:not(.motion-enabled) .loose-threads,.animation-panel:not(.motion-enabled) .shuttle{display:none}.animation-panel:not(.motion-enabled) .stitches{opacity:.8}.animation-panel:not(.motion-enabled) .scene-captions span:last-child{opacity:1}.animation-panel:not(.motion-enabled) .phase-track span:last-child{color:var(--amber)}}
@keyframes shuttle{0%,21.9%{opacity:0;transform:translate(110px,80px)}22%{opacity:1;transform:translate(110px,80px)}25.6%{opacity:1;transform:translate(530px,80px)}26%{opacity:1;transform:translate(530px,101px)}29.6%{opacity:1;transform:translate(110px,101px)}30%{opacity:1;transform:translate(110px,122px)}33.6%{opacity:1;transform:translate(530px,122px)}34%{opacity:1;transform:translate(530px,143px)}37.6%{opacity:1;transform:translate(110px,143px)}38%{opacity:1;transform:translate(110px,164px)}41.6%{opacity:1;transform:translate(530px,164px)}42%{opacity:1;transform:translate(530px,185px)}45.6%{opacity:1;transform:translate(110px,185px)}46%{opacity:1;transform:translate(110px,206px)}49.6%{opacity:1;transform:translate(530px,206px)}50%{opacity:1;transform:translate(530px,227px)}53.6%{opacity:1;transform:translate(110px,227px)}54%{opacity:1;transform:translate(110px,248px)}57.6%{opacity:1;transform:translate(530px,248px)}58%{opacity:1;transform:translate(530px,269px)}61.6%{opacity:1;transform:translate(110px,269px)}62%{opacity:1;transform:translate(110px,290px)}65.6%{opacity:1;transform:translate(530px,290px)}66%{opacity:1;transform:translate(530px,311px)}69.6%{opacity:1;transform:translate(110px,311px)}70%{opacity:1;transform:translate(110px,332px)}73.6%{opacity:1;transform:translate(530px,332px)}74%{opacity:1;transform:translate(530px,353px)}77.6%{opacity:1;transform:translate(110px,353px)}78%{opacity:1;transform:translate(110px,374px)}81.6%{opacity:1;transform:translate(530px,374px)}82%{opacity:1;transform:translate(530px,391.5px)}85.6%{opacity:1;transform:translate(110px,391.5px)}86%,100%{opacity:0;transform:translate(110px,391.5px)}}
@keyframes warp-0{0%,0%{stroke-dashoffset:1}13.8%,100%{stroke-dashoffset:0}}
@keyframes warp-1{0%,0.16%{stroke-dashoffset:1}13.96%,100%{stroke-dashoffset:0}}
@keyframes warp-2{0%,0.32%{stroke-dashoffset:1}14.12%,100%{stroke-dashoffset:0}}
@keyframes warp-3{0%,0.48%{stroke-dashoffset:1}14.28%,100%{stroke-dashoffset:0}}
@keyframes warp-4{0%,0.64%{stroke-dashoffset:1}14.44%,100%{stroke-dashoffset:0}}
@keyframes warp-5{0%,0.8%{stroke-dashoffset:1}14.6%,100%{stroke-dashoffset:0}}
@keyframes warp-6{0%,0.96%{stroke-dashoffset:1}14.76%,100%{stroke-dashoffset:0}}
@keyframes warp-7{0%,1.12%{stroke-dashoffset:1}14.92%,100%{stroke-dashoffset:0}}
@keyframes warp-8{0%,1.28%{stroke-dashoffset:1}15.08%,100%{stroke-dashoffset:0}}
@keyframes warp-9{0%,1.44%{stroke-dashoffset:1}15.24%,100%{stroke-dashoffset:0}}
@keyframes warp-10{0%,1.6%{stroke-dashoffset:1}15.4%,100%{stroke-dashoffset:0}}
@keyframes warp-11{0%,1.76%{stroke-dashoffset:1}15.56%,100%{stroke-dashoffset:0}}
@keyframes warp-12{0%,1.92%{stroke-dashoffset:1}15.72%,100%{stroke-dashoffset:0}}
@keyframes warp-13{0%,2.08%{stroke-dashoffset:1}15.88%,100%{stroke-dashoffset:0}}
@keyframes warp-14{0%,2.24%{stroke-dashoffset:1}16.04%,100%{stroke-dashoffset:0}}
@keyframes warp-15{0%,2.4%{stroke-dashoffset:1}16.2%,100%{stroke-dashoffset:0}}
@keyframes warp-16{0%,2.56%{stroke-dashoffset:1}16.36%,100%{stroke-dashoffset:0}}
@keyframes warp-17{0%,2.72%{stroke-dashoffset:1}16.52%,100%{stroke-dashoffset:0}}
@keyframes warp-18{0%,2.88%{stroke-dashoffset:1}16.68%,100%{stroke-dashoffset:0}}
@keyframes warp-19{0%,3.04%{stroke-dashoffset:1}16.84%,100%{stroke-dashoffset:0}}
@keyframes warp-20{0%,3.2%{stroke-dashoffset:1}17%,100%{stroke-dashoffset:0}}
@keyframes warp-21{0%,3.36%{stroke-dashoffset:1}17.16%,100%{stroke-dashoffset:0}}
@keyframes warp-22{0%,3.52%{stroke-dashoffset:1}17.32%,100%{stroke-dashoffset:0}}
@keyframes warp-23{0%,3.68%{stroke-dashoffset:1}17.48%,100%{stroke-dashoffset:0}}
@keyframes warp-24{0%,3.84%{stroke-dashoffset:1}17.64%,100%{stroke-dashoffset:0}}
@keyframes warp-25{0%,4%{stroke-dashoffset:1}17.8%,100%{stroke-dashoffset:0}}
@keyframes warp-26{0%,4.16%{stroke-dashoffset:1}17.96%,100%{stroke-dashoffset:0}}
@keyframes warp-27{0%,4.32%{stroke-dashoffset:1}18.12%,100%{stroke-dashoffset:0}}
@keyframes warp-28{0%,4.48%{stroke-dashoffset:1}18.28%,100%{stroke-dashoffset:0}}
@keyframes warp-29{0%,4.64%{stroke-dashoffset:1}18.44%,100%{stroke-dashoffset:0}}
@keyframes warp-30{0%,4.8%{stroke-dashoffset:1}18.6%,100%{stroke-dashoffset:0}}
@keyframes warp-31{0%,4.96%{stroke-dashoffset:1}18.76%,100%{stroke-dashoffset:0}}
@keyframes warp-32{0%,5.12%{stroke-dashoffset:1}18.92%,100%{stroke-dashoffset:0}}
@keyframes warp-33{0%,5.28%{stroke-dashoffset:1}19.08%,100%{stroke-dashoffset:0}}
@keyframes warp-34{0%,5.44%{stroke-dashoffset:1}19.24%,100%{stroke-dashoffset:0}}
@keyframes warp-35{0%,5.6%{stroke-dashoffset:1}19.4%,100%{stroke-dashoffset:0}}
@keyframes warp-36{0%,5.76%{stroke-dashoffset:1}19.56%,100%{stroke-dashoffset:0}}
@keyframes warp-37{0%,5.92%{stroke-dashoffset:1}19.72%,100%{stroke-dashoffset:0}}
@keyframes warp-38{0%,6.08%{stroke-dashoffset:1}19.88%,100%{stroke-dashoffset:0}}
@keyframes warp-39{0%,6.24%{stroke-dashoffset:1}20.04%,100%{stroke-dashoffset:0}}
@keyframes warp-40{0%,6.4%{stroke-dashoffset:1}20.2%,100%{stroke-dashoffset:0}}
@keyframes warp-41{0%,6.56%{stroke-dashoffset:1}20.36%,100%{stroke-dashoffset:0}}
@keyframes warp-42{0%,6.72%{stroke-dashoffset:1}20.52%,100%{stroke-dashoffset:0}}
@keyframes warp-43{0%,6.88%{stroke-dashoffset:1}20.68%,100%{stroke-dashoffset:0}}
@keyframes warp-44{0%,7.04%{stroke-dashoffset:1}20.84%,100%{stroke-dashoffset:0}}
@keyframes warp-45{0%,7.2%{stroke-dashoffset:1}21%,100%{stroke-dashoffset:0}}
@keyframes warp-46{0%,7.36%{stroke-dashoffset:1}21.16%,100%{stroke-dashoffset:0}}
@keyframes warp-47{0%,7.52%{stroke-dashoffset:1}21.32%,100%{stroke-dashoffset:0}}
@keyframes warp-48{0%,7.68%{stroke-dashoffset:1}21.48%,100%{stroke-dashoffset:0}}
@keyframes warp-49{0%,7.84%{stroke-dashoffset:1}21.64%,100%{stroke-dashoffset:0}}
@keyframes warp-50{0%,8%{stroke-dashoffset:1}21.8%,100%{stroke-dashoffset:0}}
@keyframes weft-0{0%,22%{stroke-dashoffset:1}25.6%,100%{stroke-dashoffset:0}}
@keyframes weft-1{0%,22%{stroke-dashoffset:1}25.6%,100%{stroke-dashoffset:0}}
@keyframes weft-2{0%,22%{stroke-dashoffset:1}25.6%,100%{stroke-dashoffset:0}}
@keyframes weft-3{0%,26%{stroke-dashoffset:1}29.6%,100%{stroke-dashoffset:0}}
@keyframes weft-4{0%,26%{stroke-dashoffset:1}29.6%,100%{stroke-dashoffset:0}}
@keyframes weft-5{0%,26%{stroke-dashoffset:1}29.6%,100%{stroke-dashoffset:0}}
@keyframes weft-6{0%,30%{stroke-dashoffset:1}33.6%,100%{stroke-dashoffset:0}}
@keyframes weft-7{0%,30%{stroke-dashoffset:1}33.6%,100%{stroke-dashoffset:0}}
@keyframes weft-8{0%,30%{stroke-dashoffset:1}33.6%,100%{stroke-dashoffset:0}}
@keyframes weft-9{0%,34%{stroke-dashoffset:1}37.6%,100%{stroke-dashoffset:0}}
@keyframes weft-10{0%,34%{stroke-dashoffset:1}37.6%,100%{stroke-dashoffset:0}}
@keyframes weft-11{0%,34%{stroke-dashoffset:1}37.6%,100%{stroke-dashoffset:0}}
@keyframes weft-12{0%,38%{stroke-dashoffset:1}41.6%,100%{stroke-dashoffset:0}}
@keyframes weft-13{0%,38%{stroke-dashoffset:1}41.6%,100%{stroke-dashoffset:0}}
@keyframes weft-14{0%,38%{stroke-dashoffset:1}41.6%,100%{stroke-dashoffset:0}}
@keyframes weft-15{0%,42%{stroke-dashoffset:1}45.6%,100%{stroke-dashoffset:0}}
@keyframes weft-16{0%,42%{stroke-dashoffset:1}45.6%,100%{stroke-dashoffset:0}}
@keyframes weft-17{0%,42%{stroke-dashoffset:1}45.6%,100%{stroke-dashoffset:0}}
@keyframes weft-18{0%,46%{stroke-dashoffset:1}49.6%,100%{stroke-dashoffset:0}}
@keyframes weft-19{0%,46%{stroke-dashoffset:1}49.6%,100%{stroke-dashoffset:0}}
@keyframes weft-20{0%,46%{stroke-dashoffset:1}49.6%,100%{stroke-dashoffset:0}}
@keyframes weft-21{0%,50%{stroke-dashoffset:1}53.6%,100%{stroke-dashoffset:0}}
@keyframes weft-22{0%,50%{stroke-dashoffset:1}53.6%,100%{stroke-dashoffset:0}}
@keyframes weft-23{0%,50%{stroke-dashoffset:1}53.6%,100%{stroke-dashoffset:0}}
@keyframes weft-24{0%,54%{stroke-dashoffset:1}57.6%,100%{stroke-dashoffset:0}}
@keyframes weft-25{0%,54%{stroke-dashoffset:1}57.6%,100%{stroke-dashoffset:0}}
@keyframes weft-26{0%,54%{stroke-dashoffset:1}57.6%,100%{stroke-dashoffset:0}}
@keyframes weft-27{0%,58%{stroke-dashoffset:1}61.6%,100%{stroke-dashoffset:0}}
@keyframes weft-28{0%,58%{stroke-dashoffset:1}61.6%,100%{stroke-dashoffset:0}}
@keyframes weft-29{0%,58%{stroke-dashoffset:1}61.6%,100%{stroke-dashoffset:0}}
@keyframes weft-30{0%,62%{stroke-dashoffset:1}65.6%,100%{stroke-dashoffset:0}}
@keyframes weft-31{0%,62%{stroke-dashoffset:1}65.6%,100%{stroke-dashoffset:0}}
@keyframes weft-32{0%,62%{stroke-dashoffset:1}65.6%,100%{stroke-dashoffset:0}}
@keyframes weft-33{0%,66%{stroke-dashoffset:1}69.6%,100%{stroke-dashoffset:0}}
@keyframes weft-34{0%,66%{stroke-dashoffset:1}69.6%,100%{stroke-dashoffset:0}}
@keyframes weft-35{0%,66%{stroke-dashoffset:1}69.6%,100%{stroke-dashoffset:0}}
@keyframes weft-36{0%,70%{stroke-dashoffset:1}73.6%,100%{stroke-dashoffset:0}}
@keyframes weft-37{0%,70%{stroke-dashoffset:1}73.6%,100%{stroke-dashoffset:0}}
@keyframes weft-38{0%,70%{stroke-dashoffset:1}73.6%,100%{stroke-dashoffset:0}}
@keyframes weft-39{0%,74%{stroke-dashoffset:1}77.6%,100%{stroke-dashoffset:0}}
@keyframes weft-40{0%,74%{stroke-dashoffset:1}77.6%,100%{stroke-dashoffset:0}}
@keyframes weft-41{0%,74%{stroke-dashoffset:1}77.6%,100%{stroke-dashoffset:0}}
@keyframes weft-42{0%,78%{stroke-dashoffset:1}81.6%,100%{stroke-dashoffset:0}}
@keyframes weft-43{0%,78%{stroke-dashoffset:1}81.6%,100%{stroke-dashoffset:0}}
@keyframes weft-44{0%,78%{stroke-dashoffset:1}81.6%,100%{stroke-dashoffset:0}}
@keyframes weft-45{0%,82%{stroke-dashoffset:1}85.6%,100%{stroke-dashoffset:0}}
@keyframes weft-46{0%,82%{stroke-dashoffset:1}85.6%,100%{stroke-dashoffset:0}}

.background-glow{transform:translate(-7px,2px);opacity:.82}
