/* ===== _article ===== */
/* ==========================================================================
   Securex Blog — ARTÍCULO (portado de app/blog/[slug]/ArticleClient.tsx).
   Prefijo: art-  ·  Estilos compartidos por los 160 artículos.
   Usa tokens de css/tokens.css. Interacción en js/article.js.
   El acento cambia por categoría (Economía azul, Emprendimiento morado,
   Tecnología verde) vía la clase cat-eco|cat-emp|cat-tec en .art-main.
   ========================================================================== */

/* ── Contenedor y theming por categoría (paleta local --art-*) ─────────── */
.art-main{
  --art-ink:var(--sx-text);
  --art-muted:var(--sx-text-muted);
  --art-soft:var(--sx-gris-sobre);
  --art-line:var(--sx-gris-linea);
  --art-body-bg:#F8FAFF;
  /* El acento del articulo se usa casi siempre como color de texto (kicker, TOC,
     enlaces). --sx-blue ahi da 4.13:1; el azul de texto, 5.60:1. */
  --art-accent:var(--sx-blue-texto);
  --art-accent-bg:#EAF3FF;
  --art-accent-bd:rgba(var(--sx-blue-rgb),.22);
  background:#fff;
  min-height:100vh;
}
.art-main.cat-eco{--art-accent:var(--sx-blue);--art-accent-bg:#EAF3FF;--art-accent-bd:rgba(var(--sx-blue-rgb),.22)}
.art-main.cat-emp{--art-accent:#7829FF;--art-accent-bg:#F2EBFF;--art-accent-bd:rgba(120,41,255,.22)}
.art-main.cat-tec{--art-accent:#047857;--art-accent-bg:#E3F5EE;--art-accent-bd:rgba(4,120,87,.22)}

/* ── Barra de progreso de lectura (fija arriba) ───────────────────────── */
.art-progress{
  position:fixed;top:0;left:0;right:0;height:3px;z-index:60;
  background:transparent;pointer-events:none;
}
.art-progress-bar{
  height:100%;transform:scaleX(0);transform-origin:left center;
  /* Degradado de marca, no el acento de categoria: en Tecnologia el acento es
     verde (#047857) y la barra salia verde-cian, fuera de la linea de Securex. */
  background:var(--sx-grad-securex-h);
  transition:transform .1s linear;
}

/* ── HERO: 2 columnas ─────────────────────────────────────────────────── */
.art-hero{
  display:grid;grid-template-columns:1fr 1fr;
  min-height:78vh;padding-top:72px;background:#fff;
}
.art-hero-left{
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(40px,6vw,72px) clamp(24px,6vw,88px);
}
.art-hero-inner{width:100%;max-width:640px}
.art-breadcrumb{display:flex;align-items:center;gap:6px;margin-bottom:22px;flex-wrap:wrap}
.art-breadcrumb a{
  font-family:var(--sx-font-body);font-size:13px;color:var(--sx-text-muted);
  transition:color .2s var(--sx-ease);
}
.art-breadcrumb a:hover{color:var(--sx-blue-texto)}
.art-breadcrumb svg{color:#D1D5DB;flex-shrink:0}
.art-crumb-cat{font-family:var(--sx-font-body);font-size:13px;font-weight:600;color:var(--art-accent)}

.art-cat-pill{
  align-self:flex-start;margin-bottom:20px;
  font-family:var(--sx-font-body);font-weight:700;font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--art-accent);background:var(--art-accent-bg);
  border:1.5px solid var(--art-accent-bd);border-radius:var(--sx-r-pill);padding:5px 14px;
}
.art-title{
  font-family:var(--sx-font-title);font-weight:800;
  font-size:clamp(2rem,3.4vw,3.2rem);color:var(--art-ink);
  line-height:1.1;letter-spacing:-.02em;margin:0 0 18px;
}
.art-excerpt{
  font-family:var(--sx-font-title);font-weight:300;
  font-size:clamp(15px,1.4vw,19px);color:var(--art-muted);line-height:1.7;margin:0 0 34px;
}
.art-meta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.art-author{display:flex;align-items:center;gap:12px}
.art-avatar{
  width:42px;height:42px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--sx-grad-securex);color:#fff;
  font-family:var(--sx-font-title);font-weight:700;font-size:16px;
}
.art-author-name{font-family:var(--sx-font-title);font-weight:600;font-size:14px;color:var(--art-ink)}
.art-author-sub{font-family:var(--sx-font-body);font-size:12px;color:var(--sx-text-muted)}

.art-share{display:flex;gap:8px}
.art-share-btn{
  position:relative;width:38px;height:38px;border-radius:50%;
  border:1.5px solid var(--sx-input-border);background:#fff;color:var(--art-muted);
  display:flex;align-items:center;justify-content:center;
  transition:color .2s var(--sx-ease),background .25s var(--sx-ease),border-color .25s var(--sx-ease);
}
.art-share-btn:hover{color:#fff;background:var(--sx-blue);border-color:var(--sx-blue)}
.art-share-btn:active{transform:scale(.9)}
.art-share-btn .art-ico-check{display:none}
.art-share-btn.is-copied{color:#fff;background:var(--sx-success);border-color:var(--sx-success)}
.art-share-btn.is-copied .art-ico-copy{display:none}
.art-share-btn.is-copied .art-ico-check{display:block}

.art-hero-media{
  position:relative;overflow:hidden;min-height:440px;
  background:var(--sx-grad-securex);
}
.art-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ── CUERPO: sidebar (ToC) + prosa ────────────────────────────────────── */
.art-body{background:var(--art-body-bg);border-top:1px solid var(--art-line)}
.art-body-inner{
  max-width:1200px;margin-inline:auto;padding:clamp(48px,6vw,72px) clamp(20px,4vw,24px) clamp(64px,8vw,96px);
  display:grid;grid-template-columns:240px minmax(0,760px);gap:clamp(32px,4vw,56px);
  align-items:start;justify-content:start;
}
.art-sidebar{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}
.art-side-card{background:#fff;border:1px solid var(--art-line);border-radius:16px;padding:16px 18px}
.art-reading-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.art-reading-head svg{color:var(--art-muted);flex-shrink:0}
.art-reading-head span{font-family:var(--sx-font-body);font-weight:600;font-size:13px;color:var(--art-ink)}
.art-reading-track{height:6px;background:#F3F4F6;border-radius:999px;overflow:hidden}
.art-reading-bar{
  height:100%;transform:scaleX(0);transform-origin:left center;
  background:var(--sx-grad-securex-h);transition:transform .1s linear;
}
.art-toc-title{
  font-family:var(--sx-font-body);font-weight:700;font-size:12px;color:var(--art-ink);
  letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px;
}
/* Riel de progreso de la tabla de contenido.
   Antes cada enlace pintaba su propio border-left y solo el activo se veia:
   la linea saltaba de un item a otro. Ahora hay un riel continuo con dos capas
   —track gris y relleno con el degradado de marca— y el relleno crece con el
   avance de lectura (--toc-progress lo escribe js/article.js). Asi la barra
   marca hasta donde vas leyendo, no solo en que titulo estas. */
.art-toc{display:flex;flex-direction:column;gap:2px;position:relative;padding-left:12px}
.art-toc::before,
.art-toc::after{content:"";position:absolute;left:0;width:3px;border-radius:999px}
.art-toc::before{top:0;bottom:0;background:var(--art-line)}
.art-toc::after{
  top:0;height:calc(var(--toc-progress,0) * 100%);
  background:var(--sx-grad-securex-v);
  transition:height .18s linear;
}
.art-toc-link{
  display:block;font-family:var(--sx-font-title);font-size:13px;font-weight:400;
  color:var(--art-muted);line-height:1.45;padding:6px 8px;border-radius:8px;
  transition:color .2s var(--sx-ease),background-color .2s var(--sx-ease);
}
.art-toc-link:hover{color:var(--sx-blue-texto)}
.art-toc-link.lvl-3{padding-left:16px}
.art-toc-link.lvl-4{padding-left:24px}
/* El item activo va en azul Securex, no en el acento de categoria: al lado de
   un riel azul-cian, el verde de Tecnologia se leia como otro sistema. */
.art-toc-link.is-active{color:var(--sx-blue-texto);font-weight:600;background:var(--sx-fondo-card-azul)}

/* ── Prosa del artículo ────────────────────────────────────────────────
   760px a 16.5px daban 87-94 caracteres por linea, muy por encima de los ~65
   que se leen comodos. El comentario viejo decia "lectura comoda" pero 760 es
   comodo a 19-20px, no a 16.5. Se sube el cuerpo y se acota el ancho: de paso
   el texto del blog deja de ser el mas chico del sitio. */
.article-prose{
  min-width:0;max-width:68ch;
  font-family:var(--sx-font-body);color:#374151;
  font-size:18px;line-height:1.72;
  overflow-wrap:break-word;   /* URLs/palabras largas no rompen el ancho en móvil */
}
.article-prose pre{max-width:100%;overflow-x:auto}
.article-prose > *:first-child{margin-top:0}
.article-prose p{margin:0 0 1.15em}
.article-prose h2,
.article-prose h3,
.article-prose h4{
  font-family:var(--sx-font-title);color:var(--art-ink);
  letter-spacing:-.02em;line-height:1.2;scroll-margin-top:96px;
}
.article-prose h2{font-weight:700;font-size:clamp(1.5rem,2.6vw,2.1rem);margin:1.9em 0 .55em}
.article-prose h3{font-weight:700;font-size:clamp(1.25rem,2vw,1.5rem);margin:1.6em 0 .5em}
.article-prose h4{font-weight:700;font-size:clamp(1.1rem,1.6vw,1.2rem);margin:1.4em 0 .5em}
.article-prose a{color:var(--art-accent);text-decoration:underline;text-underline-offset:2px}
.article-prose a:hover{text-decoration:none}
.article-prose strong,.article-prose b{font-weight:600;color:var(--art-ink)}
.article-prose em,.article-prose i{font-style:italic}
.article-prose ul,.article-prose ol{margin:0 0 1.15em;padding-left:1.4em}
.article-prose ul{list-style:disc}
.article-prose ol{list-style:decimal}
.article-prose li{margin-bottom:.5em}
.article-prose li::marker{color:var(--art-accent)}
.article-prose blockquote{
  margin:1.5em 0;padding:14px 22px;border-left:3px solid var(--art-accent);
  background:var(--art-accent-bg);border-radius:0 12px 12px 0;
  color:#4B5563;font-style:italic;
}
.article-prose blockquote p:last-child{margin-bottom:0}
.article-prose img{
  width:100%;height:auto;border-radius:14px;margin:26px 0;
  box-shadow:var(--sx-shadow-card);
}
.article-prose figure{margin:26px 0}
.article-prose figcaption{
  font-family:var(--sx-font-body);font-size:13px;color:var(--sx-text-muted);
  text-align:center;margin-top:10px;
}
/* Tablas: se comportan como bloque scrollable para no romper el ancho en móvil
   (si el contenido no cabe, hace scroll horizontal dentro de su propia caja). */
.article-prose table{
  display:block;width:fit-content;max-width:100%;overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  border-collapse:collapse;margin:26px 0;font-size:14.5px;
  border:1px solid var(--art-line);border-radius:12px;
}
.article-prose thead{background:var(--art-accent-bg)}
.article-prose th,.article-prose td{
  padding:11px 14px;border-bottom:1px solid var(--art-line);text-align:left;vertical-align:top;
}
.article-prose th{font-weight:700;color:var(--art-ink);font-family:var(--sx-font-body)}
.article-prose tr:last-child td{border-bottom:none}
.article-prose hr{border:none;border-top:1px solid var(--art-line);margin:2em 0}

/* ── Artículos relacionados (reusa .blog-card de css/page-blog.css) ───────── */
.art-related{background:#fff;border-top:1px solid var(--art-line);padding:clamp(56px,7vw,80px) 0}
.art-related-inner{max-width:1200px;margin-inline:auto;padding-inline:clamp(20px,4vw,24px)}
.art-related-title{
  font-family:var(--sx-font-title);font-weight:800;
  font-size:clamp(1.5rem,2.6vw,2.1rem);color:var(--art-ink);
  letter-spacing:-.01em;line-height:1.1;margin:0 0 32px;
}

/* ── CTA final ────────────────────────────────────────────────────────── */
.art-cta{background:#fff;border-top:1px solid var(--art-line);padding:clamp(56px,8vw,88px) clamp(20px,4vw,24px)}
.art-cta-inner{max-width:620px;margin:0 auto;text-align:center}
.art-cta-eyebrow{
  font-family:var(--sx-font-body);font-weight:700;font-size:11px;color:var(--sx-blue-texto);
  letter-spacing:.12em;text-transform:uppercase;margin:0 0 12px;
}
.art-cta-title{
  font-family:var(--sx-font-title);font-weight:700;
  font-size:clamp(1.8rem,3vw,2.4rem);color:var(--art-ink);
  letter-spacing:-.02em;line-height:1.15;margin:0 0 14px;
}
.art-cta-sub{
  font-family:var(--sx-font-title);font-weight:300;font-size:15px;
  color:var(--art-muted);line-height:1.65;margin:0 0 32px;
}
.art-cta-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* ── Responsive ───────────────────────────────────────────────────────── */
@media (max-width:960px){
  .art-hero{grid-template-columns:1fr;min-height:auto}
  .art-hero-left{padding:clamp(32px,7vw,48px) clamp(20px,5vw,32px)}
  .art-hero-inner{max-width:none}
  .art-hero-media{min-height:0;height:240px;order:2}
  .art-body-inner{grid-template-columns:1fr;gap:0}
  .art-sidebar{position:static;order:-1;margin-bottom:28px}
  .art-toc{max-height:none}
}
@media (max-width:560px){
  .art-hero-media{height:200px}
  .article-prose{font-size:16px}
}

/* ===== _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);
  --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}
}

