/* ==========================================================================
   Amore Liquors — Animations
   GSAP-triggered visual states. Initial states hide content so motion isn't
   missed if JS fails to fire.
   ========================================================================== */

[data-animate] { will-change: transform, opacity; }

[data-animate="fade-up"] {
	opacity: 0;
	transform: translateY(40px);
}

[data-animate="fade-in"] {
	opacity: 0;
}

[data-animate="fade-left"] {
	opacity: 0;
	transform: translateX(-40px);
}

[data-animate="fade-right"] {
	opacity: 0;
	transform: translateX(40px);
}

[data-animate="zoom-in"] {
	opacity: 0;
	transform: scale(0.94);
}

/* Splitting.js lines */
[data-animate="lines"] .word,
[data-split="lines"] .word {
	display: inline-block;
	overflow: hidden;
}

[data-animate="lines"] .char,
[data-split="lines"] .char {
	display: inline-block;
	transform: translateY(110%);
	opacity: 0;
}

/* Once GSAP has run, it sets style props directly — but provide a safe
   no-JS fallback that reveals content after 400ms. */
@media (prefers-reduced-motion: reduce), (scripting: none) {
	[data-animate], [data-animate="lines"] .char, [data-split="lines"] .char {
		opacity: 1 !important;
		transform: none !important;
	}
}

/* Marquee styles live in main.css (.amore-marquee) */

/* Subtle pulse for status dots */
.amore-pulse-dot {
	display: inline-block;
	width: 8px; height: 8px; border-radius: 50%;
	background: var(--wp--preset--color--success, #2E7D58);
	margin-right: 0.5rem;
	position: relative;
}
.amore-pulse-dot::after {
	content: "";
	position: absolute; inset: 0;
	border-radius: 50%;
	background: inherit;
	opacity: 0.6;
	animation: amore-pulse 2s ease-out infinite;
}
@keyframes amore-pulse {
	0%   { transform: scale(1);   opacity: 0.6; }
	100% { transform: scale(2.6); opacity: 0; }
}

/* Loaded state — body class flipped by main.js after fonts/age-gate ready */
body:not(.is-loaded) .amore-hero__inner > * { opacity: 0; }
body.is-loaded .amore-hero__inner > * { transition: opacity 600ms ease 200ms; }

/* Sticky add-to-cart bar (mobile) */
.amore-sticky-atc {
	position: fixed;
	bottom: 0; left: 0; right: 0;
	background: rgba(5,5,5,0.96);
	backdrop-filter: blur(16px);
	border-top: 1px solid rgba(201,169,97,0.18);
	padding: 0.75rem 1rem;
	transform: translateY(100%);
	transition: transform 400ms cubic-bezier(0.16, 1, 0.3, 1);
	z-index: 90;
	display: none;
}
.amore-sticky-atc.is-visible { transform: translateY(0); }

@media (max-width: 768px) {
	body.amore-single-product-context .amore-sticky-atc { display: flex; gap: 0.75rem; align-items: center; }
}
