/* Insights page motion. Reveals are CSS-gated on .js; decorative effects on .rv-ready. */
.js [data-rv]{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);will-change:opacity,transform}
.js [data-rv].in{opacity:1;transform:none}
.js:not(.rv-ready) [data-rv]{animation:rv-failsafe 0s 2.5s forwards}
@keyframes rv-failsafe{to{opacity:1;transform:none}}

.row.ins{position:relative}
.rv-ready .row.ins::before{content:"";position:absolute;left:0;top:-1px;height:1px;width:100%;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform 1.3s cubic-bezier(.2,.7,.2,1)}
.rv-ready .row.ins.in::before{transform:scaleX(1)}

.ins-call{position:relative;padding-left:16px;margin-top:26px}
.ins-call::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--olive);transform-origin:top;transition:width .35s ease,background-color .35s ease}
.rv-ready .ins-call::before{transform:scaleY(0);transition:transform 1s .5s cubic-bezier(.2,.7,.2,1),width .35s ease,background-color .35s ease}
.rv-ready .row.in .ins-call::before{transform:scaleY(1)}

.row.ins .stat,.row.ins .num{transition:color .45s ease}
.row.ins:hover .stat{color:var(--olive-t)}
.row.ins:hover .num{color:var(--ink)}
.row.ins:hover .ins-call::before{width:4px}

.ins-progress{position:fixed;top:env(safe-area-inset-top,0px);left:0;height:2px;width:100%;background:var(--olive);transform-origin:left;transform:scaleX(0);z-index:20;pointer-events:none}

@media(prefers-reduced-motion:reduce){
.js [data-rv]{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}
.rv-ready .row.ins::before,.rv-ready .ins-call::before{transform:none!important;transition:none!important}
.ins-progress{display:none}
}
