/* LEDCAM · capa propia del sitio público sobre el kit v10 candidate.54 (re-pin del 8-nov-2026; antes candidate.51 y candidate.49).
 *
 * Cada regla propia se documenta con su origen. Las desviaciones del kit (H29)
 * se registran también en KIT-DESVIACIONES.md:
 *   D1  paleta del logo final (docs/logo/NOTA.md): naranjo
 *       #F26A1B para la marca, superficies y el botón primario del sitio;
 *       naranjo oscuro #B94A0C como --accent (texto, enlaces, foco, bordes) y
 *       gris #5F6368 como --ink-muted. Contrastes medidos: #B94A0C sobre blanco
 *       5,19:1, sobre el muro acogida 4,6:1 y sobre el muro trabajo 4,56:1;
 *       #F26A1B sobre el papel oscuro 5,94:1; #5F6368 sobre blanco 6,05:1.
 *   D3  la monoespaciada del kit se anula: precios, SKU, tablas, insignias y
 *       pie van en IBM Plex Sans con cifras tabulares (pedido de Martín 21-oct).
 *   D4  el muro acogida del sitio público pasa a papel blanco para que las
 *       fotos y el naranjo carguen el color (máximo 6 tonos por pantalla). El
 *       ERP neutraliza su muro aparte (ERP-5, erp.css).
 *   D5  botón primario del sitio: fondo #F26A1B con texto blanco a 19 px y 700
 *       (texto grande, 3,06:1 ≥ 3:1), hover y foco en #B94A0C. El primario del
 *       ERP lo define erp.css (ERP-6). En cualquier entorno y tema, el texto de
 *       .btn--primary es blanco: el kit usa --paper-raised, que en oscuro deja
 *       tinta oscura sobre naranjo. El secundario del sitio va al mismo
 *       tamaño (19 px, 600) en tinta sobre papel, para que la pareja se lea pareja.
 *   D6  barra bajo 30rem: marca, acciones y menú en una sola fila de 44 px.
 *
 * Fondo naranjo: nada naranjo encima (texto, ícono ni logo de color). Sobre
 * naranjo va blanco; el único bloque naranjo del sitio es .btn--primary.
 *
 * Reglas duras que se respetan aquí (H28): sin degradados, sin sombras
 * desplazadas, radio 0, sin transición global, transiciones de 200 ms o menos,
 * sin mayúsculas forzadas, sin rótulos sobre títulos ni franjas de color,
 * propiedades lógicas, texto de 12 px o más, controles de 44 px o más, un
 * primario por zona.
 */

/* D1 · paleta del logo final */
:root[data-brand="indieweb"] {
  --ledcam-naranjo: #F26A1B;
  --ledcam-naranjo-oscuro: #B94A0C;
  --ledcam-gris: #5F6368;
  --accent: var(--ledcam-naranjo-oscuro);
  --accent-soft: #f3f4f5;
  --brand-accent-dark: var(--ledcam-naranjo);
  --action-primary: var(--ledcam-naranjo-oscuro);
  --ink-muted: var(--ledcam-gris);
  --ledcam-foco: var(--ledcam-naranjo-oscuro);
}
:root[data-brand="indieweb"][data-theme="dark"] {
  --accent: var(--ledcam-naranjo);
  --accent-soft: #1f2730;
  --action-primary: var(--ledcam-naranjo-oscuro);
  --ink-muted: #b8c3cb;
  --ledcam-foco: var(--ledcam-naranjo);
}

/* D4 · muro neutro en el sitio público */
:root[data-brand="indieweb"] body[data-environment="acogida"] {
  background: var(--paper);
}

/* D5 · botón primario: naranjo vivo con texto blanco grande en el sitio,
   naranjo oscuro en el ERP. Hover y foco en el naranjo oscuro: sin tono nuevo. */
body[data-environment="acogida"] .btn--primary {
  border-color: var(--ledcam-naranjo);
  background: var(--ledcam-naranjo);
  color: #fff;
  font-size: var(--fs-19);
  font-weight: 700;
  padding-inline: 1.5rem;
}
body[data-environment="acogida"] .btn--primary:hover,
body[data-environment="acogida"] .btn--primary:focus-visible {
  border-color: var(--ledcam-naranjo-oscuro);
  background: var(--ledcam-naranjo-oscuro);
  color: #fff;
}
:root[data-brand="indieweb"] .btn--primary,
:root[data-brand="indieweb"] .btn--primary:hover,
:root[data-brand="indieweb"] .btn--primary:focus-visible,
:root[data-brand="indieweb"] .btn--primary:active {
  color: #fff;
}
/* Foco del primario en tinta, separado del botón: un anillo naranjo se
   perdería contra el naranjo oscuro del estado de foco. */
body[data-environment="acogida"] .btn--primary:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}
/* Secundario a la par del primario: mismo tamaño y relleno, en tinta sobre
   papel (sin naranjo). Los chicos (.btn--sm) y el de los filtros no cambian. */
body[data-environment="acogida"] .btn--secondary:not(.btn--sm) {
  font-size: var(--fs-19);
  font-weight: 600;
  padding-inline: 1.5rem;
}
body[data-environment="acogida"] .ledcam-filtros .btn--secondary {
  font-size: var(--fs-15);
  padding-inline: var(--space-4);
}
body[data-environment="acogida"] .btn--secondary:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}

/* D3 · fuera la monoespaciada del kit */
code, kbd, samp, pre,
.badge, .table th, .table .num, .stat__value, .card__link,
.gr-nav__theme, .gr-footer__brand-tag, .gr-footer__col h4, .gr-footer__sub,
.gr-footer__attrib-label, .gr-footer__attrib-eyebrow,
.gr-footer__sibling-label, .gr-footer__sibling-eyebrow, .gr-footer__sibling-arrow,
.gr-footer__sites, .ledcam-tabla th {
  font-family: var(--font-sans);
  letter-spacing: normal;
}
.table .num,
.ledcam-tabla .num {
  font-variant-numeric: tabular-nums;
}

/* Barra: logo final (versión corta bajo 64 px, docs/logo/NOTA.md), enlaces en tinta,
   acceso a la lista de cotización y botones de buscar y tema sin borde. */
.gr-nav__brand > img.ledcam-logo {
  inline-size: auto;
  block-size: 32px;
}
.gr-nav .gr-nav__link {
  font-size: var(--fs-15);
  color: var(--ink);
}
.gr-nav .gr-nav__link.is-active {
  font-weight: 600;
  border-block-end: 2px solid var(--ledcam-naranjo);
}
.gr-nav .gr-nav__link:hover {
  border-block-end-color: var(--ledcam-naranjo);
}
.gr-nav .gr-nav__search,
.gr-nav .gr-nav__theme {
  border-color: transparent;
  color: var(--ink);
}
.gr-nav .gr-nav__search:focus-visible,
.gr-nav .gr-nav__theme:focus-visible,
.ledcam-nav-cotizacion:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-nav-cotizacion {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-block-size: 44px;
  min-inline-size: 44px;
  padding-inline: var(--space-2);
  color: var(--ink);
  font-size: var(--fs-15);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-decoration: none;
  white-space: nowrap;
}
.ledcam-nav-cotizacion:hover {
  color: var(--accent);
}
.ledcam-nav-cotizacion__n,
.ledcam-nav-cotizacion .ledcam-icono {
  display: none;
}
@media (max-width: 760px) {
  .gr-nav__brand > img.ledcam-logo {
    block-size: 30px;
  }
}
/* D6 · una sola fila bajo 30rem */
@media (max-width: 30rem) {
  .gr-nav .gr-nav__inner {
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: var(--space-1);
  }
  .gr-nav .gr-nav__brand {
    grid-column: auto;
  }
  .gr-nav .gr-nav__brand > img.ledcam-logo {
    block-size: 28px;
    max-block-size: 28px;
  }
  .gr-nav .gr-nav__actions {
    grid-column: auto;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0;
  }
  .gr-nav .gr-nav__toggle {
    grid-column: auto;
  }
  .ledcam-nav-cotizacion__texto {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .ledcam-nav-cotizacion .ledcam-icono {
    display: block;
  }
  .ledcam-nav-cotizacion__n:not(:empty) {
    display: inline;
  }
}

/* Ícono Lucide inline: hereda color del texto. */
.ledcam-icono {
  inline-size: 1.25rem;
  block-size: 1.25rem;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: -0.25em;
}

/* Contenido principal. */
.ledcam-main {
  inline-size: 100%;
  max-inline-size: var(--container);
  margin-inline: auto;
  padding-inline: var(--pad-x);
  padding-block: var(--space-6) var(--space-8);
  flex: 1 0 auto;
}
.ledcam-seccion {
  margin-block-start: var(--space-8);
}
.ledcam-seccion:first-child {
  margin-block-start: 0;
}
.ledcam-seccion > h1,
.ledcam-prosa > h1 {
  margin-block: 0 var(--space-4);
}
.ledcam-seccion > h2,
.ledcam-h2 {
  margin-block: 0 var(--space-4);
  font-size: var(--fs-28);
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.2;
}
.ledcam-seccion > p,
.ledcam-prosa p {
  max-inline-size: 68ch;
  font-size: var(--fs-prose);
  line-height: 1.6;
  margin-block: 0 var(--space-4);
}
.ledcam-prosa h2 {
  margin-block: var(--space-7) var(--space-3);
  font-size: var(--fs-24);
  font-weight: 700;
}
.ledcam-prosa ul {
  max-inline-size: 68ch;
  padding-inline-start: 1.25rem;
  margin-block: 0 var(--space-4);
  list-style: disc;
}
.ledcam-prosa li {
  margin-block-end: var(--space-1);
}
.ledcam-enlace {
  color: var(--accent);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ledcam-enlace:hover {
  text-decoration-thickness: 2px;
}

/* Inicio · vitrina: texto con dos acciones a la izquierda y mosaico de la sala
   a la derecha, ambos de la misma altura. En móvil, el mosaico va después. */
.ledcam-vitrina {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  column-gap: var(--space-7);
  align-items: center;
}
.ledcam-vitrina h1 {
  margin-block: 0 var(--space-4);
  font-size: clamp(2rem, 3.6vw, 3.25rem);
  line-height: 1.08;
  letter-spacing: -0.02em;
}
.ledcam-vitrina__cuerpo > p {
  max-inline-size: 46ch;
  margin-block: 0 var(--space-6);
  font-size: var(--fs-20);
  line-height: 1.5;
}
.ledcam-mosaico {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: var(--space-2);
  margin: 0;
}
.ledcam-mosaico img {
  display: block;
  inline-size: 100%;
  block-size: 100%;
  aspect-ratio: 1;
  object-fit: cover;
}
.ledcam-mosaico img:first-child {
  grid-row: 1 / span 2;
}
@media (max-width: 480px) {
  .ledcam-vitrina .ledcam-acciones .btn {
    flex: 1 1 100%;
    justify-content: center;
  }
}
@media (max-width: 760px) {
  .ledcam-vitrina {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--space-5);
  }
  .ledcam-vitrina__cuerpo > p {
    font-size: var(--fs-18);
    margin-block-end: var(--space-5);
  }
}

/* Encabezado de sección con enlace a la derecha. */
.ledcam-cabeza {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2) var(--space-5);
  margin-block-end: var(--space-2);
}
.ledcam-cabeza > h2 {
  margin: 0;
  font-size: var(--fs-28);
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.2;
}
.ledcam-cabeza > .ledcam-enlace {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
}
.ledcam-seccion > .ledcam-bajada {
  margin-block: 0 var(--space-5);
  font-size: var(--fs-16);
}

/* Inicio · tres líneas de trabajo en columnas iguales, foto 4:3 arriba. */
.ledcam-lineas {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-6);
}
.ledcam-linea {
  display: flex;
  flex-direction: column;
  margin: 0;
}
.ledcam-linea img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  background: var(--paper-sunken);
}
.ledcam-linea h3 {
  margin-block: var(--space-4) var(--space-2);
  font-size: var(--fs-22);
  font-weight: 700;
}
.ledcam-linea p {
  margin-block: 0 var(--space-2);
  max-inline-size: 52ch;
  line-height: 1.55;
}
.ledcam-linea p:last-child {
  margin-block: auto 0;
  padding-block-start: var(--space-2);
}
.ledcam-linea .ledcam-enlace {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
}
@media (max-width: 900px) {
  .ledcam-lineas {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-6);
  }
  .ledcam-linea img {
    aspect-ratio: 16 / 9;
  }
  .ledcam-linea h3 {
    font-size: var(--fs-20);
  }
}

/* Inicio · banda para instaladores: foto de alumbrado solar y texto. */
.ledcam-banda {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: var(--space-7);
  align-items: center;
  padding-block: var(--space-7);
  border-block: 1px solid var(--line);
}
.ledcam-banda img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.ledcam-banda h2 {
  margin-block: 0 var(--space-4);
  font-size: var(--fs-28);
  font-weight: 700;
  line-height: 1.2;
}
.ledcam-banda p {
  max-inline-size: 58ch;
  margin-block: 0 var(--space-3);
  line-height: 1.6;
}
.ledcam-banda .ledcam-enlace {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
}
@media (max-width: 760px) {
  .ledcam-banda {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-4);
    padding-block: var(--space-6);
  }
  .ledcam-banda h2 {
    font-size: var(--fs-24);
  }
}

/* Inicio · categorías agrupadas por familia, con la foto de un producto. */
.ledcam-familias {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
  gap: var(--space-3) var(--space-6);
  margin: 0;
  padding: 0;
  list-style: none;
}
.ledcam-familia h3 {
  margin-block: 0 var(--space-2);
  padding-block-end: var(--space-2);
  border-block-end: 1px solid var(--line-strong);
  font-size: var(--fs-18);
  font-weight: 700;
}
.ledcam-familia ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.ledcam-categoria {
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 1fr) auto;
  gap: var(--space-3);
  align-items: center;
  min-block-size: 44px;
  padding-block: var(--space-2);
  border-block-end: 1px solid var(--line);
  color: var(--ink);
  text-decoration: none;
}
.ledcam-categoria img {
  display: block;
  inline-size: 3.5rem;
  block-size: 3.5rem;
  object-fit: cover;
  background: var(--paper);
}
.ledcam-categoria__vacia {
  display: block;
  inline-size: 3.5rem;
  block-size: 3.5rem;
  background: var(--paper-sunken);
}
.ledcam-categoria img[data-foto-origen="construex"] {
  object-fit: contain;
}
.ledcam-categoria__nombre {
  font-weight: 600;
}
.ledcam-categoria__conteo {
  color: var(--ink-muted);
  font-size: var(--fs-14);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ledcam-categoria:hover .ledcam-categoria__nombre {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Acciones: botones del kit en fila. */
.ledcam-acciones {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-5);
}
.ledcam-acciones .btn {
  display: inline-flex;
}

/* Rejillas de productos. */
.ledcam-rejilla {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
  gap: var(--space-5) var(--space-4);
  margin: 0;
  padding: 0;
  list-style: none;
}
.ledcam-rejilla--catalogo {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 16.5rem), 1fr));
}
@media (min-width: 64rem) {
  .ledcam-rejilla--destacados {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
.ledcam-rejilla > li {
  display: flex;
  min-inline-size: 0;
}
@media (max-width: 480px) {
  .ledcam-rejilla,
  .ledcam-rejilla--catalogo {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-4) var(--space-3);
  }
}

/* Tarjeta de producto: foto al borde, nombre, specs clave y precio al pie. */
.ledcam-producto {
  display: flex;
  flex-direction: column;
  inline-size: 100%;
  border: 1px solid var(--line);
  background: var(--paper-raised);
  transition: border-color var(--t-base);
}
.ledcam-producto:hover,
.ledcam-producto:focus-within {
  border-color: var(--ink);
}
.ledcam-producto__enlace {
  display: flex;
  flex-direction: column;
  flex: 1 0 auto;
  color: inherit;
  text-decoration: none;
}
.ledcam-producto__enlace:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-producto__foto {
  margin: 0;
  aspect-ratio: 1;
  overflow: hidden;
  border-block-end: 1px solid var(--line);
  background: var(--paper-raised);
}
.ledcam-producto__foto[hidden] {
  display: none;
}
.ledcam-producto__foto img {
  display: block;
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}
.ledcam-producto__foto[data-foto-origen="construex"] img {
  object-fit: contain;
  padding: var(--space-3);
}
/* Producto sin foto: recuadro neutro con la marca de LEDCAM en gris claro
   (máscara del SVG en el color de línea del tema, sin texto). */
[data-sin-foto],
.ledcam-sin-foto {
  position: relative;
  background: var(--paper-sunken);
}
[data-sin-foto] img[hidden] {
  display: none;
}
[data-sin-foto]::after,
.ledcam-sin-foto::after {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  inline-size: 26%;
  aspect-ratio: 1;
  background-color: var(--line);
  -webkit-mask: url("/assets/img/logo/logo-marca.svg") center / contain no-repeat;
  mask: url("/assets/img/logo/logo-marca.svg") center / contain no-repeat;
}
.ledcam-ficha__foto[data-sin-foto] {
  aspect-ratio: 4 / 3;
  border: 1px solid var(--line);
}
.ledcam-ficha__foto[data-sin-foto]::after {
  inline-size: 18%;
}
.ledcam-sugerido .ledcam-sin-foto {
  display: block;
  inline-size: 4rem;
  block-size: 4rem;
}
@media (max-width: 760px) {
  .ledcam-sugerido .ledcam-sin-foto {
    inline-size: 3rem;
    block-size: 3rem;
  }
}
.ledcam-producto__texto {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  flex: 1 0 auto;
  padding: var(--space-3) var(--space-4) var(--space-4);
}
.ledcam-producto__categoria {
  margin: 0;
  color: var(--ink-muted);
  font-size: var(--fs-13);
}
.ledcam-producto__categoria:empty {
  display: none;
}
.ledcam-producto__nombre {
  margin: 0;
  font-size: var(--fs-17);
  font-weight: 600;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}
.ledcam-producto__enlace:hover .ledcam-producto__nombre {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ledcam-producto__specs {
  margin: 0;
  color: var(--ink-muted);
  font-size: var(--fs-14);
}
.ledcam-producto__specs:empty {
  display: none;
}
.ledcam-producto__precio {
  margin-block: auto 0;
  padding-block-start: var(--space-3);
  font-size: var(--fs-22);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.ledcam-producto__unidad {
  font-size: var(--fs-14);
  font-weight: 400;
  letter-spacing: normal;
  color: var(--ink-muted);
}
@media (max-width: 480px) {
  .ledcam-producto__categoria {
    display: none;
  }
  .ledcam-producto__texto {
    padding: var(--space-2) var(--space-3) var(--space-3);
  }
  .ledcam-producto__nombre {
    font-size: var(--fs-15);
  }
  .ledcam-producto__specs {
    font-size: var(--fs-13);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .ledcam-producto__precio {
    font-size: var(--fs-18);
    padding-block-start: var(--space-2);
  }
}

/* Catálogo: lista de categorías a la izquierda y barra delgada sobre la grilla. */
.ledcam-catalogo {
  display: grid;
  grid-template-columns: 15rem minmax(0, 1fr);
  gap: var(--space-6);
  align-items: start;
}
.ledcam-bajada {
  margin-block: var(--space-2) var(--space-6);
  color: var(--ink-muted);
  max-inline-size: 68ch;
}
.ledcam-catalogo__categorias h2 {
  margin-block: var(--space-4) var(--space-1);
  font-size: var(--fs-15);
  font-weight: 700;
}
.ledcam-catalogo__categorias ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.ledcam-catalogo__categorias a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  min-block-size: 36px;
  padding-block: var(--space-1);
  color: var(--ink);
  font-size: var(--fs-15);
  text-decoration: none;
}
.ledcam-catalogo__categorias a:hover span:first-child {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ledcam-catalogo__categorias a[aria-current="true"] {
  color: var(--accent);
  font-weight: 600;
}
.ledcam-catalogo__categorias a:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-catalogo__categorias a span:last-child {
  flex: none;
  white-space: nowrap;
  color: var(--ink-muted);
  font-size: var(--fs-13);
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}
.ledcam-catalogo__todo {
  border-block-end: 1px solid var(--line-strong);
}
.ledcam-filtros {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 13rem) auto;
  gap: var(--space-3) var(--space-4);
  align-items: end;
  margin-block-end: var(--space-5);
  padding-block-end: var(--space-4);
  border-block-end: 1px solid var(--line);
}
.ledcam-filtros .field {
  margin: 0;
}
.ledcam-filtros .input {
  min-block-size: 44px;
}
.ledcam-filtros__mas {
  display: none;
}
.ledcam-resultado {
  margin: 0;
  min-block-size: 44px;
  display: flex;
  align-items: center;
  color: var(--ink-muted);
  font-size: var(--fs-14);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
@media (max-width: 760px) {
  .ledcam-catalogo {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }
  .ledcam-catalogo__categorias {
    display: none;
  }
  .ledcam-filtros {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .ledcam-filtros__busqueda {
    grid-column: 1 / -1;
  }
  .ledcam-filtros__mas {
    display: block;
    grid-column: 1 / -1;
  }
  .ledcam-filtros__mas summary {
    display: list-item;
    min-block-size: 44px;
    line-height: 44px;
    font-weight: 600;
    cursor: pointer;
  }
  .ledcam-filtros__mas summary:focus-visible {
    outline: 2px solid var(--ledcam-foco);
    outline-offset: 2px;
  }
  .ledcam-filtros__mas-cuerpo {
    display: grid;
    gap: var(--space-3);
    padding-block: var(--space-2) var(--space-3);
  }
  .ledcam-filtros__mas-cuerpo .btn {
    justify-self: start;
  }
}

/* Ficha de producto: foto | migas, título, precio y cotización; abajo a la
   derecha, origen y características. En móvil, foto, panel y detalle. */
.ledcam-ficha {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
  grid-template-areas: "foto panel" "foto detalle";
  grid-template-rows: auto 1fr;
  gap: var(--space-5) var(--space-7);
  align-items: start;
}
.ledcam-ficha__foto {
  grid-area: foto;
  margin: 0;
}
.ledcam-ficha__panel {
  grid-area: panel;
}
.ledcam-ficha__detalle {
  grid-area: detalle;
}
@media (max-width: 760px) {
  .ledcam-ficha {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "foto" "panel" "detalle";
    grid-template-rows: auto;
    gap: var(--space-4);
  }
}
.ledcam-ficha__foto[hidden] {
  display: none;
}
.ledcam-ficha__foto img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  max-block-size: 40rem;
  object-fit: contain;
  border: 1px solid var(--line);
  background: var(--paper-raised);
}
.ledcam-migas ol {
  display: flex;
  flex-wrap: wrap;
  margin: 0 0 var(--space-2);
  padding: 0;
  list-style: none;
  font-size: var(--fs-14);
}
.ledcam-migas li + li::before {
  content: "›";
  padding-inline: var(--space-2);
  color: var(--ink-muted);
}
.ledcam-migas a {
  display: inline-flex;
  align-items: center;
  min-block-size: 32px;
  color: var(--ink-muted);
}
.ledcam-migas a:hover {
  color: var(--accent);
}
.ledcam-ficha h1 {
  margin-block: 0 var(--space-4);
  font-size: var(--fs-32);
  line-height: 1.2;
}
.ledcam-ficha__precio {
  margin: 0;
  font-size: var(--fs-38);
  font-weight: 700;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.015em;
}
.ledcam-ficha__panel .ledcam-nota {
  margin-block: var(--space-2) 0;
}
.ledcam-ficha__stock {
  margin-block: var(--space-3) 0;
  font-size: var(--fs-15);
}
.ledcam-ficha__compra {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: var(--space-3);
  margin-block: var(--space-4) 0;
}
.ledcam-ficha__compra .field {
  margin: 0;
}
.ledcam-ficha__compra .input {
  inline-size: 6rem;
  min-block-size: 48px;
}
.ledcam-ficha__compra .btn {
  display: inline-flex;
  flex: 1 1 14rem;
  min-block-size: 48px;
}
.ledcam-ficha__codigo {
  margin-block: var(--space-3) 0;
  color: var(--ink-muted);
  font-size: var(--fs-13);
  font-variant-numeric: tabular-nums;
}
.ledcam-ficha__detalle h2 {
  margin-block: var(--space-4) var(--space-2);
  font-size: var(--fs-18);
  font-weight: 700;
}
.ledcam-ficha__detalle p {
  max-inline-size: 60ch;
  margin-block: 0 var(--space-3);
  line-height: 1.55;
}
.ledcam-ficha__sin {
  padding: var(--space-5);
  border: 1px solid var(--line);
  background: var(--paper-raised);
}

/* Tablas propias (características, kit sugerido, lista de cotización). */
.ledcam-tabla {
  border-collapse: collapse;
  inline-size: 100%;
  font-size: var(--fs-15);
}
.ledcam-tabla th,
.ledcam-tabla td {
  text-align: start;
  padding-block: 10px;
  padding-inline: 0 12px;
  border-block-end: 1px solid var(--line);
  vertical-align: top;
  overflow-wrap: normal;
}
.ledcam-tabla thead th {
  color: var(--ink-muted);
  font-weight: 600;
  font-size: var(--fs-13);
  white-space: nowrap;
  hyphens: none;
}
.ledcam-tabla tbody th {
  color: var(--ink-muted);
  font-weight: 400;
  inline-size: 40%;
}
.ledcam-tabla .num {
  text-align: end;
  white-space: nowrap;
}
.ledcam-tabla tfoot td {
  font-weight: 700;
  border-block-end: 0;
}
.ledcam-tabla .input {
  max-inline-size: 5rem;
  min-block-size: 44px;
}
.ledcam-tabla .btn {
  display: inline-flex;
}

/* Soluciones: una principal con foto grande; las demás en filas más compactas
   que alternan el lado de la foto. */
.ledcam-soluciones {
  display: grid;
  gap: var(--space-7);
  margin-block-start: var(--space-6);
}
.ledcam-solucion {
  display: grid;
  grid-template-columns: minmax(0, 17rem) minmax(0, 1fr);
  grid-template-areas: "foto texto";
  gap: var(--space-6);
  align-items: start;
  padding-block-start: var(--space-6);
  border-block-start: 1px solid var(--line);
}
.ledcam-solucion:nth-child(odd):not(.ledcam-solucion--principal) {
  grid-template-columns: minmax(0, 1fr) minmax(0, 17rem);
  grid-template-areas: "texto foto";
}
.ledcam-solucion--principal {
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: var(--space-7);
  padding-block-start: 0;
  border-block-start: 0;
}
.ledcam-solucion__figura {
  grid-area: foto;
  margin: 0;
}
.ledcam-solucion__foto {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  background: var(--paper-raised);
}
.ledcam-solucion--principal .ledcam-solucion__foto {
  aspect-ratio: 16 / 11;
}
.ledcam-solucion--principal h2 {
  font-size: var(--fs-32);
  line-height: 1.15;
}
.ledcam-solucion--principal p {
  font-size: var(--fs-18);
}
.ledcam-solucion__texto {
  grid-area: texto;
}
.ledcam-solucion h2 {
  margin-block: 0 var(--space-3);
  font-size: var(--fs-26);
  font-weight: 700;
}
.ledcam-solucion p {
  margin-block: 0 var(--space-4);
  max-inline-size: 62ch;
  line-height: 1.6;
}
.ledcam-solucion h3 {
  margin-block: var(--space-4) var(--space-1);
  color: var(--ink-muted);
  font-size: var(--fs-14);
  font-weight: 600;
}
.ledcam-sugeridos {
  margin: 0;
  padding: 0;
  list-style: none;
  max-inline-size: 40rem;
}
.ledcam-sugerido {
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr) auto;
  gap: var(--space-3);
  align-items: center;
  min-block-size: 44px;
  padding-block: var(--space-2);
  border-block-end: 1px solid var(--line);
  color: var(--ink);
  text-decoration: none;
}
.ledcam-sugerido img {
  display: block;
  inline-size: 4rem;
  block-size: 4rem;
  object-fit: cover;
  background: var(--paper-raised);
}
.ledcam-sugerido img[data-foto-origen="construex"] {
  object-fit: contain;
}
.ledcam-sugerido__precio {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ledcam-sugerido:hover .ledcam-sugerido__nombre {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ledcam-sugerido:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
@media (max-width: 760px) {
  .ledcam-solucion,
  .ledcam-solucion:nth-child(odd):not(.ledcam-solucion--principal),
  .ledcam-solucion--principal {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "foto" "texto";
    gap: var(--space-4);
  }
  .ledcam-solucion__foto,
  .ledcam-solucion--principal .ledcam-solucion__foto {
    aspect-ratio: 16 / 9;
  }
  .ledcam-solucion--principal h2 {
    font-size: var(--fs-26);
  }
  .ledcam-solucion--principal p {
    font-size: var(--fs-prose);
  }
  .ledcam-sugerido {
    grid-template-columns: 3rem minmax(0, 1fr) auto;
  }
  .ledcam-sugerido img {
    inline-size: 3rem;
    block-size: 3rem;
  }
}

/* Calculadora de kit solar. */
.ledcam-calc {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-5);
  align-items: start;
}
@media (max-width: 900px) {
  .ledcam-calc {
    grid-template-columns: minmax(0, 1fr);
  }
}
.ledcam-calc__panel {
  padding: var(--space-5);
  border: 1px solid var(--line);
  background: var(--paper-raised);
}
.ledcam-calc__panel h3 {
  margin-block: 0 var(--space-3);
  font-size: var(--fs-20);
  font-weight: 700;
}
.ledcam-calc fieldset {
  margin: 0 0 var(--space-4);
  padding: 0;
  border: 0;
}
.ledcam-calc legend {
  font-weight: 600;
  margin-block-end: var(--space-2);
}
.ledcam-calc__supuestos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  gap: var(--space-3);
}
.ledcam-calc__supuestos .field {
  margin: 0;
}
.ledcam-calc__fila {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 4.5rem 4.5rem;
  gap: var(--space-2);
  align-items: center;
  padding-block: var(--space-1);
  border-block-end: 1px solid var(--line);
}
/* Casilla a la izquierda y, a su lado, nombre y potencia (que baja de línea
   sin separarse de la casilla cuando falta ancho). */
.ledcam-calc__fila label {
  display: grid;
  grid-template-columns: 1.25rem minmax(0, 1fr);
  align-items: center;
  gap: 0 var(--space-2);
  min-block-size: 44px;
}
.ledcam-calc__fila label > span {
  grid-column: 2;
}
.ledcam-calc__fila label > span + span {
  margin-block-start: -2px;
}
@media (min-width: 30rem) {
  .ledcam-calc__fila label {
    display: flex;
    flex-wrap: wrap;
  }
}
.ledcam-calc__fila input[type="checkbox"] {
  inline-size: 1.25rem;
  block-size: 1.25rem;
  margin: 0;
  accent-color: var(--ledcam-naranjo-oscuro);
}
.ledcam-calc__fila .input {
  min-block-size: 44px;
  padding-inline: 8px;
  font-variant-numeric: tabular-nums;
}
.ledcam-calc__encabezado {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 4.5rem 4.5rem;
  gap: var(--space-2);
  color: var(--ink-muted);
  font-size: var(--fs-13);
}
.ledcam-calc__resultado[hidden] {
  display: none;
}
.ledcam-calc__supuestos-lista {
  margin-block: var(--space-4) var(--space-5);
  padding-inline-start: 1.25rem;
  color: var(--ink-muted);
  font-size: var(--fs-14);
}
.ledcam-calc .btn {
  display: inline-flex;
}
.ledcam-calc .ledcam-datos {
  margin-block-end: var(--space-4);
}
.ledcam-calc .ledcam-datos dd {
  font-variant-numeric: tabular-nums;
}
.ledcam-calc .ledcam-tabla td:first-child {
  min-inline-size: 10rem;
}

/* Contacto: lista de cotización y datos a la izquierda, formulario a la derecha. */
.ledcam-contacto {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
  gap: var(--space-7);
  align-items: start;
}
@media (max-width: 860px) {
  .ledcam-contacto {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-5);
  }
}
.ledcam-contacto h2 {
  margin-block: var(--space-6) var(--space-3);
  font-size: var(--fs-22);
  font-weight: 700;
}
.ledcam-contacto > div > :first-child > h2,
.ledcam-contacto .ledcam-form > h2:first-child {
  margin-block-start: 0;
}
.ledcam-datos {
  margin: 0 0 var(--space-4);
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: var(--space-2) var(--space-5);
}
.ledcam-datos dt {
  color: var(--ink-muted);
  font-size: var(--fs-15);
}
.ledcam-datos dd {
  margin: 0;
  font-size: var(--fs-15);
}
.ledcam-datos a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}
@media (max-width: 480px) {
  .ledcam-datos {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }
  .ledcam-datos dt {
    margin-block-start: var(--space-3);
    font-size: var(--fs-13);
  }
  .ledcam-datos dt:first-child {
    margin-block-start: 0;
  }
  .ledcam-datos a {
    overflow-wrap: normal;
  }
}
.ledcam-form {
  padding: var(--space-5);
  border: 1px solid var(--line);
  background: var(--paper-raised);
}
.ledcam-form textarea.input {
  min-block-size: 8rem;
  resize: vertical;
}
.ledcam-form__error {
  margin: 0;
  color: var(--err);
  font-size: var(--fs-14);
}
.ledcam-form__error:empty {
  display: none;
}
.ledcam-form .btn {
  display: inline-flex;
}
.ledcam-form__envio {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-4);
  margin-block-start: var(--space-4);
}
.ledcam-form__envio .ledcam-nota {
  margin: 0;
  flex: 1 1 12rem;
}

/* Aviso en vivo (consulta recibida, sin resultados). Borde uniforme. */
.ledcam-aviso {
  padding: var(--space-4);
  border: 1px solid var(--line-control);
  background: var(--paper-raised);
  color: var(--ink);
  margin-block: var(--space-4) 0;
}
.ledcam-aviso[hidden] {
  display: none;
}
.ledcam-aviso p {
  margin: 0;
}
.ledcam-aviso p + p {
  margin-block-start: var(--space-2);
}
.ledcam-aviso--ok {
  border-color: var(--ink);
}
.ledcam-aviso__titulo {
  font-weight: 700;
}
.ledcam-aviso:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-form > .ledcam-nota {
  margin-block: calc(var(--space-2) * -1) var(--space-4);
}
.ledcam-contacto__facebook p {
  max-inline-size: 52ch;
  margin-block: 0 var(--space-2);
}

/* Sucursal: dirección en texto seleccionable y rutas externas a Google Maps y
   Waze (contacto, nosotros, inicio y pie). Los enlaces de ruta y el botón de
   copiar comparten forma: borde gris, texto en tinta, 44 px de alto. */
.ledcam-sucursal {
  margin-block-end: var(--space-2);
}
.ledcam-sucursal > p {
  max-inline-size: 52ch;
  margin-block: 0 var(--space-4);
}
.ledcam-direccion {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin: 0 0 var(--space-4);
  font-style: normal;
}
.ledcam-direccion > .ledcam-icono {
  margin-block-start: 2px;
  color: var(--ink-muted);
}
.ledcam-direccion__calle,
.ledcam-direccion__sector {
  display: block;
  user-select: text;
}
.ledcam-direccion__calle {
  color: var(--ink);
  font-size: var(--fs-18);
  font-weight: 600;
  line-height: 1.35;
}
.ledcam-direccion__sector {
  color: var(--ink-muted);
  font-size: var(--fs-15);
}
.ledcam-direccion--simple {
  margin: 0;
}
.ledcam-direccion--simple .ledcam-direccion__calle {
  font-size: var(--fs-15);
}
.ledcam-direccion--simple .ledcam-direccion__sector {
  font-size: var(--fs-14);
}
.ledcam-rutas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.ledcam-rutas > li[hidden] {
  display: none;
}
.ledcam-ruta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-block-size: 44px;
  padding-block: 0;
  padding-inline: var(--space-4);
  border: 1px solid var(--line-control);
  background: var(--paper-raised);
  color: var(--ink);
  font: inherit;
  font-size: var(--fs-15);
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: border-color var(--t-base);
}
.ledcam-ruta:hover {
  border-color: var(--ink);
}
.ledcam-ruta:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-ruta .ledcam-icono {
  inline-size: 1.05rem;
  block-size: 1.05rem;
  color: var(--ink-muted);
}
/* «Copiar dirección» queda pegado a la dirección, como acción de texto; el
   aviso de copiado se lee a su lado. */
.ledcam-sucursal__copiar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 var(--space-3);
  margin: 0 0 var(--space-3);
  padding-inline-start: calc(1.25rem + var(--space-3));
}
.ledcam-sucursal .ledcam-direccion {
  margin-block-end: 0;
}
.ledcam-sucursal .ledcam-direccion:has(+ .ledcam-sucursal__copiar[hidden]) {
  margin-block-end: var(--space-4);
}
.ledcam-sucursal__copiar[hidden] {
  display: none;
}
.ledcam-boton-enlace {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--accent);
  font: inherit;
  font-size: var(--fs-15);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
.ledcam-boton-enlace:hover {
  text-decoration-thickness: 2px;
}
.ledcam-boton-enlace:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-sucursal__copiar .ledcam-nota {
  margin: 0;
}
/* En la lista de datos de Nosotros, las rutas mantienen su forma de botón
   (sin el subrayado naranjo de los enlaces de .ledcam-datos) y su rótulo se
   alinea con el centro del botón. */
.ledcam-datos .ledcam-ruta {
  color: var(--ink);
  text-decoration: none;
}
.ledcam-datos dt:has(+ dd > .ledcam-rutas) {
  align-self: center;
}
@media (max-width: 480px) {
  .ledcam-sucursal .ledcam-rutas {
    flex-direction: column;
    align-items: stretch;
  }
  .ledcam-sucursal .ledcam-ruta {
    display: flex;
    inline-size: 100%;
    justify-content: space-between;
  }
}

/* Lista de cotización. Bajo 600 px cada fila se dibuja como bloque. */
.ledcam-cotizacion {
  margin-block-end: var(--space-4);
}
.ledcam-cotizacion__vacio > p:first-child {
  margin-block: 0 var(--space-2);
  color: var(--ink-muted);
}
.ledcam-cotizacion__vacio .ledcam-enlace {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
}
.ledcam-cotizacion__acciones {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-block-start: var(--space-3);
}
.ledcam-cotizacion__acciones:has(> [hidden]:only-child) {
  display: none;
}
@media (max-width: 600px) {
  .ledcam-cotizacion .ledcam-tabla thead {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }
  .ledcam-cotizacion .ledcam-tabla tbody tr {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: var(--space-2) var(--space-3);
    align-items: center;
    padding-block: var(--space-3);
    border-block-end: 1px solid var(--line);
  }
  .ledcam-cotizacion .ledcam-tabla tbody td {
    display: block;
    padding: 0;
    border: 0;
  }
  .ledcam-cotizacion .ledcam-tabla tbody td:first-child {
    grid-column: 1 / -1;
  }
  .ledcam-cotizacion .ledcam-tabla tbody td[data-campo="unitario"] {
    display: none;
  }
  .ledcam-cotizacion .ledcam-tabla tfoot tr {
    display: flex;
    justify-content: space-between;
    padding-block: var(--space-3);
  }
  .ledcam-cotizacion .ledcam-tabla tfoot td {
    padding: 0;
  }
  .ledcam-cotizacion .ledcam-tabla tfoot td:empty {
    display: none;
  }
}

/* Inicio · cierre: foto de la sala y la llamada a cotizar. */
.ledcam-cierre {
  display: grid;
  grid-template-columns: minmax(0, 20rem) minmax(0, 1fr);
  gap: var(--space-6);
  align-items: center;
  padding-block: var(--space-6);
  border-block: 1px solid var(--line);
}
.ledcam-cierre img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 1;
  object-fit: cover;
}
.ledcam-cierre h2 {
  margin-block: 0 var(--space-3);
  font-size: var(--fs-28);
  font-weight: 700;
}
.ledcam-cierre p {
  max-inline-size: 60ch;
  margin-block: 0 var(--space-3);
  line-height: 1.6;
}
.ledcam-cierre .ledcam-visita {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-block-end: var(--space-5);
}
.ledcam-visita > .ledcam-icono {
  color: var(--ink-muted);
}
.ledcam-visita .ledcam-enlace {
  min-block-size: 44px;
  vertical-align: middle;
}
@media (max-width: 760px) {
  .ledcam-cierre {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-4);
  }
  .ledcam-cierre img {
    max-inline-size: 20rem;
  }
}

/* Nosotros: texto y una foto grande de la sala; galería; datos en dos columnas. */
.ledcam-nosotros {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap: var(--space-7);
  align-items: center;
}
.ledcam-nosotros__texto h1 {
  margin-block: 0 var(--space-4);
  font-size: clamp(2rem, 3.4vw, 2.75rem);
  line-height: 1.1;
}
.ledcam-nosotros__texto p {
  max-inline-size: 60ch;
  margin-block: 0 var(--space-4);
  font-size: var(--fs-prose);
  line-height: 1.6;
}
.ledcam-nosotros__texto p:first-of-type {
  font-size: var(--fs-20);
  line-height: 1.5;
}
.ledcam-nosotros__foto {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 1;
  object-fit: cover;
}
.ledcam-nosotros__datos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-7);
  padding-block-start: var(--space-6);
  border-block-start: 1px solid var(--line);
}
.ledcam-nosotros__cta {
  align-self: start;
  padding: var(--space-6);
  border: 1px solid var(--line);
  background: var(--paper-raised);
}
.ledcam-nosotros__cta p {
  max-inline-size: 48ch;
  margin-block: 0 var(--space-5);
  line-height: 1.6;
}
.ledcam-nosotros__cta .btn {
  display: inline-flex;
}
.ledcam-nosotros__datos h2 {
  margin-block: 0 var(--space-4);
  font-size: var(--fs-24);
  font-weight: 700;
}
@media (max-width: 760px) {
  .ledcam-nosotros,
  .ledcam-nosotros__datos {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-5);
  }
  .ledcam-nosotros__texto p:first-of-type {
    font-size: var(--fs-18);
  }
  .ledcam-nosotros__foto {
    aspect-ratio: 4 / 3;
  }
}
.ledcam-galeria {
  margin: 0;
}
.ledcam-galeria__fotos {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-2);
}
.ledcam-galeria img {
  display: block;
  inline-size: 100%;
  max-inline-size: 412px;
  block-size: auto;
  aspect-ratio: 1;
  object-fit: cover;
}
.ledcam-galeria figcaption {
  margin-block-start: var(--space-2);
  color: var(--ink-muted);
  font-size: var(--fs-14);
}
@media (max-width: 480px) {
  .ledcam-galeria__fotos {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.ledcam-prosa .ledcam-datos {
  max-inline-size: 52rem;
}

/* Pie: logo corto (28 px, mínimo de NOTA.md), columnas compactas y enlace
   externo con ícono. */
.ledcam-pie__logo {
  display: block;
  inline-size: auto;
  block-size: 28px;
  margin-block-end: var(--space-3);
}
.gr-footer__col li {
  margin-block-end: 0;
}
.gr-footer__col li > span {
  display: block;
  padding-block: var(--space-1);
}
.ledcam-pie__direccion {
  margin-block: 0 var(--space-1);
  font-style: normal;
  font-size: var(--fs-13);
  line-height: 1.5;
  color: var(--ink);
}
.ledcam-pie__direccion > span {
  display: block;
}
.ledcam-pie__direccion > span + span {
  color: var(--ink-muted);
}
.ledcam-pie__externo .ledcam-icono {
  inline-size: 1rem;
  block-size: 1rem;
}
.ledcam-pie__externo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ledcam-pie__externo:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}

/* Créditos de fotos: tabla de cuatro columnas; bajo 600 px, una ficha por
   foto con rótulo y valor en dos columnas. */
.ledcam-creditos th[scope="row"] {
  color: var(--ink);
  font-weight: 600;
  inline-size: auto;
}
.ledcam-creditos a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ledcam-creditos th[scope="row"] a {
  color: var(--ink);
  text-decoration: none;
}
.ledcam-creditos th[scope="row"] a:hover {
  text-decoration: underline;
}
.ledcam-creditos a:hover {
  text-decoration-thickness: 2px;
}
.ledcam-creditos a:focus-visible {
  outline: 2px solid var(--ledcam-foco);
  outline-offset: 2px;
}
.ledcam-creditos td,
.ledcam-creditos th {
  vertical-align: baseline;
}
.ledcam-creditos__rotulo {
  display: none;
}
@media (max-width: 600px) {
  .ledcam-creditos thead {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }
  .ledcam-creditos tbody tr {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: var(--space-1) var(--space-4);
    padding-block: var(--space-4);
    border-block-end: 1px solid var(--line);
  }
  .ledcam-creditos tbody th,
  .ledcam-creditos tbody td {
    display: contents;
    padding: 0;
    border: 0;
  }
  .ledcam-creditos tbody th a {
    grid-column: 1 / -1;
    margin-block-end: var(--space-1);
  }
  .ledcam-creditos__rotulo {
    display: block;
    color: var(--ink-muted);
    font-size: var(--fs-14);
  }
}

/* Utilidades. */
.ledcam-oculto {
  display: none;
}
.ledcam-nota {
  color: var(--ink-muted);
  font-size: var(--fs-14);
}

/* Movimiento reducido: nada se mueve. */
@media (prefers-reduced-motion: reduce) {
  .ledcam-producto,
  .ledcam-ruta {
    transition: none;
  }
}

/* A 390 px la tabla del kit sugerido medía 452 px y hacía que la página entera se corriera de lado
   (medido con la cuenta QA el 31-oct-2026 en /soluciones/). En pantalla angosta los encabezados y las
   cifras pueden ocupar dos líneas: es preferible a que el teléfono tenga que desplazarse en horizontal. */
@media (max-width: 520px) {
  .ledcam-tabla thead th,
  .ledcam-tabla .num {
    white-space: normal;
  }
  .ledcam-tabla th,
  .ledcam-tabla td {
    padding-inline: 0 8px;
    font-size: var(--fs-13);
  }
  .ledcam-tabla tbody th {
    inline-size: auto;
  }
  /* Red de seguridad: si aun asi una tabla no cabe (nombres de producto largos), se desplaza ella sola
     dentro de su caja y la pagina no se mueve. `display: block` deja el recuadro desplazable y las
     columnas siguen alineadas, porque thead y tbody arman igual la tabla anonima. */
  .ledcam-tabla {
    display: block;
    overflow-x: auto;
    max-inline-size: 100%;
  }
}
