/* BL Blog v2 — lo que Tailwind no puede: markup ajeno (ez-toc) y un par de piezas propias.
   Va !important donde compite con el CSS del theme o con las utilidades (important:true). */

/* ── Hero: degradado para que el título se lea sobre cualquier foto ───────── */
.bl-page .bl-blog-hero-veil{
  background:linear-gradient(180deg,rgba(0,0,0,.15) 0%,rgba(0,0,0,.45) 55%,rgba(0,0,0,.6) 100%);
  pointer-events:none;
}

/* ── Best Sellers: carrusel mobile (pista + flechas) ──────────────────────
   La pista es el flex/overflow-x-auto de bl_blog_best_sellers_html(); acá solo
   se le oculta la scrollbar nativa (no hay utilidad de Tailwind para eso) y se
   estilan las flechas circulares. Scopeado a la pista, no a .bl-page entero. */
.bl-page .bl-blog-bs-track{
  scrollbar-width: none !important;
}
.bl-page .bl-blog-bs-track::-webkit-scrollbar{
  display: none !important;
}
/* Las flechas son un chevron pelado, sin circulo ni borde ni sombra: asi estan en el Figma
   (nodo 483:711, 22x22, trazo negro sobre transparente). La version anterior era un circulo
   blanco con borde gris claro y sobre fondo blanco no se veia. El area de toque igual mide
   44px por el padding, que es el minimo recomendado para dedo. */
.bl-page .bl-blog-bs-arrow{
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 44px !important;
  height: 44px !important;
  padding: 10px !important;
  border: 0 !important;
  background: transparent !important;
  color: var(--bl-ink) !important;
  box-shadow: none !important;
  cursor: pointer !important;
}
.bl-page .bl-blog-bs-arrow svg{ width: 24px !important; height: 24px !important; stroke-width: 2 !important; }
.bl-page .bl-blog-bs-arrow:disabled{ opacity: .25 !important; cursor: default !important; }
/* Las flechas son SOLO de mobile. El markup lleva `lg:hidden`, pero esa utilidad
   (.lg\:hidden, especificidad 0-1-0) pierde contra `.bl-page .bl-blog-bs-arrow`
   (0-2-0) de arriba: con important:true los dos salen !important, asi que desempata
   la especificidad y ganaba `display:flex`. Por eso se ocultan aca, con el mismo peso. */
@media (min-width: 1024px){
  .bl-page .bl-blog-bs-arrow{ display: none !important; }
}
.bl-page .bl-blog-bs-prev{ left: -10px !important; }
.bl-page .bl-blog-bs-next{ right: -10px !important; }

/* ── Barra "Table of Content" (restyle de ez-toc) ─────────────────────────── */
.bl-page #ez-toc-container{
  background:var(--bl-accent) !important;
  border:0 !important;
  border-radius:10px !important;
  box-shadow:none !important;
  padding:0 !important;
  margin:0 0 1.5rem !important;
  width:100% !important;
  float:none !important;
}
.bl-page #ez-toc-container .ez-toc-title-container{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:1rem !important;
  padding:.875rem 1.5rem !important;
  min-height:52px !important;
}
.bl-page #ez-toc-container .ez-toc-title{
  color:#fff !important;
  font-size:1.125rem !important;
  font-weight:700 !important;
  margin:0 !important;
  text-transform:none !important;
}
.bl-page #ez-toc-container .ez-toc-title-toggle a,
.bl-page #ez-toc-container .ez-toc-toggle{
  color:#fff !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.bl-page #ez-toc-container .ez-toc-toggle svg{ fill:#fff !important; }
/* La lista se despliega sobre blanco, dentro de la misma caja verde. */
.bl-page #ez-toc-container nav{
  background:#fff !important;
  border:1px solid var(--bl-line) !important;
  border-top:0 !important;
  border-radius:0 0 10px 10px !important;
  padding:1rem 1.5rem !important;
}
.bl-page #ez-toc-container .ez-toc-list a{
  color:var(--bl-ink) !important;
  text-decoration:none !important;
  line-height:1.9 !important;
}
.bl-page #ez-toc-container .ez-toc-list a:hover{
  color:var(--bl-accent) !important;
  text-decoration:underline !important;
}
.bl-page #ez-toc-container .ez-toc-list ul{ padding-left:1.25rem !important; }

/* ── Barra "Table of Content" propia (bl_blog_build_toc, ver blog-parts.php) ─
   Mismo look que la barra de ez-toc de arriba: se mantiene por si el plugin
   alguna vez vuelve a insertar la suya. */
.bl-page details.bl-blog-toc{
  background:var(--bl-accent) !important;
  border:0 !important;
  border-radius:10px !important;
  box-shadow:none !important;
  padding:0 !important;
  margin:0 0 1.5rem !important;
  width:100% !important;
}
.bl-page details.bl-blog-toc > summary.bl-blog-toc-bar{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:1rem !important;
  padding:.875rem 1.5rem !important;
  min-height:52px !important;
  color:#fff !important;
  font-size:1.125rem !important;
  font-weight:700 !important;
  margin:0 !important;
  cursor:pointer !important;
  list-style:none !important;
}
.bl-page details.bl-blog-toc > summary.bl-blog-toc-bar::-webkit-details-marker{ display:none !important; }
.bl-page details.bl-blog-toc > summary.bl-blog-toc-bar::after{
  content:"" !important;
  width:10px !important;
  height:10px !important;
  flex:0 0 auto !important;
  border-right:2px solid #fff !important;
  border-bottom:2px solid #fff !important;
  transform:rotate(45deg) !important;
  transition:transform .2s ease !important;
}
.bl-page details.bl-blog-toc[open] > summary.bl-blog-toc-bar::after{ transform:rotate(-135deg) !important; }
.bl-page details.bl-blog-toc .bl-blog-toc-list{
  display:block !important;
  background:#fff !important;
  border:1px solid var(--bl-line) !important;
  border-top:0 !important;
  border-radius:0 0 10px 10px !important;
  padding:1rem 1.5rem !important;
}
.bl-page details.bl-blog-toc .bl-blog-toc-list ol{
  margin:0 !important;
  padding-left:1.25rem !important;
}
.bl-page details.bl-blog-toc .bl-blog-toc-list a{
  color:var(--bl-ink) !important;
  text-decoration:none !important;
  line-height:1.9 !important;
}
.bl-page details.bl-blog-toc .bl-blog-toc-list a:hover{
  color:var(--bl-accent) !important;
  text-decoration:underline !important;
}

/* ── Card "Key Takeaway" ──────────────────────────────────────────────────── */
.bl-page .bl-blog-takeaway{
  border:1px solid var(--bl-line);
  border-radius:var(--bl-radius-card);
  background:#fff;
  padding:1.75rem 2rem;
  margin:0 0 2.5rem;
}
.bl-page .bl-blog-takeaway h2{
  font-size:32px !important; font-weight:800 !important;
  margin:0 0 1rem !important;
  color:var(--bl-ink) !important;
}
.bl-page .bl-blog-takeaway > :last-child{ margin-bottom:0 !important; }

/* ── Divisor vertical entre cuerpo y sidebar (solo desktop) ──────────────── */
@media (min-width:1024px){
  .bl-page .bl-blog-divider{
    background:var(--bl-line);
    width:2px;
  }
}

/* ── Ancla: que los saltos del TOC no queden tapados por el header fijo ──── */
.bl-page .bl-prose h2,
.bl-page .bl-prose h3,
.bl-page .bl-blog-takeaway h2{ scroll-margin-top:140px; }

/* ── Botones: hover no debe agrandarlos ───────────────────────────────────
   El theme padre (woopress/style.css) trae `a:hover{ box-sizing: content-box; }`
   para TODOS los <a> del sitio. Nuestros botones son <a> con width:100% + padding;
   al pasar de border-box a content-box en hover el padding se suma por fuera y el
   botón crece (medido: 360px → 408px) y desborda su contenedor. Se fuerza border-box
   en hover, scopeado a .bl-page. */
.bl-page a:hover, .bl-page a:hover *{ box-sizing: border-box !important; }

/* ── Títulos: el theme padre fuerza mayúsculas ────────────────────────────
   El theme padre trae `h1,h2,h3,h4,h5,h6{ text-transform: uppercase; }`. Nuestro
   reset (build/input.css) usa :where() (especificidad 0) y no cubre text-transform,
   así que esa regla pasa. El diseño pide caja normal. */
.bl-page h1, .bl-page h2, .bl-page h3, .bl-page h4, .bl-page h5, .bl-page h6{ text-transform: none !important; }

/* ── Sidebar pegajoso ─────────────────────────────────────────────────────
   `position:sticky` lo anulan DOS ancestros del theme con overflow != visible:
   `.st-pusher` (wrapper del menú off-canvas) y el propio `body` (overflow: hidden auto).
   Se les devuelve overflow visible SOLO en este template. El clip horizontal lo sigue
   haciendo `html{overflow-x:hidden}`, que no tocamos, así que el menú off-canvas
   (trasladado -250px y con visibility:hidden) sigue sin asomar.
   Verificar siempre que scrollWidth <= innerWidth después de tocar esto. */
body.bl-blog-v2 .st-pusher{ overflow: visible !important; }
body.bl-blog-v2{ overflow: visible !important; }
/* Tercer ancestro: `.page-wrapper.fixNav-enabled` (overflow:hidden auto del theme) y, encima,
   `body.bl-fullwidth .page-wrapper{overflow-x:hidden}` que agrega nuestro propio bl-fullwidth.css.
   Es el scroll-container mas cercano al sidebar, asi que mientras tenga overflow el sticky no
   engancha contra el viewport. El clip horizontal lo sigue haciendo `html{overflow-x:hidden}`. */
body.bl-blog-v2 .page-wrapper{ overflow: visible !important; }
@media (min-width: 1024px){
  .bl-page .bl-blog-sidebar{
    position: sticky !important;
    top: 140px !important;
    /* El sidebar mide ~1193px y no entra en pantallas de ~900px de alto: sin esto
       la parte de abajo queda inalcanzable. `overflow` en el PROPIO elemento sticky
       no anula su sticky — solo el overflow de los ANCESTROS lo hace (por eso arriba
       se les puso overflow:visible a .st-pusher/.page-wrapper/body: esos sí son
       ancestros del sidebar). Acá el elemento se vuelve su propio scroll-container
       interno, independiente del sticky que lo posiciona contra el viewport. */
    max-height: calc(100vh - 160px) !important;
    overflow-y: auto !important;
    scrollbar-width: thin !important;
    scrollbar-color: var(--bl-line) transparent !important;
  }
}

/* ── Robustez responsive ───────────────────────────────────────────────────
   El reset de build/input.css declara img{max-width:100%;height:auto} pero con
   `:where()`, o sea especificidad 0: CUALQUIER regla del theme le gana. Acá va
   con especificidad real y !important, que es lo que hace falta para que una
   imagen no desborde su contenedor cuando la pantalla se achica. */
.bl-page img,
.bl-page video,
.bl-page iframe,
.bl-page embed,
.bl-page object{ max-width: 100% !important; }

/* `height:auto` va SOLO en las imagenes del contenido del post. Aplicarlo a todas
   (como estaba) le gana a las utilidades de alto fija —`.bl-page img` es 0-1-1 y
   `.h-\[320px\]` es 0-1-0, y con important:true las dos son !important— y aplastaba
   el hero, que quedaba con la altura de su relacion de aspecto y el titulo desbordando. */
.bl-page .bl-prose img,
.bl-page .bl-prose video,
.bl-page .bl-prose iframe{ height: auto !important; }

/* El logo y las miniaturas del sidebar tienen tamaño propio: se declaran DESPUES
   y con mas especificidad que la regla generica de arriba, que si no les pisa el alto. */
.bl-page .bl-blog-sidebar > img{ width: 298px !important; max-width: 100% !important; height: auto !important; }
.bl-page .bl-blog-sidebar li img{ width: 100% !important; height: 100% !important; object-fit: cover !important; }

/* Contenido ancho del post: que scrollee DENTRO de su caja en vez de estirar la pagina.
   Las tablas y los <pre> son la causa mas comun de scroll horizontal en un articulo. */
.bl-page .bl-prose table{ display: block !important; width: 100% !important; overflow-x: auto !important; }
.bl-page .bl-prose pre{ overflow-x: auto !important; }
.bl-page .bl-prose iframe{ width: 100% !important; }

/* Ninguna palabra larga (URLs sin espacios) puede estirar la columna. */
.bl-page .bl-prose{ overflow-wrap: break-word !important; word-break: break-word !important; }
