/* ==========================================================================
   IGM — tokens y componentes del catálogo
   Valores exactos de TOKENS.md. Nada de valores sueltos por widget.

   IMPORTANTE: la tipografía base y el reset viven bajo `body.igm-v2`, que sólo
   se aplica en fichas, archivos de producto y páginas marcadas con igm_v2.
   Así el sitio viejo se ve idéntico mientras se construye el rediseño.
   ========================================================================== */

@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  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;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  --igm-navy: #0F2C47;
  --igm-teal: #2CA0B8;
  --igm-teal-light: #5FC6D8;
  --igm-link: #1E8299;
  --igm-link-hover: #166b80;
  --igm-ink: #12222F;
  --igm-body: #3C4C58;
  --igm-muted: #5B6B78;
  --igm-faint: #8A98A4;
  --igm-faintest: #A7B2BC;
  --igm-mist: #F5F5F7;
  --igm-mist-2: #EFF2F5;
  --igm-wash: #F2F8F9;
  --igm-hover: #F0F7F9;
  --igm-mint: #E8F6F5;
  --igm-line: rgba(15, 44, 71, .10);
  --igm-border: rgba(15, 44, 71, .16);
  --igm-border-hover: rgba(15, 44, 71, .34);
  --igm-input: rgba(15, 44, 71, .18);
  --igm-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --igm-min: 258px;
}

/* --- base, sólo dentro del rediseño ------------------------------------- */

body.igm-v2 {
  font-family: Archivo, system-ui, sans-serif;
  color: var(--igm-ink);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
body.igm-v2 h1, body.igm-v2 h2, body.igm-v2 h3, body.igm-v2 h4 {
  font-family: Archivo, system-ui, sans-serif;
  letter-spacing: -.03em;
  line-height: 1.05;
  margin: 0;
}
body.igm-v2 p { text-wrap: pretty; }
body.igm-v2 a { color: var(--igm-link); text-decoration: none; }
body.igm-v2 a:hover { color: var(--igm-link-hover); }
body.igm-v2 ::selection { background: rgba(44, 160, 184, .25); }
body.igm-v2 :focus-visible { outline: 2px solid var(--igm-teal); outline-offset: 3px; }

/* Escala tipográfica: dos tamaños fluidos, el resto fijos. */
.igm-h1 { font-size: clamp(40px, 5.2vw, 72px); max-width: 20ch; }
.igm-h1-int { font-size: clamp(34px, 4.4vw, 56px); }
.igm-h2 { font-size: clamp(30px, 3.5vw, 46px); max-width: 22ch; }
.igm-h2-cta { font-size: clamp(32px, 4vw, 54px); }
.igm-lead { font-size: clamp(18px, 1.9vw, 21px); color: var(--igm-body); max-width: 50ch; }
.igm-intro { font-size: 18px; color: var(--igm-body); max-width: 52ch; }
.igm-eyebrow {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-navy);
}
.igm-wrap { width: min(1180px, 100% - 48px); margin-inline: auto; }
.igm-eyebrow--claro { color: var(--igm-teal-light); }
.igm-eyebrow p, .igm-eyebrow--claro p { margin: 0; }
.igm-bajada-oscura p {
  margin: 0; font-size: 17px; color: rgba(255, 255, 255, .7); max-width: 56ch;
}
.igm-bajada-oscura--cta p {
  font-size: 18px; color: rgba(255, 255, 255, .72); margin-inline: auto;
}
.igm-post__t {
  font-size: 21px; font-weight: 600; letter-spacing: -.02em;
  color: var(--igm-navy); margin-bottom: 8px;
}
.igm-post__c p { font-size: 16px; line-height: 1.6; color: var(--igm-body); margin: 0; }

/* Secciones centradas: el centrado va por texto, nunca por align-items, que
   dejaria a cada hijo con el ancho de su contenido. */
#igm-centro-f-hero, #igm-centro-f-tag, #igm-centro-f-cta { text-align: center; }
#igm-centro-f-hero .igm-h1-ficha,
#igm-centro-f-hero .igm-bajada { margin-inline: auto; }

/* La banda de cifras del hero: cuatro celdas separadas por una línea arriba. */
.igm-cifras--banda .igm-cifras {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  gap: 0; border-top: 1px solid rgba(15, 44, 71, .12);
}
.igm-cifras--banda .igm-cifras__item {
  padding: 30px 20px; align-items: center; gap: 6px;
}
.igm-cifras--banda dd { font-size: clamp(28px, 3vw, 40px); }
.igm-galeria--hero .igm-galeria__tira { justify-content: center; }
.igm-intro--sec p { color: var(--igm-muted); font-size: 16px; }
.igm-cifras--indice {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 0; border-top: 1px solid rgba(15, 44, 71, .12);
  border-bottom: 1px solid rgba(15, 44, 71, .12);
}
.igm-cifras--indice .igm-cifras__item { padding: 28px 20px; gap: 4px; }
.igm-sec { padding-block: clamp(72px, 8vw, 110px); }

/* --- caja de foto de producto -------------------------------------------
   mix-blend-mode es lo que hace desaparecer el fondo blanco de la foto sobre
   el gris. Sin eso se ve el recuadro blanco de cada imagen.
   --------------------------------------------------------------------- */

.igm-photo {
  aspect-ratio: 4 / 3;
  background: var(--igm-mist);
  padding: 18px;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.igm-photo img {
  width: 100%; height: 100%;
  object-fit: contain;
  mix-blend-mode: multiply;
  display: block;
}
.igm-photo--vacia { background: var(--igm-mist); padding: 18px; }
.igm-photo--vacia .igm-photo__code {
  display: grid; place-items: center;
  width: 100%; height: 100%;
  background: var(--igm-mist-2); border-radius: 10px;
  font-family: var(--igm-mono); font-size: 13px;
  letter-spacing: .06em; color: #9AA7B2;
  text-align: center; padding: 8px;
}

/* --- grilla y tarjetas --------------------------------------------------- */

.igm-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(var(--igm-min), 100%), 1fr));
  gap: 22px;
}

.igm-card {
  display: flex; flex-direction: column;
  background: #fff;
  border: 1px solid var(--igm-border);
  border-radius: 20px;
  overflow: hidden;
  color: var(--igm-ink);
  transition: border-color .15s;
}
.igm-card:hover { border-color: var(--igm-border-hover); color: var(--igm-ink); }
.igm-card--pendiente { opacity: .5; }
.igm-card__cuerpo {
  padding: 20px 22px 22px;
  display: flex; flex-direction: column; gap: 6px; flex: 1;
}
.igm-card__code {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-teal);
}
.igm-card__nombre { font-size: 20px; color: var(--igm-navy); }
.igm-card__linea { font-size: 14px; color: var(--igm-muted); margin: 0; }
.igm-card__cta {
  margin-top: auto; padding-top: 16px;
  font-size: 13px; font-weight: 600; color: var(--igm-teal);
}
.igm-card--familia { padding: 28px 26px 26px; min-height: 230px; }
.igm-card--familia .igm-card__nombre { font-size: 23px; margin-bottom: 12px; }
.igm-card--familia .igm-card__linea { font-size: 15px; }
.igm-card--familia .igm-card__cta { padding-top: 20px; }
.igm-card__num {
  font-size: 11px; font-weight: 600; letter-spacing: .12em;
  color: var(--igm-teal); margin-bottom: 16px;
}

/* --- proceso productivo (sobre fondo oscuro) ----------------------------- */

.igm-proceso__paso {
  background: rgba(255, 255, 255, .07);
  border-radius: 22px;
  padding: 28px 24px 30px;
  display: flex; flex-direction: column; gap: 12px;
  min-height: 230px;
}
.igm-proceso__num { font-size: 12px; font-weight: 600; letter-spacing: .1em; color: var(--igm-teal-light); }
.igm-proceso__paso h3 { font-size: 21px; color: #fff; }
.igm-proceso__equipos { margin-top: auto; display: grid; gap: 6px; }
.igm-proceso__equipos a { font-size: 14px; color: rgba(255, 255, 255, .72); }
.igm-proceso__equipos a:hover { color: #fff; }

/* --- migas de pan -------------------------------------------------------- */

.igm-breadcrumb ol {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 8px; font-size: 13.5px; color: var(--igm-muted);
}
.igm-breadcrumb li + li::before { content: '/'; margin-right: 8px; color: var(--igm-faintest); }
.igm-breadcrumb a { color: var(--igm-muted); }
.igm-breadcrumb a:hover { color: var(--igm-link-hover); }
.igm-breadcrumb [aria-current] { color: var(--igm-navy); font-weight: 600; }
.igm-breadcrumb--centrado ol { justify-content: center; font-size: 12px; }

/* --- galería ------------------------------------------------------------- */

.igm-galeria__principal { border-radius: 26px; }
.igm-galeria__tira { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }

/* Astra pinta `button:hover` y `button:focus` con fondo teal, y esos selectores
   (0,1,1) le ganan a una clase sola (0,1,0). Sobre una miniatura con
   mix-blend-mode:multiply el resultado es que la foto se oscurece — y como el
   navegador deja el foco puesto al hacer click, la miniatura elegida quedaría
   teal de forma permanente. La clase repetida sube la especificidad a (0,3,0)
   sin recurrir a !important ni depender del orden de carga de las hojas. */
.igm-galeria__thumb.igm-galeria__thumb,
.igm-galeria__thumb.igm-galeria__thumb:hover,
.igm-galeria__thumb.igm-galeria__thumb:focus,
.igm-galeria__thumb.igm-galeria__thumb:active {
  width: 80px; height: 80px; padding: 6px;
  border: 1px solid var(--igm-border); border-radius: 12px;
  background: var(--igm-mist); color: inherit; cursor: pointer;
  transition: border-color .15s;
}
.igm-galeria__thumb.igm-galeria__thumb:hover { border-color: var(--igm-border-hover); }
.igm-galeria__thumb.igm-galeria__thumb.is-activa { border-color: var(--igm-teal); }
.igm-galeria__thumb img { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; }

/* --- cifras clave -------------------------------------------------------- */

.igm-cifras { display: flex; flex-wrap: wrap; gap: 28px 40px; margin: 0; }
.igm-cifras__item { display: flex; flex-direction: column; gap: 4px; }
.igm-cifras dt {
  font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--igm-muted); order: 2;
}
.igm-cifras dd {
  margin: 0; font-size: 34px; font-weight: 700;
  letter-spacing: -.035em; color: var(--igm-navy);
  font-variant-numeric: tabular-nums; order: 1;
}

/* --- textos de la ficha -------------------------------------------------- */

.igm-h1-ficha { font-size: clamp(42px, 5.4vw, 76px); color: var(--igm-navy); margin: 0 0 18px; }
.igm-bajada {
  font-size: clamp(21px, 2.1vw, 28px); font-weight: 500; letter-spacing: -.02em;
  line-height: 1.25; color: var(--igm-navy); max-width: 20ch; margin: 0 auto 10px;
}
.igm-tagline {
  font-size: clamp(26px, 3.1vw, 42px); font-weight: 600; letter-spacing: -.028em;
  line-height: 1.18; color: var(--igm-navy); max-width: 24ch; margin: 0 auto;
  text-wrap: pretty;
}

/* --- destacados: tarjetas numeradas -------------------------------------- */

.igm-destacados {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(var(--igm-min, 400px), 100%), 1fr));
  gap: 20px;
}
.igm-destacado {
  background: #fff; border-radius: 22px; padding: 36px 34px;
  display: flex; gap: 20px; align-items: flex-start;
}
.igm-destacado__n {
  font-size: 13px; font-weight: 600; color: var(--igm-teal);
  padding-top: 6px; flex: none;
}
.igm-destacado p {
  font-size: 20px; font-weight: 500; letter-spacing: -.015em;
  line-height: 1.35; color: var(--igm-navy); margin: 0;
}

/* --- ventajas: lista con tilde ------------------------------------------- */

.igm-ventajas { list-style: none; margin: 0; padding: 0; }
.igm-ventajas li {
  display: flex; gap: 18px; align-items: flex-start;
  padding: 20px 0; border-bottom: 1px solid var(--igm-line);
  font-size: 17px; line-height: 1.55; color: var(--igm-ink);
}
.igm-ventajas .igm-tilde { flex: none; margin-top: 5px; }

/* --- etapas que cubre el equipo (sobre fondo oscuro) --------------------- */

.igm-etapas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  gap: 18px;
}
.igm-etapa {
  border-radius: 22px; padding: 28px 26px 30px;
  display: flex; flex-direction: column; gap: 12px; min-height: 180px;
  background: rgba(255, 255, 255, .07); color: rgba(255, 255, 255, .6);
}
.igm-etapa.is-activa { background: var(--igm-teal); color: #fff; }
.igm-etapa__n { font-size: 12px; font-weight: 600; letter-spacing: .1em; opacity: .55; }
.igm-etapa__nombre {
  font-size: clamp(20px, 2vw, 26px); font-weight: 600;
  letter-spacing: -.02em; line-height: 1.15;
}
.igm-etapa__marca {
  margin-top: auto; font-size: 12px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase;
}

/* --- listas y bloques ---------------------------------------------------- */

.igm-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.igm-lista--col2 { grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 14px 40px; }
.igm-lista li {
  position: relative; padding-left: 22px;
  font-size: 16px; color: var(--igm-body); text-wrap: pretty;
}
.igm-lista li::before {
  content: ''; position: absolute; left: 0; top: .62em;
  width: 7px; height: 7px; border-radius: 50%; background: var(--igm-teal);
}

.igm-bloques {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(var(--igm-min, 300px), 100%), 1fr));
  gap: 20px;
}
.igm-bloques__item h3 { color: var(--igm-navy); }
.igm-bloques__item p { margin: 0; }

/* Aplicaciones: tarjeta gris sin borde. */
.igm-bloques--gris .igm-bloques__item {
  background: var(--igm-mist); border-radius: 22px; padding: 36px 32px 38px;
}
.igm-bloques--gris .igm-bloques__item h3 {
  font-size: 22px; font-weight: 600; letter-spacing: -.02em; margin-bottom: 12px;
}
.igm-bloques--gris .igm-bloques__item p {
  font-size: 16px; line-height: 1.6; color: var(--igm-body);
}

/* Argumentos: bloques apilados, sin caja. */
.igm-bloques--apilado { grid-template-columns: 1fr; gap: 26px; }
.igm-bloques--apilado .igm-bloques__item h3 {
  font-size: 19px; font-weight: 600; letter-spacing: -.015em; margin-bottom: 6px;
}
.igm-bloques--apilado .igm-bloques__item p {
  font-size: 15px; color: var(--igm-muted); line-height: 1.55;
}

/* Criterios de elección y usos generales: tarjeta con borde. */
.igm-bloques--borde .igm-bloques__item {
  border: 1px solid var(--igm-border); border-radius: 20px;
  padding: 26px 24px 28px; transition: border-color .15s;
}
.igm-bloques--borde .igm-bloques__item:hover { border-color: var(--igm-border-hover); }
.igm-bloques--borde .igm-bloques__item h3 { font-size: 20px; margin-bottom: 10px; }
.igm-bloques--borde .igm-bloques__item p { font-size: 15px; color: var(--igm-muted); }

/* --- tablas de modelos --------------------------------------------------- */

.igm-modelos { display: grid; gap: 32px; }
.igm-modelos--grupos {
  grid-template-columns: repeat(auto-fit, minmax(min(400px, 100%), 1fr));
  gap: 20px;
  align-items: start;
}

/* Tabla de pares etiqueta/valor: no se ve como una tabla sino como una ficha
   blanca con filas separadas por una línea fina. Sigue siendo un <table>
   porque el dato es tabular y así lo lee un lector de pantalla. */
.igm-tabla {
  background: #fff; border-radius: 22px; padding: 12px 34px;
  width: 100%; font-variant-numeric: tabular-nums;
  display: block; border-collapse: collapse;
}
.igm-tabla thead, .igm-tabla tbody { display: block; }
.igm-tabla thead th {
  display: block; text-align: left;
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-navy);
  padding: 16px 0 10px;
}
.igm-tabla tbody tr {
  display: grid; grid-template-columns: minmax(180px, 34%) 1fr; gap: 28px;
  padding: 19px 0; border-bottom: 1px solid rgba(15, 44, 71, .09);
}
.igm-tabla tbody tr:last-child { border-bottom: 0; }
.igm-tabla tbody th {
  text-align: left; font-weight: 400; font-size: 15px;
  color: var(--igm-muted); padding: 0;
}
.igm-tabla tbody td { font-size: 16px; color: var(--igm-ink); padding: 0; }

/* La comparativa sí es una tabla de varias columnas y se ve como tal. */
.igm-tabla--comparativa {
  display: table; padding: 0; background: #fff;
  border-radius: 22px; overflow: hidden;
}
.igm-tabla--comparativa thead, .igm-tabla--comparativa tbody { display: table-row-group; }
.igm-tabla--comparativa thead th {
  display: table-cell; background: var(--igm-navy); color: #fff;
  font-size: 13px; letter-spacing: .04em; text-transform: none;
  padding: 14px 18px; white-space: nowrap;
}
.igm-tabla--comparativa tbody tr { display: table-row; }
.igm-tabla--comparativa tbody th,
.igm-tabla--comparativa tbody td {
  display: table-cell; padding: 14px 18px; font-size: 15px;
  border-bottom: 1px solid rgba(15, 44, 71, .09);
}
.igm-tabla--comparativa tbody th { color: var(--igm-navy); font-weight: 600; }

.igm-modelos__nota { font-size: 14px; color: var(--igm-muted); margin: 0; }
.igm-modelos__scroll { overflow-x: auto; }

/* --- preguntas frecuentes ------------------------------------------------ */

.igm-faqs { display: grid; }
.igm-faq { border-bottom: 1px solid var(--igm-line); }
.igm-faq:first-child { border-top: 1px solid var(--igm-line); }
.igm-faq summary {
  list-style: none; cursor: pointer;
  padding: 24px 44px 24px 0; position: relative;
  font-size: 21px; font-weight: 600; letter-spacing: -.02em; color: var(--igm-navy);
}
.igm-faq summary::-webkit-details-marker { display: none; }
.igm-faq summary::after {
  content: '+'; position: absolute; right: 8px; top: 50%;
  transform: translateY(-50%); font-size: 22px; font-weight: 400;
  color: var(--igm-teal); transition: transform .16s ease-out;
}
.igm-faq[open] summary::after { content: '−'; }
.igm-faq__r { padding: 0 44px 24px 0; }
.igm-faq__r p { margin: 0; font-size: 16px; color: var(--igm-body); }

.igm-actualizada { font-size: 13px; color: var(--igm-faint); margin: 0; }

/* --- familia ------------------------------------------------------------- */

.igm-familia-dato--h1 { font-size: clamp(34px, 4.4vw, 56px); color: var(--igm-navy); }
.igm-familia-dato--blurb { font-size: 19px; color: var(--igm-body); max-width: 52ch; }
.igm-familia-dato--synonyms { font-size: 15px; color: var(--igm-muted); max-width: 60ch; }

/* --- bloques de familia del índice del catálogo -------------------------- */

.igm-fam {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: clamp(32px, 5vw, 72px);
  align-items: start;
  padding-block: clamp(56px, 6vw, 84px);
  border-top: 1px solid var(--igm-line);
}
.igm-fam:first-child { border-top: 0; padding-top: 0; }
.igm-fam__n {
  font-size: 12px; font-weight: 600; letter-spacing: .12em;
  color: var(--igm-teal); margin-bottom: 14px;
}
.igm-fam__p { font-size: 17px; line-height: 1.65; color: var(--igm-body); margin: 20px 0 0; max-width: 54ch; }
.igm-fam__sin { font-size: 15px; color: var(--igm-muted); margin: 14px 0 0; }
.igm-fam__cta { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-top: 26px; }
.igm-fam__count { font-size: 14px; color: var(--igm-muted); }
.igm-fam__lista { display: grid; gap: 22px; }
.igm-fam__foto { border-radius: 20px; display: grid; place-items: center; }
.igm-fam__equipos { display: grid; }
.igm-fam__equipos a {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  padding: 13px 10px 13px 0; border-bottom: 1px solid var(--igm-line);
  font-size: 16px; font-weight: 500; color: var(--igm-ink); transition: color .14s;
}
.igm-fam__equipos a:hover { color: var(--igm-link); }
.igm-fam__code { font-size: 12.5px; font-weight: 400; color: #6B7A87; white-space: nowrap; }

/* Botón fuera de un widget de botón (lo dibuja un widget propio). */
.igm-boton {
  display: inline-block; border-radius: 980px; padding: 15px 32px;
  font-size: 13px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; white-space: nowrap;
}
.igm-boton--oscuro, .igm-boton--oscuro:hover { background: var(--igm-navy); color: #fff; }
.igm-boton--teal, .igm-boton--teal:hover { background: var(--igm-teal); color: #fff; }

/* --- tabla de dimensionamiento (sobre fondo oscuro) ---------------------- */

.igm-dim { width: 100%; border-collapse: collapse; color: #fff; }
.igm-dim th, .igm-dim td { text-align: left; vertical-align: top; padding: 18px 20px 18px 0; }
.igm-dim thead th {
  font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: var(--igm-teal-light); border-bottom: 1px solid rgba(255, 255, 255, .18);
  padding-bottom: 14px;
}
.igm-dim tbody tr { border-bottom: 1px solid rgba(255, 255, 255, .12); }
.igm-dim tbody th { font-size: 17px; font-weight: 600; white-space: nowrap; }
.igm-dim tbody td { font-size: 15px; line-height: 1.55; color: rgba(255, 255, 255, .74); }
.igm-dim__caja { overflow-x: auto; }
.igm-dim__nota { font-size: 15px; color: rgba(255, 255, 255, .6); margin: 26px 0 0; }
.igm-dim__nota a { color: var(--igm-teal-light); }

@media (max-width: 767px) {
  .igm-dim { min-width: 640px; }
}

/* --- criterios de elección (categoría) ----------------------------------- */

.igm-criterios__h2 { max-width: 26ch; margin-bottom: 44px; }
.igm-criterios {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: 20px;
}
.igm-criterio { background: #fff; border-radius: 20px; padding: 30px 28px 32px; }
.igm-criterio__n {
  font-size: 12px; font-weight: 600; letter-spacing: .1em;
  color: var(--igm-teal); margin-bottom: 14px;
}
.igm-criterio h3 {
  font-size: 20px; color: var(--igm-navy); margin: 0 0 10px;
  letter-spacing: -.02em; line-height: 1.2;
}
.igm-criterio p { font-size: 15px; color: var(--igm-body); margin: 0; }

/* --- comparativa de la familia ------------------------------------------- */

.igm-comparativa { display: grid; }
.igm-comparativa__fila {
  display: grid;
  grid-template-columns: minmax(200px, 1.4fr) repeat(3, minmax(0, 1fr));
  gap: 24px; align-items: center;
  padding: 22px 0; border-bottom: 1px solid var(--igm-line);
}
.igm-comparativa__fila:first-child { border-top: 1px solid var(--igm-line); }
.igm-comparativa__equipo { display: flex; flex-direction: column; gap: 3px; }
.igm-comparativa__equipo a { font-size: 17px; font-weight: 600; color: var(--igm-navy); }
.igm-comparativa__equipo a:hover { color: var(--igm-link-hover); }
.igm-comparativa__equipo span { font-size: 12px; color: var(--igm-muted); }
.igm-comparativa__celda { display: flex; flex-direction: column; gap: 4px; }
.igm-comparativa__lbl {
  font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: #6B7A87;
}
.igm-comparativa__val {
  font-size: 15px; font-weight: 500; color: var(--igm-ink);
  font-variant-numeric: tabular-nums;
}
.igm-comparativa__nota { font-size: 13px; color: var(--igm-muted); margin: 20px 0 0; }

@media (max-width: 767px) {
  .igm-comparativa__fila { grid-template-columns: 1fr 1fr; gap: 14px; }
  .igm-comparativa__equipo { grid-column: 1 / -1; }
}

/* --- filtros del catálogo ------------------------------------------------ */

.igm-filtros { display: grid; gap: 14px; margin-bottom: 32px; }
.igm-filtros__grupo { display: flex; flex-wrap: wrap; gap: 8px; }
/* Misma defensa que en las miniaturas: `button:hover` de Astra le gana a una
   clase sola y pintaría el chip de teal con el texto encima. */
.igm-chip.igm-chip,
.igm-chip.igm-chip:hover,
.igm-chip.igm-chip:focus,
.igm-chip.igm-chip:active {
  border: 1px solid var(--igm-border); border-radius: 980px;
  background: #fff; color: var(--igm-ink);
  padding: 9px 18px; font-size: 13.5px; cursor: pointer;
  transition: border-color .15s, background-color .12s, color .14s;
}
.igm-chip.igm-chip:hover { border-color: var(--igm-border-hover); }
.igm-chip.igm-chip.is-activa,
.igm-chip.igm-chip.is-activa:hover,
.igm-chip.igm-chip.is-activa:focus {
  background: var(--igm-navy); border-color: var(--igm-navy); color: #fff;
}
.igm-filtros__conteo { font-size: 13px; color: var(--igm-muted); margin: 0; }
.igm-card[hidden] { display: none; }

/* --- buscador ------------------------------------------------------------ */

.igm-buscador { position: relative; }
.igm-buscador input {
  width: 100%; border: 1px solid var(--igm-input); border-radius: 980px;
  padding: 15px 22px; font-size: 15px; background: #fff;
  color: var(--igm-ink); font-family: inherit;
}
.igm-buscador--chico input { padding: 11px 18px; font-size: 14px; }
.igm-buscador input::placeholder { color: var(--igm-faint); }
.igm-buscador__panel {
  position: absolute; z-index: 60; top: calc(100% + 8px); left: 0; right: 0;
  background: #fff; border: 1px solid var(--igm-line); border-radius: 16px;
  box-shadow: 0 26px 50px -30px rgba(15, 44, 71, .5);
  overflow: hidden; padding: 6px;
}
.igm-buscador__panel a {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 16px; padding: 11px 14px; border-radius: 10px; color: var(--igm-ink);
}
.igm-buscador__panel a:hover, .igm-buscador__panel a.is-activa {
  background: var(--igm-hover); color: var(--igm-ink);
}
/* Los dos son ítems flex y su mínimo automático es el min-content, que con
   `nowrap` es la cadena entera: sin min-width:0 la fila no puede encoger y el
   texto se corta contra el overflow del panel. Con esto, si falta lugar el
   corte es con puntos suspensivos. */
.igm-buscador__nombre {
  font-size: 15px; font-weight: 500;
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.igm-buscador__meta {
  font-size: 12px; color: var(--igm-muted); white-space: nowrap;
  min-width: 0; overflow: hidden; text-overflow: ellipsis; flex-shrink: 0;
}
.igm-buscador__vacio { padding: 13px 16px; font-size: 13px; color: var(--igm-muted); }

/* --- header global ------------------------------------------------------- */

.igm-logo img { height: 42px; width: auto; display: block; }

/* Elementor le da a cada contenedor hijo `--width: 100%`, así que los dos
   bloques del header se repartían la fila mitad y mitad y el CTA quedaba
   cortado. Los dos tienen que medir lo que mide su contenido, y el
   `space-between` del padre se encarga de separarlos. */
#igm-header .e-con-inner > .e-con {
  width: auto;
  flex: 0 0 auto;
}

/* El ítem activo lleva un subrayado interno, no un borde: no mueve el layout. */

/* Menú desplegable de móvil. Astra pinta `button:hover` con su color, y el
   disparador de Elementor es un <div role="button"> con clases propias: se
   fuerza el fondo transparente para que no aparezca un cuadro teal. */
.igm-nav .elementor-menu-toggle,
.igm-nav .elementor-menu-toggle:hover,
/* Área táctil de 50 px: el control de Elementor para el padding del
   desplegable no llega hasta acá, y con su valor por defecto los ítems quedan
   en 32 px, por debajo del mínimo cómodo para el pulgar. */

/* --- botones del sistema ------------------------------------------------- */
/* Astra pinta los botones con su propio color y su :hover gana por
   especificidad, así que se repite la clase igual que en los chips. */
.igm-btn.igm-btn .elementor-button,
.igm-btn.igm-btn .elementor-button:hover,
.igm-btn.igm-btn .elementor-button:focus {
  border-radius: 980px;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 600;
  line-height: 1.4;
}
.igm-btn--oscuro.igm-btn--oscuro .elementor-button,
.igm-btn--oscuro.igm-btn--oscuro .elementor-button:hover {
  background-color: var(--igm-navy); color: #fff;
}
.igm-btn--teal.igm-btn--teal .elementor-button,
.igm-btn--teal.igm-btn--teal .elementor-button:hover {
  background-color: var(--igm-teal); color: #fff;
}
.igm-enlace p { margin: 0; font-size: 16px; }

/* --- pie global: cornisa, cifras, columnas, IFHA y legal -----------------
   Los porcentajes de blanco estan elegidos por contraste sobre el navy
   #0F2C47: .55 da 5,2:1 y .58 da 5,8:1, los dos por encima del 4,5:1 que
   pide AA para texto normal. Por debajo de .5 no se baja. */

#igm-footer { color: #fff; }
#igm-footer a { color: rgba(255, 255, 255, .74); text-decoration: none; }
#igm-footer a:hover { color: #fff; }

/* cornisa */
.igm-ftr__wordmark {
  font-size: clamp(30px, 3.4vw, 40px); font-weight: 700;
  letter-spacing: -.045em; line-height: 1; color: #fff;
}
.igm-ftr__tag p {
  margin: 0; font-size: 10px; letter-spacing: .2em; line-height: 1.6;
  text-transform: uppercase; color: rgba(255, 255, 255, .55);
}
.igm-ftr__cta .elementor-button { white-space: nowrap; }

/* cifras */
.igm-ftr__cifras-w p { margin: 0; }
.igm-ftr__cifras {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px; background: rgba(255, 255, 255, .13);
}
.igm-ftr__cifra {
  background: var(--igm-navy, #0F2C47); padding: 4px 24px 4px 0;
  display: flex; flex-direction: column; gap: 6px;
}
.igm-ftr__cifra + .igm-ftr__cifra { padding-left: 24px; }
.igm-ftr__cifra b {
  font-size: 30px; font-weight: 600; letter-spacing: -.035em;
  line-height: 1; color: #fff; font-variant-numeric: tabular-nums;
}
.igm-ftr__cifra span {
  font-size: 12.5px; line-height: 1.45; color: rgba(255, 255, 255, .58);
}

/* columnas */
.igm-ftr__titulo {
  font-size: 10px; font-weight: 600; letter-spacing: .16em;
  text-transform: uppercase; color: rgba(255, 255, 255, .55);
}
.igm-ftr__menu p { margin: 0; font-size: 15px; line-height: 1.5; }
.igm-ftr__menu .elementor-nav-menu { display: grid; gap: 11px; }
.igm-ftr__menu .elementor-nav-menu a.elementor-item {
  font-family: Archivo, system-ui, sans-serif;
  font-size: 15px; line-height: 1.5; padding: 0;
  color: rgba(255, 255, 255, .74);
}
.igm-ftr__menu .elementor-nav-menu a.elementor-item:hover { color: #fff; }
.igm-ftr__lista {
  list-style: none; margin: 0; padding: 0; display: grid; gap: 11px;
  font-size: 15px; line-height: 1.5;
}
.igm-ftr__lista li { margin: 0; }
.igm-ftr__datos em {
  display: block; font-style: normal; font-size: 12.5px; line-height: 1.5;
  color: rgba(255, 255, 255, .55); margin-top: 3px;
}
.igm-ftr__dir { color: rgba(255, 255, 255, .58); }
.igm-ftr__mas p { margin: 6px 0 0; font-size: 13px; }
.igm-ftr__mas a { color: var(--igm-teal-light, #5FC6D8); }

/* La banda de IFHA es un enlace de ancho completo. */
#igm-ifha { transition: border-color .15s, background-color .15s; }
#igm-ifha:hover {
  border-color: rgba(95, 198, 216, .5) !important;
  background: rgba(255, 255, 255, .03);
}
.igm-ftr__cifras + .e-con #igm-ifha { border-top: 0; }
.igm-ifha__txt p {
  margin: 0; font-size: 15px; line-height: 1.5;
  color: rgba(255, 255, 255, .74);
}
.igm-ifha__k {
  font-weight: 600; letter-spacing: .1em; font-size: 11px;
  text-transform: uppercase; color: #fff; margin-right: 10px;
}
.igm-ifha__lbl p {
  margin: 0; font-size: 13px; letter-spacing: .03em;
  color: var(--igm-teal-light, #5FC6D8); white-space: nowrap;
}

/* legal */
.igm-legal__txt p { margin: 0; font-size: 12px; color: rgba(255, 255, 255, .58); }
.igm-legal__links a { color: rgba(255, 255, 255, .58); margin-left: 22px; }
.igm-legal__links a:first-child { margin-left: 0; }
.igm-legal__links a:hover { color: #fff; }

/* Los porcentajes de Elementor no descuentan el gap: 25+25+22+28 % suman
   1180 px y con los tres huecos de 32 px la fila se pasaba a 1276, asi que
   la cuarta columna caia sola a un segundo renglon. El calc() devuelve los
   96 px de los huecos al reparto. */
#igm-ftr-cols > .e-con:nth-child(1),
#igm-ftr-cols > .e-con:nth-child(2) { width: calc(25% - 24px); }
#igm-ftr-cols > .e-con:nth-child(3) { width: calc(22% - 24px); }
#igm-ftr-cols > .e-con:nth-child(4) { width: calc(28% - 24px); }

@media (max-width: 1024px) {
  /* Cuatro columnas al 25% quedan de 150 px en tablet: se parten en dos. */
  #igm-ftr-cols > .e-con,
  #igm-ftr-cols > .e-con:nth-child(1),
  #igm-ftr-cols > .e-con:nth-child(2),
  #igm-ftr-cols > .e-con:nth-child(3),
  #igm-ftr-cols > .e-con:nth-child(4) { width: calc(50% - 16px); }
  .igm-ftr__cifras { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .igm-ftr__cifra:nth-child(odd) { padding-left: 0; }
  .igm-ftr__cifra:nth-child(n+3) { padding-top: 18px; }
}

/* --- tipografía: ganarle a Astra y a los globales de Elementor -----------
   Elementor estila sus títulos con `.elementor-widget-heading .elementor-heading-title`
   (0,2,0) y ahí toma el tamaño global de Astra, que para H2 son 54 px. Una clase
   sola (0,1,0) pierde. Repitiendo la clase y anclando en el body se llega a
   (0,3,1), que gana sin recurrir a !important.
   Estos son los valores del prototipo, no una preferencia: 46 px de H2 con
   interlineado 1.05 y -0.03em de espaciado.
   -------------------------------------------------------------------------- */

/* OJO: en un widget Título, Elementor pone la clase en el CONTENEDOR del
   widget y el encabezado real es `.elementor-heading-title` adentro. Por eso
   cada regla se escribe dos veces: para cuando la clase está en el propio
   elemento (widgets propios) y para cuando está en el contenedor.
   El COLOR no se toca acá: se fija con el control de Elementor, porque si se
   forzara desde el CSS se pisarían los títulos blancos de las secciones
   oscuras, que llevan su color por control. */
body.igm-v2 .igm-h1.igm-h1,
body.igm-v2 .igm-h1 .elementor-heading-title,
body.igm-v2 .igm-h1-ficha.igm-h1-ficha,
body.igm-v2 .igm-h1-ficha .elementor-heading-title,
body.igm-v2 .igm-h1-int.igm-h1-int,
body.igm-v2 .igm-h1-int .elementor-heading-title,
body.igm-v2 .igm-h2.igm-h2,
body.igm-v2 .igm-h2 .elementor-heading-title,
body.igm-v2 .igm-h2-cta.igm-h2-cta,
body.igm-v2 .igm-h2-cta .elementor-heading-title,
body.igm-v2 .igm-post__t.igm-post__t,
body.igm-v2 .igm-post__t .elementor-heading-title {
  font-family: Archivo, system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.05;
}
body.igm-v2 .igm-h1.igm-h1,
body.igm-v2 .igm-h1 .elementor-heading-title { font-size: clamp(40px, 5.2vw, 72px); }
body.igm-v2 .igm-h1-ficha.igm-h1-ficha,
body.igm-v2 .igm-h1-ficha .elementor-heading-title { font-size: clamp(42px, 5.4vw, 76px); }
body.igm-v2 .igm-h1-int.igm-h1-int,
body.igm-v2 .igm-h1-int .elementor-heading-title {
  /* El prototipo de categoría usa 36/4.8vw/62, no la escala genérica de
     TOKENS.md (34/4.4/56). Manda el prototipo. */
  font-size: clamp(36px, 4.8vw, 62px);
  max-width: 22ch;
}
body.igm-v2 .igm-h2.igm-h2,
body.igm-v2 .igm-h2 .elementor-heading-title { font-size: clamp(30px, 3.5vw, 46px); }
body.igm-v2 .igm-h2-cta.igm-h2-cta,
body.igm-v2 .igm-h2-cta .elementor-heading-title { font-size: clamp(32px, 4vw, 54px); }
body.igm-v2 .igm-post__t.igm-post__t,
body.igm-v2 .igm-post__t .elementor-heading-title {
  font-size: 21px; font-weight: 600; letter-spacing: -.02em; line-height: 1.2;
}

body.igm-v2 .igm-eyebrow p {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-navy); margin: 0;
}
body.igm-v2 .igm-eyebrow--claro p { color: var(--igm-teal-light); }

/* La foto del hero de la ficha es apaisada 16/10, no 4/3. */
.igm-galeria--hero .igm-photo {
  aspect-ratio: auto;
  padding: clamp(20px, 3vw, 34px);
  display: grid; place-items: center;
}
.igm-galeria--hero .igm-photo img {
  width: 100%; height: auto; aspect-ratio: 16 / 10;
}

/* El contenedor de archivo de Astra es una fila flex. Sin esto, la plantilla
   comparte el ancho con lo que Astra ponga al lado y se angosta. */
/* La ubicacion del plugin es hija de un contenedor flex de Astra: sin ancho
   explicito se encoge al ancho de su contenido y queda pegada a la izquierda.
   La ficha faltaba en esta lista y por eso el producto salia corrido. */
.igm-loc--categoria,
.igm-loc--catalogo,
.igm-loc--ficha { flex: 1 1 100%; width: 100%; min-width: 0; }

/* --- aviso del editor de Elementor --------------------------------------- */

.igm-aviso {
  border: 1px dashed var(--igm-border); border-radius: 12px;
  padding: 14px 16px; font-size: 13px; color: var(--igm-muted);
  background: var(--igm-wash);
}

/* --- responsive: único quiebre real, 900 px ------------------------------ */

@media (max-width: 900px) {
  .igm-cifras { gap: 20px 28px; }
  .igm-cifras dd { font-size: 28px; }
  .igm-lista--col2 { grid-template-columns: 1fr; }
  .igm-tabla tbody th { width: 50%; }
}

/* Por debajo de 768 px el menú del header ya es una hamburguesa, así que acá
   sólo se ajustan las medidas que no dependen de esa conmutación. */
@media (max-width: 767px) {
  .igm-logo img { height: 34px; }
  /* La fila etiqueta/valor pasa a dos renglones: a 375 px, 180 px de etiqueta
     más el valor no entran y la tabla desbordaría. */
  .igm-tabla:not(.igm-tabla--comparativa) tbody tr {
    grid-template-columns: 1fr; gap: 4px; padding: 14px 0;
  }
  .igm-tabla { padding: 8px 20px; }
  .igm-destacado { padding: 26px 22px; gap: 14px; }
  .igm-bloques--gris .igm-bloques__item { padding: 28px 22px 30px; }
  .igm-ftr__cifras { grid-template-columns: 1fr; gap: 0; background: none; }
  .igm-ftr__cifra {
    padding: 16px 0 !important;
    border-top: 1px solid rgba(255, 255, 255, .11);
    flex-direction: row; align-items: baseline; gap: 12px;
  }
  .igm-ftr__cifra:first-child { border-top: 0; padding-top: 0 !important; }
  .igm-ftr__cifra b { font-size: 24px; min-width: 52px; }
  .igm-ftr__wordmark { font-size: 28px; }
  .igm-ftr__cta .elementor-button { width: 100%; text-align: center; }
  .igm-legal__links a { margin: 0 20px 0 0; }
  .igm-ifha__lbl p { white-space: normal; }
  .igm-galeria__thumb.igm-galeria__thumb { width: 64px; height: 64px; }
}

/* Nada de reglas de "todo al 100%" acá: una `max-width` global sobre
   `.igm-loc *` aplasta el panel del menú móvil, que es absoluto y tiene que
   medir el ancho de la pantalla. Se acota a lo que de verdad puede desbordar. */
/* Sin `height: auto`: pisaría el alto fijo del logo, que es más específico
   por orden pero no por especificidad. */
body.igm-v2 .igm-loc img { max-width: 100%; }
body.igm-v2 .igm-modelos { max-width: 100%; }

/* ======================================================================
   PÁGINAS ESTÁTICAS  (servicios, quiénes somos, contacto, recursos, guía)
   ====================================================================== */

/* Centrado genérico: cualquier sección con id igm-centro-* centra su texto y
   sus bloques de ancho acotado. Reemplaza a la lista de ids de la ficha. */
body.igm-v2 [id^="igm-centro-"] { text-align: center; }
body.igm-v2 [id^="igm-centro-"] > .elementor-widget > .elementor-widget-container,
body.igm-v2 [id^="igm-centro-"] > .elementor-widget { margin-inline: auto; }

/* Columna que acompaña al scroll (los bloques de servicio). */
body.igm-v2 [id^="igm-sticky-"] { position: sticky; top: 104px; }
@media (max-width: 1024px) {
  body.igm-v2 [id^="igm-sticky-"] { position: static; top: auto; }
}

/* --- hero de página interna ------------------------------------------- */
.igm-sub p {
  font-size: clamp(20px, 2.1vw, 26px); font-weight: 500;
  letter-spacing: -.02em; color: var(--igm-navy);
  max-width: 26ch; margin: 0 auto;
}
.igm-intro--hero p {
  font-size: clamp(18px, 1.9vw, 22px); line-height: 1.55;
  color: var(--igm-muted); margin: 0 auto;
}
.igm-intro--hero { max-width: 60ch; }

/* --- tres tarjetas numeradas ------------------------------------------- */
.igm-momentos {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
}
.igm-momento { background: var(--igm-mist); border-radius: 22px; padding: 34px 30px 36px; }
.igm-momento__n {
  font-family: var(--igm-mono); font-size: 12px;
  color: var(--igm-navy); margin-bottom: 16px;
}
.igm-momento__t {
  font-size: 22px; font-weight: 600; letter-spacing: -.02em;
  color: var(--igm-navy); margin-bottom: 8px;
}
.igm-momento p { font-size: 15px; line-height: 1.6; color: var(--igm-muted); margin: 0; }

/* --- bloque de servicio: número, título y lista con tilde --------------- */
.igm-serv__n { font-family: var(--igm-mono); font-size: 13px; color: var(--igm-navy); }
.igm-h2--serv .elementor-heading-title { line-height: 1.05; }
.igm-h2--serv { max-width: 16ch; }
.igm-serv__baj p {
  font-size: 17px; line-height: 1.6; color: var(--igm-muted); margin: 0;
}
.igm-serv__baj { max-width: 38ch; }

.igm-checks { display: grid; border-top: 1px solid rgba(15, 44, 71, .12); }
.igm-check {
  display: grid; grid-template-columns: auto 1fr; gap: 20px;
  align-items: start; padding: 22px 0; border-bottom: 1px solid var(--igm-line);
}
.igm-check svg { margin-top: 3px; flex: none; }
.igm-check__t {
  font-size: 19px; font-weight: 600; letter-spacing: -.01em;
  color: var(--igm-navy); margin-bottom: 5px;
}
.igm-check p { font-size: 15px; line-height: 1.6; color: var(--igm-muted); margin: 0; max-width: 60ch; }

/* --- panel oscuro con CTA --------------------------------------------- */
.igm-panel {
  background: var(--igm-navy); border-radius: 26px;
  padding: 64px 56px; display: grid; gap: 56px; align-items: center;
  grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
}
.igm-panel__eb {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-teal-light); margin-bottom: 16px;
}
.igm-panel h2 {
  font-size: clamp(30px, 3.5vw, 46px); line-height: 1.05;
  margin: 0 0 16px; color: #fff; max-width: 20ch;
}
.igm-panel > div > p {
  font-size: 17px; line-height: 1.6; color: rgba(255, 255, 255, .78);
  margin: 0; max-width: 52ch;
}
.igm-panel__ctas { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }
.igm-panel__btn.igm-panel__btn {
  display: inline-block; background: #fff; color: var(--igm-navy);
  border-radius: 980px; padding: 15px 32px; font-size: 13px; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase; white-space: nowrap;
}
.igm-panel__btn.igm-panel__btn:hover { background: var(--igm-mint); color: var(--igm-navy); }
.igm-panel__link.igm-panel__link { font-size: 16px; color: var(--igm-teal-light); }
@media (max-width: 640px) {
  .igm-panel { padding: 40px 26px 44px; gap: 32px; }
}

/* --- preguntas abiertas (sin acordeón) -------------------------------- */
.igm-pregs { border-top: 1px solid rgba(15, 44, 71, .12); }
.igm-preg { padding: 22px 0; border-bottom: 1px solid var(--igm-line); }
.igm-preg__q {
  font-size: 18px; font-weight: 600; letter-spacing: -.015em;
  color: var(--igm-navy); margin-bottom: 8px;
}
.igm-preg p { font-size: 16px; line-height: 1.6; color: var(--igm-body); margin: 0; max-width: 60ch; }
.igm-h2--faq { max-width: 18ch; }
.igm-h2--faq .elementor-heading-title { font-size: clamp(26px, 3vw, 38px); }

/* --- quiénes somos ----------------------------------------------------- */
.igm-h1-int--ancho .elementor-heading-title { font-size: clamp(40px, 5.2vw, 74px); }
.igm-h1-int--ancho { max-width: 24ch; margin-inline: auto; }
.igm-intro--62 { max-width: 62ch; }

.igm-frase p {
  font-size: clamp(26px, 3.1vw, 42px); font-weight: 600;
  letter-spacing: -.028em; line-height: 1.18; color: var(--igm-navy);
  max-width: 26ch; margin: 0 auto; text-wrap: pretty;
}

.igm-cifra-cards {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
}
.igm-cifra-card { background: #fff; border-radius: 22px; padding: 32px 30px; }
.igm-cifra-card__n {
  font-size: clamp(34px, 3.6vw, 46px); font-weight: 700;
  letter-spacing: -.035em; line-height: 1; color: var(--igm-navy);
}
.igm-cifra-card__t { font-size: 15px; color: var(--igm-muted); margin-top: 10px; }

.igm-hito {
  display: grid; grid-template-columns: 120px 1fr; gap: 32px;
  padding: 28px 0; border-top: 1px solid rgba(15, 44, 71, .12);
}
.igm-hito:last-child { border-bottom: 1px solid rgba(15, 44, 71, .12); }
.igm-hito__e { font-size: 20px; font-weight: 600; color: var(--igm-teal); letter-spacing: -.01em; }
.igm-hito__t {
  font-size: 23px; font-weight: 600; letter-spacing: -.022em;
  color: var(--igm-navy); margin-bottom: 8px;
}
.igm-hito p { font-size: 17px; line-height: 1.65; color: var(--igm-body); margin: 0; max-width: 58ch; }
@media (max-width: 560px) {
  .igm-hito { grid-template-columns: 1fr; gap: 10px; }
}

.igm-oscuras {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
}
.igm-oscura { background: rgba(255, 255, 255, .07); border-radius: 22px; padding: 32px 28px 34px; }
.igm-oscura__t {
  font-size: 21px; font-weight: 600; letter-spacing: -.02em;
  margin-bottom: 10px; color: #fff;
}
.igm-oscura p { font-size: 15px; line-height: 1.6; color: rgba(255, 255, 255, .7); margin: 0; }
.igm-h2--20ch { max-width: 20ch; }

.igm-personas { display: flex; flex-wrap: wrap; gap: 28px; }
.igm-persona { flex: 0 1 210px; max-width: 230px; margin: 0; }
.igm-persona img {
  width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: 18px; margin-bottom: 16px; background: var(--igm-mist); display: block;
}
.igm-persona figcaption { display: grid; gap: 6px; }
.igm-persona__n {
  font-size: 19px; font-weight: 600; letter-spacing: -.02em;
  color: var(--igm-navy); line-height: 1.25;
}
.igm-persona__r { font-size: 14px; color: var(--igm-muted); line-height: 1.45; }
.igm-serv__baj--40 { max-width: 40ch; }
.igm-serv__baj--42 { max-width: 42ch; }

.igm-mapa { border-radius: 26px; overflow: hidden; background: #fff; }
.igm-mapa iframe { width: 100%; height: 360px; border: 0; display: block; }

/* --- recursos ---------------------------------------------------------- */
.igm-h1-int--rec .elementor-heading-title { font-size: clamp(38px, 5vw, 68px); }
.igm-h1-int--rec { max-width: 22ch; }
.igm-intro--rec { max-width: 62ch; }
.igm-intro--rec p { font-size: clamp(18px, 1.9vw, 21px); color: var(--igm-body); margin: 0; text-wrap: pretty; }
.igm-h2--24ch { max-width: 24ch; }
.igm-serv__baj--56 { max-width: 56ch; }
.igm-serv__baj--56 p { font-size: 17px; color: var(--igm-muted); }

.igm-guia.igm-guia {
  display: grid; gap: clamp(28px, 4vw, 56px); align-items: center;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  background: var(--igm-navy); border-radius: 26px;
  padding: clamp(32px, 4vw, 52px); color: #fff; transition: background .16s;
}
.igm-guia.igm-guia:hover { background: #143552; color: #fff; }
.igm-guia__eb {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-teal-light); margin-bottom: 16px;
}
.igm-guia h2 {
  font-size: clamp(26px, 3vw, 38px); color: #fff; max-width: 24ch; margin: 0 0 16px;
}
.igm-guia p {
  font-size: 17px; line-height: 1.65; color: rgba(255, 255, 255, .72);
  max-width: 52ch; margin: 0 0 22px;
}
.igm-guia__cta { font-size: 14px; font-weight: 600; color: var(--igm-teal-light); }
.igm-vols {
  display: grid; gap: 1px; background: rgba(255, 255, 255, .16);
  border-radius: 18px; overflow: hidden;
}
.igm-vol {
  background: var(--igm-navy); padding: 20px 22px;
  display: flex; justify-content: space-between; gap: 16px; align-items: baseline;
}
.igm-vol span:first-child { font-size: 15px; color: rgba(255, 255, 255, .72); }
.igm-vol span:last-child { font-size: 15px; font-weight: 600; color: #fff; }

.igm-guiasf {
  display: grid; gap: 1px; background: rgba(15, 44, 71, .12);
  border-radius: 20px; overflow: hidden;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
}
.igm-guiaf {
  background: #fff; padding: 30px 28px;
  display: flex; flex-direction: column; min-height: 190px;
}
.igm-guiaf__n { font-family: var(--igm-mono); font-size: 12px; color: var(--igm-teal); margin-bottom: 16px; }
.igm-guiaf__eb {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-teal); margin-bottom: 16px;
}
.igm-guiaf h3 { font-size: 20px; color: var(--igm-navy); margin: 0 0 10px; }
.igm-guiaf p { font-size: 15px; color: var(--igm-muted); margin: 0; line-height: 1.6; }
.igm-guiaf--cta.igm-guiaf--cta { background: var(--igm-wash); color: var(--igm-ink); transition: background .16s; }
.igm-guiaf--cta.igm-guiaf--cta:hover { background: var(--igm-mint); color: var(--igm-ink); }
.igm-guiaf__link {
  margin-top: auto; padding-top: 18px; font-size: 13px;
  font-weight: 600; color: var(--igm-teal);
}

.igm-relcards {
  display: grid; gap: 24px;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
}
.igm-relcard.igm-relcard {
  border: 1px solid var(--igm-border); border-radius: 20px; padding: 30px 28px;
  color: var(--igm-ink); display: flex; flex-direction: column; min-height: 170px;
  transition: border-color .16s;
}
.igm-relcard.igm-relcard:hover { border-color: var(--igm-border-hover); color: var(--igm-ink); }
.igm-relcard h3 { font-size: 21px; color: var(--igm-navy); margin: 0 0 10px; }
.igm-relcard p { font-size: 15px; color: var(--igm-muted); margin: 0; line-height: 1.6; }
.igm-relcard__cta {
  margin-top: auto; padding-top: 18px; font-size: 13px;
  font-weight: 600; color: var(--igm-teal);
}

/* --- artículo: guía de dimensionamiento -------------------------------- */
.igm-h1-art .elementor-heading-title { font-size: clamp(34px, 4.4vw, 58px); line-height: 1.06; }
.igm-h2-art .elementor-heading-title { font-size: clamp(26px, 2.8vw, 36px); line-height: 1.12; }
.igm-h2-art--sep { margin-bottom: 8px; }
.igm-art__bajada p {
  font-size: clamp(19px, 2vw, 23px); line-height: 1.5;
  color: var(--igm-body); margin: 0; text-wrap: pretty;
}
.igm-art__meta {
  display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center;
  padding: 20px 0; margin-top: 32px;
  border-top: 1px solid rgba(15, 44, 71, .12);
  border-bottom: 1px solid rgba(15, 44, 71, .12);
  font-size: 14px; color: var(--igm-muted);
}
.igm-art__autor { color: var(--igm-ink); font-weight: 600; }
.igm-art__p {
  font-size: 17.5px; line-height: 1.7; color: var(--igm-body);
  margin: 18px 0 0; text-wrap: pretty;
}
.igm-art__sub p { font-size: 17px; color: var(--igm-muted); max-width: 60ch; margin: 0; }

.igm-corta { background: var(--igm-mint); border-radius: 22px; padding: 30px 32px; }
.igm-corta__r {
  font-size: 11px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-navy); margin-bottom: 14px;
}
.igm-corta p { font-size: 18px; line-height: 1.6; color: var(--igm-ink); margin: 0; }

.igm-tref__caja { overflow-x: auto; border: 1px solid rgba(15, 44, 71, .14); border-radius: 20px; }
.igm-tref { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 15.5px; }
.igm-tref thead tr { background: var(--igm-humo, #F7F9FA); }
.igm-tref thead th {
  text-align: left; padding: 16px 20px; font-size: 11px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--igm-muted); font-weight: 600;
  border-bottom: 1px solid rgba(15, 44, 71, .14);
}
.igm-tref tbody tr:nth-child(even) { background: #FCFDFD; }
.igm-tref tbody th {
  text-align: left; padding: 20px; font-weight: 600; color: var(--igm-navy);
  white-space: nowrap; border-bottom: 1px solid var(--igm-line);
}
.igm-tref tbody td { padding: 20px; color: var(--igm-body); border-bottom: 1px solid var(--igm-line); }
.igm-tref tbody tr:last-child th, .igm-tref tbody tr:last-child td { border-bottom: 0; }
.igm-tref__nota { font-size: 14px; color: #6B7A87; margin: 16px 0 0; }

.igm-etapa-box { background: #F7F9FA; border-radius: 20px; padding: 26px 30px; margin-top: 32px; }
.igm-etapa-box__r {
  font-size: 11px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-muted); margin-bottom: 12px;
}
.igm-etapa-box__l { display: grid; gap: 10px; }
.igm-etapa-box__l a { font-size: 16px; font-weight: 500; }

.igm-errs { border-top: 1px solid rgba(15, 44, 71, .12); margin-top: 26px; }
.igm-err {
  display: flex; gap: 16px; align-items: baseline;
  padding: 24px 0; border-bottom: 1px solid var(--igm-line);
}
.igm-err__n { font-family: var(--igm-mono); font-size: 12px; color: var(--igm-teal); }
.igm-err__t {
  font-size: 19px; font-weight: 600; letter-spacing: -.015em;
  color: var(--igm-navy); margin-bottom: 8px;
}
.igm-err p { font-size: 16.5px; line-height: 1.65; color: var(--igm-body); margin: 0; }

.igm-artcta { background: var(--igm-navy); color: #fff; border-radius: 26px; padding: clamp(32px, 4vw, 48px); }
.igm-artcta h2 {
  font-size: clamp(24px, 2.6vw, 34px); color: #fff;
  max-width: 24ch; margin: 0 0 14px; line-height: 1.08;
}
.igm-artcta p { font-size: 17px; color: rgba(255, 255, 255, .72); max-width: 52ch; margin: 0 0 28px; }
.igm-artcta__b { display: flex; gap: 22px; align-items: center; flex-wrap: wrap; }
.igm-artcta__btn.igm-artcta__btn {
  background: var(--igm-teal); color: #fff; border-radius: 980px; padding: 15px 30px;
  font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
}
.igm-artcta__btn.igm-artcta__btn:hover { background: #23879c; color: #fff; }
.igm-artcta__link.igm-artcta__link { color: var(--igm-teal-light); font-size: 16px; }

.igm-sigues { display: grid; gap: 14px; margin-top: 22px; }
.igm-sigue.igm-sigue {
  display: flex; justify-content: space-between; gap: 16px; align-items: baseline;
  padding: 18px 0; border-top: 1px solid rgba(15, 44, 71, .12);
  font-size: 17px; font-weight: 500; color: var(--igm-ink);
}
.igm-sigue.igm-sigue:last-child { border-bottom: 1px solid rgba(15, 44, 71, .12); }
.igm-sigue.igm-sigue:hover { color: var(--igm-link-hover); }
.igm-sigue span { color: #6B7A87; font-size: 13px; white-space: nowrap; font-weight: 400; }

/* --- contacto: canales, formulario y cotizador ------------------------- */
.igm-h1-int--ct .elementor-heading-title { font-size: clamp(42px, 5.4vw, 76px); }
.igm-h1-int--ct { max-width: 22ch; margin-inline: auto; }
.igm-serv__baj--44 { max-width: 44ch; }
.igm-h2--exp .elementor-heading-title { font-size: clamp(28px, 3.2vw, 44px); }
.igm-h2--exp { max-width: 22ch; }

.igm-canales {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
}
.igm-canal.igm-canal {
  background: var(--igm-mist); border-radius: 22px; padding: 32px;
  display: flex; flex-direction: column; gap: 14px; color: var(--igm-ink);
  text-align: left; transition: background .16s;
}
a.igm-canal.igm-canal:hover { background: var(--igm-mint); color: var(--igm-ink); }
.igm-canal__r {
  font-size: 12px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; color: var(--igm-muted);
}
.igm-canal__v { font-size: 24px; font-weight: 600; letter-spacing: -.025em; color: var(--igm-navy); }

.igm-form { background: #fff; border-radius: 26px; padding: clamp(30px, 3vw, 44px); }
.igm-form__h2 { font-size: clamp(26px, 3vw, 38px); margin: 0 0 8px; color: var(--igm-ink); }
.igm-form__sub { font-size: 16px; color: var(--igm-muted); margin: 0 0 30px; }
.igm-form__f { display: grid; gap: 22px; }
.igm-form__lbl { font-size: 13px; font-weight: 500; color: var(--igm-muted); margin-bottom: 10px; }
.igm-form__grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr));
}
.igm-form label { display: grid; gap: 7px; }
/* Astra le pone a los <label> un peso 500 y un interlineado propio: en el
   prototipo la etiqueta es texto normal. */
.igm-form label > span { font-size: 13px; color: var(--igm-muted); font-weight: 400; line-height: 1.6; }
.igm-form input, .igm-form textarea {
  border: 1px solid var(--igm-border); border-radius: 12px; padding: 13px 15px;
  font-size: 15px; background: #fff; color: var(--igm-ink);
  font-family: inherit; width: 100%; box-sizing: border-box;
}
.igm-form input:focus, .igm-form textarea:focus {
  outline: 2px solid var(--igm-teal); outline-offset: 1px; border-color: transparent;
}
.igm-form textarea { min-height: 120px; resize: vertical; }
.igm-form__legal { font-size: 14px; line-height: 1.6; color: var(--igm-muted); margin: 0; }
.igm-form__trampa { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.igm-form__enviar.igm-form__enviar {
  background: var(--igm-teal); color: #fff; border: 0; border-radius: 980px;
  padding: 16px 34px; font-size: 13px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; cursor: pointer; justify-self: start;
  font-family: inherit; transition: background .16s;
}
.igm-form__enviar.igm-form__enviar:hover { background: #23879c; }
.igm-form__enviar[disabled] { opacity: .6; cursor: progress; }
.igm-form__error { font-size: 15px; color: #B0433A; margin: 0; }
.igm-form__ok { background: var(--igm-mint); border-radius: 20px; padding: 30px; }
.igm-form__ok-t {
  font-size: 24px; font-weight: 600; letter-spacing: -.025em;
  color: var(--igm-navy); margin-bottom: 8px;
}
.igm-form__ok p { font-size: 16px; line-height: 1.6; color: var(--igm-body); margin: 0 0 20px; }
.igm-form__otra.igm-form__otra {
  background: #fff; border: 1px solid var(--igm-border); border-radius: 980px;
  padding: 12px 22px; font-size: 13px; font-weight: 600; color: var(--igm-navy);
  cursor: pointer; font-family: inherit;
}
.igm-form__otra.igm-form__otra:hover { background: var(--igm-hover); color: var(--igm-navy); }

.igm-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.igm-pill.igm-pill {
  border-radius: 980px; padding: 10px 18px; font-size: 13px; font-weight: 500;
  background: #fff; color: var(--igm-ink); border: 1px solid var(--igm-border);
  cursor: pointer; font-family: inherit; transition: background .14s, color .14s, border-color .14s;
}
.igm-pill.igm-pill:hover { border-color: var(--igm-border-hover); background: #fff; color: var(--igm-ink); }
.igm-pill.igm-pill.is-activa { background: var(--igm-navy); color: #fff; border-color: var(--igm-navy); }

.igm-cotiza__eb {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-navy); margin-bottom: 14px;
}
.igm-cotiza__h2 { font-size: clamp(26px, 3vw, 38px); margin: 0 0 10px; color: var(--igm-ink); }
.igm-cotiza__sub { font-size: 16px; color: var(--igm-muted); margin: 0 0 32px; max-width: 46ch; }
.igm-cotiza__pasos { display: grid; gap: 26px; }
.igm-cotiza__lbl { font-size: 13px; font-weight: 500; color: var(--igm-muted); margin-bottom: 10px; }
.igm-cotiza__caja {
  background: var(--igm-navy); color: #fff; border-radius: 26px;
  padding: clamp(28px, 3vw, 38px); margin-top: 34px;
}
.igm-cotiza__caja-eb {
  font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-teal-light); margin-bottom: 20px;
}
.igm-cotiza__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 20px; }
.igm-cotiza__lista li { display: grid; gap: 4px; }
.igm-cotiza__n { font-size: 20px; font-weight: 600; letter-spacing: -.02em; color: #fff; }
.igm-cotiza__w { font-size: 15px; color: rgba(255, 255, 255, .68); line-height: 1.5; }
.igm-cotiza__ctas {
  display: flex; flex-wrap: wrap; gap: 20px; align-items: center; margin-top: 30px;
}
.igm-cotiza__btn.igm-cotiza__btn {
  background: var(--igm-teal); color: #fff; border-radius: 980px; padding: 15px 32px;
  font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  white-space: nowrap;
}
.igm-cotiza__btn.igm-cotiza__btn:hover { background: #23879c; color: #fff; }
.igm-cotiza__link.igm-cotiza__link { color: var(--igm-teal-light); font-size: 15px; }

.igm-horas { border-top: 1px solid rgba(15, 44, 71, .12); }
.igm-hora {
  display: flex; justify-content: space-between; gap: 16px;
  padding: 15px 0; font-size: 16px; border-bottom: 1px solid rgba(15, 44, 71, .09);
}
.igm-hora:last-child { border-bottom: 0; }
.igm-hora span:first-child { color: var(--igm-muted); }
.igm-ubi__mapa { margin: 26px 0 0; font-size: 15px; }
.igm-mapa--alto iframe { height: 420px; }

.igm-exps {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
}
.igm-exp { background: #fff; border-radius: 22px; padding: 30px 28px 32px; }
.igm-exp__t {
  font-size: 20px; font-weight: 600; letter-spacing: -.02em;
  color: var(--igm-navy); margin-bottom: 10px;
}
.igm-exp p { font-size: 15px; line-height: 1.55; color: var(--igm-muted); margin: 0; }

/* --- home -------------------------------------------------------------- */
.igm-heroimg {
  background: var(--igm-mist); border-radius: 26px; aspect-ratio: 4 / 3;
  padding: clamp(20px, 3vw, 40px); display: flex;
  align-items: center; justify-content: center;
}
.igm-heroimg img { max-width: 100%; max-height: 100%; width: auto; height: auto; display: block; }

.igm-cred {
  list-style: none; margin: 26px 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 10px 28px;
  font-size: 15px; color: var(--igm-muted);
}
.igm-cred b { color: var(--igm-navy); font-weight: 600; }

/* La banda de cifras de la home no es una tarjeta: son cuatro celdas entre dos
   líneas, separadas por un filete, sin fondo. */
.igm-cifras--home {
  display: grid; gap: 0;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
}
.igm-cifras--home .igm-cifras__item {
  background: none; padding: 26px 22px; margin: 0;
  display: flex; flex-direction: column-reverse; gap: 4px;
}
.igm-cifras--home .igm-cifras__item + .igm-cifras__item {
  border-left: 1px solid var(--igm-line);
}
.igm-cifras--home dd {
  margin: 0; font-size: clamp(26px, 3vw, 38px); font-weight: 700;
  letter-spacing: -.03em; color: var(--igm-navy);
}
.igm-cifras--home dt {
  font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--igm-muted); font-weight: 400;
}

.igm-enlace--fuerte p, .igm-enlace--fuerte a {
  font-size: 15px; font-weight: 600; white-space: nowrap;
}

.igm-svcs {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
}
.igm-svc.igm-svc {
  border: 1px solid var(--igm-border); border-radius: 22px; padding: 30px 28px 32px;
  display: flex; flex-direction: column; min-height: 210px;
  color: var(--igm-ink); transition: border-color .16s;
}
.igm-svc.igm-svc:hover { border-color: var(--igm-border-hover); color: var(--igm-ink); }
.igm-svc__n { font-family: var(--igm-mono); font-size: 12px; color: var(--igm-teal); margin-bottom: 16px; }
.igm-svc h3 { font-size: 22px; color: var(--igm-navy); margin: 0 0 12px; }
.igm-svc p { font-size: 15px; color: var(--igm-muted); margin: 0; line-height: 1.6; }
.igm-svc__cta {
  margin-top: auto; padding-top: 20px; font-size: 13px;
  font-weight: 600; color: var(--igm-teal);
}

.igm-qcifras {
  display: grid; gap: 1px; background: rgba(15, 44, 71, .12);
  grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));
  border-radius: 20px; overflow: hidden;
}
.igm-qcifra { background: #fff; padding: 28px 24px; display: grid; gap: 8px; }
.igm-qcifra b {
  font-size: 34px; font-weight: 700; letter-spacing: -.035em;
  color: var(--igm-navy); line-height: 1;
}
.igm-qcifra span { font-size: 14px; color: var(--igm-muted); }
.igm-serv__baj--46 { max-width: 46ch; }
.igm-serv__baj--46 p { font-size: 17px; color: var(--igm-body); }

/* ======================================================================
   PESO DE LOS SELECTORES
   Elementor le pone a cada widget hijo de un contenedor un max-width:100%
   con dos clases de peso, y a los títulos una regla propia: una clase suelta
   nunca gana. Todo lo que cambie tamaño o ancho de lectura se escribe acá,
   con el mismo peso que usa el resto de la hoja.
   ====================================================================== */

body.igm-v2 .igm-h1-int--srv.igm-h1-int--srv,
body.igm-v2 .igm-h1-int--srv .elementor-heading-title {
  font-size: clamp(40px, 5vw, 70px); line-height: 1.04; max-width: 20ch;
}
body.igm-v2 .igm-h1-int--ancho.igm-h1-int--ancho,
body.igm-v2 .igm-h1-int--ancho .elementor-heading-title {
  font-size: clamp(40px, 5.2vw, 74px); max-width: 24ch;
}
body.igm-v2 .igm-h1-int--rec.igm-h1-int--rec,
body.igm-v2 .igm-h1-int--rec .elementor-heading-title {
  font-size: clamp(38px, 5vw, 68px); max-width: 22ch;
}
body.igm-v2 .igm-h1-int--ct.igm-h1-int--ct,
body.igm-v2 .igm-h1-int--ct .elementor-heading-title {
  font-size: clamp(42px, 5.4vw, 76px); max-width: 22ch;
}
/* En el artículo los títulos respiran un poco más que en el resto: el
   prototipo los deja en 1.08, no en el 1.05 del sistema. */
body.igm-v2 .igm-h1-art.igm-h1-art,
body.igm-v2 .igm-h1-art .elementor-heading-title {
  font-size: clamp(34px, 4.4vw, 58px); line-height: 1.08;
}
body.igm-v2 .igm-h2--faq.igm-h2--faq,
body.igm-v2 .igm-h2--faq .elementor-heading-title {
  font-size: clamp(26px, 3vw, 38px);
}
body.igm-v2 .igm-h2--exp.igm-h2--exp,
body.igm-v2 .igm-h2--exp .elementor-heading-title {
  font-size: clamp(28px, 3.2vw, 44px);
}
/* Mismo cuerpo que el de las FAQ, pero sin tope de 18ch: el título de la
   dirección ocupa todo el ancho de su columna. */
body.igm-v2 .igm-h2--38.igm-h2--38,
body.igm-v2 .igm-h2--38 .elementor-heading-title {
  font-size: clamp(26px, 3vw, 38px);
}
body.igm-v2 .igm-h2-art.igm-h2-art,
body.igm-v2 .igm-h2-art .elementor-heading-title {
  font-size: clamp(26px, 2.8vw, 36px); line-height: 1.08;
}

/* Anchos de lectura.
   Van en ch sobre el PROPIO texto, no sobre el envoltorio: 60ch de un párrafo
   de 22 px mide casi 250 px más que 60ch del envoltorio, que hereda los 17 px
   del cuerpo. Medir sobre el envoltorio fue el error que angostaba las bajadas. */
body.igm-v2 .igm-intro p { max-width: 52ch; }
body.igm-v2 .igm-intro--hero p { max-width: 60ch; margin-inline: auto; }
body.igm-v2 .igm-intro--62 p { max-width: 62ch; }
body.igm-v2 .igm-intro--rec p { max-width: 62ch; }
body.igm-v2 .igm-intro--ct p { max-width: 60ch; margin-inline: auto; font-size: clamp(18px, 1.8vw, 21px); }
body.igm-v2 .igm-sub p { max-width: 26ch; margin-inline: auto; }
body.igm-v2 .igm-serv__baj p { max-width: 38ch; }
body.igm-v2 .igm-serv__baj--40 p { max-width: 40ch; }
body.igm-v2 .igm-serv__baj--42 p { max-width: 42ch; }
body.igm-v2 .igm-serv__baj--44 p { max-width: 44ch; }
body.igm-v2 .igm-serv__baj--46 p { max-width: 46ch; }
body.igm-v2 .igm-serv__baj--56 p { max-width: 56ch; }
body.igm-v2 .igm-art__sub p { max-width: 60ch; }
body.igm-v2 .igm-frase p { max-width: 26ch; margin-inline: auto; }

body.igm-v2 .igm-h1-int--srv .elementor-heading-title { max-width: 20ch; margin-inline: auto; }
body.igm-v2 .igm-h1-int--ancho .elementor-heading-title { max-width: 24ch; margin-inline: auto; }
body.igm-v2 .igm-h1-int--rec .elementor-heading-title { max-width: 22ch; }
body.igm-v2 .igm-h1-int--ct .elementor-heading-title { max-width: 22ch; margin-inline: auto; }
body.igm-v2 .igm-h2 .elementor-heading-title { max-width: 22ch; }
body.igm-v2 .igm-h2--serv .elementor-heading-title { max-width: 16ch; }
body.igm-v2 .igm-h2--faq .elementor-heading-title { max-width: 18ch; }
body.igm-v2 .igm-h2--20ch .elementor-heading-title { max-width: 20ch; }
body.igm-v2 .igm-h2--24ch .elementor-heading-title { max-width: 24ch; }
body.igm-v2 .igm-h2--exp .elementor-heading-title { max-width: 24ch; }
body.igm-v2 .igm-h2--38 .elementor-heading-title { max-width: none; }
body.igm-v2 .igm-h2-cta .elementor-heading-title { max-width: 24ch; margin-inline: auto; }

/* La caja de Astra.
   Con la plantilla "page-builder" Astra sigue sirviendo su .ast-container de
   1240 px desde el CSS dinámico del tema: las secciones quedaban 1152 px de
   ancho y ningún fondo llegaba al borde de la pantalla. */
body.igm-v2 .ast-container { max-width: none; padding: 0; }
body.igm-v2 #primary, body.igm-v2 .entry-content { max-width: none; width: 100%; }
body.igm-v2 .site-content .ast-container > #primary { margin: 0; }

/* Astra subraya los enlaces del contenido de una entrada con una regla más
   pesada que `body.igm-v2 a`. En el prototipo no hay ningún subrayado: los
   enlaces se distinguen por color y por el › del final. */
body.igm-v2 .entry-content a,
body.igm-v2 .elementor a,
body.igm-v2 .e-con a { text-decoration: none; }
body.igm-v2 .entry-content a:hover { text-decoration: none; }

/* ======================================================================
   NAVEGACIÓN: MEGAMENÚ DE MAQUINARIAS
   Calcado de design/IGM Menu.dc.html + IGM Menu Panel.dc.html.
   ====================================================================== */

/* El panel se posiciona contra la barra del header, no contra el botón: por
   eso la barra tiene que ser el ancestro posicionado. */
body.igm-v2 #igm-header { position: relative; }

.igm-nav2 { display: flex; align-items: center; }
.igm-nav2__lista {
  list-style: none; margin: 0; padding: 0;
  display: flex; align-items: center; gap: 16px;
  font-size: 13.5px; white-space: nowrap;
}
.igm-nav2__item { display: flex; align-items: center; }
.igm-nav2__enlace.igm-nav2__enlace {
  color: var(--igm-ink); padding: 6px 0; transition: color .14s;
}
.igm-nav2__enlace.igm-nav2__enlace:hover { color: var(--igm-link); }
.igm-nav2__enlace.is-actual {
  color: var(--igm-navy); font-weight: 600;
  box-shadow: inset 0 -2px 0 var(--igm-teal); padding-bottom: 4px;
}

.igm-nav2__trigger.igm-nav2__trigger {
  display: inline-flex; align-items: center; gap: 6px;
  background: none; border: 0; padding: 0 0 4px;
  font: inherit; font-size: 14px; cursor: pointer;
  color: var(--igm-ink); transition: color .14s;
}
.igm-nav2__trigger.is-actual {
  color: var(--igm-navy); font-weight: 600; box-shadow: inset 0 -2px 0 var(--igm-teal);
}
.igm-nav2__trigger[aria-expanded="true"] {
  color: var(--igm-navy); box-shadow: inset 0 -2px 0 rgba(44, 160, 184, .55);
}
.igm-nav2__caret {
  font-size: 9px; transform: translateY(1px);
  transition: transform .16s ease-out;
}
.igm-nav2__trigger[aria-expanded="true"] .igm-nav2__caret {
  transform: translateY(1px) rotate(180deg);
}

/* --- el panel ---------------------------------------------------------- */
@keyframes igmMenuIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.igm-mega {
  position: absolute; left: 0; right: 0; top: 100%;
  background: #fff; border-top: 1px solid rgba(15, 44, 71, .08);
  box-shadow: 0 40px 70px -38px rgba(15, 44, 71, .42);
  z-index: 45; animation: igmMenuIn .16s ease-out both;
}
.igm-mega[hidden] { display: none; }
.igm-mega__caja {
  width: min(1180px, 100% - 48px); margin-inline: auto;
  padding: 22px 0 30px; background: #fff;
}

.igm-mega__buscar {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding-bottom: 18px; margin-bottom: 18px;
  border-bottom: 1px solid rgba(15, 44, 71, .09);
}
.igm-mega__input {
  flex: 1 1 260px; min-width: 0;
  border: 1px solid var(--igm-border); border-radius: 980px;
  padding: 11px 18px; font-size: 14px; font-family: inherit;
  background: #fff; color: var(--igm-ink);
}
.igm-mega__input::placeholder { color: #A6B2BC; }
.igm-mega__hint { font-size: 12px; color: var(--igm-faint); }

.igm-mega__grilla {
  display: grid; gap: clamp(22px, 3vw, 44px);
  grid-template-columns: minmax(210px, 244px) minmax(0, 1fr) minmax(0, 252px);
}
.igm-mega__riel { display: flex; flex-direction: column; }
.igm-mega__rotulo {
  font-size: 10px; font-weight: 600; letter-spacing: .16em;
  text-transform: uppercase; color: var(--igm-faint); padding: 0 0 12px 14px;
}
.igm-mega__familias { display: flex; flex-direction: column; gap: 1px; }

.igm-riel.igm-riel {
  display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
  text-align: left; color: var(--igm-ink);
  border-left: 2px solid transparent; padding: 11px 14px;
  border-radius: 0 12px 12px 0; transition: background .12s, border-color .12s;
}
.igm-riel.igm-riel:hover { background: var(--igm-wash); color: var(--igm-ink); }
.igm-riel.is-activa { background: var(--igm-wash); border-left-color: var(--igm-teal); }
.igm-riel__n { font-size: 15px; line-height: 1.3; font-weight: 500; }
.igm-riel.is-activa .igm-riel__n { font-weight: 600; color: var(--igm-navy); }
.igm-riel__c {
  /* --igm-faintest da 2,16:1 sobre blanco y no llega a AA: los conteos son
     texto de lectura, no decoración. */
  font-size: 11.5px; font-variant-numeric: tabular-nums; color: var(--igm-muted);
}
.igm-riel.is-activa .igm-riel__c { color: var(--igm-teal); }

.igm-mega__ayuda.igm-mega__ayuda {
  margin-top: 16px; border-radius: 14px; background: var(--igm-navy);
  color: #fff; padding: 16px 18px; display: flex; flex-direction: column; gap: 3px;
  transition: background .14s;
}
.igm-mega__ayuda.igm-mega__ayuda:hover { background: #16405f; color: #fff; }
.igm-mega__ayuda-t { font-size: 13.5px; font-weight: 600; color: #fff; line-height: 1.35; }
.igm-mega__ayuda-c { font-size: 12.5px; color: var(--igm-teal-light); }

.igm-mega__col {
  border-left: 1px solid rgba(15, 44, 71, .09);
  padding-left: clamp(20px, 2.6vw, 40px);
  display: flex; flex-direction: column;
}
.igm-mega__fam { display: flex; flex-direction: column; }
.igm-mega__fam[hidden] { display: none; }
.igm-mega__enc {
  display: flex; justify-content: space-between; align-items: baseline; gap: 20px;
  padding-bottom: 14px; margin-bottom: 8px;
  border-bottom: 1px solid rgba(15, 44, 71, .09);
}
.igm-mega__enc p {
  font-size: 13.5px; color: var(--igm-muted); margin: 0; max-width: 46ch; line-height: 1.5;
}
.igm-mega__enc a { font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.igm-mega__equipos {
  display: grid; gap: 0 20px;
  grid-template-columns: repeat(auto-fit, minmax(min(186px, 100%), 1fr));
}
.igm-mega__eq.igm-mega__eq {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
  padding: 8px 12px; margin-left: -12px; border-radius: 10px;
  color: var(--igm-ink); transition: background .12s;
}
.igm-mega__eq.igm-mega__eq:hover { background: var(--igm-wash); color: var(--igm-ink); }
.igm-mega__eq--pendiente { opacity: .5; }
.igm-mega__eq--pendiente .igm-mega__eq-c { font-style: italic; }
.igm-mega__eq-n { font-size: 14.5px; font-weight: 500; line-height: 1.35; }
.igm-mega__eq-c { font-size: 11.5px; color: var(--igm-muted); white-space: nowrap; }
.igm-mega__vacio { padding: 14px 0 4px; font-size: 14px; color: var(--igm-muted); }

.igm-mega__aparte { display: flex; flex-direction: column; }
.igm-mega__foto.igm-mega__foto {
  align-self: start; display: flex; flex-direction: column;
  border: 1px solid rgba(15, 44, 71, .12); border-radius: 16px; overflow: hidden;
  color: var(--igm-ink); transition: border-color .14s;
}
.igm-mega__foto.igm-mega__foto:hover {
  border-color: rgba(15, 44, 71, .3); color: var(--igm-ink);
}
.igm-mega__foto[hidden], .igm-mega__pista[hidden] { display: none; }
.igm-mega__media {
  aspect-ratio: 4 / 3; background-color: var(--igm-mist);
  background-size: contain; background-position: center; background-repeat: no-repeat;
  mix-blend-mode: multiply;
}
.igm-mega__pie { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 3px; }
.igm-mega__eb {
  font-size: 10px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-teal);
}
.igm-mega__fn { font-size: 15px; font-weight: 600; color: var(--igm-navy); line-height: 1.25; }
.igm-mega__fx { font-size: 12.5px; color: var(--igm-muted); line-height: 1.45; }
.igm-mega__pista.igm-mega__pista {
  align-self: start; display: flex; flex-direction: column; gap: 10px;
  background: var(--igm-wash); border-radius: 16px; padding: 22px 22px 24px;
  color: var(--igm-ink); transition: background .14s;
}
.igm-mega__pista.igm-mega__pista:hover { background: var(--igm-mint); color: var(--igm-ink); }
.igm-mega__pista .igm-mega__fn { line-height: 1.3; }
.igm-mega__pista p { font-size: 13px; color: var(--igm-body); margin: 0; line-height: 1.5; }
.igm-mega__ver { font-size: 12.5px; font-weight: 600; color: var(--igm-link); margin-top: 2px; }

/* Por debajo de 900 px el panel pasa a una sola columna, como el prototipo. */
@media (max-width: 899px) {
  .igm-mega__grilla { grid-template-columns: 1fr; gap: 22px; }
  .igm-mega__col { border-left: 0; padding-left: 0; }
  .igm-mega__aparte { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .igm-mega { animation: none; }
}

/* Elementor le pone position:relative a TODO .elementor-element, así que el
   panel del megamenú se posicionaba contra el widget de 417 px en vez de
   contra la barra. Los tres eslabones del medio vuelven a static y el ancestro
   posicionado pasa a ser #igm-header, que es lo que hace el prototipo. */
body.igm-v2 .igm-nav-widget,
body.igm-v2 #igm-hdr-derecha,
body.igm-v2 #igm-hdr-wrap { position: static; }

/* Astra le pone a los input una tipografía y un color propios con más peso que
   una clase suelta: el buscador del megamenú salía en 16 px y gris pizarra. */
body.igm-v2 .igm-mega__input,
body.igm-v2 input.igm-mega__input {
  font-size: 14px; line-height: 1.4; color: var(--igm-ink);
  font-family: Archivo, system-ui, sans-serif;
  border: 1px solid var(--igm-border); border-radius: 980px;
  padding: 11px 18px; background: #fff; height: auto; box-shadow: none;
}
body.igm-v2 .igm-mega__input:focus {
  outline: 2px solid var(--igm-teal); outline-offset: 1px; border-color: transparent;
}
body.igm-v2 .igm-mega__input::placeholder { color: #A6B2BC; opacity: 1; }

/* ======================================================================
   NAVEGACIÓN: EL CAJÓN LATERAL  (.igm-lat)
   Entra desde la derecha y es un índice, no un desplegable.

   REGLA MAESTRA: el estado ABIERTO es la regla base y el CERRADO se escribe
   sobre selectores que existen en el HTML servido (:not(.is-abierto):not(:target),
   [data-nivel="1"]). Escrito al revés, el día que se encienda UCSS el cajón
   dejaría de abrirse en silencio y sólo en producción.
   ====================================================================== */

/* Texto sólo para lectores de pantalla: no existía en el sistema. */
.igm-vh {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* --- la hamburguesa ---------------------------------------------------- */
.igm-burger.igm-burger {
  width: 44px; height: 44px; margin-right: -11px; display: none;
  flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  border-radius: 980px; flex: none; transition: background .12s;
}
.igm-burger.igm-burger:active { background: var(--igm-mist); }
.igm-burger__barra {
  display: block; width: 22px; height: 1.5px; border-radius: 2px;
  background: var(--igm-navy);
}

/* Mismo corte que el prototipo: 900 px. */
@media (max-width: 899.98px) {
  .igm-nav2, .igm-mega { display: none; }
  .igm-burger.igm-burger { display: flex; }
}
@media (min-width: 900px) {
  .igm-burger.igm-burger, .igm-lat { display: none; }
}

/* --- la raíz ----------------------------------------------------------- */
.igm-lat {
  position: fixed; inset: 0; z-index: 100000;
  --igm-lat-in: 220ms; --igm-lat-out: 160ms;
}
.igm-lat:not(.is-abierto):not(:target) {
  visibility: hidden; pointer-events: none;
  transition: visibility 0s linear var(--igm-lat-out);
}
.igm-lat a { text-decoration: none; }
.igm-lat a:hover { text-decoration: none; }

.igm-lat__velo {
  position: absolute; inset: 0; z-index: 1; display: block;
  background: rgba(15, 44, 71, .38); opacity: 1;
  transition: opacity 160ms linear; -webkit-tap-highlight-color: transparent;
}
.igm-lat:not(.is-abierto):not(:target) .igm-lat__velo {
  opacity: 0; transition: opacity 120ms linear;
}

.igm-lat__caja {
  position: absolute; top: 0; right: 0; z-index: 2;
  width: min(86vw, 400px);
  height: 100vh; height: 100dvh;
  background: #fff; display: flex; flex-direction: column;
  box-shadow: -30px 0 70px -30px rgba(15, 44, 71, .42);
  transform: none; transition: transform var(--igm-lat-in) ease-out;
  touch-action: pan-y; -webkit-tap-highlight-color: transparent;
}
.igm-lat:not(.is-abierto):not(:target) .igm-lat__caja {
  transform: translateX(100%); transition: transform var(--igm-lat-out) ease-in;
}
.igm-lat__caja.is-arrastrando { transition: none; }

/* --- barra superior: la X cae justo sobre la hamburguesa --------------- */
.igm-lat__barra {
  flex: 0 0 auto; height: 74px; padding-inline: 24px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  border-bottom: 1px solid var(--igm-line);
}
.igm-lat__rotulo {
  margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--igm-muted);
}
.igm-lat__x.igm-lat__x {
  width: 44px; height: 44px; margin-right: -11px;
  display: grid; place-items: center; border-radius: 980px;
  color: var(--igm-navy); transition: background .12s;
}
.igm-lat__x.igm-lat__x:hover { background: var(--igm-wash); color: var(--igm-navy); }

/* --- la escena: dos niveles superpuestos ------------------------------- */
.igm-lat__escena { position: relative; flex: 1 1 auto; min-height: 0; }
.igm-lat__n1, .igm-lat__n2 {
  position: absolute; inset: 0; overflow-y: auto;
  overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
}
.igm-lat__n1 {
  display: flex; flex-direction: column; padding-inline: 24px;
  scroll-padding-block-end: 170px;
}
/* El índice se ancla abajo. Sin la columna flex de arriba, este auto es 0. */
.igm-lat__idx { list-style: none; padding: 0; margin: auto 0 8px; }
.igm-lat:not([data-nivel="2"]) .igm-lat__idx { animation: igmMenuIn .16s ease-out both; }

.igm-lat__mayor.igm-lat__mayor {
  display: block; font-size: 26px; font-weight: 600; letter-spacing: -.03em;
  line-height: 1.1; color: var(--igm-navy); padding: 9px 0 11px;
}
.igm-lat__mayor.igm-lat__mayor:hover { color: var(--igm-link); }
.igm-lat__fams { list-style: none; margin: 2px 0 26px; padding: 0; }
.igm-lat__fila { display: flex; align-items: center; gap: 8px; border-top: 1px solid var(--igm-line); }
.igm-lat__fams > li:first-child .igm-lat__fila { border-top: 0; }
.igm-lat__fam.igm-lat__fam {
  flex: 1; display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  padding: 13px 0; font-size: 16px; font-weight: 500; line-height: 1.35;
  color: var(--igm-ink); transition: color .12s;
}
.igm-lat__fam.igm-lat__fam:hover { color: var(--igm-link); }
.igm-lat__c { font-size: 12px; font-variant-numeric: tabular-nums; color: var(--igm-muted); }
.igm-lat__mas {
  flex: 0 0 44px; height: 44px; display: grid; place-items: center;
  border: 0; background: none; color: var(--igm-faintest);
  cursor: pointer; font: inherit; transition: color .14s;
}
.igm-lat__mas:hover { color: var(--igm-teal); background: none; }

.igm-lat__corte { border-top: 1px solid var(--igm-line); padding-top: 14px; }
.igm-lat__sec.igm-lat__sec {
  display: block; font-size: 19px; font-weight: 500; letter-spacing: -.02em;
  line-height: 1.3; color: var(--igm-ink); padding: 13px 0; transition: color .12s;
}
.igm-lat__sec.igm-lat__sec:hover { color: var(--igm-link); }
.igm-lat__mayor.is-actual, .igm-lat__sec.is-actual {
  color: var(--igm-navy); font-weight: 600;
}
.igm-lat .is-actual > span { box-shadow: inset 0 -2px 0 var(--igm-teal); padding-bottom: 3px; }

/* --- nivel 2 ----------------------------------------------------------- */
.igm-lat__n2 {
  background: #fff; padding: 0 24px 20px; transform: none;
  transition: transform 200ms ease-out, visibility 0s;
}
.igm-lat[data-nivel="1"] .igm-lat__n2 {
  transform: translateX(100%); visibility: hidden;
  transition: transform var(--igm-lat-out) ease-in, visibility 0s linear var(--igm-lat-out);
}
.igm-lat__pane[hidden] { display: none; }
.igm-lat__volver {
  position: sticky; top: 0; z-index: 1;
  display: flex; align-items: center; min-height: 48px; width: calc(100% + 48px);
  margin-inline: -24px; padding-inline: 24px;
  border: 0; background: #fff; cursor: pointer; font: inherit;
  font-size: 14px; font-weight: 600; color: var(--igm-link);
  /* Astra pone versalitas y tracking en todos los <button>: acá es texto. */
  text-transform: none; letter-spacing: normal;
}
.igm-lat__volver:hover { background: #fff; color: var(--igm-link-hover); }
.igm-lat__rot {
  font-size: 10px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: var(--igm-faint); margin: 6px 0 6px;
}
.igm-lat__n2t {
  font-size: 22px; font-weight: 600; letter-spacing: -.025em;
  color: var(--igm-navy); margin: 0 0 8px; line-height: 1.2;
}
.igm-lat__blurb { font-size: 14px; line-height: 1.55; color: var(--igm-muted); margin: 0 0 12px; }
.igm-lat__todos.igm-lat__todos {
  display: inline-flex; align-items: center; min-height: 44px;
  font-size: 13px; font-weight: 600; color: var(--igm-link);
}
.igm-lat__eqs { display: flex; flex-direction: column; padding-top: 6px; }
.igm-lat .igm-mega__eq { padding: 12px; min-height: 44px; box-sizing: border-box; margin-left: -12px; }

/* --- pie --------------------------------------------------------------- */
.igm-lat__pie {
  flex: 0 0 auto; background: #fff; border-top: 1px solid var(--igm-line);
  padding: 14px 24px calc(16px + env(safe-area-inset-bottom, 0px));
  display: flex; flex-direction: column; gap: 10px;
}
.igm-lat .igm-mega__ayuda { margin-top: 0; }
.igm-lat__wa.igm-lat__wa {
  display: flex; align-items: center; justify-content: center; gap: 9px;
  min-height: 48px; padding: 0 18px; font-weight: 600; color: var(--igm-navy);
}

/* El fondo no se mueve mientras el cajón está abierto. El position:fixed del
   body lo pone el JavaScript, que además recuerda dónde estaba el scroll. */
html.igm-lat-abierto { overflow: hidden; }
/* Click to Chat es fijo abajo a la IZQUIERDA: justo sobre el velo, que es el
   blanco de cierre principal en un teléfono. */
html.igm-lat-abierto #ht-ctc-chat,
html.igm-lat-abierto .ht-ctc { display: none !important; }

/* Apaisado: con 375 px de alto, barra y pie se comerían 231. */
@media (max-height: 520px) {
  .igm-lat__barra { height: 56px; }
  .igm-lat__mayor.igm-lat__mayor { font-size: 22px; padding: 7px 0 9px; }
  .igm-lat__pie { position: static; }
  .igm-lat__idx { margin-top: 0; }
}

/* Menos movimiento no es menos respuesta: cambia de canal, no desaparece. */
@media (prefers-reduced-motion: reduce) {
  .igm-lat__caja { transform: none; opacity: 1; transition: opacity 120ms linear; }
  .igm-lat:not(.is-abierto):not(:target) .igm-lat__caja { transform: none; opacity: 0; }
  .igm-lat__velo { transition-duration: 120ms; }
  .igm-lat__n2 { opacity: 1; transition: opacity 120ms linear; }
  .igm-lat[data-nivel="1"] .igm-lat__n2 {
    transform: none; opacity: 0;
    transition: opacity 120ms linear, visibility 0s linear 120ms;
  }
  .igm-lat__idx { animation: none; }
}

/* --- correcciones de la revisión -------------------------------------- */

/* Astra pinta de teal el fondo de cualquier <button> al hover y al foco, con
   más peso que una clase suelta. El JS enfoca estos dos a propósito. */
.igm-lat__mas.igm-lat__mas,
.igm-lat__volver.igm-lat__volver {
  background: none; box-shadow: none; text-transform: none; letter-spacing: normal;
}
.igm-lat__mas.igm-lat__mas:hover, .igm-lat__mas.igm-lat__mas:focus,
.igm-lat__mas.igm-lat__mas:active { background: none; color: var(--igm-teal); }
.igm-lat__volver.igm-lat__volver:hover, .igm-lat__volver.igm-lat__volver:focus,
.igm-lat__volver.igm-lat__volver:active { background: #fff; color: var(--igm-link-hover); }

/* El chevron medía 66 px por el padding de los botones de Astra: la columna
   salía 22 px más ancha y desalineada con la cruz de la barra. */
.igm-lat__mas.igm-lat__mas {
  width: 44px; padding: 0; margin-right: -11px;
}

/* Los encabezados del cajón perdían contra body.igm-v2 h1..h4. */
body.igm-v2 .igm-lat__rotulo {
  font-size: 12px; font-weight: 600; letter-spacing: .14em; line-height: 1.4;
  text-transform: uppercase; color: var(--igm-muted); margin: 0;
}
body.igm-v2 .igm-lat__n2t {
  font-size: 22px; font-weight: 600; letter-spacing: -.025em; line-height: 1.2;
  color: var(--igm-navy); margin: 0 0 8px;
}

/* Sin soporte de inert, el índice seguía tabulable debajo del nivel 2.
   visibility conserva el scroll; display:none lo reiniciaría. */
.igm-lat[data-nivel="2"] .igm-lat__n1 { visibility: hidden; }

/* El arrastre del nivel 2 iba medio segundo detrás del dedo: le faltaba
   cortar la transición, que sólo estaba escrita para la caja. */
.igm-lat__n2.is-arrastrando { transition: none; }

/* Entre el primer toque y el momento en que LiteSpeed ejecuta el bundle, el
   cajón ya está abierto por :target pero la clase del <html> todavía no
   existe: sin esto, el fondo scrollea y la burbuja de WhatsApp queda sobre
   el velo, que es el blanco de cierre principal. */
html:has(#igm-lat:target) { overflow: hidden; }
html:has(#igm-lat:target) #ht-ctc-chat,
html:has(#igm-lat:target) .ht-ctc { display: none !important; }

/* iOS acerca la página cuando enfoca un campo de menos de 16 px. */
@media (pointer: coarse) {
  body.igm-v2 .igm-mega__input, body.igm-v2 input.igm-mega__input { font-size: 16px; }
}

/* --- las filas de dos columnas ----------------------------------------
   El prototipo usa 1fr 1fr; en Elementor eso son porcentajes redondeados a
   dos decimales, y dos columnas más el gap llegaban a sumar 1180,04 px: la
   fila se partía y la columna pegajosa se deslizaba por encima de la otra.
   Con flex:1 1 0 el reparto es exacto a cualquier ancho. */
body.igm-v2 [id^="igm-2c-"] > .e-con { flex: 1 1 0; min-width: 0; }
@media (max-width: 767px) {
  body.igm-v2 [id^="igm-2c-"] > .e-con { flex: 1 1 100%; }
}

/* --- correcciones de la auditoria de diseno ------------------------------ */

/* El filete de arriba de cada seccion. Va en el .e-con-inner y no en el
   contenedor: Elementor pone el borde en el .e-con exterior, que ocupa todo
   el ancho de la ventana, y la linea cruzaba la pantalla de lado a lado. */
body.igm-v2 .igm-sec-linea > .e-con > .e-con-inner,
body.igm-v2 .igm-sec-linea > .e-con-inner,
body.igm-v2 [id^="igm-linea-"] > .e-con > .e-con-inner,
body.igm-v2 [id^="igm-linea-"] > .e-con-inner {
  border-top: 1px solid var(--igm-line, rgba(15, 44, 71, .12));
}

/* Al saltar a un ancla, la cabecera fija de 73 px tapaba el titulo. */
body.igm-v2 .e-con[id], body.igm-v2 .igm-sec-linea { scroll-margin-top: 96px; }

/* Volanta teal: la Guia la usa sobre fondo claro, donde el navy se confunde
   con el H1 que viene abajo. */
.igm-eyebrow--teal p, body.igm-v2 .igm-eyebrow--teal p { color: var(--igm-teal); }

/* Preguntas dentro de una columna de articulo: sin filete de arriba, porque
   el H2 ya trae su propia separacion. */
.igm-pregs--art { border-top: 0; }
.igm-pregs--art .igm-preg:first-child { padding-top: 0; }

/* Las migas miden 12 px en el prototipo, tambien fuera del hero centrado. */
.igm-breadcrumb ol { font-size: 12px; }

/* El buscador suelto se estiraba a todo el ancho de la columna. */
.igm-buscador { max-width: 460px; }
.igm-buscador--ancho { max-width: none; }

/* La foto del hero viene con fondo blanco de estudio. */
.igm-heroimg img { mix-blend-mode: multiply; }

/* El dato duro de cada credencial se lee primero. */
.igm-cred b { color: var(--igm-teal); }

/* --- el ancho real del contenido en las vistas de WooCommerce -------------
   Astra sólo aplica la maqueta "page-builder" a entradas y páginas. En la
   ficha y en los archivos de familia el contenido queda dentro de
   contenedores que se encogen, y el rediseño aparecía corrido a la izquierda
   (la ficha) o con las bandas de color cortadas a 1240 px (las familias). */

/* Ficha: WooCommerce mete la plantilla dentro de un <div class="product">
   que es hijo de un contenedor flex y sin ancho se ajusta a su contenido. */
body.igm-v2 .ast-container > .product,
body.igm-v2 .ast-container > .ast-article-single {
  flex: 1 1 100%; width: 100%; max-width: 100%; min-width: 0;
}

/* Familias y tienda: el tope de 1240 px de Astra recortaba las bandas de
   color, que tienen que sangrar de borde a borde como en el resto del sitio.
   El aire lateral lo pone cada sección con sus 24 px, no el contenedor. */
body.igm-v2.archive .ast-container,
body.igm-v2.tax-product_cat .ast-container,
body.igm-v2.post-type-archive-product .ast-container,
body.igm-v2.woocommerce-shop .ast-container {
  max-width: none; width: 100%; padding-left: 0; padding-right: 0;
}

/* El asterisco de campo obligatorio. */
.igm-form__req { color: var(--igm-teal); font-weight: 600; margin-left: 2px; }
.igm-form__legal em { font-style: normal; font-weight: 600; }
