/* =============================================
   Hero — Estilos base compartidos entre templates
   ============================================= */

.hero {
	background: var(--z-color-bg-dark);
	color: var(--z-color-text-inverse);
	min-height: 90dvh;
	display: flex;
	flex-direction: column;
	position: relative;
	overflow: hidden;
}

.hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to right, transparent, rgba(88, 132, 241, 0.2));
	z-index: 0;
	pointer-events: none;
}

.hero__body {
	flex: 1;
	display: flex;
	align-items: center;
	padding-block: clamp(2rem, 4vw, 4rem);
	position: relative;
	z-index: 2;
}

.hero__content {
	position: relative;
	z-index: 2;
}

.hero__title {
	color: var(--z-color-text-inverse);
	max-width: 50rem;
	margin-bottom: 1.5rem;
}

.hero__title-main {
	display: block;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	font-weight: 900;
	line-height: 1.05;
}

.hero__highlight {
	font-style: normal;
	background: var(--z-color-accent);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

.hero__title-sub {
	display: block;
	font-size: clamp(2.25rem, 4vw, 3.5rem);
	font-weight: 600;
	line-height: 1.1;
	margin-top: 0.125em;
}

.hero__subtitle {
	font-size: 1rem;
	font-weight: 400;
	color: rgba(255, 255, 255, 0.7);
	max-width: 40rem;
	margin-bottom: 2rem;
	line-height: 1.6;
}

.hero__actions {
	display: flex;
	gap: 1rem;
	flex-wrap: wrap;
}

.hero__preheader {
	display: block;
	font-family: var(--z-font-heading);
	font-size: 1rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--z-color-secondary);
	margin-bottom: 1.25rem;
}

/* Decoraciones SVG */
.hero__decoration {
	position: absolute;
	left: -50%;
	bottom: -35%;
	width: 120%;
	height: 120%;
	opacity: 0.2;
	z-index: 1;
	-webkit-mask-image: radial-gradient(ellipse at center, black 15%, transparent 50%);
	mask-image: radial-gradient(ellipse at center, black 15%, transparent 50%);
	contain: layout style paint;
	transform: scale(4) translateZ(0);
	will-change: transform;
}

.hero__decoration svg {
	width: 100%;
	height: 100%;
}

.hero__decoration--pulse {
	opacity: 0.5;
	pointer-events: none;
	-webkit-mask-image: linear-gradient(to right, transparent, black 25%, transparent);
	mask-image: linear-gradient(to right, transparent, black 25%, transparent);
	-webkit-mask-size: 5vw 100%;
	mask-size: 5vw 100%;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: 44vw 0;
	mask-position: 44vw 0;
}

.hero__deco-pulse {
	display: none;
}

.hero__deco-pulse.is-active {
	display: inline;
}

@media (prefers-reduced-motion: reduce) {
	.hero__decoration--pulse {
		display: none;
	}
}

@media (max-width: 768px) {
	.hero {
		min-height: auto;
	}

	.hero__body {
		padding-block: 6rem 3rem;
	}

	.hero__decoration {
		opacity: 0.25;
	}

	.hero__decoration--pulse {
		display: none;
	}
}
