/* BL Blog v2 (LA / NY) — tokens + fuentes de marca + el CSS del blog de Miami.
   Port de woopress-child/css/{bl-tokens,bl-fullwidth,bl-blog}.css. Lo que Tailwind no puede va acá. */

/* ── Tokens (woopress-child/css/bl-tokens.css) ── */
:root{
  --bl-accent:#00b94f;
  --bl-accent-hover:#00a344;
  --bl-dark:#0a2219;
  --bl-medium:#163d2e;
  --bl-gold:#c59b27;
  --bl-ink:#000000;
  --bl-ink-soft:#1f1f1f;
  --bl-card-bg:#f8f8f8;
  --bl-line:#d9d9d9;
  --bl-chalk-bg:#faf9f6;
  --bl-radius-card:19px;
}

/* ── Fuentes: Trueno (texto) + Nunito (solo dígitos) bajo la misma familia "Trueno".
   Los rangos de Trueno excluyen los dígitos, y hay una cara Nunito por cada peso: un font-weight
   en rango no se selecciona en Chrome. Ver woopress-child/css/bl-fullwidth.css. ── */
@font-face{font-family:"Trueno";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/trueno-regular.woff2) format("woff2");unicode-range:U+0000-002F,U+003A-10FFFF}
@font-face{font-family:"Trueno";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/trueno-semibold.woff2) format("woff2");unicode-range:U+0000-002F,U+003A-10FFFF}
@font-face{font-family:"Trueno";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/trueno-bold.woff2) format("woff2");unicode-range:U+0000-002F,U+003A-10FFFF}
@font-face{font-family:"Trueno";font-style:normal;font-weight:800;font-display:swap;src:url(fonts/trueno-extrabold.woff2) format("woff2");unicode-range:U+0000-002F,U+003A-10FFFF}
@font-face{font-family:"Trueno";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/nunito-400.woff2) format("woff2");unicode-range:U+0030-0039}
@font-face{font-family:"Trueno";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/nunito-700.woff2) format("woff2");unicode-range:U+0030-0039}
@font-face{font-family:"Trueno";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/nunito-700.woff2) format("woff2");unicode-range:U+0030-0039}
@font-face{font-family:"Trueno";font-style:normal;font-weight:800;font-display:swap;src:url(fonts/nunito-700.woff2) format("woff2");unicode-range:U+0030-0039}

/* ── 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 ─────────────────────────────────────────────────────
   En Miami hubo que poner overflow:visible a body y a dos wrappers de Woopress para que el sticky
   enganchara. Acá NO: el body de estos themes recorta en x el panel del megamenú de ElementsKit
   (750px fuera de pantalla) y, con visible, la página scrolleaba de costado.
   Verificar siempre que scrollWidth <= innerWidth después de tocar esto. */
@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; }

/* ── Índice del blog: paginación (markup de paginate_links, type=list) ──── */
.bl-page .bl-blog-pager ul.page-numbers{
  display:flex !important; flex-wrap:wrap !important; justify-content:center !important; align-items:center !important;
  gap:3px !important; margin:0 !important; padding:0 !important; list-style:none !important;
  background:none !important; border:0 !important;
}
.bl-page .bl-blog-pager li{ list-style:none !important; margin:0 !important; padding:0 !important; border:0 !important; }
.bl-page .bl-blog-pager .page-numbers:not(ul){
  display:flex !important; align-items:center !important; justify-content:center !important;
  min-width:26px !important; height:43px !important; padding:0 .25rem !important;
  font-size:21px !important; line-height:1 !important; color:var(--bl-ink) !important;
  background:transparent !important; border:0 !important; border-radius:0 !important; text-decoration:none !important;
}
.bl-page .bl-blog-pager .page-numbers.current{ background:#000 !important; color:#fff !important; }
/* Los números del carrusel de Picks son <button>: el theme les pone borde, sombra y mayúsculas. */
.bl-page .bl-blog-pager button.page-numbers{
  border:0 !important; box-shadow:none !important; text-transform:none !important; font-family:inherit !important;
  cursor:pointer !important; margin:0 !important;
}
.bl-page .bl-blog-pager button.page-numbers:disabled{ opacity:.25 !important; cursor:default !important; }
.bl-page .bl-blog-pager button.page-numbers:focus-visible{ outline:2px solid var(--bl-accent) !important; outline-offset:2px !important; }
.bl-page .bl-blog-picks-track{ scrollbar-width:none !important; }
.bl-page .bl-blog-picks-track::-webkit-scrollbar{ display:none !important; }
.bl-page .bl-blog-picks-pager[hidden]{ display:none !important; }
.bl-page .bl-blog-pager a.page-numbers:hover{ color:var(--bl-accent) !important; }

/* ── Índice del blog: buscador (el theme estiliza input[type=search] en todo el sitio) ── */
.bl-page .bl-blog-search input[type="search"]{
  display:block !important; width:100% !important; height:53px !important; margin:0 !important;
  padding:0 3.75rem 0 4rem !important; border:1px solid var(--bl-line) !important; border-radius:9999px !important;
  background:var(--bl-card-bg) !important; box-shadow:none !important;
  font-family:inherit !important; font-size:16px !important; font-weight:400 !important; color:var(--bl-ink) !important;
  -webkit-appearance:none !important; appearance:none !important;
}
.bl-page .bl-blog-search input[type="search"]::placeholder{ color:#8b8b8b !important; opacity:1 !important; }
.bl-page .bl-blog-search input[type="search"]:focus{ outline:2px solid var(--bl-accent) !important; outline-offset:2px !important; }
/* El theme le pone padding, borde, mayúsculas y sombra a todos los <button>. */
.bl-page .bl-blog-search .bl-blog-search-btn{
  padding:0 !important; margin:0 !important; border:0 !important; box-shadow:none !important;
  min-width:0 !important; min-height:0 !important; line-height:1 !important; cursor:pointer !important;
}
.bl-page .bl-blog-search .bl-blog-search-btn:focus-visible{ outline:2px solid var(--bl-ink) !important; outline-offset:2px !important; }
/* Con texto (data-filled, lo pone js/bl-blog-index-*.js) el botón es una ✕ que limpia. Sin JS nunca
   se marca, así que queda la flecha de enviar. La ✕ nativa de type=search se oculta para no duplicarla. */
.bl-page .bl-blog-search .bl-icon-clear,
.bl-page .bl-blog-search[data-filled="1"] .bl-icon-search{ display:none !important; }
.bl-page .bl-blog-search[data-filled="1"] .bl-icon-clear{ display:block !important; }
.bl-page .bl-blog-search input[type="search"]::-webkit-search-cancel-button{ -webkit-appearance:none !important; display:none !important; }

/* `hidden` lo pisa cualquier display del theme o de las utilidades. */
.bl-page .bl-blog-live[hidden], .bl-page .bl-blog-index-sections[hidden], .bl-page .bl-blog-live-all[hidden]{ display:none !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; }
