/* Public campaign reference: 600ms, 8px rise, 5px text blur, 80ms stagger.
   Content is visible without JS; only successfully observed nodes are pending. */
@media(prefers-reduced-motion:no-preference){
 .route-auto-triage .campaign-pending{opacity:0}
 .route-auto-triage .campaign-visible{animation:campaign-enter .6s cubic-bezier(.25,.46,.45,.94) calc(var(--campaign-stagger,0)*80ms) both}
 .route-auto-triage .campaign-visible.campaign-no-blur{animation-name:campaign-enter-no-blur}
}
.route-auto-triage .campaign-settled{opacity:1!important;filter:none!important;transform:none!important;animation:none!important;transition:none!important}
@keyframes campaign-enter{from{opacity:0;filter:blur(5px);transform:translateY(8px)}to{opacity:1;filter:none;transform:none}}
@keyframes campaign-enter-no-blur{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.route-auto-triage .campaign-enter{opacity:1!important;filter:none!important;transform:none!important;animation:none!important;transition:none!important}}
