.night_scene {
	position: fixed;
	inset: 0;
	overflow: hidden;
	pointer-events: none;
	z-index: -5000;
	contain: strict;
}
.night_viewport_probe {
	position: absolute;
	left: 0;
	top: 0;
	width: 0;
	height: 100vh;
	height: 100lvh;
	visibility: hidden;
}
.night_sky {
	position: absolute;
	inset: 0;
	overflow: hidden;
	background: linear-gradient(rgb(3, 5, 13), rgb(6, 9, 22) 60%, rgb(14, 19, 40));
}
body {
	position: relative;
}
.night_track {
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 100%;
	overflow: clip;
	pointer-events: none;
}
.night_water_track {
	z-index: -4900;
}
.night_land_track {
	z-index: -4700;
}
.night_hold {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
}
.night_forest {
	position: absolute;
	left: 0;
}
.night_forest canvas {
	display: block;
}
.night_land_frame {
	position: sticky;
	top: 0;
	overflow: hidden;
}
.night_rotor {
	position: absolute;
	animation: night_spin 720s linear infinite;
	will-change: transform;
}
.night_layer {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}
.night_hue {
	animation: hueRotate 10s linear infinite;
	will-change: filter;
}
.night_twinkle_a {
	animation: night_twinkle 2.6s ease-in-out infinite alternate;
}
.night_twinkle_b {
	animation: night_twinkle 3.7s ease-in-out -1.8s infinite alternate;
}
.night_lake_twinkle_a {
	animation: night_lake_twinkle 2.3s ease-in-out infinite;
}
.night_lake_twinkle_b {
	animation: night_lake_twinkle 3.1s ease-in-out -1.3s infinite reverse;
}
.night_haze {
	position: absolute;
	left: 0;
	right: 0;
	background: linear-gradient(rgba(14, 19, 40, 0), rgba(14, 19, 40, 0.75));
}
.night_glow {
	position: absolute;
	left: 0;
	width: 100%;
}
.night_glow_layer,
.night_glow_sparks {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}
.night_glow_layer {
	animation: night_glow_breathe 4.2s ease-in-out infinite alternate;
}
.night_glow_rays {
	animation-duration: 3.1s;
	animation-delay: -1.4s;
}
.night_grass {
	position: absolute;
	left: 0;
	width: 100%;
	background:
		url('../images/header_grass.svg') 0 100% / 220px 16px repeat-x,
		url('../images/header_grass.svg') 97px 100% / 150px 11px repeat-x;
}
@keyframes night_glow_breathe {
	from { opacity: 0.65; }
	to { opacity: 1; }
}
.night_lake {
	position: sticky;
	top: 0;
	overflow: hidden;
	background: linear-gradient(rgb(8, 12, 24), rgb(4, 7, 14) 30%, rgb(2, 3, 7));
}
.night_ripple {
	position: absolute;
	inset: 0;
	animation: night_ripple 6s ease-in-out infinite alternate;
	will-change: transform;
}
.night_mirror {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 0;
	transform-origin: 0 0;
	animation: night_shimmer 3.3s ease-in-out infinite alternate;
}
.night_header_ripple {
	position: absolute;
	left: 0;
	width: 100%;
	animation: night_ripple 6s ease-in-out infinite alternate;
	will-change: transform;
}
.night_shore_reflection,
.night_header_reflection {
	position: absolute;
	left: 0;
	top: 0;
}
.night_lake_depth {
	position: absolute;
	inset: 0;
	background: linear-gradient(rgba(2, 3, 7, 0), rgba(2, 3, 7, 0.25) 30%, rgba(2, 3, 7, 0.5));
}
.night_meteors {
	position: fixed;
	left: 0;
	top: 0;
	width: 100%;
	z-index: -4800;
	pointer-events: none;
}
.night_land {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
}
.night_boat_track {
	position: absolute;
	left: 0;
	top: 0;
	width: 0;
	height: 0;
	animation: night_boat_drift 90s ease-in-out infinite alternate;
	will-change: transform;
}
.night_boat {
	position: absolute;
	transform-origin: 50% 90%;
	animation: night_bob 4.5s ease-in-out infinite;
}
.night_boat_reflection {
	opacity: 0.3;
	transform-origin: 50% 8%;
	animation-name: night_bob_reflection;
}
@keyframes night_spin {
	to { transform: rotate(-360deg); }
}
@keyframes night_twinkle {
	from { opacity: 1; }
	to { opacity: 0.25; }
}
@keyframes night_lake_twinkle {
	0% { opacity: 1; }
	13% { opacity: 0.7; }
	22% { opacity: 0.95; }
	41% { opacity: 0.78; }
	47% { opacity: 1; }
	68% { opacity: 0.6; }
	79% { opacity: 0.9; }
	90% { opacity: 0.75; }
	100% { opacity: 1; }
}
@keyframes night_ripple {
	from { transform: translateX(-1.5px) scaleX(1.003); }
	to { transform: translateX(1.5px) scaleX(0.997); }
}
@keyframes night_shimmer {
	from { opacity: 0.8; }
	to { opacity: 1; }
}
@keyframes night_boat_drift {
	from { transform: translateX(0); }
	to { transform: translateX(var(--boat_travel, 0px)); }
}
@keyframes night_bob {
	0%, 100% { transform: translateY(0) rotate(-1.4deg); }
	50% { transform: translateY(1.2px) rotate(1.4deg); }
}
@keyframes night_bob_reflection {
	0%, 100% { transform: translateY(0) rotate(1.4deg); }
	50% { transform: translateY(-1.2px) rotate(-1.4deg); }
}
