/* Europa 3G · Escala tipográfica compartida, 30/10/2026.
 * Contrato: docs/propuesta-escala-tipografica.md.
 * Diez tamaños en rem; papeles por función y tres cortes de pantalla.
 */
:root {
  --e3g-text-12: .75rem;
  --e3g-text-14: .875rem;
  --e3g-text-16: 1rem;
  --e3g-text-18: 1.125rem;
  --e3g-text-20: 1.25rem;
  --e3g-text-24: 1.5rem;
  --e3g-text-32: 2rem;
  --e3g-text-40: 2.5rem;
  --e3g-text-48: 3rem;
  --e3g-text-64: 4rem;

  --e3g-type-display: var(--e3g-text-40);
  --e3g-type-section: var(--e3g-text-32);
  --e3g-type-page: var(--e3g-text-32);
  --e3g-type-article: var(--e3g-text-24);
  --e3g-type-block: var(--e3g-text-20);
  --e3g-type-lead: var(--e3g-text-18);
  --e3g-type-body: var(--e3g-text-16);
  --e3g-type-help: var(--e3g-text-14);
  --e3g-type-meta: var(--e3g-text-12);
  --e3g-type-price: var(--e3g-text-32);
  --e3g-type-list-price: var(--e3g-text-20);
  --e3g-type-stat: var(--e3g-text-40);
  --e3g-section-padding: 2rem;
}

@media (min-width: 768px) {
  :root {
    --e3g-type-display: var(--e3g-text-48);
    --e3g-type-section: var(--e3g-text-40);
    --e3g-type-article: var(--e3g-text-32);
    --e3g-type-block: var(--e3g-text-24);
    --e3g-type-stat: var(--e3g-text-48);
  }
}

@media (min-width: 992px) {
  :root {
    --e3g-type-display: var(--e3g-text-64);
    --e3g-type-section: var(--e3g-text-48);
    --e3g-type-page: var(--e3g-text-40);
    --e3g-type-lead: var(--e3g-text-20);
    --e3g-type-price: var(--e3g-text-40);
    --e3g-type-stat: var(--e3g-text-64);
    --e3g-section-padding: 3rem;
  }
}

.e3gh {
  --e3gh-h1: var(--e3g-type-display);
  --e3gh-h2: var(--e3g-type-section);
  --e3gh-h3: var(--e3g-type-block);
  --e3gh-sec-y: var(--e3g-section-padding);
}

.e3gm {
  --e3gm-h1: var(--e3g-type-display);
  --e3gm-h2: var(--e3g-type-section);
  --e3gm-h3: var(--e3g-type-block);
  --e3gm-sec-y: var(--e3g-section-padding);
}

.e3gh,
.e3gm {
  font-size: var(--e3g-type-body);
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.e3gh small,
.e3gm small {
  font-size: var(--e3g-type-help);
}

/* La anchura intrínseca del input no debe ensanchar la rejilla al ampliar texto. */
.e3gh .e3gh-search,
.e3gh .e3gh-search__panel,
.e3gm .e3gm-search,
.e3gm .e3gm-search__panel {
  min-width: 0;
  grid-template-columns: minmax(0, 1fr);
}

.e3gh .e3gh-search__tabs,
.e3gm .e3gm-search__tabs {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.e3gh .e3gh-search__input,
.e3gm .e3gm-search__input {
  width: 100%;
  height: auto;
  min-height: 44px;
}

.e3gh .e3gh-hero__h1,
.e3gm .e3gm-hero__h1 {
  font-size: var(--e3g-type-display);
  font-weight: 600;
  line-height: 1.06;
  letter-spacing: -.04em;
  text-wrap: balance;
}

.e3gh .e3gh-h2,
.e3gh .e3gh-taller__h2,
.e3gh .e3gh-tienda__h2,
.e3gh .e3gh-fin__h2,
.e3gm .e3gm-h2 {
  font-size: var(--e3g-type-section);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -.035em;
  text-wrap: balance;
}

.e3gm .e3gmo-head__h1 {
  font-size: var(--e3g-type-page);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.03em;
  white-space: normal;
  text-wrap: balance;
}

.e3gm .e3gm-guia__h2,
.e3gm .e3gm-guia__texto :where(h3) {
  font-size: var(--e3g-type-article);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -.03em;
}

.e3gh .e3gh-story__title,
.e3gh .e3gh-aver__h3,
.e3gh .e3gh-paso__h3,
.e3gh .e3gh-zona__h3,
.e3gm .e3gm-aver__h3,
.e3gm .e3gm-zona__h3,
.e3gm .e3gm-gen__h3,
.e3gm .e3gm-garantia__h3,
.e3gm .e3gmo-lista__titulo,
.e3gm .e3gmo-paso__h3,
.e3gm .e3gmo-sel__titulo,
.e3gm .e3gmo-pres__titulo,
.e3gm .e3gm-guia__texto :where(h4) {
  font-size: var(--e3g-type-block);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -.02em;
}

.e3gh .e3gh-lead,
.e3gh .e3gh-hero__lead,
.e3gh .e3gh-taller__lead,
.e3gh .e3gh-fin__txt,
.e3gm .e3gm-lead,
.e3gm .e3gm-hero__lead,
.e3gm .e3gm-porque__lead,
.e3gm .e3gmo-head__lead,
.e3gh .e3gh-taller__cursos p {
  font-size: var(--e3g-type-lead);
  line-height: 1.5;
  letter-spacing: normal;
}

.e3gh .e3gh-btn,
.e3gh .e3gh-search__label,
.e3gh .e3gh-search__tab,
.e3gh .e3gh-search__input,
.e3gh .e3gh-aver__txt,
.e3gh .e3gh-disp__more,
.e3gh .e3gh-paso__txt,
.e3gh .e3gh-taller__historia,
.e3gh .e3gh-tienda__txt,
.e3gh .e3gh-tienda__horario,
.e3gh .e3gh-zona__txt,
.e3gh .e3gh-pregunta__h3,
.e3gh .e3gh-pregunta__resp,
.e3gh .e3gh-search__opt-name,
.e3gh .e3gh-imei-ok__btn,
.e3gm .e3gm-btn,
.e3gm .e3gm-search__label,
.e3gm .e3gm-search__tab,
.e3gm .e3gm-search__input,
.e3gm .e3gm-aver__txt,
.e3gm .e3gm-tienda__txt,
.e3gm .e3gm-tienda__horario,
.e3gm .e3gm-zona__txt,
.e3gm .e3gm-pregunta__h3,
.e3gm .e3gm-pregunta__resp,
.e3gm .e3gm-search__opt-name,
.e3gm .e3gmo-modelo-mini__nombre,
.e3gm .e3gmo-opcion__label,
.e3gm .e3gmo-reservar,
.e3gm .e3gmo-carrito,
.e3gm .e3gmo-garantia__titulo,
.e3gm .e3gmo-paso__num,
.e3gm .e3gmo-paso__txt,
.e3gm .e3gmo-otro__nombre,
.e3gm .e3gmo-barra__btn,
.e3gm .e3gmo-resumen__aviso,
.e3gh .e3gh-hero__taller-txt strong,
.e3gh .e3gh-taller__clip strong,
.e3gh .e3gh-tienda__recogida strong,
.e3gh .e3gh-imei-ok__txt strong,
.e3gm .e3gm-gen__ayuda-txt strong,
.e3gm .e3gm-hero__contacto a,
.e3gm .e3gm-tienda__recogida strong,
.e3gm .e3gm-garantia__txt p,
.e3gm .e3gm-guia__texto :where(p, li) {
  font-size: var(--e3g-type-body);
  line-height: 1.5;
  letter-spacing: normal;
}

.e3gh .e3gh-hero__sticker,
.e3gh .e3gh-search__help,
.e3gh .e3gh-search__brands,
.e3gh .e3gh-hero__proof-txt,
.e3gh .e3gh-hero__rating,
.e3gh .e3gh-hero__addr,
.e3gh .e3gh-hero__taller-txt,
.e3gh .e3gh-cond__list,
.e3gh .e3gh-story__sub,
.e3gh .e3gh-story__cta,
.e3gh .e3gh-aver__det,
.e3gh .e3gh-aver__cta,
.e3gh .e3gh-resenas__total,
.e3gh .e3gh-resena__nombre,
.e3gh .e3gh-resena__txt,
.e3gh .e3gh-resena__mas,
.e3gh .e3gh-resena__valor,
.e3gh .e3gh-resena__disp,
.e3gh .e3gh-resenas__todas,
.e3gh .e3gh-proceso__nota,
.e3gh .e3gh-taller__vlink,
.e3gh .e3gh-tienda__recogida,
.e3gh .e3gh-fin__pill,
.e3gh .e3gh-fin__cuando,
.e3gh .e3gh-fin__total,
.e3gh .e3gh-fin__nota,
.e3gh .e3gh-search__opt-ver,
.e3gh .e3gh-search__vacio,
.e3gh .e3gh-search__pop-foot,
.e3gh .e3gh-imei-msg,
.e3gh .e3gh-imei-acc,
.e3gm .e3gm-search__help,
.e3gm .e3gm-search__brands,
.e3gm .e3gm-cond__list,
.e3gm .e3gm-aver__det,
.e3gm .e3gm-aver__cta,
.e3gm .e3gm-resenas__total,
.e3gm .e3gm-resena__nombre,
.e3gm .e3gm-resena__txt,
.e3gm .e3gm-resena__mas,
.e3gm .e3gm-resena__valor,
.e3gm .e3gm-resena__disp,
.e3gm .e3gm-resenas__todas,
.e3gm .e3gm-tienda__recogida,
.e3gm .e3gm-search__opt-ver,
.e3gm .e3gm-search__vacio,
.e3gm .e3gm-search__pop-foot,
.e3gm .e3gm-hero__sticker,
.e3gm .e3gm-hero__google,
.e3gm .e3gm-chip,
.e3gm .e3gm-gen__ayuda-cta,
.e3gm .e3gm-aver__otras,
.e3gm .e3gm-porque__caption,
.e3gm .e3gm-equipo__nombre,
.e3gm .e3gm-guia__mas,
.e3gm .e3gmo-cambiar,
.e3gm .e3gmo-head__google,
.e3gm .e3gmo-modelo-mini__cambiar,
.e3gm .e3gmo-lista__nota,
.e3gm .e3gmo-opcion__sintoma,
.e3gm .e3gmo-variante,
.e3gm .e3gmo-donde__op,
.e3gm .e3gmo-resumen__que,
.e3gm .e3gmo-resumen__cuotas,
.e3gm .e3gmo-resumen__nota,
.e3gm .e3gmo-garantia__desc,
.e3gm .e3gmo-pasos__nota,
.e3gm .e3gmo-otro__serie,
.e3gm .e3gmo-otros__todos,
.e3gm .e3gmo-barra__que,
.e3gm .e3gmo-barra__dto,
.e3gm .e3gmo-barra__cuota,
.e3gm .e3gmo-sel__nombre,
.e3gm .e3gmo-gen,
.e3gm .e3gmo-sel__gen,
.e3gm .e3gmo-sel__precio,
.e3gm .e3gmo-pres__pedir,
.e3gm .e3gmo-pres__texto,
.e3gm .e3gmo-pres__enlace,
.e3gh .e3gh-search__help .e3gh-link,
.e3gh .e3gh-hero__help .e3gh-link,
.e3gh .e3gh-taller__clip > span,
.e3gh .e3gh-taller__cursos .e3gh-link,
.e3gh .e3gh-fin__total span,
.e3gh .e3gh-faq__intro .e3gh-link,
.e3gh .e3gh-search__pop-foot a,
.e3gh .e3gh-imei-ok__txt span,
.e3gm .e3gm-search__help .e3gm-link,
.e3gm .e3gm-faq__intro .e3gm-link,
.e3gm .e3gm-search__pop-foot a,
.e3gm .e3gm-hero__domicilio-txt strong,
.e3gm .e3gm-hero__domicilio-txt span,
.e3gm .e3gm-gen__ayuda-txt span,
.e3gm .e3gm-guia__indice a {
  font-size: var(--e3g-type-help);
  line-height: 1.5;
  letter-spacing: normal;
}

.e3gh .e3gh-eyebrow,
.e3gh .e3gh-hero__eyebrow,
.e3gh .e3gh-story__kicker,
.e3gh .e3gh-search__count,
.e3gh .e3gh-resenas__pos,
.e3gh .e3gh-search__pop-head,
.e3gm .e3gm-eyebrow,
.e3gm .e3gm-search__count,
.e3gm .e3gm-resenas__pos,
.e3gm .e3gm-search__pop-head,
.e3gm .e3gm-gen__count,
.e3gm .e3gm-equipo__papel,
.e3gm .e3gmo-head__eyebrow,
.e3gm .e3gmo-resumen__ast {
  font-size: var(--e3g-type-meta);
  line-height: 1.4;
}

.e3gh .e3gh-fin__imp,
.e3gm .e3gmo-resumen__total {
  font-size: var(--e3g-type-price);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.03em;
}

.e3gh .e3gh-resenas__nota,
.e3gh .e3gh-taller__cifras,
.e3gm .e3gm-resenas__nota,
.e3gm .e3gmo-opcion__precio {
  font-size: var(--e3g-type-list-price);
  font-weight: 700;
  line-height: 1.3;
}

.e3gm .e3gmo-barra__total {
  font-size: var(--e3g-text-24);
  font-weight: 700;
  line-height: 1.25;
}

.e3gh .e3gh-hero__stars,
.e3gh .e3gh-resenas__stars,
.e3gm .e3gm-hero__stars,
.e3gm .e3gm-resenas__stars,
.e3gm .e3gmo-head__stars {
  font-size: var(--e3g-text-20);
}

/* Texto completo: la altura acompaña al síntoma, también sin selección.
 * Mantener el padding original: el área clicable del label depende de él.
 * :has() y su alternativa van separados, como en landing-modelo.css.
 */
.e3gm .e3gmo-opcion__sintoma,
.e3gm .e3gmo-opcion.is-elegida .e3gmo-opcion__sintoma {
  display: block;
  overflow: visible;
  white-space: normal;
  text-overflow: clip;
  -webkit-line-clamp: unset;
}

.e3gm .e3gmo-opcion:has(.e3gmo-opcion__radio:checked) .e3gmo-opcion__sintoma {
  display: block;
  overflow: visible;
  white-space: normal;
  text-overflow: clip;
  -webkit-line-clamp: unset;
}

/* Dos columnas de reparaciones solo cuando cada tarjeta tiene ancho suficiente.
 * En portátil, la foto y el panel ya ocupan las dos columnas exteriores.
 */
@media (min-width: 992px) and (max-width: 1399.98px) {
  .e3gm .e3gmo-lista__opciones {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Evitar una tercera escala para títulos largos: el H1 puede envolver.
 * Los precios mantienen su unidad; los textos de ayuda pueden crecer.
 */
.e3gm .e3gmo-head__h1--largo,
.e3gm .e3gmo-head__h1--muy-largo {
  font-size: var(--e3g-type-page);
}

.e3gm .e3gmo-barra__que,
.e3gm .e3gmo-barra__cuota {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
}

/* Las cabeceras partidas necesitan más ancho para los títulos de 40 px. */
@media (min-width: 768px) and (max-width: 991.98px) {
  .e3gm .e3gm-head {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
  }
}

/* La imagen encima deja espacio a nombres como PlayStation a 320 px. */
@media (max-width: 767.98px) {
  .e3gm .e3gmo-otro {
    flex-direction: column;
    align-items: flex-start;
  }
}

.e3gh .e3gh-btn,
.e3gm .e3gm-btn,
.e3gm .e3gmo-reservar,
.e3gm .e3gmo-carrito {
  font-weight: 700;
}

/* Contrato global · 30/10/2026. Los componentes consumen estos papeles;
 * Bootstrap y el contenido editorial necesitan un puente explícito. */
body { font-size: var(--e3g-type-body); }
h1, .h1 { font-size: var(--e3g-type-page); line-height: 1.15; }
h2, .h2 { font-size: var(--e3g-type-article); line-height: 1.2; }
h3, .h3 { font-size: var(--e3g-type-block); line-height: 1.25; }
h4, .h4 { font-size: var(--e3g-text-20); }
h5, .h5 { font-size: var(--e3g-text-18); }
h6, .h6 { font-size: var(--e3g-type-body); }
small, .small, .form-text, .form-control-comment { font-size: var(--e3g-type-help); }
.form-control, .form-select, .input-group-text, .btn,
input:not([type=checkbox]):not([type=radio]):not([type=hidden]), textarea, select {
  font-size: var(--e3g-type-body);
}
/* No afectar a .material-icons: su tamaño representa el dibujo, no texto. */
.page-header h1, .page-header .h1, .e3gc-intro h1, .e3gc-cart-heading h1,
.e3gblog-list__header h1, .e3gblog-post__title, .page-product .e3gp h1,
.e3gr h1 { font-size: var(--e3g-type-page); line-height: 1.15; }
.page-content--cms h2, .e3gblog-post__content h2 { font-size: var(--e3g-type-article); line-height: 1.2; }
.page-content--cms h3, .e3gblog-post__content h3,
.e3gblog-card__title { font-size: var(--e3g-type-block); line-height: 1.25; }
.page-content--cms, .e3gblog-post__content { font-size: var(--e3g-type-body); line-height: 1.5; }
.e3gblog-post__content p, .e3gblog-post__content li { font-size: var(--e3g-type-body); }
.e3gblog-post__content blockquote { font-size: var(--e3g-type-lead); }
.e3gen h1, .e3ge h1 { font-size: var(--e3g-type-display); line-height: 1.06; }
.e3gen h2, .e3ge h2 { font-size: var(--e3g-type-section); line-height: 1.1; }
.e3gen h3 { font-size: var(--e3g-type-block); line-height: 1.25; }
.e3gen .en-intro { font-size: var(--e3g-type-lead); line-height: 1.5; }
.e3gen .en-last h2 { font-size: var(--e3g-type-article); }
.e3gen .en-button { font-size: var(--e3g-type-body); }
