/* ════════════════════════════════════════════════════════════════
   TST Framework — Motion & Interaction System (lightweight)
   Scroll reveals (opt-in via [data-tstf-aos]) + hover utilities.
   JS-disabled users get full visibility via the <noscript> fallback
   printed in <head><meta charset="utf-8">.
════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: no-preference) {

	[data-tstf-aos] {
		opacity: 0;
		will-change: opacity, transform;
		transition: opacity .6s cubic-bezier(.22,.61,.36,1), transform .6s cubic-bezier(.22,.61,.36,1);
		transition-delay: calc(var(--tstf-i, 0) * 70ms);
	}
	[data-tstf-aos="fade-in"]    { transform: none; }
	[data-tstf-aos="fade-up"]    { transform: translateY(26px); }
	[data-tstf-aos="fade-down"]  { transform: translateY(-26px); }
	[data-tstf-aos="fade-left"]  { transform: translateX(26px); }
	[data-tstf-aos="fade-right"] { transform: translateX(-26px); }
	[data-tstf-aos="zoom-in"]    { transform: scale(.94); }

	[data-tstf-aos].tstf-in {
		opacity: 1;
		transform: none;
	}
}

/* ── Hover utilities ─────────────────────────────────────────────── */
.tstf-hover-lift {
	transition: transform .28s cubic-bezier(.22,.61,.36,1), box-shadow .28s cubic-bezier(.22,.61,.36,1);
	will-change: transform;
}
.tstf-hover-lift:hover {
	transform: translateY(-6px);
	box-shadow: 0 18px 40px rgba(1,1,1,.16);
}

.tstf-hover-zoom { overflow: hidden; }
.tstf-hover-zoom img {
	transition: transform .55s cubic-bezier(.22,.61,.36,1);
	will-change: transform;
}
.tstf-hover-zoom:hover img { transform: scale(1.07); }

.tstf-hover-pop {
	transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.tstf-hover-pop:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 22px rgba(3,165,80,.28);
	filter: brightness(1.03);
}

@media (prefers-reduced-motion: reduce) {
	[data-tstf-aos] { opacity: 1 !important; transform: none !important; }
	.tstf-hover-lift, .tstf-hover-zoom img, .tstf-hover-pop { transition: none; }
	.tstf-hover-lift:hover, .tstf-hover-zoom:hover img, .tstf-hover-pop:hover { transform: none; }
}


/* ═══════════════════════════════════════════════════════════════
   TST Motion — grid stagger (enhancement)
   Sets --tstf-i per card so the theme's existing [data-tstf-aos]
   reveals cascade instead of firing together. Non-destructive:
   only sets a custom property already consumed by the base system.
   Hover states are intentionally NOT redefined here — each module
   (blog.css / services.css / frontend.min.css) already owns them.
   ═══════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: no-preference){
.tst-bgrid>*:nth-child(1),.tst-svc-grid>*:nth-child(1){--tstf-i:0}
.tst-bgrid>*:nth-child(2),.tst-svc-grid>*:nth-child(2){--tstf-i:1}
.tst-bgrid>*:nth-child(3),.tst-svc-grid>*:nth-child(3){--tstf-i:2}
.tst-bgrid>*:nth-child(4),.tst-svc-grid>*:nth-child(4){--tstf-i:3}
.tst-bgrid>*:nth-child(5),.tst-svc-grid>*:nth-child(5){--tstf-i:4}
.tst-bgrid>*:nth-child(6),.tst-svc-grid>*:nth-child(6){--tstf-i:5}
.tst-bgrid>*:nth-child(7),.tst-svc-grid>*:nth-child(7){--tstf-i:6}
.tst-bgrid>*:nth-child(8),.tst-svc-grid>*:nth-child(8){--tstf-i:7}
.tst-bgrid>*:nth-child(9),.tst-svc-grid>*:nth-child(9){--tstf-i:8}
.tst-bgrid>*:nth-child(10),.tst-svc-grid>*:nth-child(10){--tstf-i:9}
.tst-bgrid>*:nth-child(11),.tst-svc-grid>*:nth-child(11){--tstf-i:10}
.tst-bgrid>*:nth-child(12),.tst-svc-grid>*:nth-child(12){--tstf-i:11}
}
