/* motion.css: keyframes — extracted from test.html and reskinned to the staging brand (crimson/navy/Poppins).
   Component library / page styles. Loaded via app.css. */


  @keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

  /* Portrait skeleton: a slow sweep while Daniel's photo downloads. Deliberately gentle — the room
     is already calm and a fast shimmer would read as another blinking element. */
  @keyframes skeleton{from{background-position:180% 0}to{background-position:-40% 0}}

  @keyframes bar{0%,100%{transform:scaleY(.8)}50%{transform:scaleY(1.7)}}

  @keyframes sheen{0%{transform:translate(-12%,-6%)}50%{transform:translate(12%,8%)}100%{transform:translate(-12%,-6%)}}

  /* Gentle pulse, not a hard strobe. Small opacity delta reads as "live" without blinking. */
  @keyframes blink{0%,100%{opacity:1}50%{opacity:.8}}

  /* Active-turn pip: near-steady soft breathing (was a .35->1 flash that strobed). */
  @keyframes blinkp{0%,100%{opacity:.8}50%{opacity:1}}

  @keyframes aura{0%,100%{transform:scale(.96);opacity:.65}50%{transform:scale(1.1);opacity:1}}

  @keyframes ripple{0%{opacity:.5;transform:scale(.7)}100%{opacity:0;transform:scale(1.16)}}

  @keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}

  @keyframes blink2{0%,80%,100%{opacity:.5}40%{opacity:1}}

  @keyframes endattn{0%,100%{box-shadow:0 0 0 0 rgba(196,18,48,0)}50%{box-shadow:0 0 0 6px rgba(196,18,48,.16)}}

  @keyframes nuin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

  @keyframes spin{to{transform:rotate(360deg)}}

  /* Calm "pending" breathing for the readiness rows — replaces the fast rotating spinner that flickered. */
  @keyframes softpulse{0%,100%{opacity:.35}50%{opacity:.85}}

  @keyframes beginpulse{0%,100%{box-shadow:0 14px 34px rgba(15,23,42,.4)}50%{box-shadow:0 14px 34px rgba(15,23,42,.4),0 0 0 6px rgba(196,18,48,.12)}}

  @keyframes partpulse{0%{transform:scale(1)}35%{transform:scale(1.14);box-shadow:0 6px 16px rgba(196,18,48,.3)}100%{transform:scale(1)}}

  @keyframes sealpop{0%{transform:scale(.5);opacity:0}100%{transform:scale(1);opacity:1}}

  @keyframes ringburst{0%{opacity:.7;transform:scale(.9)}100%{opacity:0;transform:scale(1.5)}}
