/*
 * File: dravin-loader/assets/dravin-loader.css
 */

#dravin-loader-overlay,
#dravin-loader-overlay * {
	box-sizing: border-box;
}

#dravin-loader-overlay {
	--dravin-color-primary: #29ABE2;
	--dravin-color-secondary: #101828;
	--dravin-anim-speed: 1800ms;
	--dravin-overlay-bg: #ffffff;
	--dravin-overlay-opacity: 1;
	--dravin-overlay-background: rgba(255, 255, 255, 1);
	--dravin-card-background: rgba(255, 255, 255, 1);
	--dravin-card-radius: 24px;
	--dravin-card-padding: 34px;
	--dravin-blur-intensity: 4px;
	--dravin-fade-in: 180ms;
	--dravin-fade-out: 220ms;
	--dravin-animation-size: 96px;
	--dravin-logo-size: 120px;
	align-items: center;
	background: var(--dravin-overlay-background);
	display: flex;
	inset: 0;
	justify-content: center;
	opacity: 0;
	padding: 24px;
	pointer-events: none;
	position: fixed;
	transition: opacity var(--dravin-fade-out) ease, visibility var(--dravin-fade-out) ease;
	visibility: hidden;
	z-index: 999999;
}

#dravin-loader-overlay.dravin-loader-active {
	opacity: 1;
	pointer-events: auto;
	transition-duration: var(--dravin-fade-in);
	visibility: visible;
}

#dravin-loader-overlay.dravin-loader-hiding {
	opacity: 0;
	pointer-events: none;
	transition-duration: var(--dravin-fade-out);
	visibility: visible;
}

#dravin-loader-overlay.dravin-loader-hidden {
	opacity: 0;
	pointer-events: none;
	visibility: hidden;
}

#dravin-loader-overlay.dravin-loader-blur {
	-webkit-backdrop-filter: blur(var(--dravin-blur-intensity));
	backdrop-filter: blur(var(--dravin-blur-intensity));
}

#dravin-loader-overlay.dravin-loader-preview-mode {
	border: 1px solid #d9e2ea;
	border-radius: 8px;
	inset: auto;
	min-height: 310px;
	opacity: 1;
	overflow: hidden;
	pointer-events: none;
	position: relative;
	visibility: visible;
	width: 100%;
	z-index: 1;
}

#dravin-loader-overlay .dravin-loader-card {
	align-items: center;
	background: var(--dravin-card-background);
	border-radius: var(--dravin-card-radius);
	display: inline-flex;
	justify-content: center;
	min-height: calc(var(--dravin-animation-size) + 28px);
	min-width: calc(var(--dravin-animation-size) + 28px);
	padding: var(--dravin-card-padding);
	position: relative;
}

#dravin-loader-overlay .dravin-loader-card--shadow {
	box-shadow: 0 22px 70px rgba(16, 24, 40, 0.14), 0 8px 24px rgba(16, 24, 40, 0.08);
}

#dravin-loader-overlay .dravin-loader-card--plain {
	background: transparent;
	box-shadow: none;
	min-height: auto;
	min-width: auto;
	padding: 0;
}

#dravin-loader-overlay.dravin-loader-logo-style-morph-scale .dravin-loader-card--shadow {
	animation: dravin-card-bloom var(--dravin-anim-speed) ease-in-out infinite;
}

#dravin-loader-overlay .dravin-loader-animation {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	line-height: 0;
	position: relative;
}

#dravin-loader-overlay .screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal;
}

#dravin-loader-overlay .dravin-pill-eyes {
	display: block;
	height: calc(var(--dravin-animation-size) * 0.72);
	position: relative;
	width: var(--dravin-animation-size);
}

#dravin-loader-overlay .dravin-pill-eye {
	animation: dravin-pulse var(--dravin-anim-speed) ease-in-out infinite;
	background: var(--dravin-color-primary);
	border-radius: 999px;
	bottom: 0;
	display: block;
	height: 52%;
	position: absolute;
	transform-origin: center;
	width: 34%;
}

#dravin-loader-overlay .dravin-pill-eye--left {
	animation-delay: calc(var(--dravin-anim-speed) * -0.08);
	left: 13%;
}

#dravin-loader-overlay .dravin-pill-eye--right {
	animation-delay: calc(var(--dravin-anim-speed) * -0.18);
	right: 13%;
}

#dravin-loader-overlay .dravin-pill-arc {
	animation: dravin-arc-bounce var(--dravin-anim-speed) ease-in-out infinite;
	border: calc(var(--dravin-animation-size) * 0.045) solid var(--dravin-color-secondary);
	border-bottom: 0;
	border-radius: 999px 999px 0 0;
	display: block;
	height: 32%;
	left: 29%;
	position: absolute;
	top: 0;
	width: 42%;
}

#dravin-loader-overlay .dravin-spinner-ring {
	animation: dravin-spinner var(--dravin-anim-speed) linear infinite;
	border: calc(var(--dravin-animation-size) * 0.08) solid rgba(41, 171, 226, 0.18);
	border-left-color: var(--dravin-color-primary);
	border-radius: 50%;
	display: block;
	height: var(--dravin-animation-size);
	width: var(--dravin-animation-size);
}

#dravin-loader-overlay .dravin-dot-bounce {
	align-items: flex-end;
	display: inline-flex;
	gap: calc(var(--dravin-animation-size) * 0.11);
	height: calc(var(--dravin-animation-size) * 0.42);
	justify-content: center;
	width: var(--dravin-animation-size);
}

#dravin-loader-overlay .dravin-dot-bounce span {
	animation: dravin-dot-bounce var(--dravin-anim-speed) ease-in-out infinite;
	background: var(--dravin-color-primary);
	border-radius: 999px;
	display: block;
	height: calc(var(--dravin-animation-size) * 0.17);
	width: calc(var(--dravin-animation-size) * 0.17);
}

#dravin-loader-overlay .dravin-dot-bounce span:nth-child(2) {
	animation-delay: calc(var(--dravin-anim-speed) * 0.14);
	background: var(--dravin-color-secondary);
}

#dravin-loader-overlay .dravin-dot-bounce span:nth-child(3) {
	animation-delay: calc(var(--dravin-anim-speed) * 0.28);
}

#dravin-loader-overlay .dravin-bar-pulse {
	align-items: center;
	display: inline-flex;
	gap: calc(var(--dravin-animation-size) * 0.08);
	height: calc(var(--dravin-animation-size) * 0.72);
	justify-content: center;
	width: var(--dravin-animation-size);
}

#dravin-loader-overlay .dravin-bar-pulse span {
	animation: dravin-bar-pulse var(--dravin-anim-speed) ease-in-out infinite;
	background: var(--dravin-color-primary);
	border-radius: 999px;
	display: block;
	height: 80%;
	transform-origin: center;
	width: calc(var(--dravin-animation-size) * 0.09);
}

#dravin-loader-overlay .dravin-bar-pulse span:nth-child(2) {
	animation-delay: calc(var(--dravin-anim-speed) * 0.1);
	background: var(--dravin-color-secondary);
}

#dravin-loader-overlay .dravin-bar-pulse span:nth-child(3) {
	animation-delay: calc(var(--dravin-anim-speed) * 0.2);
}

#dravin-loader-overlay .dravin-bar-pulse span:nth-child(4) {
	animation-delay: calc(var(--dravin-anim-speed) * 0.3);
	background: var(--dravin-color-secondary);
}

#dravin-loader-overlay .dravin-custom-image {
	display: block;
	height: auto;
	max-height: min(48vh, calc(var(--dravin-animation-size) * 2));
	max-width: min(70vw, calc(var(--dravin-animation-size) * 2));
	object-fit: contain;
	width: var(--dravin-animation-size);
}

#dravin-loader-overlay .dravin-logo-wrap {
	align-items: center;
	display: inline-flex;
	flex-direction: column;
	gap: 14px;
	justify-content: center;
	line-height: 0;
}

#dravin-loader-overlay .dravin-logo-visual {
	display: block;
	max-width: min(70vw, 240px);
	position: relative;
	transform-origin: center;
	width: var(--dravin-logo-size);
}

#dravin-loader-overlay .dravin-logo-asset-full .dravin-logo-visual--image {
	width: min(calc(var(--dravin-logo-size) * 1.8), 240px);
}

#dravin-loader-overlay .dravin-logo-image {
	display: block;
	filter: contrast(8) brightness(0.3);
	height: auto;
	object-fit: contain;
	width: 100%;
}

#dravin-loader-overlay .dravin-logo-visual--tinted .dravin-logo-mask {
	background: var(--dravin-color-primary);
	filter: none;
}

#dravin-loader-overlay .dravin-logo-mask,
#dravin-loader-overlay .dravin-logo-wordmark-mask {
	-webkit-mask-image: var(--dravin-logo-image);
	-webkit-mask-position: center;
	-webkit-mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	background: var(--dravin-color-primary);
	display: block;
	mask-image: var(--dravin-logo-image);
	mask-position: center;
	mask-repeat: no-repeat;
	mask-size: contain;
}

#dravin-loader-overlay .dravin-logo-mask {
	aspect-ratio: 1 / 1;
	width: 100%;
}

#dravin-loader-overlay .dravin-logo-asset-full .dravin-logo-mask {
	aspect-ratio: 4 / 1;
}

#dravin-loader-overlay .dravin-logo-wordmark-wrap {
	align-items: center;
	display: inline-flex;
	flex-direction: column;
	gap: 8px;
	justify-content: center;
}

#dravin-loader-overlay .dravin-logo-wordmark {
	display: block;
	height: auto;
	max-width: min(74vw, 260px);
	object-fit: contain;
	width: min(calc(var(--dravin-logo-size) * 1.55), 260px);
}

#dravin-loader-overlay .dravin-logo-wordmark-mask {
	aspect-ratio: 4 / 1;
	width: min(calc(var(--dravin-logo-size) * 1.55), 260px);
}

#dravin-loader-overlay .dravin-logo-gif {
	animation: none !important;
	border-radius: 0;
	display: block;
	height: auto;
	max-width: min(70vw, 240px);
	object-fit: contain;
	width: var(--dravin-logo-size);
}

#dravin-loader-overlay .dravin-logo-gif-mode {
	align-items: center;
	display: inline-flex;
	flex-direction: column;
	gap: 14px;
	justify-content: center;
	line-height: 0;
}

#dravin-loader-overlay .dravin-logo-svg {
	fill: var(--dravin-color-primary);
	overflow: visible;
	stroke: var(--dravin-color-primary);
	stroke-linejoin: round;
	stroke-width: 2px;
	width: var(--dravin-logo-size);
}

#dravin-loader-overlay .dravin-logo-svg path {
	vector-effect: non-scaling-stroke;
}

#dravin-loader-overlay .dravin-logo-style-breath .dravin-logo-visual {
	animation: dravin-logo-breath var(--dravin-anim-speed) ease-in-out infinite;
}

#dravin-loader-overlay .dravin-logo-style-stroke-draw .dravin-logo-svg path {
	animation: dravin-stroke-draw var(--dravin-anim-speed) linear infinite alternate;
	fill-opacity: 0;
	stroke-dasharray: 1000;
	stroke-dashoffset: 1000;
}

#dravin-loader-overlay .dravin-logo-style-split-reveal .dravin-svg-letter {
	transform-box: fill-box;
	transform-origin: center;
}

#dravin-loader-overlay .dravin-logo-style-split-reveal .dravin-svg-letter-d {
	animation: dravin-split-d var(--dravin-anim-speed) cubic-bezier(0.34, 1.56, 0.64, 1) infinite;
}

#dravin-loader-overlay .dravin-logo-style-split-reveal .dravin-svg-letter-r {
	animation: dravin-split-r var(--dravin-anim-speed) cubic-bezier(0.34, 1.56, 0.64, 1) infinite;
}

#dravin-loader-overlay .dravin-logo-style-shimmer .dravin-logo-visual--image {
	overflow: hidden;
}

#dravin-loader-overlay .dravin-logo-style-shimmer .dravin-logo-visual--image::after {
	animation: dravin-shimmer var(--dravin-anim-speed) infinite;
	background: linear-gradient(120deg, transparent 30%, rgba(255, 255, 255, 0.6) 50%, transparent 70%);
	background-size: 200% 100%;
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
}

#dravin-loader-overlay .dravin-logo-style-morph-scale .dravin-logo-visual {
	animation: dravin-logo-morph-in 650ms ease-out both, dravin-logo-subtle-pulse var(--dravin-anim-speed) ease-in-out 650ms infinite;
}

#dravin-loader-overlay .dravin-logo-style-rotate-in-loop .dravin-logo-visual {
	animation: dravin-logo-rotate-rock var(--dravin-anim-speed) ease-in-out infinite;
}

#dravin-loader-overlay .dravin-logo-underline {
	animation: dravin-underline var(--dravin-anim-speed) ease-in-out infinite;
	background: var(--dravin-color-primary);
	border-radius: 999px;
	display: block;
	height: 1px;
	transform-origin: left center;
	width: min(calc(var(--dravin-logo-size) * 0.8), 190px);
}

@keyframes dravin-pulse {
	0%,
	100% {
		transform: scale(1);
	}

	50% {
		transform: scale(1.12);
	}
}

@keyframes dravin-arc-bounce {
	0%,
	100% {
		transform: translateY(0);
	}

	50% {
		transform: translateY(-4px);
	}
}

@keyframes dravin-spinner {
	to {
		transform: rotate(360deg);
	}
}

@keyframes dravin-dot-bounce {
	0%,
	80%,
	100% {
		transform: translateY(0) scale(1);
	}

	40% {
		transform: translateY(-42%) scale(1.08);
	}
}

@keyframes dravin-bar-pulse {
	0%,
	100% {
		transform: scaleY(0.44);
	}

	50% {
		transform: scaleY(1);
	}
}

@keyframes dravin-logo-breath {
	0%,
	100% {
		opacity: 1;
		transform: scale(1);
	}

	50% {
		opacity: 0.6;
		transform: scale(1.08);
	}
}

@keyframes dravin-stroke-draw {
	from {
		fill-opacity: 0;
		stroke-dashoffset: 1000;
	}

	50% {
		fill-opacity: 0;
		stroke-dashoffset: 0;
	}

	to {
		fill-opacity: 1;
		stroke-dashoffset: 0;
	}
}

@keyframes dravin-split-d {
	0%,
	100% {
		transform: translateX(0);
	}

	38% {
		transform: translateX(-18px);
	}

	70% {
		transform: translateX(5px);
	}
}

@keyframes dravin-split-r {
	0%,
	100% {
		transform: translateX(0);
	}

	38% {
		transform: translateX(18px);
	}

	70% {
		transform: translateX(-5px);
	}
}

@keyframes dravin-shimmer {
	from {
		background-position: 180% 0;
	}

	to {
		background-position: -180% 0;
	}
}

@keyframes dravin-logo-morph-in {
	0% {
		opacity: 0;
		transform: scale(0.7);
	}

	72% {
		opacity: 1;
		transform: scale(1.05);
	}

	100% {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes dravin-logo-subtle-pulse {
	0%,
	100% {
		transform: scale(1);
	}

	50% {
		transform: scale(1.04);
	}
}

@keyframes dravin-card-bloom {
	0%,
	100% {
		box-shadow: 0 22px 70px rgba(16, 24, 40, 0.14), 0 8px 24px rgba(16, 24, 40, 0.08);
	}

	50% {
		box-shadow: 0 30px 96px rgba(41, 171, 226, 0.18), 0 10px 30px rgba(16, 24, 40, 0.10);
	}
}

@keyframes dravin-logo-rotate-rock {
	0%,
	100% {
		transform: rotate(0deg) scale(1);
	}

	25% {
		transform: rotate(8deg) scale(1.05);
	}

	50% {
		transform: rotate(0deg) scale(1);
	}

	75% {
		transform: rotate(-8deg) scale(1.05);
	}
}

@keyframes dravin-underline {
	0%,
	100% {
		opacity: 0.45;
		transform: scaleX(0);
	}

	50% {
		opacity: 1;
		transform: scaleX(1);
	}
}

@media (prefers-reduced-motion: reduce) {
	#dravin-loader-overlay *,
	#dravin-loader-overlay *::before,
	#dravin-loader-overlay *::after {
		animation-duration: 1ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 1ms !important;
	}
}
