/* =================================================================
 * Blog index + single post.
 * ================================================================= */

/* ========== HERO (shared) ========== */
.blog-hero,
.post-hero {
  padding-block: clamp(var(--vq-space-9), 9vw, var(--vq-space-11)) clamp(var(--vq-space-7), 6vw, var(--vq-space-9));
  background: var(--vq-color-bg-soft);
}
.blog-hero__inner { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--vq-space-3); }
.blog-hero__title {
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  font-weight: var(--vq-weight-bold);
  letter-spacing: -0.02em;
  line-height: 1.0;
  text-transform: uppercase;
  color: var(--vq-color-secondary);
  margin: 0;
  max-width: 22ch;
}
.blog-hero__title em { font-style: normal; color: var(--vq-color-primary); }
.blog-hero__sub {
  font-size: var(--vq-text-lg);
  color: var(--vq-color-muted);
  max-width: 60ch;
  margin: 0;
}

/* ========== BLOG INDEX GRID ========== */
.blog-list { padding-block: clamp(var(--vq-space-9), 9vw, var(--vq-space-11)); }
.blog-list__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--vq-space-6);
}
@media (max-width: 960px) { .blog-list__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .blog-list__grid { grid-template-columns: 1fr; } }
.blog-list__grid > li { display: flex; }       /* let the card fill the stretched grid cell */
.blog-list__grid .post-card { flex: 1; }        /* equal-height cards across each row */
.blog-list__empty { text-align: center; padding: var(--vq-space-9); }

/* ========== POST CARD ========== */
.post-card {
  background: #fff;
  border: 1px solid var(--vq-color-border);
  border-radius: var(--vq-radius-lg);
  overflow: hidden;
  transition: transform var(--vq-duration) var(--vq-ease),
              border-color var(--vq-duration) var(--vq-ease),
              box-shadow var(--vq-duration) var(--vq-ease);
}
.post-card:hover {
  transform: translateY(-4px);
  border-color: var(--vq-color-primary);
  box-shadow: var(--vq-shadow-md);
}
.post-card__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  color: inherit;
  text-decoration: none;
}
.post-card__media {
  margin: 0;
  aspect-ratio: 16 / 10;
  background: var(--vq-color-bg-mute);
  overflow: hidden;
}
.post-card__media img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
  transition: transform 400ms var(--vq-ease);
}
.post-card:hover .post-card__media img { transform: scale(1.04); }
.post-card__media--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(0, 78, 235, 0.18);
  background: linear-gradient(135deg, #F2F8FF, #fff);
}

.post-card__body { padding: var(--vq-space-6); flex-grow: 1; display: flex; flex-direction: column; gap: var(--vq-space-3); }
.post-card__meta {
  font-family: var(--vq-font-body);
  font-size: var(--vq-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--vq-color-subtle);
  font-weight: var(--vq-weight-semibold);
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--vq-space-2);
}
.post-card__title {
  font-size: var(--vq-text-xl);
  font-weight: var(--vq-weight-bold);
  letter-spacing: -0.01em;
  line-height: 1.2;
  color: var(--vq-color-ink);
  margin: 0;
}
.post-card__excerpt {
  font-size: var(--vq-text-sm);
  color: var(--vq-color-muted);
  margin: 0;
  flex-grow: 1;
}
.post-card__cta {
  display: inline-flex;
  align-items: center;
  gap: var(--vq-space-2);
  margin-top: var(--vq-space-2);
  font-family: var(--vq-font-display);
  font-size: var(--vq-text-sm);
  font-weight: var(--vq-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--vq-color-primary);
  transition: gap var(--vq-duration) var(--vq-ease);
}
.post-card:hover .post-card__cta { gap: var(--vq-space-3); }

/* ========== SINGLE POST ========== */
.main--single { overflow-x: clip; }   /* never let post content cause horizontal scroll */
/* --- Two-column shell: article (left) + sidebar (right) --- */
.post-shell { padding-block: clamp(var(--vq-space-8), 6vw, var(--vq-space-10)); }
.post-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: clamp(var(--vq-space-7), 5vw, var(--vq-space-10));
  align-items: start;
}
@media (max-width: 980px) { .post-layout { grid-template-columns: 1fr; } }

/* --- Article head --- */
.post-head { margin: 0 0 var(--vq-space-6); }
.post-head__eyebrow { margin: 0 0 var(--vq-space-3); }
.post-head__eyebrow a {
  font-family: var(--vq-font-body);
  font-size: var(--vq-text-sm);
  font-weight: var(--vq-weight-semibold);
  letter-spacing: 0.04em;
  color: var(--vq-color-muted);
  text-decoration: none;
  transition: color var(--vq-duration) var(--vq-ease);
}
.post-head__eyebrow a:hover { color: var(--vq-color-primary); }
.post-head__title {
  font-size: clamp(2rem, 4.5vw, 50px);
  font-weight: var(--vq-weight-bold);
  letter-spacing: -0.02em;
  line-height: 1.12;
  color: var(--vq-color-secondary);
  margin: 0 0 var(--vq-space-4);
}
.post-head__meta {
  font-size: var(--vq-text-sm);
  color: var(--vq-color-muted);
  display: flex;
  flex-wrap: wrap;
  gap: var(--vq-space-2);
}
.post-head__meta strong { color: var(--vq-color-ink); font-weight: var(--vq-weight-semibold); }

/* --- Featured image --- */
.post-main__media {
  margin: 0 0 var(--vq-space-7);
  border-radius: var(--vq-radius-lg);
  overflow: hidden;
}
.post-main__media img { width: 100%; height: auto; display: block; aspect-ratio: 16 / 9; object-fit: cover; }

/* --- Sidebar: Recent Posts (sticky under the header) --- */
.post-aside { position: sticky; top: 90px; }
@media (max-width: 980px) { .post-aside { position: static; } }
.recent-posts {
  background: var(--vq-color-bg-soft);
  border: 1px solid var(--vq-color-border);
  border-radius: var(--vq-radius-lg);
  padding: var(--vq-space-6);
}
.recent-posts__title {
  font-size: var(--vq-text-lg);
  font-weight: var(--vq-weight-bold);
  color: var(--vq-color-secondary);
  margin: 0 0 var(--vq-space-3);
}
.recent-posts__list { list-style: none; margin: 0; padding: 0; }
.recent-post { padding-block: var(--vq-space-4); border-top: 1px solid var(--vq-color-border); }
.recent-post:first-child { padding-top: 0; border-top: 0; }
.recent-post__link { display: flex; gap: var(--vq-space-3); align-items: center; text-decoration: none; color: inherit; }
.recent-post__media {
  flex: 0 0 64px; width: 64px; height: 64px;
  border-radius: var(--vq-radius-md); overflow: hidden;
  background: var(--vq-color-bg-mute);
}
.recent-post__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.recent-post__media-ph { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, #F2F8FF, #fff); }
.recent-post__heading {
  display: block;
  font-family: var(--vq-font-display);
  font-weight: var(--vq-weight-semibold);
  font-size: var(--vq-text-sm);
  line-height: 1.35;
  color: var(--vq-color-ink);
  transition: color var(--vq-duration) var(--vq-ease);
}
.recent-post__link:hover .recent-post__heading { color: var(--vq-color-primary); }
.recent-post__date { display: block; font-size: var(--vq-text-xs); color: var(--vq-color-muted); margin-top: 4px; }

.post-body__prose {
  max-width: none;
  margin-inline: 0;
  font-size: clamp(1.05rem, 1.2vw, 1.18rem);
  color: var(--vq-color-ink);
  line-height: 1.75;
}
.post-body__prose h2 {
  font-family: var(--vq-font-display);
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: var(--vq-weight-bold);
  color: var(--vq-color-secondary);
  letter-spacing: -0.01em;
  margin: var(--vq-space-8) 0 var(--vq-space-4);
}
.post-body__prose h3 {
  font-family: var(--vq-font-display);
  font-size: var(--vq-text-xl);
  font-weight: var(--vq-weight-semibold);
  color: var(--vq-color-ink);
  margin: var(--vq-space-6) 0 var(--vq-space-3);
}
.post-body__prose p { margin-bottom: var(--vq-space-5); }
.post-body__prose ul, .post-body__prose ol { padding-left: 1.5em; margin-bottom: var(--vq-space-5); }
.post-body__prose ul { list-style: disc; }
.post-body__prose ol { list-style: decimal; }
.post-body__prose li { margin-bottom: var(--vq-space-2); }
.post-body__prose a { color: var(--vq-color-primary); text-decoration: underline; }
.post-body__prose blockquote {
  border-left: 4px solid var(--vq-color-primary);
  padding: var(--vq-space-3) var(--vq-space-5);
  margin: var(--vq-space-6) 0;
  font-style: italic;
  background: var(--vq-color-bg-soft);
  border-radius: 0 var(--vq-radius-md) var(--vq-radius-md) 0;
}
.post-body__prose img {
  width: 100%;
  height: auto;
  border-radius: var(--vq-radius-md);
  margin-block: var(--vq-space-6);
}
.post-body__prose table {
  display: block;            /* let a wide table scroll inside the column instead of overflowing the page */
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  margin-block: var(--vq-space-6);
  border-collapse: collapse;
  font-size: 0.95em;
}
.post-body__prose th,
.post-body__prose td {
  border: 1px solid var(--vq-color-border);
  padding: var(--vq-space-2) var(--vq-space-3);
  text-align: left;
  vertical-align: top;
}
.post-body__prose th { background: var(--vq-color-bg-soft); font-weight: var(--vq-weight-semibold); }

.post-body__share { margin: var(--vq-space-9) 0 0; max-width: none; padding-top: var(--vq-space-6); border-top: 1px solid var(--vq-color-border); }
.post-body__share-label {
  font-family: var(--vq-font-display);
  font-size: var(--vq-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--vq-color-muted);
  font-weight: var(--vq-weight-semibold);
  margin: 0 0 var(--vq-space-3);
}
.post-body__share-links { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--vq-space-2); }
.post-body__share-links a {
  display: inline-flex;
  width: 40px; height: 40px;
  align-items: center; justify-content: center;
  border-radius: var(--vq-radius-sm);
  background: var(--vq-color-bg-mute);
  color: var(--vq-color-ink);
  border: 1px solid var(--vq-color-border);
  transition: background var(--vq-duration), color var(--vq-duration), border-color var(--vq-duration);
}
.post-body__share-links a:hover {
  background: var(--vq-color-primary);
  color: #fff;
  border-color: var(--vq-color-primary);
}

/* ========== RELATED POSTS ========== */
.related-posts {
  padding-block: clamp(var(--vq-space-9), 8vw, var(--vq-space-11));
  background: var(--vq-color-bg-soft);
  border-top: 1px solid var(--vq-color-border);
}
.related-posts__title {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  font-weight: var(--vq-weight-bold);
  letter-spacing: -0.01em;
  color: var(--vq-color-secondary);
  margin: 0 0 var(--vq-space-7);
}
.related-posts__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--vq-space-6);
}
.related-posts__grid > li { display: flex; }
.related-posts__grid .post-card { flex: 1; }
@media (max-width: 960px) { .related-posts__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .related-posts__grid { grid-template-columns: 1fr; } }
