/* ================================================================================ */
/* === DECLARACIÓN DE FUENTES PERSONALIZADAS (@font-face) === */
/* ================================================================================ */
/* Las fuentes @font-face permiten cargar fuentes personalizadas en el sitio web */
/* Usamos Atkinson Hyperlegible Next, una fuente diseñada para mejorar la legibilidad */
/* font-display: swap permite que el navegador muestre texto con una fuente del sistema */
/* mientras se carga la fuente personalizada, mejorando el rendimiento */

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-ExtraBoldItalic.woff2') format('woff2');
  font-weight: 800;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-ExtraLight.woff2') format('woff2');
  font-weight: 200;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-ExtraLightItalic.woff2') format('woff2');
  font-weight: 200;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-Light.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-LightItalic.woff2') format('woff2');
  font-weight: 300;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-MediumItalic.woff2') format('woff2');
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-Bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-BoldItalic.woff2') format('woff2');
  font-weight: 700;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-ExtraBold.woff2') format('woff2');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-RegularItalic.woff2') format('woff2');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-SemiBold.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('../fonts/AtkinsonHyperlegibleNext/AtkinsonHyperlegibleNext-SemiBoldItalic.woff2') format('woff2');
  font-weight: 600;
  font-style: italic;
  font-display: swap;
}

/* ================================================================================ */
/* === VARIABLES CSS (CUSTOM PROPERTIES) === */
/* ================================================================================ */
/* :root es un selector especial que apunta al elemento raíz del documento (html) */
/* Las variables CSS (--nombre-variable) permiten reutilizar valores en todo el CSS */
/* Se acceden usando var(--nombre-variable) */

:root {
  --font-primary: 'Atkinson Hyperlegible Next', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-serif: 'Atkinson Hyperlegible Next', Georgia, 'Times New Roman', serif;
  --font-mono: 'Atkinson Hyperlegible Next', 'Courier New', Courier, monospace;
}

/* ================================================================================ */
/* === APLICACIÓN UNIVERSAL DE TIPOGRAFÍA === */
/* ================================================================================ */
/* Aplicamos la fuente principal a todos los elementos de texto del sitio */
/* Esto asegura consistencia visual en toda la página */

body,
p,
h1,
h2,
h3,
h4,
h5,
h6,
a,
span,
li,
blockquote,
input,
textarea,
select,
button {
  font-family: var(--font-primary);
}

/* ================================================================================ */
/* === FUENTES ESPECIALIZADAS === */
/* ================================================================================ */
/* Elementos que necesitan fuentes serif (con remates, más tradicionales) */

.contenido-playfair,
[data-font="serif"] {
  font-family: var(--font-serif);
}

/* Elementos que necesitan fuentes monoespaciadas (cada letra ocupa el mismo ancho) */
/* Útil para código o texto técnico */

code,
pre,
.code-block,
[data-font="mono"] {
  font-family: var(--font-mono);
}

/* ================================================================================ */
/* === PESOS DE FUENTE PARA ENCABEZADOS === */
/* ================================================================================ */
/* font-weight controla el grosor del texto (100-900) */
/* Valores más altos = texto más grueso/pesado */

h1, .h1 { font-weight: 800; }
h2, .h2 { font-weight: 700; }
h3, .h3 { font-weight: 600; }
h4, .h4 { font-weight: 500; }
h5, .h5 { font-weight: 500; }
h6, .h6 { font-weight: 500; }

strong, b { font-weight: 700; }

/* ================================================================================ */
/* === ESTILOS DECORATIVOS === */
/* ================================================================================ */
/* letter-spacing ajusta el espacio entre letras (tracking) */

.titulo-decorativo,
.accent-text,
[data-font="decorative"] {
  font-family: var(--font-primary);
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* ================================================================================ */
/* === CONFIGURACIÓN GLOBAL DE LEGIBILIDAD === */
/* ================================================================================ */
/* line-height controla el espacio entre líneas de texto (interlineado) */
/* -webkit-font-smoothing mejora cómo se renderizan las fuentes en navegadores WebKit */
/* text-rendering optimiza la legibilidad del texto */

body {
  font-weight: 400;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Textos pequeños necesitan menos peso para verse bien */

small,
.text-small {
  font-weight: 300;
}

/* ================================================================================ */
/* === RESET Y BOX-SIZING === */
/* ================================================================================ */
/* box-sizing: border-box hace que padding y border se incluyan en el ancho total */
/* Esto facilita mucho el cálculo de tamaños */

html {
  box-sizing: border-box;
}

/* El selector * significa "todos los elementos" */
/* ::before y ::after son pseudoelementos que se crean antes y después del contenido */

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

/* ================================================================================ */
/* === ESTILOS BASE DE HTML Y BODY === */
/* ================================================================================ */
/* !important fuerza que este estilo tenga prioridad sobre otros (usar con precaución) */
/* 100vw = 100% del ancho del viewport (ventana del navegador) */
/* 100vh = 100% de la altura del viewport */
/* overflow-x: hidden oculta el scroll horizontal si el contenido se desborda */

html, body {
  font-family: 'Atkinson Hyperlegible Next', system-ui, Arial, sans-serif;
  margin: 0 !important;
  padding: 0 !important;
  width: 100vw;
  min-height: 100vh;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ================================================================================ */
/* === UTILIDADES DE TEXTO === */
/* ================================================================================ */

.centrar-texto {
  text-align: center;
}

/* ================================================================================ */
/* === ESTILOS DE PÁRRAFOS === */
/* ================================================================================ */
/* text-align: start alinea el texto al inicio (izquierda en idiomas LTR) */
/* em es una unidad relativa al tamaño de fuente del elemento */
/* rem es una unidad relativa al tamaño de fuente del elemento raíz (html) */

p {
  text-align: start;
  padding: 0.2em;
  margin: 0.2em;
  font-size: 1.4rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  word-spacing: 0.16em;
  word-break: normal;
}

/* El selector + es el "selector de hermano adyacente" */
/* p + p significa "un párrafo que viene inmediatamente después de otro párrafo" */

p + p { margin-top: 3.4em; }

ul { text-align: start; }

/* ================================================================================ */
/* === ESTILOS DE LISTAS === */
/* ================================================================================ */
/* list-style: none elimina las viñetas o números de la lista */

li {
  margin-bottom: 0.5rem;
  font-size: 1.2rem;
  font-weight: 400;
  font-style: italic;
  letter-spacing: 0.12em;
  word-spacing: 0.16em;
  line-height: 1.7;
  list-style: none;
}

/* ================================================================================ */
/* === ESTILOS DE ENCABEZADOS === */
/* ================================================================================ */

h1 { font-weight: 800; font-size: 4em; margin-top: 2rem; margin-bottom: 1rem; }
h2 { font-weight: 700; padding: 3rem; font-size: 3.5em; }
h3 { font-weight: 600; padding: 0.5rem; font-size: 2.17em; }
h4 { font-weight: 500; padding: 2rem; font-size: 1.9em; }

/* ================================================================================ */
/* === CONTROL DE PALABRAS LARGAS === */
/* ================================================================================ */
/* :where() es un selector de especificidad cero (no aumenta la especificidad) */
/* overflow-wrap: anywhere permite que las palabras se corten en cualquier punto */
/* hyphens: auto añade guiones automáticos cuando se cortan palabras */

:where(p, li, h1, h2, h3, h4) {
  overflow-wrap: anywhere;
  hyphens: auto;
}

/* ================================================================================ */
/* === ESTILOS DEL FOOTER === */
/* ================================================================================ */

footer {
  height: auto;
  margin-top: 0.5rem;
  padding: 2rem 1rem;
}

/* ================================================================================ */
/* === LAYOUT DEL FOOTER === */
/* ================================================================================ */
/* display: flex activa Flexbox, un sistema de diseño flexible */
/* flex-direction: row coloca los elementos en fila (horizontal) */
/* flex-wrap: wrap permite que los elementos se envuelvan en múltiples líneas */
/* justify-content: space-between distribuye el espacio entre los elementos */
/* align-items: center alinea los elementos verticalmente al centro */

.footer-información {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
}

footer p {
  font-size: 1rem;
  font-style: italic;
  font-weight: 400;
  margin: 0;
}

/* ================================================================================ */
/* === ICONOS DE REDES SOCIALES EN EL FOOTER === */
/* ================================================================================ */

.redes-sociales ul {
  padding: 0;
  margin: 0;
}

/* aspect-ratio: 1 fuerza una proporción 1:1 (círculo/cuadrado perfecto) */
/* border-radius: 50% crea un círculo perfecto */
/* flex-shrink: 0 evita que el elemento se encoja en un contenedor flex */

.contenedor-footer .redes-sociales ul li {
  list-style: none;
  width: 2.5rem;
  height: 2.5rem;
  aspect-ratio: 1;
  border-radius: 50%;
  flex-shrink: 0;
  background-color: transparent;
}

.contenedor-footer .redes-sociales a {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 2.5rem;
  height: 2.5rem;
  aspect-ratio: 1;
  border-radius: 50%;
  text-decoration: none;
  flex-shrink: 0;
  box-sizing: border-box;
}

/* ================================================================================ */
/* === BLOQUES EXPANDIBLES === */
/* ================================================================================ */
/* height y width en 0 ocultan completamente el elemento */
/* overflow: hidden esconde cualquier contenido que se desborde */
/* transition crea animaciones suaves al cambiar propiedades */
/* Los valores múltiples en transition controlan diferentes propiedades */

.info {
  height: 0;
  overflow: hidden;
  padding: 1rem;
  width: 0;
  text-align: left;
  font-size: 1rem;
  border-radius: 1rem;
  margin-bottom: 0.5rem;
  transition:
    height 0.7s ease-in-out,
    width 0.7s ease-in-out,
    background-color 0.7s ease-in-out,
    border-radius 0.7s ease-in-out;
}

/* Estado visible del bloque expandible */

.info.elemento-visible {
  height: 39rem;
  width: 18rem;
}

/* ================================================================================ */
/* === UTILIDADES DE TAMAÑO Y COLOR === */
/* ================================================================================ */

.tamaño {
  font-size: 1.5em;
}

.negro {
    color: black;
    text-decoration: none;
  }

.blanco {
    color: rgb(253, 253, 253);
    text-decoration: none;
}

/* ================================================================================ */
/* === AJUSTES CRÍTICOS PARA OVERFLOW === */
/* ================================================================================ */
/* overflow-x: clip es similar a hidden pero con mejor soporte para elementos fixed */
/* position: static es el posicionamiento por defecto (flujo normal del documento) */
/* transform: none asegura que no se cree un nuevo contexto de apilamiento */

body {
  overflow-x: clip;
  position: static;
  transform: none !important;
}

html {
  overflow-x: clip;
  transform: none !important;
}

/* ================================================================================ */
/* === CONTENEDORES PRINCIPALES === */
/* ================================================================================ */
/* position: relative permite usar posicionamiento absoluto dentro del elemento */

main,
.container,
section {
  position: relative;
}

/* ================================================================================ */
/* === CLASES DE UTILIDAD PARA OVERFLOW === */
/* ================================================================================ */

.overflow-hidden-x {
  overflow-x: hidden;
}

.overflow-hidden {
  overflow: hidden;
}

/* ================================================================================ */
/* === CONFIGURACIÓN CRÍTICA DEL BOTÓN FLECHA === */
/* ================================================================================ */
/* position: fixed mantiene el elemento en una posición fija respecto al viewport */
/* z-index controla el orden de apilamiento (números más altos = más al frente) */
/* z-index: 2147483647 es el valor máximo posible en la mayoría de navegadores */
/* isolation: isolate crea un nuevo contexto de apilamiento */

#boton-flecha-inicio,
.boton-flecha-container {
  position: fixed !important;
  z-index: 2147483647 !important;
  isolation: isolate !important;
}

.hero,
.hero-content,
.hero-background,
footer,
header {
}

footer {
}
