/* ============ PaperFlow Animations — "Ink & Rubric" ============
 * 원칙: 기능적 모션만 (상태 전이·입장 스태거). 장식 루프·글로우 없음.
 */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeR{to{opacity:0;transform:translateX(24px)}}
@keyframes toastIn{from{opacity:0;transform:translateX(46px) scale(.94)}60%{transform:translateX(-3px) scale(1.005)}to{opacity:1;transform:none}}
@keyframes popIn{from{opacity:0;transform:scale(.96) translateY(14px)}to{opacity:1;transform:none}}
@keyframes pulseDot{0%{box-shadow:0 0 0 0 rgba(47,110,79,.4)}70%{box-shadow:0 0 0 8px rgba(47,110,79,0)}100%{box-shadow:0 0 0 0 rgba(47,110,79,0)}}
@keyframes blink{50%{opacity:0}}
@keyframes dashMove{to{stroke-dashoffset:-12}}
@keyframes growW{from{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1)}}
@keyframes stampIn{0%{opacity:0;transform:rotate(-6deg) scale(2.2)}60%{opacity:1;transform:rotate(-6deg) scale(.92)}100%{opacity:1;transform:rotate(-6deg) scale(1)}}
@keyframes riseIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes fadeSlideIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes checkPop{from{transform:scale(0);opacity:0}70%{transform:scale(1.25)}to{transform:scale(1);opacity:1}}
@keyframes drawLine{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes pulseOn{50%{background:rgba(161,58,42,.05)}}

/* staggered view entry */
.view-root>*{animation:riseIn .5s cubic-bezier(.22,1,.36,1) both}
.view-root>*:nth-child(2){animation-delay:.06s}
.view-root>*:nth-child(3){animation-delay:.12s}
.view-root>*:nth-child(4){animation-delay:.18s}
.view-root>*:nth-child(5){animation-delay:.24s}
.view-root>*:nth-child(6){animation-delay:.3s}

/* decorative loops stop for vestibular safety — functional state cues stay visible */
@media (prefers-reduced-motion:reduce){
  .view-root>*,.kf-item,.risk-cell,.step-node{animation-duration:.01ms!important;animation-delay:0s!important}
  .live-dot,.farr svg path,.stagechip.on,.stat::after{animation:none!important}
  *,*::before,*::after{transition-duration:.01ms!important}
}
