/*
 * Quick Chill animation presets
 * -----------------------------------------------------------------
 * Usage (add attributes to any Bricks element via Attributes panel):
 *
 *   data-qc="fade-up"            single element reveal on scroll
 *   data-qc-stagger="fade-up"    on a PARENT: reveals each direct child in sequence
 *   data-qc-delay="0.2"          seconds
 *   data-qc-duration="0.9"       seconds
 *   data-qc-each="0.12"          stagger gap in seconds (with data-qc-stagger)
 *   data-qc-start="top 85%"      ScrollTrigger start (default "top 88%")
 *   data-qc-load                 animate on page load instead of on scroll (hero)
 *
 * Presets: fade-in, fade-up, fade-down, fade-left, fade-right, blur-in,
 *          blur-up, scale-in, zoom-out, clip-up, clip-left, line-x, line-y
 *
 * Start states only apply when <html> has .qc-js (added by the plugin) and the
 * visitor has not requested reduced motion, so content is never hidden without JS.
 */

:root {
	--qc-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--qc-dist: 36px;
}

@media (prefers-reduced-motion: no-preference) {
	.qc-js [data-qc="fade-in"]:not(.qc-in),
	.qc-js [data-qc-stagger="fade-in"] > *:not(.qc-in) { opacity: 0; }

	.qc-js [data-qc="fade-up"]:not(.qc-in),
	.qc-js [data-qc-stagger="fade-up"] > *:not(.qc-in) { opacity: 0; transform: translate3d(0, var(--qc-dist), 0); }

	.qc-js [data-qc="fade-down"]:not(.qc-in),
	.qc-js [data-qc-stagger="fade-down"] > *:not(.qc-in) { opacity: 0; transform: translate3d(0, calc(var(--qc-dist) * -1), 0); }

	.qc-js [data-qc="fade-left"]:not(.qc-in),
	.qc-js [data-qc-stagger="fade-left"] > *:not(.qc-in) { opacity: 0; transform: translate3d(var(--qc-dist), 0, 0); }

	.qc-js [data-qc="fade-right"]:not(.qc-in),
	.qc-js [data-qc-stagger="fade-right"] > *:not(.qc-in) { opacity: 0; transform: translate3d(calc(var(--qc-dist) * -1), 0, 0); }

	.qc-js [data-qc="blur-in"]:not(.qc-in),
	.qc-js [data-qc-stagger="blur-in"] > *:not(.qc-in) { opacity: 0; filter: blur(14px); }

	.qc-js [data-qc="blur-up"]:not(.qc-in),
	.qc-js [data-qc-stagger="blur-up"] > *:not(.qc-in) { opacity: 0; filter: blur(12px); transform: translate3d(0, var(--qc-dist), 0); }

	.qc-js [data-qc="scale-in"]:not(.qc-in),
	.qc-js [data-qc-stagger="scale-in"] > *:not(.qc-in) { opacity: 0; transform: scale(0.92); }

	.qc-js [data-qc="zoom-out"]:not(.qc-in),
	.qc-js [data-qc-stagger="zoom-out"] > *:not(.qc-in) { opacity: 0; transform: scale(1.12); }

	.qc-js [data-qc="clip-up"]:not(.qc-in),
	.qc-js [data-qc-stagger="clip-up"] > *:not(.qc-in) { clip-path: inset(100% 0 0 0); }

	.qc-js [data-qc="clip-left"]:not(.qc-in),
	.qc-js [data-qc-stagger="clip-left"] > *:not(.qc-in) { clip-path: inset(0 100% 0 0); }

	.qc-js [data-qc="line-x"]:not(.qc-in) { transform: scaleX(0); transform-origin: left center; }
	.qc-js [data-qc="line-y"]:not(.qc-in) { transform: scaleY(0); transform-origin: center top; }

	.qc-js [data-qc]:not(.qc-in),
	.qc-js [data-qc-stagger] > *:not(.qc-in) { will-change: transform, opacity; }
}

/* Safety net: if scripts fail to load, never leave content hidden. */
.qc-js.qc-failed [data-qc],
.qc-js.qc-failed [data-qc-stagger] > * {
	opacity: 1 !important;
	transform: none !important;
	filter: none !important;
	clip-path: none !important;
}

/* ---- Reusable interaction helpers (CSS only) ------------------- */

/* Soft lift on hover for cards */
.qc-hover-lift {
	transition: transform 0.35s var(--qc-ease), box-shadow 0.35s var(--qc-ease);
}
.qc-hover-lift:hover {
	transform: translateY(-6px);
}

/* Header gains a shadow once the page scrolls (class toggled by qc-animations.js) */
.qc-header {
	transition: box-shadow 0.3s var(--qc-ease), background-color 0.3s var(--qc-ease);
}
.qc-header.is-scrolled {
	box-shadow: 0 8px 30px rgba(10, 20, 60, 0.1);
}

/* Gentle idle float, e.g. for a hero accent shape */
@media (prefers-reduced-motion: no-preference) {
	.qc-float { animation: qc-float 6s ease-in-out infinite; }
	.qc-pulse-dot { animation: qc-pulse 2s ease-in-out infinite; }
}
@keyframes qc-float {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-10px); }
}
@keyframes qc-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(47, 180, 120, 0.55); }
	50% { box-shadow: 0 0 0 7px rgba(47, 180, 120, 0); }
}
