/* ================================================================
   Praxis Ab Machina - service page animations
   Reveals on scroll, schematic SVG motion, counter animations.
   Mirrors the homepage motion language (pulse, dashMarch, draw, glyphSpin).
   Respects prefers-reduced-motion.
   ================================================================ */

@keyframes pamPulse  { 0%,100% { opacity:.45 } 50% { opacity:1 } }
@keyframes pamPulseRing { 0% { r:22; opacity:.7 } 100% { r:46; opacity:0 } }
@keyframes pamPulseRingLg { 0% { r:78; opacity:.55 } 100% { r:160; opacity:0 } }
@keyframes pamDashMarch { to { stroke-dashoffset: -200; } }
@keyframes pamDraw { to { stroke-dashoffset: 0; } }
@keyframes pamSpin { to { transform: rotate(360deg); } }
@keyframes pamFlicker { 0%,18%,22%,40%,100%{ opacity:1 } 19%,21%,39%{ opacity:.4 } }

/* corner annotations breathe */
.schematic .corner { animation: pamFlicker 6s ease-in-out infinite; }
.schematic .corner.tr { animation-delay: .8s; }
.schematic .corner.bl { animation-delay: 1.6s; }
.schematic .corner.br { animation-delay: 2.4s; }

/* SVG-level classes you can add to any element inside .schematic svg */
.schematic .pam-pulse { animation: pamPulse 2.4s ease-in-out infinite; }
.schematic .pam-pulse-b { animation: pamPulse 2.4s ease-in-out infinite; animation-delay:.4s; }
.schematic .pam-pulse-c { animation: pamPulse 2.4s ease-in-out infinite; animation-delay:.8s; }
.schematic .pam-march { stroke-dasharray: 6 8; animation: pamDashMarch 4s linear infinite; }
.schematic .pam-march-fast { stroke-dasharray: 4 6; animation: pamDashMarch 2s linear infinite; }
.schematic .pam-spin { transform-origin: center; transform-box: fill-box; animation: pamSpin 18s linear infinite; }
.schematic .pam-spin-r { transform-origin: center; transform-box: fill-box; animation: pamSpin 12s linear infinite reverse; }
.schematic .pam-flicker { animation: pamFlicker 3s ease-in-out infinite; }

/* pulse rings on key nodes (use <circle class="pam-ring"/> with same cx/cy) */
.schematic .pam-ring  { transform-origin: center; animation: pamPulseRing 2.6s ease-out infinite; }
.schematic .pam-ring.lg { animation: pamPulseRingLg 4.2s ease-out infinite; }
.schematic .pam-ring.d2 { animation-delay: .9s; }
.schematic .pam-ring.d3 { animation-delay: 1.8s; }

/* draw-on for path strokes - set stroke-dasharray inline (length); animation runs once */
.schematic .pam-drawn { stroke-dasharray: 1600; stroke-dashoffset: 1600; animation: pamDraw 2.4s ease-out forwards; }
.schematic .pam-drawn.d1 { animation-delay: .2s; }
.schematic .pam-drawn.d2 { animation-delay: .5s; }
.schematic .pam-drawn.d3 { animation-delay: .9s; }

/* HUD blinking dot already exists in base via .page-meta .dot */

/* outcomes card hover lift */
.outcomes-list li { transition: background .35s ease, padding-left .35s ease; }
.outcomes-list li:hover { background: rgba(0,212,255,0.04); padding-left: 6px; }
.outcomes-list .num { transition: color .35s ease; }
.outcomes-list li:hover .num { color: var(--ink); }

/* spec cells ripple on hover */
.spec-cell { transition: background .35s ease; position: relative; }
.spec-cell:hover { background: rgba(0,212,255,0.04); }
.spec-cell::after { content:""; position:absolute; left:22px; right:22px; bottom:0; height:1px; background: var(--copper); transform: scaleX(0); transform-origin: left; transition: transform .5s ease; }
.spec-cell:hover::after { transform: scaleX(1); }

/* sibling card slide-in chevron */
.svc-sibling { transition: background .35s ease, padding-left .35s ease; }
.svc-sibling:hover { padding-left: 36px; }

/* check items reveal stagger */
.article .body ul.checks li {
  opacity: 0;
  transform: translateX(-12px);
  transition: opacity .7s ease, transform .7s ease;
}
.article .body ul.checks li.in { opacity:1; transform: translateX(0); }
.article .body ul.checks li.in:nth-child(1){ transition-delay: 0s; }
.article .body ul.checks li.in:nth-child(2){ transition-delay: .08s; }
.article .body ul.checks li.in:nth-child(3){ transition-delay: .16s; }
.article .body ul.checks li.in:nth-child(4){ transition-delay: .24s; }
.article .body ul.checks li.in:nth-child(5){ transition-delay: .32s; }

/* outcomes list reveal stagger */
.outcomes-list li {
  opacity: 0;
  transform: translateY(8px);
}
.outcomes-list.in li {
  opacity: 1;
  transform: translateY(0);
  transition: opacity .6s ease, transform .6s ease, background .35s ease, padding-left .35s ease;
}
.outcomes-list.in li:nth-child(1){ transition-delay: 0s, 0s, 0s, 0s; }
.outcomes-list.in li:nth-child(2){ transition-delay: .08s; }
.outcomes-list.in li:nth-child(3){ transition-delay: .16s; }
.outcomes-list.in li:nth-child(4){ transition-delay: .24s; }
.outcomes-list.in li:nth-child(5){ transition-delay: .32s; }

@media (prefers-reduced-motion: reduce) {
  .schematic .pam-pulse, .schematic .pam-pulse-b, .schematic .pam-pulse-c,
  .schematic .pam-march, .schematic .pam-march-fast,
  .schematic .pam-spin, .schematic .pam-spin-r,
  .schematic .pam-flicker, .schematic .pam-ring, .schematic .corner {
    animation: none !important;
  }
  .article .body ul.checks li, .outcomes-list li { opacity:1; transform:none; }
}
