/* =====================================================================
   QWOOD Blog — estilos canónicos
   ---------------------------------------------------------------------
   Scope: body.qw-blog-page .qw-blog (archive + single)
   Tokens: design-system.css (SSOT) vía var(--qwood-*) — cero ghost tokens.
   Breakpoints: 1024 / 768 / 480
   Media queries al final (cascade rule — ver memory/feedback_css_cascade).
   ===================================================================== */

.qw-blog-page .qw-blog{
  font-family: var(--qwood-font);
  color: var(--qwood-color-text);
  background: var(--qwood-color-bg);
  padding: 32px 0 72px;
}

.qw-blog__container{
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
}

.qw-blog__container--narrow{
  max-width: 820px;
}

/* =====================================================================
   HERO (archive)
   ===================================================================== */
.qw-blog__hero{
  text-align: center;
  padding: 40px 0 48px;
}

.qw-blog__hero-title{
  font-family: var(--qwood-font);
  font-weight: var(--qwood-fw-bold);
  font-size: clamp(32px, 4vw, 44px);
  letter-spacing: -.02em;
  color: var(--qwood-color-text);
  margin: 0 0 12px;
}

.qw-blog__hero-subtitle{
  font-size: var(--qwood-fs-lg);
  line-height: var(--qwood-lh-base);
  color: var(--qwood-color-muted);
  max-width: 640px;
  margin: 0 auto;
}

/* =====================================================================
   GRID — archive + related
   ===================================================================== */
.qw-blog__grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--qwood-space-6);
  margin: 0;
}

.qw-blog__grid--3{
  grid-template-columns: repeat(3, 1fr);
}

/* =====================================================================
   CARD
   ===================================================================== */
.qw-blog-card{
  background: #ffffff;
  border: none;
  border-radius: var(--qwood-radius-lg);
  box-shadow: var(--qwood-shadow-soft);
  overflow: hidden;
  transition:
    box-shadow var(--qwood-speed) var(--qwood-ease),
    transform var(--qwood-speed) var(--qwood-ease);
}

.qw-blog-card__link{
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}

.qw-blog-card__link:focus-visible{
  outline: none;
  box-shadow: var(--qwood-ring-strong);
}

.qw-blog-card__media{
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--qwood-color-slate-100);
}

.qw-blog-card__media--empty{
  background: var(--qwood-color-slate-100);
}

.qw-blog-card__img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--qwood-speed-slow) var(--qwood-ease);
}

.qw-blog-card__body{
  padding: 20px 22px 24px;
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 10px;
}

.qw-blog-card__meta{
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: var(--qwood-fs-sm);
  color: var(--qwood-color-muted);
  flex-wrap: wrap;
}

.qw-blog-card__meta time{
  font-variant-numeric: tabular-nums;
}

.qw-blog-card__title{
  font-family: var(--qwood-font);
  font-weight: var(--qwood-fw-bold);
  font-size: var(--qwood-fs-xl);
  line-height: var(--qwood-lh-snug);
  letter-spacing: -.01em;
  color: var(--qwood-color-text);
  margin: 0;
}

.qw-blog-card__excerpt{
  font-size: var(--qwood-fs-sm);
  line-height: var(--qwood-lh-base);
  color: var(--qwood-color-muted);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.qw-blog-card__cta{
  font-size: var(--qwood-fs-sm);
  font-weight: var(--qwood-fw-semibold);
  color: var(--qwood-color-primary);
  margin-top: auto;
  padding-top: 4px;
  letter-spacing: .01em;
}

/* =====================================================================
   PAGINATION
   ===================================================================== */
.qw-blog__pagination{
  margin-top: 48px;
  display: flex;
  justify-content: center;
}

.qw-blog__pagination .page-numbers{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 14px;
  margin: 0 4px;
  border-radius: var(--qwood-radius-pill);
  background: var(--qwood-color-card-bg);
  border: 1px solid var(--qwood-color-border);
  color: var(--qwood-color-text);
  text-decoration: none;
  font-size: var(--qwood-fs-sm);
  font-weight: var(--qwood-fw-semibold);
  transition: background var(--qwood-speed-fast) var(--qwood-ease), border-color var(--qwood-speed-fast) var(--qwood-ease);
}

.qw-blog__pagination .page-numbers:hover{
  border-color: var(--qwood-color-primary);
  color: var(--qwood-color-primary-dark);
}

.qw-blog__pagination .page-numbers.current{
  background: var(--qwood-color-primary);
  color: #fff;
  border-color: var(--qwood-color-primary);
}

/* =====================================================================
   EMPTY STATE
   ===================================================================== */
.qw-blog__empty{
  text-align: center;
  padding: 60px 20px;
  background: #ffffff;
  border: none;
  border-radius: var(--qwood-radius-lg);
  box-shadow: var(--qwood-shadow-soft);
}

.qw-blog__empty h2{
  font-family: var(--qwood-font);
  font-size: var(--qwood-fs-2xl);
  margin: 0 0 12px;
}

.qw-blog__empty p{
  color: var(--qwood-color-muted);
  margin: 0 0 20px;
}

/* =====================================================================
   SINGLE — breadcrumb + header
   ===================================================================== */
.qw-blog-article{
  padding-bottom: 32px;
}

.qw-blog-breadcrumb{
  font-size: var(--qwood-fs-sm);
  color: var(--qwood-color-muted);
  margin: 24px 0 28px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.qw-blog-breadcrumb a{
  color: inherit;
  text-decoration: none;
  transition: color var(--qwood-speed-fast) var(--qwood-ease);
}

.qw-blog-breadcrumb a:hover{
  color: var(--qwood-color-primary-dark);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.qw-blog-breadcrumb span{
  color: var(--qwood-color-slate-400);
}

.qw-blog-article__header{
  margin-bottom: 32px;
}

.qw-blog-article__title{
  font-family: var(--qwood-font);
  font-weight: var(--qwood-fw-bold);
  font-size: clamp(32px, 4.5vw, 48px);
  line-height: var(--qwood-lh-tight);
  letter-spacing: -.02em;
  color: var(--qwood-color-text);
  margin: 0 0 16px;
}

.qw-blog-article__meta{
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  font-size: var(--qwood-fs-sm);
  color: var(--qwood-color-muted);
}

.qw-blog-article__featured{
  margin: 0 0 40px;
}

.qw-blog-article__featured img{
  display: block;
  width: 100%;
  max-height: 520px;
  object-fit: cover;
  border-radius: var(--qwood-radius-lg);
  box-shadow: var(--qwood-shadow-soft);
}

/* =====================================================================
   PROSE — contenido del artículo
   ===================================================================== */
.qw-blog-prose{
  font-size: 17px;
  line-height: var(--qwood-lh-loose);
  color: var(--qwood-color-text);
}

.qw-blog-prose > *{
  margin-top: 1.4em;
  margin-bottom: 1.4em;
}

.qw-blog-prose > *:first-child{ margin-top: 0; }
.qw-blog-prose > *:last-child{ margin-bottom: 0; }

.qw-blog-prose p{
  margin: 1.4em 0;
}

.qw-blog-prose h2{
  font-family: var(--qwood-font);
  font-weight: var(--qwood-fw-bold);
  font-size: var(--qwood-fs-2xl);
  line-height: var(--qwood-lh-snug);
  color: var(--qwood-color-text);
  margin: 2em 0 .6em;
  padding-left: 14px;
  letter-spacing: -.01em;
}

.qw-blog-prose h3{
  font-family: var(--qwood-font);
  font-weight: var(--qwood-fw-bold);
  font-size: var(--qwood-fs-xl);
  line-height: var(--qwood-lh-snug);
  color: var(--qwood-color-text);
  margin: 1.6em 0 .4em;
  letter-spacing: -.005em;
}

.qw-blog-prose a{
  color: var(--qwood-color-primary-dark);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  transition: text-decoration-thickness var(--qwood-speed-fast) var(--qwood-ease);
}

.qw-blog-prose a:hover{
  text-decoration-thickness: 2px;
}

.qw-blog-prose a:focus-visible{
  outline: none;
  box-shadow: var(--qwood-ring);
  border-radius: 2px;
}

.qw-blog-prose strong{
  font-weight: var(--qwood-fw-bold);
  color: var(--qwood-color-text-strong);
}

.qw-blog-prose em{ font-style: italic; }

.qw-blog-prose blockquote{
  background: #ffffff;
  box-shadow: 0 4px 14px rgba(15,23,42,.05);
  padding: 16px 20px;
  border-radius: var(--qwood-radius-sm);
  font-style: italic;
  color: var(--qwood-color-text);
  margin: 1.6em 0;
}

.qw-blog-prose blockquote p{ margin: 0; }

.qw-blog-prose ul,
.qw-blog-prose ol{
  padding-left: 1.4em;
  margin: 1.4em 0;
}

.qw-blog-prose ul li,
.qw-blog-prose ol li{
  margin: .5em 0;
}

.qw-blog-prose ul li::marker{
  color: var(--qwood-color-primary);
}

.qw-blog-prose ol li::marker{
  color: var(--qwood-color-primary-dark);
  font-weight: var(--qwood-fw-bold);
}

.qw-blog-prose img{
  display: block;
  max-width: 100%;
  height: auto;
  margin: 1.8em auto;
  border-radius: var(--qwood-radius-md);
  box-shadow: var(--qwood-shadow-xs);
}

.qw-blog-prose figure{
  margin: 1.8em 0;
  text-align: center;
}

.qw-blog-prose figure img{ margin: 0 auto; }

.qw-blog-prose figcaption{
  font-size: var(--qwood-fs-sm);
  color: var(--qwood-color-muted);
  margin-top: 10px;
  font-style: italic;
}

.qw-blog-prose code{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .92em;
  background: var(--qwood-color-slate-100);
  padding: 2px 6px;
  border-radius: var(--qwood-radius-xs);
}

.qw-blog-prose hr{
  border: none;
  height: 1px;
  background: var(--qwood-color-border);
  margin: 2.4em 0;
}

/* CTA orgánico dentro del prose */
.qw-blog-prose .qw-blog-cta{
  background: var(--qwood-color-primary-soft);
  border: 1px solid var(--qwood-color-border-strong);
  border-radius: var(--qwood-radius-lg);
  padding: 24px 28px;
  margin: 2em 0;
}

.qw-blog-prose .qw-blog-cta p{
  margin: 0 0 12px;
  color: var(--qwood-color-text);
  font-size: var(--qwood-fs-lg);
}

.qw-blog-prose .qw-blog-cta p:last-child{ margin-bottom: 0; }

.qw-blog-prose .qw-blog-cta a{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--qwood-color-primary);
  color: #fff;
  padding: 10px 22px;
  border-radius: var(--qwood-radius-pill);
  text-decoration: none;
  font-weight: var(--qwood-fw-bold);
  font-size: var(--qwood-fs-base);
  transition: background var(--qwood-speed-fast) var(--qwood-ease);
}

.qw-blog-prose .qw-blog-cta a:hover{
  background: var(--qwood-color-primary-hover);
  text-decoration: none;
}

/* =====================================================================
   RELATED
   ===================================================================== */
.qw-blog-related{
  margin-top: 64px;
  padding-top: 40px;
  border-top: 1px solid var(--qwood-color-border);
}

.qw-blog-related__title{
  font-family: var(--qwood-font);
  font-weight: var(--qwood-fw-bold);
  font-size: var(--qwood-fs-2xl);
  margin: 0 0 24px;
  letter-spacing: -.01em;
}

/* =====================================================================
   HOVER — solo dispositivos con puntero fino
   ===================================================================== */
@media (hover: hover) and (pointer: fine){
  .qw-blog-card:hover{
    box-shadow: var(--qwood-shadow-card);
    transform: translateY(-2px);
    border-color: var(--qwood-color-border-strong);
  }
  .qw-blog-card:hover .qw-blog-card__img{
    transform: scale(1.03);
  }
}

/* =====================================================================
   RESPONSIVE (media queries al final — cascade rule)
   ===================================================================== */
@media (max-width: 1024px){
  .qw-blog__grid{
    grid-template-columns: repeat(2, 1fr);
  }
  .qw-blog__grid--3{
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px){
  .qw-blog-page .qw-blog{ padding: 24px 0 48px; }
  .qw-blog__container{ padding: 0 16px; }
  .qw-blog__hero{ padding: 24px 0 32px; }
  .qw-blog__grid,
  .qw-blog__grid--3{
    grid-template-columns: 1fr;
    gap: var(--qwood-space-5);
  }
  .qw-blog-article__featured img{ max-height: 360px; }
  .qw-blog-prose{ font-size: 16px; }
  .qw-blog-prose h2{ margin-top: 1.6em; }
  .qw-blog-related{ margin-top: 48px; padding-top: 32px; }
}

@media (max-width: 480px){
  .qw-blog-article__title{ font-size: 28px; }
  .qw-blog-card__body{ padding: 16px 18px 20px; }
  .qw-blog-prose .qw-blog-cta{ padding: 18px 20px; }
}

/* =====================================================================
   REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce){
  .qw-blog-card,
  .qw-blog-card__img,
  .qw-blog-card__link,
  .qw-blog-prose a,
  .qw-blog__pagination .page-numbers{
    transition: none !important;
    transform: none !important;
  }
}

/* =====================================================================
   TOC (índice), fecha de actualización y banda CTA — añadido 2026-07-08
   Tokens design-system.css (SSOT). Reutilizable: .qw-toc también en legales.
   ===================================================================== */
.qw-blog-article__updated{ color: var(--qwood-color-muted); }

.qw-toc{
  background: var(--qwood-color-primary-soft);
  border: 1px solid var(--qwood-color-border-strong);
  border-radius: var(--qwood-radius-lg);
  padding: 18px 22px;
  margin: 0 0 2em;
}
.qw-toc__title{
  margin: 0 0 10px;
  font-weight: var(--qwood-fw-bold);
  color: var(--qwood-color-text);
  font-size: var(--qwood-fs-sm);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.qw-toc__list{ margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.qw-toc__link{
  color: var(--qwood-color-text);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--qwood-speed) var(--qwood-ease), border-color var(--qwood-speed) var(--qwood-ease);
}
.qw-toc__link:hover,
.qw-toc__link:focus-visible{ color: var(--qwood-color-primary); border-bottom-color: var(--qwood-color-primary); }
/* offset para que el ancla no quede bajo cabeceras sticky */
.qw-blog-prose h2{ scroll-margin-top: 96px; }

.qw-blog-cta-band{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--qwood-space-6);
  flex-wrap: wrap;
  background: var(--qwood-color-primary-soft);
  border: 1px solid var(--qwood-color-border-strong);
  border-radius: var(--qwood-radius-lg);
  padding: 24px 28px;
  margin: 2.5em 0;
}
.qw-blog-cta-band__title{
  margin: 0 0 4px;
  font-weight: var(--qwood-fw-bold);
  font-size: var(--qwood-fs-lg);
  color: var(--qwood-color-text);
}
.qw-blog-cta-band__sub{ margin: 0; color: var(--qwood-color-muted); }
.qw-blog-cta-band__btn{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--qwood-color-primary);
  color: #fff;
  text-decoration: none;
  font-weight: var(--qwood-fw-bold);
  padding: 12px 22px;
  border-radius: var(--qwood-radius-lg);
  white-space: nowrap;
  transition: background var(--qwood-speed) var(--qwood-ease), transform var(--qwood-speed) var(--qwood-ease);
}
.qw-blog-cta-band__btn:hover,
.qw-blog-cta-band__btn:focus-visible{ background: var(--qwood-color-primary-strong, #11900f); transform: translateY(-1px); }
