@charset "utf-8";

#heaven-intro {
	position: fixed; 
	inset: 0; 
	z-index: 10000;
	pointer-events: none;
	overflow: hidden;
}
/* White base — fades out last */
#heaven-base {
	position: absolute; 
	inset: 0;
	background: #ffffff;
	animation: heavenBaseFade 3s cubic-bezier(.4, 0, .2, 1) forwards;
}
@keyframes heavenBaseFade {
	0% {
		opacity:1;
	}
	40%	{
		opacity:1;
	}
	100% {
		opacity:0;
	}
}

/* Radial glow — the "divine light" bloom */
#heaven-glow {
	position: absolute;
	inset: -20%;
	background:
		radial-gradient(ellipse 60% 55% at 50% 48%,
			rgba(255, 255, 255, 1)	  0%,
			rgba(255, 240, 248, .95) 18%,
			rgba(255, 200, 228, .75) 36%,
			rgba(249, 200, 74, .35)  56%,
			rgba(255, 180, 212, .2)  72%,
			transparent	             88%
		);
	animation: heavenGlowPulse 3s cubic-bezier(.4, 0, .2, 1) forwards;
	transform-origin: center;
}
@keyframes heavenGlowPulse {
	0% {
		opacity: 1;
		transform:scale(.7);
	}
	30%	{ 
		opacity: 1;
		transform:scale(1.15); 
	}
	65%	{ 
		opacity: .85; 
		transform:scale(1.3); 
	}
	100% { 
		opacity: 0;
		transform:scale(1.3);
	}
}

/* God rays — radial conic stripes */
#heaven-rays {
	position: absolute;
	inset: -30%;
	background: conic-gradient(
		from 0deg at 50% 48%,
		transparent 0deg,
		rgba(255, 255, 255, .18) 4deg,
		transparent 8deg,
		rgba(255, 240, 248, .12) 14deg,
		transparent 20deg,
		rgba(255, 255, 255, .22) 25deg,
		transparent 30deg,
		rgba(249, 200, 74, .10) 38deg,
		transparent 44deg,
		rgba(255, 255, 255, .16) 52deg,
		transparent 58deg,
		rgba(255, 220, 238, .14) 68deg,
		transparent 76deg,
		rgba(255, 255, 255, .20) 84deg,
		transparent 90deg,
		rgba(255, 240, 248, .10) 105deg,
		transparent 115deg,
		rgba(255, 255, 255, .18) 128deg,
		transparent 136deg,
		rgba(249, 200, 74, .12) 148deg,
		transparent 158deg,
		rgba(255, 255, 255, .22) 172deg,
		transparent 180deg,
		rgba(255, 220, 238, .14) 200deg,
		transparent 212deg,
		rgba(255, 255, 255, .16) 228deg,
		transparent 240deg,
		rgba(255, 240, 248, .12) 256deg,
		transparent 268deg,
		rgba(255, 255, 255, .20) 284deg,
		transparent 298deg,
		rgba(249, 200, 74, .10) 316deg,
		transparent 330deg,
		rgba(255, 255, 255, .18) 348deg,
		transparent 360deg
	);
	animation: heavenRaysSpin 3s linear forwards, heavenRaysFade 3s cubic-bezier(.4, 0, .2, 1) forwards;
}
@keyframes heavenRaysSpin{
	from {
		transform: rotate(0deg);
	}
	to {
		transform: rotate(25deg);
	}
}
@keyframes heavenRaysFade {
	0% {
		opacity: 0;
	}
	20% {
		opacity: 1;
	}
	70% {
		opacity: .9;
	}
	100% {
		opacity: 0;
	}
}

/* Floating light orbs */
.heaven-orb {
	position: absolute;
	border-radius: 50%;
	animation: heavenOrbFloat ease-in-out forwards;
	pointer-events: none;
}
@keyframes heavenOrbFloat {
	0% {
		opacity: 0;
		transform: translate(0, 0) scale(.4);
	}
	25% {
		opacity: .9;
	}
	75% {
		opacity: .7;
	}
	100% {
		opacity: 0;
		transform: translate(var(--ox), var(--oy)) scale(1.4);
	}
}

/* Sparkling particles */
.heaven-spark {
	position: absolute;
	border-radius: 50%;
	animation: heavenSparkle ease-in-out forwards;
	pointer-events: none;
}
@keyframes heavenSparkle {
	0% { 
		opacity: 0; transform: scale(0) rotate(0deg);
	}
	30% { 
		opacity: 1; transform: scale(1) rotate(180deg); 
	}
	70% { 
		opacity: .8; transform: scale(1.2) rotate(300deg);
	}
	100% { 
		opacity: 0; transform: scale(.3) rotate(420deg);
	}
}

/* Page content — rises from below as light clears */
body.heaven-loading .wrapper,
body.heaven-loading nav,
body.heaven-loading footer {
	opacity: 0;
	transform: translateY(18px);
}
body.heaven-ready .wrapper,
body.heaven-ready nav,
body.heaven-ready footer {
	transition: opacity .9s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0s),
				transform .9s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0s);
	opacity: 1;
	transform: translateY(0);
}
nav {
	--reveal-delay: .05s;
}
.wrapper {
	--reveal-delay: .15s;
}
footer {
	--reveal-delay: .25s;
}

/* Reduced motion — skip straight to visible */
@media(prefers-reduced-motion:reduce){
	#heaven-intro { 
		display: none;
	}
	body.heaven-loading .wrapper,
	body.heaven-loading nav,
	body.heaven-loading footer {
		opacity: 1;
		transform: none;
	}
}