/* Calm, industrial motion system used consistently throughout the homepage. */
.kc-reveal {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .72s cubic-bezier(.2,.75,.2,1) var(--kc-motion-delay, 0ms), transform .72s cubic-bezier(.2,.75,.2,1) var(--kc-motion-delay, 0ms);
	will-change: opacity, transform;
}
.kc-reveal.is-visible { opacity: 1; transform: translateY(0); }

.kc-topbar { animation: kc-header-drop .5s both; }
.kc-header { animation: kc-header-drop .65s .08s both; }
.kc-ref__emotion-copy .kc-ref__eyebrow,
.kc-ref__emotion-copy h1,
.kc-ref__emotion-copy p,
.kc-ref__emotion-copy .kc-ref__button { animation: kc-hero-rise .8s cubic-bezier(.2,.75,.2,1) both; }
.kc-ref__emotion-copy .kc-ref__eyebrow { animation-delay: .2s; }
.kc-ref__emotion-copy h1 { animation-delay: .3s; }
.kc-ref__emotion-copy p { animation-delay: .42s; }
.kc-ref__emotion-copy .kc-ref__button { animation-delay: .56s; }
.kc-ref__emotion-video { animation: kc-video-breathe 11s ease-in-out infinite alternate; }

.kc-ref__image { overflow: hidden; }
.kc-ref__image img { transition: transform .75s cubic-bezier(.2,.75,.2,1), filter .5s ease; }
.kc-ref__quality article,
.kc-ref__stats > div,
.kc-ref__contact a,
.kc-footer-column { transition: transform .3s cubic-bezier(.2,.75,.2,1), background .3s ease, color .3s ease; }

@media (hover: hover) {
	.kc-ref__possibility:hover .kc-ref__image img,
	.kc-ref__career:hover .kc-ref__image img { transform: scale(1.045); filter: saturate(1.06); }
	.kc-ref__quality article:hover { transform: none; }
	.kc-ref__stats > div:hover { transform: translateY(-6px); }
	.kc-ref__contact a:hover { transform: translateY(-3px); background: #173f6e; color: #fff; }
	.kc-footer-column:hover { transform: translateY(-4px); }
	.kc-footer-column a { transition: color .2s ease, transform .2s ease; }
	.kc-footer-column a:hover { transform: translateX(4px); }
}

@keyframes kc-header-drop { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes kc-hero-rise { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } }
@keyframes kc-video-breathe { from { transform: scale(1); } to { transform: scale(1.025); } }

@media (prefers-reduced-motion: reduce) {
	.kc-topbar,
	.kc-header,
	.kc-ref__emotion-copy .kc-ref__eyebrow,
	.kc-ref__emotion-copy h1,
	.kc-ref__emotion-copy p,
	.kc-ref__emotion-copy .kc-ref__button,
	.kc-ref__emotion-video { animation: none; }
	.kc-reveal { opacity: 1; transform: none; transition: none; }
}
