/* ==========================================================================
   sa26 — Sistema visual 2026 para serviciosalicante.net
   ==========================================================================

   Cada decisión de este fichero tiene un motivo declarado. Nada es decorativo.

   JERARQUÍA INVERTIDA (el encargo central)
   El H1 lleva la keyword y existe para el algoritmo, pero visualmente actúa
   como antetítulo pequeño. Quien manda en la mirada es la frase gancho, que es
   un <p>. Es el mismo recurso del titular de prensa seria: el epígrafe orienta,
   la entradilla convence. Google lee la jerarquía correcta; la persona recibe
   primero el argumento.

   COLOR CON ESCASEZ DELIBERADA
   El rojo de marca (#cf1020) aparece en menos del 3 % de la superficie: solo
   en la etiqueta del H1, en el CTA y en el subrayado del gancho. Un color que
   aparece en todas partes deja de significar nada; restringido, cada aparición
   ordena una acción. Efecto von Restorff aplicado al color.

   MOVIMIENTO CON PROPÓSITO
   Nada se mueve por moverse. El movimiento aquí hace tres cosas: confirmar que
   el sistema responde (reduce ansiedad), marcar progreso de lectura (efecto
   Zeigarnik: una tarea empezada tira de uno hasta acabarla) y dirigir la mirada
   al siguiente punto de decisión. Todo respeta prefers-reduced-motion.

   RENDIMIENTO
   Animaciones de scroll nativas (animation-timeline), sin JavaScript ni
   librerías. Solo se animan transform y opacity, que van al compositor y no
   provocan recálculo de diseño.
   ========================================================================== */

.sa26 {
	--sa-marca: #cf1020;          /* acción: solo CTA y acentos de mando */
	--sa-marca-suave: #ff4e64;
	--sa-tinta: #16181d;          /* autoridad: máximo contraste para leer */
	--sa-tinta-media: #4a4f5a;
	--sa-tinta-suave: #6b7280;
	--sa-papel: #ffffff;
	--sa-papel-calido: #fbfaf8;   /* calidez: reduce la fatiga frente al blanco puro */
	--sa-linea: #e8e6e2;
	--sa-confianza: #0e7490;      /* dato verificable, nunca venta */

	--sa-ancho: 760px;            /* ~75 caracteres por línea: el óptimo de lectura */
	--sa-curva: cubic-bezier(.22,.61,.36,1);

	display: block;
	max-width: var(--sa-ancho);
	margin-inline: auto;
	padding: 0 20px 64px;
	font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
	font-size: 18px;              /* cuerpo generoso: la lectura larga lo exige */
	line-height: 1.72;
	color: var(--sa-tinta);
	-webkit-font-smoothing: antialiased;
	text-wrap: pretty;
}

/* --------------------------------------------------------------------------
   1. ENTRADA — los primeros tres segundos deciden si se queda
   -------------------------------------------------------------------------- */

.sa26-entrada {
	padding: 40px 0 28px;
	border-bottom: 1px solid var(--sa-linea);
	margin-bottom: 36px;
}

/* Antetítulo: ubica en una ojeada. Responde "¿esto es de lo mío y de aquí?" */
.sa26-etiqueta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 14px;
	padding: 6px 13px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--sa-marca);
	background: rgba(207,16,32,.06);
	border: 1px solid rgba(207,16,32,.18);
	border-radius: 999px;
}
.sa26-etiqueta::before {
	content: "";
	width: 6px; height: 6px;
	border-radius: 50%;
	background: var(--sa-marca);
	/* Latido lentísimo: señal de "esto está vivo y actualizado", por debajo
	   del umbral de molestia. */
	animation: sa-latido 3.6s ease-in-out infinite;
}
@keyframes sa-latido {
	0%, 100% { opacity: 1; transform: scale(1); }
	50%      { opacity: .45; transform: scale(.82); }
}

/* EL H1: lleva la keyword, pesa poco visualmente. Deliberado. */
.sa26 h1.sa26-h1 {
	margin: 0 0 18px;
	font-size: 19px;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -.005em;
	color: var(--sa-tinta-media);
}

/* LA FRASE GANCHO: aquí va la persuasión. Es un <p>, no un encabezado. */
.sa26-hook {
	position: relative;
	margin: 0 0 26px;
	font-size: clamp(30px, 5.2vw, 46px);
	font-weight: 800;
	line-height: 1.14;
	letter-spacing: -.03em;
	text-wrap: balance;
	/* Degradado de tinta a tinta: legibilidad intacta, cuerpo tipográfico con
	   volumen. El brillo lo aporta el barrido, no el color del texto. */
	background: linear-gradient(180deg, var(--sa-tinta) 0%, #2f3440 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
/* Barrido especular: recorre la frase una sola vez al aparecer. Un destello
   que se repitiera sería ruido; uno que ocurre una vez es un acento. */
.sa26-hook::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(105deg, transparent 38%, rgba(255,255,255,.85) 50%, transparent 62%);
	background-size: 220% 100%;
	mix-blend-mode: overlay;
	pointer-events: none;
	animation: sa-barrido 2.1s var(--sa-curva) .5s 1 both;
}
@keyframes sa-barrido {
	from { background-position: 180% 0; }
	to   { background-position: -60% 0; }
}
/* Subrayado que se dibuja solo: cierra la frase y empuja al siguiente bloque. */
.sa26-hook::before {
	content: "";
	position: absolute;
	left: 0; bottom: -10px;
	height: 4px; width: 0;
	border-radius: 4px;
	background: linear-gradient(90deg, var(--sa-marca), var(--sa-marca-suave));
	animation: sa-trazo 1.1s var(--sa-curva) 1.2s 1 both;
}
@keyframes sa-trazo { to { width: 88px; } }

.sa26-resumen {
	margin: 0 0 26px;
	font-size: 19px;
	line-height: 1.68;
	color: var(--sa-tinta-media);
}

/* --------------------------------------------------------------------------
   2. CTA — borde electrificado, según encargo
   -------------------------------------------------------------------------- */

.sa26-cta {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 54px;              /* área táctil holgada: 54 > 44 px exigidos */
	padding: 15px 34px;
	font-size: 17px;
	font-weight: 700;
	line-height: 1;
	color: #fff;
	text-decoration: none;
	background: linear-gradient(135deg, var(--sa-marca) 0%, #a60d1a 100%);
	border-radius: 999px;
	isolation: isolate;
	box-shadow: 0 1px 2px rgba(207,16,32,.2), 0 10px 26px -8px rgba(207,16,32,.5);
	transition: transform .28s var(--sa-curva), box-shadow .28s var(--sa-curva);
}
/* El halo gira alrededor del botón a velocidad variable. La irregularidad es
   intencionada: un movimiento perfectamente regular se vuelve invisible al
   cerebro en segundos; uno que cambia de ritmo mantiene la atención periférica. */
.sa26-cta::before {
	content: "";
	position: absolute;
	inset: -3px;
	z-index: -1;
	border-radius: inherit;
	background: conic-gradient(from 0deg,
		transparent 0deg, transparent 200deg,
		var(--sa-marca-suave) 275deg, #ffd0d6 305deg,
		var(--sa-marca-suave) 335deg, transparent 360deg);
	filter: blur(5px);
	opacity: .95;
	animation: sa-orbita 4.4s linear infinite;
}
@keyframes sa-orbita {
	0%   { transform: rotate(0deg);   animation-timing-function: cubic-bezier(.5,0,.9,.5); }
	45%  { transform: rotate(200deg); animation-timing-function: cubic-bezier(.1,.6,.5,1); }
	100% { transform: rotate(360deg); }
}
.sa26-cta:hover, .sa26-cta:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 2px 4px rgba(207,16,32,.24), 0 16px 34px -8px rgba(207,16,32,.6);
}
.sa26-cta:focus-visible { outline: 3px solid var(--sa-confianza); outline-offset: 3px; }
.sa26-cta:active { transform: translateY(0) scale(.985); }
.sa26-cta__nota {
	display: block;
	margin: 10px 0 0;
	font-size: 14px;
	color: var(--sa-tinta-suave);
}

/* --------------------------------------------------------------------------
   3. PROGRESO DE LECTURA — efecto Zeigarnik
   Una barra que avanza convierte la lectura en una tarea empezada, y una tarea
   empezada pesa más en la cabeza que una sin empezar. Sube la permanencia.
   -------------------------------------------------------------------------- */

.sa26-progreso {
	position: fixed;
	top: 0; left: 0;
	height: 3px; width: 100%;
	transform-origin: 0 50%;
	transform: scaleX(0);
	background: linear-gradient(90deg, var(--sa-marca), var(--sa-marca-suave));
	z-index: 9999;
	animation: sa-progreso linear;
	animation-timeline: scroll(root block);
}
@keyframes sa-progreso { to { transform: scaleX(1); } }

/* --------------------------------------------------------------------------
   4. ÍNDICE — divulgación progresiva
   Enseñar el mapa antes del viaje reduce la incertidumbre y el abandono.
   -------------------------------------------------------------------------- */

.sa26-indice {
	margin: 0 0 40px;
	padding: 20px 22px;
	background: var(--sa-papel-calido);
	border: 1px solid var(--sa-linea);
	border-left: 3px solid var(--sa-marca);
	border-radius: 4px 12px 12px 4px;
}
.sa26-indice__titulo {
	margin: 0 0 12px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--sa-tinta-suave);
}
.sa26-indice ol { margin: 0; padding: 0; list-style: none; counter-reset: sa-i; }
.sa26-indice li { counter-increment: sa-i; margin: 0 0 7px; }
.sa26-indice a {
	display: flex;
	gap: 11px;
	font-size: 16.5px;
	color: var(--sa-tinta-media);
	text-decoration: none;
	transition: color .2s, transform .2s var(--sa-curva);
}
.sa26-indice a::before {
	content: counter(sa-i);
	flex: 0 0 22px;
	font-size: 13px;
	font-weight: 700;
	color: var(--sa-marca);
	font-variant-numeric: tabular-nums;
}
.sa26-indice a:hover { color: var(--sa-tinta); transform: translateX(3px); }

/* --------------------------------------------------------------------------
   5. CUERPO — jerarquía y ritmo de lectura
   -------------------------------------------------------------------------- */

.sa26-cuerpo > * {
	/* Aparición al entrar en pantalla, nativa y sin JavaScript. El contenido
	   que se revela al llegar se percibe como respuesta a tu avance. */
	animation: sa-entra .7s var(--sa-curva) both;
	animation-timeline: view();
	animation-range: entry 0% cover 22%;
}
@keyframes sa-entra {
	from { opacity: 0; transform: translateY(16px); }
	to   { opacity: 1; transform: none; }
}

.sa26-cuerpo h2 {
	margin: 52px 0 18px;
	font-size: clamp(23px, 3vw, 28px);
	font-weight: 750;
	line-height: 1.26;
	letter-spacing: -.02em;
	color: var(--sa-tinta);
	scroll-margin-top: 24px;
}
/* Marca de sección: ancla la mirada en el inicio del bloque (patrón F). */
.sa26-cuerpo h2::before {
	content: "";
	display: block;
	width: 34px; height: 3px;
	margin-bottom: 15px;
	border-radius: 3px;
	background: var(--sa-marca);
	opacity: .85;
}

.sa26-cuerpo h3 {
	margin: 34px 0 12px;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.34;
	color: var(--sa-tinta);
}

.sa26-cuerpo p { margin: 0 0 20px; }
.sa26-cuerpo strong { font-weight: 700; color: var(--sa-tinta); }

.sa26-cuerpo ul, .sa26-cuerpo ol { margin: 0 0 22px; padding-left: 4px; list-style: none; }
.sa26-cuerpo ul li, .sa26-cuerpo ol li { position: relative; margin: 0 0 11px; padding-left: 26px; }
.sa26-cuerpo ul li::before {
	content: "";
	position: absolute; left: 4px; top: 12px;
	width: 7px; height: 7px;
	border-radius: 2px;
	background: var(--sa-marca);
	opacity: .55;
	transform: rotate(45deg);
}
.sa26-cuerpo ol { counter-reset: sa-p; }
.sa26-cuerpo ol li { counter-increment: sa-p; }
.sa26-cuerpo ol li::before {
	content: counter(sa-p);
	position: absolute; left: 0; top: 2px;
	width: 20px; height: 20px;
	display: grid; place-items: center;
	border-radius: 50%;
	background: var(--sa-marca);
	color: #fff;
	font-size: 11.5px; font-weight: 700;
	font-variant-numeric: tabular-nums;
}

/* Dato objetivo destacado: prueba verificable, no venta. Por eso va en el
   color de confianza y nunca en el rojo de acción. */
.sa26-dato {
	margin: 26px 0;
	padding: 18px 20px;
	background: rgba(14,116,144,.05);
	border-left: 3px solid var(--sa-confianza);
	border-radius: 3px 10px 10px 3px;
	font-size: 17px;
	color: var(--sa-tinta-media);
}
.sa26-dato strong { color: var(--sa-confianza); }

/* Aviso honesto: decir lo que puede salir mal genera más confianza que
   prometer. Es la palanca de credibilidad más infravalorada que existe. */
.sa26-aviso {
	margin: 26px 0;
	padding: 18px 20px;
	background: #fffaf0;
	border: 1px solid #f0d9a8;
	border-radius: 10px;
	font-size: 17px;
	color: #6b5424;
}

/* --------------------------------------------------------------------------
   6. CIERRE
   -------------------------------------------------------------------------- */

.sa26-cierre {
	margin-top: 52px;
	padding: 30px 26px;
	text-align: center;
	background: var(--sa-papel-calido);
	border: 1px solid var(--sa-linea);
	border-radius: 16px;
}
.sa26-cierre__frase {
	margin: 0 0 20px;
	font-size: 21px;
	font-weight: 700;
	line-height: 1.4;
	color: var(--sa-tinta);
	text-wrap: balance;
}

/* --------------------------------------------------------------------------
   7. ACCESIBILIDAD Y RESPETO
   Sin esto, todo lo anterior es un problema, no un diseño.
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	.sa26 *,
	.sa26 *::before,
	.sa26 *::after {
		animation: none !important;
		transition-duration: .01ms !important;
	}
	.sa26-hook::before { width: 88px; }   /* el subrayado se muestra ya dibujado */
	.sa26-cuerpo > *   { opacity: 1; transform: none; }
	.sa26-progreso     { display: none; }
}

@media (max-width: 640px) {
	.sa26 { font-size: 17px; padding: 0 16px 48px; }
	.sa26-entrada { padding-top: 28px; }
	.sa26-cta { width: 100%; }
	.sa26-cuerpo h2 { margin-top: 42px; }
}

/* Modo oscuro del sistema: si el visitante lo pide, se le da. */
@media (prefers-color-scheme: dark) {
	.sa26[data-sa-auto="1"] {
		--sa-tinta: #eceef2;
		--sa-tinta-media: #b6bcc7;
		--sa-tinta-suave: #8d95a3;
		--sa-papel: #14161a;
		--sa-papel-calido: #1a1d22;
		--sa-linea: #2a2e36;
		--sa-marca-suave: #ff6b7e;
	}
	.sa26[data-sa-auto="1"] .sa26-hook {
		background: linear-gradient(180deg, #f4f6fa 0%, #c3c9d4 100%);
		-webkit-background-clip: text; background-clip: text;
	}
	.sa26[data-sa-auto="1"] .sa26-aviso { background: #2a2416; border-color: #4d422a; color: #e8d5aa; }
}

@media print {
	.sa26-progreso, .sa26-cta, .sa26-indice { display: none; }
	.sa26 { max-width: none; font-size: 12pt; }
}
