/* Global things */
body {
	color: var(--color);
	overflow: hidden;
	--background: #0f0f0f;
	--color: #dfdfdf;
	--points: #ffffff;
	background: var(--background)
}

/* General text */
h1, h2, h3, b, input {
	display: inline;
	font-family: "Lucida Console", "Courier New", monospace
}

/* These are styles for different states of components. You can make layer-specific versions with .c.locked, for example */
.locked {
	background-color: #bf8f8f;
	cursor: not-allowed;
}

/* Can meens can be clicked/bought/etc */
.can {
	cursor: pointer;
}

.can:hover {
	transform: scale(1.15, 1.15);
	box-shadow: 0 0 20px var(--points)
}

.bought {
	background-color: #77bf5f;
	cursor: default;
}

#points {
	color: var(--points);
	text-shadow: 0 0 10px var(--points);
}

/* Dynamic character silhouettes live only on the existing layer background. */
.bg {
	overflow: hidden;
	pointer-events: none;
}

.bg::before {
	content: var(--character-content, none);
	position: absolute;
	inset: -3%;
	background-image: var(--character-silhouette, none);
	background-position: var(--character-figure-position, 82% 100%);
	background-repeat: no-repeat;
	background-size: var(--character-figure-size, auto 92%);
	opacity: var(--character-opacity, 0);
	transform-origin: 50% 100%;
	animation: character-silhouette-drift var(--character-duration, 14s) ease-in-out infinite;
	will-change: transform, opacity;
}

.bg::after {
	content: var(--character-seal, none);
	position: absolute;
	left: var(--character-seal-x, 20%);
	top: clamp(88px, 14vh, 150px);
	display: grid;
	width: clamp(84px, 16vmin, 150px);
	aspect-ratio: 1;
	place-items: center;
	border: 1px solid var(--character-accent-soft, transparent);
	border-radius: 50%;
	box-shadow: inset 0 0 0 8px var(--character-accent-faint, transparent);
	color: var(--character-accent, transparent);
	font-family: "STKaiti", "KaiTi", "Noto Serif SC", serif;
	font-size: clamp(46px, 9vmin, 86px);
	font-weight: 400;
	line-height: 1;
	opacity: 0.12;
	transform: translateX(-50%);
	animation: character-seal-breathe var(--character-seal-duration, 19s) ease-in-out infinite;
	will-change: transform, opacity;
}

@keyframes character-silhouette-drift {
	0%, 100% {
		transform: translate3d(0, 0, 0) scale(1);
		opacity: calc(var(--character-opacity, 0) - 0.02);
	}
	50% {
		transform: translate3d(var(--character-drift-x, -9px), -7px, 0) scale(var(--character-scale, 1.016));
		opacity: var(--character-opacity, 0);
	}
}

@keyframes character-seal-breathe {
	0%, 100% {
		transform: translate3d(-50%, 0, 0) rotate(-2deg) scale(0.98);
		opacity: 0.08;
	}
	50% {
		transform: translate3d(-50%, -5px, 0) rotate(2deg) scale(1.03);
		opacity: 0.14;
	}
}

@media (max-width: 600px) {
	.bg {
		--character-figure-size: auto 82% !important;
		--character-opacity: 0.16 !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.bg::before,
	.bg::after {
		animation: none !important;
		transition: none !important;
	}
}
