/**
 * Asmon — Page 404 (plein écran)
 */

body.asmon-page-template--404 {
	overflow-x: clip;
	min-height: 100vh;
	min-height: 100dvh;
	background-color: #0a0907;
}

body.asmon-page-template--404::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background:
		radial-gradient(ellipse 70% 55% at 50% 18%, rgba(201, 168, 76, 0.1), transparent 62%),
		radial-gradient(ellipse 50% 40% at 12% 88%, rgba(90, 62, 32, 0.14), transparent 72%),
		radial-gradient(ellipse 45% 38% at 88% 75%, rgba(201, 168, 76, 0.06), transparent 70%),
		linear-gradient(180deg, #0a0907 0%, #0e0b08 48%, #0c0a08 100%);
	animation: asmon-404-bg-drift 20s ease-in-out infinite alternate;
}

@keyframes asmon-404-bg-drift {
	0% { opacity: 0.9; }
	100% { opacity: 1; }
}

body.asmon-page-template--404 #main-container,
body.asmon-page-template--404 .site-main,
body.asmon-page-template--404 main,
body.asmon-page-template--404 .entry-content {
	position: relative;
	z-index: 1;
	background: transparent;
}

body.asmon-page-template--404 .entry-header,
body.asmon-page-template--404 .page-title,
body.asmon-page-template--404 .ct-page-title {
	display: none !important;
}

/* —— Scène plein écran —— */
.asmon-404 {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: calc(100vh - var(--asmon-404-offset, 0px));
	min-height: calc(100dvh - var(--asmon-404-offset, 0px));
	padding: clamp(2rem, 6vh, 4rem) clamp(1.25rem, 5vw, 2.5rem);
	overflow: hidden;
	isolation: isolate;
}

.asmon-404__veil,
.asmon-404__grain,
.asmon-404__particles {
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.asmon-404__veil {
	z-index: 0;
	background:
		linear-gradient(to bottom, rgba(14, 11, 8, 0.15), rgba(14, 11, 8, 0.55) 55%, rgba(14, 11, 8, 0.82)),
		radial-gradient(ellipse 80% 60% at 50% 40%, rgba(201, 168, 76, 0.08), transparent 68%);
}

.asmon-404__grain {
	z-index: 1;
	opacity: 0.05;
	background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.asmon-404__particles {
	z-index: 2;
	overflow: hidden;
}

.asmon-404__ember {
	--asmon-404-ember-drift: 0px;
	position: absolute;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--asmon-accent, #c9a84c);
	box-shadow:
		0 0 10px rgba(201, 168, 76, 0.65),
		0 0 22px rgba(201, 168, 76, 0.25);
	opacity: 0;
	animation: asmon-404-ember-rise 1 forwards ease-out;
}

.asmon-404__ember--sm {
	width: 3px;
	height: 3px;
	box-shadow: 0 0 8px rgba(201, 168, 76, 0.5);
}

.asmon-404__ember--lg {
	width: 5px;
	height: 5px;
	box-shadow:
		0 0 14px rgba(201, 168, 76, 0.75),
		0 0 28px rgba(201, 168, 76, 0.3);
}

@keyframes asmon-404-ember-rise {
	0% {
		opacity: 0;
		transform: translate(0, 0) scale(0.55);
	}
	10% {
		opacity: 0.9;
	}
	100% {
		opacity: 0;
		transform: translate(var(--asmon-404-ember-drift), -115vh) scale(0.3);
	}
}

/* —— Contenu centré —— */
.asmon-404__content {
	position: relative;
	z-index: 3;
	width: min(40rem, 100%);
	text-align: center;
}

.asmon-404__label {
	margin: 0 0 1.25rem;
}

.asmon-404__label-text {
	position: relative;
	display: inline-block;
	font-family: var(--asmon-font-display);
	font-size: 0.625rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	line-height: 1.45;
}

.asmon-404__label-text .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.asmon-404__label .asmon-crumb__chrome {
	--chrome-cycle: 18s;
}

.asmon-404__label .asmon-crumb__char {
	font-size: inherit;
	letter-spacing: inherit;
}

.asmon-404__code {
	margin: 0;
	font-family: var(--asmon-font-display);
	font-weight: 400;
	line-height: 1;
	color: var(--asmon-text-bright);
}

.asmon-404__code-visual {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: clamp(0.08em, 1.5vw, 0.18em);
	font-size: clamp(5rem, 22vw, 10rem);
	letter-spacing: 0.06em;
	text-shadow:
		0 0 40px rgba(201, 168, 76, 0.22),
		0 0 90px rgba(201, 168, 76, 0.08);
	overflow: visible;
}

.asmon-404__ink {
	position: absolute;
	inset: 0;
	z-index: 1;
	width: 100%;
	height: 100%;
	pointer-events: none;
	background: transparent;
	mix-blend-mode: normal;
	filter: none;
}

@media (min-width: 901px) {
	.asmon-404__digit,
	.asmon-404__zero {
		position: relative;
		z-index: 1;
		cursor: default;
	}
}

.asmon-404__digit {
	display: inline-block;
	will-change: transform;
}

.asmon-404__glyph-char,
.asmon-404__zero-glyph {
	position: relative;
	z-index: 1;
	display: block;
}

.asmon-404__glyph-veil,
.asmon-404__glyph-glow {
	position: absolute;
	left: 50%;
	top: 50%;
	pointer-events: none;
	border-radius: 50%;
	transform: translate(-50%, -50%);
	opacity: 0;
}

.asmon-404__glyph-veil {
	width: 148%;
	height: 172%;
	z-index: -2;
	background: radial-gradient(
		ellipse at center,
		rgba(255, 232, 190, 0.36) 0%,
		rgba(255, 216, 150, 0.2) 28%,
		rgba(201, 168, 76, 0.14) 48%,
		transparent 74%
	);
	filter: blur(30px);
}

.asmon-404__glyph-glow {
	width: 118%;
	height: 140%;
	z-index: -1;
	background: radial-gradient(
		ellipse at center,
		rgba(255, 244, 220, 0.52) 0%,
		rgba(255, 228, 180, 0.28) 34%,
		rgba(201, 168, 76, 0.16) 54%,
		transparent 78%
	);
	filter: blur(18px);
}

.asmon-404__glyph--lit .asmon-404__glyph-veil {
	opacity: 0.44;
	animation: asmon-404-glyph-breathe 4.8s ease-in-out infinite;
}

.asmon-404__glyph--lit .asmon-404__glyph-glow {
	opacity: 0.26;
	animation: asmon-404-glyph-breathe-glow 4.8s ease-in-out infinite;
}

.asmon-404__glyph--lit .asmon-404__glyph-char,
.asmon-404__glyph--lit .asmon-404__zero-glyph {
	transform-origin: center center;
	text-shadow:
		0 0 48px rgba(201, 168, 76, 0.54),
		0 0 86px rgba(255, 228, 190, 0.34),
		0 0 120px rgba(201, 168, 76, 0.14);
}

.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__glyph-veil {
	animation:
		asmon-404-glyph-ignite-wide 0.94s cubic-bezier(0.22, 0.68, 0.24, 1) forwards,
		asmon-404-glyph-breathe 4.8s ease-in-out 0.94s infinite;
}

.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__glyph-glow {
	animation:
		asmon-404-glyph-ignite-core 0.94s cubic-bezier(0.22, 0.68, 0.24, 1) forwards,
		asmon-404-glyph-breathe-glow 4.8s ease-in-out 0.94s infinite;
}

.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__glyph-char,
.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__zero-glyph {
	animation:
		asmon-404-glyph-ignite-pop 0.94s cubic-bezier(0.28, 1.05, 0.42, 1) forwards,
		asmon-404-glyph-ignite-shine 0.94s ease forwards;
}

@keyframes asmon-404-glyph-pop {
	0% {
		transform: scale(1);
	}
	38% {
		transform: scale(1.08);
	}
	68% {
		transform: scale(1.024);
	}
	100% {
		transform: scale(1);
	}
}

@keyframes asmon-404-glyph-ignite-pop {
	0% {
		transform: scale(1);
		filter: brightness(1);
	}
	32% {
		transform: scale(1.13);
		filter: brightness(1.58);
	}
	52% {
		transform: scale(1.1);
		filter: brightness(1.48);
	}
	74% {
		transform: scale(1.03);
		filter: brightness(1.18);
	}
	100% {
		transform: scale(1);
		filter: brightness(1);
	}
}

@keyframes asmon-404-glyph-ignite-wide {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.66);
		filter: blur(26px) brightness(1);
	}
	26% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.62);
		filter: blur(40px) brightness(1.78);
	}
	54% {
		opacity: 0.92;
		transform: translate(-50%, -50%) scale(1.42);
		filter: blur(36px) brightness(1.62);
	}
	76% {
		opacity: 0.62;
		transform: translate(-50%, -50%) scale(1.18);
		filter: blur(32px) brightness(1.28);
	}
	100% {
		opacity: 0.44;
		transform: translate(-50%, -50%) scale(1.08);
		filter: blur(30px) brightness(1);
	}
}

@keyframes asmon-404-glyph-ignite-core {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.72);
		filter: blur(14px) brightness(1);
	}
	28% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.48);
		filter: blur(24px) brightness(1.85);
	}
	56% {
		opacity: 0.82;
		transform: translate(-50%, -50%) scale(1.28);
		filter: blur(20px) brightness(1.58);
	}
	78% {
		opacity: 0.48;
		transform: translate(-50%, -50%) scale(1.1);
		filter: blur(18px) brightness(1.22);
	}
	100% {
		opacity: 0.26;
		transform: translate(-50%, -50%) scale(1.05);
		filter: blur(18px) brightness(1);
	}
}

@keyframes asmon-404-glyph-ignite-shine {
	0% {
		text-shadow:
			0 0 24px rgba(201, 168, 76, 0.2),
			0 0 48px rgba(201, 168, 76, 0.08);
	}
	30% {
		text-shadow:
			0 0 72px rgba(255, 248, 230, 0.95),
			0 0 112px rgba(255, 228, 180, 0.72),
			0 0 160px rgba(201, 168, 76, 0.42);
	}
	58% {
		text-shadow:
			0 0 64px rgba(255, 244, 220, 0.82),
			0 0 100px rgba(201, 168, 76, 0.58),
			0 0 140px rgba(255, 228, 180, 0.28);
	}
	100% {
		text-shadow:
			0 0 48px rgba(201, 168, 76, 0.54),
			0 0 86px rgba(255, 228, 190, 0.34),
			0 0 120px rgba(201, 168, 76, 0.14);
	}
}

@keyframes asmon-404-glyph-aura-wide {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.82);
	}
	50% {
		opacity: 0.52;
	}
	100% {
		opacity: 0.3;
		transform: translate(-50%, -50%) scale(1.02);
	}
}

@keyframes asmon-404-glyph-aura-core {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.85);
	}
	45% {
		opacity: 0.42;
	}
	100% {
		opacity: 0.12;
		transform: translate(-50%, -50%) scale(1.04);
	}
}

@keyframes asmon-404-glyph-breathe {
	0%,
	100% {
		opacity: 0.42;
		transform: translate(-50%, -50%) scale(1.05);
	}
	50% {
		opacity: 0.58;
		transform: translate(-50%, -50%) scale(1.12);
	}
}

@keyframes asmon-404-glyph-breathe-glow {
	0%,
	100% {
		opacity: 0.24;
		transform: translate(-50%, -50%) scale(1.04);
	}
	50% {
		opacity: 0.4;
		transform: translate(-50%, -50%) scale(1.1);
	}
}

@keyframes asmon-404-glyph-shine {
	0% {
		text-shadow:
			0 0 40px rgba(201, 168, 76, 0.22),
			0 0 90px rgba(201, 168, 76, 0.08);
	}
	45% {
		text-shadow:
			0 0 42px rgba(255, 228, 190, 0.38),
			0 0 64px rgba(201, 168, 76, 0.28);
	}
	100% {
		text-shadow:
			0 0 34px rgba(201, 168, 76, 0.36),
			0 0 56px rgba(255, 228, 190, 0.18);
	}
}

@media (min-width: 901px) {
	.asmon-404__code-visual {
		transition: gap 1.05s cubic-bezier(0.22, 1, 0.36, 1);
	}

	.asmon-404__digit--a,
	.asmon-404__digit--b {
		transition: transform 1.05s cubic-bezier(0.22, 1, 0.36, 1);
	}
}

/* Le « 0 » porte la ligne scroll (centrage optique + ligne fine) */
.asmon-404__zero {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 0.68em;
	height: 1em;
	vertical-align: baseline;
	overflow: visible;
}

.asmon-404__code-veil,
.asmon-404__code-glow {
	position: absolute;
	left: 50%;
	top: 50%;
	pointer-events: none;
	border-radius: 50%;
	transform: translate(-50%, -50%);
	opacity: 0;
}

.asmon-404__code-veil {
	width: 115%;
	height: 140%;
	z-index: -2;
	background: radial-gradient(
		ellipse at center,
		rgba(255, 228, 185, 0.22) 0%,
		rgba(201, 168, 76, 0.1) 35%,
		transparent 68%
	);
	filter: blur(36px);
}

.asmon-404__code-glow {
	width: 95%;
	height: 115%;
	z-index: -1;
	background: radial-gradient(
		ellipse at center,
		rgba(255, 240, 210, 0.35) 0%,
		rgba(201, 168, 76, 0.15) 40%,
		transparent 75%
	);
	filter: blur(22px);
}

/* Pulsation continue (lettres allumées, fusion, résolu) */
.asmon-404__code-visual.asmon-404--pulsing .asmon-404__code-veil,
.asmon-404__code-visual.asmon-404--pulsing .asmon-404__glyph--lit .asmon-404__glyph-veil {
	animation: asmon-404-fusion-pulse 3.6s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}

.asmon-404__code-visual.asmon-404--pulsing .asmon-404__code-glow,
.asmon-404__code-visual.asmon-404--pulsing .asmon-404__glyph--lit .asmon-404__glyph-glow {
	animation: asmon-404-fusion-pulse-core 3.6s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}

/* Fusion : explosion de lumière (halos réunis), puis pulsation */
.asmon-404__code-visual.asmon-404--fusing::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	z-index: 0;
	width: 155%;
	height: 195%;
	border-radius: 50%;
	pointer-events: none;
	transform: translate(-50%, -50%);
	background: radial-gradient(
		ellipse at center,
		rgba(255, 252, 238, 0.98) 0%,
		rgba(255, 236, 195, 0.82) 14%,
		rgba(255, 220, 160, 0.55) 32%,
		rgba(201, 168, 76, 0.28) 52%,
		transparent 74%
	);
	filter: blur(20px);
	animation: asmon-404-fusion-explosion 3.2s linear forwards;
}

.asmon-404__code-visual.asmon-404--fusing .asmon-404__code-veil,
.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__glyph-veil {
	animation:
		asmon-404-fusion-burst-wide 3.2s linear forwards,
		asmon-404-fusion-pulse 3.6s cubic-bezier(0.45, 0.05, 0.55, 0.95) 2.35s infinite;
}

.asmon-404__code-visual.asmon-404--fusing .asmon-404__code-glow,
.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__glyph-glow {
	animation:
		asmon-404-fusion-burst-core 3.2s linear forwards,
		asmon-404-fusion-pulse-core 3.6s cubic-bezier(0.45, 0.05, 0.55, 0.95) 2.35s infinite;
}

.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__glyph-char,
.asmon-404__code-visual.asmon-404--fusing .asmon-404__zero-glyph {
	transform-origin: center center;
	animation: asmon-404-fusion-text-flash 3.2s linear forwards;
}

/* linear + frames rapprochées = régression fluide (sans paliers visibles) */
@keyframes asmon-404-fusion-explosion {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.55);
		filter: blur(18px) brightness(1);
	}
	7% {
		opacity: 0.72;
		transform: translate(-50%, -50%) scale(1.02);
	}
	14% {
		opacity: 0.96;
		transform: translate(-50%, -50%) scale(1.48);
		filter: blur(24px) brightness(1.28);
	}
	18% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.72);
		filter: blur(26px) brightness(1.32);
	}
	22% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.62);
		filter: blur(25px) brightness(1.28);
	}
	28% {
		opacity: 0.94;
		transform: translate(-50%, -50%) scale(1.5);
	}
	34% {
		opacity: 0.86;
		transform: translate(-50%, -50%) scale(1.38);
		filter: blur(24px) brightness(1.2);
	}
	40% {
		opacity: 0.76;
		transform: translate(-50%, -50%) scale(1.28);
	}
	46% {
		opacity: 0.66;
		transform: translate(-50%, -50%) scale(1.2);
		filter: blur(23px) brightness(1.14);
	}
	52% {
		opacity: 0.56;
		transform: translate(-50%, -50%) scale(1.14);
	}
	58% {
		opacity: 0.46;
		transform: translate(-50%, -50%) scale(1.1);
		filter: blur(22px) brightness(1.1);
	}
	64% {
		opacity: 0.36;
		transform: translate(-50%, -50%) scale(1.07);
	}
	70% {
		opacity: 0.27;
		transform: translate(-50%, -50%) scale(1.04);
		filter: blur(21px) brightness(1.06);
	}
	76% {
		opacity: 0.18;
		transform: translate(-50%, -50%) scale(1.025);
	}
	82% {
		opacity: 0.11;
		transform: translate(-50%, -50%) scale(1.015);
		filter: blur(20px) brightness(1.03);
	}
	88% {
		opacity: 0.06;
		transform: translate(-50%, -50%) scale(1.01);
	}
	94% {
		opacity: 0.02;
		transform: translate(-50%, -50%) scale(1.005);
	}
	100% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(1);
		filter: blur(18px) brightness(1);
	}
}

@keyframes asmon-404-fusion-burst-wide {
	0% {
		opacity: 0.32;
		transform: translate(-50%, -50%) scale(0.95);
		filter: blur(28px) brightness(1);
	}
	10% {
		opacity: 0.88;
		transform: translate(-50%, -50%) scale(1.38);
	}
	14% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.62);
		filter: blur(32px) brightness(1.38);
	}
	18% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.58);
	}
	24% {
		opacity: 0.97;
		transform: translate(-50%, -50%) scale(1.5);
		filter: blur(30px) brightness(1.3);
	}
	30% {
		opacity: 0.92;
		transform: translate(-50%, -50%) scale(1.42);
	}
	36% {
		opacity: 0.86;
		transform: translate(-50%, -50%) scale(1.34);
		filter: blur(30px) brightness(1.22);
	}
	42% {
		opacity: 0.79;
		transform: translate(-50%, -50%) scale(1.27);
	}
	48% {
		opacity: 0.72;
		transform: translate(-50%, -50%) scale(1.21);
		filter: blur(29px) brightness(1.16);
	}
	54% {
		opacity: 0.65;
		transform: translate(-50%, -50%) scale(1.16);
	}
	60% {
		opacity: 0.58;
		transform: translate(-50%, -50%) scale(1.12);
		filter: blur(29px) brightness(1.1);
	}
	66% {
		opacity: 0.51;
		transform: translate(-50%, -50%) scale(1.09);
	}
	72% {
		opacity: 0.44;
		transform: translate(-50%, -50%) scale(1.065);
		filter: blur(28px) brightness(1.06);
	}
	78% {
		opacity: 0.38;
		transform: translate(-50%, -50%) scale(1.05);
	}
	84% {
		opacity: 0.33;
		transform: translate(-50%, -50%) scale(1.04);
		filter: blur(28px) brightness(1.03);
	}
	90% {
		opacity: 0.3;
		transform: translate(-50%, -50%) scale(1.035);
	}
	96% {
		opacity: 0.285;
		transform: translate(-50%, -50%) scale(1.032);
	}
	100% {
		opacity: 0.28;
		transform: translate(-50%, -50%) scale(1.03);
		filter: blur(28px) brightness(1);
	}
}

@keyframes asmon-404-fusion-burst-core {
	0% {
		opacity: 0.18;
		transform: translate(-50%, -50%) scale(0.92);
		filter: blur(16px) brightness(1);
	}
	12% {
		opacity: 0.92;
		transform: translate(-50%, -50%) scale(1.38);
	}
	16% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.52);
		filter: blur(20px) brightness(1.35);
	}
	20% {
		opacity: 0.98;
		transform: translate(-50%, -50%) scale(1.46);
	}
	26% {
		opacity: 0.92;
		transform: translate(-50%, -50%) scale(1.38);
		filter: blur(19px) brightness(1.28);
	}
	32% {
		opacity: 0.85;
		transform: translate(-50%, -50%) scale(1.3);
	}
	38% {
		opacity: 0.77;
		transform: translate(-50%, -50%) scale(1.23);
		filter: blur(18px) brightness(1.22);
	}
	44% {
		opacity: 0.69;
		transform: translate(-50%, -50%) scale(1.17);
	}
	50% {
		opacity: 0.61;
		transform: translate(-50%, -50%) scale(1.12);
		filter: blur(17px) brightness(1.16);
	}
	56% {
		opacity: 0.53;
		transform: translate(-50%, -50%) scale(1.1);
	}
	62% {
		opacity: 0.45;
		transform: translate(-50%, -50%) scale(1.075);
		filter: blur(17px) brightness(1.1);
	}
	68% {
		opacity: 0.37;
		transform: translate(-50%, -50%) scale(1.06);
	}
	74% {
		opacity: 0.3;
		transform: translate(-50%, -50%) scale(1.05);
		filter: blur(16px) brightness(1.06);
	}
	80% {
		opacity: 0.24;
		transform: translate(-50%, -50%) scale(1.045);
	}
	86% {
		opacity: 0.18;
		transform: translate(-50%, -50%) scale(1.042);
		filter: blur(16px) brightness(1.03);
	}
	92% {
		opacity: 0.14;
		transform: translate(-50%, -50%) scale(1.04);
	}
	100% {
		opacity: 0.12;
		transform: translate(-50%, -50%) scale(1.04);
		filter: blur(16px) brightness(1);
	}
}

@keyframes asmon-404-fusion-text-flash {
	0% {
		transform: scale(1);
		color: inherit;
		text-shadow:
			0 0 40px rgba(201, 168, 76, 0.22),
			0 0 90px rgba(201, 168, 76, 0.08);
	}
	14% {
		transform: scale(1.05);
		color: #fff8eb;
		text-shadow:
			0 0 55px rgba(255, 245, 220, 0.95),
			0 0 100px rgba(255, 228, 180, 0.75),
			0 0 140px rgba(201, 168, 76, 0.55);
	}
	22% {
		transform: scale(1.04);
	}
	30% {
		transform: scale(1.03);
		text-shadow:
			0 0 50px rgba(255, 236, 200, 0.78),
			0 0 90px rgba(201, 168, 76, 0.48);
	}
	40% {
		transform: scale(1.02);
	}
	50% {
		transform: scale(1.015);
		text-shadow:
			0 0 44px rgba(255, 228, 190, 0.58),
			0 0 78px rgba(201, 168, 76, 0.36);
	}
	62% {
		transform: scale(1.008);
	}
	74% {
		transform: scale(1.004);
		text-shadow:
			0 0 40px rgba(201, 168, 76, 0.44),
			0 0 68px rgba(255, 228, 190, 0.24);
	}
	86% {
		transform: scale(1.001);
		color: inherit;
	}
	100% {
		transform: scale(1);
		text-shadow:
			0 0 36px rgba(201, 168, 76, 0.42),
			0 0 60px rgba(255, 228, 190, 0.22);
	}
}

@keyframes asmon-404-fusion-pulse {
	0%,
	100% {
		opacity: 0.34;
		transform: translate(-50%, -50%) scale(1.04);
		filter: blur(28px) brightness(1.04);
	}
	22% {
		opacity: 0.48;
		transform: translate(-50%, -50%) scale(1.055);
	}
	50% {
		opacity: 0.88;
		transform: translate(-50%, -50%) scale(1.1);
		filter: blur(30px) brightness(1.08);
	}
	78% {
		opacity: 0.48;
		transform: translate(-50%, -50%) scale(1.055);
	}
}

@keyframes asmon-404-fusion-pulse-core {
	0%,
	100% {
		opacity: 0.16;
		transform: translate(-50%, -50%) scale(1.045);
		filter: blur(16px) brightness(1.04);
	}
	24% {
		opacity: 0.3;
		transform: translate(-50%, -50%) scale(1.065);
	}
	50% {
		opacity: 0.76;
		transform: translate(-50%, -50%) scale(1.12);
		filter: blur(18px) brightness(1.1);
	}
	76% {
		opacity: 0.3;
		transform: translate(-50%, -50%) scale(1.065);
	}
}

.asmon-404__code-visual.asmon-404--resolved .asmon-404__zero-glyph,
.asmon-404__code-visual.asmon-404--resolved .asmon-404__glyph-char {
	animation: asmon-404-zero-shine 2.6s ease forwards;
}

.asmon-404__code-visual.asmon-404--merging,
.asmon-404__code-visual.asmon-404--resolved {
	gap: 0 !important;
	letter-spacing: 0 !important;
}

.asmon-404__code-visual.asmon-404--fusing .asmon-404__zero,
.asmon-404__code-visual.asmon-404--merging .asmon-404__zero {
	isolation: isolate;
	z-index: 3;
}

.asmon-404__code-visual.asmon-404--fusing .asmon-404__zero-line,
.asmon-404__code-visual.asmon-404--merging .asmon-404__zero-line {
	z-index: 12;
	opacity: 1;
	visibility: visible;
	animation: asmon-404-zero-scroll-pulse 2.2s ease-in-out infinite;
	box-shadow:
		0 0 8px rgba(201, 168, 76, 0.55),
		0 0 14px rgba(255, 228, 180, 0.35);
}

.asmon-404__zero-line.is-retiring {
	opacity: 0;
	visibility: hidden;
	transition:
		opacity 0.52s ease,
		visibility 0.52s ease,
		box-shadow 0.52s ease,
		filter 0.52s ease;
	filter: blur(4px);
}

/* Mobile / tactile : pas de mini-jeu → pas de ligne scroll dans le 0 */
@media (max-width: 900px) {
	.asmon-404__zero-line {
		display: none !important;
	}
}

.asmon-404__code-visual.asmon-404--resolved .asmon-404__zero-line {
	opacity: 0;
	visibility: hidden;
}

@keyframes asmon-404-aura-wide {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.75);
	}
	45% {
		opacity: 0.85;
	}
	100% {
		opacity: 0.25;
		transform: translate(-50%, -50%) scale(1.1);
	}
}

@keyframes asmon-404-aura-core {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.8);
	}
	40% {
		opacity: 0.7;
	}
	100% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(1.2);
	}
}

@keyframes asmon-404-zero-shine {
	0% {
		text-shadow:
			0 0 40px rgba(201, 168, 76, 0.22),
			0 0 90px rgba(201, 168, 76, 0.08);
	}
	40% {
		text-shadow:
			0 0 48px rgba(255, 228, 190, 0.55),
			0 0 80px rgba(201, 168, 76, 0.42);
	}
	100% {
		text-shadow:
			0 0 32px rgba(201, 168, 76, 0.38),
			0 0 64px rgba(255, 228, 190, 0.2);
	}
}

.asmon-404__zero-glyph {
	display: block;
	width: 100%;
	line-height: 1;
	text-align: center;
	color: var(--asmon-text-bright);
}

.asmon-404__zero-line {
	position: absolute;
	left: calc(50% - 0.035em);
	top: 50%;
	z-index: 2;
	width: 1px;
	height: 0.28em;
	margin: 0;
	transform: translate(-50%, -50%);
	transform-origin: center center;
	background: linear-gradient(to bottom, var(--asmon-accent), transparent);
	box-shadow: 0 0 6px rgba(201, 168, 76, 0.32);
	animation: asmon-404-zero-scroll-pulse 2.2s ease-in-out infinite;
}

@keyframes asmon-404-zero-scroll-pulse {
	0%,
	100% {
		opacity: 0.35;
		transform: translate(-50%, -50%) scaleY(0.7);
	}

	50% {
		opacity: 1;
		transform: translate(-50%, -50%) scaleY(1);
	}
}

.asmon-404__lead {
	margin: 0 auto clamp(1.75rem, 5vh, 2.5rem);
	max-width: 28rem;
	font-size: clamp(1.05rem, 2.4vw, 1.2rem);
	font-style: italic;
	line-height: 1.65;
	color: var(--asmon-text);
}

.asmon-404__lead-ph {
	display: inline-block;
	transition:
		opacity 0.52s ease,
		filter 0.52s ease,
		color 0.52s ease;
}

.asmon-404__lead-ph.is-fading-out {
	opacity: 0;
	filter: blur(5px);
}

.asmon-404__lead-ph.is-fading-in {
	opacity: 1;
	filter: blur(0);
}

.asmon-404__lead-ph.is-found {
	color: var(--asmon-text-bright);
	text-shadow: 0 0 18px rgba(201, 168, 76, 0.12);
}

.asmon-404__actions {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 0;
}

.asmon-404__home.btn {
	display: inline-block;
	padding: 0.75rem 1.5rem;
	font-family: var(--asmon-font-display);
	font-size: 0.6875rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--asmon-accent);
	border: 1px solid var(--asmon-line);
	background: rgba(14, 11, 8, 0.55);
	backdrop-filter: blur(4px);
	transition:
		border-color 0.25s ease,
		color 0.25s ease,
		transform 0.25s ease,
		box-shadow 0.25s ease;
}

.asmon-404__home.btn:hover,
.asmon-404__home.btn:focus-visible {
	color: var(--asmon-text-bright);
	border-color: var(--asmon-accent);
	transform: translateY(-2px);
	box-shadow: 0 0 22px rgba(201, 168, 76, 0.2);
}

/* Reveals (même logique que les autres gabarits) */
.asmon-404 .reveal {
	opacity: 0;
	transform: translateY(36px);
	filter: blur(6px);
	transition:
		opacity 1s cubic-bezier(0.16, 1, 0.3, 1),
		transform 1s cubic-bezier(0.16, 1, 0.3, 1),
		filter 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.asmon-404 .reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
	filter: blur(0);
}

.asmon-404 .reveal--delay-1.is-visible { transition-delay: 0.12s; }
.asmon-404 .reveal--delay-2.is-visible { transition-delay: 0.28s; }
.asmon-404 .reveal--delay-3.is-visible { transition-delay: 0.44s; }

@media (prefers-reduced-motion: reduce) {
	body.asmon-page-template--404::before,
	.asmon-404__zero-line,
	.asmon-404__ember,
	.asmon-404__code-veil,
	.asmon-404__code-glow,
	.asmon-404__code-visual.asmon-404--pulsing .asmon-404__code-veil,
	.asmon-404__code-visual.asmon-404--pulsing .asmon-404__code-glow,
	.asmon-404__code-visual.asmon-404--pulsing .asmon-404__glyph--lit .asmon-404__glyph-veil,
	.asmon-404__code-visual.asmon-404--pulsing .asmon-404__glyph--lit .asmon-404__glyph-glow,
	.asmon-404__code-visual.asmon-404--fusing .asmon-404__code-veil,
	.asmon-404__code-visual.asmon-404--fusing .asmon-404__code-glow,
	.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__glyph-veil,
	.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__glyph-glow,
	.asmon-404__glyph--lit .asmon-404__glyph-veil,
	.asmon-404__glyph--lit .asmon-404__glyph-glow,
	.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__glyph-veil,
	.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__glyph-glow,
	.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__glyph-char,
	.asmon-404__glyph--lit.asmon-404__glyph--ignite .asmon-404__zero-glyph,
	.asmon-404__code-visual.asmon-404--fusing::after,
	.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__glyph-char,
	.asmon-404__code-visual.asmon-404--fusing .asmon-404__glyph--lit .asmon-404__zero-glyph,
	.asmon-404__glyph--lit .asmon-404__glyph-char,
	.asmon-404__glyph--lit .asmon-404__zero-glyph,
	.asmon-404__code-visual.asmon-404--resolved .asmon-404__zero-glyph,
	.asmon-404__code-visual.asmon-404--resolved .asmon-404__glyph-char {
		animation: none;
	}

	.asmon-404__lead-ph.is-fading-out,
	.asmon-404__lead-ph.is-fading-in {
		transition: none;
	}

	.asmon-404__digit--a,
	.asmon-404__digit--b {
		transition: none;
	}

	.asmon-404 .reveal {
		opacity: 1;
		transform: none;
		filter: none;
		transition: none;
	}
}
