/* Motion (DESIGN.md §8). Hidden start states apply only under html.js-reveal, which is set
   only when JS runs and the visitor has not asked for reduced motion. */

html.js-reveal [data-reveal]:not([data-revealed]){opacity:0;transform:translate3d(0,var(--rv-y),0)}
html.js-reveal [data-reveal][data-revealed="in"]{transition:opacity var(--rv-dur) var(--rv-ease),transform var(--rv-dur) var(--rv-ease)}

/* Service cards: staggered */
html.js-reveal [data-reveal-stagger]:not([data-revealed]) .item--service{opacity:0;transform:translate3d(0,var(--rv-y),0)}
html.js-reveal [data-reveal-stagger][data-revealed="in"] .item--service{transition:opacity var(--rv-dur) var(--rv-ease),transform var(--rv-dur) var(--rv-ease)}
html.js-reveal [data-reveal-stagger][data-revealed="in"] .item--service:nth-child(2){transition-delay:.1s}
html.js-reveal [data-reveal-stagger][data-revealed="in"] .item--service:nth-child(3){transition-delay:.2s}

/* Kinds that animate their children instead of the wrapper */
html.js-reveal [data-reveal-kind]:not([data-revealed]){opacity:1;transform:none}

/* Reasons: text and image slide in from opposite sides */
html.js-reveal [data-reveal-kind="reason"]:not([data-revealed]) .reason__text{opacity:0;transform:translate3d(calc(var(--rv-x) * -1),var(--rv-ry),0)}
html.js-reveal .item--reason-reverse[data-reveal-kind="reason"]:not([data-revealed]) .reason__text{transform:translate3d(var(--rv-x),var(--rv-ry),0)}
html.js-reveal [data-reveal-kind="reason"]:not([data-revealed]) .reason__media{opacity:0;transform:translate3d(var(--rv-x),var(--rv-ry),0) scale(1.06)}
html.js-reveal .item--reason-reverse[data-reveal-kind="reason"]:not([data-revealed]) .reason__media{transform:translate3d(calc(var(--rv-x) * -1),var(--rv-ry),0) scale(1.06)}
html.js-reveal [data-reveal-kind="reason"][data-revealed="in"]>*{transition:opacity var(--rv-dur) var(--rv-ease),transform var(--rv-dur) var(--rv-ease)}
html.js-reveal [data-reveal-kind="reason"][data-revealed="in"] .reason__media{transition-delay:.08s}

/* Company card: card rises, then its contents */
html.js-reveal [data-reveal-kind="company"]:not([data-revealed]){opacity:0;transform:translate3d(0,var(--rv-y),0)}
html.js-reveal [data-reveal-kind="company"]:not([data-revealed])>*{opacity:0;transform:translate3d(0,16px,0)}
html.js-reveal [data-reveal-kind="company"][data-revealed="in"],html.js-reveal [data-reveal-kind="company"][data-revealed="in"]>*{transition:opacity .9s var(--rv-ease),transform .9s var(--rv-ease)}
html.js-reveal [data-reveal-kind="company"][data-revealed="in"]>:nth-child(1){transition-delay:.12s}
html.js-reveal [data-reveal-kind="company"][data-revealed="in"]>:nth-child(2){transition-delay:.24s}

/* Consultation steps: sequential */
html.js-reveal [data-reveal-kind="steps"]:not([data-revealed])>li{opacity:0;transform:translate3d(0,var(--rv-y),0)}
html.js-reveal [data-reveal-kind="steps"][data-revealed="in"]>li{transition:opacity var(--rv-dur) var(--rv-ease),transform var(--rv-dur) var(--rv-ease)}
html.js-reveal [data-reveal-kind="steps"][data-revealed="in"]>li:nth-child(2){transition-delay:.12s}
html.js-reveal [data-reveal-kind="steps"][data-revealed="in"]>li:nth-child(3){transition-delay:.18s}
html.js-reveal [data-reveal-kind="steps"][data-revealed="in"]>li:nth-child(4){transition-delay:.3s}
html.js-reveal [data-reveal-kind="steps"][data-revealed="in"]>li:nth-child(5){transition-delay:.36s}
html.js-reveal [data-reveal-kind="cta"]:not([data-revealed]){opacity:0;transform:translate3d(0,var(--rv-y),0)}
html.js-reveal [data-reveal-kind="cta"][data-revealed="in"]{transition:opacity var(--rv-dur) var(--rv-ease) .5s,transform var(--rv-dur) var(--rv-ease) .5s}

/* Linked service cards: 3D tilt on fine pointers */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
	a.item--service{transition:transform .35s var(--rv-ease),box-shadow .35s var(--rv-ease)}
	a.item--service:hover{transform:perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(-6px)}
}

/* Reduced motion / print: everything visible, no transitions */
@media print,(prefers-reduced-motion:reduce){
	html.js-reveal [data-reveal],html.js-reveal [data-reveal] *,html.js-reveal [data-reveal-stagger] .item--service{opacity:1!important;transform:none!important}
	*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
