/* ============================================================
 * Tower Speakers · cinematic.css
 * Reveal-on-scroll, parallax, headline word-reveal, depth atmospherics.
 * ============================================================ */

[data-tsp-reveal] { opacity: 0; transform: translateY(20px); transition: opacity .8s, transform .8s; }
[data-tsp-reveal].is-visible { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
	[data-tsp-reveal] { opacity: 1; transform: none; }
	.tsp-hero__bars span, .tsp-hero__aurora, .tsp-hero__ticker-track, .tsp-picks__marquee-track { animation: none; }
}

/* Headline word reveal */
[data-tsp-words] .tsp-word { display: inline-block; opacity: 0; transform: translateY(20px); animation: tsp-word-reveal .8s forwards; }
[data-tsp-words] .tsp-word:nth-child(1) { animation-delay: 0.05s; }
[data-tsp-words] .tsp-word:nth-child(2) { animation-delay: 0.15s; }
[data-tsp-words] .tsp-word:nth-child(3) { animation-delay: 0.25s; }
[data-tsp-words] .tsp-word:nth-child(4) { animation-delay: 0.35s; }
[data-tsp-words] .tsp-word:nth-child(5) { animation-delay: 0.45s; }
[data-tsp-words] .tsp-word:nth-child(6) { animation-delay: 0.55s; }
[data-tsp-words] .tsp-word:nth-child(7) { animation-delay: 0.65s; }
[data-tsp-words] .tsp-word:nth-child(8) { animation-delay: 0.75s; }
[data-tsp-words] .tsp-word:nth-child(9) { animation-delay: 0.85s; }
@keyframes tsp-word-reveal { to { opacity: 1; transform: translateY(0); } }

/* Parallax layers */
.tsp-hero__sky        { transform: translateY(var(--tsp-parallax, 0px)); }
.tsp-hero__aurora     { transform: translateY(calc(var(--tsp-parallax, 0px) * 0.4)); }
.tsp-hero__ridges-far { transform: translateY(calc(var(--tsp-parallax, 0px) * 0.18)); }
.tsp-hero__ridges-mid { transform: translateY(calc(var(--tsp-parallax, 0px) * 0.10)); }
.tsp-hero__ridges-near { transform: translateY(calc(var(--tsp-parallax, 0px) * 0.04)); }

/* Cinematic gradients on sections */
.tsp-build, .tsp-hero { position: relative; isolation: isolate; }
.tsp-build::before { content: ""; position: absolute; inset: 0; background: radial-gradient(900px 500px at 70% 0%, rgba(212,175,55,0.10), transparent 60%); pointer-events: none; z-index: -1; }

/* Card depth — top-edge inset highlight + multi-layer shadow + top fade */
.glass.tsp-card-depth, .tsp-pbox, .tsp-kit, .tsp-pcard, .tsp-picks__feature, .tsp-picks__card, .tsp-eeat__pillar, .tsp-quick__card, .tsp-news__card, .tsp-faq__item, .tsp-build__stage {
	box-shadow:
		inset 0 1px 0 rgba(255,255,255,0.06),
		0 1px 2px rgba(0,0,0,0.20),
		0 12px 30px rgba(0,0,0,0.32);
}
.tsp-pbox::after, .tsp-kit::after, .tsp-pcard::after, .tsp-quick__card::after, .tsp-eeat__pillar::after, .tsp-faq__item::after {
	content: ""; position: absolute; left: 0; right: 0; top: 0; height: 80px;
	background: linear-gradient(180deg, rgba(255,255,255,0.06), transparent);
	pointer-events: none; opacity: 0.6;
}

/* Aurora pulse on live elements */
.tsp-aurora-pulse { position: relative; }
.tsp-aurora-pulse::before { content: ""; position: absolute; inset: -8px; border-radius: 999px; background: radial-gradient(circle, rgba(212,175,55,0.30), transparent 60%); animation: tsp-pulse-large 2.4s infinite; pointer-events: none; }
@keyframes tsp-pulse-large { 0%,100%{opacity:0.30; transform:scale(1);} 50%{opacity:0.05; transform:scale(1.1);} }

/* Animated number ticker */
.tsp-num { font-feature-settings: "tnum"; transition: color .3s; }
.tsp-num.is-counting { color: var(--tsp-c-primary); }

/* Reveal stagger helpers */
.tsp-stagger > * { opacity: 0; transform: translateY(12px); }
.tsp-stagger.is-visible > * { animation: tsp-fade-up .5s forwards; }
.tsp-stagger.is-visible > *:nth-child(1) { animation-delay: 0.05s; }
.tsp-stagger.is-visible > *:nth-child(2) { animation-delay: 0.10s; }
.tsp-stagger.is-visible > *:nth-child(3) { animation-delay: 0.15s; }
.tsp-stagger.is-visible > *:nth-child(4) { animation-delay: 0.20s; }
.tsp-stagger.is-visible > *:nth-child(5) { animation-delay: 0.25s; }
.tsp-stagger.is-visible > *:nth-child(6) { animation-delay: 0.30s; }
.tsp-stagger.is-visible > *:nth-child(7) { animation-delay: 0.35s; }
.tsp-stagger.is-visible > *:nth-child(8) { animation-delay: 0.40s; }
