/* Dharma Tantra - animation layer
   Keyframes + scroll-reveal utility classes toggled by assets/js/main.js
   via IntersectionObserver (class .dt-in-view is added when a .dt-reveal
   element enters the viewport). Respects prefers-reduced-motion. */

@keyframes dt-fade-up{
	from{opacity:0;transform:translateY(26px)}
	to{opacity:1;transform:translateY(0)}
}
@keyframes dt-fade-in{
	from{opacity:0}
	to{opacity:1}
}
@keyframes dt-scale-in{
	from{opacity:0;transform:scale(.92)}
	to{opacity:1;transform:scale(1)}
}
@keyframes dt-float{
	0%,100%{transform:translateY(0) rotate(0deg)}
	50%{transform:translateY(-18px) rotate(6deg)}
}
@keyframes dt-spin{
	from{transform:translate(-50%,-50%) rotate(0deg)}
	to{transform:translate(-50%,-50%) rotate(360deg)}
}
@keyframes dt-pop{
	0%{transform:scale(0)}
	70%{transform:scale(1.25)}
	100%{transform:scale(1)}
}
@keyframes dt-marquee{
	from{transform:translateX(0)}
	to{transform:translateX(-50%)}
}
@keyframes dt-shimmer{
	0%{background-position:-200% 0}
	100%{background-position:200% 0}
}
@keyframes dt-glow-pulse{
	0%,100%{box-shadow:0 0 0 0 rgba(212,164,55,.45)}
	50%{box-shadow:0 0 0 12px rgba(212,164,55,0)}
}
@keyframes dt-diya-flicker{
	0%,100%{opacity:1;filter:drop-shadow(0 0 6px rgba(230,189,92,.7))}
	45%{opacity:.85;filter:drop-shadow(0 0 10px rgba(230,189,92,.9))}
	55%{opacity:.95;filter:drop-shadow(0 0 4px rgba(230,189,92,.6))}
}

/* Scroll reveal --------------------------------------------------------- */
.dt-reveal{opacity:0;transform:translateY(34px);transition:opacity .8s var(--dt-ease),transform .8s var(--dt-ease);will-change:opacity,transform}
.dt-reveal.dt-in-view{opacity:1;transform:translateY(0)}
.dt-reveal-scale{opacity:0;transform:scale(.9);transition:opacity .8s var(--dt-ease),transform .8s var(--dt-ease)}
.dt-reveal-scale.dt-in-view{opacity:1;transform:scale(1)}
.dt-reveal-left{opacity:0;transform:translateX(-40px);transition:opacity .8s var(--dt-ease),transform .8s var(--dt-ease)}
.dt-reveal-left.dt-in-view{opacity:1;transform:translateX(0)}
.dt-reveal-right{opacity:0;transform:translateX(40px);transition:opacity .8s var(--dt-ease),transform .8s var(--dt-ease)}
.dt-reveal-right.dt-in-view{opacity:1;transform:translateX(0)}

/* stagger children of a revealed container: .dt-reveal-stagger > * */
.dt-reveal-stagger.dt-in-view > *{animation:dt-fade-up .7s var(--dt-ease) both}
.dt-reveal-stagger.dt-in-view > *:nth-child(1){animation-delay:.05s}
.dt-reveal-stagger.dt-in-view > *:nth-child(2){animation-delay:.14s}
.dt-reveal-stagger.dt-in-view > *:nth-child(3){animation-delay:.23s}
.dt-reveal-stagger.dt-in-view > *:nth-child(4){animation-delay:.32s}
.dt-reveal-stagger.dt-in-view > *:nth-child(5){animation-delay:.41s}
.dt-reveal-stagger.dt-in-view > *:nth-child(6){animation-delay:.5s}
.dt-reveal-stagger.dt-in-view > *:nth-child(n+7){animation-delay:.58s}

.dt-pulse{animation:dt-glow-pulse 2.6s ease-in-out infinite}
.dt-diya{animation:dt-diya-flicker 2.4s ease-in-out infinite}
.dt-spin-slow{animation:dt-spin 60s linear infinite}

.dt-shimmer{
	background:linear-gradient(90deg,var(--dt-gold-500) 0%,var(--dt-gold-200) 20%,var(--dt-gold-500) 40%);
	background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
	animation:dt-shimmer 4s linear infinite;
}

/* Skeleton loading state for AJAX-loaded automation widgets */
.dt-skeleton{position:relative;overflow:hidden;background:rgba(212,164,55,.08);border-radius:8px}
.dt-skeleton::after{
	content:"";position:absolute;inset:0;
	background:linear-gradient(90deg,transparent,rgba(212,164,55,.18),transparent);
	background-size:200% 100%;animation:dt-shimmer 1.4s linear infinite;
}

/* Preloader */
.dt-preloader{position:fixed;inset:0;background:var(--dt-maroon-950);z-index:9999;display:flex;align-items:center;justify-content:center;transition:opacity .5s var(--dt-ease),visibility .5s var(--dt-ease)}
.dt-preloader.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.dt-preloader-mark{width:64px;height:64px;border:2px solid rgba(212,164,55,.25);border-top-color:var(--dt-accent);border-radius:50%;animation:dt-spin 1s linear infinite;position:relative;transform:none}

@media (prefers-reduced-motion:reduce){
	*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
	.dt-reveal,.dt-reveal-scale,.dt-reveal-left,.dt-reveal-right{opacity:1!important;transform:none!important}
}
