@keyframes capApiPulse{0%{opacity:0;transform:translate(0)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translate(50px)}}@keyframes capScanBar{0%{opacity:0;transform:translateY(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(40px)}}@keyframes capScanY{0%{opacity:0;top:0%}10%{opacity:1}90%{opacity:1}to{opacity:0;top:100%}}@keyframes capDashFlow{0%{stroke-dashoffset:24px}to{stroke-dashoffset:0}}@keyframes capSlowDash{0%{stroke-dashoffset:16px}to{stroke-dashoffset:0}}@keyframes capPulseRing{0%{opacity:.8;border-color:#10b981cc;transform:scale(1)}to{opacity:0;border-color:#10b98100;transform:scale(1.15)}}@keyframes capScanLineSweep{0%{opacity:0;top:0%}15%{opacity:1}85%{opacity:1}to{opacity:0;top:100%}}@keyframes capFlowDash{to{stroke-dashoffset:-16px}}@keyframes capShootDot{0%{offset-distance:0%;opacity:0;transform:scale(.5)}15%{opacity:1;transform:scale(1)}85%{opacity:1;transform:scale(1)}to{offset-distance:100%;opacity:0;transform:scale(.5)}}.cap-ambient-flow{animation:1.5s linear infinite capFlowDash}.group:hover .cap-ambient-flow{stroke:#14b8a6cc;animation:.5s linear infinite capFlowDash}.cap-route-dot{offset-path:path("M 98 63 C 130 63, 130 73, 158 73");opacity:0}.group:hover .cap-route-dot{animation:1.2s cubic-bezier(.16,1,.3,1) .3s forwards capShootDot}
