/* ═══════════════════════════════════════════════════════════════
   UJIYARI — Article body content styles
   Pure CSS on Markdown-rendered HTML. No JS class dependencies.
═══════════════════════════════════════════════════════════════ */

.article-main {
  min-width: 0;
}

/* ── Article body card ──────────────────────────────────────── */
.article-body {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-2xl);
  padding: var(--space-8);
  box-shadow: var(--shadow-md);
  overflow: hidden;           /* enables h2 full-bleed via negative margins */
  font-size: 1.0625rem;      /* 17px — slightly larger for comfortable reading */
  line-height: 1.85;         /* generous line-height for dense UPSC content */
  color: var(--color-text-primary);  /* near-black — better contrast than grey */
  letter-spacing: -0.006em;  /* subtle tightening at larger size */
}

/* ── h2 — Full-bleed section banner ────────────────────────── */
/* Bleeds to card edges using negative margins + overflow:hidden on parent */
.article-body h2 {
  background: linear-gradient(135deg, var(--color-brand-dark) 0%, var(--color-brand) 100%);
  margin: var(--space-10) calc(-1 * var(--space-8)) var(--space-6) calc(-1 * var(--space-8));
  padding: var(--space-4) var(--space-8);
  border-left: 5px solid var(--color-accent);
  color: var(--color-white);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--font-extrabold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  line-height: var(--leading-normal);
}

/* First h2 flush with top of card */
.article-body h2:first-child {
  margin-top: calc(-1 * var(--space-8));
  border-radius: 0;
}

/* ── h3 — Article / sub-section title ──────────────────────── */
.article-body h3 {
  position: relative;
  margin: var(--space-8) 0 var(--space-4);
  padding-bottom: var(--space-3);
  font-family: var(--font-serif);
  font-size: clamp(1.3rem, 2.2vw, 1.65rem);
  font-weight: var(--font-bold);
  color: var(--color-brand-dark);
  line-height: var(--leading-snug);
}

.article-body h3::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 48px;
  height: 3px;
  background: var(--color-accent);
  border-radius: var(--radius-full);
}

/* Link inside h3 (monthly notes: heading links to source article) */
.article-body h3 a {
  color: inherit;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-decoration-color: var(--color-accent);
  text-underline-offset: 5px;
  text-decoration-thickness: 2px;
}
.article-body h3 a:hover {
  color: var(--color-brand-light);
  text-decoration-style: solid;
  text-decoration-color: var(--color-brand-light);
}

/* ── h4 — Sub-heading with left accent bar ─────────────────── */
/* h4 does the heavy lifting in articles (Background, Key      */
/* Developments, etc.) — needs to be a real, visible heading    */
.article-body h4 {
  display: block;
  margin: var(--space-6) 0 var(--space-3);
  padding: var(--space-2) 0 var(--space-2) var(--space-4);
  border-left: 4px solid var(--color-accent);
  background: none;
  font-family: var(--font-sans);
  font-size: 1.05rem;
  font-weight: var(--font-bold);
  letter-spacing: 0.01em;
  text-transform: none;
  color: var(--color-brand-dark);
  line-height: var(--leading-snug);
}

/* ── h5 — Minor sub-heading ────────────────────────────────── */
.article-body h5 {
  margin: var(--space-5) 0 var(--space-3);
  padding: var(--space-1) 0 var(--space-1) var(--space-3);
  border-left: 3px solid rgba(232, 131, 10, 0.5);
  font-family: var(--font-sans);
  font-size: 0.9375rem;
  font-weight: var(--font-bold);
  color: var(--color-brand);
  letter-spacing: 0.01em;
}

/* ── Body text ──────────────────────────────────────────────── */
.article-body p {
  margin-bottom: var(--space-4);
  max-width: 68ch;
}

/* First paragraph after Why in News — slightly larger lead-in */
.article-body > blockquote:first-child + h4 + p,
.article-body > blockquote:first-child + p {
  font-size: 1.0625rem;
  line-height: 1.85;
}

.article-body ul,
.article-body ol {
  margin-bottom: var(--space-5);
  padding-left: var(--space-6);
  max-width: 68ch;
  list-style: none;
}

.article-body ol {
  counter-reset: list-counter;
}

.article-body li {
  position: relative;
  margin-bottom: var(--space-2);
  padding-left: var(--space-5);
  line-height: 1.8;
}

/* Custom bullet — saffron dot, vertically aligned to first line */
.article-body ul > li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--color-accent);
}

/* Custom numbers for ordered lists */
.article-body ol > li {
  counter-increment: list-counter;
}

.article-body ol > li::before {
  content: counter(list-counter);
  position: absolute;
  left: 0;
  top: 0.05em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.4em;
  height: 1.4em;
  border-radius: 50%;
  background: var(--color-brand-dark);
  color: var(--color-white);
  font-size: 0.7em;
  font-weight: var(--font-bold);
}

/* Nested lists — tighter spacing, smaller bullets */
.article-body li > ul,
.article-body li > ol {
  margin-top: var(--space-3);
  margin-bottom: var(--space-2);
}

.article-body li > ul > li {
  margin-bottom: var(--space-2);
  padding-left: var(--space-4);
}

.article-body li > ul > li::before {
  width: 5px;
  height: 5px;
  background: var(--color-border);
  top: 0.7em;
}

/* Facts Corner li — already has its own padding/margin/::before rules    */
/* at higher specificity (blockquote:has(ul) > ul > li) — no override    */
/* needed here. The generic .article-body li styles are safely overridden */

.article-body strong {
  font-weight: var(--font-semibold);
  color: var(--color-text-primary);
}

.article-body em {
  font-style: italic;
}

.article-body a {
  color: var(--color-brand-light);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(37, 99, 168, 0.35);
  transition: all var(--transition-fast);
}

.article-body a:hover {
  color: var(--color-brand);
  text-decoration-color: var(--color-brand);
}

/* ── Tables ─────────────────────────────────────────────────── */
.article-body table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin: var(--space-6) 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  font-size: 0.9375rem;
  line-height: 1.65;
  box-shadow: var(--shadow-sm);
}

.article-body th {
  padding: var(--space-3) var(--space-5);
  background: #f0f4f8;
  color: #374151;
  text-align: left;
  font-weight: var(--font-semibold);
  font-size: 0.8125rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  border-bottom: 2px solid #e2a84b;
}

.article-body td {
  padding: var(--space-3) var(--space-5);
  border-top: 1px solid #f0f0f0;
  vertical-align: top;
  color: #1f2937;
}

/* First column — label — subtle emphasis */
.article-body td:first-child {
  font-weight: var(--font-medium);
  color: #1f2937;
}

.article-body tr:nth-child(even) td {
  background: #fafbfc;
}

.article-body tr:hover td {
  background: #fef7ed;
}

/* Mobile: allow horizontal scroll without breaking table width */
@media (max-width: 640px) {
  .article-body table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ── Images ─────────────────────────────────────────────────── */
.article-body img {
  display: block;
  max-width: 100%;
  margin: var(--space-8) auto;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

.article-body figcaption {
  margin-top: calc(-1 * var(--space-4));
  margin-bottom: var(--space-6);
  color: var(--color-text-muted);
  font-size: var(--text-sm);
  text-align: center;
}

/* ── Divider ─────────────────────────────────────────────────── */
.article-body hr {
  position: relative;
  height: 1px;
  margin: var(--space-8) 0;
  border: none;
  background: linear-gradient(90deg, transparent, var(--color-border), transparent);
}

.article-body hr::after {
  content: '◆';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 0 var(--space-3);
  background: var(--color-surface);
  color: var(--color-accent);
  font-size: 8px;
}

/* ══════════════════════════════════════════════════════════════
   BLOCKQUOTES
   Why in News   → intro card with navy label (first blockquote only)
   UPSC Relevance → full card; triggered by p:has(>strong:only-child) + blockquote
   Other blockquotes → plain lede text
══════════════════════════════════════════════════════════════ */

/* ── Why in News — intro card ──────────────────────────────── */
/* Targets only the FIRST blockquote inside the article body   */
/* (other plain blockquotes remain as lede text below)         */
.article-body > blockquote:first-child:not(:has(ul)) {
  margin: 0 0 var(--space-6);
  padding: var(--space-5);
  border: none;
  border-radius: var(--radius-xl);
  background: #fffdf9;           /* warm cream — same as Facts Corner */
  overflow: hidden;
  box-shadow:
    inset 0 0 0 1.5px rgba(232, 131, 10, 0.20),
    0 2px 16px rgba(26, 58, 92, 0.07);
}

/* Show the "🗞️ Why in News" label as a full-bleed navy header bar */
/* Uses same negative-margin bleed technique as .article-body h2   */
.article-body > blockquote:first-child:not(:has(ul)) > p > strong:first-child {
  display: block;
  margin: calc(-1 * var(--space-5)) calc(-1 * var(--space-5)) var(--space-4) calc(-1 * var(--space-5));
  padding: var(--space-2) var(--space-5);
  background: linear-gradient(135deg, var(--color-brand-dark) 0%, var(--color-brand) 100%);
  border-top: 4px solid var(--color-accent);
  color: var(--color-white);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: var(--font-extrabold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1.5;
}

/* Body text inside the intro card — readable, NOT italic */
/* Higher specificity to override the generic blockquote italic rule */
.article-body > blockquote:first-child:not(:has(ul)) > p {
  margin: 0;
  padding: 0;
  font-size: 1.0625rem;
  line-height: 1.95;
  color: var(--color-text-primary);
  font-style: normal !important;  /* override generic blockquote italic */
  max-width: none;
}

/* Bold text inside Why in News body — stays navy, no italic */
.article-body > blockquote:first-child:not(:has(ul)) > p > strong:not(:first-child) {
  color: var(--color-text-primary);
  font-weight: var(--font-semibold);
  font-style: normal;
}

/* ── Other plain blockquotes (not first, not Facts Corner) ─── */
/* Flows as a plain italic lede — e.g. pull-quotes, context     */
.article-body blockquote:not(:has(ul)) {
  margin: 0 0 var(--space-6);
  padding: 0;
  border: none;
}

.article-body blockquote:not(:has(ul)) > p {
  margin: 0;
  padding: 0;
  font-size: var(--text-base);
  line-height: 1.9;
  color: var(--color-text-muted);
  font-style: italic;
}

/* Hide inline label in non-intro blockquotes */
.article-body blockquote:not(:has(ul)) > p > strong:first-child {
  display: none;
}

.article-body blockquote:not(:has(ul)) > p > strong:not(:first-child) {
  color: var(--color-text-primary);
  font-weight: var(--font-semibold);
  font-style: normal;
}

/* ══════════════════════════════════════════════════════════════
   UPSC RELEVANCE BOX
   Triggered by: p:has(> strong:only-child) + blockquote
   The "UPSC Relevance" bold paragraph merges with the box below
   to form a unified card — the paragraph becomes the header bar.
══════════════════════════════════════════════════════════════ */

/* Hide the standalone **UPSC Relevance** paragraph —
   the box header is rendered via ::before on the blockquote instead.
   :has(+ blockquote) avoids the nested :has() that fails in some browsers. */
.article-body p:has(> strong:only-child):has(+ blockquote) {
  display: none;
}

/* UPSC Relevance box: override hidden base, full card with green border */
.article-body p:has(> strong:only-child) + blockquote:not(:has(ul)) {
  display: block;
  margin: var(--space-2) 0 var(--space-6);
  padding: 0;
  border: none;
  border-left: 4px solid #059669;
  border-radius: var(--radius-xl);
  background: var(--color-surface);
  overflow: hidden;
  box-shadow:
    0 0 0 1px rgba(26, 58, 92, 0.10),
    0 4px 20px rgba(26, 58, 92, 0.06);
}

.article-body p:has(> strong:only-child) + blockquote:not(:has(ul))::before {
  content: 'UPSC Relevance';
  display: block;
  padding: var(--space-2) var(--space-6);
  background: linear-gradient(135deg, #064e3b 0%, #065f46 100%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--color-white);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: var(--font-extrabold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1.5;
}

/* Restore paragraph styles inside UPSC Relevance box */
.article-body p:has(> strong:only-child) + blockquote:not(:has(ul)) > p {
  margin: 0;
  padding: var(--space-4) var(--space-6) var(--space-5);
  max-width: none;
  font-size: var(--text-base);
  font-style: normal;
  line-height: 1.82;
  color: var(--color-text-secondary);
}

/* Prelims: sub-label row — override the display:none from base */
.article-body p:has(> strong:only-child) + blockquote:not(:has(ul)) > p > strong:first-child {
  background: rgba(5, 150, 105, 0.10);
  border-bottom: 1px solid rgba(6, 95, 70, 0.15);
  color: #065f46;
}

/* Mains GS-2:, Mains GS-3: etc. — section-divider rows */
.article-body p:has(> strong:only-child) + blockquote:not(:has(ul)) > p > strong:not(:first-child) {
  display: block;
  margin: var(--space-4) calc(-1 * var(--space-6)) 0;
  padding: var(--space-2) var(--space-6);
  border-top: 1px solid rgba(6, 95, 70, 0.15);
  background: rgba(5, 150, 105, 0.07);
  color: #065f46;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: var(--font-extrabold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1.5;
}

/* ── Facts Corner — Knowledgepedia ──────────────────────────── */
/* ══════════════════════════════════════════════════════════════
   FACTS CORNER — blockquote:has(ul)
   Rendered HTML: <blockquote> > <p> + <ul> alternating.
   First <p> = title, subsequent <p> = category labels, <ul> = facts.
   Generic .article-body ul/li rules MUST be fully overridden here
   (especially max-width:68ch and padding-left on ul).
══════════════════════════════════════════════════════════════ */
.article-body blockquote:has(ul) {
  margin: var(--space-8) 0;
  padding: 0;
  border: 1px solid #e5e7eb;
  border-radius: var(--radius-lg);
  background: #ffffff;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

/* ── Title bar ─────────────────────────────────────────────── */
.article-body blockquote:has(ul) > p:first-child {
  margin: 0;
  padding: var(--space-3) var(--space-5);
  max-width: none;
  background: #f0f4f8;
  border-bottom: 2px solid #e2a84b;
  color: #374151;
  font-family: var(--font-sans);
  font-size: 0.875rem;
  font-weight: var(--font-semibold);
  letter-spacing: 0.01em;
  text-transform: none;
}

/* ── Category sub-headings ──────────────────────────────────── */
.article-body blockquote:has(ul) > p:not(:first-child) {
  margin: 0;
  padding: var(--space-2) var(--space-5);
  max-width: none;
  background: #fefce8;
  border-top: 1px solid #e5e7eb;
  color: #92400e;
  font-size: 0.8125rem;
  font-weight: var(--font-semibold);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

/* ── Facts list — override generic .article-body ul ─────────── */
.article-body blockquote:has(ul) > ul {
  list-style: none;
  margin: 0;
  padding: 0 !important;
  padding-left: 0 !important;
  max-width: none !important;
  margin-bottom: 0 !important;
}

/* ── Fact rows — override generic .article-body li ──────────── */
.article-body blockquote:has(ul) > ul > li {
  position: relative;
  display: block;
  margin: 0 !important;
  margin-bottom: 0 !important;
  padding: var(--space-2) var(--space-5) var(--space-2) calc(var(--space-5) + 20px) !important;
  border-top: 1px solid #f3f4f6;
  font-size: 0.9375rem;
  font-weight: var(--font-normal);
  letter-spacing: normal;
  line-height: 1.7;
  color: #1f2937;
}

/* Zebra stripe — very subtle */
.article-body blockquote:has(ul) > ul > li:nth-child(even) {
  background: #f9fafb;
}

/* Hover — warm cream */
.article-body blockquote:has(ul) > ul > li:hover {
  background: #fef7ed;
}

/* Saffron dot bullet — override generic ul > li::before */
.article-body blockquote:has(ul) > ul > li::before {
  content: '';
  position: absolute;
  left: var(--space-5) !important;
  top: calc(var(--space-2) + 0.55em) !important;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #e2a84b;
}

/* All strong inside facts corner — inherit, no color shift */
.article-body blockquote:has(ul) p strong {
  color: inherit;
  font-weight: inherit;
}

.article-body blockquote:has(ul) > ul > li strong {
  color: inherit !important;
  font-weight: var(--font-medium) !important;
}

/* ── Source note ─────────────────────────────────────────────── */
/* Last <em> paragraph at end of article */
.article-body > p:last-child {
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

.article-body > p:last-child em {
  font-style: normal;
}

/* ── Mark / highlight ────────────────────────────────────────── */
.article-body mark {
  background: var(--color-accent-light);
  color: var(--color-text-primary);
  padding: 0 var(--space-1);
  border-radius: var(--radius-sm);
}

/* ── Infographic wrapper ─────────────────────────────────────── */
.infographic-wrap {
  margin: var(--space-8) 0;
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface-alt);
  text-align: center;
}

.infographic-wrap img {
  margin: 0 auto;
  box-shadow: none;
}

/* ── Article resources / support card ───────────────────────── */
.article-support {
  margin-top: var(--space-6);
}

.article-support__title {
  margin: 0 0 var(--space-4);
  font-size: var(--text-base);
  font-weight: var(--font-bold);
  color: var(--color-text-primary);
}

/* Inline audio player */
.article-audio {
  margin-bottom: var(--space-5);
  padding-bottom: var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.article-audio__label {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  color: var(--color-text-secondary);
  margin-bottom: var(--space-3);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.article-audio__player {
  width: 100%;
  height: 44px;
  border-radius: var(--radius-lg);
  outline: none;
}

.article-support__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

.article-backlink {
  margin-top: var(--space-6);
}

/* ── TOC sidebar widget ──────────────────────────────────────── */
.article-toc-widget[hidden] {
  display: none;
}

/* Hide sidebar TOC on mobile — the mobile-toc <details> handles it */
@media (max-width: 1023px) {
  .article-toc-widget {
    display: none !important;
  }
}

.article-toc {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

/* ── Primary link (h2) ──────────────────────────────────────── */
.article-toc__link {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  border-left: 2px solid transparent;
  color: var(--color-text-secondary);
  text-decoration: none;
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  line-height: 1.45;
  transition: all var(--transition-fast);
}

.article-toc__link:hover {
  background: var(--color-surface-alt);
  color: var(--color-brand-dark);
}

.article-toc__link.is-active {
  background: rgba(37, 99, 168, 0.06);
  color: var(--color-brand-dark);
  border-left-color: var(--color-accent);
  font-weight: var(--font-semibold);
}

/* Number badge */
.article-toc__index {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  margin-top: 1px;
  border-radius: var(--radius-sm);
  background: rgba(37, 99, 168, 0.08);
  color: var(--color-brand-light);
  font-size: 10px;
  font-weight: var(--font-extrabold);
  transition: background var(--transition-fast), color var(--transition-fast);
}

.article-toc__link.is-active .article-toc__index {
  background: var(--color-accent);
  color: var(--color-white);
}

/* ── Sub-link (h3): same font size, dot indicator, indented ─── */
.article-toc__link--sub {
  position: relative;
  padding-top: var(--space-1);
  padding-bottom: var(--space-1);
  padding-left: calc(var(--space-3) + 1.5rem + var(--space-3) + var(--space-2));
  font-size: var(--text-sm);
  font-weight: var(--font-normal);
  color: var(--color-text-muted);
  border-left-color: transparent;
}

/* Small dot to indicate sub-item visually */
.article-toc__link--sub::before {
  content: '';
  position: absolute;
  left: calc(var(--space-3) + 1.5rem + var(--space-3) - 1px);
  top: 50%;
  transform: translateY(-50%);
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--color-border);
  transition: background var(--transition-fast);
}

.article-toc__link--sub:hover {
  color: var(--color-brand);
  background: var(--color-surface-alt);
}

.article-toc__link--sub:hover::before,
.article-toc__link--sub.is-active::before {
  background: var(--color-accent);
}

.article-toc__link--sub.is-active {
  color: var(--color-brand);
  font-weight: var(--font-medium);
  background: rgba(37, 99, 168, 0.04);
}

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 768px) {
  .article-body {
    padding: var(--space-6);
    border-radius: var(--radius-xl);
    font-size: 1.0625rem;    /* keep 17px on tablet */
  }

  .article-body p,
  .article-body ul,
  .article-body ol {
    max-width: none;          /* full width on smaller screens */
  }

  .article-body h2 {
    margin-left: calc(-1 * var(--space-6));
    margin-right: calc(-1 * var(--space-6));
    padding-left: var(--space-6);
    padding-right: var(--space-6);
  }

  .article-body h2:first-child {
    margin-top: calc(-1 * var(--space-6));
  }

  /* Why in News card — adjust bleed margins for smaller padding */
  .article-body > blockquote:first-child:not(:has(ul)) {
    padding: var(--space-5);
  }

  .article-body > blockquote:first-child:not(:has(ul)) > p > strong:first-child {
    margin: calc(-1 * var(--space-5)) calc(-1 * var(--space-5)) var(--space-4) calc(-1 * var(--space-5));
    padding: var(--space-2) var(--space-5);
  }

  .article-body blockquote:has(ul) > p:first-child,
  .article-body blockquote:has(ul) > p:not(:first-child) {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }

  .article-body blockquote:has(ul) > ul > li {
    padding-left: calc(var(--space-4) + 20px);
    padding-right: var(--space-4);
  }

  .article-body blockquote:has(ul) > ul > li::before {
    left: var(--space-4);
  }
}

@media (max-width: 480px) {
  .article-body {
    padding: var(--space-4);
    border-radius: var(--radius-lg);
    font-size: 1rem;
    line-height: 1.8;
  }

  .article-body h2 {
    margin-left: calc(-1 * var(--space-4));
    margin-right: calc(-1 * var(--space-4));
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }

  .article-body h2:first-child {
    margin-top: calc(-1 * var(--space-4));
  }

  .article-body blockquote:has(ul) > p:first-child,
  .article-body blockquote:has(ul) > p:not(:first-child) {
    padding-left: var(--space-3);
    padding-right: var(--space-3);
  }

  .article-body blockquote:has(ul) > ul > li {
    padding-left: calc(var(--space-3) + 20px);
    padding-right: var(--space-3);
  }

  .article-body blockquote:has(ul) > ul > li::before {
    left: var(--space-3);
  }
}

/* ══════════════════════════════════════════════════════════════
   READING PROGRESS BAR
══════════════════════════════════════════════════════════════ */
.reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  z-index: calc(var(--z-sticky) + 1);
  background: transparent;
  pointer-events: none;
}

.reading-progress__bar {
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, var(--color-accent), var(--color-brand-light));
  transition: width 80ms linear;
}

/* ══════════════════════════════════════════════════════════════
   MOBILE TOC (visible only when sidebar is hidden — <1024px)
══════════════════════════════════════════════════════════════ */
.mobile-toc {
  display: none;
  margin-bottom: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  overflow: hidden;
}

/* Show on mobile only when nav has content (JS adds links) */
@media (max-width: 1023px) {
  .mobile-toc:has(.article-toc__link) { display: block; }
}

.mobile-toc__toggle {
  display: flex;
  align-items: center;
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  color: var(--color-brand);
  cursor: pointer;
  list-style: none;
}

/* Remove default disclosure triangle in WebKit/Blink */
.mobile-toc__toggle::-webkit-details-marker {
  display: none;
}

.mobile-toc__toggle::before {
  content: '▶';
  margin-right: var(--space-2);
  font-size: 10px;
  transition: transform var(--transition-fast);
}

.mobile-toc[open] .mobile-toc__toggle::before {
  transform: rotate(90deg);
}

.mobile-toc__nav {
  padding: 0 var(--space-4) var(--space-4);
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.mobile-toc__nav .article-toc__link {
  font-size: var(--text-sm);
}

/* ══════════════════════════════════════════════════════════════
   SOURCE LINE STYLING
══════════════════════════════════════════════════════════════ */
.article-body > p:last-child em a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: 2px var(--space-2);
  border-radius: var(--radius-sm);
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  color: var(--color-text-muted);
  font-size: var(--text-xs);
  font-weight: var(--font-medium);
  text-decoration: none;
  transition: all var(--transition-fast);
}

.article-body > p:last-child em a:hover {
  background: var(--color-brand);
  color: var(--color-white);
  border-color: var(--color-brand);
}

/* ══════════════════════════════════════════════════════════════
   RELATED EDITORIALS
══════════════════════════════════════════════════════════════ */
.related-editorials {
  margin-top: var(--space-8);
}

.related-editorials__title {
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--font-extrabold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-brand);
  margin-bottom: var(--space-4);
  padding-bottom: var(--space-2);
  border-bottom: 2px solid var(--color-accent);
  display: inline-block;
}

.related-editorials__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
}

@media (max-width: 640px) {
  .related-editorials__grid {
    grid-template-columns: 1fr;
  }
}

.related-editorial-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  text-decoration: none;
  transition: all var(--transition-fast);
}

.related-editorial-card:hover {
  border-color: var(--color-brand-light);
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}

.related-editorial-card__newspaper {
  font-size: 10px;
  font-weight: var(--font-extrabold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-accent-dark);
}

.related-editorial-card__name {
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  color: var(--color-brand-dark);
  line-height: var(--leading-snug);
}

.related-editorial-card__date {
  font-size: var(--text-xs);
  color: var(--color-text-muted);
}

/* ═══════════════════════════════════════════════════════════════
   WEEKLY-SPECIFIC BLOCKQUOTE STYLES
   Scoped to .article-body--weekly to avoid affecting daily/editorial
═══════════════════════════════════════════════════════════════ */

/* ── Week at a Glance ───────────────────────────────────────── */
/* First blockquote in weekly article: "📅 Week at a Glance"   */
.article-body--weekly > blockquote:first-child {
  background: linear-gradient(135deg, #fffcf7 0%, #fff7eb 100%);
  border-left: 5px solid var(--color-accent);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-6);
}

/* Make the "📅 Week at a Glance" bold label a standalone header */
.article-body--weekly > blockquote:first-child > p > strong:first-child {
  display: block;
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid rgba(232, 131, 10, 0.25);
  font-family: var(--font-sans);
  font-size: var(--text-xs);
  font-weight: var(--font-extrabold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent-dark);
}

/* Summary paragraph text */
.article-body--weekly > blockquote:first-child > p {
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  color: var(--color-text-primary);
  margin-bottom: 0;
}

/* ── UPSC Relevance ─────────────────────────────────────────── */
/* Multi-paragraph blockquote (not first, not Facts Corner):    */
/* Each paragraph = one GS paper row (Prelims, GS-1, GS-2…)   */
.article-body--weekly blockquote:not(:has(ul)):not(:first-child):has(p + p) {
  padding: 0;
  border-left: none;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  overflow: hidden;
}

/* Each GS paper row */
.article-body--weekly blockquote:not(:has(ul)):not(:first-child):has(p + p) > p {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  margin: 0;
  padding: var(--space-3) var(--space-5);
  border-bottom: 1px solid var(--color-border-light);
  font-size: var(--text-sm);
  line-height: 1.65;
  color: var(--color-text-secondary);
}

.article-body--weekly blockquote:not(:has(ul)):not(:first-child):has(p + p) > p:last-child {
  border-bottom: none;
}

/* GS Paper label pill (Prelims:, Mains GS-2:, etc.) */
.article-body--weekly blockquote:not(:has(ul)):not(:first-child):has(p + p) > p > strong:first-child {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  padding: 2px var(--space-3);
  border-radius: var(--radius-full);
  font-size: 10px;
  font-weight: var(--font-extrabold);
  letter-spacing: 0.07em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--color-white);
  background: var(--color-brand-dark);
}

/* Prelims row — saffron pill */
.article-body--weekly blockquote:not(:has(ul)):not(:first-child):has(p + p) > p:first-child > strong:first-child {
  background: linear-gradient(135deg, var(--color-accent-dark), var(--color-accent));
}

@media (max-width: 600px) {
  .article-body--weekly blockquote:not(:has(ul)):not(:first-child):has(p + p) > p {
    flex-direction: column;
    gap: var(--space-2);
  }
}
