/* ==========================================================================
   Cap Vermell — base común del diseño
   - Header y menús: NO se tocan (nada aquí apunta a .elementor-location-header).
   - Solo clases genéricas de Elementor (widgets posts / divider / image / heading),
     nunca IDs (.elementor-element-xxxx): editar en Elementor no rompe nada.
   - El titular es el widget de posts cuyo único artículo lleva la etiqueta «titular».
   ========================================================================== */

body.cv-ds {
  --cv-red: #DF0000;          /* marca, 5,1:1 sobre blanco */
  --cv-red-dark: #B30000;
  --cv-ink: #1C1F23;          /* titulares */
  --cv-text: #33383E;         /* lectura, 11:1 */
  --cv-muted: #54595F;        /* gris de marca (header y menús), 7:1 */
  --cv-line: #E2E4E7;
  --cv-soft: #F4F4F5;
  --cv-serif: "Lora", Georgia, "Times New Roman", serif;   /* la del menú: misma familia */
  --cv-sans: "Source Sans Pro", "Source Sans 3", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  --cv-gap: clamp(20px, 2.4vw, 32px);
  --cv-frame: 16 / 9;         /* marco de miniaturas (la mayoría de fotos ya son 16:9); la imagen va entera dentro */
  -webkit-text-size-adjust: 100%;
  text-rendering: optimizeLegibility;
}

/* ---- Imágenes: nunca más anchas que su contenedor (arregla el scroll lateral en tablet) ---- */
body.cv-ds :is(main, .elementor-location-single, .elementor-location-archive) .elementor-widget-image :is(.elementor-widget-container, a, figure) { max-width: 100%; }
body.cv-ds :is(main, .elementor-location-single, .elementor-location-archive) .elementor-widget-image img { max-width: 100% !important; height: auto !important; }

/* ==========================================================================
   Tarjetas de noticia (cualquier widget de posts)
   ========================================================================== */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-posts-container { row-gap: calc(var(--cv-gap) * 1.4) !important; column-gap: var(--cv-gap) !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post { display: flex; flex-direction: column; min-width: 0; }

/* Marco fijo + imagen ENTERA (contain) sobre su propia versión difuminada */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__thumbnail__link { width: 100% !important; margin: 0 0 14px !important; display: block; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__thumbnail,
body.cv-ds .cv-frame {
  position: relative !important;
  padding-bottom: 0 !important;
  aspect-ratio: var(--cv-frame);
  overflow: hidden;
  background: var(--cv-soft);
  border-radius: 2px;
  isolation: isolate;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__thumbnail::before,
body.cv-ds .cv-frame::before {
  content: "";
  position: absolute;
  inset: -24px;
  background: var(--cv-bg, none) center / cover no-repeat;
  filter: blur(22px) saturate(1.15);
  opacity: .5;
  z-index: -1;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__thumbnail img,
body.cv-ds .cv-frame img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: contain !important;
  transform: none !important;
  top: 0 !important; left: 0 !important;
  transition: transform .4s ease;
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post:hover .elementor-post__thumbnail img { transform: scale(1.025) !important; }
}

/* Texto de la tarjeta */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__text { display: flex; flex-direction: column; gap: 8px; padding: 0 !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__title,
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__title a {
  font-family: var(--cv-serif) !important;
  font-size: clamp(1.125rem, 1.02rem + .35vw, 1.3rem) !important;
  line-height: 1.28 !important;
  font-weight: 700 !important;
  letter-spacing: -.005em !important;
  text-transform: none !important;
  margin: 0 !important;
  text-wrap: pretty;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__title a { text-decoration: none !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__title a:hover { text-decoration: underline !important; text-decoration-thickness: 1px !important; text-underline-offset: .18em; }
/* Toda la tarjeta es clicable sin duplicar enlaces para el lector de pantalla */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post { position: relative; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }

body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__meta-data {
  order: -1;                                 /* fecha encima del título, como en prensa */
  margin: 0 !important;
  font-family: var(--cv-sans) !important;
  font-size: .8125rem !important;
  line-height: 1.3 !important;
  font-weight: 600 !important;
  letter-spacing: .02em;
  color: var(--cv-muted) !important;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__meta-data * { font: inherit !important; color: inherit !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__meta-data .elementor-post-author { font-weight: 700 !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__meta-data .elementor-post-date::before { content: none; }

body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__excerpt { margin: 0 !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__excerpt,
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-post__excerpt p {
  font-family: var(--cv-sans) !important;
  font-size: 1rem !important;
  line-height: 1.5 !important;
  font-weight: 400 !important;
  color: var(--cv-text) !important;
  margin: 0 !important;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* «Carregar més» */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-button {
  font-family: var(--cv-sans) !important;
  font-size: .9375rem !important;
  font-weight: 700 !important;
  letter-spacing: .02em;
  color: var(--cv-ink) !important;
  background: #fff !important;
  border: 1.5px solid var(--cv-ink) !important;
  border-radius: 999px !important;
  padding: 12px 26px !important;
  min-height: 44px;
  transition: background .15s, color .15s;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-button:hover { background: var(--cv-ink) !important; color: #fff !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .e-load-more-spinner { margin-top: 12px; }

/* ==========================================================================
   Títulos de sección (widget «Divisor» con texto)
   ========================================================================== */
body.cv-ds .elementor-widget-divider--view-line_text { margin-top: clamp(28px, 4vw, 52px) !important; }
body.cv-ds .elementor-widget-divider--view-line_text .elementor-divider__text {
  font-family: var(--cv-serif) !important;
  font-size: clamp(1.25rem, 1.1rem + .6vw, 1.6rem) !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  color: var(--cv-ink) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

/* ==========================================================================
   Titular de portada — estructura común; el aspecto final está en cv-portada.css
   ========================================================================== */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-posts-container { display: block !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post { display: grid !important; gap: 18px clamp(24px, 3vw, 48px); align-items: center; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__thumbnail__link { margin: 0 !important; grid-area: img; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__text { grid-area: txt; gap: 14px; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__text::before {
  content: "Titular";
  font: 700 .75rem/1 var(--cv-sans);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--cv-red);
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__title,
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__title a {
  font-size: clamp(1.75rem, 1.05rem + 3vw, 3.1rem) !important;
  line-height: 1.1 !important;
  letter-spacing: -.015em !important;
  text-wrap: balance;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__excerpt,
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__excerpt p {
  font-size: clamp(1.0625rem, 1rem + .3vw, 1.25rem) !important;
  line-height: 1.5 !important;
  -webkit-line-clamp: 4;
}
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post__meta-data { order: 0; font-size: .875rem !important; }
/* Móvil y tablet: siempre imagen arriba, texto debajo */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) .elementor-post { grid-template-areas: "img" "txt"; grid-template-columns: 100%; }
/* Separación bajo el titular */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) { margin-bottom: clamp(8px, 2vw, 24px) !important; }
/* El filete que Elementor pone justo después del titular sobra: cv-portada.css ya lo separa */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts):has(.elementor-post.tag-titular:only-child) ~ .elementor-widget-divider--view-line { display: none !important; }

/* ==========================================================================
   Noticia individual
   ========================================================================== */
body.cv-ds .elementor-widget-theme-post-title .elementor-heading-title {
  font-family: var(--cv-serif) !important;
  font-size: clamp(1.9rem, 1.2rem + 2.8vw, 3rem) !important;
  line-height: 1.12 !important;
  font-weight: 700 !important;
  letter-spacing: -.015em !important;
  text-transform: none !important;
  color: var(--cv-ink) !important;
  text-wrap: balance;
}
body.cv-ds .elementor-widget-post-info .elementor-icon-list-text,
body.cv-ds .elementor-widget-post-info .elementor-icon-list-text a {
  font-family: var(--cv-sans) !important;
  font-size: .9375rem !important;
  font-weight: 600 !important;
  color: var(--cv-muted) !important;
}
body.cv-ds .elementor-widget-post-info a .elementor-icon-list-text { color: var(--cv-red-dark) !important; }
body.cv-ds .elementor-widget-theme-post-content { max-width: 70ch; }
body.cv-ds .elementor-widget-theme-post-content :is(p, li) {
  font-family: var(--cv-sans) !important;
  font-size: clamp(1.0625rem, 1rem + .25vw, 1.1875rem) !important;
  line-height: 1.7 !important;
  color: var(--cv-text) !important;
}
body.cv-ds .elementor-widget-theme-post-content p { margin: 0 0 1.1em !important; }
body.cv-ds .elementor-widget-theme-post-content :is(h2, h3, h4) { font-family: var(--cv-serif) !important; color: var(--cv-ink) !important; line-height: 1.25 !important; margin: 1.6em 0 .5em !important; }
body.cv-ds .elementor-widget-theme-post-content a { color: var(--cv-red-dark); text-decoration: underline; text-underline-offset: .18em; }
body.cv-ds .elementor-widget-theme-post-content img { max-width: 100%; height: auto; }
body.cv-ds .elementor-widget-theme-post-content :is(figcaption, .wp-caption-text) { font: 400 .875rem/1.45 var(--cv-sans); color: var(--cv-muted); margin-top: 6px; }
body.cv-ds .elementor-widget-theme-post-content blockquote { border-left: 0; margin: 1.5em 0; padding: 0 0 0 1.2em; box-shadow: inset 2px 0 0 var(--cv-red); font-family: var(--cv-serif); font-style: italic; }

/* ==========================================================================
   Accesibilidad y detalles globales
   ========================================================================== */
body.cv-ds a:focus-visible,
body.cv-ds button:focus-visible,
body.cv-ds input:focus-visible,
body.cv-ds [tabindex]:focus-visible {
  outline: 3px solid var(--cv-ink) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 6px #fff !important;
  border-radius: 2px;
}
body.cv-ds .elementor-post-author,
body.cv-ds .elementor-post-author * { color: var(--cv-muted) !important; }
body.cv-ds [class*="mec-"] a.mec-load-month-link,
body.cv-ds .mec-load-month-link { color: var(--cv-muted) !important; }
@media (prefers-reduced-motion: reduce) {
  body.cv-ds * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* Pie */
body.cv-ds .elementor-location-footer :is(p, span, a, .elementor-heading-title) { font-family: var(--cv-sans) !important; }
body.cv-ds .elementor-location-footer a { text-underline-offset: .18em; }

/* Paginación «« Anterior · Següent »» de los widgets de un solo post */
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-pagination { font: 600 .9375rem/1.2 var(--cv-sans) !important; margin-top: 10px !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-pagination :is(a, span) { display: inline-block; padding: 8px 6px; color: var(--cv-muted) !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-pagination a:hover { color: var(--cv-red-dark) !important; }
body.cv-ds :is(.elementor-widget-posts, .elementor-widget-archive-posts) .elementor-pagination { position: relative; z-index: 2; }

/* Agenda (Modern Events Calendar): misma tipografía que el resto, sin espaciados raros */
body.cv-ds .mec-wrap :is(h1, h2, h3, h4, h5, h6, .mec-table-side-title, .mec-table-side-day, .mec-calendar-events-sec .mec-table-side-title) {
  font-family: var(--cv-sans) !important;
  letter-spacing: .02em !important;
}
body.cv-ds .mec-wrap .mec-event-title,
body.cv-ds .mec-wrap .mec-event-title a { font-family: var(--cv-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-weight: 700 !important; color: var(--cv-ink) !important; }
body.cv-ds .mec-wrap .mec-calendar-header h2 { font-family: var(--cv-serif) !important; letter-spacing: 0 !important; color: var(--cv-ink) !important; }
body.cv-ds .mec-wrap .mec-calendar dt { font-family: var(--cv-sans) !important; }

/* Pie: texto legible (mín. 14 px) */
body.cv-ds .elementor-location-footer :is(p, span, a, li, .elementor-heading-title) { font-size: max(.875rem, 1em) !important; line-height: 1.5 !important; }

/* Texto de los widgets de texto: el gris global del kit (#7A7A7A) no llega a AA.
   Sin !important: si un widget tiene su color propio en Elementor, se respeta. */
body.cv-ds .elementor:not(.elementor-location-header) .elementor-widget-text-editor { color: var(--cv-text); }

/* ==========================================================================
   Páginas interiores
   ========================================================================== */

/* Título de página: cv-design.php marca con .cv-page-title el encabezado cuyo texto coincide con el
   título de la página. Cambiar textos, mover o sustituir widgets en Elementor no lo rompe.
   (Usa anidamiento CSS: Chrome/Edge 112+, Safari 16.5+, Firefox 117+.) */
body.cv-ds .cv-page-title {
  margin: clamp(8px, 2vw, 20px) 0 clamp(20px, 3vw, 32px) !important;
  padding-inline: 0 !important;
  width: 100% !important;
  max-width: 100% !important;

  & :is(.elementor-heading-title, .elementor-divider__text) {
    font-family: var(--cv-serif) !important;
    font-size: clamp(1.9rem, 1.3rem + 2.4vw, 2.75rem) !important;
    font-weight: 700 !important;
    line-height: 1.12 !important;
    letter-spacing: -.015em !important;
    color: var(--cv-ink) !important;
    text-transform: none !important;
    text-align: left !important;
    text-wrap: balance;
  }
  & .elementor-divider { text-align: left !important; }
  & .elementor-divider-separator { justify-content: flex-start !important; }
  & .elementor-divider-separator::before { display: none !important; }
  & .elementor-divider__text { padding: 0 !important; margin: 0 20px 0 0 !important; }
  &.elementor-widget-heading { padding-bottom: 12px; border-bottom: 1px solid var(--cv-red); }
}

/* Encabezados de widgets y fichas (libros, anuarios, columnas): una familia y un color */
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="popup"]) .elementor-widget-heading .elementor-heading-title {
  font-family: var(--cv-serif) !important;
  color: var(--cv-ink);
  letter-spacing: -.005em;
  text-wrap: balance;
}
body.cv-ds :is(.e-loop-item, .elementor-loop-container > *) .elementor-widget-heading .elementor-heading-title {
  font-size: clamp(1.2rem, 1rem + .8vw, 1.6rem) !important;
  line-height: 1.22 !important;
}

/* Botones de contenido («Llegir», «Enviar»...): mismo estilo que «Carregar més» */
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="popup"]) .elementor-widget-button:not(.elementor-popup-modal *, [data-elementor-type="popup"] *) .elementor-button,
body.cv-ds .elementor-widget-form .elementor-button {
  font-family: var(--cv-sans) !important;
  font-size: .9375rem !important;
  font-weight: 700 !important;
  letter-spacing: .02em;
  border-radius: 999px !important;
  padding: 11px 24px !important;
  min-height: 44px;
  transition: background .15s, color .15s;
}

/* Formularios (Contacta) */
body.cv-ds .elementor-widget-form :is(input:not([type=checkbox]):not([type=radio]), textarea, select) {
  font: 400 1rem/1.4 var(--cv-sans) !important;
  color: var(--cv-ink) !important;
  border: 1px solid #9AA0A6 !important;
  border-radius: 4px !important;
  padding: 10px 12px !important;
  min-height: 44px;
  background: #fff !important;
}
body.cv-ds .elementor-widget-form :is(input, textarea):focus { border-color: var(--cv-ink) !important; outline: 2px solid var(--cv-ink) !important; outline-offset: 1px; }
body.cv-ds .elementor-widget-form label { font: 600 .9375rem/1.3 var(--cv-sans) !important; color: var(--cv-ink) !important; }

/* Skin «Tarjetas» de Elementor (búsqueda, algunos archivos): conserva el relleno interior */
body.cv-ds .elementor-post__card { border-radius: 4px !important; overflow: hidden; }
body.cv-ds .elementor-post__card .elementor-post__text { padding: 16px 20px 4px !important; }
body.cv-ds .elementor-post__card .elementor-post__thumbnail__link { margin: 0 !important; }
body.cv-ds .elementor-post__card .elementor-post__meta-data { order: 0; padding: 12px 20px !important; border-top: 1px solid var(--cv-line) !important; }
body.cv-ds .elementor-post__card .elementor-post__badge { font: 700 .8125rem/1 var(--cv-sans) !important; padding: 6px 10px !important; }

/* Texto suelto del contenido (divs sin clase que pega el editor): mismo color que los párrafos */
body.cv-ds .elementor-widget-theme-post-content div:not([class]) { color: var(--cv-text) !important; }

/* Evento individual (Modern Events Calendar) */
body.cv-ds .mec-single-event .mec-single-title { font-family: var(--cv-serif) !important; font-size: clamp(1.75rem, 1.2rem + 2vw, 2.5rem) !important; line-height: 1.15 !important; color: var(--cv-ink) !important; font-weight: 700 !important; }
body.cv-ds .mec-single-event :is(.mec-start-date-label, .mec-events-abbr, .mec-single-event-date dd, .mec-single-event-time dd) { color: var(--cv-text) !important; font-family: var(--cv-sans) !important; font-size: .9375rem !important; }
body.cv-ds .mec-single-event :is(.mec-event-meta h3, .mec-event-meta dt) { font-family: var(--cv-sans) !important; color: var(--cv-ink) !important; letter-spacing: .02em !important; }
body.cv-ds .mec-single-event .mec-event-content :is(p, li) { font: 400 1.0625rem/1.65 var(--cv-sans) !important; color: var(--cv-text) !important; }

/* Firma del artículo (autor · fecha · categoría) en una línea, como en prensa */
body.cv-ds .elementor-widget-post-info { flex: 1 1 auto !important; align-self: stretch !important; }
body.cv-ds .elementor-widget-post-info .elementor-icon-list-items { display: flex !important; flex-wrap: wrap; align-items: baseline; gap: 2px 0; }
body.cv-ds .elementor-widget-post-info .elementor-icon-list-item { width: auto !important; margin: 0 !important; padding: 0 !important; }
/* Título del episodio de podcast (lo pinta cv-site.php) */
body.cv-ds .cv-episode-title {
  max-width: 1140px; margin: clamp(24px, 4vw, 48px) auto clamp(16px, 2vw, 24px); padding: 0 0 14px;
  font: 700 clamp(1.75rem, 1.2rem + 2vw, 2.5rem)/1.2 var(--cv-serif); color: var(--cv-ink);
  border-bottom: 1px solid var(--cv-line);
}
/* Textos grises de MEC (agenda de la portada) sin contraste suficiente */
body.cv-ds .mec-event-detail, body.cv-ds .mec-event-loc-place { color: var(--cv-muted) !important; }
/* Campo sin valor (p. ej. editorial de un libro): no se muestra solo el icono */
body.cv-ds .elementor-widget-post-info .elementor-icon-list-item:has(> .elementor-icon-list-text:empty) { display: none !important; }
body.cv-ds .elementor-widget-post-info .elementor-icon-list-item:not(:last-child)::after {
  content: "·" !important; position: static !important; border: 0 !important; width: auto !important; height: auto !important;
  margin: 0 10px; color: var(--cv-muted); font-weight: 700;
}
@media (max-width: 767px) {
  body.cv-ds .elementor-widget-share-buttons .elementor-grid { justify-content: flex-start !important; }
}

/* Agenda: tamaños mínimos legibles */
body.cv-ds .mec-wrap :is(.mec-load-month-link, .mec-table-side-title, .mec-event-time, .mec-calendar-events-side .mec-table-side-day) { font-size: max(.875rem, 1em) !important; }
body.cv-ds .mec-wrap .mec-event-time { font-size: .8125rem !important; }

/* ==========================================================================
   Paleta única: los colores y fuentes globales del kit de Elementor se reconducen
   a los de la marca en todo el contenido (no en el header, que se queda tal cual).
   Así, cualquier widget nuevo que use «colores globales» ya sale coherente.
   ========================================================================== */
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]) {
  --e-global-color-text: var(--cv-text);           /* antes #7A7A7A: no llegaba a AA */
  --e-global-color-secondary: var(--cv-muted);
  --e-global-color-accent: var(--cv-red);
  --e-global-typography-primary-font-family: "Lora";  /* antes Playfair: una sola serif */
  --e-global-typography-text-font-family: var(--cv-sans);     /* con fuentes de respaldo */
  --e-global-typography-accent-font-family: var(--cv-sans);
}
/* Enlaces sin color propio: rojo oscuro de marca (antes el rosa #CC3366 del tema) */
:where(body.cv-ds) a { color: var(--cv-red-dark); }   /* misma especificidad que el reset del tema: cualquier estilo de Elementor gana */
:where(body.cv-ds) a:where(:hover) { color: var(--cv-red); }
body.cv-ds .elementor-location-footer .elementor-nav-menu a { color: var(--cv-muted) !important; }
body.cv-ds .elementor-location-footer .elementor-nav-menu a:hover { color: var(--cv-red-dark) !important; }
body.cv-ds .skip-link:focus { color: var(--cv-ink) !important; background: #fff !important; }
/* Agenda: grises sueltos del plugin al gris de marca */
body.cv-ds .mec-wrap :is(.mec-calendar dt, .mec-calendar dd, .mec-calendar .mec-calendar-day) { color: var(--cv-muted); }

/* Página 404: cuerpo en la fuente de lectura, como el resto */
body.cv-ds [data-elementor-type="error-404"] .elementor-widget-text-editor :is(p, div, span) { font: 400 1.125rem/1.65 var(--cv-sans) !important; color: var(--cv-text) !important; }
body.cv-ds [data-elementor-type="error-404"] .elementor-widget-text-editor a { color: var(--cv-red-dark) !important; font-weight: 600; }

/* Texto de widgets nunca por debajo de 14 px (algunos tenían 12 px en tablet) */
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]) .elementor-widget-text-editor :is(p, a, li) { font-size: max(.875rem, 1em); }

/* Tablas dentro de textos (p. ej. Política de cookies) */
body.cv-ds .elementor-widget-text-editor table { width: 100%; border-collapse: collapse; margin: 1em 0 1.5em; font: 400 .9375rem/1.45 var(--cv-sans); color: var(--cv-text); }
body.cv-ds .elementor-widget-text-editor :is(th, td) { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid var(--cv-line); }
body.cv-ds .elementor-widget-text-editor th { font-weight: 700; color: var(--cv-ink); border-bottom: 2px solid var(--cv-ink); background: transparent; }
body.cv-ds .elementor-widget-text-editor tbody tr:nth-child(even) td { background: var(--cv-soft); }
body.cv-ds .elementor-widget-text-editor code { font: 600 .875rem/1.3 ui-monospace, SFMono-Regular, Consolas, monospace; color: var(--cv-ink); background: var(--cv-soft); padding: 1px 6px; border-radius: 3px; }
@media (max-width: 767px) {
  body.cv-ds .elementor-widget-text-editor table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  body.cv-ds .elementor-widget-text-editor :is(th, td) { min-width: 120px; }
}

/* Textos largos (páginas legales, contenido): negritas en la misma fuente y subtítulos coherentes */
body.cv-ds .elementor-widget-text-editor :is(strong, b) { font-family: inherit !important; font-weight: 700; }
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]) .elementor-widget-text-editor :is(h2, h3, h4, h5) {
  font-family: var(--cv-serif) !important;
  font-weight: 700 !important;
  color: var(--cv-ink) !important;
  line-height: 1.25 !important;
  margin: 1.6em 0 .5em !important;
}
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]) .elementor-widget-text-editor h4 { font-size: 1.3rem !important; }
body.cv-ds [data-elementor-type]:not([data-elementor-type="header"]) .elementor-widget-text-editor > :first-child > :first-child { margin-top: 0 !important; }
body.cv-ds .elementor-widget-text-editor :is(th, td) { border-left: 0 !important; border-right: 0 !important; border-top: 0 !important; }
@media (max-width: 767px) {
  /* Tablas con etiquetas (data-label): en móvil, una ficha por fila */
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) { display: block; overflow: visible; }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) thead { display: none; }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) :is(tbody, tr, td) { display: block; min-width: 0; }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) tr { padding: 12px 0; border-bottom: 1px solid var(--cv-line); }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) tbody tr:nth-child(even) td { background: transparent; }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) td { border: 0 !important; padding: 3px 0; }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) td::before { content: attr(data-label) ": "; font-weight: 700; color: var(--cv-ink); }
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) td:first-child::before { content: none; }
  /* Texto justificado en pantallas estrechas deja huecos: alineado a la izquierda */
  body.cv-ds .elementor-widget-text-editor :is(p, li) { text-align: left !important; hyphens: auto; }
}
body.cv-ds .elementor-widget-text-editor tbody tr:nth-child(odd) td { background: transparent; }
@media (max-width: 767px) {
  body.cv-ds .elementor-widget-text-editor table:has(td[data-label]) tbody tr td { background: transparent !important; }
}
/* Reproductor de audio: tiempos de 11 px → 13 px */
body.cv-ds :is(.mejs-currenttime, .mejs-duration) { font-size: 13px !important; }
@media (max-width: 1172px) { body.cv-ds .cv-episode-title { margin-inline: 16px; } }

/* Poemas (botón «Poema» del editor clásico, ver cv-editor.php): respeta versos, espacios y sangrías */
.cv-poema {
  white-space: pre-wrap !important;
  tab-size: 4;
  font-family: var(--cv-serif, Georgia, serif) !important;
  font-size: 1.125rem !important;
  line-height: 1.85 !important;
  color: var(--cv-ink, #1C1F23) !important;
  background: transparent !important;
  border: 0 !important;
  border-left: 4px solid var(--cv-red, #DF0000) !important;
  border-radius: 0 !important;
  padding: .25em 0 .25em 1.1em !important;
  margin: 1.4em 0 !important;
  overflow-wrap: anywhere;
  overflow-x: visible !important;
}
