* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

:root {
	/* Default: Dark Theme */
	--theme-bg: #060c1d;

	--theme-text-main: #eeeff1;
	--theme-text-muted: #f1f5f9;
	--theme-text-subtle: #e2e8f0;
	--theme-card: rgba(255, 255, 255, 0.1);
	--theme-card-border: rgba(255, 255, 255, 0.15);
	--theme-dots: rgba(255, 255, 255, 0.15);

	--theme-accent-blue: #60a5fa;
	--theme-accent-green: #4ade80;
	--theme-accent-purple: #c084fc;
	--theme-accent-amber: #fbbf24;
	--theme-accent-red: #f87171;
	--theme-accent-cyan: #22d3ee;
	--theme-accent-pink: #f472b6;
	--theme-accent-violet: #a78bfa;

	--theme-card-hover-bg: rgba(255, 255, 255, 0.04);
	--theme-card-hover-border: rgba(255, 255, 255, 0.15);
	--theme-card-hover-shadow: rgba(59, 130, 246, 0.2);
	--theme-card-shadow: rgba(0, 0, 0, 0.05);

	--theme-nav-hover-bg: rgba(255, 255, 255, 0.1);
	--theme-nav-hover-shadow: rgba(255, 255, 255, 0.1);
	--theme-progress-shadow: rgba(59, 130, 246, 0.5);
	--theme-core-badge-bg-start: rgba(239, 68, 68, 0.15);
	--theme-core-badge-bg-end: rgba(239, 68, 68, 0.05);
	--theme-core-badge-border: rgba(239, 68, 68, 0.3);
}

[data-theme="light"] {
	/* Light Theme Overrides */
	--theme-bg: #f8fafc;
	--theme-text-main: #0f172a;
	--theme-text-muted: #334155;
	--theme-text-subtle: #475569;
	--theme-card: #ffffff;
	--theme-card-border: #e2e8f0;
	--theme-dots: rgba(0, 0, 0, 0.05);

	--theme-accent-blue: #2563eb;
	--theme-accent-green: #16a34a;
	--theme-accent-purple: #9333ea;
	--theme-accent-amber: #d97706;
	--theme-accent-red: #dc2626;
	--theme-accent-cyan: #0891b2;
	--theme-accent-pink: #db2777;
	--theme-accent-violet: #7c3aed;

	--theme-card-hover-bg: #f1f5f9;
	--theme-card-hover-border: #cbd5e1;
	--theme-card-hover-shadow: rgba(37, 99, 235, 0.2);
	--theme-card-shadow: rgba(0, 0, 0, 0.05);

	--theme-nav-hover-bg: rgba(0, 0, 0, 0.05);
	--theme-nav-hover-shadow: rgba(0, 0, 0, 0.1);
	--theme-progress-shadow: rgba(37, 99, 235, 0.5);
	--theme-core-badge-bg-start: rgba(220, 38, 38, 0.15);
	--theme-core-badge-bg-end: rgba(220, 38, 38, 0.05);
	--theme-core-badge-border: rgba(220, 38, 38, 0.3);
}

body {
	font-family: "Inter", sans-serif;
	background: var(--theme-bg);
	color: var(--theme-text-main);
	overflow: hidden;
	-webkit-user-select: none;
	user-select: none;
	touch-action: manipulation;
}

.font-space {
	font-family: "Space Grotesk", sans-serif;
}

#slides-wrapper {
	transition: transform 0.8s cubic-bezier(0.65, 0, 0.35, 1);
	width: fit-content;
	height: 100%;
	display: flex;
}

.slide {
	width: 100vw;
	height: 100vh;
	flex-shrink: 0;
	position: relative;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	/* padding handled by flex children */
}

.bg-dots {
	background-image: radial-gradient(var(--theme-dots) 1px, transparent 1px);
	background-size: 32px 32px;
}

/* Enhanced Reveal Animation */
.sc {
	opacity: 0;
	transform: translateY(40px) scale(0.95);
	filter: blur(8px);
	transition:
		opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
		transform 0.8s cubic-bezier(0.16, 1, 0.3, 1),
		filter 0.8s cubic-bezier(0.16, 1, 0.3, 1);
	transition-delay: var(--d, 0s);
}

.slide.active .sc {
	opacity: 1;
	transform: translateY(0) scale(1);
	filter: blur(0px);
}

/* Animated Gradient Text */
.gradient-text {
	background: linear-gradient(
		135deg,
		var(--theme-accent-blue),
		var(--theme-accent-amber),
		var(--theme-accent-pink)
	);
	background-size: 200% auto;
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	animation: textShine 4s linear infinite;
}

.gradient-text-rev {
	background: linear-gradient(
		135deg,
		var(--theme-accent-amber),
		var(--theme-accent-blue),
		var(--theme-accent-violet)
	);
	background-size: 200% auto;
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	animation: textShine 4s linear infinite reverse;
}

@keyframes textShine {
	to {
		background-position: 200% center;
	}
}

/* Floating Blobs */
.blob {
	position: absolute;
	border-radius: 50%;
	filter: blur(120px);
	pointer-events: none;
	animation: floatBlob 20s infinite alternate cubic-bezier(0.4, 0, 0.2, 1);
	opacity: 0.7;
}

@keyframes floatBlob {
	0% {
		transform: translate(0, 0) scale(1) rotate(0deg);
	}

	33% {
		transform: translate(50px, -50px) scale(1.1) rotate(10deg);
	}

	66% {
		transform: translate(-30px, 30px) scale(0.9) rotate(-5deg);
	}

	100% {
		transform: translate(20px, 20px) scale(1.05) rotate(5deg);
	}
}

/* Glassmorphism Cards */
.card-h {
	transition:
		transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
		box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1),
		border-color 0.4s ease,
		background 0.4s ease;
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);

	background: var(--theme-card);
	border: 1px solid var(--theme-card-border);

	box-shadow: var(--theme-card-shadow);
}

.card-h:hover {
	transform: translateY(-8px) scale(1.02);
	box-shadow:
		0 20px 40px -10px var(--theme-card-hover-shadow),
		0 0 20px var(--theme-card) inset;
	border-color: var(--theme-card-hover-border);
	background: var(--theme-card-hover-bg);
}

/* Interactive Nav Buttons */
.nav-btn {
	transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}

.nav-btn:hover {
	background: var(--theme-nav-hover-bg);
	transform: scale(1.1) translateY(-50%);
	box-shadow: 0 0 15px var(--theme-nav-hover-shadow);
}

#prev-btn:hover {
	transform: scale(1.1) translateY(-50%);
}

#progress-bar {
	transition: width 0.8s cubic-bezier(0.65, 0, 0.35, 1);
	box-shadow: 0 0 10px var(--theme-progress-shadow);
}

.infinity-path {
	stroke-dasharray: 750;
	stroke-dashoffset: 750;
}

.slide.active .infinity-path {
	animation: drawInf 2.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
	animation-delay: 0.8s;
}

@keyframes drawInf {
	to {
		stroke-dashoffset: 0;
	}
}

.inf-glow {
	animation: pulseG 3s ease-in-out infinite;
}

@keyframes pulseG {
	0%,
	100% {
		opacity: 0.15;
	}

	50% {
		opacity: 0.35;
		filter: blur(12px);
	}
}

.flow-arr {
	animation: arrP 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

@keyframes arrP {
	0%,
	100% {
		opacity: 0.3;
		transform: translateX(0) scale(0.9);
	}

	50% {
		opacity: 1;
		transform: translateX(8px) scale(1.1);
	}
}

.stat-num {
	font-family: "Space Grotesk", sans-serif;
	font-weight: 700;
	text-shadow: 0 0 20px currentColor;
}

::-webkit-scrollbar {
	display: none;
}

.bar-grow {
	transform: scaleY(0);
	transform-origin: bottom;
	transition: transform 1s cubic-bezier(0.65, 0, 0.35, 1);
	transition-delay: var(--bd, 0s);
}

.slide.active .bar-grow {
	transform: scaleY(1);
}

.tl-dot {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 3px solid;
	position: relative;
	z-index: 2;
	flex-shrink: 0;
	box-shadow: 0 0 10px currentColor;
}

.sdg-pulse {
	animation: sdgPulse 3s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

@keyframes sdgPulse {
	0%,
	100% {
		opacity: 0.15;
		transform: scale(1);
		filter: blur(8px);
	}

	50% {
		opacity: 0.4;
		transform: scale(1.1);
		filter: blur(12px);
	}
}

.core-badge {
	background: linear-gradient(
		135deg,
		var(--theme-core-badge-bg-start),
		var(--theme-core-badge-bg-end)
	);
	border: 1px solid var(--theme-core-badge-border);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}

@media print {
	@page {
		size: 1920px 1080px;
		margin: 0;
	}

	body,
	html {
		width: 1920px;
		height: auto;
		min-width: 1920px;
		margin: 0;
		padding: 0;
		background: var(--theme-bg);
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
		color-adjust: exact;
		overflow: visible;
	}

	#presentation-area {
		width: 1920px;
		height: auto;
		overflow: visible;
		position: static;
	}

	#slides-wrapper {
		width: 1920px;
		height: auto;
		display: block;
		transform: none;
		overflow: visible;
	}

	.slide {
		width: 1920px;
		height: 1080px;
		box-sizing: border-box;
		position: relative;
		page-break-after: always;
		break-after: page;
		page-break-inside: avoid;
		break-inside: avoid;
		overflow: hidden;
		display: flex;
	}

	/* Force all animated slide content to be fully visible when printing */
	.sc,
	.slide .sc {
		opacity: 1;
		transform: none;
		filter: none;
		transition: none;
	}

	/* Hide any UI elements that shouldn't be printed */
	#cursor,
	#cursor-dot,
	.nav-btn,
	.progress-bar,
	#progress-bar,
	#progress-container,
	#progress-tooltip,
	#slide-num,
	.fixed {
		display: none;
	}
}
