/* ==========================================================================
   RUTA 3D — Sistema de diseño
   Dirección: cálido crema + terracota. Superficies marfil y beige, acento
   terracota con ámbar y turquesa de apoyo. Motivo de marca: capas de impresión.
   ========================================================================== */

/* ---------- Tokens ---------- */
:root {
  color-scheme: light;

  /* Color base — MODO CLARO (Neutro cálido: interfaz tranquila) */
  --papel: #FAF7F2;            /* fondo general, crema muy sutil */
  --superficie: #FFFFFF;       /* superficie principal: tarjetas, cajas */
  --superficie-suave: #F3EEE7; /* superficie suave: franjas, formularios */
  --linea: #E8E2DD;            /* borde */
  --texto: #222222;            /* texto principal */
  --texto-suave: #5F5A54;      /* texto secundario */
  --texto-invertido: #222222;  /* texto sobre --panel (en claro, el panel es claro) */
  --texto-claro: #FFFFFF;      /* texto sobre --panel-fuerte y botones naranja */

  /* Título (texto), panel (superficies grandes) y panel-fuerte (franjas de contraste) */
  --titulo: #222222;
  --titulo-suave: #35312C;
  --panel: #FAF7F2;            /* cabecera, hero, nav móvil */
  --panel-fuerte: #222222;     /* cabeceras de tabla, dato clave, calculadoras */
  --sombra: #000000;
  /* Alias heredado: --tinta = color de título (texto), se aclara en oscuro */
  --tinta: var(--titulo);
  --tinta-suave: var(--titulo-suave);

  /* Acentos: paleta EXACTA del mockup (naranja controlado) */
  --acento: #E86A33;           /* naranja CTA */
  --acento-fuerte: #E86A33;    /* color de enlaces (mismo naranja) */
  --acento-hover: #F08A4B;     /* hover naranja (más claro, como el mockup) */
  --ambar: #F5B66F;            /* ámbar suave */
  --turquesa: #1EB8B0;         /* turquesa auxiliar, muy controlado */
  --exito: #1EB8B0;
  --acento-tenue: #FBE9DC;     /* fondo de insignias naranja */

  /* Sombras del mockup */
  --sombra-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
  --sombra-md: 0 8px 24px rgba(0, 0, 0, 0.08);
  --sombra-lg: 0 16px 40px rgba(0, 0, 0, 0.12);

  /* Categorías: SOLO acentos de la paleta, rotando (naranja / turquesa / ámbar) */
  --cat-aprende: #E86A33;
  --cat-impresoras: #1EB8B0;
  --cat-materiales: #F5B66F;
  --cat-diseno: #1EB8B0;
  --cat-negocio: #F5B66F;
  --cat-herramientas: #1EB8B0;
  --cat-resolver: #E86A33;
  --cat-imprimir: #E86A33;
  --cat-proyectos: #F5B66F;
  --cat-laser: #E86A33;
  --cat-paises: #1EB8B0;
  --cat-recursos: #F5B66F;

  /* Tipografía */
  --f-display: "Poppins", system-ui, sans-serif;
  --f-cuerpo: "Inter", system-ui, sans-serif;
  --f-mono: ui-monospace, "Cascadia Mono", "Consolas", monospace;

  --t-base: clamp(1.05rem, 1rem + 0.25vw, 1.15rem);
  --t-sm: 0.88rem;
  --t-xs: 0.78rem;
  --t-h1: clamp(2.1rem, 1.4rem + 3.2vw, 3.6rem);
  --t-hero: clamp(2.6rem, 1.6rem + 4.6vw, 5rem);
  --t-h2: clamp(1.5rem, 1.25rem + 1.1vw, 2.1rem);
  --t-h3: clamp(1.2rem, 1.1rem + 0.5vw, 1.45rem);

  /* Espaciado y forma (radios 8/12/16 del mockup) */
  --esp-seccion: clamp(3.5rem, 2.5rem + 4vw, 7rem);
  --radio-sm: 8px;      /* chips, detalles */
  --radio: 12px;        /* botones, campos */
  --radio-carta: 16px;  /* tarjetas y cajas */
  --ancho: 1280px;
  --ancho-prosa: 46rem;

  --dur: 180ms;
  --curva: ease;
}

/* ---------- MODO OSCURO (Carbón del mockup) ---------- */
:root[data-tema="oscuro"] {
  color-scheme: dark;

  --papel: #15171A;            /* fondo oscuro */
  --superficie: #1F2328;       /* superficie oscura (tarjetas) */
  --superficie-suave: #1A1D21;
  --linea: #30343A;
  --texto: #F2EFEA;            /* blanco cálido */
  --texto-suave: #A6A19A;
  --texto-invertido: #F2EFEA;
  --texto-claro: #FFFFFF;

  --titulo: #FAF7F2;
  --titulo-suave: #E8E2DD;
  --panel: #101215;
  --panel-fuerte: #0C0E10;
  --sombra: #000000;

  --acento: #E86A33;           /* naranja igual que en claro */
  --acento-fuerte: #F08A4B;    /* enlaces algo más luminosos sobre carbón */
  --acento-hover: #F5B66F;
  --ambar: #F5B66F;
  --turquesa: #3ECEC6;
  --exito: #3ECEC6;
  --acento-tenue: #33231A;

  --cat-aprende: #F08A4B;
  --cat-impresoras: #3ECEC6;
  --cat-materiales: #F5B66F;
  --cat-diseno: #3ECEC6;
  --cat-negocio: #F5B66F;
  --cat-herramientas: #3ECEC6;
  --cat-resolver: #F08A4B;
  --cat-imprimir: #F08A4B;
  --cat-proyectos: #F5B66F;
  --cat-laser: #F08A4B;
  --cat-paises: #3ECEC6;
  --cat-recursos: #F5B66F;
}

/* Ajustes puntuales del modo oscuro (evitan tintes claros heredados) */
:root[data-tema="oscuro"] .chip {
  color: oklch(from var(--color-cat) 80% c h);
  background: oklch(from var(--color-cat) 27% 0.05 h);
}
:root[data-tema="oscuro"] .pilar:hover { background: oklch(from var(--color-cat) 26% 0.035 h); }

/* Transición suave al cambiar de tema (solo superficies sin animación propia) */
body, .cabecera, .submenu, .hero, .cta-franja, .pie, .seccion-alterna, .indice,
.calc-cabecera, .calc-form, .campo input, .campo select, .prosa th, .prosa td,
.dato-clave-titulo, .dato-clave-cuerpo, .faq details, .hub-cabecera, .res-grande,
.pilares, .chip {
  transition: background-color var(--dur) var(--curva),
              color var(--dur) var(--curva),
              border-color var(--dur) var(--curva);
}

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

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--f-cuerpo);
  font-size: var(--t-base);
  line-height: 1.65;
  color: var(--texto);
  background: var(--papel);
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--acento-fuerte); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--acento-hover); }

h1, h2, h3, h4 {
  font-family: var(--f-display);
  line-height: 1.12;
  letter-spacing: -0.015em;
  color: var(--tinta);
  text-wrap: balance;
  margin: 0 0 0.6em;
}

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

:focus-visible {
  outline: 2px solid var(--acento);
  outline-offset: 3px;
  border-radius: 2px;
}

::selection { background: oklch(from var(--acento) l c h / 0.3); }

/* ---------- Utilidades ---------- */
.contenedor {
  width: min(100% - 2.5rem, var(--ancho));
  margin-inline: auto;
}

.solo-lectores {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}

/* Motivo de marca: capas de impresión */
.capas {
  background-image: repeating-linear-gradient(
    to bottom,
    transparent 0 7px,
    oklch(from currentColor l c h / 0.08) 7px 8px
  );
}

/* Etiqueta técnica (eyebrow) */
.etiqueta {
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--acento-fuerte);
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  margin-bottom: 1rem;
}
.etiqueta::before {
  content: "";
  width: 1.6rem; height: 2px;
  background: var(--acento);
  box-shadow: 0 4px 0 var(--acento), 0 -4px 0 var(--acento);
}

/* ---------- Cabecera ---------- */
.cabecera {
  background: var(--panel);
  color: var(--texto-invertido);
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid var(--linea);
  box-shadow: 0 1px 12px -8px oklch(from var(--sombra) l c h / 0.35);
}
/* Fila superior: logo + buscador + interruptores */
.cabecera-superior {
  display: flex;
  align-items: center;
  gap: 1.1rem;
  min-height: 60px;
  padding: 0.55rem 0;
}

/* Buscador del header (mockup) */
.buscador {
  flex: 1;
  max-width: 560px;
  margin-inline: auto;
  display: flex;
  align-items: center;
  background: var(--superficie);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  transition: border-color var(--dur) var(--curva), background-color var(--dur) var(--curva);
}
.buscador:focus-within { border-color: var(--acento); }
.buscador input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-family: var(--f-cuerpo);
  font-size: 0.92rem;
  border: none;
  background: none;
  color: var(--texto);
  padding: 0.6rem 0.35rem 0.6rem 0.95rem;
  min-height: 42px;
}
.buscador input::placeholder { color: var(--texto-suave); }
.buscador input:focus { outline: none; }
.buscador button {
  flex: none;
  display: grid;
  place-items: center;
  width: 42px;
  min-height: 42px;
  border: none;
  background: none;
  color: var(--texto-suave);
  cursor: pointer;
  border-radius: 0 var(--radio) var(--radio) 0;
}
.buscador button:hover { color: var(--acento-fuerte); }
.buscador svg { width: 18px; height: 18px; }

/* Fila inferior: navegación */
.cabecera-inferior { border-top: 1px solid var(--linea); }

.logo {
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  text-decoration: none;
  color: var(--texto-invertido);
  font-family: var(--f-display);
  font-weight: 700;
  font-size: 1.25rem;
  letter-spacing: 0.02em;
}
.logo:hover { color: var(--acento-fuerte); }
.logo-marca { display: grid; gap: 3px; }
.logo-marca span {
  height: 4px;
  background: var(--acento);
  border-radius: 1px;
  transition: transform var(--dur) var(--curva);
}
.logo-marca span:nth-child(1) { width: 22px; }
.logo-marca span:nth-child(2) { width: 16px; }
.logo-marca span:nth-child(3) { width: 10px; }
.logo:hover .logo-marca span { transform: translateX(3px); }
.logo:hover .logo-marca span:nth-child(2) { transition-delay: 40ms; }
.logo:hover .logo-marca span:nth-child(3) { transition-delay: 80ms; }
.logo em { font-style: normal; color: var(--acento); }
.logo-tld { font-size: 0.72em; font-weight: 500; color: var(--texto-suave); align-self: flex-end; padding-bottom: 0.18em; }

.nav-principal ul {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  gap: 0.25rem;
}
.nav-principal a {
  display: block;
  padding: 0.9rem 0.55rem;
  white-space: nowrap;
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 0.92rem;
  color: var(--texto-invertido);
  text-decoration: none;
  border-bottom: 3px solid transparent;
  margin-bottom: -3px;
  transition: border-color var(--dur) var(--curva), color var(--dur) var(--curva);
}
.nav-principal a:hover { color: var(--acento-fuerte); border-color: var(--acento); }
.nav-principal a[aria-current="page"],
.nav-principal a.activo { border-color: var(--acento); color: var(--acento-fuerte); }

/* Submenús desplegables (sin flechas: el desplegable aparece al pasar el cursor) */
.nav-principal li { position: relative; }
.nav-principal .submenu {
  list-style: none;
  margin: 0;
  padding: 0.45rem 0;
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 265px;
  background: var(--panel);
  border: 1px solid var(--linea);
  border-top: 3px solid var(--acento);
  border-radius: 0 0 var(--radio) var(--radio);
  box-shadow: 0 18px 32px -12px oklch(from var(--sombra) l c h / 0.55);
  z-index: 60;
}
.nav-principal li:hover > .submenu,
.nav-principal li:focus-within > .submenu { display: block; }
.nav-principal .submenu a {
  padding: 0.6rem 1.15rem;
  border-bottom: none;
  border-left: 3px solid transparent;
  margin-bottom: 0;
  font-weight: 400;
  font-size: 0.92rem;
}
.nav-principal .submenu a:hover { border-left-color: var(--acento); border-bottom: none; }
.sub-toggle { display: none; }

.nav-toggle {
  display: none;
  background: none;
  border: 1px solid oklch(from var(--texto-invertido) l c h / 0.5);
  border-radius: var(--radio);
  color: var(--texto-invertido);
  font-family: var(--f-display);
  font-size: 0.9rem;
  padding: 0.55rem 0.9rem;
  cursor: pointer;
  min-height: 44px;
}

/* Interruptor de tema (sol/luna) */
.cabecera-inner .logo { margin-right: auto; }
.tema-toggle {
  order: 5;
  flex: none;
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  background: none;
  border: 1px solid oklch(from var(--texto-invertido) l c h / 0.5);
  border-radius: var(--radio);
  color: var(--texto-invertido);
  cursor: pointer;
  transition: border-color var(--dur) var(--curva), color var(--dur) var(--curva), transform var(--dur) var(--curva);
}
.tema-toggle:hover { border-color: var(--acento); color: var(--acento); }
.tema-toggle:active { transform: translateY(1px); }
.tema-toggle svg { width: 20px; height: 20px; display: block; }
:root[data-tema="claro"] .tema-toggle .ico-sol { display: none; }
:root[data-tema="oscuro"] .tema-toggle .ico-luna { display: none; }
:root:not([data-tema]) .tema-toggle .ico-sol { display: none; }

/* ---------- Hero (portada) ---------- */
.hero {
  background: var(--panel);
  color: var(--texto-invertido);
  padding: var(--esp-seccion) 0;
  position: relative;
  overflow: hidden;
}
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    to bottom,
    transparent 0 9px,
    oklch(from var(--acento) l c h / 0.10) 9px 10px
  );
  mask-image: linear-gradient(105deg, transparent 42%, black 78%);
  pointer-events: none;
}
.hero-inner { position: relative; z-index: 1; max-width: 52rem; }
.hero h1 {
  font-size: var(--t-hero);
  color: var(--texto-invertido);
  margin-bottom: 0.4em;
}
.hero h1 em { font-style: normal; color: var(--acento); }
.hero p {
  font-size: clamp(1.1rem, 1rem + 0.6vw, 1.35rem);
  color: oklch(from var(--texto-invertido) l c h / 0.85);
  max-width: 42rem;
}
.hero-acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin-top: 2rem;
}

/* ---------- Botones ---------- */
.boton {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--f-display);
  font-weight: 700;
  font-size: 1rem;
  padding: 0.85rem 1.6rem;
  min-height: 44px;
  border-radius: var(--radio);
  text-decoration: none;
  border: 2px solid var(--acento);
  transition: transform var(--dur) var(--curva), background var(--dur) var(--curva), color var(--dur) var(--curva);
}
.boton:active { transform: translateY(1px); }
/* CTA del mockup: naranja #E86A33, hover más claro #F08A4B (ambos temas) */
.boton-primario { background: var(--acento); border-color: var(--acento); color: #FFFFFF; }
.boton-primario:hover { background: #F08A4B; border-color: #F08A4B; color: #FFFFFF; }
.boton-fantasma { background: transparent; color: var(--texto-invertido); border-color: oklch(from var(--texto-invertido) l c h / 0.45); }
.boton-fantasma:hover { border-color: var(--acento); color: var(--acento-hover); }
.boton-tinta { background: transparent; color: var(--tinta); border-color: var(--tinta); }
.boton-tinta:hover { background: var(--panel-fuerte); color: var(--texto-claro); }

/* ---------- Secciones ---------- */
.seccion { padding: var(--esp-seccion) 0; }
.seccion-alterna { background: var(--superficie-suave); border-block: 1px solid var(--linea); }

.seccion-cabecera {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  margin-bottom: 2.5rem;
}
.seccion-cabecera h2 { font-size: var(--t-h2); margin: 0; }
.seccion-cabecera .ver-todo {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 0.95rem;
  white-space: nowrap;
}

/* ---------- Rejilla de tarjetas ---------- */
.rejilla {
  display: grid;
  gap: 1.4rem;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.rejilla-destacada {
  display: grid;
  gap: 1.4rem;
  grid-template-columns: repeat(12, 1fr);
}
.rejilla-destacada > .tarjeta-grande { grid-column: span 7; }
.rejilla-destacada > .tarjeta:not(.tarjeta-grande) { grid-column: span 5; }

.tarjeta {
  --color-cat: var(--acento);
  background: var(--superficie);
  border: 1px solid var(--linea);
  border-radius: var(--radio-carta);
  padding: 1.6rem;
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  position: relative;
  box-shadow: var(--sombra-sm);
  transition: transform var(--dur) var(--curva), box-shadow var(--dur) var(--curva),
              border-color var(--dur) var(--curva), background-color var(--dur) var(--curva);
}
.tarjeta::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(to right, var(--color-cat) 0 14px, transparent 14px 18px);
  border-radius: var(--radio-carta) var(--radio-carta) 0 0;
  opacity: 0.85;
}
.tarjeta:hover {
  transform: translateY(-4px);
  border-color: var(--color-cat);
  box-shadow: var(--sombra-md);
}
.tarjeta h3 { font-size: var(--t-h3); margin: 0; }
.tarjeta h3 a { color: var(--tinta); text-decoration: none; }
.tarjeta h3 a::after { content: ""; position: absolute; inset: 0; }
.tarjeta:hover h3 a { color: var(--acento-fuerte); }
.tarjeta p { margin: 0; font-size: 0.98rem; color: var(--texto-suave); }
.tarjeta-grande h3 { font-size: clamp(1.45rem, 1.2rem + 1vw, 1.9rem); }

.tarjeta-pie {
  margin-top: auto;
  padding-top: 0.8rem;
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  color: var(--texto-suave);
  letter-spacing: 0.06em;
}

/* Chip de categoría */
.chip {
  --color-cat: var(--acento);
  align-self: flex-start;
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  /* El texto toma el TONO de la categoría pero con luminosidad fija legible */
  color: oklch(from var(--color-cat) 42% c h);
  border: 1px solid oklch(from var(--color-cat) 65% c h / 0.5);
  padding: 0.25rem 0.6rem;
  border-radius: var(--radio-sm);
  background: oklch(from var(--color-cat) 94% 0.035 h);
}
.cat-aprende { --color-cat: var(--cat-aprende); }
.cat-impresoras { --color-cat: var(--cat-impresoras); }
.cat-materiales { --color-cat: var(--cat-materiales); }
.cat-diseno { --color-cat: var(--cat-diseno); }
.cat-negocio { --color-cat: var(--cat-negocio); }

/* ---------- Franja de categorías (portada) ---------- */
.pilares { display: grid; gap: 1px; background: var(--linea); border: 1px solid var(--linea); border-radius: var(--radio-carta); overflow: hidden; }
.pilar {
  --color-cat: var(--acento);
  background: var(--superficie);
  padding: 1.5rem 1.6rem;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1.3rem;
  text-decoration: none;
  transition: background var(--dur) var(--curva);
}
.pilar:hover { background: oklch(from var(--color-cat) 96.5% 0.018 h); }
.pilar-num {
  font-family: var(--f-mono);
  font-size: var(--t-sm);
  color: var(--color-cat);
  border: 1px solid oklch(from var(--color-cat) l c h / 0.4);
  width: 2.4rem; height: 2.4rem;
  display: grid; place-items: center;
  border-radius: 8px;
}
.pilar h3 { margin: 0 0 0.15rem; font-size: 1.15rem; color: var(--tinta); }
.pilar p { margin: 0; font-size: 0.95rem; color: var(--texto-suave); }
.pilar-flecha {
  font-family: var(--f-display);
  color: var(--color-cat);
  font-size: 1.3rem;
  transition: transform var(--dur) var(--curva);
}
.pilar:hover .pilar-flecha { transform: translateX(5px); }

/* ---------- Migas de pan ---------- */
.migas { padding: 1.1rem 0 0; }
.migas ol {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.04em;
}
.migas li + li::before { content: "/"; margin-right: 0.5rem; color: var(--texto-suave); }
.migas a { color: var(--texto-suave); text-decoration: none; }
.migas a:hover { color: var(--acento-fuerte); text-decoration: underline; }
.migas [aria-current="page"] { color: var(--texto); }

/* ---------- Artículo ---------- */
.articulo-cabecera { padding: 2.2rem 0 2.6rem; }
.articulo-cabecera h1 { font-size: var(--t-h1); max-width: 52rem; }
.articulo-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1.4rem;
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  color: var(--texto-suave);
  letter-spacing: 0.05em;
  margin-top: 1.1rem;
}
.articulo-entradilla {
  font-size: clamp(1.15rem, 1.05rem + 0.5vw, 1.35rem);
  line-height: 1.55;
  color: var(--texto-suave);
  max-width: var(--ancho-prosa);
  margin-top: 1.2rem;
}

.articulo-layout {
  display: grid;
  grid-template-columns: minmax(0, var(--ancho-prosa)) 280px;
  gap: clamp(2rem, 4vw, 4.5rem);
  align-items: start;
  padding-bottom: var(--esp-seccion);
}

/* Índice del artículo */
.indice {
  position: sticky;
  top: 90px;
  border: 1px solid var(--linea);
  border-radius: var(--radio-carta);
  padding: 1.3rem 1.4rem;
  background: var(--superficie);
  font-family: var(--f-display);
}
.indice h2 {
  font-size: var(--t-sm);
  font-family: var(--f-mono);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--texto-suave);
  margin-bottom: 0.9rem;
}
.indice ol { list-style: none; margin: 0; padding: 0; counter-reset: indice; }
.indice li { counter-increment: indice; margin-bottom: 0.55rem; }
.indice a {
  display: flex;
  gap: 0.6rem;
  font-size: 0.92rem;
  color: var(--texto);
  text-decoration: none;
  line-height: 1.35;
}
.indice a::before {
  content: counter(indice, decimal-leading-zero);
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  color: var(--acento-fuerte);
  padding-top: 0.1em;
}
.indice a:hover { color: var(--acento-fuerte); }

/* Prosa */
.prosa { counter-reset: seccion; min-width: 0; }
.prosa > h2 {
  counter-increment: seccion;
  font-size: var(--t-h2);
  margin-top: 2.2em;
  padding-top: 1.2em;
  border-top: 1px solid var(--linea);
}
.prosa > h2::before {
  content: "[ " counter(seccion, decimal-leading-zero) " ]";
  display: block;
  font-family: var(--f-mono);
  font-size: var(--t-sm);
  font-weight: 400;
  letter-spacing: 0.12em;
  color: var(--acento-fuerte);
  margin-bottom: 0.5rem;
}
.prosa > h3 { font-size: var(--t-h3); margin-top: 1.6em; }
.prosa ul, .prosa ol { padding-left: 1.3rem; margin: 0 0 1.2em; }
.prosa li { margin-bottom: 0.45em; }
.prosa li::marker { color: var(--acento-fuerte); }
.prosa strong { color: var(--tinta); }

.prosa blockquote {
  margin: 1.6em 0;
  padding: 1.1rem 1.4rem;
  background: var(--acento-tenue);
  border-left: 4px solid var(--acento);
  border-radius: var(--radio-carta);
  font-family: var(--f-display);
  font-size: 1.05rem;
  color: var(--tinta);
}
.prosa blockquote p:last-child { margin-bottom: 0; }

/* Caja de dato clave */
.dato-clave {
  margin: 1.6em 0;
  border: 1px solid var(--linea);
  border-radius: var(--radio-carta);
  overflow: hidden;
}
.dato-clave-titulo {
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  background: var(--panel-fuerte);
  color: var(--ambar);
  padding: 0.5rem 1.2rem;
}
.dato-clave-cuerpo { padding: 1rem 1.2rem; background: var(--superficie); }
.dato-clave-cuerpo p:last-child { margin-bottom: 0; }

/* Tablas comparativas */
.tabla-scroll { overflow-x: auto; margin: 1.6em 0; border: 1px solid var(--linea); border-radius: var(--radio-carta); }
.prosa table {
  border-collapse: collapse;
  width: 100%;
  font-size: 0.95rem;
  font-family: var(--f-display);
}
.prosa th {
  background: var(--panel-fuerte);
  color: var(--texto-claro);
  font-weight: 500;
  text-align: left;
  padding: 0.75rem 1rem;
  white-space: nowrap;
}
.prosa td { padding: 0.75rem 1rem; border-top: 1px solid var(--linea); vertical-align: top; }
.prosa tbody tr:nth-child(even) { background: var(--superficie); }

/* FAQ */
.faq { margin-top: 1rem; }
.faq details {
  border: 1px solid var(--linea);
  border-radius: var(--radio-carta);
  margin-bottom: 0.8rem;
  background: var(--superficie);
}
.faq summary {
  cursor: pointer;
  padding: 1rem 1.2rem;
  font-family: var(--f-display);
  font-weight: 500;
  color: var(--tinta);
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  min-height: 44px;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+";
  font-family: var(--f-mono);
  font-size: 1.2rem;
  color: var(--acento-fuerte);
  transition: transform var(--dur) var(--curva);
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details[open] summary { border-bottom: 1px dashed var(--linea); }
.faq .faq-respuesta { padding: 1rem 1.2rem; }
.faq .faq-respuesta p:last-child { margin-bottom: 0; }

/* ---------- Herramientas (calculadoras) ---------- */
.calc {
  border: 1px solid var(--linea);
  border-radius: var(--radio-carta);
  overflow: hidden;
  margin: 1.5rem 0 2.5rem;
  max-width: var(--ancho-prosa);
}
.calc-cabecera {
  background: var(--panel-fuerte);
  color: var(--ambar);
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.55rem 1.3rem;
}
.calc-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 1.1rem;
  padding: 1.4rem 1.3rem;
  background: var(--superficie-suave);
}
.campo { display: grid; gap: 0.35rem; }
.campo label {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 0.88rem;
  color: var(--tinta);
}
.campo input,
.campo select {
  font: inherit;
  font-family: var(--f-display);
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  background: var(--superficie);
  color: var(--texto);
  min-height: 44px;
  width: 100%;
}
.campo input:focus, .campo select:focus { outline: 2px solid var(--acento); outline-offset: 1px; }
.campo small { color: var(--texto-suave); font-size: 0.78rem; font-family: var(--f-display); }
.calc-resultados {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1px;
  background: var(--linea);
  border-top: 1px solid var(--linea);
}
.res-grande {
  background: var(--superficie);
  padding: 1.2rem 1.3rem;
  display: grid;
  gap: 0.2rem;
}
.res-grande strong {
  font-family: var(--f-display);
  font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem);
  color: var(--acento-fuerte);
  line-height: 1.1;
}
.res-grande small {
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--texto-suave);
}
.cat-herramientas { --color-cat: var(--cat-herramientas); }
.cat-resolver { --color-cat: var(--cat-resolver); }
.cat-imprimir { --color-cat: var(--cat-imprimir); }
.cat-proyectos { --color-cat: var(--cat-proyectos); }
.cat-laser { --color-cat: var(--cat-laser); }
.cat-paises { --color-cat: var(--cat-paises); }
.cat-recursos { --color-cat: var(--cat-recursos); }

/* ---------- Relacionados y CTA ---------- */
.relacionados { border-top: 1px solid var(--linea); padding-top: 2.5rem; margin-top: 3rem; }
.relacionados h2 { font-size: var(--t-h2); }

.cta-franja {
  background: var(--superficie-suave);
  color: var(--texto-invertido);
  border-block: 1px solid var(--linea);
  padding: clamp(2.5rem, 2rem + 2.5vw, 4.5rem) 0;
  position: relative;
  overflow: hidden;
}
.cta-franja::before {
  content: "";
  position: absolute; inset: 0;
  background-image: repeating-linear-gradient(
    to bottom,
    transparent 0 9px,
    oklch(from var(--acento) l c h / 0.08) 9px 10px
  );
  mask-image: linear-gradient(285deg, transparent 45%, black 85%);
}
.cta-franja .contenedor { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; }
.cta-franja h2 { color: var(--texto-invertido); font-size: var(--t-h2); margin: 0 0 0.3rem; }
.cta-franja p { margin: 0; color: oklch(from var(--texto-invertido) l c h / 0.8); }

/* ---------- Pie ---------- */
.pie {
  background: var(--superficie-suave);
  color: var(--texto-invertido);
  padding: 3.5rem 0 2rem;
  border-top: 3px solid var(--acento);
  margin-top: auto;
}
.pie-rejilla {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 2.5rem;
  margin-bottom: 2.5rem;
}
.pie h2, .pie h3 {
  color: var(--texto-invertido);
  font-size: var(--t-sm);
  font-family: var(--f-mono);
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-bottom: 1rem;
  opacity: 0.7;
}
.pie ul { list-style: none; margin: 0; padding: 0; }
.pie li { margin-bottom: 0.55rem; }
.pie a {
  color: oklch(from var(--texto-invertido) l c h / 0.85);
  text-decoration: none;
  font-family: var(--f-display);
  font-size: 0.95rem;
}
.pie a:hover { color: var(--acento-hover); text-decoration: underline; }
.pie-descripcion { font-size: 0.98rem; color: oklch(from var(--texto-invertido) l c h / 0.75); max-width: 30ch; }
.pie-legal {
  border-top: 1px solid oklch(from var(--texto-invertido) l c h / 0.15);
  padding-top: 1.5rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  color: oklch(from var(--texto-invertido) l c h / 0.75);
}

/* ---------- Página de hub ---------- */
.hub-cabecera {
  background: var(--superficie-suave);
  border-bottom: 1px solid var(--linea);
  padding: 3rem 0;
}
.hub-cabecera h1 { font-size: var(--t-h1); }
.hub-cabecera p { max-width: 46rem; font-size: 1.1rem; color: var(--texto-suave); margin-bottom: 0; }

/* ---------- Home (mockup Ruta3D) ---------- */

/* Insignia "Bienvenido" */
.insignia {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--f-mono);
  font-size: var(--t-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--acento-fuerte);
  background: var(--acento-tenue);
  border: 1px solid oklch(from var(--acento) l c h / 0.35);
  border-radius: 999px;
  padding: 0.35rem 0.95rem;
  margin-bottom: 1.3rem;
}

/* Hero en dos columnas */
.hero-rejilla {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
}
.hero .hero-rejilla h1 { max-width: 15ch; }

/* Buscador grande del hero */
.buscador-hero {
  display: flex;
  gap: 0.6rem;
  max-width: 34rem;
  margin-top: 1.6rem;
}
.buscador-hero input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-family: var(--f-cuerpo);
  padding: 0.75rem 1.1rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  background: var(--superficie);
  color: var(--texto);
  min-height: 48px;
}
.buscador-hero input::placeholder { color: var(--texto-suave); }
.buscador-hero input:focus { outline: 2px solid var(--acento); outline-offset: 1px; }

/* Estadísticas bajo el hero */
.estadisticas {
  display: flex;
  flex-wrap: wrap;
  gap: 1.1rem 2rem;
  margin-top: 2rem;
}
.estadistica {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.estadistica svg { width: 26px; height: 26px; color: var(--acento); flex: none; }
.estadistica strong {
  display: block;
  font-family: var(--f-display);
  font-size: 1.05rem;
  color: var(--tinta);
  line-height: 1.15;
}
.estadistica small { font-size: 0.8rem; color: var(--texto-suave); }

/* Visual del hero: impresora imprimiendo un jarrón arcoíris */
.hero-visual {
  background: #15171A;
  border-radius: var(--radio-carta);
  box-shadow: var(--sombra-lg);
  padding: clamp(1.2rem, 2.5vw, 2rem);
  display: grid;
  place-items: center;
}
.hero-visual svg { width: 100%; height: auto; max-width: 440px; display: block; }

/* Mosaico de secciones (tiles con icono) */
.mosaico {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.9rem;
}
.celda {
  --color-cat: var(--acento);
  display: flex;
  align-items: center;
  gap: 0.85rem;
  background: var(--superficie);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: 0.9rem 1rem;
  text-decoration: none;
  box-shadow: var(--sombra-sm);
  transition: transform var(--dur) var(--curva), border-color var(--dur) var(--curva), box-shadow var(--dur) var(--curva), background-color var(--dur) var(--curva);
}
.celda:hover { transform: translateY(-3px); border-color: var(--color-cat); box-shadow: var(--sombra-md); }
.celda-icono {
  flex: none;
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border-radius: var(--radio);
  color: oklch(from var(--color-cat) 45% c h);
  background: oklch(from var(--color-cat) 93% 0.04 h);
  border: 1px solid oklch(from var(--color-cat) 70% c h / 0.4);
}
:root[data-tema="oscuro"] .celda-icono {
  color: oklch(from var(--color-cat) 80% c h);
  background: oklch(from var(--color-cat) 27% 0.05 h);
}
.celda-icono svg { width: 22px; height: 22px; }
.celda strong { display: block; font-family: var(--f-display); font-size: 0.95rem; color: var(--tinta); line-height: 1.2; }
.celda small { font-size: 0.78rem; color: var(--texto-suave); font-family: var(--f-cuerpo); }

/* Tarjeta destacada con visual superior */
.tarjeta-visual { padding: 0; overflow: hidden; }
.tarjeta-visual::before { display: none; }
.tv-media {
  height: 130px;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 20% 115%, oklch(from var(--color-cat) 55% c h / 0.55), transparent 55%),
    radial-gradient(circle at 85% -15%, oklch(from var(--color-cat) 70% c h / 0.4), transparent 50%),
    #15171A;
}
.tv-media svg { width: 64px; height: 64px; color: oklch(from var(--color-cat) 78% c h); }
.tv-cuerpo { padding: 1.2rem 1.3rem 1.3rem; display: flex; flex-direction: column; gap: 0.6rem; flex: 1; }

/* Banda de comunidad */
.banda-comunidad {
  background: var(--superficie);
  border: 1px solid var(--linea);
  border-radius: var(--radio-carta);
  box-shadow: var(--sombra-sm);
  padding: clamp(1.6rem, 3vw, 2.4rem);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.4rem;
}
.banda-comunidad h2 { margin: 0 0 0.35rem; font-size: var(--t-h2); }
.banda-comunidad p { margin: 0; color: var(--texto-suave); max-width: 46ch; }
.banda-acciones { display: flex; flex-wrap: wrap; gap: 0.8rem; }

/* Beneficios */
.beneficios {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 1.6rem 2rem;
  margin-top: 2.2rem;
}
.beneficio { display: flex; gap: 0.9rem; align-items: flex-start; }
.beneficio-icono {
  flex: none;
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  color: var(--acento-fuerte);
  background: var(--acento-tenue);
  border: 1px solid oklch(from var(--acento) l c h / 0.3);
}
.beneficio-icono svg { width: 20px; height: 20px; }
.beneficio strong { display: block; font-family: var(--f-display); font-size: 0.98rem; color: var(--tinta); margin-bottom: 0.15rem; }
.beneficio p { margin: 0; font-size: 0.88rem; color: var(--texto-suave); }

@media (max-width: 900px) {
  .hero-rejilla { grid-template-columns: 1fr; }
  .hero-visual { order: -1; max-width: 30rem; }
}

/* ---------- Responsive ---------- */
@media (min-width: 1281px) and (max-width: 1560px) {
  .nav-principal a { padding: 0.9rem 0.42rem; font-size: 0.84rem; }
  .nav-principal .submenu a { padding: 0.6rem 1rem; }
}

@media (max-width: 900px) {
  .rejilla-destacada > .tarjeta-grande,
  .rejilla-destacada > .tarjeta:not(.tarjeta-grande) { grid-column: span 12; }
  .articulo-layout { grid-template-columns: 1fr; }
  .indice { position: static; order: -1; }
  .pie-rejilla { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 1280px) {
  .nav-toggle { display: inline-flex; align-items: center; }
  .cabecera-inferior { border-top: none; }
  .buscador { max-width: none; }
  .nav-principal {
    display: none;
    position: absolute;
    top: 100%; left: 0; right: 0;
    background: var(--panel);
    border-bottom: 3px solid var(--acento);
    box-shadow: 0 18px 30px -12px oklch(from var(--sombra) l c h / 0.6);
  }
  .nav-principal.abierto { display: block; }
  .nav-principal ul { flex-direction: column; gap: 0; padding: 0.5rem 0 1rem; }
  .nav-principal a {
    padding: 0.85rem 1.5rem;
    border-bottom: none;
    border-left: 3px solid transparent;
    margin-bottom: 0;
    font-size: 1rem;
  }
  .nav-principal a:hover,
  .nav-principal a[aria-current="page"],
  .nav-principal a.activo { border-color: var(--acento); }
  /* En móvil los submenús se muestran siempre, como lista agrupada */
  .con-submenu > a::after { content: ""; }
  .nav-principal .submenu {
    display: block;
    position: static;
    min-width: 0;
    border-top: none;
    box-shadow: none;
    padding: 0 0 0.4rem;
  }
  .nav-principal .submenu a {
    padding: 0.5rem 1.5rem 0.5rem 2.7rem;
    font-size: 0.9rem;
    color: oklch(from var(--texto-invertido) l c h / 0.75);
  }
  .nav-principal .submenu a:hover { color: var(--texto-invertido); }
  /* Acordeón (solo cuando hay JS): el enlace navega, el botón «+» despliega */
  .nav-principal li.con-submenu { display: flex; flex-wrap: wrap; align-items: center; }
  .nav-principal li.con-submenu > a { flex: 1; }
  .sub-toggle {
    display: grid;
    place-items: center;
    width: 48px;
    min-height: 44px;
    background: none;
    border: none;
    color: var(--acento);
    font-family: var(--f-mono);
    font-size: 1.35rem;
    cursor: pointer;
    transition: transform var(--dur) var(--curva);
  }
  .sub-toggle[aria-expanded="true"] { transform: rotate(45deg); }
  .nav-principal.con-js .submenu { display: none; width: 100%; }
  .nav-principal.con-js li.abierto > .submenu { display: block; }
  .seccion-cabecera { flex-direction: column; align-items: flex-start; gap: 0.5rem; }
  .pilar { grid-template-columns: auto 1fr; }
  .pilar-flecha { display: none; }
}

@media (max-width: 480px) {
  .pie-rejilla { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
