/* ===== blog ===== */
/* ==========================================================================
   Blog Securex — índice de artículos (portado de app/blog/BlogClient.tsx).
   Prefijo: blog-  ·  Usa tokens de css/tokens.css. Interacción en js/page-blog.js.
   Los 3 acentos de categoría (eco/emp/tec) son los del blog real; se centralizan
   aquí como variables locales para no dispersar hex por el archivo.
   ========================================================================== */
.blog-main{
  --blog-bg:#F0F4FA;
  --blog-line:var(--sx-gris-linea);
  --blog-ink:var(--sx-text);
  /* Se redeclara aquí (además de .blog-grid en _blogcard.css) porque la reusan
     .blog-featured-* , que viven fuera del grid de tarjetas. */
  --blog-muted:var(--sx-text-muted);
  --blog-soft:var(--sx-gris-sobre);
  --blog-cat-eco:var(--sx-blue-texto);
  --blog-cat-emp:#7829FF;
  --blog-cat-tec:#047857;
  --blog-grad-avatar:linear-gradient(135deg,var(--sx-blue),var(--sx-cyan));
  background:var(--blog-bg);
  min-height:100vh;
}

/* ── HERO ─────────────────────────────────────────────────────────────── */
.blog-hero{background:#fff;border-bottom:1px solid var(--blog-line)}
/* Contenedor estándar del sitio: 1200px + padding clamp (borde izq. alineado). */
.blog-hero-inner{max-width:1200px;margin-inline:auto;padding:clamp(96px,12vh,128px) clamp(20px,4vw,24px) 0}
.blog-hero-top{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:40px;margin-bottom:32px;flex-wrap:wrap;
}
.blog-eyebrow{
  font-family:var(--sx-font-body);font-weight:700;font-size:12px;
  color:var(--sx-blue-texto);letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px;
}
.blog-h1{
  font-family:var(--sx-font-title);font-weight:800;
  font-size:clamp(2.1rem,4.2vw,3.4rem);color:var(--blog-ink);
  line-height:1.05;letter-spacing:-.01em;margin:0;
}

/* Filtros de categoría (chips) */
.blog-filters{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;padding-bottom:6px}
.blog-pill{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sx-font-body);font-weight:600;font-size:13px;line-height:1;
  color:var(--sx-blue-texto);background:var(--sx-fondo-card-azul);
  border-radius:var(--sx-r-pill);padding:10px 16px;cursor:pointer;
  transition:background .2s var(--sx-ease),color .2s var(--sx-ease),transform .18s var(--sx-ease);
}
.blog-pill:hover{background:var(--sx-blue-light)}
.blog-pill:active{transform:scale(.96)}
/* Blanco sobre --sx-blue da 4.13:1 y aca el texto dice que categoria estas
   viendo. Con el azul de texto de fondo son 5.60:1. */
.blog-pill.is-active{color:#fff;background:var(--sx-blue);box-shadow:0 4px 16px rgba(var(--sx-blue-rgb),.3)}
.blog-pill-count{
  font-weight:700;font-size:10px;border-radius:var(--sx-r-pill);
  padding:2px 8px;background:#F3F4F6;color:var(--sx-text-muted);
}
.blog-pill.is-active .blog-pill-count{background:rgba(255,255,255,.22);color:#fff}

.blog-sep{height:1px;background:var(--blog-line);margin-bottom:52px}
.blog-featured-wrap{padding-bottom:64px}
.blog-featured-wrap[hidden]{display:none}

/* ── FEATURED (editorial) ─────────────────────────────────────────────── */
.blog-featured{display:grid;grid-template-columns:55% 45%;align-items:center;text-decoration:none}
.blog-featured-media{border-radius:20px;overflow:hidden;height:440px;flex-shrink:0;background:var(--blog-grad-avatar)}
.blog-featured-img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--sx-ease-smooth)}
.blog-featured:hover .blog-featured-img{transform:scale(1.04)}
.blog-featured-body{padding:0 0 0 56px;display:flex;flex-direction:column;justify-content:center}
.blog-featured-tags{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.blog-cat-badge{
  font-family:var(--sx-font-body);font-weight:700;font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;background:var(--sx-fondo-card-azul);color:var(--sx-blue-texto);
  border-radius:var(--sx-r-pill);padding:4px 12px;border:1.5px solid rgba(var(--sx-blue-rgb),.18);
}
.blog-featured-title{
  font-family:var(--sx-font-title);font-weight:700;
  font-size:clamp(1.7rem,2.4vw,2.5rem);color:var(--blog-ink);
  line-height:1.15;letter-spacing:-.03em;margin:0 0 18px;
}
.blog-featured-excerpt{
  font-family:var(--sx-font-title);font-weight:300;font-size:16px;
  color:var(--blog-muted);line-height:1.7;margin:0 0 32px;
}
.blog-featured-meta{display:flex;align-items:center;gap:14px}
.blog-featured-who{display:flex;flex-direction:column}
.blog-author{font-family:var(--sx-font-title);font-weight:600;font-size:14px;color:#374151}
.blog-date{font-family:var(--sx-font-body);font-weight:400;font-size:12px;color:var(--sx-text-muted)}
.blog-featured-arrow{
  margin-left:auto;width:38px;height:38px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  background:var(--sx-fondo-card-azul);color:var(--sx-blue-texto);
  transition:background .3s var(--sx-ease),color .3s var(--sx-ease),transform .28s var(--sx-ease-smooth);
}
.blog-featured:hover .blog-featured-arrow{background:var(--sx-blue);color:#fff;transform:translateX(6px)}

/* Avatar (inicial de autor) */
/* .blog-avatar / .blog-card* → componente compartido en el parcial de tarjeta del blog (esta hoja y article.css)
   (lo usan el índice y la sección "relacionados" de los artículos). */

/* ── ARTÍCULOS ────────────────────────────────────────────────────────── */
.blog-articles{padding:clamp(48px,5vw,64px) 0 clamp(64px,8vw,100px)}
.blog-articles-inner{max-width:1200px;margin-inline:auto;padding-inline:clamp(20px,4vw,24px)}

/* Barra de búsqueda */
.blog-searchbar{display:flex;align-items:center;gap:12px;margin-bottom:44px;flex-wrap:wrap}
.blog-search{position:relative;width:300px;flex-shrink:0}
.blog-search-ico{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--blog-soft);pointer-events:none}
.blog-search-input{
  font-family:var(--sx-font-title);font-size:16px;color:var(--blog-ink);
  background:#fff;border:1.5px solid var(--sx-input-border);border-radius:var(--sx-r-pill);
  padding:11px 14px 11px 40px;width:100%;outline:none;
  transition:border-color .2s,box-shadow .2s;
}
.blog-search-input::placeholder{color:var(--sx-text-muted)}
.blog-search-input:focus{border-color:var(--sx-blue);box-shadow:0 0 0 3px rgba(var(--sx-blue-rgb),.1)}
.blog-search-clear{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  color:var(--blog-soft);display:flex;padding:2px;
}
.blog-search-clear[hidden]{display:none}
.blog-results{font-family:var(--sx-font-body);font-size:13px;color:var(--sx-text-muted)}
.blog-results[hidden]{display:none}

/* Grid + tarjetas: componente compartido → el parcial de tarjeta del blog (esta hoja y article.css) */

/* Badge "Nuevo" (lo inyecta blog.js según la fecha del artículo) */
.blog-new-badge{
  position:absolute;top:12px;left:12px;background:var(--sx-blue);
  border-radius:var(--sx-r-pill);padding:3px 10px;
  font-family:var(--sx-font-body);font-weight:700;font-size:9px;color:#fff;
  letter-spacing:.08em;text-transform:uppercase;
  box-shadow:0 2px 8px rgba(var(--sx-blue-rgb),.4);
}
.blog-new-badge--inline{
  position:static;background:#D1FAE5;color:#059669;font-size:10px;padding:3px 10px;
  letter-spacing:.06em;border:1.5px solid rgba(5,150,105,.2);box-shadow:none;
}

/* Sin resultados */
.blog-empty{text-align:center;padding:80px 20px}
.blog-empty[hidden]{display:none}
.blog-empty-title{font-family:var(--sx-font-title);font-weight:700;font-size:22px;color:var(--blog-ink);margin-bottom:10px}
.blog-empty-sub{font-family:var(--sx-font-title);font-weight:300;font-size:16px;color:var(--sx-text-muted);margin-bottom:24px}

/* Paginación */
.blog-pagination{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:64px}
.blog-pagination[hidden]{display:none}
.blog-page-nav[disabled]{opacity:1;cursor:default}
.blog-page-nums{display:flex;gap:6px}
.blog-page-num{
  position:relative;
  font-family:var(--sx-font-body);font-weight:700;font-size:14px;
  width:40px;height:40px;border-radius:50%;
  border:1.5px solid var(--sx-input-border);background:#fff;color:var(--blog-ink);
  cursor:pointer;transition:background .22s,border-color .22s,color .22s,transform .18s var(--sx-ease);
}
.blog-page-num::before{content:"";position:absolute;inset:-2px} /* area tactil >=44px, sin cambio visible */
.blog-page-num:hover{transform:scale(1.05)}
.blog-page-num.is-active{border-color:var(--sx-blue);background:var(--sx-blue);color:#fff}
.blog-page-ellipsis{font-family:var(--sx-font-title);font-size:14px;color:var(--sx-text-muted);padding:10px 4px;align-self:center}

/* ── RESPONSIVE ───────────────────────────────────────────────────────── */
/* Ojo: el responsive de .blog-grid vive en el parcial de tarjeta del blog (esta hoja y article.css) (junto a su base). */
@media (max-width:900px){
  .blog-hero-top{gap:24px}
  .blog-filters{justify-content:flex-start;padding-bottom:0}
  .blog-articles{padding:48px 0 80px}
}
@media (max-width:720px){
  .blog-featured{display:flex;flex-direction:column;gap:28px;align-items:stretch}
  .blog-featured-media{height:220px}
  .blog-featured-body{padding:0}
  .blog-featured-title{font-size:clamp(1.5rem,6vw,2rem)}
  .blog-featured-excerpt{font-size:14px}
}
@media (max-width:560px){
  .blog-sep{margin-bottom:36px}
  .blog-featured-wrap{padding-bottom:48px}
  .blog-articles{padding:36px 0 80px}
  .blog-search{width:100%}
  .blog-searchbar{margin-bottom:32px}
  .blog-pagination{margin-top:48px;flex-wrap:wrap}
}

/* ===== _blogcard ===== */
/* ==========================================================================
   Tarjeta de artículo del blog (blog-card / blog-grid) — COMPONENTE COMPARTIDO.
   Lo usan el índice del blog (la portada del blog) y la sección "Artículos relacionados"
   al pie de cada artículo (_article). Por eso vive en su propio parcial que
   herramientas/convertir_front.py incluye en AMBOS bundles: css/page-blog.css y css/article.css.
   Los tokens de color van en .blog-grid (no en .blog-main) para que las tarjetas
   se estilen también cuando NO están dentro de .blog-main — el caso de la sección
   relacionados dentro de un artículo.
   ========================================================================== */
.blog-grid{
  --blog-ink:var(--sx-text);
  --blog-muted:var(--sx-text-muted);
  --blog-cat-eco:var(--sx-blue-texto);
  --blog-cat-emp:#7829FF;
  --blog-cat-tec:#047857;
  --blog-grad-avatar:linear-gradient(135deg,var(--sx-blue),var(--sx-cyan));
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
}
.blog-avatar{
  width:24px;height:24px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--blog-grad-avatar);color:#fff;
  font-family:var(--sx-font-title);font-weight:700;font-size:9px;
}
.blog-avatar--lg{width:38px;height:38px;font-size:14px}

/* ── Tarjeta de artículo (parcial compartido) ─────────────────────────────
   Este bloque está duplicado a propósito entre article.css y page-blog.css.
   No es un descuido: desde que el CSS se reparte por página (core.css + la hoja
   propia), las dos hojas nunca se cargan juntas — la portada del blog usa una y
   el artículo la otra, para su módulo de relacionados. Moverlo al núcleo le
   metería estas reglas a las 178 páginas, incluidas las 14 que no muestran ni
   una tarjeta. Si tocás una copia, tocá la otra.
   ──────────────────────────────────────────────────────────────────────── */
.blog-card{text-decoration:none;display:block;height:100%}
.blog-card[hidden]{display:none}
.blog-card-inner{
  background:#fff;border-radius:20px;overflow:hidden;height:100%;
  display:flex;flex-direction:column;
  box-shadow:0 2px 12px rgba(0,0,0,.04);
  transition:box-shadow .35s var(--sx-ease),transform .28s var(--sx-ease);
}
.blog-card:hover .blog-card-inner{
  transform:translateY(-7px);
  box-shadow:0 24px 56px rgba(var(--sx-blue-rgb),.12),0 4px 16px rgba(0,0,0,.06);
}
.blog-card-media{position:relative;overflow:hidden;height:210px;flex-shrink:0;background:var(--blog-grad,var(--blog-grad-avatar))}
.blog-card-img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--sx-ease-smooth)}
.blog-card:hover .blog-card-img{transform:scale(1.06)}
.blog-card-body{padding:22px 24px 26px;display:flex;flex-direction:column;flex:1}
.blog-card-cat{
  font-family:var(--sx-font-body);font-weight:700;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;margin-bottom:10px;display:block;
}
.blog-card-cat--eco{color:var(--blog-cat-eco)}
.blog-card-cat--emp{color:var(--blog-cat-emp)}
.blog-card-cat--tec{color:var(--blog-cat-tec)}
.blog-card-title{
  font-family:var(--sx-font-title);font-weight:700;font-size:18px;color:var(--blog-ink);
  line-height:1.25;letter-spacing:-.02em;margin:0 0 10px;flex:1;
  transition:color .22s var(--sx-ease);
}
.blog-card:hover .blog-card-title{color:var(--sx-blue-texto)}
.blog-card-excerpt{
  font-family:var(--sx-font-title);font-weight:300;font-size:14px;color:var(--blog-muted);
  line-height:1.65;margin-bottom:20px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.blog-card-foot{
  display:flex;align-items:center;gap:8px;padding-top:16px;
  border-top:1px solid #F3F4F6;margin-top:auto;
}
.blog-card-author{font-family:var(--sx-font-body);font-size:12px;font-weight:500;color:var(--blog-muted)}
/* #C4C9D4 a 11px sobre blanco daba 1.66:1, el peor par de texto del sitio, y
   es el unico dato que dice si el articulo esta vigente. Ni siquiera estaba en
   tokens.css. */
.blog-card-date{font-family:var(--sx-font-body);font-size:11px;color:var(--sx-text-muted);margin-left:auto}

/* ── RESPONSIVE del grid ──────────────────────────────────────────────────
   Vive aquí (no en css/page-blog.css) por dos motivos: 1) así viaja con el
   componente a los DOS bundles — antes css/article.css no tenía breakpoints y
   los "Artículos relacionados" quedaban en 3 columnas en móvil; 2) el build
   concatena blog.css ANTES que este parcial, así que la base de 3 columnas
   pisaba a los media queries (misma especificidad, gana el último). Base
   arriba + breakpoints aquí abajo = orden correcto en ambos bundles.
   ────────────────────────────────────────────────────────────────────────── */
@media (max-width:900px){
  .blog-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .blog-grid{grid-template-columns:1fr;gap:20px}
}

