:root {
	--adc-dino-size: 64px;
}

/* The native cursor is hidden only after JavaScript confirms a fine pointer. */
html.adc-dino-enabled,
html.adc-dino-enabled body,
html.adc-dino-enabled body * {
	cursor: none !important;
}

#adc-dino-cursor {
	position: fixed;
	top: 0;
	left: 0;
	width: var(--adc-dino-size);
	height: var(--adc-dino-size);
	z-index: 2147483646;
	pointer-events: none;
	user-select: none;
	-webkit-user-select: none;
	contain: layout style paint;
	opacity: 0;
	visibility: hidden;
	will-change: transform, opacity;
	transition: opacity 120ms ease, visibility 120ms ease;
}

#adc-dino-cursor.adc-dino-cursor--visible {
	opacity: 1;
	visibility: visible;
}

.adc-dino-cursor__sprite {
	display: block;
	width: 100%;
	height: 100%;
	transform-origin: 50% 78%;
	will-change: transform;
	filter: drop-shadow(0 5px 4px rgba(0, 0, 0, 0.24));
}

.adc-dino-cursor__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	pointer-events: none;
	-webkit-user-drag: none;
	user-select: none;
}

#adc-dino-cursor.adc-dino-cursor--idle .adc-dino-cursor__sprite {
	animation: adc-dino-breathe 2.55s ease-in-out infinite;
}

#adc-dino-cursor.adc-dino-cursor--running .adc-dino-cursor__sprite {
	animation: adc-dino-run-bob 310ms ease-in-out infinite;
	filter: drop-shadow(0 6px 4px rgba(0, 0, 0, 0.28));
}

#adc-dino-cursor.adc-dino-cursor--pressed .adc-dino-cursor__sprite {
	transform: scale(0.88) translateY(2px);
	animation-play-state: paused;
}

.adc-dino-dust-particle {
	position: fixed;
	z-index: 2147483645;
	width: var(--adc-dust-size, 5px);
	height: var(--adc-dust-size, 5px);
	border-radius: 999px;
	background: rgba(125, 93, 54, 0.54);
	pointer-events: none;
	will-change: transform, opacity;
	animation: adc-dino-dust 520ms ease-out forwards;
}

@keyframes adc-dino-breathe {
	0%, 100% {
		transform: translateY(0) scaleY(1);
	}
	50% {
		transform: translateY(-1px) scaleY(1.025);
	}
}

@keyframes adc-dino-run-bob {
	0%, 100% {
		transform: translateY(0) rotate(-0.8deg);
	}
	50% {
		transform: translateY(-2px) rotate(0.8deg);
	}
}

@keyframes adc-dino-dust {
	0% {
		opacity: 0.75;
		transform: translate3d(0, 0, 0) scale(0.75);
	}
	100% {
		opacity: 0;
		transform: translate3d(var(--adc-dust-x, -14px), var(--adc-dust-y, 10px), 0) scale(1.45);
	}
}

@media (prefers-reduced-motion: reduce) {
	#adc-dino-cursor,
	.adc-dino-cursor__sprite,
	.adc-dino-dust-particle {
		animation: none !important;
		transition: none !important;
	}
}

@media (hover: none), (pointer: coarse) {
	html.adc-dino-enabled,
	html.adc-dino-enabled body,
	html.adc-dino-enabled body * {
		cursor: auto !important;
	}

	#adc-dino-cursor,
	.adc-dino-dust-particle {
		display: none !important;
	}
}
