/* industry-professional-services.html — hero animation (prefix: ps-)
   Theme: Engagement timeline → utilization rings → multi-model invoice → ethical wall */
@keyframes psGlow { 0%,100% { opacity: 0.08; } 50% { opacity: 0.2; } }
@keyframes psStage { from { opacity: 0; transform: scale(0.5); } to { opacity: 1; transform: scale(1); } }
@keyframes psProg  { from { stroke-dashoffset: 260; } to { stroke-dashoffset: 0; } }
@keyframes psFade  { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes psRingFill { from { stroke-dashoffset: 113; } }
@keyframes psRowIn { from { opacity: 0; transform: translateX(-10px); } to { opacity: 1; transform: translateX(0); } }
.ps-glow { animation: psGlow 3.5s ease-in-out infinite; }
.ps-stage { transform-box: fill-box; transform-origin: center; }
.ps-st1 { animation: psStage 0.4s var(--ease-spring) 0.4s both; }
.ps-st2 { animation: psStage 0.4s var(--ease-spring) 0.55s both; }
.ps-st3 { animation: psStage 0.4s var(--ease-spring) 0.7s both; }
.ps-st4 { animation: psStage 0.4s var(--ease-spring) 0.85s both; }
.ps-st5 { animation: psStage 0.4s var(--ease-spring) 1.0s both; }
.ps-progress { stroke-dasharray: 260; animation: psProg 1.4s ease-out 1.15s both; }
.ps-util { animation: psFade 0.5s var(--ease-spring) 1.0s both; }
.ps-ring1 { animation: psRingFill 1s var(--ease-out) 1.3s both; }
.ps-ring2 { animation: psRingFill 1s var(--ease-out) 1.45s both; }
.ps-ring3 { animation: psRingFill 1s var(--ease-out) 1.6s both; }
.ps-inv   { animation: psFade 0.5s var(--ease-spring) 1.2s both; }
.ps-row   { animation: psRowIn 0.4s ease-out both; }
.ps-r1 { animation-delay: 1.5s; }
.ps-r2 { animation-delay: 1.65s; }
.ps-r3 { animation-delay: 1.8s; }
.ps-wall  { animation: psFade 0.5s var(--ease-spring) 1.5s both; }
