/* Typography for rendered Markdown (the .prose container). Loaded on the pages that render
   article bodies: Yield articles, quiz answers and the admin quiz editor. The syntax-highlighting theme (Rouge) is appended below this block. */
.prose { color: #374151; line-height: 1.75; }
.prose h2 { font-size: 1.5rem; font-weight: 700; color: #111827; margin: 2.25rem 0 .75rem; letter-spacing: -.01em; }
.prose h3 { font-size: 1.2rem; font-weight: 600; color: #111827; margin: 1.75rem 0 .5rem; }
.prose p { margin: 1rem 0; }
.prose a { color: #2563eb; text-decoration: underline; text-underline-offset: 2px; }
.prose a:hover { color: #1d4ed8; }
.prose strong { color: #111827; font-weight: 600; }
.prose ul, .prose ol { margin: 1rem 0; padding-left: 1.5rem; }
.prose ul { list-style: disc; }
.prose ol { list-style: decimal; }
.prose li { margin: .4rem 0; }
.prose blockquote { margin: 1.5rem 0; padding-left: 1rem; border-left: 3px solid #e5e7eb; color: #6b7280; font-style: italic; }
.prose code { background: #f3f4f6; color: #1f2937; padding: .15em .4em; border-radius: 4px; font-size: .9em; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.prose pre { margin: 1.5rem 0; padding: 1rem; border-radius: .5rem; overflow-x: auto; border: 1px solid #e5e7eb; font-size: .875rem; }
.prose pre code { background: none; padding: 0; }
.prose img { border-radius: .5rem; margin: 1.5rem 0; }
.prose table { width: 100%; border-collapse: collapse; margin: 1.25rem 0; font-size: .9rem; }
.prose th, .prose td { border: 1px solid #e5e7eb; padding: .5rem .75rem; text-align: left; }
.prose th { background: #f9fafb; }
.prose hr { margin: 2rem 0; border: 0; border-top: 1px solid #e5e7eb; }

/* ---- Rouge syntax highlighting theme (generated, scoped to .prose .highlight) ---- */
.prose .highlight table td { padding: 5px; }
.prose .highlight table pre { margin: 0; }
.prose .highlight, .prose .highlight .w {
  color: #24292f;
  background-color: #f6f8fa;
}
.prose .highlight .k, .prose .highlight .kd, .prose .highlight .kn, .prose .highlight .kp, .prose .highlight .kr, .prose .highlight .kt, .prose .highlight .kv {
  color: #cf222e;
}
.prose .highlight .gr {
  color: #f6f8fa;
}
.prose .highlight .gd {
  color: #82071e;
  background-color: #ffebe9;
}
.prose .highlight .nb {
  color: #953800;
}
.prose .highlight .nc {
  color: #953800;
}
.prose .highlight .no {
  color: #953800;
}
.prose .highlight .nn {
  color: #953800;
}
.prose .highlight .sr {
  color: #116329;
}
.prose .highlight .na {
  color: #116329;
}
.prose .highlight .nt {
  color: #116329;
}
.prose .highlight .gi {
  color: #116329;
  background-color: #dafbe1;
}
.prose .highlight .ges {
  font-weight: bold;
  font-style: italic;
}
.prose .highlight .kc {
  color: #0550ae;
}
.prose .highlight .l, .prose .highlight .ld, .prose .highlight .m, .prose .highlight .mb, .prose .highlight .mf, .prose .highlight .mh, .prose .highlight .mi, .prose .highlight .il, .prose .highlight .mo, .prose .highlight .mx {
  color: #0550ae;
}
.prose .highlight .sb {
  color: #0550ae;
}
.prose .highlight .bp {
  color: #0550ae;
}
.prose .highlight .ne {
  color: #0550ae;
}
.prose .highlight .nl {
  color: #0550ae;
}
.prose .highlight .py {
  color: #0550ae;
}
.prose .highlight .nv, .prose .highlight .vc, .prose .highlight .vg, .prose .highlight .vi, .prose .highlight .vm {
  color: #0550ae;
}
.prose .highlight .o, .prose .highlight .ow {
  color: #0550ae;
}
.prose .highlight .gh {
  color: #0550ae;
  font-weight: bold;
}
.prose .highlight .gu {
  color: #0550ae;
  font-weight: bold;
}
.prose .highlight .s, .prose .highlight .sa, .prose .highlight .sc, .prose .highlight .dl, .prose .highlight .sd, .prose .highlight .s2, .prose .highlight .se, .prose .highlight .sh, .prose .highlight .sx, .prose .highlight .s1, .prose .highlight .ss {
  color: #0a3069;
}
.prose .highlight .nd {
  color: #8250df;
}
.prose .highlight .nf, .prose .highlight .fm {
  color: #8250df;
}
.prose .highlight .err {
  color: #f6f8fa;
  background-color: #82071e;
}
.prose .highlight .c, .prose .highlight .ch, .prose .highlight .cd, .prose .highlight .cm, .prose .highlight .cp, .prose .highlight .cpf, .prose .highlight .c1, .prose .highlight .cs {
  color: #6e7781;
}
.prose .highlight .gl {
  color: #6e7781;
}
.prose .highlight .gt {
  color: #6e7781;
}
.prose .highlight .ni {
  color: #24292f;
}
.prose .highlight .si {
  color: #24292f;
}
.prose .highlight .ge {
  color: #24292f;
  font-style: italic;
}
.prose .highlight .gs {
  color: #24292f;
  font-weight: bold;
}
/* ---- Quiz answers ---- */
/* Choice rows on /quiz/:slug. Placed inside a .prose scope so inline `code` in choice
   bodies inherits the .prose code look. */
.quiz-choice { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin: 0; padding: .65rem .9rem; border: 1px solid #e5e7eb; border-radius: .5rem; background: #fff; }
.quiz-choice--correct { border-color: #6366f1; border-left-width: 3px; background: #eef2ff; box-shadow: 0 0 0 1px rgb(99 102 241 / .15); }
.quiz-choice--wrong { opacity: .6; color: #6b7280; }
.quiz-choice code { background: #f3f4f6; color: #1f2937; padding: .15em .4em; border-radius: 4px; font-size: .9em; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

/* 2-line clamp for index cards (the Tailwind build may not include the line-clamp utility). */
.line-clamp-2 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
