/* General content typography styles */
.content {
  padding-top: 0.5rem;
}

.content .MathJax {
  font-size: 100% !important;
  overflow-x: auto;
  overflow-y: hidden;
}

.content .katex {
  font-size: 100% !important;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 1.0rem;
}

.content :last-child {
  margin-bottom: 0;
}

.content a {
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--fg4) 30%, transparent);
  transition:
    color 0.3s ease-in-out,
    text-decoration-color 0.3s ease-in-out;
}

.content a:hover {
  color: var(--fg2);
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--fg2) 30%, transparent);
}

.content a.footnote-ref {
  text-decoration: none;
}

.content a.footnote-ref::before {
  content: "[";
}

.content a.footnote-ref::after {
  content: "]";
}

.content blockquote {
  background-color: var(--bg_s);
  border-left: none;
  font-style: normal;
  padding: 0 1.25rem;
  margin: 1.2rem 0 1.2rem 1rem;
}

.content blockquote blockquote {
  background-color: var(--bg1);
}

/* Epigraph style (Tufte-inspired) */
.content blockquote.epigraph {
  background: transparent;
  border: none;
  color: var(--fg2);
  font-style: italic;
  font-size: 1.05rem;
  line-height: 1.5;
  margin: 1.2rem 0 1.2rem 1rem;
  max-width: 100%;
  padding: 0 1.25rem;
  position: relative;
}
.content blockquote.epigraph::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.2rem;
  bottom: 0.2rem;
  width: 3px;
  background-color: var(--fg5);
  opacity: 0.6;
}

.content pre {
  background-color: var(--bg_code) !important;
  border-radius: 0.2rem;
  font-family: 'Iowan Old Style BT', Georgia, serif;
  position: relative;
  overflow-x: auto;
  padding: 1rem 2rem 1rem 1rem; /* default top padding for blocks without language */
}

/* Increase top padding only when language label is present */
.content pre:has(code[data-lang]) {
  padding-top: 2rem;
}

/* Copy button styles */
.code-block-wrapper {
  position: relative;
}
button.copy-button {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  left: auto;
  background-color: transparent;
  color: var(--fg4);
  border: none;
  border-radius: 0.3rem;
  padding: 0.4rem;
  cursor: pointer;
  opacity: 0;
  transition:
    opacity 0.2s ease-in-out,
    background-color 0.15s ease-in-out,
    color 0.15s ease-in-out;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.code-block-wrapper:hover .copy-button,
.content pre:hover button.copy-button {
  opacity: 1;
}

button.copy-button:hover {
  opacity: 1 !important;
  background-color: color-mix(in srgb, var(--fg4) 8%, transparent);
  color: var(--fg2);
}

button.copy-button svg {
  width: 1rem;
  height: 1rem;
  fill: currentColor;
}

.content pre code {
  padding: 0;
  color: var(--fg4);
  padding: 0 0.8rem 0 0.2rem;
  font-size: 13px;
  /* Preserve original lines; allow horizontal scroll on container */
  white-space: pre;
  word-break: normal;
  overflow-wrap: normal;
  display: block;
  line-height: 1.4;
}

/* Improve text selection contrast inside code blocks */
.content pre::selection,
.content pre code::selection,
.content pre *::selection {
  background-color: #d0d0d0;
}
.content pre::-moz-selection,
.content pre code::-moz-selection,
.content pre *::-moz-selection {
  background-color: #d0d0d0;
}

.darkmode .content pre::selection,
.darkmode .content pre code::selection,
.darkmode .content pre *::selection {
  background-color: rgba(255, 255, 255, 0.5);
  color: var(--bg);
}
.darkmode .content pre::-moz-selection,
.darkmode .content pre code::-moz-selection,
.darkmode .content pre *::-moz-selection {
  background-color: rgba(255, 255, 255, 0.5);
  color: var(--bg);
}

/* Language label chip shown at top-left of code blocks */
.content pre code[data-lang]::before {
  content: attr(data-lang);
  position: absolute;
  top: 0.45rem;
  left: 0.75rem;
  z-index: 5;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: 11px;
  letter-spacing: 0.02em;
  color: var(--fg4);
  padding: 0;
  text-transform: lowercase;
  pointer-events: none;
}

.content code {
  padding: 0;
  color: var(--red);
  padding: 0 0.2rem 0 0.2rem;
  font-size: 0.9em;
  text-wrap: wrap;
  display: inline;
}

.content mark {
  background-color: var(--bg_s);
  color: var(--fg1);
  border-radius: 0.2rem;
  padding: 0 0.2rem;
}

.content kbd {
  background-color: var(--bg_s);
  color: var(--fg1);
  border-radius: 0.2rem;
}

.content table {
  display: block;
  overflow-x: auto;
  margin: auto;
  background-color: var(--bg);
  border-collapse: collapse;
  border: none;
}

.content table td,
.content table th {
  border: var(--fg4) 1px solid;
  padding: 0.75rem 0.75rem;
}
.content table td {
  vertical-align: top;
  font-size: 1.0rem;
}

.content table th {
  background-color: var(--bg_s);
  font-weight: bold;
}

.content ul {
  list-style: square;
  margin-left: 1.5rem;
  margin-top: 1rem;
  margin-bottom: 1.2rem;
}

.content ul > li {
  margin-bottom: 0.2rem;
}

.content ol {
  list-style: decimal;
  margin-left: 2rem;
  margin-top: 1rem;
  margin-bottom: 1.2rem;
}

.content ol > li {
  margin-bottom: 0.2rem;
}

/* Nested ordered lists use lowercase letters */
.content ol ol {
  list-style-type: lower-alpha;
}

.content dt {
  font-weight: bold;
}

.content dd {
  margin-left: 1rem;
}

.content blockquote,
.content div,
.content h1,
.content h2,
.content h3,
.content h4,
.content h5,
.content h6,
.content p,
.content pre,
.content table,
.content dl,
.content video {
  margin-top: 0rem;
  margin-bottom: 1.333rem;
}

/* Only for blog title */
.content h1 {
  font-size: 1.75rem;
  margin: 0 0 0.6em;
  margin-top: 1.25em;
  font-weight: 700;
  line-height: 1.4;
}

/* Legal and other non-blog pages: match blog-post h1 styling */
#main.content article.content h1 {
  font-family: 'Iowan Old Style BT', Georgia, serif;
  font-weight: 600;
  font-size: 30px;
  line-height: 1.4;
}

/* Center-align the main page title on legal pages */
#main.content article.content h1:first-child {
  text-align: center;
  max-width: 480px;
  margin: 1.5rem auto 0;
}

/* Tighten spacing between legal page title and the Last updated line */
#main.content article.content h1 + h3 {
  margin-top: 0.4rem;   /* close the gap to the title */
  margin-bottom: 1.2rem;/* add breathing room below */
  text-align: center;   /* ensure centered regardless of inline styles */
}

/* Used for blog body content */
.content h2 {
  font-size: 1.45rem;
  margin: 1.6em 0 0.6em;
  margin-top: 1.25em;
  font-weight: 600;
  line-height: 1.4;
}

.content h3 {
  font-size: 1.35rem;
  margin: 1.4em 0 0.5em 0;
  font-weight: normal;
  font-style: italic;
  line-height: 1.4;
}

/* Use h4 and below sparingly */
.content h4 {
  font-size: 0.97rem;
  margin: 1.4em 0 0.7em 0;
  font-weight: normal;
  font-style: italic;
}

.content h5 {
  font-size: 0.76rem;
  margin: 1.4em 0 0.7em 0;
  font-weight: normal;
  font-style: italic;
}

.content h6 {
  font-size: 0.6rem;
  margin: 1.4em 0 0.7em 0;
  font-weight: normal;
  font-style: italic;
}

/* Ensure spacing after figures before the next heading (avoid margin collapse) */
.content figure + h1,
.content figure + h2,
.content figure + h3,
.content figure + h4,
.content figure + h5,
.content figure + h6 {
  margin-top: 2rem;
}

.content img {
  max-width: 100%;
}

.content strong.chinese {
  font-weight: normal;
  text-emphasis-style: dot;
  text-emphasis-position: under;
  -webkit-text-emphasis-style: dot;
  -webkit-text-emphasis-position: under;
}

/* Back to top link hover */
#back-to-top:hover {
  text-decoration: underline !important;
}
