/* ==========================================================================
   Scrapify Blog
   Built on the tokens in design-system.css. Nothing here redefines a token,
   it only composes them, so a theme change in the design system flows through.
   ========================================================================== */

/* ---------- Shared bits ---------- */
.blog-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--geo-space-3);
  font-size: .82rem;
  color: var(--geo-text-dim);
}
.blog-meta .dot { width: 3px; height: 3px; border-radius: 50%; background: var(--geo-text-subtle); }

.blog-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  padding: 5px 11px;
  border-radius: var(--geo-radius-full);
  border: 1px solid var(--geo-primary-300);
  background: var(--geo-primary-100);
  color: var(--geo-primary-light);
  white-space: nowrap;
}
.blog-tag[data-cat="migration"] { border-color: rgba(6,182,212,.3); background: rgba(6,182,212,.08); color: var(--geo-accent-light); }
.blog-tag[data-cat="woocommerce"] { border-color: rgba(125,86,171,.32); background: rgba(125,86,171,.1); color: var(--geo-primary-light); }
.blog-tag[data-cat="shopify"] { border-color: rgba(16,185,129,.28); background: rgba(16,185,129,.08); color: #34d399; }
.blog-tag[data-cat="guides"] { border-color: rgba(245,158,11,.28); background: rgba(245,158,11,.08); color: #fbbf24; }
.blog-tag[data-cat="data"] { border-color: rgba(99,102,241,.3); background: rgba(99,102,241,.09); color: #a5b4fc; }

/* ---------- Hub: filters ---------- */
.blog-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--geo-space-2);
  justify-content: center;
  margin-bottom: var(--geo-space-10);
}
.blog-filter {
  font-family: inherit;
  font-size: .85rem;
  font-weight: 600;
  cursor: pointer;
  padding: 8px 16px;
  border-radius: var(--geo-radius-full);
  border: 1px solid var(--geo-border);
  background: var(--geo-bg-card);
  color: var(--geo-text-muted);
  transition: all var(--geo-transition);
}
.blog-filter:hover { border-color: var(--geo-border-hover); color: var(--geo-text); }
.blog-filter.active {
  border-color: var(--geo-primary);
  background: var(--geo-primary-100);
  color: var(--geo-text);
}

/* ---------- Hub: featured ---------- */
.blog-featured {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: var(--geo-space-10);
  align-items: center;
  background: var(--geo-bg-card);
  border: 1px solid var(--geo-border);
  border-radius: var(--geo-radius-2xl);
  padding: var(--geo-space-10);
  margin-bottom: var(--geo-space-12);
  position: relative;
  overflow: hidden;
}
.blog-featured.is-hidden { display: none; }
.blog-featured::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(600px circle at 100% 0%, rgba(125,86,171,.14), transparent 60%);
  pointer-events: none;
}
.blog-featured > * { position: relative; }
.blog-featured h2 { font-size: clamp(1.5rem, 3vw, 2.05rem); line-height: 1.25; margin: var(--geo-space-4) 0 var(--geo-space-4); }
.blog-featured h2 a { color: var(--geo-text); text-decoration: none; }
.blog-featured h2 a:hover { color: var(--geo-primary-light); }
.blog-featured p { color: var(--geo-text-muted); line-height: 1.75; margin-bottom: var(--geo-space-6); }

.blog-featured-visual {
  border: 1px solid var(--geo-border);
  border-radius: var(--geo-radius-xl);
  background: var(--geo-bg-elevated);
  padding: var(--geo-space-5);
  font-family: var(--geo-font-mono);
  font-size: .78rem;
  line-height: 1.9;
  color: var(--geo-text-muted);
  overflow-x: auto;
  /* The markup is a div, not a pre, so newlines need preserving explicitly. */
  white-space: pre;
}
.blog-featured-visual .k { color: var(--geo-primary-light); }
.blog-featured-visual .v { color: var(--geo-accent-light); }
.blog-featured-visual .c { color: var(--geo-text-subtle); }

/* ---------- Hub: card grid ---------- */
.blog-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--geo-space-6);
}
.blog-card {
  display: flex;
  flex-direction: column;
  background: var(--geo-bg-card);
  border: 1px solid var(--geo-border);
  border-radius: var(--geo-radius-xl);
  padding: var(--geo-space-6);
  transition: transform var(--geo-transition), border-color var(--geo-transition), box-shadow var(--geo-transition);
}
.blog-card:hover {
  transform: translateY(-4px);
  border-color: var(--geo-border-hover);
  box-shadow: var(--geo-shadow-lg), var(--geo-shadow-glow);
}
.blog-card.is-hidden { display: none; }
.blog-card h3 { font-size: 1.12rem; font-weight: 700; line-height: 1.4; margin: var(--geo-space-4) 0 var(--geo-space-3); }
.blog-card h3 a { color: var(--geo-text); text-decoration: none; }
.blog-card h3 a:hover { color: var(--geo-primary-light); }
.blog-card p { font-size: .92rem; color: var(--geo-text-muted); line-height: 1.7; margin: 0 0 var(--geo-space-5); flex: 1; }
.blog-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--geo-space-3);
  padding-top: var(--geo-space-4);
  border-top: 1px solid var(--geo-border);
  font-size: .8rem;
  color: var(--geo-text-dim);
}
.blog-card-foot .read {
  color: var(--geo-accent-light);
  font-weight: 600;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.blog-card-foot .read:hover { text-decoration: underline; }

.blog-empty {
  display: none;
  text-align: center;
  padding: var(--geo-space-16) var(--geo-space-6);
  color: var(--geo-text-dim);
}
.blog-empty.show { display: block; }

/* ==========================================================================
   Article page
   ========================================================================== */
.post-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: var(--geo-space-12);
  align-items: start;
  max-width: 1120px;
  margin: 0 auto;
}

.post-breadcrumb {
  font-size: .82rem;
  color: var(--geo-text-dim);
  margin-bottom: var(--geo-space-6);
}
.post-breadcrumb a { color: var(--geo-text-muted); text-decoration: none; }
.post-breadcrumb a:hover { color: var(--geo-primary-light); }
.post-breadcrumb span { margin: 0 8px; color: var(--geo-text-subtle); }

/* --- Body typography --- */
.post-body { max-width: 100%; min-width: 0; font-size: 1.02rem; line-height: 1.85; color: var(--geo-text-muted); }
.post-body > *:first-child { margin-top: 0; }
.post-body p { margin: 0 0 var(--geo-space-6); }
.post-body h2 {
  font-size: 1.6rem;
  font-weight: 800;
  line-height: 1.3;
  color: var(--geo-text);
  margin: var(--geo-space-12) 0 var(--geo-space-5);
  scroll-margin-top: 90px;
}
.post-body h3 {
  font-size: 1.18rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--geo-text);
  margin: var(--geo-space-8) 0 var(--geo-space-3);
  scroll-margin-top: 90px;
}
.post-body h4 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--geo-text);
  margin: var(--geo-space-6) 0 var(--geo-space-2);
}
.post-body a { color: var(--geo-accent-light); text-decoration: none; border-bottom: 1px solid rgba(34,211,238,.28); }
.post-body a:hover { border-bottom-color: var(--geo-accent-light); }
.post-body strong { color: var(--geo-text); font-weight: 650; }
.post-body ul, .post-body ol { margin: 0 0 var(--geo-space-6); padding-left: var(--geo-space-6); }
.post-body li { margin-bottom: var(--geo-space-3); padding-left: var(--geo-space-2); }
.post-body li::marker { color: var(--geo-primary-light); }
.post-body code {
  font-family: var(--geo-font-mono);
  font-size: .84em;
  background: var(--geo-bg-elevated);
  border: 1px solid var(--geo-border);
  border-radius: var(--geo-radius-sm);
  padding: 2px 7px;
  color: var(--geo-accent-light);
  word-break: break-word;
}
.post-body pre {
  background: var(--geo-bg-elevated);
  border: 1px solid var(--geo-border);
  border-radius: var(--geo-radius-lg);
  padding: var(--geo-space-5);
  overflow-x: auto;
  margin: 0 0 var(--geo-space-6);
  font-size: .84rem;
  line-height: 1.75;
}
.post-body pre code { background: none; border: none; padding: 0; color: var(--geo-text-muted); font-size: 1em; }
.post-body blockquote {
  margin: 0 0 var(--geo-space-6);
  padding: var(--geo-space-2) 0 var(--geo-space-2) var(--geo-space-6);
  border-left: 3px solid var(--geo-primary);
  color: var(--geo-text);
  font-size: 1.06rem;
  line-height: 1.75;
}
.post-body hr { border: none; border-top: 1px solid var(--geo-border); margin: var(--geo-space-12) 0; }
.post-body img { max-width: 100%; height: auto; border-radius: var(--geo-radius-lg); border: 1px solid var(--geo-border); }

/* --- Tables --- */
.post-table-wrap { overflow-x: auto; margin: 0 0 var(--geo-space-6); border: 1px solid var(--geo-border); border-radius: var(--geo-radius-lg); }
.post-body table { width: 100%; border-collapse: collapse; font-size: .9rem; min-width: 520px; }
.post-body th, .post-body td { text-align: left; padding: var(--geo-space-3) var(--geo-space-4); border-bottom: 1px solid var(--geo-border); vertical-align: top; }
.post-body th { background: var(--geo-bg-elevated); color: var(--geo-text); font-weight: 650; font-size: .82rem; letter-spacing: .02em; }
.post-body tbody tr:last-child td { border-bottom: none; }
.post-body td code { white-space: nowrap; }

/* --- Callouts --- */
.post-callout {
  display: flex;
  gap: var(--geo-space-4);
  align-items: flex-start;
  border-radius: var(--geo-radius-lg);
  padding: var(--geo-space-5) var(--geo-space-6);
  margin: 0 0 var(--geo-space-6);
  border: 1px solid rgba(6,182,212,.25);
  background: rgba(6,182,212,.06);
}
.post-callout p { margin: 0; font-size: .95rem; line-height: 1.7; }
.post-callout p + p { margin-top: var(--geo-space-3); }
.post-callout .ico { flex: 0 0 auto; color: var(--geo-accent-light); margin-top: 2px; }
.post-callout[data-type="warn"] { border-color: rgba(245,158,11,.28); background: rgba(245,158,11,.06); }
.post-callout[data-type="warn"] .ico { color: var(--geo-warning); }
.post-callout[data-type="tip"] { border-color: rgba(16,185,129,.25); background: rgba(16,185,129,.06); }
.post-callout[data-type="tip"] .ico { color: var(--geo-success); }

/* --- Key takeaways box --- */
.post-takeaways {
  border: 1px solid var(--geo-border);
  background: var(--geo-bg-card);
  border-radius: var(--geo-radius-xl);
  padding: var(--geo-space-6) var(--geo-space-8);
  margin: 0 0 var(--geo-space-10);
}
.post-takeaways h2 {
  font-size: .78rem !important;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--geo-text-dim) !important;
  margin: 0 0 var(--geo-space-4) !important;
}
.post-takeaways ul { margin: 0; padding-left: var(--geo-space-5); }
.post-takeaways li { font-size: .95rem; margin-bottom: var(--geo-space-2); }

/* --- Inline CTA --- */
.post-cta {
  border: 1px solid var(--geo-primary-300);
  border-radius: var(--geo-radius-xl);
  background: linear-gradient(135deg, rgba(125,86,171,.12), rgba(6,182,212,.07));
  padding: var(--geo-space-8);
  margin: var(--geo-space-10) 0;
  text-align: center;
}
.post-cta h3 { margin: 0 0 var(--geo-space-3) !important; font-size: 1.25rem !important; color: var(--geo-text); }
.post-cta p { color: var(--geo-text-muted); margin: 0 auto var(--geo-space-6); max-width: 480px; font-size: .95rem; }
.post-cta-btns { display: flex; flex-wrap: wrap; gap: var(--geo-space-3); justify-content: center; }
.post-cta a { border-bottom: none; }

/* --- FAQ --- */
.post-faq { margin-top: var(--geo-space-6); }
.post-faq details {
  border: 1px solid var(--geo-border);
  border-radius: var(--geo-radius-lg);
  background: var(--geo-bg-card);
  margin-bottom: var(--geo-space-3);
  overflow: hidden;
}
.post-faq summary {
  cursor: pointer;
  list-style: none;
  padding: var(--geo-space-4) var(--geo-space-6);
  font-weight: 650;
  color: var(--geo-text);
  font-size: .98rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--geo-space-4);
}
.post-faq summary::-webkit-details-marker { display: none; }
.post-faq summary::after { content: "+"; font-size: 1.3rem; color: var(--geo-primary-light); line-height: 1; flex: 0 0 auto; }
.post-faq details[open] summary::after { content: "\2212"; }
.post-faq details > div { padding: 0 var(--geo-space-6) var(--geo-space-5); font-size: .94rem; line-height: 1.75; }

/* --- Sidebar / TOC --- */
.post-aside { position: sticky; top: 92px; display: flex; flex-direction: column; gap: var(--geo-space-6); }
.post-toc {
  border: 1px solid var(--geo-border);
  background: var(--geo-bg-card);
  border-radius: var(--geo-radius-xl);
  padding: var(--geo-space-6);
}
.post-toc h4 {
  font-size: .72rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--geo-text-dim);
  margin: 0 0 var(--geo-space-4);
  font-weight: 700;
}
.post-toc ol { list-style: none; margin: 0; padding: 0; counter-reset: toc; }
.post-toc li { margin-bottom: var(--geo-space-2); counter-increment: toc; }
.post-toc a {
  display: block;
  font-size: .86rem;
  line-height: 1.5;
  color: var(--geo-text-muted);
  text-decoration: none;
  padding: 5px 0 5px var(--geo-space-5);
  border-left: 2px solid var(--geo-border);
  transition: all var(--geo-transition-fast);
}
.post-toc a:hover, .post-toc a.active { color: var(--geo-text); border-left-color: var(--geo-primary); }

.post-aside-cta {
  border: 1px solid var(--geo-primary-300);
  border-radius: var(--geo-radius-xl);
  background: linear-gradient(160deg, rgba(125,86,171,.14), rgba(6,182,212,.06));
  padding: var(--geo-space-6);
}
.post-aside-cta h4 { font-size: 1rem; color: var(--geo-text); margin: 0 0 var(--geo-space-2); font-weight: 700; }
.post-aside-cta p { font-size: .86rem; color: var(--geo-text-muted); line-height: 1.65; margin: 0 0 var(--geo-space-4); }

/* --- Related posts --- */
.post-related { border-top: 1px solid var(--geo-border); margin-top: var(--geo-space-16); padding-top: var(--geo-space-10); }
.post-related h2 { font-size: 1.3rem; font-weight: 800; color: var(--geo-text); margin: 0 0 var(--geo-space-6); }
.post-related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--geo-space-4); }
.post-related-item {
  display: block;
  border: 1px solid var(--geo-border);
  background: var(--geo-bg-card);
  border-radius: var(--geo-radius-lg);
  padding: var(--geo-space-5);
  text-decoration: none;
  border-bottom: 1px solid var(--geo-border);
  transition: border-color var(--geo-transition), transform var(--geo-transition);
}
.post-related-item:hover { border-color: var(--geo-border-hover); transform: translateY(-2px); }
.post-related-item span { font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--geo-primary-light); font-weight: 700; }
.post-related-item strong { display: block; margin-top: 8px; font-size: .95rem; line-height: 1.5; color: var(--geo-text); font-weight: 650; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
  .post-layout { grid-template-columns: minmax(0, 1fr); gap: var(--geo-space-8); }
  .post-aside { position: static; flex-direction: row; flex-wrap: wrap; }
  .post-toc, .post-aside-cta { flex: 1 1 280px; }
}
@media (max-width: 768px) {
  .blog-featured { grid-template-columns: 1fr; padding: var(--geo-space-6); gap: var(--geo-space-6); }
  .blog-grid { grid-template-columns: 1fr; }
  .post-body { font-size: .98rem; }
  .post-body h2 { font-size: 1.38rem; }
  .post-aside { flex-direction: column; }
  .post-cta { padding: var(--geo-space-6); }
  .post-takeaways { padding: var(--geo-space-5) var(--geo-space-6); }
}
