/*
 * Base styles — selection, links, focus, motion. Tokens only, no raw hex.
 */

::selection {
	background: var(--lv-gold);
	color: var(--lv-black);
}

body {
	font-family: var(--lv-font-body);
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

/**
 * Full-bleed breakout — Gutenberg-composed pages (About, FAQs, Contact, SEO
 * hubs) render inside Blocksy's default constrained .entry-content wrapper
 * (our PHP page-templates bypass it entirely via get_header()/get_footer(),
 * so they never need this). Shortcode blocks can't use core's align:full
 * either. This is the classic 100vw breakout, applied directly to each
 * full-width section class rather than relying on theme align-wide support.
 */
.lv-full-bleed {
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

a {
	color: var(--lv-gold);
	text-decoration: none;
	transition: color .25s ease;
}

a:hover {
	color: var(--lv-gold-light);
}

a,
button,
input,
textarea,
select {
	transition: color .25s ease, background-color .3s ease, border-color .3s ease, transform .3s ease, filter .3s ease;
}

input,
textarea,
select,
button {
	font-family: inherit;
}

:focus-visible {
	outline: 2px solid var(--lv-gold);
	outline-offset: 2px;
}

@keyframes lvFade {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

@keyframes lvCue {
	0%, 100% {
		transform: translateY(0);
		opacity: .45;
	}
	50% {
		transform: translateY(7px);
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}
