/* CRYPTAGION illustration motion (tools/illustrations.py). Restrained, CSS-only. */
.ig{display:block;width:100%;height:auto;overflow:visible}
.ig .ig-trace{stroke:rgba(143,193,255,.22);stroke-width:1.4}
.ig .ig-trace.ig-out{stroke:rgba(127,211,160,.3)}
.ig .ig-flow{stroke:#8fc1ff;stroke-width:2;stroke-linecap:round;stroke-dasharray:3 22;animation:ig-flow 2.6s linear infinite}
.ig .ig-flow.ig-good{stroke:#7fd3a0;stroke-dasharray:4 18;animation-duration:2s}
.ig .ig-flow.ig-flow-l{stroke:#2f6fbf}
.ig .ig-d1{animation-delay:-.6s}.ig .ig-d2{animation-delay:-1.3s}.ig .ig-d3{animation-delay:-1.9s}
@keyframes ig-flow{to{stroke-dashoffset:-50}}
.ig .ig-alert{transform-box:fill-box;transform-origin:center;animation:ig-alert 2.8s ease-out infinite}
@keyframes ig-alert{0%{opacity:.9;transform:scale(.85)}70%,100%{opacity:0;transform:scale(1.35)}}
.ig .ig-ring0{transform-box:fill-box;transform-origin:center;animation:ig-breathe 4s ease-in-out infinite}
@keyframes ig-breathe{50%{opacity:.45}}
.ig .ig-beam{animation:ig-beam 4s ease-in-out infinite}
@keyframes ig-beam{50%{opacity:.55}}
.ig .ig-pulse{transform-box:fill-box;transform-origin:center;animation:ig-pulse 5s ease-out infinite}
.ig .ig-q1{animation-delay:1s}.ig .ig-q2{animation-delay:2s}.ig .ig-q3{animation-delay:3s}.ig .ig-q4{animation-delay:4s}
@keyframes ig-pulse{0%{opacity:0;transform:scale(.4)}8%{opacity:1}40%,100%{opacity:0;transform:scale(1.6)}}
.ig .ig-blink{animation:ig-breathe 2.5s ease-in-out infinite}
.ig .ig-new{animation:ig-breathe 1.6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.ig *{animation:none!important}}
