/* =========================================================
   HERTSPARTNERS OPENING EXPERIENCE
   Owner-supplied brand checkpoint: the approved lockup appears, gives one
   gentle pulse, then transitions into the site. ~0.74s total. Once per session
   (assets/js/opening-experience.js), never blocking interaction — the
   overlay is pointer-events:none for its entire life and the underlying
   page loads and renders completely normally underneath it throughout.
   ========================================================= */

#hp-opening {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: radial-gradient(ellipse at 50% 40%, #ece3ff, #faf8ff 75%);
	color: #251b36;
	pointer-events: none; /* never blocks a tap/scroll, even mid-animation */
	opacity: 1;
	animation: hp-opening-fade-out 0.18s ease-in forwards;
	animation-delay: 0.56s; /* whole sequence finishes, then this fades the overlay out */
}

#hp-opening.hp-opening--skip {
	display: none; /* already shown this session — removed before first paint, see the inline script */
}

#hp-opening__mark {
	width: min(560px, 88vw);
}

#hp-opening__lockup {
	display: block;
	width: 168px;
	height: 168px;
	object-fit: contain;
	margin: 0 auto 24px;
	transform-origin: 50% 50%;
	opacity: 0;
	transform: scale(0.96);
	animation: hp-opening-lockup-in 0.34s cubic-bezier(0.22, 1, 0.36, 1) 0.04s forwards,
		hp-opening-heartbeat 0.2s cubic-bezier(0.36, 0, 0.66, 1) 0.32s 1;
}

@keyframes hp-opening-heartbeat {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.025); }
}

@keyframes hp-opening-lockup-in {
	to { opacity: 1; transform: scale(1); }
}

@keyframes hp-opening-fade-out {
	to { opacity: 0; }
}

/* Reduced motion: a brief, calm fade — no assembly, no scaling pulse, no
   sliding wordmark. Still a real (if minimal) branded moment, not nothing,
   per the approved direction's own "include a reduced-motion version"
   instruction rather than simply skipping it outright. */
@media (prefers-reduced-motion: reduce) {
	#hp-opening__lockup {
		animation: hp-opening-reduced-fade 0.14s ease-out forwards;
		animation-delay: 0.02s;
		transform: none;
	}

	#hp-opening {
		animation: hp-opening-fade-out 0.16s ease-in forwards;
		animation-delay: 0.18s; /* brief hold, then fade — no assembly/pulse to wait for */
	}
}

@keyframes hp-opening-reduced-fade {
	to { opacity: 1; }
}

/* Shared website loading identity, matching the native Heartbeat composition. */
.hp-loading-brand { text-align: center; padding: 28px 20px; box-sizing: border-box; }
.hp-loading-brand > img { display: block; width: 132px; height: 132px; object-fit: contain; margin: 0 auto 20px; }
.hp-loading-brand > strong { display: block; font-family: Georgia, serif; font-size: clamp(26px, 4vw, 38px); line-height: 1.2; color: inherit; }
.hp-loading-brand > span { display: block; max-width: 340px; margin: 14px auto 0; font-size: 16px; line-height: 1.5; color: inherit; }
.hp-loading-brand__progress { font-size: 14px !important; }
.hp-loading-brand__progress::before { content: ''; display: inline-block; width: 12px; height: 12px; margin-right: 8px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; vertical-align: -2px; animation: hp-loading-spin 1s linear infinite; }
.hp-local-map__loading { position: absolute; inset: 0 0 100px; z-index: 450; display: flex; flex-direction: column; align-items: center; justify-content: center; background: radial-gradient(ellipse at 50% 40%, #ece3ff, #faf8ff 75%); color: #251b36; }
.hp-local-map__loading[hidden] { display: none; }
.hp-local-map__loading.is-error .hp-loading-brand__progress::before { display: none; }
.hp-local-map__loading button { margin-top: 18px; padding: 10px 20px; border-radius: 24px; border: 1px solid #a78bfa; background: #6d28d9; color: #fff; font-weight: 600; }
html.hp-experience-dark #hp-opening,
html.hp-experience-dark .hp-local-map__loading { background: radial-gradient(ellipse at 50% 40%, #20103f, #0e0923 75%); color: #f5efff; }
@keyframes hp-loading-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .hp-loading-brand__progress::before { animation: none; } }

.hp-local-map__loading [hidden] { display: none !important; }
.hp-map-is-loading > .hp-local-map__brand, .hp-map-is-loading > .hp-local-map__status { visibility: hidden; }
