/**
 * Hidden Paddock — frontend styles.
 * Scoped to .hp-app. Ash-dark chamber with ember accents to sit naturally
 * inside the Fire & Ash site chrome. Mobile-first; reduced motion respected.
 */

.hp-app {
	--hp-ash: #17131a;
	--hp-soot: #221c26;
	--hp-line: #3a2f3f;
	--hp-bone: #f0e7dc;
	--hp-faded: #b3a6ad;
	--hp-ember: #ff7a2f;
	--hp-ember-soft: #ffb469;
	--hp-good: #8fd694;

	position: relative;
	overflow: hidden;
	margin: 0 auto;
	max-width: 720px;
	padding: clamp(24px, 5vw, 48px) clamp(16px, 4vw, 40px);
	border-radius: 18px;
	background:
		radial-gradient(1100px 420px at 50% -180px, rgba(255, 122, 47, 0.14), transparent 60%),
		var(--hp-ash);
	border: 1px solid var(--hp-line);
	color: var(--hp-bone);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	box-sizing: border-box;
}

.hp-app *,
.hp-app *::before,
.hp-app *::after {
	box-sizing: inherit;
}

/* ---------- boot placeholder (before JS takes over) ---------- */

.hp-boot {
	display: flex;
	justify-content: center;
	padding: 48px 0;
}

.hp-boot-ember {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--hp-ember);
	box-shadow: 0 0 14px 4px rgba(255, 122, 47, 0.5);
	animation: hp-breathe 1.6s ease-in-out infinite;
}

/* ---------- header ---------- */

.hp-eyebrow {
	margin: 0 0 6px;
	font-size: 12px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hp-ember-soft);
	text-align: center;
}

.hp-intro {
	margin: 0 0 22px;
	text-align: center;
	color: var(--hp-faded);
	font-size: 15px;
	line-height: 1.55;
}

.hp-progress {
	display: flex;
	justify-content: center;
	gap: 10px;
	margin-bottom: 22px;
}

.hp-dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--hp-line);
	transition: background 0.4s ease, box-shadow 0.4s ease;
}

.hp-dot--lit {
	background: var(--hp-ember);
	box-shadow: 0 0 8px 2px rgba(255, 122, 47, 0.45);
}

/* ---------- riddle card ---------- */

.hp-card {
	background: var(--hp-soot);
	border: 1px solid var(--hp-line);
	border-radius: 14px;
	padding: clamp(20px, 4vw, 32px);
	transition: opacity 0.4s ease, transform 0.4s ease;
}

.hp-card--enter {
	animation: hp-rise 0.5s ease both;
}

.hp-card--shake {
	animation: hp-shake 0.45s ease both;
}

.hp-card--gone {
	opacity: 0;
	transform: translateY(10px) scale(0.98);
}

.hp-counter {
	margin: 0 0 12px;
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--hp-faded);
}

.hp-question {
	margin: 0 0 22px;
	font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
	font-size: clamp(19px, 2.6vw, 23px);
	line-height: 1.6;
	color: var(--hp-bone);
}

.hp-form {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.hp-input {
	flex: 1 1 220px;
	min-width: 0;
	padding: 13px 16px;
	font-size: 16px; /* prevents iOS zoom */
	border-radius: 10px;
	border: 1px solid var(--hp-line);
	background: var(--hp-ash);
	color: var(--hp-bone);
}

.hp-input::placeholder {
	color: var(--hp-faded);
	opacity: 0.75;
}

.hp-input:focus-visible,
.hp-button:focus-visible,
.hp-glyph:focus-visible {
	outline: 2px solid var(--hp-ember-soft);
	outline-offset: 2px;
}

.hp-button {
	flex: 0 0 auto;
	padding: 13px 22px;
	font-size: 15px;
	font-weight: 600;
	border: 0;
	border-radius: 10px;
	cursor: pointer;
	color: #1c1207;
	background: linear-gradient(180deg, var(--hp-ember-soft), var(--hp-ember));
	transition: filter 0.2s ease, transform 0.15s ease;
}

.hp-button:hover:not(:disabled) {
	filter: brightness(1.08);
}

.hp-button:active:not(:disabled) {
	transform: translateY(1px);
}

.hp-button:disabled {
	opacity: 0.6;
	cursor: wait;
}

.hp-message {
	min-height: 1.4em;
	margin: 14px 0 0;
	font-size: 14px;
	color: var(--hp-faded);
}

.hp-message--warn {
	color: var(--hp-ember-soft);
}

.hp-message--good {
	color: var(--hp-good);
}

.hp-fatal {
	text-align: center;
	color: var(--hp-faded);
	padding: 32px 0;
	margin: 0;
}

/* ---------- the reveal ---------- */

.hp-reveal {
	animation: hp-rise 0.6s ease both;
}

.hp-frame {
	position: relative;
	margin: 0;
	overflow: hidden;
	border-radius: 14px;
	border: 1px solid var(--hp-line);
	background: var(--hp-soot);
	min-height: 180px;
}

.hp-photo {
	display: block;
	width: 100%;
	height: auto;
}

/* Ash veil that burns away once the image has loaded */
.hp-veil {
	position: absolute;
	inset: 0;
	background:
		radial-gradient(circle at 50% 55%, transparent 0, transparent 12%, rgba(23, 19, 26, 0.97) 34%),
		var(--hp-ash);
	opacity: 1;
	transition: opacity 1.4s ease 0.15s;
	pointer-events: none;
}

.hp-frame--ready .hp-veil {
	opacity: 0;
}

.hp-frame--ready {
	box-shadow: 0 0 40px 6px rgba(255, 122, 47, 0.22);
}

.hp-caption {
	margin: 16px 0 0;
	text-align: center;
	font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
	font-size: 17px;
	color: var(--hp-ember-soft);
	letter-spacing: 0.02em;
}

/* ---------- embers ---------- */

.hp-ember {
	position: absolute;
	bottom: -8px;
	width: var(--hp-size, 4px);
	height: var(--hp-size, 4px);
	border-radius: 50%;
	background: var(--hp-ember);
	box-shadow: 0 0 8px 2px rgba(255, 122, 47, 0.5);
	pointer-events: none;
	animation: hp-float var(--hp-dur, 2s) ease-out both;
}

/* ---------- keyframes ---------- */

@keyframes hp-rise {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes hp-shake {
	10%, 90% { transform: translateX(-1px); }
	20%, 80% { transform: translateX(2px); }
	30%, 50%, 70% { transform: translateX(-4px); }
	40%, 60% { transform: translateX(4px); }
}

@keyframes hp-float {
	0% {
		opacity: 0;
		transform: translate(0, 0) scale(1);
	}
	12% {
		opacity: 1;
	}
	100% {
		opacity: 0;
		transform: translate(var(--hp-drift, 0px), -220px) scale(0.5);
	}
}

@keyframes hp-breathe {
	0%, 100% { opacity: 0.4; transform: scale(1); }
	50% { opacity: 1; transform: scale(1.35); }
}

/* ---------- reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.hp-card--enter,
	.hp-card--shake,
	.hp-reveal,
	.hp-ember,
	.hp-boot-ember {
		animation: none;
	}

	.hp-veil {
		transition: none;
	}
}
