/*
 * Estilos base del sitio, portados de css/global.css de la web estática.
 *
 * Lo que estaba escrito contra elementos —el color y la tipografía del body,
 * los tamaños y el peso de los encabezados— no está aquí: se ha movido a
 * theme/tokens.json.
 *
 * El motivo no es la especificidad. Las reglas de elemento que genera
 * WordPress salen como «body» y «h1, h2, h3…», sin envolver, así que una hoja
 * del plugin cargada después también ganaría. El motivo es que así hay una
 * sola fuente: el mismo valor pinta la web, alimenta los selectores del editor
 * y sustituye al del tema en el origen, sin depender del orden de carga ni
 * dejar dos sitios donde tocar el mismo color.
 *
 * Donde sí hay que contar con la especificidad es en los estilos de bloque:
 * esos WordPress los publica como «:root :where(...)», que puntúa (0,1,0), y
 * es contra ellos contra los que tendrán que competir los bloques de la fase 2.
 *
 * Aquí queda lo que va por clase, más las pocas propiedades que theme.json no
 * sabe expresar: text-wrap, ::selection, :focus-visible y el suavizado.
 */

html {
	background: var(--paper);
	scroll-behavior: smooth;
}

body {
	background-image: radial-gradient(circle at 85% 5%, rgba(0, 188, 252, 0.1), transparent 28rem);
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
}

body.menu-open {
	overflow: hidden;
}

::selection {
	color: var(--surface);
	background: var(--blue);
}

h1,
h2,
h3,
h4 {
	text-wrap: balance;
}

p,
li {
	text-wrap: pretty;
}

a {
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.18em;
}

a:hover {
	text-decoration-thickness: 0.12em;
}

button,
a {
	-webkit-tap-highlight-color: transparent;
}

:focus-visible {
	outline: 3px solid var(--blue);
	outline-offset: 4px;
}

/*
 * Lo que en la web estática era .site-shell.
 *
 * Hace falta: el halo del hero es un pseudoelemento de 560 px colocado con
 * «left: 56%», así que a 320 px de ancho se sale trescientos píxeles y la
 * página entera se desplaza en horizontal. En la estática lo recortaba el
 * envoltorio; aquí el envoltorio lo pone WordPress y se llama .wp-site-blocks.
 *
 * Se recorta solo en horizontal, y con «clip» y no con «hidden»: hidden crearía
 * un contenedor de desplazamiento y la cabecera pegajosa dejaría de pegarse.
 */
.wp-site-blocks {
	overflow-x: clip;
}

.container {
	width: min(100% - (var(--gutter) * 2), var(--content-max));
	margin-inline: auto;
}

.reading-width {
	max-width: var(--reading-max);
}

.section {
	position: relative;
	padding-block: var(--section-space);
}

.section--surface {
	background: rgba(255, 255, 255, 0.72);
	border-block: 1px solid rgba(228, 231, 236, 0.8);
}

.section--sky {
	background: var(--sky);
}

.section--ink {
	color: var(--surface);
	background: var(--ink);
}

.section--ink :is(h1, h2, h3, h4) {
	color: var(--surface);
}

.section-heading {
	display: grid;
	gap: 1.2rem;
	max-width: 48rem;
	margin-bottom: clamp(2.2rem, 4vw, 3.75rem);
}

.section-heading--split {
	grid-template-columns: minmax(0, 1.25fr) minmax(16rem, 0.75fr);
	align-items: end;
	max-width: none;
}

.section-heading--split > p {
	max-width: 34rem;
	color: var(--muted);
}

.section-kicker,
.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.65rem;
	width: fit-content;
	color: var(--blue-dark);
	font-size: var(--step--1);
	font-weight: 750;
	line-height: 1.25;
	letter-spacing: 0.11em;
	text-transform: uppercase;
}

.section-kicker::before,
.eyebrow::before {
	width: 0.55rem;
	height: 0.55rem;
	background: currentColor;
	border-radius: 50%;
	content: "";
}

.section--ink .section-kicker,
.section--ink .eyebrow {
	color: var(--lime);
}

.section--ink :is(.lead, .muted) {
	color: inherit;
}

.editorial {
	font-family: var(--font-editorial);
	font-weight: 400;
	font-style: italic;
}

.lead {
	color: var(--ink-soft);
	font-size: var(--step-1);
	line-height: 1.5;
}

.muted {
	color: var(--muted);
}

.accent-underline {
	position: relative;
	z-index: 0;
	white-space: nowrap;
}

.accent-underline::after {
	position: absolute;
	right: -0.04em;
	bottom: 0.03em;
	left: -0.04em;
	z-index: -1;
	height: 0.12em;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--blue), var(--cyan));
	transform: none;
	content: "";
}

/*
 * El enlace de salto lo pinta el núcleo, no una plantilla nuestra, y llega con
 * su propia hoja de estilo. Dos cosas que hay que respetar de ella:
 *
 * - El selector tiene que ser el suyo exacto. «.skip-link» a secas perdería
 *   contra su «position: absolute !important».
 * - Y hace falta el «body» de delante. Con el mismo selector puntuaríamos
 *   igual, y su hoja se imprime después de la nuestra, así que el gris por
 *   omisión ganaría por orden.
 */
body .skip-link.screen-reader-text:focus {
	padding: 0.75rem 1rem;
	color: white;
	background-color: var(--blue);
	border-radius: var(--radius-sm);
	font-size: var(--step--1);
	font-weight: 700;
}

.sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

.section-actions {
	margin-top: 2rem;
}

.cluster-top {
	margin-top: 1.2rem;
}

.breadcrumbs {
	padding-top: 1.4rem;
	font-size: var(--step--1);
}

.breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}

.breadcrumbs li:not(:last-child)::after {
	margin-left: 0.4rem;
	color: var(--muted);
	content: "/";
}

.breadcrumbs [aria-current="page"] {
	color: var(--muted);
}

.page-hero {
	padding-block: clamp(3rem, 7vw, 6.5rem) clamp(4rem, 8vw, 7rem);
}

.page-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(17rem, 0.75fr);
	gap: clamp(2rem, 7vw, 6rem);
	align-items: end;
}

.page-hero__copy {
	display: grid;
	gap: 1.6rem;
}

.page-hero__aside {
	padding: 1.5rem;
	background: var(--surface);
	border: 1px solid var(--line);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-sm);
}

.page-hero__aside p + p {
	margin-top: 1rem;
}

.prose {
	max-width: 47rem;
}

.prose > * + * {
	margin-top: 1.25rem;
}

.prose h2,
.prose h3 {
	margin-top: 2.7rem;
}

.prose ul,
.prose ol {
	padding-left: 1.35rem;
}

.prose a:not(.button) {
	color: var(--blue-dark);
}

.reveal {
	opacity: 0;
	transform: translateY(0.75rem);
	transition: opacity 520ms ease, transform 520ms ease;
}

.reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.js [data-reveal-delay="1"] { transition-delay: 80ms; }
.js [data-reveal-delay="2"] { transition-delay: 160ms; }
.js [data-reveal-delay="3"] { transition-delay: 240ms; }

.no-js .reveal {
	opacity: 1;
	transform: none;
}

/*
 * En el editor no corre el script que añade «is-visible», así que sin esto las
 * secciones se editarían a ciegas, invisibles sobre el lienzo.
 */
.block-editor-block-list__layout .reveal {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.reveal {
		opacity: 1;
		transform: none;
	}
}

@media (max-width: 52rem) {
	.section-heading--split,
	.page-hero__grid {
		grid-template-columns: 1fr;
		align-items: start;
	}

	.page-hero__aside {
		max-width: 34rem;
	}
}

@media (max-width: 35rem) {
	.accent-underline {
		display: inline-block;
		white-space: nowrap;
	}
}
