/* ============================================================
   SOLE — Infografías por secciones (.sole-info)
   Capa de FIXES sobre sole-webflow.css (que ya trae TODO el diseño:
   infowlh-*, modulo-comportamientos, chart_*, pasos, fs-*, etc.).
   Este fichero solo:
   1) replica la base tipográfica del body Webflow (14px) dentro del
      wrapper, para que los tamaños en `em` del diseño no se inflen
      con la tipografía del tema/Elementor;
   2) da estructura/tema a los sliders Splide que sustituyen a los
      .w-slider de Webflow (IX2 no corre aquí);
   3) estilos del lightbox propio (.sole-info-lightbox);
   4) pequeños guards de contención de imágenes/SVG e iframes.
   Cargado por el plugin sole-migration-helper DESPUÉS de sole-webflow.css.
   ============================================================ */

/* 1. Base tipográfica = body de Webflow (sole-webflow.css usa em sobre 14px).
   La fuente base es Raleway (texto normal de SOLE), NO Arial: si los webfonts
   tardan/fallan, el fallback sigue siendo Raleway,sans-serif igual que el
   diseño, en vez de Arial puro. Los números van en Space Grotesk (regla abajo).
   font-size 19px = +35% sobre los 14px originales: como TODO el diseño Webflow
   se dimensiona en `em` sobre esta base, sube proporcionalmente letra y bloques
   de texto sin tocar imágenes/SVG (que usan px o tamaño intrínseco). */
.sole-info {
    font-family: 'Raleway', sans-serif;
    font-size: 19px;
    line-height: 27px;
    color: #333;
    -webkit-text-size-adjust: 100%;
}
/* Neutraliza la tipografía que Elementor/tema imponen a los headings dentro
   del wrapper; cada clase del diseño (titulo-infografia, infowlh-*) define
   la suya encima de esto. */
.sole-info h1, .sole-info h2, .sole-info h3,
.sole-info h4, .sole-info h5, .sole-info h6,
.sole-info p {
    font-family: inherit;
    margin-top: 0;
}
/* Números en Space Grotesk (counters de impacto y barras del chart antes/después).
   El diseño ya la asigna por clase; reforzamos por si el tema la pisa. */
.sole-info .counter,
.sole-info .chart_number { font-family: 'Space Grotesk', sans-serif; }

/* 4. Contención: nada se desborda del wrapper en X */
.sole-info {
    overflow-x: clip;
}
/* OJO: NO forzar height:auto global. El diseño Webflow fija alturas explícitas
   (p.ej. .image-141 / .div-block-184 = 600px object-fit:cover en los mapas de
   'comportamientos'); un height:auto con esta especificidad las aplastaba y el
   mapa se veía raro. Webflow original solo usa max-width:100%. Las imágenes
   decorativas con width="" conservan su proporción por el ratio intrínseco. */
.sole-info img,
.sole-info svg {
    max-width: 100%;
}
.sole-info iframe {
    max-width: 100%;
}
/* Restauración explícita por si algún reset del tema impone height:auto al <img>
   del mapa (mayor especificidad que el reset, respeta el responsive de Webflow). */
.sole-info .div-block-184 { height: 600px; }
.sole-info .image-141 { height: 600px; }
@media (max-width: 991px) {
    .sole-info .div-block-184 { height: auto; }
    .sole-info .image-141 { height: auto; }
}

/* 2. Splide estructural: el slide ocupa todo el alto del slider original
   (los .w-slider de Webflow fijan height por clase: slider-6, slider-7, fs-slider) */
.sole-info .sole-splide-host { background: transparent; }
.sole-info .sole-splide,
.sole-info .sole-splide .splide__track,
.sole-info .sole-splide .splide__list {
    height: 100%;
}
/* Hosts flex (p.ej. .fs-slider{display:flex}): sin esto el .splide crece al
   ancho de TODO el contenido (track de 12.000px) en vez de al del contenedor */
.sole-info .sole-splide {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}
.sole-info .sole-splide .splide__slide {
    height: 100%;
    list-style: none;
}
.sole-info .sole-splide .splide__list {
    margin: 0;
    padding: 0;
}
/* El .w-slide original vive dentro del slide Splide */
.sole-info .sole-splide .splide__slide > .w-slide {
    width: 100%;
    height: 100%;
    display: block;
    white-space: normal;
}

/* Tema Splide mínimo (la librería core no trae CSS): flechas y paginación */
.sole-info .sole-splide .splide__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    width: 3.4em;
    height: 3.4em;
    border: 0;
    border-radius: 0;
    background: transparent;   /* sin círculo de fondo */
    color: #fff;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: .85;
    transition: opacity .15s;
}
.sole-info .sole-splide .splide__arrow:hover { opacity: 1; }
/* Chevron solo, con sombra para verse sobre fondo claro u oscuro */
.sole-info .sole-splide .splide__arrow svg {
    fill: #fff;
    width: 2.2em;
    height: 2.2em;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .55));
}
.sole-info .sole-splide .splide__arrow--prev { left: 10px; }
.sole-info .sole-splide .splide__arrow--prev svg { transform: scaleX(-1); }
.sole-info .sole-splide .splide__arrow--next { right: 10px; }
.sole-info .sole-splide .splide__pagination {
    position: absolute;
    bottom: 8px;
    left: 0;
    right: 0;
    z-index: 5;
    display: flex;
    justify-content: center;
    gap: 6px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.sole-info .sole-splide .splide__pagination li { list-style: none; line-height: 0; }
.sole-info .sole-splide .splide__pagination__page {
    width: 10px;
    height: 10px;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .55);
    cursor: pointer;
    padding: 0;
}
.sole-info .sole-splide .splide__pagination__page.is-active { background: #fff; }

/* Testimonios: la lista fuente .fs-dynamic-quots queda oculta (el JS además
   la esconde inline; esto evita el flash antes de que corra) */
.sole-info .fs-section > .fs-collection-wrapper { display: none; }

/* Chart antes/después: color de barra destacada (portado del monolito) */
.sole-info .highlight { background-color: #fc794d; }

/* Tabs: cursor de botón en las pestañas (botones de preguntas / años) */
.sole-info .w-tab-link { cursor: pointer; }

/* ----- Sección 'portada' (.section-12 / slider .slider-6) -----
   El diseño Webflow ponía el grayscale en .mask-3 y ocultaba sus flechas, pero
   initSliders() hace slider.innerHTML='' → destruye .mask-3 (se pierde el grises)
   y Splide genera sus PROPIAS flechas (data-hide-arrows="false" → arrows:true).
   Reaplicamos aquí, scoped al slider de portada:
   1) sin flechas; 2) grises en las fotos; 3) cada imagen llena su mitad. */
.sole-info .slider-6 .splide__arrow { display: none !important; }
.sole-info .slider-6 img { filter: grayscale(1); }
/* Contención: el slider y sus pistas no deben desbordar su mitad (las imágenes
   "se salían" porque object-fit cover sin clip sobresalía del contenedor). */
.sole-info .slider-6 {
    height: 80vh;
    overflow: hidden;
}
.sole-info .slider-6 .sole-splide,
.sole-info .slider-6 .splide__track,
.sole-info .slider-6 .splide__list,
.sole-info .slider-6 .splide__slide { height: 100%; }
.sole-info .slider-6 .splide__slide img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ----- Títulos: grosor un poco más delgado -----
   El diseño usa font-weight 900 en varios títulos (heading-34 de portada,
   titulo-vis de los sliders de comportamientos, fs-frase de testimonios).
   Se baja a 700 para un trazo menos pesado, sin perder jerarquía. */
.sole-info .heading-34,
.sole-info .titulo-vis,
.sole-info .fs-frase { font-weight: 700; }

/* ----- Testimonios: foto siempre circular -----
   .fs-image ya es 100x100 border-radius:100px por diseño; reforzamos por si el
   clon del JS o algún reset la deforma (círculo perfecto, recorte centrado). */
.sole-info .fs-image {
    border-radius: 50%;
    width: 120px;
    height: 120px;
    object-fit: cover;
    aspect-ratio: 1 / 1;
    flex: 0 0 auto;
}

/* 3. Lightbox propio */
.sole-info-lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: rgba(0, 0, 0, .92);
    display: flex;
    align-items: center;
    justify-content: center;
}
.sole-info-lightbox .silb-stage {
    max-width: 86vw;
    max-height: 82vh;
    display: flex;
    align-items: center;
    justify-content: center;
}
.sole-info-lightbox .silb-stage img {
    max-width: 86vw;
    max-height: 82vh;
    width: auto;
    height: auto;
}
.sole-info-lightbox .silb-stage iframe {
    max-width: 86vw;
    max-height: 82vh;
}
.sole-info-lightbox button {
    position: absolute;
    border: 0;
    background: transparent;
    color: #fff;
    cursor: pointer;
    font-size: 28px;
    line-height: 1;
    padding: 10px;
}
.sole-info-lightbox .silb-close { top: 14px; right: 18px; font-size: 38px; }
.sole-info-lightbox .silb-prev { left: 10px; top: 50%; transform: translateY(-50%); }
.sole-info-lightbox .silb-next { right: 10px; top: 50%; transform: translateY(-50%); }
.sole-info-lightbox .silb-caption {
    position: absolute;
    bottom: 34px;
    left: 0;
    right: 0;
    text-align: center;
    color: #fff;
    font-size: 14px;
    padding: 0 60px;
}
.sole-info-lightbox .silb-count {
    position: absolute;
    bottom: 12px;
    left: 0;
    right: 0;
    text-align: center;
    color: rgba(255, 255, 255, .6);
    font-size: 12px;
}

/* ============================================================
   FIXES v1.6.4 — botones/tabs, mapas, flechas testimonios, habilidades.
   El tema/Elementor pisa color de texto e impone tamaños; forzamos el
   diseño Webflow original (negro/blanco) con !important y mayor alcance.
   ============================================================ */

/* --- A. Botones globales: pestañas de AÑO (etiqueta-tiempo) y de PREGUNTAS
   (tab-preguntas-menu). Estándar: INACTIVO = blanco con letra negra;
   ACTIVO / HOVER = negro con letra blanca. El texto va en un <div> hijo,
   por eso forzamos también los descendientes. */
.sole-info .etiqueta-tiempo-2022,
.sole-info .etiqueta-tiempo-2023,
.sole-info .tab-preguntas-menu {
    background-color: #fff !important;
    border-radius: 10px !important;
    transition: background-color .2s, color .2s;
    -webkit-text-fill-color: currentColor;
}
.sole-info .etiqueta-tiempo-2022,
.sole-info .etiqueta-tiempo-2023,
.sole-info .etiqueta-tiempo-2022 *,
.sole-info .etiqueta-tiempo-2023 *,
.sole-info .tab-preguntas-menu,
.sole-info .tab-preguntas-menu * {
    color: #000 !important;
}
/* Las pestañas de preguntas necesitan algo de aire para verse como píldora */
.sole-info .tab-preguntas-menu {
    padding: 6px 14px !important;
    margin: 0 6px 6px 0;
    display: inline-block;
}
.sole-info .etiqueta-tiempo-2022:hover,
.sole-info .etiqueta-tiempo-2023:hover,
.sole-info .tab-preguntas-menu:hover,
.sole-info .etiqueta-tiempo-2022.w--current,
.sole-info .etiqueta-tiempo-2023.w--current,
.sole-info .tab-preguntas-menu.w--current {
    background-color: #000 !important;
}
.sole-info .etiqueta-tiempo-2022:hover,
.sole-info .etiqueta-tiempo-2023:hover,
.sole-info .etiqueta-tiempo-2022:hover *,
.sole-info .etiqueta-tiempo-2023:hover *,
.sole-info .tab-preguntas-menu:hover,
.sole-info .tab-preguntas-menu:hover *,
.sole-info .etiqueta-tiempo-2022.w--current,
.sole-info .etiqueta-tiempo-2023.w--current,
.sole-info .etiqueta-tiempo-2022.w--current *,
.sole-info .etiqueta-tiempo-2023.w--current *,
.sole-info .tab-preguntas-menu.w--current,
.sole-info .tab-preguntas-menu.w--current * {
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
}

/* --- B. Mapas (grandes-preguntas) que NO llegaban al borde en 2022/2023.
   El diseño dejaba .mapa-comunidad.wlh al 75% del ancho de su celda grid;
   lo llevamos al 100% para que el iframe ocupe hasta el borde como el 2024. */
.sole-info .mapa-comunidad.wlh { width: 100% !important; }

/* --- C. Flechas de TESTIMONIOS más grandes y del color del título (turquesa).
   Solo dentro de .fs-section para no tocar el resto de sliders. */
.sole-info .fs-section .splide__arrow {
    width: 4.4em;
    height: 4.4em;
    opacity: 1;
}
.sole-info .fs-section .splide__arrow svg {
    width: 3.6em;
    height: 3.6em;
    fill: #26bfb8;            /* --color-principal--turquesa (color de .fs-frase) */
    filter: none;
}
.sole-info .fs-section .splide__arrow--prev { left: 4px; }
.sole-info .fs-section .splide__arrow--next { right: 4px; }

/* --- D. HABILIDADES: las fotos grandes (wlh-tecnologia / lightbox) salían a su
   tamaño natural y se desbordaban, encimándose con las tarjetas vecinas. Se
   recortan dentro de su contenedor (cover), igual que el diseño previsto. */
.sole-info .contenedor-habilidades { overflow: hidden; }
.sole-info .foto-comportamientos { overflow: hidden; }
.sole-info .foto-comportamientos .lightbox-link-3 {
    display: block;
    width: 100%;
    height: 100%;
}
.sole-info .wlh-tecnologia {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    object-position: center;
    margin: 0 !important;
}
/* La nota "haz click sobre la foto" superpuesta abajo-izquierda de la foto */
.sole-info .foto-comportamientos { position: relative; }
.sole-info .foto-comportamientos .pie-de-pagina {
    position: absolute;
    left: 0;
    bottom: 0;
    margin: 0;
}
/* Imágenes de contenido de habilidades (datos / pasos / celebración): nunca
   se desbordan de su columna. */
.sole-info .image-223,
.sole-info .image-225,
.sole-info .image-222 {
    display: block;
    max-width: 100%;
    height: auto;
}

/* --- E. HABILIDADES en MÓVIL: al pasar a columna (max-width:991) la
   .foto-comportamientos va a ancho completo y, con object-fit:cover + height
   heredado, crecía hasta ocupar la pantalla entera de arriba a abajo. Le damos
   una altura contenida proporcional al ancho para que la foto se adapte al
   espacio y no empuje el resto del contenido. */
/* --- F. HABILIDADES, slider de datos (2023/2022) — EN TODOS LOS ANCHOS.
   Dos problemas:
   1) El slider conserva .w-slider (height:300px fijo). Si Splide no monta,
      queda el slider crudo a 300px y el párrafo se recorta/desborda del
      bloque de color. Si Splide sí monta, lo hace con height:'100%' => 300px
      igual. En ambos casos soltamos TODA la cadena de alturas a auto para que
      la tarjeta crezca con el texto y el fondo de color cubra el párrafo.
   2) Las flechas (Splide .splide__arrow o las nativas .w-slider-arrow) se
      montan centradas en vertical y tapan el número grande. Como solo hay 2
      slides, las ocultamos y dejamos los puntos de paginación para navegar. */
.sole-info .modulo-comportamientos .w-slider,
.sole-info .modulo-comportamientos .w-slider-mask,
.sole-info .modulo-comportamientos .sole-splide,
.sole-info .modulo-comportamientos .splide,
.sole-info .modulo-comportamientos .splide__track,
.sole-info .modulo-comportamientos .splide__list,
.sole-info .modulo-comportamientos .splide__slide,
.sole-info .modulo-comportamientos .w-slide,
.sole-info .modulo-comportamientos .comportamiento-datos {
    height: auto !important;
}
.sole-info .modulo-comportamientos .w-slider-mask { white-space: normal; }
.sole-info .modulo-comportamientos .splide__track { overflow: hidden; }
/* matar flechas que tapan el número (Splide + nativas Webflow) */
.sole-info .modulo-comportamientos .splide__arrows,
.sole-info .modulo-comportamientos .splide__arrow,
.sole-info .modulo-comportamientos .w-slider-arrow-left,
.sole-info .modulo-comportamientos .w-slider-arrow-right {
    display: none !important;
}
/* hueco para los puntos de paginación bajo el texto */
.sole-info .modulo-comportamientos { position: relative; padding-bottom: 48px; }
.sole-info .modulo-comportamientos .splide__pagination,
.sole-info .modulo-comportamientos .w-slider-nav { bottom: 12px; }

@media (max-width: 991px) {
    .sole-info .contenedor-habilidades { height: auto; }
    .sole-info .foto-comportamientos {
        height: 60vw;
        max-height: 360px;
    }
    .sole-info .foto-comportamientos .wlh-tecnologia { height: 100% !important; }

    /* Lectura: .6em sobre la base hacía un párrafo ~11px, muy pequeño y
       apretado. Lo subimos y damos interlineado. */
    .sole-info .infowlh-parrafo-modulos { font-size: .8em; line-height: 1.45; }
}
@media (max-width: 479px) {
    .sole-info .foto-comportamientos {
        height: 64vw;
        max-height: 280px;
    }
}

/* --- G. CONTENCIÓN HORIZONTAL (v1.6.7) — EN TODOS LOS ANCHOS.
   Los wrappers sin clase entre .modulo-comportamientos (flex) y el slider
   convertido a Splide heredan el min-content del track (suma de TODOS los
   slides, nowrap) y crecían a 850–1070px en un viewport de 390px: texto
   cortado en el borde y scroll horizontal. Tres frenos:
   1) contain:inline-size en el host => su tamaño intrínseco deja de
      propagarse hacia arriba y el ancho baja del contenedor (376px).
   2) min-width:0 en los flex items intermedios (los block div ya lo traen
      por defecto; explícito por los que Webflow convierte en flex).
   3) max-width:100% de seguridad en toda la cadena del slider. */
.sole-info .sole-splide-host {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    contain: inline-size;
}
.sole-info .modulo-comportamientos > div,
.sole-info .div-block-276,
.sole-info .div-block-294 {
    min-width: 0;
    max-width: 100%;
}
.sole-info .w-slider { max-width: 100%; }

/* --- H. PORTADA en MÓVIL (v1.6.7). El slider de fotos (.slider-6) tomaba la
   altura natural de las imágenes (655px) en vez de los ~253px del original
   (la altura vivía en el .w-slider-mask que la conversión a Splide retira):
   el bloque .flex-block-22 pasaba de 286px a 709px y la banda ESPECIAL
   INFOGRÁFICO + logos flotaban encima de la sección del mapa. Replicamos la
   proporción del original (253px en 376 de ancho ≈ 67vw) y contenemos el
   bloque. */
@media (max-width: 767px) {
    .sole-info--portada .flex-block-22 {
        min-width: 0;
        max-width: 100%;
        overflow: hidden;
    }
    .sole-info--portada .slider-6 {
        height: 67vw !important;
        max-height: 420px;
    }
    .sole-info--portada .slider-6 .sole-splide,
    .sole-info--portada .slider-6 .splide__track,
    .sole-info--portada .slider-6 .splide__list,
    .sole-info--portada .slider-6 .splide__slide,
    .sole-info--portada .slider-6 .w-slide {
        height: 100% !important;
    }
    .sole-info--portada .slider-6 img {
        width: 100%;
        height: 100% !important;
        object-fit: cover;
    }
}

/* ============================================================
   FIXES CFE (v1.6.9) — secciones propias de la infografía
   "Conversando el futuro de la educación" (galería, frases,
   visualización-1). Estas clases NO estaban cubiertas por la
   capa WLH de arriba; heredaban el CSS Webflow crudo que asumía
   interacciones IX2 (webflow.js) que aquí no corren -> desbordes.
   ============================================================ */

/* --- CFE-1. Galería "así lo vivimos" — collage contenido.
   Las <img> son position:absolute (top/left % + rotate) relativas a
   .outercontainer (position:relative). El diseño Webflow usaba 100vw/100vh
   y los wrappers .item-* (flex, vacíos porque la img va absoluta) colapsan.
   Dentro de Elementor el 100vw + los left:63%+ancho se salían del marco.
   Mantenemos el collage rotado + arrastrable (initGallery sigue igual) y solo
   contenemos el escenario. */
.sole-info--galeria .outercontainer {
    width: 100%;
    max-width: 100%;
    height: 90vh;
    min-height: 680px;
    overflow: hidden;
}
.sole-info--galeria .container {
    width: 100%;
    max-width: 100%;
    height: 100%;
    position: relative;
    padding: 0;
}
/* Los wrappers .item-* quedan vacíos (su img va absoluta); que no aporten
   alto ni empujen layout. Las imágenes absolutas siguen visibles. */
.sole-info--galeria .container > div {
    position: static;
    width: 0;
    height: 0;
    margin: 0;
}
/* Título grande de fondo, las fotos por encima (z-index ya definidos arriba). */
.sole-info--galeria .tit-info-apertura.vivimos {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    transform: translateY(-50%);
    z-index: 0;
    text-align: center;
}
@media (max-width: 767px) {
    .sole-info--galeria .outercontainer {
        height: auto;
        min-height: 70vh;
    }
}

/* --- CFE-2. Frases — flecha negra estilo Webflow.
   initSliders() hace slider.innerHTML='' y destruye el .right-arrow original
   (caja negra 10vh con chevron blanco); Splide inyecta su flecha pequeña
   transparente. Reestilamos la flecha --next de Splide SOLO en frases para
   recuperar la caja negra abajo-derecha; ocultamos --prev (el left-arrow
   original era transparente). */
/* Selectores con .sole-splide (3 clases) para GANAR al tema base
   .sole-info .sole-splide .splide__arrow (misma especificidad, va después). */
.sole-info--frases .sole-splide .splide__arrow--next {
    top: auto;
    bottom: 0;
    right: 0;
    left: auto;
    transform: none;
    width: 10vh;
    height: 10vh;
    max-width: 80px;
    max-height: 80px;
    background: #000;
    opacity: 1;
    border-radius: 0;
}
.sole-info--frases .sole-splide .splide__arrow--next svg {
    fill: #fff;
    width: 2.6em;
    height: 2.6em;
    filter: none;
}
.sole-info--frases .sole-splide .splide__arrow--prev {
    display: none;
}

/* --- CFE-3. visualización-1 — contener el ancho SIN estirar el contenedor.
   NO tocamos la altura del .modulo-visualizacion (el diseño Webflow ya le da la
   proporción correcta: en desktop el chart Flourish entra en el bloque azul).
   Solo evitamos que el iframe propague su min-content y fuerce scroll/desborde
   horizontal en la cadena del grid; el chart se redimensiona al ancho de su
   celda como en el original, sin que el azul crezca para "taparlo". */
.sole-info .visualizacion-1 > * {
    min-width: 0;
}
.sole-info .dataviz-1,
.sole-info .dataviz-1 .flourish-embed,
.sole-info .dataviz-1 iframe {
    max-width: 100%;
    min-width: 0;
}
