/* Revisión visual 2026-11-09. Activación: enlace al final del <head> de las páginas V1.2.
   Las cabeceras de sección usan el ancho útil de su contenedor, también en móvil.
   Los selectores directos conservan columnas con imagen, tarjetas y texto de artículos. */
body.ttv-page .section-title > :is(h2, h3) {
  max-width: none;
  width: 100%;
  text-wrap: balance;
}

body.ttv-page :is(
  .container > .section-title,
  .col-md-12:not(.col-lg-6, .col-lg-8) > .section-title,
  .ttv-scenarios > .container > div:not([class]) > .section-title
) {
  text-align: center;
}
body.ttv-page :is(
  .container > .section-title,
  .col-md-12:not(.col-lg-6, .col-lg-8) > .section-title,
  .ttv-scenarios > .container > div:not([class]) > .section-title
) > .sub-title {
  width: fit-content;
  max-width: 100%;
  margin-inline: auto;
  text-align: center;
}

/* Introducciones completas de producto: se amplía el bloque, no las rejillas interiores. */
body.ttv-page :is(.tto-wrap > .tto-intro, .psd-module > .container > .psd-intro, .n35-wrap > .n35-intro) {
  max-width: none;
  width: 100%;
  text-align: center;
}

/* Personalidad utiliza una columna completa, aunque su antigua introducción quedaba limitada a 900 px. */
body.ttv-page .ttv-personality-intro .services-details-content {
  max-width: none;
}
body.ttv-page .ttv-personality-intro .services-details-content > p {
  margin-inline: auto;
}

/* Solo cabeceras que preceden contenido de ancho completo; se excluye la composición editorial dividida. */
body.ttv-page :is(
  .ttv-section > .container:not(.ttv-editorial-split) > h2,
  .ttv-section > .container > .ttv-copy:not(.ttv-editorial-split) > h2,
  .container > .section-title > :is(h2, h3),
  .col-md-12:not(.col-lg-6, .col-lg-8) > .section-title > :is(h2, h3),
  .ttv-scenarios > .container > div:not([class]) > .section-title > :is(h2, h3),
  .portfolio-details-image > h2,
  .ttv-personality-intro .services-details-content > h2,
  .ttv-section > blockquote > h2,
  .ttv-section > .container > .ttv-copy > section > h2#continue-cycle,
  .pricing-container > .pricing-terms > h2,
  .ttv-platform > h3,
  .tto-wrap:not(.tto-grid, .tto-three, .tto-four) > h2,
  .n35-wrap:not(.n35-hero-grid) > h2,
  .tto-wrap > .tto-intro > :is(h2, p),
  .psd-module > .container > .psd-intro > :is(h2, p),
  .n35-wrap > .n35-intro > :is(h2, p),
  .ttv-section > .container:not(.ttv-editorial-split) > h2 + p,
  .ttv-personality-intro .services-details-content > h2 + p,
  .ttv-section > .container > .ttv-copy:not(.ttv-editorial-split) > h2 + p,
  .ttv-section > .container > .ttv-copy > section > h2#continue-cycle + p,
  .container > .section-title > p,
  .col-md-12:not(.col-lg-6, .col-lg-8) > .section-title > p,
  .ttv-platform > p:not(.ttv-callout),
  .tto-wrap:not(.tto-grid, .tto-three, .tto-four) > h2 + p,
  .n35-wrap:not(.n35-hero-grid) > h2 + p
) {
  max-width: none;
  width: 100%;
  margin-inline: auto;
  text-align: center !important;
  text-align-last: auto !important;
}

body.ttv-page :is(.tto-intro, .psd-intro, .n35-intro) > h2,
body.ttv-page .ttv-section > .container > h2 {
  text-wrap: balance;
}

/* Las etiquetas que acompañan estas cabeceras comparten su eje visual. */
body.ttv-page :is(.tto-wrap > .tto-intro, .psd-module > .container > .psd-intro, .n35-wrap > .n35-intro) > :is(.tto-eyebrow, .psd-kicker, .n35-eyebrow),
body.ttv-page .n35-wrap:has(> h2) > .n35-eyebrow {
  text-align: center !important;
}
