:root {
  --cc-site-ink: #102a36;
  --cc-site-ink-soft: #38515c;
  --cc-site-blue: #086a9b;
  --cc-site-teal: #0d7b72;
  --cc-site-paper: #fbfcfb;
  --cc-site-line: #d7e1e2;
  --cc-site-shell: 1240px;
  --cc-site-content: 980px;
  --cc-font-body: Helvetica, Verdana, Arial, sans-serif;
  --cc-font-display: Helvetica, Verdana, Arial, sans-serif;
}

body.cc-site-shell,
body.cc-site-shell button,
body.cc-site-shell input,
body.cc-site-shell select,
body.cc-site-shell textarea {
  font-family: var(--cc-font-body);
}

body.cc-site-shell {
  color: var(--cc-site-ink);
  background: var(--cc-site-paper);
}

body.cc-site-shell #masthead {
  z-index: 50;
  border-bottom: 1px solid rgba(16, 42, 54, .12);
  background: #fff;
  box-shadow: 0 2px 8px rgba(16, 42, 54, .10);
}

body.cc-site-shell #masthead .site-primary-header-wrap.ast-container {
  width: 100%;
  max-width: var(--cc-site-shell);
  padding-right: 24px;
  padding-left: 24px;
}

body.cc-site-shell #masthead .main-header-menu > .menu-item > .menu-link {
  color: #214d69;
  text-decoration: none;
  white-space: nowrap;
}

body.cc-site-shell #masthead .main-header-menu > .menu-item:hover > .menu-link,
body.cc-site-shell #masthead .main-header-menu > .current-menu-item > .menu-link,
body.cc-site-shell #masthead .main-header-menu > .current-menu-ancestor > .menu-link {
  color: var(--cc-site-blue);
}

body.cc-site-shell #masthead a:focus-visible,
body.cc-site-shell #masthead button:focus-visible {
  outline: 3px solid var(--cc-site-teal);
  outline-offset: 3px;
}

/* Un mismo ancho de cabecera para páginas de marca, guías, fichas y archivos. */
@media (min-width: 922px) {
  body.cc-site-shell #masthead .site-primary-header-wrap > .ast-builder-grid-row {
    flex-wrap: nowrap;
    align-items: center;
    min-height: 76px;
  }

  body.cc-site-shell #masthead .ast-builder-menu-1,
  body.cc-site-shell #masthead #ast-hf-menu-1 {
    min-width: 0;
    flex: 1 1 auto;
  }

  body.cc-site-shell #masthead #ast-hf-menu-1 {
    width: auto;
    flex-wrap: nowrap;
    justify-content: flex-end;
  }

  body.cc-site-shell #masthead #ast-hf-menu-1 > .menu-item {
    flex: 0 0 auto;
  }

  body.cc-site-shell #masthead #ast-hf-menu-1 > .menu-item > .menu-link {
    min-height: 76px;
    padding-right: 7px;
    padding-left: 7px;
  }
}

@media (min-width: 1101px) {
  body.cc-site-shell #masthead #ast-hf-menu-1 > .menu-item > .menu-link {
    padding-right: clamp(10px, 1vw, 17px);
    padding-left: clamp(10px, 1vw, 17px);
  }
}

/* Las superficies editoriales heredadas comparten papel, ancho y jerarquía. */
body.cc-site-shell.tax-product_cat,
body.cc-site-shell.single-product,
body.cc-site-shell.single-post {
  color: var(--cc-site-ink);
  background: var(--cc-site-paper);
}

body.cc-site-shell.tax-product_cat .site-content > .ast-container,
body.cc-site-shell.single-product .site-content > .ast-container,
body.cc-site-shell.single-post .site-content > .ast-container {
  box-sizing: border-box;
  width: 100%;
  max-width: calc(var(--cc-site-content) + 48px);
  margin-right: auto;
  margin-left: auto;
  padding-right: 24px;
  padding-left: 24px;
}

body.cc-site-shell.single-post #primary {
  width: 100%;
  max-width: 100%;
  margin-right: 0;
  margin-left: 0;
}

body.cc-site-shell.single-post .site .site-content #primary article.ast-article-single {
  padding-right: 0;
  padding-left: 0;
}

body.cc-site-shell.tax-product_cat .woocommerce-products-header__title,
body.cc-site-shell.single-product .product_title,
body.cc-site-shell.single-post .entry-title {
  color: var(--cc-site-ink);
  font-family: var(--cc-font-display);
  letter-spacing: -.025em;
}

body.cc-site-shell.tax-product_cat .woocommerce-breadcrumb,
body.cc-site-shell.single-product .woocommerce-breadcrumb,
body.cc-site-shell.single-post .entry-meta {
  color: #657980;
}

/*
 * 🚨 `width: 100%` NO es decorativo, sujeta la caja.
 *
 * Esta portada vive dentro de `.ccm-video-frame`, que lleva `aspect-ratio: 16/9`.
 * Cuando el `min-height` de aqui gana a la altura que sale de la proporcion —y en
 * movil gana: a 358 px de ancho la proporcion pide 201 px y el minimo son 240—,
 * el navegador hace lo contrario de lo que uno espera y **deduce el ANCHO de la
 * altura**: 240 x 16/9 = 427 px. En un viewport de 390 px eso se sale.
 *
 * Con el ancho fijado, la proporcion solo puede decidir la altura, y el minimo se
 * limita a estirarla hacia abajo. Medido en /el-laboratorio/ a 390 px: 12
 * desbordes antes, cero despues.
 */
.cc-youtube-private {
  display: grid;
  width: 100%;
  min-height: 240px;
  place-items: center;
  overflow: hidden;
  background:
    radial-gradient(circle at 80% 10%, rgba(13, 123, 114, .28), transparent 34%),
    linear-gradient(135deg, #102a36, #174b62);
}

.cc-youtube-private__button {
  display: grid;
  width: 100%;
  min-height: inherit;
  padding: 28px;
  border: 0;
  place-items: center;
  align-content: center;
  gap: 10px;
  color: #fff;
  background: transparent;
  cursor: pointer;
  text-align: center;
}

.cc-youtube-private__button:hover {
  background: rgba(255, 255, 255, .07);
}

.cc-youtube-private__button:focus-visible {
  outline: 3px solid #9be7dc;
  outline-offset: -6px;
}

.cc-youtube-private__button strong {
  font-size: 1.08rem;
}

.cc-youtube-private__button small {
  max-width: 300px;
  color: #dceced;
  font-size: .82rem;
  line-height: 1.45;
}

.cc-youtube-private__play {
  width: 52px;
  height: 52px;
  border: 2px solid rgba(255, 255, 255, .72);
  border-radius: 50%;
  background: rgba(255, 255, 255, .12);
  position: relative;
}

.cc-youtube-private__play::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 52%;
  border-top: 9px solid transparent;
  border-bottom: 9px solid transparent;
  border-left: 14px solid #fff;
  transform: translate(-40%, -50%);
}

.cc-youtube-private iframe {
  width: 100%;
  height: 100%;
  min-height: inherit;
  border: 0;
}

@media (max-width: 1100px) {
  body.cc-site-shell #masthead .site-primary-header-wrap.ast-container {
    padding-right: 16px;
    padding-left: 16px;
  }

  body.cc-site-shell #masthead button.menu-toggle,
  body.cc-site-shell #masthead button.main-header-menu-toggle {
    min-width: 44px;
    min-height: 44px;
  }

  body.cc-site-shell #ast-mobile-popup .ast-mobile-popup-inner {
    background: #fff;
  }

  body.cc-site-shell #ast-mobile-popup .main-header-menu > .menu-item > .menu-link {
    display: flex;
    align-items: center;
    min-height: 48px;
  }
}

@media (max-width: 920px) {
  body.cc-site-shell.tax-product_cat .site-content > .ast-container,
  body.cc-site-shell.single-product .site-content > .ast-container,
  body.cc-site-shell.single-post .site-content > .ast-container {
    padding-right: 20px;
    padding-left: 20px;
  }

  body.cc-site-shell.single-post .comment-form .ast-row,
  body.cc-site-shell.single-post .comments-area .ast-row {
    width: auto;
    max-width: 100%;
    margin-right: 0;
    margin-left: 0;
  }

  body.cc-site-shell.single-post .comment-form :is(input, textarea) {
    box-sizing: border-box;
    max-width: 100%;
  }
}

/*
 * Bloques de Spectra dentro de la DESCRIPCION DE UN TERMINO
 * =========================================================
 *
 * 🚨 Spectra genera su CSS POR ENTRADA y lo inyecta en linea. Comprobado
 * sirviendo las dos paginas: en `/robots-de-cocina-para-bebes/` hay un <style>
 * con reglas `uagb`; en `/categoria-producto/aspiradores-escoba-para-mascotas/`
 * hay CERO, y ninguna hoja de Spectra. Una descripcion de termino no es una
 * entrada, asi que su CSS no se genera nunca.
 *
 * Lo grave no era el maquetado —el texto y los titulares caen en flujo normal y
 * se leen bien— sino el ICONO: un `<svg>` sin dimensionar se estira hasta el
 * ancho del contenedor. La huella de la categoria de mascotas se servia a
 * 980x980 px, y la pagina medida daba 45.596 px de alto.
 *
 * Estas reglas solo devuelven al icono su tamaño y lo colocan junto al titulo,
 * que es lo que dice su propia clase `uagb-infobox-icon-left-title`.
 *
 * ⚠️ Acotado a `.term-description` a proposito: en las entradas de verdad manda
 * el CSS de Spectra y aqui no se pinta nada.
 *
 * 📌 Es un PUENTE, no la solucion. El arreglo de fondo es el Bloque E, que
 * reconstruye cada categoria por el flujo F y deja el marcado limpio: las otras
 * 25 categorias no tienen ni una clase `uagb-`. Cuando estas dos pasen por ahi,
 * esto sobra.
 */
.term-description .uagb-ifb-left-title-image {
  display: flex;
  align-items: center;
  gap: 14px;
}

.term-description .uagb-ifb-icon-wrap {
  flex: 0 0 36px;
  width: 36px;
  max-width: 36px;
}

.term-description .uagb-ifb-icon-wrap svg {
  display: block;
  width: 100%;
  height: auto;
}
