/*!
 * LCS · Design System / UI Kit (módulo M2) — Leaching Copper Sea
 * Cargar DESPUÉS de bootstrap.min.css y bootstrap-icons.css.
 * Convención: BEM con prefijo lcs-  (bloque__elemento--modificador). Estados: .is-open, .is-scrolled, .is-visible, .is-loading
 * Catálogo y HTML de ejemplo: docs/UI_KIT.md · Muestra: ui-kit.html
 * Fuentes: servidas desde el propio sitio (assets/fonts/, sección 0). Sin Google Fonts:
 * el visitante no envía su IP a terceros. Manrope (títulos) + Inter (texto); licencias OFL en assets/fonts/OFL-*.txt.
 */

/* ==========================================================================
   0. Fuentes locales (@font-face) — brief LCS (octubre 2026)
   Manrope (títulos) e Inter (texto), woff2 de Google Fonts (Manrope v20, Inter v20),
   solo subconjuntos latin y latin-ext. Ambas variables en peso: Manrope 500–800,
   Inter recta 400–700; Inter itálica 400. Sin eje de ancho: font-stretch no aplica.
   Licencias: assets/fonts/OFL-Manrope.txt y OFL-Inter.txt.
   Rutas relativas a este CSS: funcionan igual en / y en /en/.
   Si se reemplaza un .woff2, cambiar su nombre (se cachea 1 año, immutable).
   ========================================================================== */
/* Manrope · latin */
@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url("../fonts/manrope-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Manrope · latin-ext */
@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url("../fonts/manrope-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Inter recta (variable 100–900: la referencia usa pesos 800–1000) · latin */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/inter-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Inter recta (variable 100–900) · latin-ext */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/inter-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Inter itálica 400 · latin */
@font-face {
  font-family: "Inter";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/inter-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Inter itálica 400 · latin-ext */
@font-face {
  font-family: "Inter";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/inter-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Fuentes anteriores (Archivo + IBM Plex Sans): ya no las usa ningún token; se conservan
   declaradas y en disco por compatibilidad (el navegador no las descarga si nadie las pide). */
/* Archivo · latin */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 500 800;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url("../fonts/archivo-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Archivo · latin-ext */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 500 800;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url("../fonts/archivo-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans recta 400–600 · latin */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/ibm-plex-sans-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans recta 400–600 · latin-ext */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/ibm-plex-sans-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans itálica 400 · latin */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: italic;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/ibm-plex-sans-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans itálica 400 · latin-ext */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: italic;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/ibm-plex-sans-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ==========================================================================
   1. Tokens
   ========================================================================== */
:root {
  /* Paleta oficial LCS (distribución de referencia 40/20/15/15/10) */
  --lcs-azul-corporativo: #0D6B57;        /* principal · confianza */
  --lcs-azul-corporativo-hover: #09523F;  /* hover/pressed de primario */
  --lcs-azul-tecnologico: #1F5FA8;        /* secundario · innovación */
  --lcs-gris-hielo: #EEF5F3;              /* fondos · limpieza */
  --lcs-azul-energetico: #2FB36B;         /* acentos e interacción (NO para texto sobre blanco) */
  --lcs-azul-energetico-hover: #5BC98A;
  --lcs-azul-energetico-texto: #16794A;   /* variante AA para texto sobre blanco/hielo */
  --lcs-verde-sustentable: #7DDC9F;       /* ecología · eficiencia (NO para texto sobre blanco) */
  --lcs-verde-texto: #187A4F;             /* variante AA para texto sobre blanco/hielo */
  --lcs-verde-suave: #E4F6EC;             /* fondo tintado verde */
  --lcs-azul-noche: #0A2540;              /* profundidad · header, footer, oscuras, overlay */
  --lcs-azul-noche-2: #14336B;            /* superficie elevada sobre noche */
  --lcs-gris-industrial: #4E6470;         /* texto secundario · bordes de control */
  --lcs-grafito: #10233A;                 /* texto principal */
  --lcs-blanco: #FFFFFF;
  --lcs-gris-claro-oscuro: #B9C8DB;       /* texto secundario sobre noche */
  --lcs-error: #B42318;
  --lcs-error-fondo: #FEF3F2;
  --lcs-error-claro: #FCA5A5;             /* error sobre noche */
  --lcs-exito: #187A4F;
  --lcs-exito-fondo: #ECFAF3;

  --lcs-gradiente: linear-gradient(135deg, #0D6B57 0%, #1F5FA8 45%, #7DDC9F 100%);
  --lcs-gradiente-linea: linear-gradient(90deg, #0D6B57 0%, #2FB36B 55%, #7DDC9F 100%);

  /* Alias exigidos por el contrato C3 (apuntan a la paleta oficial) */
  --lcs-azul: var(--lcs-azul-corporativo);
  --lcs-azul-claro: var(--lcs-azul-energetico);
  --lcs-verde: var(--lcs-verde-sustentable);
  --lcs-tinta: var(--lcs-azul-noche);
  --lcs-texto: var(--lcs-grafito);
  --lcs-texto-suave: var(--lcs-gris-industrial);
  --lcs-gris-fondo: var(--lcs-gris-hielo);
  --lcs-borde: #D3E2DD;                   /* divisores decorativos */
  --lcs-borde-control: var(--lcs-gris-industrial); /* bordes de inputs (5.57:1, cumple 3:1 no-texto) */

  /* Forma y profundidad */
  --lcs-radio-sm: 4px;
  --lcs-radio: 8px;
  --lcs-radio-lg: 14px;
  --lcs-radio-pill: 999px;
  --lcs-btn-radio: var(--lcs-radio-pill); /* brief §01: botones redondeados (píldora) */
  --lcs-sombra-sm: 0 1px 2px rgba(10, 37, 64, .06), 0 1px 3px rgba(10, 37, 64, .08);
  --lcs-sombra: 0 4px 12px -2px rgba(10, 37, 64, .10), 0 2px 4px -2px rgba(10, 37, 64, .06);
  --lcs-sombra-lg: 0 18px 40px -12px rgba(10, 37, 64, .28);

  /* Espaciado (base 4 px) */
  --lcs-esp-1: .25rem;   /*  4 */
  --lcs-esp-2: .5rem;    /*  8 */
  --lcs-esp-3: .75rem;   /* 12 */
  --lcs-esp-4: 1rem;     /* 16 */
  --lcs-esp-5: 1.5rem;   /* 24 */
  --lcs-esp-6: 2rem;     /* 32 */
  --lcs-esp-7: 3rem;     /* 48 */
  --lcs-esp-8: 4.5rem;   /* 72 */
  --lcs-esp-seccion: clamp(3.5rem, 2.2rem + 5vw, 6.5rem);

  /* Tipografía */
  --lcs-fuente-titulos: "Manrope", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --lcs-fuente-texto: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --lcs-fs-xs: .8125rem;  /* 13 */
  --lcs-fs-sm: .9375rem;  /* 15 */
  --lcs-fs-base: 1.0625rem; /* 17 */
  --lcs-fs-lead: clamp(1.125rem, 1.05rem + .4vw, 1.3125rem);
  --lcs-fs-h4: 1.125rem;
  --lcs-fs-h3: clamp(1.25rem, 1.15rem + .45vw, 1.5rem);
  --lcs-fs-h2: clamp(1.75rem, 1.35rem + 1.8vw, 2.75rem);
  --lcs-fs-h1: clamp(2.125rem, 1.5rem + 3vw, 4rem);
  --lcs-lh-titulo: 1.12;
  --lcs-lh-texto: 1.65;

  /* Movimiento */
  --lcs-dur: .2s;
  --lcs-dur-lenta: .6s;
  --lcs-ease: cubic-bezier(.2, .7, .2, 1);

  /* Layout */
  --lcs-header-alto: 4.5rem;
  --lcs-z-header: 1030;
  --lcs-z-cookies: 1060;
}
@media (min-width: 1200px) {
  :root { --lcs-header-alto: 5.25rem; }
}

/* --------------------------------------------------------------------------
   Contexto de color (claro / oscuro). Los componentes leen --lcs-c-*,
   así funcionan igual dentro de .lcs-section--oscura, hero, footer, etc.
   -------------------------------------------------------------------------- */
.lcs-body,
.lcs-ctx-claro,
.lcs-section {
  --lcs-c-fondo: var(--lcs-blanco);
  --lcs-c-superficie: var(--lcs-blanco);
  --lcs-c-texto: var(--lcs-grafito);
  --lcs-c-titulo: var(--lcs-azul-noche);
  --lcs-c-suave: var(--lcs-gris-industrial);
  --lcs-c-enlace: var(--lcs-azul-corporativo);
  --lcs-c-enlace-hover: var(--lcs-azul-corporativo-hover);
  --lcs-c-acento-texto: var(--lcs-azul-energetico-texto);
  --lcs-c-check: var(--lcs-verde-texto);
  --lcs-c-borde: var(--lcs-borde);
  --lcs-c-foco: var(--lcs-azul-energetico-texto);
  --lcs-c-error: var(--lcs-error);
}
.lcs-section--alt { --lcs-c-fondo: var(--lcs-gris-hielo); }

.lcs-ctx-oscuro,
.lcs-section--oscura,
.lcs-header,
.lcs-hero,
.lcs-footer,
.lcs-cta-banner,
.lcs-card--aplicacion,
.lcs-aviso-cookies {
  --lcs-c-fondo: var(--lcs-azul-noche);
  --lcs-c-superficie: var(--lcs-azul-noche-2);
  --lcs-c-texto: var(--lcs-gris-hielo);
  --lcs-c-titulo: var(--lcs-blanco);
  --lcs-c-suave: var(--lcs-gris-claro-oscuro);
  --lcs-c-enlace: var(--lcs-verde-sustentable);
  --lcs-c-enlace-hover: var(--lcs-blanco);
  --lcs-c-acento-texto: var(--lcs-verde-sustentable);
  --lcs-c-check: var(--lcs-verde-sustentable);
  --lcs-c-borde: rgba(255, 255, 255, .18);
  --lcs-c-foco: var(--lcs-verde-sustentable);
  --lcs-c-error: var(--lcs-error-claro);
}

/* ==========================================================================
   2. Base (solo bajo <body class="lcs-body"> para no afectar la plantilla antigua)
   ========================================================================== */
.lcs-body {
  margin: 0;
  background: var(--lcs-blanco);
  color: var(--lcs-c-texto);
  font-family: var(--lcs-fuente-texto);
  font-size: var(--lcs-fs-base);
  line-height: var(--lcs-lh-texto);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
/* :where() deja la especificidad en 0,0,1 para que las clases de lcs-ref.css (.section-title, .hero h1…) ganen. */
:where(.lcs-body) :is(h1, h2, h3, h4, h5, h6) {
  font-family: var(--lcs-fuente-titulos);
  color: var(--lcs-c-titulo);
  line-height: var(--lcs-lh-titulo);
  font-weight: 700;
  letter-spacing: -.01em;
  text-wrap: balance;
}
:where(.lcs-body) p { text-wrap: pretty; }
:where(.lcs-body) a { color: var(--lcs-c-enlace); text-underline-offset: .18em; text-decoration-thickness: 1px; }
:where(.lcs-body a:hover) { color: var(--lcs-c-enlace-hover); }
:where(.lcs-body) :is(img, video) { max-width: 100%; height: auto; }
.lcs-body :focus-visible {
  outline: 3px solid var(--lcs-c-foco);
  outline-offset: 2px;
}
.lcs-body.lcs-bloqueo-scroll { overflow: hidden; }
/* Con el menú móvil abierto, el panel y su fondo quedan sobre el aviso de cookies (que está fuera del foco atrapado). */
.lcs-body.lcs-bloqueo-scroll .lcs-header { z-index: calc(var(--lcs-z-cookies) + 1); }
.lcs-body main[id] { scroll-margin-top: var(--lcs-header-alto); }

/* Enlace "saltar al contenido" */
.lcs-saltar {
  position: absolute;
  left: var(--lcs-esp-4);
  top: -100px;
  z-index: calc(var(--lcs-z-header) + 10);
  padding: var(--lcs-esp-3) var(--lcs-esp-4);
  background: var(--lcs-blanco);
  color: var(--lcs-azul-corporativo);
  font-weight: 600;
  border-radius: var(--lcs-radio);
  box-shadow: var(--lcs-sombra-lg);
}
.lcs-body .lcs-saltar { color: var(--lcs-azul-corporativo); }
.lcs-saltar:focus { top: var(--lcs-esp-3); }

.lcs-lead { font-size: var(--lcs-fs-lead); line-height: 1.55; color: var(--lcs-c-texto); }
.lcs-texto-suave { color: var(--lcs-c-suave); }

/* ==========================================================================
   3. Grid
   ========================================================================== */
.lcs-grid {
  --lcs-grid-min: 17.5rem;
  display: grid;
  gap: var(--lcs-esp-5);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--lcs-grid-min)), 1fr));
}
.lcs-grid--2, .lcs-grid--3, .lcs-grid--4 { grid-template-columns: 1fr; }
@media (min-width: 768px) {
  .lcs-grid { gap: var(--lcs-esp-6) var(--lcs-esp-5); }
  .lcs-grid--2, .lcs-grid--3, .lcs-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 992px) {
  .lcs-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lcs-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ==========================================================================
   4. Section, eyebrow, título de sección
   ========================================================================== */
.lcs-section {
  position: relative;
  padding-block: var(--lcs-esp-seccion);
  background: var(--lcs-c-fondo);
  color: var(--lcs-c-texto);
}
.lcs-section--oscura { background: var(--lcs-azul-noche); }
.lcs-section--compacta { padding-block: calc(var(--lcs-esp-seccion) * .6); }

.lcs-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--lcs-esp-3);
  margin: 0 0 var(--lcs-esp-4);
  font-family: var(--lcs-fuente-titulos);
  font-size: var(--lcs-fs-xs);
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--lcs-c-acento-texto);
}
.lcs-eyebrow::before {
  content: "";
  flex: none;
  width: 1.75rem;
  height: 3px;
  border-radius: 2px;
  background: var(--lcs-gradiente-linea);
}

.lcs-titulo-seccion {
  max-width: 46rem;
  margin-bottom: clamp(var(--lcs-esp-6), 4vw, var(--lcs-esp-7));
}
.lcs-titulo-seccion__titulo {
  margin: 0;
  font-size: var(--lcs-fs-h2);
}
.lcs-titulo-seccion__intro {
  margin: var(--lcs-esp-4) 0 0;
  font-size: var(--lcs-fs-lead);
  line-height: 1.55;
  color: var(--lcs-c-suave);
}
.lcs-titulo-seccion--centrado { margin-inline: auto; text-align: center; }
.lcs-titulo-seccion--centrado .lcs-eyebrow { justify-content: center; }

/* ==========================================================================
   5. Botones
   ========================================================================== */
.lcs-btn {
  --_bg: transparent;
  --_fg: var(--lcs-c-enlace);
  --_bd: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--lcs-esp-2);
  min-height: 2.875rem;
  padding: .625rem 1.375rem;
  border: 2px solid var(--_bd);
  border-radius: var(--lcs-btn-radio);
  background: var(--_bg);
  color: var(--_fg);
  font-family: var(--lcs-fuente-texto);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  white-space: normal;
  cursor: pointer;
  user-select: none;
  transition: background-color var(--lcs-dur) ease, border-color var(--lcs-dur) ease, color var(--lcs-dur) ease, box-shadow var(--lcs-dur) ease, transform var(--lcs-dur) ease;
}
.lcs-body .lcs-btn,
.lcs-body .lcs-btn:hover { color: var(--_fg); text-decoration: none; }
.lcs-btn:focus-visible { outline: 3px solid var(--lcs-c-foco); outline-offset: 3px; }
.lcs-btn:active { transform: translateY(1px); }
.lcs-btn .bi { font-size: 1.05em; line-height: 1; transition: transform var(--lcs-dur) var(--lcs-ease); }
.lcs-btn:hover .bi-arrow-right { transform: translateX(3px); }

.lcs-btn--primario { --_bg: var(--lcs-azul-corporativo); --_bd: var(--lcs-azul-corporativo); --_fg: var(--lcs-blanco); }
.lcs-btn--primario:hover { --_bg: var(--lcs-azul-corporativo-hover); --_bd: var(--lcs-azul-corporativo-hover); box-shadow: var(--lcs-sombra); }

.lcs-btn--secundario { --_bd: var(--lcs-c-enlace); --_fg: var(--lcs-c-enlace); }
.lcs-btn--secundario:hover { --_bg: var(--lcs-gris-hielo); --_fg: var(--lcs-azul-corporativo-hover); --_bd: var(--lcs-azul-corporativo-hover); }
:is(.lcs-ctx-oscuro, .lcs-section--oscura, .lcs-hero, .lcs-cta-banner, .lcs-footer, .lcs-header, .lcs-aviso-cookies) .lcs-btn--secundario { --_bd: rgba(255, 255, 255, .75); --_fg: var(--lcs-blanco); }
:is(.lcs-ctx-oscuro, .lcs-section--oscura, .lcs-hero, .lcs-cta-banner, .lcs-footer, .lcs-header, .lcs-aviso-cookies) .lcs-btn--secundario:hover { --_bg: rgba(255, 255, 255, .1); --_bd: var(--lcs-blanco); --_fg: var(--lcs-blanco); }

.lcs-btn--acento { --_bg: var(--lcs-azul-energetico); --_bd: var(--lcs-azul-energetico); --_fg: var(--lcs-azul-noche); }
.lcs-btn--acento:hover { --_bg: var(--lcs-azul-energetico-hover); --_bd: var(--lcs-azul-energetico-hover); }

.lcs-btn--claro { --_bg: var(--lcs-blanco); --_bd: var(--lcs-blanco); --_fg: var(--lcs-azul-corporativo); }
.lcs-btn--claro:hover { --_bg: var(--lcs-gris-hielo); --_bd: var(--lcs-gris-hielo); --_fg: var(--lcs-azul-corporativo-hover); }

.lcs-btn--link {
  min-height: 0;
  padding: .125rem 0;
  border: 0;
  border-radius: var(--lcs-radio-sm);
  --_fg: var(--lcs-c-enlace);
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 2px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: background-size var(--lcs-dur) var(--lcs-ease), color var(--lcs-dur) ease;
}
.lcs-btn--link:hover { --_fg: var(--lcs-c-enlace-hover); background-size: 100% 2px; }

.lcs-btn--sm { min-height: 2.75rem; padding: .375rem 1rem; font-size: var(--lcs-fs-sm); } /* ≥ 44 px (brief §02) */
.lcs-btn--bloque { width: 100%; }
.lcs-btn--bloque-movil { width: 100%; }
@media (min-width: 576px) { .lcs-btn--bloque-movil { width: auto; } }

/* Deshabilitado (exento de contraste por WCAG 1.4.3, pero se mantiene legible) */
.lcs-btn:disabled,
.lcs-btn[aria-disabled="true"] {
  --_bg: #DCE3EB;
  --_bd: #DCE3EB;
  --_fg: var(--lcs-gris-industrial);
  box-shadow: none;
  transform: none;
  cursor: not-allowed;
  pointer-events: none;
}
.lcs-btn--link:disabled, .lcs-btn--link[aria-disabled="true"] { --_bg: transparent; --_bd: transparent; background-image: none; }

/* Carga */
.lcs-btn.is-loading { position: relative; color: transparent; pointer-events: none; }
.lcs-btn.is-loading > * { visibility: hidden; }
.lcs-btn.is-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  width: 1.15rem;
  height: 1.15rem;
  border: 2px solid var(--_fg);
  border-right-color: transparent;
  border-radius: 50%;
  animation: lcs-giro .7s linear infinite;
}
@keyframes lcs-giro { to { transform: rotate(360deg); } }

.lcs-acciones { display: flex; flex-wrap: wrap; gap: var(--lcs-esp-3); align-items: center; }

/* ==========================================================================
   6. Icono
   ========================================================================== */
.lcs-icono {
  --_s: 3rem;
  display: inline-grid;
  place-items: center;
  flex: none;
  width: var(--_s);
  height: var(--_s);
  border-radius: var(--lcs-radio);
  background: var(--lcs-gris-hielo);
  color: var(--lcs-azul-corporativo);
  font-size: calc(var(--_s) * .46);
  line-height: 1;
}
.lcs-icono .bi { line-height: 1; }
.lcs-icono--sm { --_s: 2.25rem; }
.lcs-icono--lg { --_s: 4rem; }
.lcs-icono--verde { background: var(--lcs-verde-suave); color: var(--lcs-verde-texto); }
.lcs-icono--energetico { background: #E1EFF8; color: var(--lcs-azul-energetico-texto); }
.lcs-icono--solido { background: var(--lcs-azul-corporativo); color: var(--lcs-blanco); }
.lcs-icono--oscuro { background: var(--lcs-azul-noche); color: var(--lcs-verde-sustentable); }
.lcs-icono--contorno { background: transparent; border: 1.5px solid var(--lcs-c-borde); color: var(--lcs-c-acento-texto); }
/* Hexágono: eco del isotipo LCS (celdas hexagonales) */
.lcs-icono--hex { border-radius: 0; clip-path: polygon(25% 3%, 75% 3%, 100% 50%, 75% 97%, 25% 97%, 0 50%); width: calc(var(--_s) * 1.12); }
:is(.lcs-section--oscura, .lcs-ctx-oscuro, .lcs-cta-banner, .lcs-footer) .lcs-icono:not(.lcs-icono--solido, .lcs-icono--contorno) { background: rgba(255, 255, 255, .08); color: var(--lcs-verde-sustentable); }

/* ==========================================================================
   7. Header y navegación
   ========================================================================== */
.lcs-header {
  position: sticky;
  top: 0;
  z-index: var(--lcs-z-header);
  background: var(--lcs-azul-noche);
  color: var(--lcs-c-texto);
  transition: background-color var(--lcs-dur) ease, box-shadow var(--lcs-dur) ease;
}
.lcs-header::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 1px;
  background: rgba(255, 255, 255, .1);
}
.lcs-header__inner {
  display: flex;
  align-items: center;
  gap: var(--lcs-esp-4);
  height: var(--lcs-header-alto);
  transition: height var(--lcs-dur) ease;
}
.lcs-header__logo {
  display: inline-flex;
  align-items: center;
  gap: var(--lcs-esp-3);
  margin-right: auto;
  color: var(--lcs-blanco);
  text-decoration: none;
  line-height: 1;
}
.lcs-body .lcs-header__logo:hover { color: var(--lcs-blanco); }
.lcs-header__logo img { width: auto; height: 2.5rem; }
.lcs-header__marca {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  font-family: var(--lcs-fuente-titulos);
  font-weight: 800;
  font-size: 1.0625rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.lcs-header__marca small {
  font-family: var(--lcs-fuente-texto);
  font-weight: 500;
  font-size: .6875rem;
  letter-spacing: .08em;
  color: var(--lcs-gris-claro-oscuro);
}
/* Variante sobre hero de portada: transparente hasta hacer scroll (solo con JS; sin JS queda sólida) */
.lcs-header--transparente { position: fixed; inset: 0 0 auto; }
.lcs-js .lcs-header--transparente:not(.is-scrolled) { background: transparent; }
.lcs-js .lcs-header--transparente:not(.is-scrolled)::after { opacity: 0; }
.lcs-header.is-scrolled { background: var(--lcs-azul-noche); box-shadow: 0 6px 24px -10px rgba(4, 16, 38, .6); }
.lcs-header.is-scrolled::after { opacity: 1; }
@media (min-width: 1200px) {
  .lcs-header.is-scrolled .lcs-header__inner { height: 4.25rem; }
}

/* Botón de menú móvil */
.lcs-nav-toggle {
  display: inline-grid;
  place-items: center;
  width: 2.875rem;
  height: 2.875rem;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .3);
  border-radius: var(--lcs-radio);
  background: transparent;
  color: var(--lcs-blanco);
  font-size: 1.5rem;
  cursor: pointer;
}
.lcs-nav-toggle:hover { background: rgba(255, 255, 255, .08); }
.lcs-nav-toggle:focus-visible, .lcs-nav__cerrar:focus-visible { outline: 3px solid var(--lcs-verde-sustentable); outline-offset: 2px; }

.lcs-nav__lista, .lcs-nav__sublista { list-style: none; margin: 0; padding: 0; }
.lcs-nav__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--lcs-esp-2);
  width: 100%;
  padding: var(--lcs-esp-3) 0;
  border: 0;
  background: none;
  color: var(--lcs-blanco);
  font-family: var(--lcs-fuente-texto);
  font-size: 1.0625rem;
  font-weight: 500;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}
.lcs-body .lcs-nav__link { color: var(--lcs-blanco); }
.lcs-body .lcs-nav__link:hover { color: var(--lcs-verde-sustentable); }
.lcs-nav__link .bi-chevron-down { font-size: .8em; transition: transform var(--lcs-dur) ease; }
.lcs-nav__link[aria-expanded="true"] .bi-chevron-down { transform: rotate(180deg); }
.lcs-nav__link[aria-current="page"],
.lcs-nav__link.is-activo { color: var(--lcs-verde-sustentable); }
.lcs-body .lcs-nav__link[aria-current="page"], .lcs-body .lcs-nav__link.is-activo { color: var(--lcs-verde-sustentable); }

.lcs-nav__grupo-titulo {
  margin: var(--lcs-esp-3) 0 var(--lcs-esp-1);
  font-family: var(--lcs-fuente-titulos);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--lcs-gris-claro-oscuro);
}
.lcs-nav__sublink {
  display: flex;
  align-items: center;
  gap: var(--lcs-esp-3);
  padding: var(--lcs-esp-2) 0;
  color: var(--lcs-gris-hielo);
  font-size: var(--lcs-fs-sm);
  text-decoration: none;
}
.lcs-body .lcs-nav__sublink { color: var(--lcs-gris-hielo); text-decoration: none; }
.lcs-body .lcs-nav__sublink:hover { color: var(--lcs-verde-sustentable); }
.lcs-nav__sublink .bi { color: var(--lcs-verde-sustentable); }
.lcs-nav__sublink[aria-current="page"] { font-weight: 600; }
.lcs-nav__sublink--todo { font-weight: 600; }

/* ---- Móvil / tablet (< 1200 px): panel lateral ---- */
@media (max-width: 1199.98px) {
  .lcs-nav {
    position: fixed;
    inset: 0 0 0 auto;
    z-index: calc(var(--lcs-z-header) + 2);
    display: flex;
    flex-direction: column;
    width: min(26rem, 100%);
    padding: 0 var(--lcs-esp-5) var(--lcs-esp-5);
    background: var(--lcs-azul-noche);
    overflow-y: auto;
    overscroll-behavior: contain;
    visibility: hidden;
    transform: translateX(100%);
    transition: transform .3s var(--lcs-ease), visibility 0s linear .3s;
  }
  .lcs-nav.is-open {
    visibility: visible;
    transform: none;
    transition: transform .3s var(--lcs-ease), visibility 0s;
    box-shadow: -20px 0 50px -20px rgba(0, 0, 0, .5);
  }
  .lcs-nav__cabecera {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: var(--lcs-header-alto);
    margin-bottom: var(--lcs-esp-2);
    border-bottom: 1px solid rgba(255, 255, 255, .12);
    font-family: var(--lcs-fuente-titulos);
    font-weight: 700;
    color: var(--lcs-blanco);
  }
  .lcs-nav__cerrar {
    display: inline-grid;
    place-items: center;
    width: 2.875rem;
    height: 2.875rem;
    border: 1px solid rgba(255, 255, 255, .3);
    border-radius: var(--lcs-radio);
    background: transparent;
    color: var(--lcs-blanco);
    font-size: 1.25rem;
    cursor: pointer;
  }
  .lcs-nav__item { border-bottom: 1px solid rgba(255, 255, 255, .08); }
  .lcs-nav__link[aria-current="page"] { box-shadow: inset 3px 0 0 var(--lcs-verde-sustentable); padding-left: var(--lcs-esp-3); }
  .lcs-nav__dropdown { display: none; padding: 0 0 var(--lcs-esp-4) var(--lcs-esp-3); }
  .lcs-nav__dropdown.is-open { display: block; }
  .lcs-nav__cta { margin-top: var(--lcs-esp-6); }
  .lcs-nav__fondo {
    position: fixed;
    inset: 0;
    z-index: calc(var(--lcs-z-header) + 1);
    background: rgba(4, 16, 38, .55);
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease, visibility 0s linear .3s;
  }
  .lcs-nav__fondo.is-open { opacity: 1; visibility: visible; transition: opacity .3s ease; }
}

/* ---- Escritorio (>= 1200 px): barra horizontal + dropdowns ---- */
@media (min-width: 1200px) {
  .lcs-nav-toggle, .lcs-nav__cabecera, .lcs-nav__fondo { display: none; }
  .lcs-nav { display: flex; align-items: center; gap: var(--lcs-esp-5); }
  .lcs-nav__lista { display: flex; align-items: center; gap: .125rem; }
  .lcs-nav__item { position: relative; }
  .lcs-nav__link {
    position: relative;
    width: auto;
    min-height: 2.75rem;
    padding: var(--lcs-esp-2) .625rem;
    border-radius: var(--lcs-radio-sm);
    font-size: .9375rem;
    white-space: nowrap;
  }
  .lcs-nav__link::after {
    content: "";
    position: absolute;
    left: .625rem;
    right: .625rem;
    bottom: -.125rem;
    height: 2px;
    border-radius: 2px;
    background: var(--lcs-verde-sustentable);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--lcs-dur) var(--lcs-ease);
  }
  .lcs-nav__link:hover::after,
  .lcs-nav__link[aria-current="page"]::after,
  .lcs-nav__link.is-activo::after { transform: scaleX(1); }
  .lcs-nav__dropdown {
    /* Contexto claro dentro del dropdown */
    --lcs-c-foco: var(--lcs-azul-energetico-texto);
    position: absolute;
    top: calc(100% + .75rem);
    left: -1rem;
    min-width: 17rem;
    padding: var(--lcs-esp-4) var(--lcs-esp-5);
    border-radius: var(--lcs-radio-lg);
    background: var(--lcs-blanco);
    box-shadow: var(--lcs-sombra-lg);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity var(--lcs-dur) ease, transform var(--lcs-dur) var(--lcs-ease), visibility 0s linear var(--lcs-dur);
  }
  .lcs-nav__dropdown::before { /* puente para que el hover no se corte */
    content: "";
    position: absolute;
    inset: -.75rem 0 auto;
    height: .75rem;
  }
  .lcs-nav__dropdown.is-open {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity var(--lcs-dur) ease, transform var(--lcs-dur) var(--lcs-ease), visibility 0s;
  }
  .lcs-nav__dropdown--ancho { display: grid; grid-template-columns: repeat(2, minmax(14rem, 1fr)); gap: 0 var(--lcs-esp-6); min-width: 34rem; }
  .lcs-nav__grupo-titulo { color: var(--lcs-gris-industrial); }
  .lcs-body .lcs-nav__sublink { color: var(--lcs-grafito); padding: .4rem .5rem; margin-inline: -.5rem; border-radius: var(--lcs-radio-sm); }
  .lcs-body .lcs-nav__sublink:hover { color: var(--lcs-azul-corporativo); background: var(--lcs-gris-hielo); }
  .lcs-nav__sublink .bi { color: var(--lcs-azul-tecnologico); }
  .lcs-nav__sublink[aria-current="page"] { color: var(--lcs-azul-corporativo); }
  .lcs-nav__sublink--todo { margin-top: var(--lcs-esp-2); }
  .lcs-body .lcs-nav__sublink--todo { color: var(--lcs-azul-corporativo); }
}

/* ==========================================================================
   8. Hero
   ========================================================================== */
.lcs-hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  min-height: clamp(34rem, 88svh, 54rem);
  padding-block: calc(var(--lcs-header-alto) + var(--lcs-esp-7)) var(--lcs-esp-8);
  background: var(--lcs-azul-noche);
  color: var(--lcs-c-texto);
  overflow: hidden;
}
.lcs-hero::after { /* línea de proceso: firma visual azul → verde */
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 4px;
  background: var(--lcs-gradiente-linea);
}
.lcs-hero__media { position: absolute; inset: 0; z-index: -1; }
.lcs-hero__media > video,
.lcs-hero__media > img,
.lcs-hero__media > picture > img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
}
.lcs-hero__media::after {
  /* Overlay: noche ≥ 72 % en toda la superficie ⇒ texto blanco ≥ 5.5:1 aun sobre un fotograma blanco */
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(10, 37, 64, .92) 0%, rgba(10, 37, 64, .80) 55%, rgba(10, 37, 64, .72) 100%),
    linear-gradient(0deg, rgba(10, 37, 64, .5) 0%, rgba(10, 37, 64, 0) 40%);
}
.lcs-hero__contenido { position: relative; max-width: 50rem; }
.lcs-hero__titulo {
  margin: 0 0 var(--lcs-esp-5);
  font-size: var(--lcs-fs-h1);
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1.05;
}
.lcs-hero__titulo em { font-style: normal; color: var(--lcs-verde-sustentable); }
.lcs-hero__texto {
  max-width: 40rem;
  margin: 0 0 var(--lcs-esp-6);
  font-size: var(--lcs-fs-lead);
  line-height: 1.55;
  color: var(--lcs-gris-hielo);
}
.lcs-hero__pausa {
  position: absolute;
  right: var(--lcs-esp-4);
  bottom: var(--lcs-esp-5);
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: var(--lcs-esp-2);
  min-height: 2.75rem;
  padding: .375rem .875rem;
  border: 1px solid rgba(255, 255, 255, .35);
  border-radius: var(--lcs-radio-pill);
  background: rgba(10, 37, 64, .6);
  color: var(--lcs-blanco);
  font-size: var(--lcs-fs-xs);
  cursor: pointer;
}
.lcs-hero__pausa:hover { background: rgba(10, 37, 64, .9); }
.lcs-hero__pausa:focus-visible { outline: 3px solid var(--lcs-verde-sustentable); outline-offset: 2px; }

/* Internas */
.lcs-hero--corto {
  min-height: 0;
  padding-block: clamp(2.5rem, 1.5rem + 4vw, 4.5rem) clamp(2.5rem, 1.5rem + 4vw, 4.5rem);
}
.lcs-hero--corto .lcs-hero__titulo { font-size: clamp(1.875rem, 1.4rem + 2.2vw, 3rem); margin-bottom: var(--lcs-esp-4); }
.lcs-hero--corto .lcs-hero__texto { margin-bottom: 0; }
.lcs-hero--corto .lcs-breadcrumb { margin-bottom: var(--lcs-esp-5); }
.lcs-hero--corto .lcs-hero__acciones { margin-top: var(--lcs-esp-5); }
.lcs-hero--corto .lcs-hero__badge { margin: var(--lcs-esp-4) 0 0; }

/* ==========================================================================
   9. Cards
   ========================================================================== */
.lcs-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid var(--lcs-borde);
  border-radius: var(--lcs-radio-lg);
  background: var(--lcs-blanco);
  color: var(--lcs-grafito);
  box-shadow: var(--lcs-sombra-sm);
  overflow: hidden;
  transition: transform var(--lcs-dur) var(--lcs-ease), box-shadow var(--lcs-dur) ease, border-color var(--lcs-dur) ease;
}
.lcs-card:has(.lcs-card__enlace):hover { transform: translateY(-3px); box-shadow: var(--lcs-sombra-lg); border-color: #BFD0E2; }
.lcs-card:has(.lcs-card__enlace:focus-visible) { outline: 3px solid var(--lcs-c-foco); outline-offset: 2px; }
.lcs-card .lcs-card__enlace:focus-visible { outline: none; }
.lcs-card__media { position: relative; aspect-ratio: 16 / 9; background: var(--lcs-gris-hielo); overflow: hidden; }
.lcs-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--lcs-ease); }
.lcs-card:hover .lcs-card__media img { transform: scale(1.03); }
.lcs-card__cuerpo {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: var(--lcs-esp-3);
  padding: var(--lcs-esp-5);
}
.lcs-card__meta {
  margin: 0;
  font-family: var(--lcs-fuente-titulos);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--lcs-azul-energetico-texto);
}
.lcs-body .lcs-card__titulo { margin: 0; font-size: var(--lcs-fs-h3); color: var(--lcs-azul-noche); }
.lcs-body .lcs-card__enlace { color: inherit; text-decoration: none; }
.lcs-card__enlace::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.lcs-card__texto { margin: 0; color: var(--lcs-gris-industrial); font-size: var(--lcs-fs-sm); line-height: 1.6; }
.lcs-card__pie {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--lcs-esp-3);
  margin-top: auto;
  padding-top: var(--lcs-esp-3);
}
.lcs-card__mas { display: inline-flex; align-items: center; gap: .375rem; font-size: var(--lcs-fs-sm); font-weight: 600; color: var(--lcs-azul-corporativo); }
.lcs-card__mas .bi { transition: transform var(--lcs-dur) var(--lcs-ease); }
.lcs-card:hover .lcs-card__mas .bi { transform: translateX(3px); }

/* --solucion: franja superior con el gradiente de la marca */
.lcs-card--solucion { border-top: 0; }
.lcs-card--solucion::before { content: ""; height: 4px; background: var(--lcs-gradiente-linea); flex: none; }
.lcs-card--solucion .lcs-card__cuerpo { padding: var(--lcs-esp-6) var(--lcs-esp-5) var(--lcs-esp-5); gap: var(--lcs-esp-4); }

/* --servicio: compacta, icono a la izquierda en ≥ 576 px */
.lcs-card--servicio { box-shadow: none; }
.lcs-card--servicio .lcs-card__cuerpo { display: grid; grid-template-columns: auto 1fr; gap: var(--lcs-esp-2) var(--lcs-esp-4); align-content: start; }
.lcs-card--servicio .lcs-icono { grid-row: span 3; }
.lcs-card--servicio .lcs-card__titulo { font-size: var(--lcs-fs-h4); align-self: center; }
.lcs-card--servicio .lcs-card__pie { grid-column: 2; padding-top: 0; }
.lcs-card--servicio:hover { border-color: var(--lcs-azul-energetico); }

/* --caso: imagen + problema primero */
.lcs-card--caso .lcs-card__media::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 3px;
  background: var(--lcs-gradiente-linea);
}
.lcs-card__datos {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .25rem var(--lcs-esp-3);
  margin: 0;
  font-size: var(--lcs-fs-xs);
}
.lcs-card__datos dt { color: var(--lcs-gris-industrial); font-weight: 500; }
.lcs-card__datos dd { margin: 0; color: var(--lcs-grafito); font-weight: 600; }

/* --aplicacion: bloque oscuro, para "desafíos" y áreas de aplicación */
.lcs-card--aplicacion {
  border-color: transparent;
  background: var(--lcs-azul-noche);
  color: var(--lcs-gris-hielo);
  box-shadow: none;
}
.lcs-card--aplicacion::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 3px;
  background: var(--lcs-gradiente-linea);
  transform: scaleX(.18);
  transform-origin: left;
  transition: transform .4s var(--lcs-ease);
}
.lcs-card--aplicacion:hover::after { transform: scaleX(1); }
.lcs-body .lcs-card--aplicacion .lcs-card__titulo { color: var(--lcs-blanco); }
.lcs-card--aplicacion .lcs-card__texto { color: var(--lcs-gris-claro-oscuro); }
.lcs-card--aplicacion .lcs-card__mas { color: var(--lcs-verde-sustentable); }
.lcs-card--aplicacion .lcs-icono { background: rgba(255, 255, 255, .08); color: var(--lcs-verde-sustentable); }
.lcs-card--aplicacion:has(.lcs-card__enlace):hover { border-color: transparent; }
:is(.lcs-section--oscura, .lcs-ctx-oscuro) .lcs-card--aplicacion { background: var(--lcs-azul-noche-2); }

/* ==========================================================================
   10. Pilar (Recuperar · Controlar · Estabilizar · Valorizar)
   ========================================================================== */
.lcs-pilar {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--lcs-esp-3);
  padding-top: var(--lcs-esp-5);
  border-top: 1px solid var(--lcs-c-borde);
}
.lcs-pilar::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 3rem;
  height: 3px;
  background: var(--lcs-gradiente-linea);
  transition: width .4s var(--lcs-ease);
}
.lcs-pilar:hover::before { width: 100%; }
.lcs-pilar .lcs-icono { margin-bottom: var(--lcs-esp-2); }
.lcs-body .lcs-pilar__titulo {
  margin: 0;
  font-size: var(--lcs-fs-h3);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.lcs-pilar__texto { margin: 0; color: var(--lcs-c-suave); font-size: var(--lcs-fs-sm); }

/* ==========================================================================
   11. Flow (pasos encadenados) — firma visual
   El conector cambia de azul corporativo a verde sustentable a lo largo de
   la cadena: de la tecnología a la circularidad. Vertical en móvil,
   horizontal desde 992 px. Pensado para 3–9 pasos (detecta la cantidad con
   :has(); sin soporte, asume 7 o usar style="--n:6").
   ========================================================================== */
.lcs-flow {
  --n: 7;
  --_gap: var(--lcs-esp-5);
  --_nodo: 3.25rem;
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--_gap);
}
.lcs-flow:has(> :last-child:nth-child(3)) { --n: 3; }
.lcs-flow:has(> :last-child:nth-child(4)) { --n: 4; }
.lcs-flow:has(> :last-child:nth-child(5)) { --n: 5; }
.lcs-flow:has(> :last-child:nth-child(6)) { --n: 6; }
.lcs-flow:has(> :last-child:nth-child(7)) { --n: 7; }
.lcs-flow:has(> :last-child:nth-child(8)) { --n: 8; }
.lcs-flow:has(> :last-child:nth-child(9)) { --n: 9; }
.lcs-flow__paso { --i: 0; }
.lcs-flow__paso:nth-child(2) { --i: 1; }
.lcs-flow__paso:nth-child(3) { --i: 2; }
.lcs-flow__paso:nth-child(4) { --i: 3; }
.lcs-flow__paso:nth-child(5) { --i: 4; }
.lcs-flow__paso:nth-child(6) { --i: 5; }
.lcs-flow__paso:nth-child(7) { --i: 6; }
.lcs-flow__paso:nth-child(8) { --i: 7; }
.lcs-flow__paso:nth-child(9) { --i: 8; }

.lcs-flow__paso {
  --_p: calc(var(--i) / max(var(--n) - 1, 1) * 100%);
  --_p2: calc(min(var(--i) + 1, var(--n) - 1) / max(var(--n) - 1, 1) * 100%);
  --_c: var(--lcs-azul-tecnologico);
  --_c2: var(--lcs-azul-tecnologico);
  --_c: color-mix(in srgb, var(--lcs-verde-sustentable) var(--_p), var(--lcs-azul-corporativo));
  --_c2: color-mix(in srgb, var(--lcs-verde-sustentable) var(--_p2), var(--lcs-azul-corporativo));
  position: relative;
  display: grid;
  grid-template-columns: var(--_nodo) minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  column-gap: var(--lcs-esp-4);
  align-content: start;
}
.lcs-flow__nodo {
  grid-row: 1 / span 2;
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: var(--_nodo);
  height: var(--_nodo);
  border: 3px solid var(--_c);
  border-radius: 50%;
  background: var(--lcs-c-fondo);
  color: var(--lcs-c-titulo);
  font-family: var(--lcs-fuente-titulos);
  font-size: 1.125rem;
  font-weight: 800;
  line-height: 1;
}
.lcs-flow__nodo .bi { font-size: 1.25rem; }
.lcs-body .lcs-flow__titulo {
  margin: .7rem 0 var(--lcs-esp-1);
  font-size: var(--lcs-fs-h4);
  font-weight: 700;
}
.lcs-flow__texto { margin: 0; color: var(--lcs-c-suave); font-size: var(--lcs-fs-sm); line-height: 1.55; }
.lcs-flow__etiqueta {
  display: inline-block;
  margin-left: .375rem;
  padding: .125rem .5rem;
  border-radius: var(--lcs-radio-pill);
  background: var(--lcs-verde-suave);
  color: var(--lcs-verde-texto);
  font-family: var(--lcs-fuente-texto);
  font-size: .6875rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  vertical-align: middle;
}
:is(.lcs-section--oscura, .lcs-ctx-oscuro) .lcs-flow__etiqueta { background: color-mix(in srgb, var(--lcs-verde-sustentable) 16%, transparent); color: var(--lcs-verde-sustentable); }

/* Paso que es tecnología LCS (NeuroLink, AURA…) */
.lcs-flow__paso--lcs .lcs-flow__nodo { background: var(--lcs-azul-noche); color: var(--lcs-blanco); }
:is(.lcs-section--oscura, .lcs-ctx-oscuro) .lcs-flow__paso--lcs .lcs-flow__nodo { background: var(--lcs-azul-corporativo); }

/* Conector (vertical) */
.lcs-flow__paso:not(:last-child)::after {
  content: "";
  position: absolute;
  left: calc(var(--_nodo) / 2 - 1.5px);
  top: var(--_nodo);
  bottom: calc(var(--_gap) * -1);
  width: 3px;
  background: linear-gradient(180deg, var(--_c), var(--_c2));
  transform-origin: top;
  transition: transform var(--lcs-dur-lenta) var(--lcs-ease) calc(var(--i) * 110ms);
}
/* Animación de llenado (solo con JS; lcs.js añade .lcs-js a <html> e .is-visible al entrar en pantalla) */
.lcs-js .lcs-flow:not(.is-visible) .lcs-flow__paso::after { transform: scaleY(0); }

@media (min-width: 992px) {
  .lcs-flow { --_gap: var(--lcs-esp-4); grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
  .lcs-flow__paso { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto 1fr; }
  .lcs-flow__nodo { grid-row: auto; }
  .lcs-body .lcs-flow__titulo { margin-top: var(--lcs-esp-4); font-size: 1.0625rem; }
  .lcs-flow__etiqueta { display: table; margin: .375rem 0 0; }
  .lcs-flow__paso:not(:last-child)::after {
    left: var(--_nodo);
    right: calc(var(--_gap) * -1);
    top: calc(var(--_nodo) / 2 - 1.5px);
    bottom: auto;
    width: auto;
    height: 3px;
    background: linear-gradient(90deg, var(--_c), var(--_c2));
    transform-origin: left;
  }
  .lcs-js .lcs-flow:not(.is-visible) .lcs-flow__paso::after { transform: scaleX(0); }
}

/* ==========================================================================
   12. Badge
   ========================================================================== */
.lcs-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .3125rem .75rem;
  border: 1px solid transparent;
  border-radius: var(--lcs-radio-pill);
  background: var(--lcs-gris-hielo);
  color: var(--lcs-azul-corporativo);
  font-family: var(--lcs-fuente-texto);
  font-size: var(--lcs-fs-xs);
  font-weight: 600;
  line-height: 1.2;
  max-width: 100%;
  white-space: normal;
}
.lcs-badge .lcs-badge__nivel { flex: none; }
.lcs-badge--verde { background: var(--lcs-verde-suave); color: var(--lcs-verde-texto); }
.lcs-badge--oscuro { background: var(--lcs-azul-noche); color: var(--lcs-blanco); }

/* Validación técnica: medidor de 3 segmentos = madurez real de la tecnología */
.lcs-badge--validacion {
  --_on: var(--lcs-azul-tecnologico);
  border-color: #C9D5E2;
  background: var(--lcs-blanco);
  color: var(--lcs-grafito);
}
.lcs-badge__nivel { display: inline-flex; gap: 2px; }
.lcs-badge__nivel > i { width: 5px; height: 12px; border-radius: 1.5px; background: #CBD6E2; }
.lcs-badge--nivel-1 .lcs-badge__nivel > i:nth-child(-n+1),
.lcs-badge--nivel-2 .lcs-badge__nivel > i:nth-child(-n+2),
.lcs-badge--nivel-3 .lcs-badge__nivel > i:nth-child(-n+3) { background: var(--_on); }
.lcs-badge--nivel-1 { --_on: var(--lcs-azul-tecnologico); }
.lcs-badge--nivel-2 { --_on: var(--lcs-azul-energetico); }
.lcs-badge--nivel-3 { --_on: var(--lcs-verde-texto); }
:is(.lcs-section--oscura, .lcs-ctx-oscuro, .lcs-hero, .lcs-card--aplicacion, .lcs-cta-banner) .lcs-badge--validacion {
  border-color: rgba(255, 255, 255, .28);
  background: rgba(255, 255, 255, .06);
  color: var(--lcs-blanco);
}
:is(.lcs-section--oscura, .lcs-ctx-oscuro, .lcs-hero, .lcs-card--aplicacion, .lcs-cta-banner) .lcs-badge__nivel > i { background: rgba(255, 255, 255, .22); }
:is(.lcs-section--oscura, .lcs-ctx-oscuro, .lcs-hero, .lcs-card--aplicacion, .lcs-cta-banner) .lcs-badge--nivel-3 { --_on: var(--lcs-verde-sustentable); }

/* ==========================================================================
   13. Lista check
   ========================================================================== */
.lcs-lista-check { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lcs-esp-3); }
.lcs-lista-check > li { position: relative; padding-left: 1.875rem; }
.lcs-lista-check > li::before {
  content: "\f26a"; /* bi-check-circle-fill */
  position: absolute;
  left: 0;
  top: .2em;
  font-family: "bootstrap-icons";
  font-size: 1.05rem;
  line-height: 1;
  color: var(--lcs-c-check);
}
.lcs-lista-check strong { color: var(--lcs-c-titulo); }
@media (min-width: 768px) {
  .lcs-lista-check--2col { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--lcs-esp-6); }
}

/* ==========================================================================
   14. Breadcrumb
   ========================================================================== */
.lcs-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .25rem .5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: var(--lcs-fs-xs);
}
.lcs-breadcrumb__item { display: inline-flex; align-items: center; gap: .5rem; color: var(--lcs-c-suave); }
.lcs-breadcrumb__item + .lcs-breadcrumb__item::before {
  content: "\f285"; /* bi-chevron-right */
  font-family: "bootstrap-icons";
  font-size: .65rem;
  color: var(--lcs-c-suave);
}
.lcs-body .lcs-breadcrumb__item a { color: var(--lcs-c-suave); text-decoration: underline; text-decoration-color: transparent; }
.lcs-body .lcs-breadcrumb__item a:hover { color: var(--lcs-c-enlace-hover); text-decoration-color: currentColor; }
.lcs-breadcrumb__item [aria-current="page"] { color: var(--lcs-c-titulo); font-weight: 600; }

/* ==========================================================================
   15. CTA banner
   ========================================================================== */
.lcs-cta-banner {
  position: relative;
  isolation: isolate;
  display: grid;
  gap: var(--lcs-esp-5);
  padding: clamp(2rem, 1.2rem + 3.5vw, 3.75rem);
  border-radius: var(--lcs-radio-lg);
  background: var(--lcs-azul-noche);
  color: var(--lcs-c-texto);
  overflow: hidden;
}
/* Gradiente limitado a una zona sin texto (esquina) para mantener AA */
.lcs-cta-banner::before {
  content: "";
  position: absolute;
  z-index: -1;
  right: -12rem;
  bottom: -14rem;
  width: 32rem;
  height: 32rem;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lcs-verde-sustentable) 35%, transparent) 0%, color-mix(in srgb, var(--lcs-azul-energetico) 18%, transparent) 40%, rgba(10, 37, 64, 0) 70%);
}
.lcs-cta-banner::after {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: var(--lcs-gradiente-linea);
}
.lcs-body .lcs-cta-banner__titulo { margin: 0 0 var(--lcs-esp-3); font-size: var(--lcs-fs-h2); }
.lcs-cta-banner__texto { margin: 0; max-width: 38rem; color: var(--lcs-gris-hielo); font-size: var(--lcs-fs-lead); line-height: 1.55; }
@media (min-width: 992px) {
  .lcs-cta-banner { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--lcs-esp-7); }
}
.lcs-cta-banner--claro { background: var(--lcs-gris-hielo); --lcs-c-texto: var(--lcs-grafito); --lcs-c-titulo: var(--lcs-azul-noche); --lcs-c-foco: var(--lcs-azul-energetico-texto); }
.lcs-cta-banner--claro .lcs-cta-banner__texto { color: var(--lcs-gris-industrial); }
.lcs-cta-banner--claro::before { background: radial-gradient(circle, color-mix(in srgb, var(--lcs-verde-sustentable) 45%, transparent) 0%, color-mix(in srgb, var(--lcs-azul-energetico) 15%, transparent) 45%, rgba(234, 240, 246, 0) 70%); }

/* ==========================================================================
   16. Formulario
   ========================================================================== */
.lcs-form { display: grid; gap: var(--lcs-esp-5); }
.lcs-form__fila { display: grid; gap: var(--lcs-esp-5); }
@media (min-width: 768px) { .lcs-form__fila { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.lcs-form__grupo { display: grid; gap: var(--lcs-esp-2); align-content: start; min-width: 0; }
.lcs-form__fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.lcs-form__legend { margin-bottom: var(--lcs-esp-4); font-family: var(--lcs-fuente-titulos); font-size: var(--lcs-fs-h4); font-weight: 700; color: var(--lcs-c-titulo); }
.lcs-form__label { font-size: var(--lcs-fs-sm); font-weight: 600; color: var(--lcs-c-titulo); }
.lcs-form__req { color: var(--lcs-c-error); margin-left: .125rem; }
.lcs-form__opcional { font-weight: 400; color: var(--lcs-c-suave); }
.lcs-form__ayuda { margin: 0; font-size: var(--lcs-fs-xs); color: var(--lcs-c-suave); }

.lcs-form__control {
  display: block;
  width: 100%;
  min-height: 2.875rem;
  padding: .625rem .875rem;
  border: 1.5px solid var(--lcs-borde-control);
  border-radius: var(--lcs-radio);
  background-color: var(--lcs-blanco);
  color: var(--lcs-grafito);
  font-family: var(--lcs-fuente-texto);
  font-size: 1rem; /* ≥16px evita zoom en iOS */
  line-height: 1.5;
  transition: border-color var(--lcs-dur) ease, box-shadow var(--lcs-dur) ease;
  appearance: none;
}
.lcs-form__control::placeholder { color: var(--lcs-gris-industrial); opacity: 1; } /* 5.57:1 */
.lcs-form__control:hover { border-color: var(--lcs-azul-tecnologico); }
.lcs-form__control:focus,
.lcs-form__control:focus-visible {
  outline: none;
  border-color: var(--lcs-azul-corporativo);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--lcs-azul-energetico) 45%, transparent);
}
textarea.lcs-form__control { min-height: 9rem; resize: vertical; }
select.lcs-form__control {
  padding-right: 2.75rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23526B7F' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right .875rem center;
  background-size: 14px 10px;
}
.lcs-form__control:disabled { background-color: var(--lcs-gris-hielo); color: var(--lcs-gris-industrial); cursor: not-allowed; }

/* Error */
.lcs-form__error {
  display: none;
  align-items: flex-start;
  gap: .375rem;
  margin: 0;
  font-size: var(--lcs-fs-xs);
  font-weight: 600;
  color: var(--lcs-c-error);
}
.lcs-form__error::before { content: "\f333"; font-family: "bootstrap-icons"; font-weight: 400; line-height: 1.4; }
.lcs-form__grupo--error .lcs-form__error { display: flex; }
.lcs-form__grupo--error .lcs-form__control,
.lcs-form__control[aria-invalid="true"] { border-color: var(--lcs-error); }
.lcs-form__grupo--error .lcs-form__control:focus { box-shadow: 0 0 0 3px rgba(180, 35, 24, .25); }

/* Checkbox (consentimiento) */
.lcs-form__check { display: flex; gap: var(--lcs-esp-3); align-items: flex-start; font-size: var(--lcs-fs-sm); }
.lcs-form__check input {
  flex: none;
  width: 1.25rem;
  height: 1.25rem;
  margin-top: .15rem;
  accent-color: var(--lcs-azul-corporativo);
}
.lcs-form__check input:focus-visible { outline: 3px solid var(--lcs-c-foco); outline-offset: 2px; }

/* Adjunto: input real visible para lectores, zona de soltar como <label> */
.lcs-form__file { position: relative; }
.lcs-form__file-input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
}
.lcs-form__file-zona {
  display: flex;
  align-items: center;
  gap: var(--lcs-esp-4);
  padding: var(--lcs-esp-4) var(--lcs-esp-5);
  border: 1.5px dashed var(--lcs-borde-control);
  border-radius: var(--lcs-radio);
  background: var(--lcs-blanco);
  color: var(--lcs-grafito);
  transition: border-color var(--lcs-dur) ease, background-color var(--lcs-dur) ease;
}
.lcs-form__file-zona .bi { font-size: 1.5rem; color: var(--lcs-azul-tecnologico); }
.lcs-form__file-texto { display: grid; gap: .125rem; min-width: 0; font-size: var(--lcs-fs-sm); }
.lcs-form__file-texto strong { color: var(--lcs-azul-corporativo); }
.lcs-form__file-nombre { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--lcs-gris-industrial); font-size: var(--lcs-fs-xs); }
.lcs-form__file:hover .lcs-form__file-zona,
.lcs-form__file.is-dragover .lcs-form__file-zona { border-color: var(--lcs-azul-corporativo); background: var(--lcs-gris-hielo); }
.lcs-form__file-input:focus-visible + .lcs-form__file-zona { outline: 3px solid var(--lcs-c-foco); outline-offset: 2px; border-color: var(--lcs-azul-corporativo); }
.lcs-form__file.is-cargado .lcs-form__file-zona { border-style: solid; border-color: var(--lcs-verde-texto); background: var(--lcs-exito-fondo); }
.lcs-form__file.is-cargado .lcs-form__file-nombre { color: var(--lcs-verde-texto); font-weight: 600; }
.lcs-form__grupo--error .lcs-form__file-zona { border-color: var(--lcs-error); }

/* Honeypot anti-spam */
.lcs-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Mensajes de estado del formulario */
.lcs-form__estado {
  display: flex;
  gap: var(--lcs-esp-3);
  align-items: flex-start;
  margin: 0;
  padding: var(--lcs-esp-4);
  border-radius: var(--lcs-radio);
  border-left: 4px solid currentColor;
  font-size: var(--lcs-fs-sm);
}
.lcs-form__estado[hidden] { display: none; }
.lcs-form__estado .bi { font-size: 1.25rem; line-height: 1.2; }
.lcs-form__estado strong { display: block; }
.lcs-form__estado--exito { background: var(--lcs-exito-fondo); color: var(--lcs-exito); }
.lcs-form__estado--error { background: var(--lcs-error-fondo); color: var(--lcs-error); }
.lcs-form__estado--cargando { background: var(--lcs-gris-hielo); color: var(--lcs-azul-corporativo); align-items: center; }
.lcs-form__estado--cargando::before {
  content: "";
  flex: none;
  width: 1.1rem;
  height: 1.1rem;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: lcs-giro .7s linear infinite;
}
.lcs-form.is-loading .lcs-form__control,
.lcs-form.is-loading .lcs-form__file { opacity: .65; pointer-events: none; }

/* ==========================================================================
   17. Tabla
   ========================================================================== */
.lcs-tabla-wrap {
  max-width: 100%;
  overflow-x: auto;
  border: 1px solid var(--lcs-borde);
  border-radius: var(--lcs-radio-lg);
  background: var(--lcs-blanco);
}
.lcs-tabla-wrap:focus-visible { outline: 3px solid var(--lcs-c-foco); outline-offset: 2px; }
.lcs-tabla {
  width: 100%;
  min-width: 36rem;
  border-collapse: collapse;
  font-size: var(--lcs-fs-sm);
  color: var(--lcs-grafito);
  font-variant-numeric: tabular-nums;
}
.lcs-tabla caption {
  caption-side: top;
  padding: var(--lcs-esp-4) var(--lcs-esp-5) var(--lcs-esp-2);
  color: var(--lcs-gris-industrial);
  font-size: var(--lcs-fs-xs);
  text-align: left;
}
.lcs-tabla th, .lcs-tabla td { padding: .875rem var(--lcs-esp-5); text-align: left; vertical-align: top; border-bottom: 1px solid var(--lcs-borde); }
.lcs-tabla thead th {
  background: var(--lcs-gris-hielo);
  color: var(--lcs-azul-noche);
  font-family: var(--lcs-fuente-titulos);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
}
.lcs-tabla tbody th { font-weight: 600; color: var(--lcs-azul-noche); }
.lcs-tabla tbody tr:last-child > * { border-bottom: 0; }
.lcs-tabla tbody tr:hover { background: #F5F8FB; }
.lcs-tabla .lcs-tabla__num { text-align: right; }

/* --apilada: en < 768 px cada fila se vuelve ficha (usa data-label en cada <td>) */
@media (max-width: 767.98px) {
  .lcs-tabla--apilada { min-width: 0; }
  .lcs-tabla--apilada thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .lcs-tabla--apilada tr { display: block; padding: var(--lcs-esp-3) 0; border-bottom: 1px solid var(--lcs-borde); }
  .lcs-tabla--apilada tbody tr:last-child { border-bottom: 0; }
  .lcs-tabla--apilada th, .lcs-tabla--apilada td { display: grid; grid-template-columns: minmax(6rem, 38%) minmax(0, 1fr); gap: var(--lcs-esp-3); justify-items: start; padding: .375rem var(--lcs-esp-4); border: 0; }
  .lcs-tabla--apilada tbody th { display: block; font-size: 1rem; }
  .lcs-tabla--apilada td::before { content: attr(data-label); font-weight: 600; color: var(--lcs-gris-industrial); font-size: var(--lcs-fs-xs); }
  .lcs-tabla--apilada .lcs-tabla__num { text-align: left; }
}

/* ==========================================================================
   18. Footer
   ========================================================================== */
.lcs-footer {
  position: relative;
  padding-top: var(--lcs-esp-8);
  background: var(--lcs-azul-noche);
  color: var(--lcs-c-texto);
  font-size: var(--lcs-fs-sm);
}
.lcs-footer::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: var(--lcs-gradiente-linea); }
.lcs-footer__grid { display: grid; gap: var(--lcs-esp-6); padding-bottom: var(--lcs-esp-7); }
@media (min-width: 768px) { .lcs-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .lcs-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: var(--lcs-esp-7); } }
.lcs-footer__frase {
  margin: var(--lcs-esp-4) 0 var(--lcs-esp-5);
  max-width: 22rem;
  font-family: var(--lcs-fuente-titulos);
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--lcs-blanco);
}
.lcs-body .lcs-footer__titulo {
  margin: 0 0 var(--lcs-esp-4);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--lcs-gris-claro-oscuro);
}
.lcs-footer__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lcs-esp-2); }
.lcs-body .lcs-footer__enlace { color: var(--lcs-gris-hielo); text-decoration: none; }
.lcs-body .lcs-footer__enlace:hover { color: var(--lcs-verde-sustentable); text-decoration: underline; }
.lcs-footer__contacto { font-style: normal; display: grid; gap: var(--lcs-esp-3); }
.lcs-footer__contacto p { margin: 0; display: flex; gap: var(--lcs-esp-3); }
.lcs-footer__contacto .bi { color: var(--lcs-verde-sustentable); line-height: 1.6; }
.lcs-footer__redes { display: flex; gap: var(--lcs-esp-2); margin-top: var(--lcs-esp-5); list-style: none; padding: 0; }
.lcs-footer__red {
  display: inline-grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 50%;
  font-size: 1.05rem;
  transition: background-color var(--lcs-dur) ease, border-color var(--lcs-dur) ease;
}
.lcs-body .lcs-footer__red { color: var(--lcs-blanco); }
.lcs-body .lcs-footer__red:hover { color: var(--lcs-azul-noche); background: var(--lcs-verde-sustentable); border-color: var(--lcs-verde-sustentable); }
.lcs-footer__legal {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--lcs-esp-3) var(--lcs-esp-5);
  padding-block: var(--lcs-esp-5);
  border-top: 1px solid rgba(255, 255, 255, .12);
  color: var(--lcs-gris-claro-oscuro);
  font-size: var(--lcs-fs-xs);
}
.lcs-footer__legal ul { display: flex; flex-wrap: wrap; gap: var(--lcs-esp-2) var(--lcs-esp-5); list-style: none; margin: 0; padding: 0; }
.lcs-body .lcs-footer__legal a, .lcs-footer__legal button {
  padding: 0;
  border: 0;
  background: none;
  color: var(--lcs-gris-claro-oscuro);
  font: inherit;
  text-decoration: underline;
  cursor: pointer;
}
.lcs-body .lcs-footer__legal a:hover, .lcs-footer__legal button:hover { color: var(--lcs-blanco); }

/* ==========================================================================
   19. Aviso de cookies
   ========================================================================== */
/* Compacto: barra inferior en móvil (≤ ~35 % del alto) y barra baja de una línea desde 992 px,
   para no tapar el contenido de la primera pantalla (p. ej. el panel de pilares de la Home). */
.lcs-aviso-cookies {
  position: fixed;
  left: var(--lcs-esp-2);
  right: var(--lcs-esp-2);
  bottom: var(--lcs-esp-2);
  z-index: var(--lcs-z-cookies);
  display: grid;
  gap: var(--lcs-esp-3);
  max-height: 35vh;
  max-height: 35svh;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: var(--lcs-esp-3) var(--lcs-esp-4);
  border-radius: var(--lcs-radio-lg);
  background: var(--lcs-azul-noche);
  color: var(--lcs-c-texto);
  font-size: var(--lcs-fs-xs);
  line-height: 1.5;
  box-shadow: 0 12px 32px -10px rgba(4, 16, 38, .6);
  border-top: 3px solid var(--lcs-azul-energetico);
}
.lcs-aviso-cookies[hidden] { display: none; }
/* Con el aviso abierto, el final de la página puede subir por encima de la barra (lcs.js fija el alto). */
.lcs-body.lcs-con-aviso { padding-bottom: var(--lcs-aviso-alto, 0px); }
.lcs-body .lcs-aviso-cookies__titulo { display: inline; margin: 0 .375rem 0 0; font-size: var(--lcs-fs-sm); }
.lcs-aviso-cookies__texto { display: inline; margin: 0; color: var(--lcs-gris-hielo); }
.lcs-aviso-cookies__acciones { display: flex; gap: var(--lcs-esp-2); }
.lcs-aviso-cookies__acciones .lcs-btn { flex: 1 1 0; min-height: 2.75rem; }
@media (min-width: 576px) {
  .lcs-aviso-cookies { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--lcs-esp-4); }
  .lcs-aviso-cookies__acciones .lcs-btn { flex: none; }
}
@media (min-width: 992px) {
  .lcs-aviso-cookies {
    left: var(--lcs-esp-4);
    right: var(--lcs-esp-4);
    bottom: var(--lcs-esp-2);
    max-width: 72rem;
    margin-inline: auto;
    padding: .375rem .375rem .375rem var(--lcs-esp-5);
    border-top: 0;
    border-left: 3px solid var(--lcs-azul-energetico);
    font-size: var(--lcs-fs-sm);
  }
  .lcs-aviso-cookies__acciones .lcs-btn { min-height: 2.75rem; }
}
/* 992–1199 px (p. ej. 1024×768): una sola línea y más baja, para no tapar el texto de los pilares de la Home.
   Texto a 13 px y menos relleno; los botones mantienen 44 px de alto (brief §02). */
@media (min-width: 992px) and (max-width: 1199.98px) {
  .lcs-aviso-cookies {
    gap: var(--lcs-esp-3);
    padding: .25rem .25rem .25rem var(--lcs-esp-4);
    font-size: var(--lcs-fs-xs);
    line-height: 1.35;
  }
  .lcs-body .lcs-aviso-cookies__titulo { font-size: var(--lcs-fs-xs); margin-right: .25rem; }
  .lcs-aviso-cookies__acciones { gap: .375rem; }
  .lcs-aviso-cookies__acciones .lcs-btn { min-height: 2.75rem; padding: .25rem .875rem; font-size: var(--lcs-fs-xs); }
}

/* ==========================================================================
   20. Utilidades de soporte
   ========================================================================== */
.lcs-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.lcs-aparece { transition: opacity var(--lcs-dur-lenta) var(--lcs-ease), transform var(--lcs-dur-lenta) var(--lcs-ease); }
.lcs-js .lcs-aparece:not(.is-visible) { opacity: 0; transform: translateY(14px); }

/* ==========================================================================
   21. Movimiento reducido
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  .lcs-body *,
  .lcs-body *::before,
  .lcs-body *::after {
    animation-duration: .01ms !important;   /* justificado: anula cualquier animación, incluso de terceros */
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    transition-delay: 0s !important;
    scroll-behavior: auto !important;
  }
  .lcs-js .lcs-flow:not(.is-visible) .lcs-flow__paso::after { transform: none; }
  .lcs-js .lcs-aparece:not(.is-visible) { opacity: 1; transform: none; }
  .lcs-card:has(.lcs-card__enlace):hover, .lcs-card:hover .lcs-card__media img { transform: none; }
  .lcs-btn.is-loading::after, .lcs-form__estado--cargando::before { animation: lcs-giro 1.6s linear infinite !important; } /* el spinner sigue indicando actividad, más lento */
}

/* ==========================================================================
   22. Layout de páginas generadas (M4): migas, idioma, footer ampliado, boletín
   ========================================================================== */
/* Franja de breadcrumb que base.php inserta al inicio de <main> (contexto oscuro, continúa el header) */
.lcs-migas {
  background: var(--lcs-azul-noche);
  padding-block: var(--lcs-esp-3);
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}

/* Panel móvil: el CTA queda visible al final del panel aunque haya acordeones abiertos */
@media (max-width: 1199.98px) {
  .lcs-nav__lista { margin-bottom: var(--lcs-esp-6); }
  .lcs-nav__cta {
    position: sticky;
    bottom: 0;
    margin-top: auto;
    box-shadow: 0 -14px 18px 4px var(--lcs-azul-noche);
  }
  .lcs-nav__idioma { order: 10; margin-top: var(--lcs-esp-4); }
}

/* Selector de idioma (solo si sitio.en_activo) */
.lcs-nav__idioma { display: flex; gap: var(--lcs-esp-1); list-style: none; margin: 0; padding: 0; }
.lcs-nav__idioma a {
  display: inline-grid;
  place-items: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0 var(--lcs-esp-2);
  border-radius: var(--lcs-radio-sm);
  font-size: var(--lcs-fs-sm);
  font-weight: 600;
  text-decoration: none;
}
.lcs-body .lcs-nav__idioma a { color: var(--lcs-gris-hielo); text-decoration: none; }
.lcs-body .lcs-nav__idioma a:hover { color: var(--lcs-verde-sustentable); }
.lcs-body .lcs-nav__idioma a[aria-current="true"] { color: var(--lcs-blanco); box-shadow: inset 0 -2px 0 var(--lcs-verde-sustentable); }
@media (min-width: 1200px) {
  .lcs-nav__idioma { margin-left: calc(var(--lcs-esp-2) * -1); }
  .lcs-nav__idioma a { min-width: 2.25rem; min-height: 2.25rem; padding: 0 .375rem; font-size: .8125rem; }
}

/* Footer de 5 columnas (marca · soluciones · servicios · explorar · contacto) */
@media (min-width: 1200px) {
  .lcs-footer__grid--5 { grid-template-columns: 1.3fr .8fr 1.15fr .9fr 1.45fr; gap: var(--lcs-esp-6); }
}
.lcs-footer__resumen { margin: calc(var(--lcs-esp-2) * -1) 0 0; max-width: 22rem; color: var(--lcs-c-suave); }
.lcs-footer__contacto a { overflow-wrap: break-word; min-width: 0; }
.lcs-footer .lcs-header__logo img { height: 3rem; }

/* Boletín */
.lcs-footer__boletin {
  display: grid;
  gap: var(--lcs-esp-4);
  padding-block: var(--lcs-esp-6);
  border-top: 1px solid rgba(255, 255, 255, .12);
}
.lcs-footer__boletin .lcs-footer__titulo { margin-bottom: var(--lcs-esp-2); }
.lcs-footer__boletin-texto { margin: 0; max-width: 34rem; color: var(--lcs-gris-hielo); }
.lcs-footer__boletin-form { display: grid; gap: var(--lcs-esp-3); min-width: 0; }
.lcs-footer__boletin-fila { display: flex; flex-wrap: wrap; gap: var(--lcs-esp-2); }
.lcs-footer__boletin-fila .lcs-form__control { flex: 1 1 14rem; min-width: 0; width: auto; }
.lcs-footer__boletin-fila .lcs-btn { flex: 0 0 auto; }
.lcs-footer__boletin-form.is-loading .lcs-form__control { opacity: .65; pointer-events: none; }
@media (min-width: 992px) {
  .lcs-footer__boletin { grid-template-columns: minmax(0, 1fr) minmax(0, 30rem); align-items: center; gap: var(--lcs-esp-7); }
}
@media (min-width: 1200px) {
  .lcs-header__logo { flex-shrink: 0; }
  .lcs-nav__cta { white-space: nowrap; }
}
/* Con selector de idioma, entre 1200 y 1399 px se compacta la barra para que quepa en una línea */
@media (min-width: 1200px) and (max-width: 1399.98px) {
  .lcs-nav:has(.lcs-nav__idioma) { gap: var(--lcs-esp-3); }
  .lcs-nav:has(.lcs-nav__idioma) .lcs-nav__link { padding-inline: .45rem; font-size: .875rem; }
  .lcs-nav:has(.lcs-nav__idioma) .lcs-nav__link::after { left: .45rem; right: .45rem; }
  .lcs-nav:has(.lcs-nav__idioma) .lcs-nav__cta { padding-inline: var(--lcs-esp-4); }
}

/* --------------------------------------------------------------------------
   QA (M14b) · Objetivos táctiles de 44 px en móvil y tablet / pantallas táctiles
   (enlaces sueltos del footer, legales, breadcrumb, botones pequeños y logo).
   -------------------------------------------------------------------------- */
@media (max-width: 991.98px), (pointer: coarse) {
  .lcs-body .lcs-footer__enlace,
  .lcs-body .lcs-footer__legal a, .lcs-footer__legal button,
  .lcs-body .lcs-breadcrumb__item a,
  .lcs-btn--link,
  .lcs-header__logo { display: inline-flex; align-items: center; min-height: 2.75rem; min-width: 2.75rem; }
  .lcs-footer__lista { gap: 0; }
  .lcs-footer__contacto { gap: 0; }
  .lcs-footer__contacto p { align-items: center; min-height: 2.75rem; }
  .lcs-footer__legal ul { row-gap: 0; }
  .lcs-btn--sm, .lcs-hero__pausa { min-height: 2.75rem; }
}

/* ==========================================================================
   Contenido de ejemplo pendiente de revisión (interruptor "revision" del panel).
   Rojo #B42318 (6,6:1 sobre blanco) y #FFA39E sobre fondos oscuros (≈7:1 sobre azul noche).
   !important: es una marca temporal que debe ganarle a cualquier color de componente.
   ========================================================================== */
:root { --lcs-revision-color: #B42318; }
:is(.lcs-hero, .lcs-ctx-oscuro, .lcs-section--oscura) { --lcs-revision-color: #FFA39E; }
.lcs-revision,
.lcs-revision :is(p, li, h2, h3, h4, span:not(.lcs-badge__nivel):not(.lcs-flow__nodo), a:not(.lcs-btn), .lcs-flow__titulo, .lcs-flow__texto, .lcs-badge),
.lcs-pendiente,
.lcs-card--revision :is(.lcs-card__titulo, .lcs-card__enlace, .lcs-card__texto, dd, .lcs-badge) {
  color: var(--lcs-revision-color) !important;
}.lcs-pendiente { font-weight: 600; }
