/* svc-custom-software.html — hero animation (prefix: cs-)
   Theme: Bounded contexts (DDD) → event stream → ADR log */
@keyframes csGlow { 0%,100% { opacity: 0.08; } 50% { opacity: 0.2; } }
@keyframes csPop  { from { opacity: 0; transform: scale(0.85); } to { opacity: 1; transform: scale(1); } }
@keyframes csFade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes csFlow { 0% { stroke-dashoffset: 16; opacity: 0; } 25% { opacity: 1; } 75% { opacity: 1; } 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes csEvAppear { from { opacity: 0; transform: scaleX(0); } to { opacity: 1; transform: scaleX(1); } }
.cs-glow { animation: csGlow 3.5s ease-in-out infinite; }
.cs-ctx  { transform-box: fill-box; transform-origin: center; }
.cs-c1 { animation: csPop 0.5s var(--ease-spring) 0.4s both; }
.cs-c2 { animation: csPop 0.5s var(--ease-spring) 0.6s both; }
.cs-c3 { animation: csPop 0.5s var(--ease-spring) 0.8s both; }
.cs-arrow { stroke-dasharray: 6; }
.cs-a1 { animation: csFlow 2.4s linear 1.1s infinite; }
.cs-a2 { animation: csFlow 2.4s linear 1.3s infinite; }
.cs-stream { animation: csFade 0.5s var(--ease-spring) 1.0s both; }
.cs-ev { transform-box: fill-box; transform-origin: left center; }
.cs-e1 { animation: csEvAppear 0.4s ease-out 1.4s both; }
.cs-e2 { animation: csEvAppear 0.4s ease-out 1.55s both; }
.cs-e3 { animation: csEvAppear 0.4s ease-out 1.7s both; }
.cs-e4 { animation: csEvAppear 0.4s ease-out 1.85s both; }
.cs-e5 { animation: csEvAppear 0.4s ease-out 2.0s both; }
.cs-e6 { animation: csEvAppear 0.4s ease-out 2.15s both; }
.cs-adr { animation: csFade 0.5s var(--ease-spring) 1.3s both; }
