/* NODO · base: reset, tipografía, enlaces, foco, utilidades y movimiento reducido. */

*, *::before, *::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: calc(var(--header-h) + 16px);
}

@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}

body {
	margin: 0;
	background: var(--bg-page);
	color: var(--text-body);
	font-family: var(--font-body);
	font-size: var(--fs-body);
	line-height: var(--lh-body);
	-webkit-font-smoothing: antialiased;
	-webkit-tap-highlight-color: transparent;
	overflow-x: clip;
}

h1, h2, h3, h4 {
	margin: 0;
	font-family: var(--font-display);
	color: var(--text-strong);
	text-wrap: balance;
}
h1 { font-size: var(--text-h1); line-height: var(--lh-heading); letter-spacing: var(--ls-heading); font-weight: var(--fw-black); }
h2 { font-size: var(--text-h2); line-height: var(--lh-heading); letter-spacing: var(--ls-heading); font-weight: var(--fw-black); }
h3 { font-size: var(--text-h3); line-height: var(--lh-snug); letter-spacing: -0.01em; font-weight: var(--fw-bold); }
h4 { font-size: var(--text-h4); line-height: var(--lh-snug); font-weight: var(--fw-bold); }

p { margin: 0; text-wrap: pretty; }

img, svg, picture { display: block; max-width: 100%; height: auto; }
.nd-icon { display: inline-block; flex: none; height: auto; }

a {
	color: var(--text-link);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1.5px;
	border-radius: 4px;
}
a:hover { color: var(--text-link-hover); }

::selection { background: var(--rosa-200); color: var(--nodo-tinta); }

/* Foco visible en todo elemento interactivo: anillo doble blanco + rosa. */
:focus-visible { outline: none; box-shadow: var(--focus-ring); }
/* Respaldo para modo de alto contraste de Windows (box-shadow no se ve ahí). */
@media (forced-colors: active) {
	:focus-visible { outline: 3px solid CanvasText; outline-offset: 2px; }
}

button, input, select, textarea { font: inherit; color: inherit; }

/* Solo para lectores de pantalla */
.screen-reader-text,
.nodo-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Enlace para saltar al contenido: visible al recibir foco. */
.nodo-saltar {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 100;
	padding: 12px 18px;
	border-radius: var(--radius-pill);
	background: var(--nodo-tinta);
	color: var(--neutral-0);
	font-weight: var(--fw-semibold);
	text-decoration: none;
	transform: translateY(-200%);
}
.nodo-saltar:focus { transform: none; color: var(--neutral-0); }

/* Contenedor de página */
.contenedor {
	width: min(var(--container-max), calc(100% - 2 * var(--page-margin)));
	margin-inline: auto;
}
.contenedor--texto { width: min(760px, calc(100% - 2 * var(--page-margin))); }

/* Movimiento reducido: sin animaciones ni transiciones perceptibles. */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}
