/* ==========================================================================
   QnD Capital — intro preloader
   Outline draws in, fill rises, mark settles, curtain lifts.
   ========================================================================== */

.qndc-preloader {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--color-navy, #0E1C30);
	opacity: 1;
	visibility: visible;
	transition: opacity 560ms cubic-bezier(0.65, 0, 0.35, 1), visibility 0s linear 560ms;
}

.qndc-preloader__inner {
	display: flex;
	align-items: center;
	justify-content: center;
	transform: scale(0.98);
	opacity: 0;
	animation: qndc-pre-enter 560ms cubic-bezier(0.22, 0.61, 0.36, 1) 0ms forwards;
}

.qndc-preloader__logo {
	display: block;
	width: clamp(84px, 12vw, 132px);
	height: auto;
	overflow: visible;
}

/* --- outline: three sub-paths draw in sequence --- */

.qndc-preloader__stroke {
	fill: none;
	stroke: var(--color-white, #FFFFFF);
	stroke-width: 1.25;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-dasharray: 1;
	stroke-dashoffset: 1;
	animation:
		qndc-pre-draw 1050ms cubic-bezier(0.62, 0.02, 0.28, 1) forwards,
		qndc-pre-stroke-out 320ms ease 1620ms forwards;
}

.qndc-preloader__stroke--a { animation-delay: 100ms, 1620ms; }
.qndc-preloader__stroke--b { animation-delay: 240ms, 1650ms; }
.qndc-preloader__stroke--c { animation-delay: 380ms, 1680ms; }

/* --- fill rises from the base once the outline is closed --- */

.qndc-preloader__fill {
	fill: var(--color-white, #FFFFFF);
}

.qndc-preloader__wipe {
	transform: scaleY(0);
	transform-box: fill-box;
	transform-origin: 50% 100%;
	animation: qndc-pre-fill 640ms cubic-bezier(0.65, 0, 0.35, 1) 1180ms forwards;
}

/* --- exit --- */

.qndc-preloader.is-leaving {
	opacity: 0;
	visibility: hidden;
}

.qndc-preloader.is-leaving .qndc-preloader__inner {
	animation: qndc-pre-exit 560ms cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

body.qndc-preloading {
	overflow: hidden;
}

@keyframes qndc-pre-enter {
	to { opacity: 1; transform: scale(1); }
}

@keyframes qndc-pre-draw {
	to { stroke-dashoffset: 0; }
}

@keyframes qndc-pre-stroke-out {
	to { stroke-opacity: 0; }
}

@keyframes qndc-pre-fill {
	to { transform: scaleY(1); }
}

@keyframes qndc-pre-exit {
	to { opacity: 0; transform: scale(1.06); }
}

/* --- reduced motion: show the finished mark briefly, no drawing --- */

@media (prefers-reduced-motion: reduce) {
	.qndc-preloader__inner { animation: none; opacity: 1; transform: none; }
	.qndc-preloader__stroke { animation: none; stroke-opacity: 0; }
	.qndc-preloader__wipe { animation: none; transform: scaleY(1); }
	.qndc-preloader { transition: opacity 200ms linear, visibility 0s linear 200ms; }
	.qndc-preloader.is-leaving .qndc-preloader__inner { animation: none; }
}
