/*
 * comportamiento.css — SOLO comportamiento, cero diseno.
 *
 * Aqui no hay ni un color, ni un tamano, ni una separacion. Todo eso son
 * controles del panel de Elementor y el cliente tiene que poder cambiarlos.
 * Lo que hay aqui es lo que no se puede expresar como ajuste de widget:
 * ocultar las plantillas de clonado y hacer clicables los elementos.
 */

/* Las plantillas de punto existen para que el cliente las estilice en el
   editor; en el sitio publicado el JS las clona y no deben verse. */
.elementor-editor-active .carrusel-punto-plantilla { outline: 1px dashed currentColor; }
body:not(.elementor-editor-active) .carrusel-punto-plantilla { display: none !important; }

/* Si el JS no llego a montar (Swiper no aparecio), las plantillas se
   quedarian ocultas y la fila de puntos vacia. Mejor que se vean: un
   carrusel sin puntos es un fallo visible, no uno silencioso. */
body:not(.elementor-editor-active) .carrusel[data-carrusel-error] .carrusel-punto-plantilla { display: block !important; }

.carrusel-prev,
.carrusel-next,
.carrusel-punto { cursor: pointer; -webkit-user-select: none; user-select: none; }

.carrusel-prev:focus-visible,
.carrusel-next:focus-visible,
.carrusel-punto:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

/* Extremos sin loop. La opacidad es lo minimo para que se note que no
   responde; si el diseno del React marca el estado de otra forma,
   maquetalo en Elementor y sobreescribe esto desde ahi. */
.carrusel-desactivada { opacity: .35; pointer-events: none; }

/* El relleno de la barra de progreso lo mueve el JS via style.width. */
.carrusel-progreso { overflow: hidden; }
.carrusel-progreso-relleno { transition: width .3s ease; }

/* ══ CENAP ═══════════════════════════════════════════════════════
 * Solo comportamiento: qué se ve según el estado, cómo se mueve y qué se
 * puede pulsar. Ningún color ni medida de diseño: eso vive en el panel
 * (y lo que no tiene control, en las formas del constructor).
 * Curva y duración únicas del React (tokens.js → motion): 600 ms y
 * cubic-bezier(0.16, 1, 0.3, 1); 360 ms en móvil; hovers a la mitad.
 */
:root { --cenap-ease: cubic-bezier(0.16, 1, 0.3, 1); --cenap-dur: 600ms; --cenap-stagger: 80ms; }
@media (max-width: 767px) { :root { --cenap-dur: 360ms; --cenap-stagger: 50ms; } }

/* Entradas al entrar en pantalla, una sola vez (motion.css + reveal.js del React).
   Solo con JS: sin él (o si falla) todo se ve. */
html.js-motion .rv { transition: opacity var(--cenap-dur) var(--cenap-ease), transform var(--cenap-dur) var(--cenap-ease);
  transition-delay: calc(var(--rv-i, 0) * var(--cenap-stagger)); }
html.js-motion .rv-up:not(.is-in) { opacity: 0; transform: translateY(16px); }
html.js-motion .rv-fade:not(.is-in) { opacity: 0; }
html.js-motion .rv-left:not(.is-in) { opacity: 0; transform: translateX(-24px); }
html.js-motion .rv-clip > * { transition: clip-path calc(var(--cenap-dur) * 2) var(--cenap-ease); }
html.js-motion .rv-clip:not(.is-in) > * { clip-path: inset(0 100% 0 0); }
.rv-lines { overflow: hidden; }
html.js-motion .rv-lines .elementor-heading-title { display: block; }
html.js-motion .rv-lines .elementor-heading-title,
html.js-motion .rv-lines .elementor-counter-number-wrapper { transition: transform calc(var(--cenap-dur) * 1.5) var(--cenap-ease);
  transition-delay: calc(var(--rv-i, 0) * var(--cenap-stagger) * 1.5); }
html.js-motion .rv-lines:not(.is-in) .elementor-heading-title,
html.js-motion .rv-lines:not(.is-in) .elementor-counter-number-wrapper { transform: translateY(105%); }
.rv-i1 { --rv-i: 1; } .rv-i2 { --rv-i: 2; } .rv-i3 { --rv-i: 3; } .rv-i4 { --rv-i: 4; } .rv-i5 { --rv-i: 5; }
/* Las tarjetas de un Loop Grid entran escalonadas (data-i lo pone el JS). */
html.js-motion .cenap-escalona > .elementor-loop-container > .e-loop-item { transition: opacity var(--cenap-dur) var(--cenap-ease), transform var(--cenap-dur) var(--cenap-ease);
  transition-delay: calc(var(--rv-i, 0) * var(--cenap-stagger)); }
html.js-motion .cenap-escalona:not(.is-in) > .elementor-loop-container > .e-loop-item { opacity: 0; transform: translateY(16px); }
@keyframes cenap-sube { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes cenap-recorte { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
.cenap-anim-sube { animation: cenap-sube var(--cenap-dur) var(--cenap-ease) both; animation-delay: calc(var(--rv-i, 0) * var(--cenap-stagger)); }
.cenap-anim-recorte { animation: cenap-recorte calc(var(--cenap-dur) * 1.5) var(--cenap-ease) both; }

/* Utilidades de maquetación sin control nativo */
.cenap-min0 { min-width: 0; }
.e-loop-item > .cenap-alto-completo { height: 100%; }
.cenap-truncar .elementor-heading-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cenap-clamp-2 .elementor-heading-title, .cenap-clamp-4 .elementor-heading-title { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.cenap-clamp-2 .elementor-heading-title { -webkit-line-clamp: 2; }
.cenap-clamp-4 .elementor-heading-title { -webkit-line-clamp: 4; }
.cenap-curso .cenap-clamp-2 .elementor-heading-title { min-height: 2.7em; }
.cenap-solo-lector, .cenap-dato { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.cenap-si-vacio:has(.elementor-heading-title:empty), .cenap-si-vacio:not(:has(.elementor-heading-title)) { display: none; }
.cenap-oculto, [hidden].e-loop-item { display: none !important; }
.cenap-loop-flex .elementor-loop-container { display: flex; flex-wrap: wrap; gap: var(--grid-row-gap) var(--grid-column-gap); }
body .elementor .elementor-element.cenap-mapa .elementor-icon, body .elementor .elementor-element.cenap-mapa .elementor-icon svg { display: block; width: 100%; height: auto; font-size: inherit; }
.cenap-medio { position: relative; }
.cenap-linea { display: block; }
.cenap-hero-visor { position: relative; }

/* Lo que se muestra según el curso, la noticia o la persona */
.e-loop-item.curso-unt .cenap-solo-cenap, .e-loop-item.curso-cenap .cenap-solo-unt,
body.curso-gratis .cenap-solo-pago, body.curso-de-pago .cenap-solo-gratis,
.e-loop-item.categoria-convocatorias .cenap-sin-convocatorias, .e-loop-item:not(.categoria-convocatorias) .cenap-solo-convocatorias,
body.single-post:not(.categoria-convocatorias) .cenap-solo-convocatorias,
.e-loop-item.sin-foto .cenap-con-foto, .e-loop-item:not(.sin-foto) .cenap-sin-foto { display: none !important; }

/* Lo que se puede pulsar */
.cenap-btn .elementor-button-icon svg, .cenap-flecha-desliza svg, .cenap-redondo svg { transition: transform calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-btn-flecha .elementor-button:hover .elementor-button-icon svg { transform: translateX(4px); }
.cenap-btn .elementor-button:active { transform: translateY(1px); }
.cenap-redondo.cenap-sig:hover svg { transform: translateX(3px); }
.cenap-redondo.cenap-ant:hover svg { transform: translateX(-3px); }
.cenap-redondo.is-desactivada { opacity: .4; pointer-events: none; }
.cenap-anuncio:hover .cenap-flecha-desliza svg, .cenap-leer:hover .cenap-flecha-desliza svg, .e-loop-item:hover .cenap-leer .cenap-flecha-desliza svg { transform: translateX(4px); }
.cenap-redondo, .cenap-anuncio-ant, .cenap-anuncio-sig, .cenap-mm-boton, .cenap-mm-cerrar, .cenap-wa-abrir, .cenap-wa-cerrar,
.cenap-chip, .cenap-opcion, .cenap-filtro-item, .cenap-vista, .cenap-segmento, .cenap-modo, .cenap-cert-tab, .cenap-cert-nueva, .cenap-bandera, .cenap-punto, .cenap-ir-empresa, .cenap-ver-mas { cursor: pointer; -webkit-user-select: none; user-select: none; }
.cenap-zoom, .cenap-lift { transition-timing-function: var(--cenap-ease) !important; }
.cenap-opaco-hover img { transition: opacity calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-opaco-hover:hover img { opacity: .8; }
.cenap-logo-slot img { transition: transform calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-logo-slot:hover img { transform: scale(1.05); }
.cenap-logo-raya .elementor-divider-separator { transition: width calc(var(--cenap-dur) / 2) var(--cenap-ease), border-color calc(var(--cenap-dur) / 2) var(--cenap-ease); width: 24px !important; }
.cenap-logo-slot:hover .cenap-logo-raya .elementor-divider-separator { width: 40px !important; }
.cenap-logo-img img { max-height: 80px; max-width: 140px; width: auto; height: auto; }
[data-pendiente], [data-pendiente] a { cursor: default; }

/* Barra de anuncios: un mensaje a la vez */
.cenap-anuncios { position: relative; }
.cenap-anuncio.is-oculto { display: none !important; }
.cenap-anuncio.is-activo { animation: cenap-sube var(--cenap-dur) var(--cenap-ease) both; }

/* Hero: diapositivas apiladas que se funden (HeroSlider.jsx) */
.cenap-hero-slide { position: absolute !important; inset: 0; opacity: 0; transform: scale(1.04); pointer-events: none;
  transition: opacity var(--cenap-dur) var(--cenap-ease), transform calc(var(--cenap-dur) * 2) var(--cenap-ease); }
.cenap-hero-slide.is-activo { opacity: 1; transform: none; pointer-events: auto; }
.cenap-hero-slide > .elementor-widget-image, .cenap-hero-slide .elementor-widget-container, .cenap-hero-slide a, .cenap-hero-slide img { display: block; width: 100%; height: 100%; }
.cenap-hero-slide img { object-fit: cover; }
/* Cada portada trae su imagen de escritorio y su recorte de móvil: la regla de arriba no debe anular el «ocultar» de Elementor. */
@media (max-width: 767px) { .cenap-hero-slide > .elementor-hidden-mobile { display: none !important; } }
@media (min-width: 768px) { .cenap-hero-slide > .elementor-hidden-tablet { display: none !important; } }
.cenap-hero-texto:not(.is-activo), .cenap-hero-cta:not(.is-activo) { display: none !important; }
.cenap-hero-texto.is-activo .cenap-linea { display: block; animation: cenap-sube var(--cenap-dur) var(--cenap-ease) both; }
.cenap-hero-texto.is-activo .cenap-linea + .cenap-linea { animation-delay: var(--cenap-stagger); }
.cenap-hero-texto.is-activo .cenap-sube { animation: cenap-sube var(--cenap-dur) var(--cenap-ease) both; animation-delay: calc(var(--cenap-stagger) * 2); }
.cenap-hero-controles { pointer-events: none; }
.cenap-hero-controles > * { pointer-events: auto; }
/* Puntos: plantillas para el editor; el JS clona una por diapositiva. */
body:not(.elementor-editor-active) .cenap-punto-tpl { display: none !important; }
.elementor-editor-active .cenap-punto-tpl { outline: 1px dashed currentColor; }
.cenap-punto { position: relative; transition: width calc(var(--cenap-dur) / 2) var(--cenap-ease), background-color calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-punto::after { content: ''; position: absolute; inset: -18px -6px; }

/* Carril de programas: lista con desplazamiento lateral y ajuste (Programs.jsx) */
.cenap-carril .elementor-loop-container { display: flex !important; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain; scrollbar-width: none; gap: var(--grid-column-gap); padding: 16px 20px; margin: 0 -20px; }
.cenap-carril .elementor-loop-container::-webkit-scrollbar { display: none; }
.cenap-carril .elementor-loop-container { align-items: stretch; }
.cenap-carril .e-loop-item { flex: none; scroll-snap-align: start; }

/* Marquesinas: dos copias del contenido que se desplazan y repiten; pausa con hover o foco. */
@keyframes cenap-marquesina { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.cenap-marquesina { overflow: hidden; }
.cenap-marquesina .elementor-loop-container { display: flex !important; flex-wrap: nowrap; width: max-content; gap: var(--grid-column-gap); }
.cenap-marquesina.is-lista .elementor-loop-container { animation: cenap-marquesina var(--marquesina-dur, 60s) linear infinite; }
.cenap-marquesina-inversa .elementor-loop-container { animation-direction: reverse !important; }
.cenap-marquesina:hover .elementor-loop-container, .cenap-marquesina:focus-within .elementor-loop-container { animation-play-state: paused; }
.cenap-marquesina .e-loop-item { flex: none; }
.cenap-marquesina-docentes .elementor-loop-container { padding: 16px 0; }

/* Menú móvil: cerrado no se ve ni se alcanza con el teclado; abierto, los ítems suben escalonados. */
.cenap-mmenu { overflow-y: auto; bottom: 0; visibility: hidden; opacity: 0; transition: opacity calc(var(--cenap-dur) / 2) var(--cenap-ease), visibility 0s linear calc(var(--cenap-dur) / 2); }
.cenap-mmenu.is-open { visibility: visible; opacity: 1; transition-delay: 0s; }
.cenap-mmenu .cenap-mm-item, .cenap-mmenu .cenap-mm-lista .menu-item { opacity: 0; transform: translateY(12px); transition: opacity var(--cenap-dur) var(--cenap-ease), transform var(--cenap-dur) var(--cenap-ease); }
.cenap-mmenu.is-open .cenap-mm-item, .cenap-mmenu.is-open .cenap-mm-lista .menu-item { opacity: 1; transform: none; }
.cenap-mmenu.is-open .cenap-mm-lista .menu-item:nth-child(2) { transition-delay: 80ms; }
.cenap-mmenu.is-open .cenap-mm-lista .menu-item:nth-child(3) { transition-delay: 160ms; }
.cenap-mmenu.is-open .cenap-mm-lista .menu-item:nth-child(4) { transition-delay: 240ms; }
.cenap-mmenu.is-open .cenap-mm-lista .menu-item:nth-child(5) { transition-delay: 320ms; }
.cenap-mm-cerrar, html.cenap-menu-abierto .cenap-mm-boton { display: none !important; }
html.cenap-menu-abierto .cenap-mm-cerrar { display: block !important; }
html.cenap-menu-abierto { overflow: hidden; }
@media (min-width: 1025px) { .cenap-mmenu { display: none !important; } }

/* WhatsApp: el panel del chat se abre sobre el botón. */
.cenap-wa-chat { transform-origin: bottom right; opacity: 0; transform: translateY(8px) scale(.95); pointer-events: none; visibility: hidden;
  transition: opacity calc(var(--cenap-dur) / 2) var(--cenap-ease), transform calc(var(--cenap-dur) / 2) var(--cenap-ease), visibility 0s linear calc(var(--cenap-dur) / 2); }
.cenap-wa.is-open .cenap-wa-chat { opacity: 1; transform: none; pointer-events: auto; visibility: visible; transition-delay: 0s; }
.cenap-wa-abrir .elementor-icon { transition: transform calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-wa-abrir:hover .elementor-icon { transform: translateY(-4px); }
.cenap-wa-form .elementor-field-group { flex: 1 1 0; }
.cenap-wa-form .elementor-form-fields-wrapper { flex-wrap: nowrap; }
.cenap-wa-form .elementor-field-type-submit { flex: none; width: auto; }

/* Estados que muestra u oculta el comportamiento */
.cenap-gracias, .cenap-prog-vacio, .cenap-sin-resultados, .cenap-cert-bloque { display: none !important; }
.cenap-gracias.is-visible, .cenap-prog-vacio.is-visible, .cenap-sin-resultados.is-visible, .cenap-cert-bloque.is-visible { display: flex !important; }
/* Portal de certificados (verificar.php): consulta y resultados en la misma pantalla.
   cenap.js pone body.cenap-ver-res al llegar resultados; sin JS se ve la consulta. */
body:not(.cenap-ver-res) .cenap-solo-res, body.cenap-ver-res .cenap-solo-con { display: none !important; }
.cenap-portal-main { min-height: 100vh !important; }
.cenap-portal-ancho { width: min(1000px, 100%) !important; max-width: 100%; }
body:not(.cenap-ver-res) .cenap-portal-tarjeta { margin-block: auto !important; }
body:not(.cenap-ver-res) .cenap-portal-logo { margin-top: auto !important; }
body:not(.cenap-ver-res) .cenap-portal-lema { margin-bottom: auto !important; }
/* Resultados de varias personas (búsqueda por nombre): sin ficha, el panel vuelve a logo y lema centrados. */
body.cenap-ver-res.cenap-sin-perfil .cenap-portal-lema { display: flex !important; margin-bottom: auto !important; }
body.cenap-ver-res.cenap-sin-perfil .cenap-portal-logo { margin-top: auto !important; }
.cenap-portal-redes { margin-top: auto !important; }
.cenap-cert-tab .cenap-cert-n { opacity: .7; font-variant-numeric: tabular-nums; }
.cenap-cert-tab, .cenap-modo { cursor: pointer; transition: background-color calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-cert-tab .elementor-heading-title, .cenap-modo .elementor-heading-title { transition: color calc(var(--cenap-dur) / 2) var(--cenap-ease); }
/* Miniatura del documento: zoom suave al pasar por la tarjeta */
.cenap-doc-mini img { transition: transform var(--cenap-dur) var(--cenap-ease); }
.cenap-doc:hover .cenap-doc-mini img { transform: scale(1.04); }
.cenap-doc-mini { overflow: hidden; border-radius: 8px; }
/* Botón mientras consulta */
.cenap-cert-boton.is-cargando .elementor-button { opacity: .75; pointer-events: none; }
/* Entrada de la consulta: banda y cuerpo en cadena */
body:not(.cenap-ver-res) .cenap-portal-tarjeta { animation: cenap-sube var(--cenap-dur) var(--cenap-ease) both; }
body:not(.cenap-ver-res) .cenap-portal-lado .cenap-portal-logo, body:not(.cenap-ver-res) .cenap-portal-lema { animation: cenap-sube var(--cenap-dur) var(--cenap-ease) both; }
body:not(.cenap-ver-res) .cenap-portal-lema { animation-delay: var(--cenap-stagger); }
@media (prefers-reduced-motion: reduce) { .cenap-portal-tarjeta, .cenap-portal-logo, .cenap-portal-lema { animation: none !important; } .cenap-doc-mini img { transition: none; } }
.cenap-cert-ver, .cenap-cert-nueva, .cenap-cert-volver { cursor: pointer; }
.cenap-cert-nueva:hover .elementor-icon-list-icon svg, .cenap-cert-volver:hover .elementor-icon-list-icon svg { transform: translateX(-3px); }
.cenap-cert-nueva .elementor-icon-list-icon svg, .cenap-cert-volver .elementor-icon-list-icon svg { transition: transform calc(var(--cenap-dur) / 2) var(--cenap-ease); }
@media (min-width: 1025px) {
  .cenap-portal-lado { position: fixed !important; top: 0; left: 0; bottom: 0; width: min(32vw, 600px) !important; z-index: 5; overflow-y: auto; }
  .cenap-portal-main { margin-left: min(32vw, 600px) !important; width: auto !important; }
}
@media (max-width: 1024px) {
  .cenap-portal-main { min-height: 0 !important; }
  .cenap-portal-redes { margin-top: 0 !important; }
  body:not(.cenap-ver-res) .cenap-portal-logo { margin-top: 0 !important; }
  body:not(.cenap-ver-res) .cenap-portal-lema { margin-bottom: 0 !important; }
}
.cenap-sub-bloque .elementor-heading-title span { display: block; font-size: 12px; }
.cenap-reciente { display: none; }
.e-loop-item.is-primero .cenap-reciente { display: block; }
.cenap-modulo:not(.tiene-temas) .cenap-chevron { display: none; }
.cenap-modulo:not(.tiene-temas) .cenap-modulo-cabeza { cursor: default; }
.cenap-modulo:not(.tiene-temas) .cenap-modulo-cabeza:hover { background: none; }
.cenap-resenas-lista .e-loop-item.is-extra { display: none; }
.cenap-resenas-lista.is-todas .e-loop-item.is-extra { display: block; }
.cenap-plantilla-js { display: none !important; }
@media (max-width: 1024px) {
  .cenap-filtros:not(.is-open) { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
  html.js-motion .rv, html.js-motion .rv *:not(svg, svg *), html.js-motion .cenap-escalona .e-loop-item { opacity: 1 !important; transform: none !important; clip-path: none !important; transition: none !important; }
  .cenap-anim-sube, .cenap-anim-recorte, .cenap-anuncio.is-activo, .cenap-hero-texto.is-activo .cenap-linea, .cenap-hero-texto.is-activo .cenap-sube { animation: none; }
  .cenap-marquesina { overflow-x: auto; }
  .cenap-marquesina .elementor-loop-container { animation: none !important; }
  .cenap-hero-slide { transition: none; }
}

/* Iconos de trazo (lucide): el widget Icono rellena el SVG con su color; los de
   trazo se pintan con el contorno. Los de marca (relleno) no llevan stroke-linecap. */
.elementor-icon svg[stroke-linecap], .elementor-button-icon svg[stroke-linecap], .elementor-icon-list-icon svg[stroke-linecap],
.e-n-tab-icon svg[stroke-linecap] { fill: none !important; stroke: currentColor; }

/* Títulos equilibrados y párrafos sin viudas (index.css del React) */
.elementor-widget-heading :is(h1, h2, h3, h4) { text-wrap: balance; }
.elementor-widget-heading p, .elementor-widget-text-editor p { text-wrap: pretty; }

/* Contador: prefijo y sufijo pegados a la cifra («+4», «50 mil») */
.elementor-widget-counter.cenap-cifra .elementor-counter-number-wrapper { justify-content: flex-start; }
.elementor-widget-counter.cenap-cifra .elementor-counter-number-prefix, .elementor-widget-counter.cenap-cifra .elementor-counter-number-suffix { flex-grow: 0; }
.elementor-widget-counter.cenap-cifra .elementor-counter-number-prefix { text-align: start; }

/* Mapa: el SVG llena su columna sin la caja de línea del icono */
.cenap-mapa .elementor-icon-wrapper { line-height: 0; font-size: 0; }

/* Video de fondo: con movimiento reducido, solo el fondo plano (motion-reduce:hidden) */
@media (prefers-reduced-motion: reduce) { .cenap-video-fondo .elementor-background-video-container, .cenap-video-fondo .elementor-background-video-fallback { display: none; } }

/* Fichas de curso y noticia: la columna lateral va fija a la derecha desde
   escritorio y, en móvil y tablet, cae entre las dos piezas de la principal. */
@media (min-width: 1025px) {
  .cenap-ficha > .e-con-inner > .cenap-curso-arriba, .cenap-ficha > .e-con-inner > .cenap-curso-abajo { grid-column: 1; }
  .cenap-ficha > .e-con-inner > .cenap-curso-lado { grid-column: 2; grid-row: 2 / span 2; position: sticky; top: 96px; align-self: start; }
  .cenap-pegado { position: sticky; top: 96px; align-self: start; }
}
/* Bloques que no se muestran si su dato viene vacío o su lista no tiene filas */
.cenap-si-vacio-bloque:has(.cenap-valor .elementor-heading-title:empty), .cenap-si-vacio-bloque:not(:has(.cenap-valor .elementor-heading-title)) { display: none !important; }
.cenap-si-sin-items:not(:has(.e-loop-item)) { display: none !important; }
/* Aviso de foto pendiente bajo la imagen (si el cliente la sube, la tapa) */
.elementor .e-con.cenap-medio > .elementor-element.cenap-aviso-foto { inset: 0; display: flex; align-items: center; justify-content: center; z-index: 0; padding: 0 24px; }
.cenap-aviso-foto .elementor-heading-title { max-width: 194px; margin: 0 auto; }
/* El título de cada barra de valoración solo lo leen los lectores de pantalla. */
.cenap-barra-valoracion .elementor-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.cenap-medio > .elementor-widget-image { z-index: 1; }
.cenap-ultimo-sin-borde .e-loop-item:last-child > .e-con { border-bottom: 0 !important; }
.cenap-volver:hover .cenap-flecha-desliza svg, .cenap-volver:hover .elementor-icon svg { transform: translateX(-4px); }
.cenap-volver .elementor-icon svg { transition: transform calc(var(--cenap-dur) / 2) var(--cenap-ease); }
.cenap-inscribete:hover .cenap-flecha-desliza svg { transform: translateX(4px); }
.cenap-pildoras .elementor-heading-title { display: flex; flex-wrap: wrap; gap: 8px; }

/* Las tarjetas de una rejilla pueden encoger: su línea truncada no fija el ancho mínimo. */
.elementor-loop-container > .e-loop-item, .cenap-min0 > .e-con-inner { min-width: 0; }

/* Iconos ilustrados: la imagen sin la caja de línea (si no, cada fila de datos crece) */
.cenap-ilus, .cenap-ilus .elementor-widget-container { line-height: 0; }
.cenap-ilus img { display: block; }

/* El envoltorio del widget Icono es inline y suma la altura de línea del texto
   (7 px de más bajo cada icono). En el React el icono ocupa solo su tamaño. */
.elementor-widget-icon .elementor-icon-wrapper { line-height: 0; }

/* Portal de certificados: «Volver a mis certificados» como botón visible, nombres largos y enlace de la firma. */
.cenap-cert-volver .elementor-icon-list-item { display: inline-flex !important; width: auto; padding: 8px 16px 8px 12px !important; border: 1px solid rgba(13, 91, 215, .35); border-radius: 999px; }
.cenap-cert-volver .elementor-icon-list-item:hover { border-color: rgb(13, 91, 215); }
.cenap-cert-perfil .cenap-c-titular, .cenap-cert-perfil .elementor-heading-title, .cenap-dato-fila b { overflow-wrap: anywhere; word-break: normal; }
/* Validador oficial de Firma Perú, con el escudo nacional (solo en certificados con firma digital). */
.cenap-firma-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 8px; padding: 6px 14px 6px 8px; border: 1px solid rgba(13, 91, 215, .35); border-radius: 999px; text-decoration: none; white-space: normal; line-height: 1.3; }
.cenap-firma-link:hover { border-color: rgb(13, 91, 215); }
.cenap-firma-link span { text-decoration: underline; text-underline-offset: 2px; }
.cenap-firma-escudo { width: 22px; height: auto; flex: none; }
/* Panel de la persona: sus datos con las mismas filas que el detalle del certificado. */
.cenap-perfil-datos { width: 100%; margin-top: 18px; text-align: left; }
.cenap-perfil-datos > .elementor-widget { width: 100%; max-width: 100%; }
.cenap-perfil-fila { margin: 0; padding: 10px 0; border-bottom: 1px solid rgba(11, 45, 91, .1); }
.cenap-perfil-fila small { display: block; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; opacity: .7; }
.cenap-perfil-fila b { display: block; overflow-wrap: anywhere; }
@media (min-width: 1025px) { .cenap-perfil-con-datos .cenap-c-dni-perfil { display: none !important; } }
@media (max-width: 1024px) { .cenap-perfil-datos { display: none; } }
