/**
 * Crestlink motion: hero, scroll reveal, SVG/img accents.
 * Respects prefers-reduced-motion.
 */

/* ——— Reduced motion: keep layout, skip decorative motion ——— */
@media (prefers-reduced-motion: reduce) {
	.fazis-reveal:not(.fazis-reveal-stagger),
	.fazis-reveal.fazis-reveal-stagger > * {
		opacity: 1 !important;
		transform: none !important;
	}

	.fazis-reveal.is-visible:not(.fazis-reveal-stagger),
	.fazis-reveal.fazis-reveal-stagger.is-visible > * {
		opacity: 1 !important;
	}

	.fazis-reveal-stagger > * {
		opacity: 1 !important;
		transform: none !important;
		animation: none !important;
	}

	.fazis-hero--motion .fazis-hero__brand,
	.fazis-hero--motion .fazis-hero__nav--desktop,
	.fazis-hero--motion .fazis-hero__actions--desktop,
	.fazis-hero--motion .fazis-hero__title,
	.fazis-hero--motion .fazis-hero__lead,
	.fazis-hero--motion .fazis-hero__cta,
	.fazis-hero__bg--motion {
		animation: none !important;
	}

	.fazis-anim-float,
	.fazis-anim-float-slow,
	.fazis-hero__bg--motion::after {
		animation: none !important;
	}

	.fazis-expertise__figure .crestlink-svg-inline,
	.fazis-process__media-frame .crestlink-svg-inline,
	.fazis-expertise__figure .crestlink-svg-inline *,
	.fazis-process__media-frame .crestlink-svg-inline * {
		animation: none !important;
		transition: none !important;
	}

	.fazis-expertise__figure .crestlink-svg-ex-bar,
	.fazis-expertise__figure .crestlink-svg-ex-trend,
	.fazis-expertise__figure .crestlink-svg-ex-marker,
	.fazis-expertise__figure .crestlink-svg-ex-skel,
	.fazis-expertise__figure .crestlink-svg-ex-title,
	.fazis-process__media .crestlink-svg-pr-card,
	.fazis-process__media .crestlink-svg-pr-chip,
	.fazis-process__media .crestlink-svg-pr-chart,
	.fazis-process__media .crestlink-svg-pr-grid,
	.fazis-process__media .crestlink-svg-pr-curve,
	.fazis-process__media .crestlink-svg-pr-dot,
	.fazis-process__media .crestlink-svg-pr-legend-item,
	.fazis-process__media .crestlink-svg-pr-caption {
		opacity: 1 !important;
		transform: none !important;
		stroke-dashoffset: 0 !important;
	}

	.fazis-expertise__figure .crestlink-svg-ex-bar--2 {
		opacity: 0.9 !important;
	}
	.fazis-expertise__figure .crestlink-svg-ex-bar--4 {
		opacity: 0.85 !important;
	}

	.fazis-process__media .crestlink-svg-pr-legend-item {
		opacity: 1 !important;
	}

	.fazis-use__card:hover .fazis-use__icon,
	.fazis-team__card:hover .fazis-team__icon,
	.fazis-intro__card:hover {
		transform: none !important;
		box-shadow: none !important;
	}

	.fazis-cta:hover .fazis-cta__surface {
		transform: none !important;
	}
}

@media (prefers-reduced-motion: no-preference) {
	/* ——— Keyframes ——— */
	@keyframes crestlink-fade-in {
		from {
			opacity: 0;
		}
		to {
			opacity: 1;
		}
	}

	@keyframes crestlink-fade-up {
		from {
			opacity: 0;
			transform: translateY(1rem);
		}
		to {
			opacity: 1;
			transform: translateY(0);
		}
	}

	@keyframes crestlink-scale-in {
		from {
			opacity: 0;
			transform: scale(0.96);
		}
		to {
			opacity: 1;
			transform: scale(1);
		}
	}

	@keyframes crestlink-bg-pan {
		0%,
		100% {
			transform: scale(1);
		}
		50% {
			transform: scale(1.04);
		}
	}

	@keyframes crestlink-shimmer {
		0% {
			background-position: 120% 50%;
		}
		100% {
			background-position: -20% 50%;
		}
	}

	@keyframes crestlink-line-glow {
		0%,
		100% {
			opacity: 0.85;
		}
		50% {
			opacity: 1;
		}
	}

	/* ——— Hero (load sequence) ——— */
	.fazis-hero--motion .fazis-hero__brand {
		animation: crestlink-fade-in 0.55s ease-out both;
	}

	.fazis-hero--motion .fazis-hero__nav--desktop {
		animation: crestlink-fade-in 0.55s 0.08s ease-out both;
	}

	.fazis-hero--motion .fazis-hero__actions--desktop {
		animation: crestlink-fade-in 0.55s 0.12s ease-out both;
	}

	.fazis-hero--motion .fazis-hero__title {
		animation: crestlink-fade-up 0.65s 0.12s cubic-bezier(0.22, 1, 0.36, 1) both;
	}

	.fazis-hero--motion .fazis-hero__lead {
		animation: crestlink-fade-up 0.65s 0.28s cubic-bezier(0.22, 1, 0.36, 1) both;
	}

	.fazis-hero--motion .fazis-hero__cta {
		animation: crestlink-fade-up 0.6s 0.48s cubic-bezier(0.22, 1, 0.36, 1) both;
	}

	.fazis-hero--motion .fazis-hero__logo {
		animation: crestlink-scale-in 0.5s 0.05s cubic-bezier(0.22, 1, 0.36, 1) both;
	}

	/* Hero mesh background: slow breathe */
	.fazis-hero__bg--motion {
		animation: crestlink-bg-pan 22s ease-in-out infinite;
		transform-origin: center center;
		will-change: transform;
	}

	.fazis-hero__bg--motion::after {
		animation: crestlink-line-glow 8s ease-in-out infinite;
	}

	/*
	 * Scroll reveal: each .fazis-reveal is its own IntersectionObserver target.
	 * Without stagger: animate the block itself (headings, wrappers, CTA, footer rows).
	 * With .fazis-reveal-stagger: cascade on direct children (cards, list items).
	 */
	html.crestlink-scroll-reveal .fazis-reveal:not(.is-visible):not(.fazis-reveal-stagger) {
		opacity: 0;
		transform: translateY(1.35rem);
		transition:
			opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1),
			transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
		will-change: opacity, transform;
	}

	html.crestlink-scroll-reveal .fazis-reveal.is-visible:not(.fazis-reveal-stagger) {
		opacity: 1;
		transform: translateY(0);
	}

	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger:not(.is-visible) > * {
		opacity: 0;
		transform: translateY(0.75rem);
		transition:
			opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
			transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
		will-change: opacity, transform;
	}

	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > * {
		opacity: 1;
		transform: translateY(0);
	}

	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > *:nth-child(1) {
		transition-delay: 0.04s;
	}
	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > *:nth-child(2) {
		transition-delay: 0.1s;
	}
	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > *:nth-child(3) {
		transition-delay: 0.16s;
	}
	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > *:nth-child(4) {
		transition-delay: 0.22s;
	}
	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > *:nth-child(5) {
		transition-delay: 0.28s;
	}
	html.crestlink-scroll-reveal .fazis-reveal.fazis-reveal-stagger.is-visible > *:nth-child(6) {
		transition-delay: 0.34s;
	}

	/* ——— Inline SVG illustrations: layers animate after .is-visible (scroll reveal) ——— */
	.fazis-process__media-frame {
		overflow: hidden;
		border-radius: 0.5rem;
	}

	.fazis-expertise__figure .crestlink-svg-inline,
	.fazis-process__media-frame .crestlink-svg-inline {
		display: block;
		width: 100%;
		height: auto;
		overflow: visible;
	}

	.fazis-expertise__figure .crestlink-svg-ex-bar--2 {
		opacity: 0.9;
	}
	.fazis-expertise__figure .crestlink-svg-ex-bar--4 {
		opacity: 0.85;
	}

	@keyframes crestlink-ex-blob {
		0%,
		100% {
			transform: scale(1);
		}
		50% {
			transform: scale(1.07);
		}
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure:not(.is-visible) .crestlink-svg-ex-bar {
		opacity: 0;
		transform: translateY(14px);
		transition:
			opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
			transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-bar--1 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 0.08s;
	}
	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-bar--2 {
		opacity: 0.9;
		transform: translateY(0);
		transition-delay: 0.18s;
	}
	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-bar--3 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 0.28s;
	}
	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-bar--4 {
		opacity: 0.85;
		transform: translateY(0);
		transition-delay: 0.38s;
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure:not(.is-visible) .crestlink-svg-ex-trend {
		stroke-dasharray: 100;
		stroke-dashoffset: 100;
		transition: stroke-dashoffset 1.45s cubic-bezier(0.22, 1, 0.36, 1);
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-trend {
		stroke-dasharray: 100;
		stroke-dashoffset: 0;
		transition-delay: 0.2s;
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure:not(.is-visible) .crestlink-svg-ex-marker {
		opacity: 0;
		transform: scale(0.35);
		transform-origin: center;
		transition:
			opacity 0.45s ease,
			transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1);
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-marker {
		opacity: 1;
		transform: scale(1);
		transition-delay: 1.15s;
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure:not(.is-visible) .crestlink-svg-ex-skel,
	html.crestlink-scroll-reveal .fazis-expertise__figure:not(.is-visible) .crestlink-svg-ex-title {
		opacity: 0;
		transition: opacity 0.5s ease;
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-skel {
		opacity: 0.5;
		transition-delay: 0.05s;
	}
	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-title {
		opacity: 1;
		transition-delay: 0.12s;
	}

	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-blob--a {
		animation: crestlink-ex-blob 5.5s ease-in-out infinite;
		transform-origin: 880px 60px;
	}
	html.crestlink-scroll-reveal .fazis-expertise__figure.is-visible .crestlink-svg-ex-blob--b {
		animation: crestlink-ex-blob 6.5s ease-in-out infinite 0.4s;
		transform-origin: 120px 280px;
	}

	/* Process block */
	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-card {
		opacity: 0;
		transform: scale(0.97);
		transform-origin: 400px 300px;
		transition:
			opacity 0.55s ease,
			transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-card {
		opacity: 1;
		transform: scale(1);
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-chip {
		opacity: 0;
		transform: translateY(8px);
		transition:
			opacity 0.45s ease,
			transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-chip--1 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 0.12s;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-chip--2 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 0.22s;
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-chart {
		opacity: 0;
		transition: opacity 0.45s ease;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-chart {
		opacity: 1;
		transition-delay: 0.28s;
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-grid {
		opacity: 0;
		transition: opacity 0.45s ease;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-grid {
		opacity: 1;
		transition-delay: 0.34s;
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-curve {
		stroke-dasharray: 100;
		stroke-dashoffset: 100;
		transition: stroke-dashoffset 1.35s cubic-bezier(0.22, 1, 0.36, 1);
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-curve--a {
		stroke-dashoffset: 0;
		transition-delay: 0.35s;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-curve--b {
		stroke-dashoffset: 0;
		transition-delay: 0.55s;
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-dot {
		opacity: 0;
		transform: scale(0.4);
		transform-origin: center;
		transition:
			opacity 0.4s ease,
			transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-dot--1 {
		opacity: 1;
		transform: scale(1);
		transition-delay: 1s;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-dot--2 {
		opacity: 1;
		transform: scale(1);
		transition-delay: 1.15s;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-dot--3 {
		opacity: 1;
		transform: scale(1);
		transition-delay: 1.28s;
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-legend-item {
		opacity: 0;
		transform: translateY(6px);
		transition:
			opacity 0.4s ease,
			transform 0.45s ease;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-legend-item--1 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 1.05s;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-legend-item--2 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 1.14s;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-legend-item--3 {
		opacity: 1;
		transform: translateY(0);
		transition-delay: 1.23s;
	}

	html.crestlink-scroll-reveal .fazis-process__media:not(.is-visible) .crestlink-svg-pr-caption {
		opacity: 0;
		transition: opacity 0.5s ease;
	}
	html.crestlink-scroll-reveal .fazis-process__media.is-visible .crestlink-svg-pr-caption {
		opacity: 1;
		transition-delay: 1.32s;
	}

	/* ——— Icon SVGs ——— */
	.fazis-use__icon,
	.fazis-team__icon {
		transition:
			transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
			filter 0.35s ease;
	}

	.fazis-use__card:hover .fazis-use__icon,
	.fazis-team__card:hover .fazis-team__icon {
		transform: scale(1.08) rotate(-3deg);
		filter: drop-shadow(0 8px 16px rgb(234 88 12 / 0.2));
	}

	.fazis-use__card:focus-within .fazis-use__icon {
		transform: scale(1.05);
	}

	/* Process arrows */
	.fazis-process__arrow-img {
		transition: transform 0.3s ease;
	}

	.fazis-process__item:hover .fazis-process__arrow-img {
		transform: translateX(4px);
	}

	/* ——— Primary buttons: subtle shine on hover ——— */
	.fazis-hero__button,
	.fazis-cta__button {
		position: relative;
		overflow: hidden;
	}

	.fazis-hero__button::after,
	.fazis-cta__button::after {
		content: "";
		position: absolute;
		inset: 0;
		background: linear-gradient(
			105deg,
			transparent 0%,
			rgb(255 255 255 / 0.18) 45%,
			transparent 70%
		);
		background-size: 200% 100%;
		background-position: 100% 0;
		opacity: 0;
		transition: opacity 0.25s ease;
		pointer-events: none;
	}

	.fazis-hero__button:hover::after,
	.fazis-cta__button:hover::after {
		opacity: 1;
		animation: crestlink-shimmer 0.85s ease-out forwards;
	}

	/* ——— Footer logo ——— */
	.fazis-footer__brand .fazis-footer__logo {
		transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
	}

	.fazis-footer__brand:hover .fazis-footer__logo {
		transform: scale(1.03);
	}

	/* ——— CTA block ——— */
	.fazis-cta__surface {
		transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
	}

	.fazis-cta:hover .fazis-cta__surface {
		transform: scale(1.008);
	}

	/* ——— Intro cards ——— */
	.fazis-intro__card {
		transition:
			transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
			box-shadow 0.35s ease;
	}

	.fazis-intro__card:hover {
		transform: translateY(-4px);
		box-shadow: 0 12px 40px rgb(15 23 42 / 0.08);
	}

	/* ——— Legal doc page title ——— */
	.fazis-legal-page .fazis-doc-page__title {
		animation: crestlink-fade-up 0.55s ease-out both;
	}

	/* ——— Contact submit (<input> cannot use ::before/::after) ——— */
	.fazis-contact__form input.wpcf7-submit {
		transition:
			transform 0.2s ease,
			filter 0.2s ease,
			box-shadow 0.2s ease;
	}

	.fazis-contact__form input.wpcf7-submit:hover,
	.fazis-contact__form input.wpcf7-submit:focus-visible {
		filter: brightness(1.08);
		box-shadow: 0 4px 24px rgb(234 88 12 / 0.35);
	}

	/* ——— Nav links: underline grow ——— */
	.fazis-hero__nav-link,
	.fazis-footer__nav-link {
		position: relative;
	}

	.fazis-hero__nav-link::after,
	.fazis-footer__nav-link::after {
		content: "";
		position: absolute;
		left: 50%;
		bottom: 0.35rem;
		width: 0;
		height: 2px;
		border-radius: 1px;
		background: currentColor;
		opacity: 0.55;
		transform: translateX(-50%);
		transition: width 0.28s cubic-bezier(0.22, 1, 0.36, 1);
	}

	.fazis-hero__nav-link:hover::after,
	.fazis-hero__nav-link:focus-visible::after,
	.fazis-footer__nav-link:hover::after,
	.fazis-footer__nav-link:focus-visible::after {
		width: calc(100% - 1rem);
	}
}
