/* ar5iv — thème CSS des articles arXiv convertis par LaTeXML.
   Source : github.com/dginev/ar5iv-css (MIT).
   Assemblé ici en une seule feuille : tokens + accessibilité + corps,
   sans le mode sombre ni la feuille d'impression, que ce document
   gère déjà pour son propre compte. */

@layer tokens {
/*
  Design tokens for the ar5iv theme.

  This file is imported into the `tokens` cascade layer from ar5iv.css.
  Token reference: see docs/TOKENS.md and the RFC at
  docs/rfc_latexml_custom_properties.md for the --ltx-* public surface
  exposed by LaTeXML.

  Theme switching:
    - Default: `color-scheme: light dark`. `light-dark()` resolves to
      the OS-preferred branch automatically.
    - Forced light: `<html data-theme="light">`.
    - Forced dark:  `<html data-theme="dark">`.
  See docs/rfc_latexml_custom_properties.md for the OKLCH inversion
  strategy used for author-supplied colours (those still need
  [data-theme="dark"] as their behavioural gate; light-dark() can
  express token values but not arbitrary transforms).
*/

:root {
  color-scheme: light dark;

  /* ----- Layout ----- */
  --main-width: 52rem;
  --main-width-margin: 54rem;

  /* ----- Spacing scale -----
     The dominant ladder in margin declarations: 0.5 / 1 / 1.5 / 2 / 4 rem
     account for ~70 % of margin sites in ar5iv.css. Long-tail values
     (0.1, 0.2, 0.25, 0.3, 0.66, 0.75 rem) stay as literals — each was
     hand-tuned for a specific typographic context and shouldn't snap
     to a scale step retroactively. Zero is also a literal: `margin: 0`
     is clearer than `margin: var(--space-none)`.
     Property-agnostic — same anchors apply to padding, gap, and inset
     when the value matches. */
  --space-xs: 0.5rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2rem;
  --space-xl: 4rem;

  /* ----- Line-height -----
     `1.5rem` dominates the line-height histogram (7 uses) at the body's
     1rem font-size — a 1.5 ratio that comfortably accommodates
     descenders and ascenders of Noto Serif. Other line-height values
     in the file (`1rem` for compact contexts, `1.1rem`/`1.15rem`/`1.4rem`
     for one-off cases) stay as literals. */
  --line-height-prose: 1.5rem;

  /* ----- Borders & rules ----- */
  /* Hairline used by hundreds of single-pixel separators across the theme.
     Matches LaTeXML's default \rule width within a percent. */
  --border-hairline: 0.063rem;
  /* Double-line variant for table headers and decorative rules. */
  --border-double: 0.188rem;

  /* ----- Motion ----- */
  /* Used by the figure-zoom magnifier (and any future hover/active
     transition). Tap-and-hold timing should stay short. */
  --duration-fast: 0.2s;
  --ease-out: ease;

  /* ----- Stacking ----- */
  --z-below: -1;
  --z-page: 0;
  --z-popover: 100;

  /* ----- Typography ----- */
  --headings-font-family: "Noto Sans", "Noto Sans Fallback", sans-serif;
  --text-font-family: "Noto Serif", "Noto Serif Fallback", serif;
  --math-font-family: "STIX Two Math", "Cambria Math", math;
  /* Should we do anything special for caligraphic?
     e.g. "Lucida Calligraphy","Zapf Chancery","URW Chancery L", TeX Gyre Termes...*/
  --math-caligraphic-font-family: "STIX Two Math", "Cambria Math", math;
  --code-font-family: "Noto Sans Mono", "Noto Sans Mono Fallback", monospace;
  /* Measured advance width of --code-font-family, as a fraction of
     font-size (Noto Sans Mono: 0.600em, browser-measured). Paired with
     the TeX-side constant below so verbatim capacity ratios are
     calc()-derived — change the code font, update this token beside it.
     Where supported, font-size-adjust supersedes both (self-calibrating
     from the real font tables, honoring user-configured fonts). */
  --code-font-advance: 0.600;
  /* cmtt's advance width per font-size — a TeX fact, not a theme choice. */
  --tex-tt-advance: 0.525;
  /* SVG text rendered at this size compensates for Noto Sans metrics
     versus the LaTeXML SVG generator's assumptions. Fragile against
     a font-family change. */
  --svg-text-size: 0.82em;

  /* ----- Colours: theme-aware via light-dark() -----
     Each entry is light-dark(<light>, <dark>). The dark side is
     applied when the resolved color-scheme is dark — driven by OS
     preference, by `[data-theme="dark"]`, or by an explicit
     `color-scheme: dark` cascading from an ancestor.
  */
  --background-color: light-dark(white, #0d1117);
  --text-color:       light-dark(#292929, #c9d1d9);
  --border-color:     light-dark(#292929, #c9d1d9);
  --border-light-color: light-dark(grey, #d4d4d4);
  /* Images keep their light-theme rendering in dark mode (transparent
     PNGs from LaTeXML expect a light backdrop); the brightness/contrast
     compensation is applied separately in ar5iv.css under [data-theme="dark"]. */
  --image-color: light-dark(black, #292929);
  --image-background-color: white;
  --link-text-color:  light-dark(#212121, #c9d1d9);
  /* Email link: light #026ecb is fine (~5.1:1 on white). Dark
     mode was `darkcyan` (#008b8b) at ~4.48:1 on #0d1117 — just
     below WCAG AA 4.5:1 — bumped to #009999 (~5.3:1). */
  --email-link-color: light-dark(#026ecb, #009999);
  --note-mark-color:  light-dark(#026ecb, #daa002);
  --note-highlight-color: light-dark(#ffffd4, #231d02);
  /* Text-selection highlight. Light theme shares the note yellow; the
     dark value is a brighter, saturated gold — the note token's #231d02
     is near-invisible as a selection on the #0d1117 page, while this
     mid-tone keeps the (unchanged, inherited) light text readable. */
  --selection-color: light-dark(#ffffd4, #6b5a10);
  /* Info text: light #01719d is fine (~5.5:1 on white) but the
     same value fails on the dark background (~3.4:1). Split into
     a lighter dark-mode value (~5.9:1). */
  --info-text-color:  light-dark(#01719d, #3a9bcc);
  /* Light: was #d09e05 (~2.46:1 on white, fails WCAG AA Large).
     #8a6800 is the darkest goldenrod that still reads as "warning yellow"
     and gives ≈4.8:1 on white. Dark: the original #d09e05 is fine on the
     dark background. */
  --warning-text-color: light-dark(#8a6800, #d09e05);
  /* Error text: light #d8000c is fine (~5.4:1 on white). Dark was
     #d52f36 at ~3.77:1 on #0d1117 — below AA 4.5:1 — lightened to
     #e85a60 (~4.8:1). */
  --error-text-color:   light-dark(#d8000c, #e85a60);
  --fatal-text-color: var(--error-text-color);
  --index-ref-color:  var(--email-link-color);

  /* The "stuck on dark" rescue colour for author-supplied black text
     in dark mode. Same value as --text-color in dark, captured as its
     own name so the rescue rule in ar5iv.css doesn't hard-code the
     hex. */
  --text-color-author-black-dark: #c9d1d9;

  /* Subtle surface tint — used by the conversion-report panel and
     any future inline-notice. Slightly off-canvas in both themes. */
  --surface-subtle: light-dark(whitesmoke, #1a1f29);

  /* ----- Focus & feedback ----- */
  /* Focus ring sits two visual notches from currentColor so it's
     visible on both light and dark backgrounds.
     `color-mix` is used here because it is supported wherever
     `:focus-visible` is supported. */
  --focus-ring: color-mix(in oklch, currentColor 65%, var(--background-color));
  --focus-ring-offset: 0.125rem;
  --focus-ring-width: 0.125rem;
}

/* Explicit user choice overrides the OS preference. */
:root[data-theme="light"] { color-scheme: only light; }
:root[data-theme="dark"]  { color-scheme: only dark; }

/* Sepia — first-party reference for the cookbook recipe-3 pattern
   (`docs/THEMING.md`). A warm light theme; doubles as proof that
   the token surface generalises beyond the light/dark pair.

   Contrast on the cream background (#f4ecd8), per the WCAG 2.x
   relative-luminance formula (sRGB linearised, weights
   0.2126/0.7152/0.0722, `(L_max + 0.05) / (L_min + 0.05)`):
   - text   #5b4636 — 7.48:1 (WCAG AAA for body)
   - link   #6b4423 — 7.19:1 (WCAG AAA for body)
   - border #8a7458 — decorative; not a contrast surface

   No `--fn-*` overrides: the per-element dark-mode application
   rules are gated on `[data-theme="dark"]` and on
   `:root:not([data-theme])` inside
   `@media (prefers-color-scheme: dark)`, so any explicitly-named
   theme — `data-theme="sepia"` included — is excluded from the
   OS-dark inversion. Author-supplied colours render
   as-is on the sepia background. */
:root[data-theme="sepia"] {
  color-scheme: only light;
  --background-color: #f4ecd8;
  --text-color: #5b4636;
  --border-color: #8a7458;
  --link-text-color: #6b4423;
  --note-highlight-color: #ebe0c0;
  --surface-subtle: #ede2c8;
}

/* Bumped contrast for users who request it. */
@media (prefers-contrast: more) {
  :root {
    --text-color:       light-dark(#000000, #ffffff);
    --link-text-color:  light-dark(#000000, #ffffff);
    --border-color:     light-dark(#000000, #ffffff);
    --note-mark-color:  light-dark(#01497a, #ffd17a);
    --warning-text-color: light-dark(#5a4400, #ffd17a);
  }
}

}

@layer base {
/*
  Accessibility & UX additions for the ar5iv theme.

  All rules in this file are *additive*: they either introduce new
  selectors (focus state, :target, ::selection) or augment an existing
  trigger (footnote popovers also open on :focus-within). No existing
  rule is replaced.

  Imported into the `base` cascade layer from ar5iv.css.
*/

/* ----- Focus state -------------------------------------------------- */

/* A single, tokenised focus ring. Browsers continue to set a UA default
   on elements we don't style, so the cost of a heavy-handed `outline:
   none` is avoided. `:focus-visible` ensures pointer users don't see
   rings on mouse click. */
:focus-visible {
  outline: var(--focus-ring-width) solid var(--focus-ring);
  outline-offset: var(--focus-ring-offset);
}

/* Inside math, focus rings on individual MathML elements are
   distracting and rarely meaningful (mo/mi/mn typically aren't
   focus targets). Suppress the visible ring on non-interactive
   math descendants, but preserve it on focusable descendants like
   linked operators, MathJax actions, and `[tabindex]` annotations —
   those are the things a sighted keyboard user would actually be
   navigating to. */
math :focus-visible:not(:is(a, button, [tabindex])),
mjx-container :focus-visible:not(:is(a, button, [tabindex])) {
  outline-color: transparent;
}

/* ----- Footnote popovers: keyboard path ----------------------------- */

/*
  The existing rules (in ar5iv.css) open the sidenote popover on
  `:hover` and `:active`. These selectors extend that behaviour to
  `:focus-within`, so tabbing onto a footnote mark (or any focusable
  descendant) reveals the popover and keeps it open.

  IMPORTANT: this only works if LaTeXML emits a focusable element at
  the mark site (e.g. <sup><a>…</a></sup>). If the mark is rendered
  as a non-interactive span, the precondition is missing and the
  upstream markup must be updated.
*/

/* Small-screen path: mirrors the (width < 96rem) hover/active rule
   in ar5iv.css. Same boundary direction as ar5iv.css's post-cleanup
   discipline, so the small-screen and large-screen bands are
   mutually exclusive at exactly 96rem. */
@media only screen and (width < 96rem) {
  .ltx_note:not(.ltx_note_frontmatter):not(.ltx_role_affiliationmark):not(.ltx_role_footnotemark):focus-within > .ltx_note_outer {
    display: block;
    opacity: 1;
    z-index: var(--z-popover);
    position: absolute;
    top: 0;
    margin: auto;
    padding: 2rem;
    background-color: var(--background-color);
    border-width: 0.1rem 0;
    border-bottom: double;
    border-top: double;
  }
}

/* Large-screen path: mirrors the highlight-on-hover/active rule. */
@media only screen and (width >= 96rem) {
  .ltx_note > .ltx_note_mark:focus-visible + .ltx_note_outer .ltx_note_content,
  .ltx_title.ltx_title_document > .ltx_role_affiliation > .ltx_note_mark:focus-visible + .ltx_note_outer .ltx_note_content,
  /* descendant combinator tolerates the `.ltx_author_notes_content`
     wrapper LaTeXML#2767 inserts around the author contacts */
  .ltx_author_notes .ltx_note > .ltx_note_mark:focus-visible + .ltx_note_outer .ltx_note_content {
    background-color: var(--note-highlight-color);
    z-index: var(--z-popover);
  }
}

/* ----- prefers-reduced-motion --------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  /* Disable the tap-to-zoom magnifier on figure images. The trigger is
     :active, so users opting out of motion will simply see the image
     remain at 1× when pressed. */
  .ltx_figure img,
  .ltx_p > img.ltx_graphics,
  .ltx_text > img.ltx_graphics {
    transition: none;
  }
  .ltx_figure img:active,
  .ltx_p > img.ltx_graphics:active,
  .ltx_text > img.ltx_graphics:active {
    transform: none;
  }
}

/* ----- :target highlight -------------------------------------------- */

/*
  When the user lands on an in-page anchor (equation, theorem,
  bibliography entry, section), give a brief visual confirmation.
  Falls back to a static highlight under reduced-motion.
*/
:target {
  background-color: var(--note-highlight-color);
  box-shadow: 0 0 0 var(--focus-ring-offset) var(--note-highlight-color);
}

@media (prefers-reduced-motion: no-preference) {
  :target {
    animation: ar5iv-target-pulse 1.2s var(--ease-out) 1;
  }
  @keyframes ar5iv-target-pulse {
    0%   { background-color: var(--note-highlight-color); }
    100% { background-color: transparent; }
  }
}

/* ----- ::selection -------------------------------------------------- */

/* Tokenised so dark theme inherits via the theme overrides. */
::selection {
  background-color: var(--selection-color, var(--note-highlight-color));
  /* keep the underlying text colour — selecting should not change the
     foreground, otherwise readers lose the context they were
     scanning. */
  color: inherit;
}

/* ----- [hidden] reset ----------------------------------------------- */

/* The UA stylesheet sets `[hidden] { display: none }`, but several
   `.ltx_*` rules in `ar5iv.css` set `display: block`/`inline`/`flex`
   on the same element. If anything outside our CSS (JS theme
   toggle, browser extension, assistive overlay) sets `hidden` on
   a styled element, our `display:` would defeat the UA default.
   This higher-specificity rule restores the intended behaviour. */
[hidden] {
  display: none !important;
}

/* ----- forced-colors mode ------------------------------------------- */

/*
  Windows High Contrast and similar modes ignore most author colours
  and substitute system tokens. We don't fight that, but we do declare
  the semantic mapping so links read as LinkText, the note highlight
  reads as Mark, and our focus ring uses the system Highlight colour.
*/
@media (forced-colors: active) {
  :focus-visible {
    outline-color: Highlight;
  }
  .ltx_ref,
  .ltx_role_email > a,
  .ltx_page_logo > a {
    color: LinkText;
  }
  .ltx_ref:visited {
    color: VisitedText;
  }
  ::selection,
  :target {
    background-color: Mark;
    color: MarkText;
  }
}

}

/*
  ar5iv — a CSS theme for arXiv articles converted with LaTeXML.

  Public theming surface (set per-element by LaTeXML, via inline style="…"):
    --ltx-fg-color, --ltx-bg-color, --ltx-border-color,
    --ltx-fill-color,  --ltx-stroke-color
  See docs/rfc_latexml_custom_properties.md for the full contract,
  the OKLCH dark-mode strategy, and the rationale for the inversion
  constants used below (the `0.8237` for backgrounds derives from the
  OKLCH lightness of #0d1117).

  The arXiv IDs referenced throughout this file are load-bearing
  regression fixtures — when changing a rule, check the cited paper.
*/

/* Cascade layer order. Tokens land in `tokens`, a11y in `base`, the
   bulk of this file in `components`, B-fixes in `fixes`. The
   transformed-wrappers feature flag stays un-layered (its
   !important rules only need to beat LaTeXML inline styles, not
   other layers — see Subtlety below). `reset`, `structure`,
   `math` are declared but currently empty — reserved for future
   sub-divisions and for downstream themes that want to slot their
   own rules between ours.
   Subtlety: !important inverts the layer order, so an !important
   inside `fixes` LOSES to an !important inside `base`. And un-layered
   !important is the WEAKEST author-important — it loses to every
   layered !important (CSS Cascade 5). The un-layered transform block
   below wins its battle anyway: it only needs to outrank LaTeXML's
   inline (normal) `style="transform:…"`, which any !important does. */
@layer reset, tokens, base, structure, components, math, fixes;

/* Design tokens (light theme defaults). */


/* Accessibility & UX additions (focus, :target, ::selection,
   reduced-motion, forced-colors, keyboard-accessible footnotes). */


/* Dark-mode theme-aware rules: image filter, OKLCH/HSL author-colour
   inversion via the --fn-* override surface, author-black rescue,
   foreignObject colour propagation. */


/* Print styles (only active under @media print). */


/* ============================================================
   The bulk of ar5iv.css now sits inside `@layer components`.
   Two regions remain un-layered:
   - the transformed-wrappers feature flag near the middle of the
     file, whose !important rules defeat LaTeXML's inline
     `style="transform:…"` — a normal declaration, so any author
     !important beats it and the layer placement isn't load-bearing;
   - nothing else; the imports above and the closing `@layer fixes`
     near the end are deliberate placements.
   ============================================================ */

@layer components {
img {
  filter: none;
  background-color: var(--image-background-color);
  color: var(--image-color);
}
/* Custom author-specified colors from the LaTeX source: */
[style*="--ltx-fg-color:"] {
  --text-color: var(--ltx-fg-color);
  color: var(--text-color);
}
/* The :root rule does not appear to propagate color: into SVG foreignObject */
.ltx_foreignobject_content {
  color: var(--text-color);
}
[style*="--ltx-bg-color:"] {
  --background-color: var(--ltx-bg-color);
  background-color: var(--background-color);
}
[style*="--ltx-border-color:"] {
  --border-color: var(--ltx-border-color);
  border-color: var(--border-color);
}
[style*="--ltx-fill-color:"] {
  fill: var(--ltx-fill-color);
}
[style*="--ltx-stroke-color:"] {
  stroke: var(--ltx-stroke-color);
}

/* Main content */
body {
  margin: 0;
  height: 100%;
  width: 100%;
  color: var(--text-color);
  background-color: var(--background-color);
}

.ltx_page_main {
  width: 100%;
}
.ltx_page_content {
  margin: var(--space-xl) var(--space-sm);
  font-size: 1rem;
  font-weight: 300;
  clear: both;
}
.ltx_page_header {
  border-bottom: 0.1em solid;
  margin-bottom: 0.5em;
}
.ltx_page_footer {
  clear: both;
  text-align: end;
  width: auto;
  margin: auto;
  border-top: 0.1em solid;
  max-width: var(--main-width);
}
.ltx_page_logo {
  font-family: var(--text-font-family);
  font-size: 1rem;
  text-align: end;
  padding: 0.5rem;
}
.ltx_page_logo > a {
  /* Dotted underline via text-decoration so the line skips descenders
     (text-decoration-skip-ink is `auto` by default in current browsers)
     and follows the font's underline metric (text-decoration-thickness:
     from-font). Earlier `border-bottom: dotted` cargo from arxiv-browse's
     downstream patches confirmed this idiom is the right upstream
     replacement. */
  color: var(--link-text-color);
  text-decoration: underline dotted var(--link-text-color);
  text-decoration-thickness: from-font;
  overflow-wrap: break-word;
}

/* Establish block-formatting contexts that contain any floats inside
   the page chrome. Replaces a pre-2017 `:before`/`:after` clearfix. */
.ltx_page_header,
.ltx_page_footer,
.ltx_page_content {
  display: flow-root;
}

.ltx_document {
  margin: auto;
  max-width: var(--main-width);
  text-rendering: optimizeLegibility;
}

.ltx_para,
.ltx_abstract .ltx_p,
.ltx_acknowledgements {
  font-family: var(--text-font-family);
  text-align: justify;
  hyphens: auto;
  line-height: var(--line-height-prose);
  margin-bottom: var(--space-md);
}
/* If a flex figure comes before the para, avoid collisions.
   (note: avoid doing clear:both; for all paragraphs, or it creates needless
    vertical whitespace in cases where we have footnotes)
   Exception: a *floated* figure (a wrapfigure, .ltx_align_float{left,right})
   is meant to have the following text flow alongside it -- clearing it would
   strand the figure as a standalone block with empty space beside it. So only
   clear after non-floated (centered/standalone) figures. */
.ltx_figure:not(.ltx_align_floatleft):not(.ltx_align_floatright) + .ltx_para,
.ltx_flex_figure + .ltx_para {
  clear: both;
}

.ltx_p {
  line-height: var(--line-height-prose);
  /* by default, p doesn't indent */
  text-indent: 0rem;
  white-space: normal;
  /* no top margin, stay snug with titles */
  margin-top: 0rem;
}
.ltx_text {
  font-family: var(--text-font-family);
  overflow-wrap: break-word;
}
.ltx_tag .ltx_text {
  font-family: inherit;
}
/* explicit control of indentation (on ltx_para) */
.ltx_indent > .ltx_p:first-child,
section.ltx_pruned_first > .ltx_title + .ltx_para > .ltx_p,
section.ltx_indent_first > .ltx_title + .ltx_para > .ltx_p {
  text-indent: 2em !important;
}
.ltx_noindent > .ltx_p:first-child {
  text-indent: 0rem !important;
}

.ltx_pagination.ltx_role_newpage {
  /* use margins to ensure newpage breaks, to avoid stacking heights in cases where it is used after logical blocks */
  margin-top: var(--space-lg);
  display: block;
}

math,
mjx-container {
  font-family: var(--math-font-family);
  overflow-wrap: break-word;
  white-space: nowrap;
}
/* add some padding to math table cells, e.g. space out cells with fractions */
mtd {
  padding: 0.1rem;
}
/* Sometimes .ltx_markedasmath may contain an actual math element
   with a textual trailing dot, say in a <td> (1910.08129)
   avoid breaks in those cases */
.ltx_markedasmath {
  white-space: nowrap;
}

/* Dotted underline via text-decoration (skip-ink: auto by default,
   from-font thickness). See `.ltx_page_logo > a` above for the
   migration rationale. */
.ltx_ref {
  color: var(--link-text-color);
  text-decoration: underline dotted var(--link-text-color);
  text-decoration-thickness: from-font;
  overflow-wrap: break-word;
}
/* Inline ORCID icons etc. inside a ref — suppress the underline that
   would otherwise draw under the icon's line-box. See arxiv:1707.04393. */
.ltx_ref > .ltx_graphics {
  text-decoration: none;
  display: inline-block;
}

.ltx_cite {
  font-style: normal;
}
.ltx_cite + .ltx_cite {
  padding-inline-start: 0.2rem;
}
.ltx_td .ltx_cite {
  white-space: pre-wrap;
}
/* LaTeXML still emits `<span class="ltx_font_italic">` inside
   `<cite>` (e.g. journal-name shortforms from natbib). Cites are
   conventionally typeset upright; normalise the inherited italics.
   Verified still load-bearing 2026-05-14: corpus papers 2105.04227
   and 2501.11021 carry italic cite-children, removing this rule
   produces visible diff in both. */
.ltx_cite .ltx_font_italic {
  font-style: normal;
}
.ltx_cite > .ltx_ref {
  white-space: nowrap;
  /* inline-block + custom line-height: cites separated by
     semicolon text nodes get spaced out too far under justified
     text-align without these (see 2006.09882's Introduction
     `[10, 24, 44]` cluster). Verified still load-bearing
     2026-05-15 cross-engine: disable-and-diff on 2006.09882
     produces 8753 px diff in WebKit p004 and 2544 px in
     Chromium p012, with downstream reflow cascade. */
  display: inline-block;
  line-height: 1.4rem;
  /* see the introduction at 1810.10704 for why text-indent needs to be 0 */
  text-indent: 0;
}

/* title page image. `min(30rem, 100%)` so the cap never exceeds
   the containing column — at 320 CSS-px viewport the image stays
   within the viewport. */
article > div:not(.ltx_minipage) > img:first-of-type {
  max-width: min(30rem, 100%);
  width: auto;
  height: auto;
}

.ltx_title.ltx_title_document {
  font-weight: normal;
  /* !important is needed since arXiv customizations on title size are not */
  /* completely accurate in latexml yet, so we keep a predictably nice-looking size for now. */
  font-size: 1.7rem !important;
  /* Explicit zero (not omitted): `<h1>` carries a UA-default
     `margin-block-start: 0.83em` which at 1.7rem font-size resolves
     to ~1.4rem. The pre-iter-1 author rule of `margin-top: 1rem`
     overrode the UA but was itself absorbed by margin-collapse
     outward through (then-non-BFC) `.ltx_page_content`. Now that
     `.ltx_page_content` is a BFC (flow-root), any title-top
     margin — author's or UA's — stays inside and stacks on top of
     the 4rem outer margin, visibly pushing the title down.
     Zero it explicitly. */
  margin-top: 0;
  margin-bottom: var(--space-md);
  text-align: center;
}
.ltx_subtitle {
  font-family: var(--headings-font-family);
  font-style: italic;
  font-size: 1.3rem;
  margin-top: var(--space-sm);
  margin-bottom: var(--space-md);
  text-align: center;
}
.ltx_subtitle .ltx_text {
  font-family: inherit;
}
.ltx_authors {
  display: flex;
  flex-flow: row wrap;
  width: auto;
  justify-content: center;
  align-items: center;
  object-fit: contain;
  margin-top: 0.75rem;
  margin-bottom: 0.75rem;
  text-align: center;
}
span.ltx_personname {
  font-family: var(--text-font-family);
  font-size: 1rem;
  display: inline-block;
  overflow-wrap: break-word;
  min-width: calc(0.27 * var(--main-width));
  max-width: calc(0.65 * var(--main-width));
}
span.ltx_personname br.ltx_break {
  margin-top: 0.25rem;
}
span.ltx_personname > br.ltx_break + span {
  display: inline-block;
  padding-top: 0.75em;
}
/* Try to limit the spacing via consequtive breaks in personname.
  It doesn't usually translate to good HTML rendering (0709.4011). */

span.ltx_personname > .ltx_break + .ltx_break {
  display: none;
}
/* The person name metadata is not the best place to do math-based scripted "dagger" marks.
   The precise sizing tricks for PDF don't really work well in HTML. Ignore them.
   see arXiv:2006.13760 */
.ltx_personname math mtext[mathsize] {
  font-size: inherit !important;
}

/* Avoid empty paragraphs that contain only a `<br>` — LaTeXML
   still emits these from TeX-source-level blank-line patterns,
   and our paragraph margins already provide the vertical rhythm
   so the extra break adds an unwanted line. Verified still
   load-bearing 2026-05-14 across 4 corpus papers (1403.1525,
   1708.02728, 2105.10386, 2109.04981). */
.ltx_para > .ltx_break:first-child:last-child {
  display: none;
}

.ltx_creator {
  flex: 1 1 0px;
  max-width: 100%;
  padding: 0.5rem;
  overflow-wrap: break-word;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: auto;
  align-items: center;
  object-fit: contain;
}
.ltx_creator br.ltx_break {
  flex-basis: 100%;
  height: 0;
}
/* do we want to display commas? */
.ltx_author_before,
.ltx_author_after {
  display: none;
}
.ltx_dates {
  margin-top: 0rem;
  margin-bottom: var(--space-sm);
  text-align: center;
  font-family: var(--text-font-family);
}
.ltx_role_author + .ltx_role_author {
  margin-inline-start: var(--space-lg);
}
/* space out affiliation sub-entries */
.ltx_affiliation_institution,
.ltx_affiliation_department,
.ltx_affiliation_country {
  margin-inline: 0.25rem;
  white-space: nowrap;
}

/* Sometimes current latexml will deposit a single address that applies to all author names
   as a child inside the last author's .ltx_creator element.
   We detect this case and break out the address to full width, makign it more suggestive that
   it applies to all of the authors. Ideally latexml's schema should evolve to handle this
   via differently organized markup. 

   Tested with 2201.00244, 1109.5581, 2510.11037
*/
.ltx_authors:has(> :nth-child(2)):not(:has(> *:not(:last-child) .ltx_role_address)) :last-child.ltx_role_address,
.ltx_authors:has(> :nth-child(2)):not(:has(> *:not(:last-child) .ltx_role_affiliation)) :last-child.ltx_role_affiliation {
    position: absolute;
    display: block;
    margin: var(--space-lg) auto;
    text-align: center;
    /* WCAG 1.4.10 reflow: clamp to viewport so 320 CSS-px viewports
       don't get horizontal scroll from a 52rem-wide author block.
       `min(--main-width, 100dvw)` lets the block shrink under narrow
       viewports; `max(0px, …)` clamps the centering offset so it
       never goes negative (which would push content off-canvas). */
    width: min(var(--main-width), 100dvw);
    inset-inline-start: max(0px, calc((100dvw - var(--main-width)) / 2));
}
.ltx_authors:has(> :nth-child(2)):not(:has(> *:not(:last-child) .ltx_role_address)):has( :last-child.ltx_role_address),
.ltx_authors:has(> :nth-child(2)):not(:has(> *:not(:last-child) .ltx_role_affiliation)):has( :last-child.ltx_role_affiliation) {
  margin-bottom: var(--space-xl);
}

/* in multi-affiliation markup, e.g. produced by authblk.sty,
   we can do a vertical stack for each author */
/* Detail: avoid vertical breaks for the case in which affiliations are notes */
span.ltx_role_affiliation:not(.ltx_note)
  + span.ltx_role_affiliation:not(.ltx_note),
span.ltx_role_orcid + span.ltx_role_affiliation:not(.ltx_note) {
  margin-top: var(--space-xs);
  display: block;
}

/* sometimes ltx_keywords only contains a single text node */
/* and we can't write a selector for ".ltx_keywords that only has text" via CSS...
   so just fix the completely empty buggy case */
div.ltx_keywords:empty::before {
  content: "Keywords: ";
  font-weight: bold;
}
.ltx_keywords,
.ltx_classification {
  margin-bottom: var(--space-md);
  font-size: 1rem;
  font-family: var(--text-font-family);
  font-weight: normal;
}
/* classification and keyword titles can have the same appearance
   as unified frontmatter metadata is less bumpy to read through. */
.ltx_title.ltx_title_keywords,
.ltx_title.ltx_title_classification {
  display: inline;
  font-size: 1rem;
  font-weight: bold;
  font-style: normal;
}
/* PR brucemiller/LaTeXML#2767 dropped the literal ": " the XSLT used to
   emit after the keywords/classification label, so the bold label would
   otherwise butt straight into its content ("Keywordsquantum…").
   Restore it here; the ::after inherits the label's bold weight, giving
   the conventional "Keywords: …" / "MSC: …" reading. */
.ltx_title.ltx_title_keywords::after,
.ltx_title.ltx_title_classification::after {
  content: ": ";
}
/* Two-column papers may want to choose their break-points in titles,
  yet the browser can manage on its own in single-column ar5iv.
  Example: section headings of 1701.00123 */
.ltx_title > br.ltx_break {
  display: none;
}

.ltx_date {
  font-family: var(--text-font-family);
  text-align: center;
  font-size: 120%;
  margin: 0.5em 0 0.5em 0;
}

/* Title publication notes — PR brucemiller/LaTeXML#2767.
   A title \thanks, DOI, arXiv id or preprint number is no longer a
   `<note role="thanks">` inside `.ltx_title_document`; it is now emitted
   as `.ltx_pubnotes > .ltx_pubnotes_content > .ltx_pubnote` appended
   inside the title <h1>. These are secondary metadata — for an ar5iv
   re-rendering the arXiv id / DOI already live in the surrounding page
   chrome — so we collapse every pubnote behind one superscript dagger
   that reveals the content on hover / tap / focus, the same affordance
   our footnotes use. Keeping the title uncluttered also protects the
   primary frontmatter (author names + affiliations) that sits below it.
   A11y caveat: with no focusable marker element in the upstream markup
   `:focus-within` only engages once a child (e.g. a DOI link) is
   focusable, which it is not while the popup is `visibility:hidden`, so
   hover/active is the primary path — matching the base LaTeXML.css
   behaviour. If LaTeXML later gives the dagger a real focusable mark we
   get keyboard reveal for free. */
.ltx_pubnotes {
  position: relative;
  display: inline-block;
  /* reset the inherited 1.7rem centered heading type so the revealed
     note reads as ordinary prose rather than oversized title text */
  font-family: var(--text-font-family);
  font-size: 1rem;
  font-weight: normal;
  font-style: normal;
  text-align: start;
}
.ltx_pubnotes::before {
  content: "\002020"; /* dagger, matching our footnote marker accent */
  color: var(--note-mark-color);
  font-size: 0.85em;
  vertical-align: super;
  cursor: pointer;
}
.ltx_pubnotes_content {
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s;
  position: absolute;
  z-index: var(--z-popover);
  /* Open leftward: the dagger hangs off the end of a centered title, so
     it sits right-of-centre. Anchoring the popup's trailing edge to the
     marker lets it grow back toward the page centre instead of off the
     right viewport edge. */
  inset-inline-end: 0;
  top: 1.5em;
  width: max-content;
  /* never wider than the viewport on phones; never absurdly wide on
     a long DOI string on desktop */
  max-width: min(40rem, 90vw);
}
.ltx_pubnotes:hover .ltx_pubnotes_content,
.ltx_pubnotes:active .ltx_pubnotes_content,
.ltx_pubnotes:focus-within .ltx_pubnotes_content {
  visibility: visible;
  opacity: 1;
  background-color: var(--background-color);
  border: 0.1rem solid var(--border-color);
  border-radius: 0.3rem;
  box-shadow: 0.2rem 0.2rem 0.5rem rgb(0 0 0 / 30%);
  padding: 0.6rem 0.8rem;
}
.ltx_pubnote {
  display: block;
  line-height: var(--line-height-prose);
}
/* PR brucemiller/LaTeXML#2767 wraps a contact's / pubnote's @name in a
   dedicated span; render the label in italic as the base stylesheet
   does, distinguishing it from the value that follows. */
.ltx_contact_name,
.ltx_note_name {
  font-style: italic;
}
/* Adapted from the base LaTeXML.css, which hides the contact label (the @name
   span, e.g. "Affiliation:" / "E-mail") only in the multiline author layout.
   ar5iv renders author contacts via .ltx_author_notes in both the single-line
   (.ltx_authors) and multiline layouts, with each contact on its own line, so
   the label is redundant in both -- hide it whenever it sits in author notes. */
.ltx_author_notes .ltx_contact_name {
  display: none;
}

/* Mainmatter Footnotes */
.ltx_note {
  position: relative;
  text-align: justify;
  hyphens: auto;
  word-spacing: -0.05rem;
  font-style: normal;
  font-size: 0.85em;
}
.ltx_note + .ltx_note {
  padding-inline-start: 0.2rem;
}
/* the mark is in "em", but the outer note is in "rem",
  as we have a unified footnote presentation */
.ltx_note_outer {
  font-size: 0.85rem;
}
.ltx_note > .ltx_note_mark {
  position: relative;
  top: -0.2em;
  max-height: 2rem;
  font-size: 0.85em;
  color: var(--note-mark-color);
}
/* Touch target inflation (WCAG 2.5.8 AA, 24×24 px minimum). The
   visible mark text renders below 24 px after the cascading 0.85em
   shrinks. Add a transparent ::before pseudo-element sized to the
   WCAG target so taps within ~12 px of the mark register, without
   visually enlarging the glyph. Skipped under forced-colors, since
   those environments draw their own focus/hit indicators. */
@media not (forced-colors: active) {
  .ltx_note > .ltx_note_mark::before {
    content: "";
    position: absolute;
    inset: 50% 50%;
    width: 1.5rem;
    height: 1.5rem;
    transform: translate(-50%, -50%);
  }
}

.ltx_note_content {
  display: block;
  opacity: 1;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  margin: 0.6rem;
  font-family: var(--text-font-family);
  line-height: var(--line-height-prose);
  white-space: normal;
  overflow-wrap: break-word;
  /* getting some rather unpleasant horizontal scroll on Chrome on large screens,
   likely due to the way footnotes get laid out? Upgrade ideas welcome.
   See arXiv:1004.5196, footnote 6 */
  overflow-x: auto;
}
.ltx_author_notes {
  display: block;
  opacity: 1;
  /* The flex experiment here is trying to contain the width to the current flex block,
     but allow the note to expand to the full page width if it is standalone/single author */
  width: fit-content;
  margin-top: var(--space-xs);
  margin-bottom: var(--space-lg);
  font-family: var(--text-font-family);
  font-size: 0.9rem;
  padding: 0.2rem;
}
/* PR brucemiller/LaTeXML#2767 wraps the author contacts in an extra
   `<span class="ltx_author_notes_content">` between `.ltx_author_notes`
   and the `.ltx_contact` children. `display: contents` removes that
   wrapper's own box so the contacts lay out exactly as they did when
   they were direct children — `.ltx_author_notes`'s `fit-content`
   width and block flow are preserved with zero visual change. The
   note-robustness selectors below reach `.ltx_note` via the descendant
   combinator, so they keep firing through this extra layer too. */
.ltx_author_notes_content {
  display: contents;
}

/* responsive footnote viewport widths.
   Range syntax is exclusive on the lower edge so bands don't overlap. */
@media only screen and (width <= 46rem) {
  .ltx_note_outer {
    width: 20rem;
  }
}
@media only screen and (46rem < width <= 52rem) {
  .ltx_note_outer {
    width: 46rem;
  }
}
@media only screen and (52rem < width <= 96rem) {
  .ltx_note_outer {
    width: 50rem;
  }
}
@media only screen and (96rem < width <= 109rem) {
  .ltx_note_outer {
    width: 20rem;
    margin-inline-end: -24rem;
  }
}
@media only screen and (width > 109rem) {
  .ltx_note_outer {
    width: 27rem;
    margin-inline-end: -31rem;
  }
}
/* Wide displays render the note in the side margin via the in-flow
   negative-margin trick above. Being in flow keeps the note riding its
   carrier line (and its margin-column x), but its box height inflated
   the carrier — a footnote inside a list item grew the item by the full
   note height (arXiv 2605.00181). Zero the box height and let the note
   paint through: the anchor geometry is preserved, the carrier sizes to
   its own text. (Two notes anchored close together may overlap in the
   margin — the classic marginpar tradeoff; float containment can't help
   here since list items establish BFCs.) */
@media only screen and (width > 96rem) {
  /* :not(:focus-within) — the global keyboard popover rule
     (`:focus-within > .ltx_note_outer{position:absolute;...}`) turns the
     margin note into a bordered overlay on Tab-focus; that overlay needs
     its real height back or its border box collapses. */
  .ltx_note:not(:focus-within) > .ltx_note_outer {
    height: 0;
    overflow: visible;
  }
  /* ...EXCEPT in CROWDED paragraphs (2+ footnotes): zero-height notes
     cannot push each other apart, so near-anchored notes painted on top
     of each other in the margin (arXiv 2605.00501 footnotes 2/3, one
     text line apart — user-flagged). Notes there keep their real height:
     the margin floats' `clear: both` then stacks the second note BELOW
     the first, marginpar-style (user, 2026-07-05). The zero-height
     carrier protection above was only ever needed for BFC carriers
     (the 2605.00181 list item), which stay covered by the default. */
  .ltx_p:has(.ltx_note.ltx_role_footnote ~ .ltx_note.ltx_role_footnote)
    .ltx_note:not(:focus-within)
    > .ltx_note_outer {
    height: auto;
  }
}

/* responsive footnote UI */

/* small screens */
@media only screen and (width < 96rem) {
  .ltx_note_outer {
    display: none;
    opacity: 0;
  }
  .ltx_note_content {
    overflow-wrap: break-word;
    width: 90%;
  }
  .ltx_note:not(.ltx_note_frontmatter):not(.ltx_role_affiliationmark):not(
      .ltx_role_footnotemark
    ):hover
    > .ltx_note_outer,
  .ltx_note:not(.ltx_note_frontmatter):not(.ltx_role_affiliationmark):not(
      .ltx_role_footnotemark
    ):active
    > .ltx_note_outer {
    display: block;
    opacity: 1;
    z-index: var(--z-popover);
    position: absolute;
    top: 0;
    margin: auto;
    padding: 2rem;
    /* WCAG 1.4.10: the footnote popover's `width: 20rem` (set in the
       responsive band at line 511) plus 2rem padding on each side
       would overflow a 20rem (320 CSS-px) viewport without
       `border-box`. */
    box-sizing: border-box;
    background-color: var(--background-color);
    border-width: 0.1rem 0;
    border-bottom: double;
    border-top: double;
  }
  /* Frontmatter notes: Author notes, Affiliation notes, Preprint notes
     get a standalone line in small-screen mode. */
  .ltx_note.ltx_note_frontmatter {
    display: block;
    opacity: inherit;
    text-align: start;
  }
  .ltx_note.ltx_note_frontmatter > .ltx_note_mark {
    display: none;
    opacity: 0;
  }
  .ltx_note.ltx_note_frontmatter .ltx_note_outer {
    display: block;
    opacity: inherit;
  }
  .ltx_note.ltx_note_frontmatter .ltx_note_content {
    border: none;
    margin-inline-start: 0;
  }
  .ltx_note.ltx_note_frontmatter .ltx_note_content > .ltx_note_mark {
    display: inline;
  }
  /* similarly for notes left stranded in the top-level authors container */
  .ltx_authors > .ltx_note .ltx_note_mark {
    display: none;
    opacity: 0;
  }
}

/* Exceptions aside, large screens get footnotes
   displayed in the right margin of the article. */
@media only screen and (width >= 96rem) {
  .ltx_note_outer {
    display: block;
    opacity: 1;
    position: relative;
    clear: both;
    float: inline-end;
    padding-bottom: 2rem;
    padding-inline-end: 3rem;
  }
  .ltx_note_content {
    border-style: double none none none;
    border-width: 0.1rem 0;
  }
  .ltx_note_content > .ltx_note_mark {
    position: absolute;
    display: block;
    opacity: 1;
    margin-top: -1.8rem;
  }
  /* highlight feature: */
  .ltx_note > .ltx_note_mark:hover + .ltx_note_outer .ltx_note_content,
  .ltx_note > .ltx_note_mark:active + .ltx_note_outer .ltx_note_content,
  /* special case: affiliation in title */
  .ltx_title.ltx_title_document > .ltx_role_affiliation > .ltx_note_mark:hover + .ltx_note_outer .ltx_note_content,
  .ltx_title.ltx_title_document > .ltx_role_affiliation > .ltx_note_mark:active + .ltx_note_outer .ltx_note_content,
  /* special case: badly formatted author notes without inner markup.
     Descendant (not child) combinator so the note is still reached
     through the `.ltx_author_notes_content` wrapper LaTeXML#2767 adds. */
  .ltx_author_notes .ltx_note > .ltx_note_mark:hover + .ltx_note_outer .ltx_note_content {
    background-color: var(--note-highlight-color);
    z-index: var(--z-popover);
  }
  /* affiliatons have some weirdness... e.g. if they appear in titles, they're special footnotes */
  .ltx_title.ltx_title_document .ltx_note_outer {
    display: block;
    opacity: 1;
  }
  .ltx_title.ltx_title_document .ltx_note_type {
    display: none;
    opacity: 0;
  }
  /* TODO:
1. Until we can dedup affiliations, we have no choice but to hide them first, show them on hover.
  Even on large screens.
2. AND! footnotes in Tables are ALWAYS collapsed
  until we figure out side margins with
  relative positioning in tables (flexbox?)
3. a related issue to the in-table footnotes appears also in figcaptions
  since we are currently using flex for them, the relative margin-right offset
  in the rule below produces rather unpredictable results, placing the footnotes
  somewhat scattered, based on the current width of the figcaption.
  So we also collapse in figcaption for now...
4. the "PSFrag replacing x by y was dropped" notes are also distracting,
   e.g. cs/0001008 (not acted on here)
*/
  th .ltx_note_outer,
  td .ltx_note_outer,
  .ltx_th .ltx_note_outer,
  .ltx_td .ltx_note_outer,
  figcaption .ltx_note_outer,
  .ltx_role_affiliation > .ltx_note_outer,
  .ltx_author_notes .ltx_note .ltx_note_outer {
    display: none;
    opacity: 0;
  }
  th .ltx_note_content,
  td .ltx_note_content,
  figcaption .ltx_note_content {
    font-weight: normal;
    overflow-wrap: break-word;
    width: 90%;
  }
  th .ltx_note:hover > .ltx_note_outer,
  th .ltx_note:active > .ltx_note_outer,
  .ltx_th .ltx_note:hover > .ltx_note_outer,
  .ltx_th .ltx_note:active > .ltx_note_outer,
  td .ltx_note:hover > .ltx_note_outer,
  td .ltx_note:active > .ltx_note_outer,
  .ltx_td .ltx_note:hover > .ltx_note_outer,
  .ltx_td .ltx_note:active > .ltx_note_outer,
  figcaption .ltx_note:hover > .ltx_note_outer,
  figcaption .ltx_note:active > .ltx_note_outer {
    display: block;
    opacity: 1;
    z-index: var(--z-popover);
    position: absolute;
    top: 0;
    margin: auto;
    padding: 2rem;
    box-sizing: border-box;
    background-color: var(--background-color);
    border-width: 0.1rem 0;
    border-bottom: double;
    border-top: double;
  }
  /* affiliations may still pop-up in the side margin,
     looks a bit better in the title page */
  .ltx_role_affiliation > .ltx_note_mark:hover + .ltx_note_outer,
  .ltx_role_affiliation > .ltx_note_mark:active + .ltx_note_outer,
  .ltx_personname .ltx_role_footnote > .ltx_note_mark:hover + .ltx_note_outer,
  .ltx_personname .ltx_role_footnote > .ltx_note_mark:active + .ltx_note_outer,
  .ltx_author_notes .ltx_note > .ltx_note_mark:hover + .ltx_note_outer {
    display: block;
    opacity: 1;
    z-index: var(--z-popover);
    position: absolute;
    inset-inline-start: 0;
  }
  /* also regular footnotes are hidden on author names, to avoid unfortunate collisions */
  .ltx_personname .ltx_role_footnote .ltx_note_outer {
    display: none;
    opacity: 0;
  }
  /* footnotemark + footnotetext combinations come from hand-crafted typesetting
     see 1806.0319 for a good example. Let us try to avoid the obvious clashes
     with similarly hand-crafted CSS typesetting. */
  .ltx_note.ltx_role_footnotetext .ltx_note_outer {
    position: absolute;
    inset-inline-start: var(--main-width-margin);
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(2) .ltx_note_outer {
    top: 8rem;
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(3) .ltx_note_outer {
    top: 16rem;
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(4) .ltx_note_outer {
    top: 24rem;
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(5) .ltx_note_outer {
    top: 32rem;
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(6) .ltx_note_outer {
    top: 40rem;
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(7) .ltx_note_outer {
    top: 48rem;
  }
  .ltx_note.ltx_role_footnotetext:nth-of-type(8) .ltx_note_outer {
    top: 56rem;
  }
  /* notes directly in abstract, or document, don't benefit from
     having a mark on wide displays */
  .ltx_abstract > .ltx_note > .ltx_note_mark,
  .ltx_title_document > .ltx_note > .ltx_note_mark,
  .ltx_document > .ltx_note > .ltx_note_mark,
  .ltx_document > .ltx_note:not(.ltx_role_footnotetext) > .ltx_note_outer > .ltx_note_content > .ltx_note_mark,
  /* also frontmatter notes: Author notes, Affiliation notes, Preprint notes */
  .ltx_note.ltx_note_frontmatter > .ltx_note_mark,
  .ltx_note.ltx_note_frontmatter > .ltx_note_outer > .ltx_note_content > .ltx_note_mark,
  /* the inner marks on "malformed" author block notes */
  .ltx_author_notes .ltx_note > .ltx_note_outer .ltx_note_mark {
    display: none;
    opacity: 0;
  }

  .ltx_note.ltx_note_frontmatter .ltx_note_content {
    border: none;
    margin-bottom: 0rem;
    padding-bottom: 0rem;
    margin-top: 0rem;
    padding-top: 0rem;
  }
  .ltx_note.ltx_note_frontmatter > .ltx_note_outer {
    margin-bottom: 0rem;
    padding-bottom: 0rem;
  }
}

/* footnotetext are low-level notes without a type description */
.ltx_note.ltx_role_footnotetext .ltx_note_type {
  display: none;
  opacity: 0;
}
/* margin notes do not need the type description visualized */
.ltx_note.ltx_role_margin .ltx_note_type {
  display: none;
  opacity: 0;
}
/* some notes were only provided a verbatim mark, deactivate them */
.ltx_note.ltx_role_affiliationmark > .ltx_note_mark,
.ltx_note.ltx_role_footnotemark > .ltx_note_mark {
  color: var(--text-color);
}
.ltx_note.ltx_role_affiliationmark > .ltx_note_outer,
.ltx_note.ltx_role_footnotemark > .ltx_note_outer {
  display: none !important;
  opacity: 0 !important;
}

.ltx_note.ltx_marginpar_left {
  display: none;
}

/*======================================================================
  Document Structure; Titles & Frontmatter */

/* undo bold here to remove the browser's native h# styling,
   at let all other styles override it (with more specific rules)*/
.ltx_title {
  font-size: 100%;
  font-weight: normal;
  font-family: var(--headings-font-family);
  text-wrap: balance;
  max-inline-size: 52rem;
}
/* Abstract */
.ltx_abstract {
  margin-top: var(--space-xl);
  margin-bottom: var(--space-lg);
}

/* `.ltx_title_contents` is the positive class LaTeXML now emits for
   ToC titles; the `.ltx_TOC > h6` selector that used to live in this
   list was redundant. When LaTeXML emits `<h6>` inside `.ltx_TOC`
   it carries `class="ltx_title ltx_title_abstract"`, so it already
   matches the `.ltx_title_abstract` selector above. The h6 was
   only ever a redundant alias. Disabled and tested 2026-05-14:
   0 pixels of diff across the corpus. Removed. */
.ltx_title_abstract,
.ltx_title_contents {
  margin-top: 0;
  margin-bottom: var(--space-md);
  padding-top: 0;
  color: var(--text-color);
  text-decoration: none;
  font-size: 1.4rem;
  font-weight: bold;
  font-family: var(--headings-font-family);
  line-height: 1.15rem;
  list-style: none;
}
.ltx_abstract p:first-of-type {
  text-indent: 0rem;
}

.ltx_role_dedicatory {
  font-size: 100%;
  font-style: italic;
  text-align: center;
  margin: 1em;
}

/* ensure emails are presented on a standalone line */
.ltx_role_email {
  display: block;
}

.ltx_role_email > a {
  color: var(--email-link-color);
  text-decoration: none;
}

/* Table of Contents, main page display */
.ltx_TOC {
  margin-top: var(--space-lg);
  margin-bottom: var(--space-lg);
}
ul.ltx_toclist {
  padding-inline-start: 2.5rem;
}
ul.ltx_toclist > .ltx_tocentry:first-of-type {
  margin-top: 0.3rem;
}
/* top-level TOC has no indent */
.ltx_TOC > ul.ltx_toclist {
  padding-inline-start: 0;
}
.ltx_TOC > .ltx_toclist > .ltx_tocentry {
  list-style-type: none;
  margin-bottom: 1.3rem;
}
.ltx_tocentry {
  list-style-type: none;
  margin-bottom: var(--space-xs);
}
.ltx_TOC > .ltx_toclist > .ltx_tocentry > a.ltx_ref {
  display: inline-block;
  text-decoration: none;
  font-weight: bold;
  margin-bottom: 0.5em;
}
.ltx_tocentry_part > .ltx_ref > .ltx_ref_title > .ltx_tag,
.ltx_tocentry_chapter > .ltx_ref > .ltx_ref_title > .ltx_tag,
.ltx_tocentry_section > .ltx_ref > .ltx_ref_title > .ltx_tag,
.ltx_tocentry_appendix > .ltx_ref > .ltx_ref_title > .ltx_tag {
  margin-inline-end: var(--space-sm);
  display: inline-block;
  min-width: 1.5rem;
}
/* chapter tags under part can be a little narrower,
   see 2105.04227 */
.ltx_toclist_part
  > .ltx_tocentry_chapter
  > .ltx_ref
  > .ltx_ref_title
  > .ltx_tag {
  min-width: 0.5rem;
}

.ltx_tocentry_part .ltx_tocentry_chapter > .ltx_ref,
.ltx_tocentry_chapter .ltx_tocentry_section > .ltx_ref > .ltx_ref_title,
.ltx_tocentry_subsection > .ltx_ref > .ltx_ref_title,
.ltx_tocentry_appendix > .ltx_ref > .ltx_ref_title {
  font-family: var(--text-font-family);
}
.ltx_tocentry_part .ltx_tocentry_chapter > .ltx_ref,
.ltx_tocentry_chapter .ltx_tocentry_section > .ltx_ref,
.ltx_tocentry_subsection > .ltx_ref,
.ltx_tocentry_subsubsection > .ltx_ref,
.ltx_tocentry_appendix > .ltx_ref > .ltx_ref_title {
  text-decoration: none;
}

.ltx_tocentry_part
  .ltx_tocentry_chapter
  > .ltx_ref
  > .ltx_ref_title
  > .ltx_tag_ref,
.ltx_tocentry_chapter
  .ltx_tocentry_section
  > .ltx_ref
  > .ltx_ref_title
  > .ltx_tag_ref,
.ltx_tocentry_subsection > .ltx_ref > .ltx_ref_title > .ltx_tag_ref,
.ltx_tocentry_subsubsection > .ltx_ref > .ltx_ref_title > .ltx_tag_ref {
  text-decoration: underline dotted var(--link-text-color);
  text-decoration-thickness: from-font;
  width: min-content;
  display: inline-block;
  line-height: 1.1rem;
  margin-inline-end: 0.3rem;
}

/* A (top level) tocentry without tags should still have an equivalent padding to align well */
.ltx_toclist > .ltx_tocentry_abstract,
.ltx_toclist > .ltx_tocentry_acknowledgements,
.ltx_toclist > .ltx_tocentry_paragraph,
.ltx_toclist > .ltx_tocentry_bibliography {
  margin-inline-start: 2.5rem;
}

/* Various kinds of visual Tags */
.ltx_tag_part,
.ltx_tag_chapter,
.ltx_tag_appendix,
.ltx_tag_section,
.ltx_tag_subsection,
.ltx_tag_subsubsection {
  display: inline-block;
  padding-inline-end: 1rem;
  min-width: 1.33em;
}
.ltx_tag_table,
.ltx_tag_figure {
  display: inline-block;
  padding-inline-end: 0.2rem;
  min-width: 1.33em;
}
/* Various kinds of titles */
.ltx_title_part,
.ltx_title_chapter {
  font-size: 1.6rem;
  font-weight: bold;
  margin-bottom: var(--space-md);
}
.ltx_title_section,
.ltx_title_acknowledgements,
.ltx_title_appendix,
.ltx_title_index,
.ltx_title_bibliography,
/* semantic heuristic (part 1)
   bold spans with trailing breaks are headings
   see math/0002050 for example */
span.ltx_font_bold > .ltx_break:last-child {
  font-size: 1.4rem;
  font-weight: bold;
  margin-bottom: var(--space-md);
}
/* semantic heuristic (part 2)
   bold spans with trailing breaks are section headings
   so they were preceded by a section.
   add to top would have been the .ltx_subsection bottom margin */
span.ltx_font_bold > .ltx_break:last-child {
  margin-top: var(--space-lg);
}
.ltx_title_subsection {
  font-size: 1.2rem;
  font-weight: bold;
  margin-bottom: var(--space-sm);
}
.ltx_title_subsubsection {
  font-size: 1rem;
  font-weight: bold;
  margin-bottom: var(--space-sm);
}
.ltx_title_paragraph {
  font-size: 1rem;
  font-weight: bold;
  margin-inline-end: var(--space-sm);
  margin-bottom: var(--space-xs);
}
.ltx_title_subparagraph {
  font-size: 1rem;
  font-weight: bold;
  display: inline;
  margin-block: 0;
  margin-inline-start: var(--space-lg);
  margin-inline-end: var(--space-sm);
}

/* indent the first subparagraph content p for visual effect (maybe?) */
.ltx_section .ltx_subparagraph > .ltx_para:first-of-type > .ltx_p {
  text-indent: 2rem;
}
/* Hack to simulate run-in! put class="ltx_runin" on a title or tag
   for it to run-into the following text. */
.ltx_runin {
  display: inline;
}
.ltx_runin::after {
  content: " ";
}
.ltx_runin + .ltx_para,
.ltx_runin + .ltx_para p:first-child,
.ltx_runin + p:first-child {
  display: inline;
}

.ltx_outdent {
  margin-inline-start: -2em;
}

.ltx_part,
.ltx_chapter {
  margin-bottom: 5rem;
}
.ltx_section,
.ltx_bibliography {
  margin-bottom: 2.5rem;
}
.ltx_subsection {
  margin-bottom: var(--space-lg);
}
.ltx_subsubsection {
  margin-bottom: var(--space-xs);
}
.ltx_section .ltx_para:first-of-type .ltx_p:first-of-type {
  text-indent: 0rem;
}

/* Theorems and other statements */
.ltx_theorem,
.ltx_proof {
  margin-block: var(--space-lg) var(--space-sm);
  margin-inline: 0;
  text-align: justify;
  hyphens: auto;
}

/* TODO: this approach to .ltx_item is still not satisfying, especially for nested lists */
.ltx_item > .ltx_theorem {
  margin-inline-start: 1em;
}

/* reduce bottom margin for logical paragraphs in theorem envs */
.ltx_theorem > .ltx_para {
  margin-bottom: var(--space-xs);
}

.ltx_title_theorem,
.ltx_title_proof {
  font-family: var(--headings-font-family);
  font-size: 1rem;
  font-weight: bold;
  display: inline;
  padding-inline-end: 0.25em;
}

/* Bibliographies */
.ltx_bibliography dt {
  margin-inline-end: 0.5em;
  float: inline-start;
}
.ltx_bibliography dd {
  margin-inline-start: clamp(1em, 4.5%, 3em);
}

/* Bibliographies use a parent grid with subgrid for each entry so the
   tag column has a single width across the whole list — the widest
   key sets the column width, every entry lines up to it. Earlier
   attempts ran each bibitem as its own `display: table`, which sized
   columns per-row and produced a visibly jagged tag column
   (short-content entries got a wider tag column than long-content
   ones because table-auto distributes leftover width proportionally
   to max-content). Subgrid is Baseline 2024 (Chrome 117, Firefox 71,
   Safari 16).

   A bibitem contains a single `.ltx_tag` and one *or more*
   `.ltx_bibblock` children (LaTeXML emits one bibblock per logical
   line of the entry — title, authors, journal, etc.). The tag is
   placed at column 1 row 1; all bibblocks are placed in column 2
   and auto-row, stacking vertically beside the tag. */
.ltx_biblist {
  display: grid;
  /* `fit-content(12em)` caps the tag column at 12em. Keys narrower
     than the cap (numeric `[1]`, short author-year like `[Wil16]`)
     get their natural width; long author-year keys (`Chandler and
     Kerswell [2013]`-style) wrap inside the cap rather than
     pushing the entry column to a too-narrow strip. 12em fits
     about 20 characters of body text — the "Budanur et al.
     [2017]" reference style — anything longer reflows. */
  grid-template-columns: fit-content(12em) minmax(0, 1fr);
  column-gap: 3em;
  /* Drop the <ul> UA-default `padding-inline-start: 40px` so the
     tag column ([1], [2], ...) starts at the same x as the
     "References" section title above. The visual rhythm benefits
     from the key being flush with the heading rather than indented
     by an unrelated browser default. */
  padding-inline-start: 0;
}
.ltx_bibitem {
  display: grid;
  grid-template-columns: subgrid;
  grid-column: 1 / -1;
  /* Align grid items by their first baseline so the tag's "[1]"
     and the bibblock's first line of text sit on the same baseline.
     Default `align-items: stretch` made the bibblock's first text
     line render a hair below the tag's visual top because of the
     line-box padding asymmetry between the two contents. */
  align-items: baseline;
  list-style-type: none;
  padding-bottom: 0.75em;
  font-family: var(--text-font-family);
}
.ltx_bibitem .ltx_tag {
  grid-column: 1;
  grid-row: 1;
  line-height: var(--line-height-prose);
  text-align: start;
  word-break: normal;
  overflow-wrap: break-word;
}
.ltx_bibitem .ltx_bibblock {
  grid-column: 2;
  text-align: start;
  line-height: var(--line-height-prose);
}
@media only screen and (width <= 52rem) {
  /* On narrow viewports the two-column subgrid is too cramped. Drop the grid
     and let the tag plus every bibblock flow inline, so the [n] tag leads the
     first content line and the blocks fill the width and wrap naturally rather
     than stacking one per line. Matches the default theme's mobile
     bibliography. */
  .ltx_biblist {
    display: block;
  }
  .ltx_bibitem {
    display: block;
  }
  .ltx_bibitem > .ltx_tag {
    display: inline;
    line-height: var(--line-height-prose);
    margin-inline-end: 0.5em;
  }
  .ltx_bibitem > .ltx_bibblock {
    display: inline;
  }
}
@media only screen and (width > 52rem) {
  .ltx_bibitem .ltx_tag {
    /* No `white-space: nowrap` — long author-year keys need to
       wrap inside the `fit-content(12em)` cap on the tag column.
       Numeric keys collapse far below the cap; short author-year
       keys still fit on one line. */
    overflow-wrap: break-word;
  }
}
.ltx_bib_title {
  font-style: italic;
}
.ltx_bib_article .ltx_bib_title {
  font-style: normal !important;
}
.ltx_bib_journal {
  font-style: italic;
}
.ltx_bib_volume {
  font-weight: bold;
}

/* Highlight the whole bibitem (key + entry) on hover, not just the
   sibling of the tag. The earlier `.ltx_tag_bibitem ~ *` chain only
   highlighted siblings of the tag — hovering the bibblock left the
   tag unhighlighted, and vice versa. `.ltx_bibitem:is(:hover, :active)
   > *` highlights both children when any part of the bibitem
   triggers the state. */
.ltx_bibitem:is(:hover, :active) > * {
  background-color: var(--note-highlight-color);
}

/* indexes */
.ltx_indexlist {
  columns: 2;
  list-style-type: none;
  padding-inline-start: 0;
}
/* nested index sub-entries */
.ltx_indexentry > .ltx_indexlist {
  columns: 1;
  margin: 0.2rem 1rem 0rem;
}
.ltx_indexentry {
  font-family: var(--text-font-family);
  font-size: 0.85rem;
  padding-bottom: 0.15rem;
}
.ltx_indexrefs .ltx_ref {
  color: var(--index-ref-color);
  white-space: nowrap;
}

/* conversion log report. `max-width` + `box-sizing: border-box` so
   the padding stays inside the column on narrow viewports — the
   previous fixed `width: var(--main-width)` produced horizontal
   scroll at 320 CSS-px (WCAG 1.4.10 reflow). */
section.ltx_conversion_report > .ltx_para {
  background: var(--surface-subtle);
  max-width: var(--main-width);
  width: 100%;
  box-sizing: border-box;
  padding: 0.1rem 1rem 0.1rem 1rem;
  border-radius: 0.8rem;
  line-height: 1rem;
  font-family: var(--code-font-family);
  font-size: 0.8rem;
  overflow-wrap: break-word;
}
section.ltx_conversion_report > .ltx_para > .ltx_p {
  text-align: left;
  line-height: 1rem;
}

/* Feature: stylized standalone quotes

   Note:
   exclude epigraphs, which have their own right-aligned
   design, currently via inline "style" attributes. */
:not(.ltx_quote) > blockquote.ltx_quote:not(.ltx_epigraph) {
  border-inline-start: var(--border-double) solid var(--border-color);
  font-size: 1em;
  font-style: italic;
  line-height: 1.5em;
  margin: 1.1em 0rem;
  padding: 0.5em 2em;
  position: relative;
  z-index: var(--z-page);
}
:not(.ltx_quote) > blockquote.ltx_quote:not(.ltx_epigraph)::before {
  content: "";
  position: absolute;
  top: 50%;
  inset-inline-start: -0.25rem;
  height: 2rem;
  background-color: var(--background-color);
  width: 0.25rem;
  margin-top: -1rem;
}
:not(.ltx_quote) > blockquote.ltx_quote:not(.ltx_epigraph)::after {
  content: "“";
  position: absolute;
  top: 50%;
  inset-inline-start: -0.6rem;
  color: var(--border-color);
  font-style: normal;
  font-size: 1.5rem;
  line-height: 2rem;
  text-align: center;
  width: 1rem;
  margin-top: -0.7rem;
}

/* suppress bottom margins */
.ltx_quote > .ltx_p:last-child {
  margin-bottom: 0;
}
.ltx_quote > .ltx_break:last-child {
  display: none;
}
/* The "trailing-break paper-over" rule that used to live here
   (`.ltx_quote .ltx_break + .ltx_break + .ltx_break { display: none }`)
   was a Q4-shaped defensive fix for arXiv:1910.06706, where a
   quote contained a child <p> with many trailing <br>s. Disabled
   and tested 2026-05-14 with 1910.06706 in the corpus: 0 pixels
   of diff across the entire 47-paper corpus. LaTeXML's emission
   no longer produces the long trailing-break runs the rule was
   defending against. Deleted. */
/* suppress top margins, e.g. via breaks */
.ltx_quote > .ltx_break:first-child,
.ltx_quote > .ltx_break:first-child + .ltx_break,
.ltx_quote > .ltx_break:first-child + .ltx_break + .ltx_break {
  display: none;
}

/* Feature: epigraphs, see e.g. 1911.01547.
   !important defeats LaTeXML's per-element inline style attributes.

   Both width and margin-inline-start scale to the containing column,
   capped to the rem-absolute target. The earlier formulation used
   `min(100%, …)` for width and `min(50%, …)` for margin — at a
   320 CSS-px (20rem) viewport that combined to a 27rem visual box
   inside an 18rem column (10rem overflow). The 50/45 ratio is
   preserved at wide viewports (where 50% and 45% both hit their
   rem caps) and shrinks proportionally below. */
blockquote.ltx_epigraph {
  width: min(50%, calc(0.5 * var(--main-width))) !important;
  margin-inline-start: min(45%, calc(0.45 * var(--main-width))) !important;
}

/* Exception: some articles carelessly use {quote} instead of abstract */
/* see ar5iv#253 and ar5iv-css#3 for examples */
.ltx_authors + .ltx_para:has(+ .ltx_section) > blockquote.ltx_quote:only-child,
.ltx_titlepage:not(:has(.ltx_abstract)) > blockquote.ltx_quote:last-child,
.ltx_abstract > .ltx_title_abstract + blockquote.ltx_quote:last-child {
  max-width: 90%;
  margin: auto;
  border-inline-start: initial;
  font-size: initial;
  font-style: initial;
  line-height: initial;
  padding: initial;
  position: initial;
  z-index: initial;
}

/* ================================= */
/* from LaTeXML.css, possibly edited */
/* ================================= */

/* Blocks, Lists, Floats */
.ltx_p,
.ltx_quote,
.ltx_block,
.ltx_logical-block,
.ltx_para {
  display: block;
}
.ltx_inline-quote,
.ltx_quote.ltx_outerquote,
.ltx_quote.ltx_innerquote {
  display: inline;
}
/* alignment within blocks */
.ltx_align_left {
  text-align: left;
}
.ltx_align_right {
  text-align: right;
}
.ltx_align_center {
  text-align: center;
}
.ltx_align_justify {
  text-align: justify;
  hyphens: auto;
}
.ltx_align_top {
  vertical-align: top;
}
.ltx_align_bottom {
  vertical-align: bottom;
}
.ltx_align_middle {
  vertical-align: middle;
}
.ltx_align_baseline {
  vertical-align: baseline;
}

.ltx_align_floatleft {
  float: left;
}
.ltx_align_floatright {
  float: right;
}
/* Wrapped (floated) figures: a gutter on the side the text flows past, no top
   margin (align the figure's top with the adjacent text instead of inheriting
   the 4rem block-figure margin), zero margin on the column edge it hugs, and a
   small gap below. These must out-specify the generic
   `:not(.ltx_flex_cell) > .ltx_figure { margin: var(--space-xl) auto }`
   centering rule below, so they share its `:not(.ltx_flex_cell) >` context to
   raise specificity; otherwise that later, equal-specificity rule clobbers the
   gutter (auto margins collapse to 0 on a float) and re-adds the top margin.
   Margin order: top right bottom left. */
:not(.ltx_flex_cell) > .ltx_figure.ltx_align_floatleft {
  margin: 0 var(--space-md) var(--space-sm) 0;
}
:not(.ltx_flex_cell) > .ltx_figure.ltx_align_floatright {
  margin: 0 0 var(--space-sm) var(--space-md);
}
/* Wrapfigures carry a fixed pt width from the source so text can flow beside
   them. On viewports narrower than the main column that leaves too little room
   for the text, so un-float and center the figure full width (overriding the
   inline width:NNpt). Above the breakpoint they keep wrapping as intended. */
@media only screen and (width <= 52rem) {
  :not(.ltx_flex_cell) > .ltx_figure.ltx_align_floatleft,
  :not(.ltx_flex_cell) > .ltx_figure.ltx_align_floatright {
    float: none;
    width: auto !important;
    margin: var(--space-md) auto;
  }
}

.ltx_td.ltx_align_left,
.ltx_th.ltx_align_left,
.ltx_td.ltx_align_right,
.ltx_th.ltx_align_right,
.ltx_td.ltx_align_center,
.ltx_th.ltx_align_center {
  white-space: nowrap;
}
.ltx_td.ltx_align_left.ltx_wrap,
.ltx_th.ltx_align_left.ltx_wrap,
.ltx_td.ltx_align_right.ltx_wrap,
.ltx_th.ltx_align_right.ltx_wrap,
.ltx_td.ltx_align_center.ltx_wrap,
.ltx_th.ltx_align_center.ltx_wrap,
.ltx_td.ltx_align_justify,
.ltx_th.ltx_align_justify {
  white-space: normal;
}

/* graphics, subfigures */

/* Single central figure image */
/* Sizing here is a bit biased towards landscape images */
/* ideally this is mediated through the zoom-on-click CSS feature */
.ltx_graphics {
  display: block;
}
/* let us avoid overflowing the screen width with images
   when we're viewing at less than --main-width */
@media only screen and (width <= 52rem) {
  .ltx_graphics {
    max-width: 95%;
  }
}
@media only screen and (width > 52rem) {
  .ltx_graphics {
    max-width: var(--main-width);
  }
}
/* mini images in captions, personnames are used inline */
.ltx_caption .ltx_graphics,
.ltx_personname .ltx_graphics,
.ltx_author_notes .ltx_graphics {
  display: inline-block;
}

/* Note 1: The common use of negations is likely a sign we need more work in the data model
   for subfigures and images in general... but it's a start. */
/* Note 2: what is a reasonable "tallest" figure? All ratios subject to further tweaking. */
:not(mtext):not(.ltx_flex_cell)
  > :not(mtext):not(.ltx_flex_cell)
  > .ltx_img_landscape {
  max-width: 100%;
  max-height: calc(var(--main-width) / 1.66);
  width: auto;
  height: auto;
}
:not(mtext):not(.ltx_flex_cell)
  > :not(mtext):not(.ltx_flex_cell)
  > .ltx_img_portrait {
  max-height: var(--main-width);
  max-width: calc(var(--main-width) / 1.33);
  width: auto;
}
:not(mtext):not(.ltx_flex_cell)
  > :not(mtext):not(.ltx_flex_cell)
  > .ltx_img_square {
  max-height: calc(var(--main-width) / 1.33);
  width: auto;
}

/* intention: downsize keeping the aspect ratio, when on a viewport smaller than main-width */
@media only screen and (width <= 52rem) {
  :not(mtext):not(.ltx_flex_cell)
    > :not(mtext):not(.ltx_flex_cell)
    > .ltx_img_portrait {
    height: auto;
  }
  :not(mtext):not(.ltx_flex_cell)
    > :not(mtext):not(.ltx_flex_cell)
    > .ltx_img_square {
    height: auto;
  }
}

/* Inline images in math mtext, or in paragraphs outside layout-managed
   contexts, are sometimes used as missing-unicode-symbol fallbacks.
   Size them close to letter-height. See 2108.04810 (math mtext case),
   1502.04633 (height intentionally unset for inline-diagram cases),
   and 1712.01103 (min-* needs !important against per-element style
   attributes). */
:is(
  :not(.ltx_eqn_cell) > math mtext,
  :not(:is(.ltx_flex_cell, .ltx_figure, .ltx_transformed_inner, .ltx_td, .ltx_th))
    > .ltx_p:not(.ltx_align_center)
) :is(img, object):is(.ltx_img_landscape, .ltx_img_portrait, .ltx_img_square) {
  width: 1rem;
  /* height intentionally not set; see 1502.04633 above Observation 3.2 */
  min-width: 1rem !important;
  min-height: 1rem !important;
}

mtext > .ltx_graphics,
.ltx_markedasmath > .ltx_graphics,
.ltx_markedasmath.ltx_graphics {
  display: inline;
  /* see 1502.04633 at (3.3) for a width overflow example */
  max-width: calc(0.9 * var(--main-width)) !important;
}
.ltx_flex_cell .ltx_img_landscape,
.ltx_flex_cell .ltx_img_portrait,
.ltx_flex_cell .ltx_img_square {
  width: 100%;
  height: auto;
  max-height: var(--main-width);
}

/* footnote graphics need to be contained to small sizes */
.ltx_note_content .ltx_graphics {
  max-width: 10rem;
  max-height: 3rem;
}

/* Multiple subfigures via flexbox */
.ltx_flex_figure {
  display: flex;
  flex-flow: row wrap;
  width: auto;
  justify-content: center;
  align-items: flex-end;
  object-fit: contain;
  margin-bottom: var(--space-sm);
}
.ltx_flex_figure > .ltx_flex_cell > .ltx_graphics,
.ltx_flex_figure > .ltx_flex_cell > .ltx_figure,
.ltx_flex_figure > .ltx_flex_cell > .ltx_float,
.ltx_flex_figure > .ltx_flex_cell > .ltx_minipage,
.ltx_flex_figure > .ltx_flex_cell > .ltx_graphics.ltx_centering {
  margin: 0.1rem 1px 0.1rem;
  width: 100%;
  max-height: 100%;
}
.ltx_flex_figure > .ltx_flex_cell > .ltx_minipage,
.ltx_flex_figure > .ltx_flex_cell > .ltx_inline-block {
  width: 100% !important;
}
@media only screen and (width <= 46rem) {
  .ltx_flex_figure > .ltx_flex_cell.ltx_flex_size_1 {
    min-width: 20rem;
  }
}
@media only screen and (width > 46rem) {
  .ltx_flex_figure > .ltx_flex_cell.ltx_flex_size_1 {
    min-width: 25rem;
  }
}
.ltx_flex_figure > .ltx_flex_cell.ltx_flex_size_2 img.ltx_graphics {
  min-width: 20rem;
}
.ltx_flex_figure > .ltx_flex_cell.ltx_flex_size_3 img.ltx_graphics {
  min-width: 15rem;
}
.ltx_flex_figure > .ltx_flex_cell.ltx_flex_size_4 img.ltx_graphics {
  min-width: 10rem;
}
/* default: */
.ltx_flex_figure > .ltx_flex_cell img.ltx_graphics {
  min-width: 7rem;
}

.ltx_flex_cell.ltx_flex_size_1,
.ltx_flex_cell.ltx_flex_size_1 .ltx_tabular,
.ltx_lstlisting.ltx_flex_size_1,
.ltx_table.ltx_flex_size_1 .ltx_caption,
.ltx_minipage.ltx_flex_size_1 .ltx_float .ltx_caption {
  max-width: var(--main-width);
}
.ltx_flex_figure.ltx_flex_table .ltx_flex_size_2 {
  max-width: calc(0.5 * var(--main-width));
}
.ltx_flex_cell.ltx_flex_size_2,
.ltx_flex_size_2.ltx_tabular,
.ltx_flex_size_2 .ltx_tabular,
.ltx_lstlisting.ltx_flex_size_2,
.ltx_table.ltx_flex_size_2 .ltx_caption,
.ltx_minipage.ltx_flex_size_2 .ltx_float .ltx_caption {
  max-width: calc(0.5 * var(--main-width));
}
.ltx_flex_figure.ltx_flex_table .ltx_flex_size_3 {
  max-width: calc(0.33 * var(--main-width));
}

.ltx_flex_cell.ltx_flex_size_3,
.ltx_flex_size_3.ltx_tabular,
.ltx_flex_size_3 .ltx_tabular,
.ltx_lstlisting.ltx_flex_size_3,
.ltx_table.ltx_flex_size_3 .ltx_caption,
.ltx_minipage.ltx_flex_size_3 .ltx_float .ltx_caption {
  max-width: calc(0.33 * var(--main-width));
}

.ltx_flex_figure.ltx_flex_table .ltx_flex_size_4 {
  max-width: calc(0.25 * var(--main-width));
}

.ltx_flex_cell.ltx_flex_size_4,
.ltx_flex_size_4.ltx_tabular,
.ltx_flex_size_4 .ltx_tabular,
.ltx_lstlisting.ltx_flex_size_4,
.ltx_table.ltx_flex_size_4 .ltx_caption,
.ltx_minipage.ltx_flex_size_4 .ltx_float .ltx_caption {
  max-width: calc(0.25 * var(--main-width));
}
/*Default: More than 4 items, tricky.
  quite often intended to auto-reflow... */

.ltx_flex_figure.ltx_flex_table .ltx_flex_size_many {
  max-width: calc(0.28 * var(--main-width));
}

.ltx_flex_cell.ltx_flex_size_many,
.ltx_flex_size_many.ltx_tabular,
.ltx_flex_size_many .ltx_tabular,
.ltx_lstlisting.ltx_flex_size_many,
.ltx_table.ltx_flex_size_many .ltx_caption,
.ltx_minipage.ltx_flex_size_many .ltx_float .ltx_caption {
  max-width: calc(0.25 * var(--main-width));
}

.ltx_flex_figure .ltx_flex_cell {
  flex: 1 1 0px;
  margin: 0.1rem 1px 0.1rem;
}
.ltx_flex_figure .ltx_flex_break {
  flex-basis: 100%;
  height: 0;
}

.ltx_flex_cell > .ltx_figure {
  margin: 0rem;
}
.ltx_flex_figure .ltx_tabular .ltx_td,
.ltx_flex_figure .ltx_tabular .ltx_th {
  padding: 0.1rem 0.2rem;
}
/* Feature: tap/click-and-hold to zoom a figure image */
.ltx_figure img {
  color: var(--image-color);
  background-color: var(--image-background-color);
  transition: transform var(--duration-fast) var(--ease-out);
}
.ltx_figure img:active,
.ltx_p > img.ltx_graphics:active,
.ltx_text > img.ltx_graphics:active {
  transform: scale(1.8);
  overflow: visible;
  /* white zoom even in dark mode */
  background-color: white;
}
/* Tweaks from arXiv */
/* not all images are in figures, some are even inline in ltx_p */
.ltx_p > img.ltx_graphics {
  display: inline;
}
/* some svg figures use raw TeX to find themselves in an ltx_para */
.ltx_para > svg:only-child {
  margin: auto;
  display: block;
  max-width: var(--main-width);
}
svg {
  /* Collisions can be really bizarre, especially when
    due to flawed latex interpretation.
    See Fig 1 in 0709.4426, for a vertical case.
    For now: require svg content is underneath the main page. */
  z-index: var(--z-below);
}
@media only screen and (width < 80rem) {
  /* contain to screen width on narrow viewports,
     as the horizontal overflow can have cascading effects that
     are quite disorienting for navigation.
     Note that this was motivated by a foreignObject containing an <img> */
  svg.ltx_picture {
    max-width: min(var(--main-width), 100%);
  }
}

/* Block-level pictures scale to the allotted figure column (user,
   2026-07-04). The viewBox makes this native: the whole coordinate
   system — strokes, text, foreignObject HTML — zooms proportionally and
   stays crisp. Scoped to pictures standing ALONE as a paragraph's block
   (measured boxes, standalone diagrams); inline pictures must keep their
   natural size or they'd break line layout. height:auto preserves the
   aspect ratio from the viewBox. NESTED pictures (a measured box inside
   another box arrives as the same para>inline-block>svg shape inside a
   foreignObject) are excluded: their width attribute is an exact TeX
   dimension in the OUTER picture's coordinate system — letting them
   fill their container re-inflates them past the frame that contains
   them (arXiv 2605.02240 innercode-in-responsebox, 12px -> 30px). */
.ltx_para > .ltx_inline-block > svg.ltx_picture:only-child:not(foreignObject *) {
  width: min(var(--main-width), 100%);
  height: auto;
}

/*SVG (pgf/tikz & xy) basics */
svg text,
svg .ltx_foreignobject_content {
  line-height: 1rem;
  font-family: var(--text-font-family);
  /* This adjustment is specific for Noto Sans, and is generally quite fragile.
       Changing the text font will likely damage the positioning in SVG, which is very sensitive
       to font metrics. This will likely be a subject of future improvements in LaTeXML. */
  font-size: var(--svg-text-size);
  text-align: left; }
/* Newer LaTeXML emits an exact TeX font anchor (`font-size:<N>pt`)
   inline on each foreignObject; the `--svg-text-size: 0.82em`
   heuristic above approximated that anchor when it was absent
   (16px * 0.82 = 13.1px = ~10pt) and would double-shrink on top of
   it. When the anchor is present, defer to it exactly; documents
   from older conversions keep the heuristic. */
foreignObject[style*="font-size"] .ltx_foreignobject_content {
  font-size: 1em;
}
/* Under the anchor, TeX budgeted the box height at \baselineskip = 1.2em
   per line; the compact line-height:1 under-fills tall boxes by ~17%,
   which reads as excessive frame height. Legacy documents keep 1. */
foreignObject[style*="font-size"] {
  --ltx-fo-line-height: 1.2;
}
foreignObject {
  /* translate: 0 0.1em; */
  --ltx-fo-width: 100%;
}
/* Use flex to vertically center foreignObject, to accommodate
   potentially tall line-box. `--ltx-fo-width` is set on
   `foreignObject` (above) to 100% as the default; LaTeXML can
   override per-element when it knows the rendered width. The
   underscore-named `--fo_width` fallback that used to live in this
   chain was an upstream legacy contract that no current consumer
   sets — dropped in iteration 2. */
svg foreignObject > .ltx_foreignobject_container {
  display: flex;
  align-items: end; /* see examples from latexml PR #2541 */
  width: clamp(calc(0.1 * var(--main-width)), var(--ltx-fo-width), 100%);
  height: 100%;
}
svg foreignObject > .ltx_foreignobject_container {
  /* Also horizontally for single math, since Chrome adds a lot of left/right spacing. */
  /* Note: there is a diversity of arrangement, see arXiv:2501.11021, arXiv:1604.02256 */
  /* One limitation is that the flex use on foreignObject does not recognize the flex-direction
     which was _implied_ by the diagram's source, so we are always centering horizontally. */
  &:has( > .ltx_foreignobject_content > math:only-child) {
    align-items: center;
  }
  /* If multiple children, give more space to avoid unexpected line breaks
   due to font differences. */
  &:has(> .ltx_foreignobject_content > :not(:only-child)) {
    width: calc(1.1 * var(--ltx-fo-width));
  }
  /* A minipage in the content = a measured box's upper part (tcolorbox
     et al. wrap box content in \minipage; tikz labels never do). TeX
     fills such boxes from the top; with `end` all estimator slack piles
     up as a fake empty band ABOVE the text (arXiv 2605.02240
     Appendix G). */
  &:has(> .ltx_foreignobject_content > .ltx_minipage) {
    align-items: start;
  }
  & > .ltx_foreignobject_content {
    display: block;
    /* foreignObject sizing only works if width cascades to every
       descendant; the !important defeats author-supplied inline
       widths that LaTeXML would otherwise inject.
       EXCEPT SVG geometry elements: a tcolorbox/pgf box measured
       inside another box arrives as a nested <svg class="ltx_picture">
       whose width/height attributes are exact TeX dimensions —
       width:inherit on the nested svg/foreignObject collapses the
       inner box to 0 and shreds the layout (arXiv 2605.02240
       innercode-in-responsebox). Excluding the geometry-bearing SVG
       tags keeps their presentation attributes authoritative while
       the HTML text inside (at any nesting depth) still gets the
       width cascade and compact line-height. (Do NOT write
       `:not(svg *)` here — ALL fo content descends from the outer
       svg, so that guard would disable the rule entirely.) */
    & *:not(svg, foreignObject, image, rect, use) {
      line-height: var(--ltx-fo-line-height, 1);
    }
    /* The width cascade additionally excludes the interior of a
       typewriter verbatim LINE block: fvextra `breaklines` lines carry
       exact TeX widths on their parts (a 0/21pt break-indent hbox
       beside a 345pt wrap-parbox summing to the line width) — forcing
       each part to the full inherited width stacks them into 3-4 line
       boxes per source line, tripling the box height past the measured
       frame (arXiv 2605.00468 Prompt 2, +3700px). */
    & *:not(svg, foreignObject, image, rect, use, .ltx_parbox, .ltx_font_typewriter .ltx_inline-block) {
      width: inherit !important;
    }
    & .ltx_description,
    & .ltx_itemize,
    & .ltx_enumerate {
      margin-top: 0.2em;
      margin-inline-start: 0.2em;
    }
    /* In fixed-height contexts, the extra padding can lead to collding with the frame.
       see https://github.com/dginev/ar5iv/issues/529 */
    & .ltx_item + .ltx_item {
      margin-top: 0.2em;
    }
    & span.ltx_p:not(:last-child) {
      margin-bottom: 0.3em;
    }
    /* Verbatim blocks arrive as one ltx_p PER LINE whose only child is a
       typewriter inline-block. TeX spaces those lines by \baselineskip
       alone — the prose inter-paragraph margin above does not exist there,
       and at ~50 lines per box it inflated content ~200px past the
       TeX-measured frame (arXiv 2605.00468 Prompt boxes). First-child, not
       only-child: a verbatim line with quotes/dashes splits into several
       sibling spans, but always LEADS with the typewriter block. */
    /* Blank verbatim lines arrive as EMPTY ltx_p's — same no-margin rule
       (they carry no typewriter child for the :has() below to match). */
    & span.ltx_p:empty {
      margin-bottom: 0;
    }
    /* ...and a BLANK verbatim line is an ltx_p whose only child is an EMPTY
       inline-block (no text -> no font attribute -> no typewriter class). */
    & span.ltx_p:has(> .ltx_text.ltx_font_typewriter.ltx_inline-block:first-child),
    & span.ltx_p:has(> .ltx_text.ltx_inline-block:only-child:empty) {
      margin-bottom: 0;
    }
    /* One source line, one rendered line — the conversion's height budget
       counts each verbatim line box once, so browser re-wrapping would
       exceed the measured frame. `pre` also preserves leading-space
       indentation (JSON schemas etc.), which `normal` collapses. A line
       CONTAINING a wrap-parbox is excluded: there the engine replayed
       fvextra's breaklines re-typesetting (budget already counts wrapped
       lines) and `pre` would render the serializer's inter-element
       newlines as phantom breaks. */
    & span.ltx_p:has(> .ltx_text.ltx_font_typewriter.ltx_inline-block:first-child):not(:has(.ltx_parbox)),
    & span.ltx_p:has(> .ltx_text.ltx_inline-block:only-child:empty) {
      white-space: pre;
    }
    /* Monospace capacity calibration under the TeX anchor: scale the
       theme's code font so its character advance matches cmtt's, keeping
       browser line capacity equal to what the conversion measured. The
       ratio is calc()-derived from theme tokens (--code-font-advance
       lives beside --code-font-family; --tex-tt-advance is the TeX-side
       constant), so swapping the code font means updating one token.
       Where the browser supports metric-based font-size-adjust, prefer
       it: the browser reads the REAL font tables, honoring
       user-configured fonts with no hand-measured metric at all. */
    & .ltx_text.ltx_font_typewriter {
      font-size: calc(var(--tex-tt-advance, 0.525) / var(--code-font-advance, 0.6) * 1em);
    }
    @supports (font-size-adjust: ch-width 0.525) {
      & .ltx_text.ltx_font_typewriter {
        font-size: 1em;
        font-size-adjust: ch-width 0.525;
      }
    }
    & .ltx_para {
      /* see arXiv:2407.16893v1 */
      margin-bottom: 0.2rem;
    }
    /* fancyvrb/fvextra `breaklines`: an over-wide verbatim line arrives as
       a parbox INSIDE the line's typewriter inline-block (the engine
       replays fvextra's \parbox re-typesetting, so the measured height
       already counts the wrapped lines). The prose rules above re-style
       its interior paragraph — serif family, justify, inter-paragraph
       margins — un-doing the TeX font context and inflating the box far
       past the measured frame (arXiv 2605.00468 Prompt boxes, +3700px).
       Restore inheritance and TeX geometry: the paragraph wraps
       (pre-wrap, keeping verbatim space runs) inside the parbox width,
       ragged-right as fvextra typesets it. */
    & .ltx_font_typewriter .ltx_parbox .ltx_para,
    & .ltx_font_typewriter .ltx_parbox .ltx_p {
      font-family: inherit;
      margin-bottom: 0;
      text-align: left;
    }
    /* pre-wrap ONLY on the leaf paragraph (the container .ltx_para holds
       elements + serializer newlines — see the phantom-break note below) */
    & .ltx_font_typewriter .ltx_parbox .ltx_p {
      white-space: pre-wrap;
    }
    & .ltx_font_typewriter .ltx_parbox .ltx_para {
      white-space: normal;
    }
    /* `pre`/`pre-wrap` are for LEAF text only: the serializer emits
       newlines BETWEEN child elements, and under `pre` each renders as a
       phantom 1-line break (a 2-line wrapped paragraph measured 5 lines
       tall through its parbox wrappers). Containers whose children are
       elements revert to normal; the leaf `.ltx_p` above keeps pre-wrap. */
    & span.ltx_p:has(.ltx_parbox),
    & .ltx_parbox,
    & .ltx_parbox .ltx_para {
      white-space: normal;
    }
    /* The wrapped line is TeX's hbox row: break-indent hbox beside the
       wrap-parbox, widths summing exactly to the line width. Flex
       reproduces that juxtaposition AND drops the whitespace-only text
       nodes between the parts (as inline-blocks, the collapsed spaces
       pushed the parbox onto its own line box). Baseline alignment =
       \parbox[t]'s first-line baseline. */
    & .ltx_text:has(> .ltx_parbox) {
      display: flex;
      align-items: baseline;
      white-space: normal;
    }
    /* Inner styled runs (bold keywords etc.) hit the global `.ltx_text`
       serif rule; runs carrying their OWN ltx_font_* class keep it. */
    & .ltx_font_typewriter .ltx_parbox .ltx_text:not([class*="ltx_font_"]) {
      font-family: inherit;
    }
  }
}

/* Stuff appearing in svg:foreignObject */
.ltx_svg_fog foreignObject {
  margin: 0;
  padding: 0;
  overflow: visible;
}
.ltx_svg_fog foreignObject > p {
  margin: 0;
  padding: 0;
  display: block;
}
/*.ltx_svg_fog foreignObject > p { margin:0; padding:0; display:block; white-space:nowrap; }*/

/* tables in logical paragraphs get spaced out
   similar to a textual paragraph */
.ltx_para > .ltx_tabular {
  margin-bottom: var(--space-sm);
}

/* TODO: test! subtables */
.ltx_tabular .ltx_tabular {
  width: 100%;
}
.ltx_tabular.ltx_tabbing {
  display: table;
}
.ltx_inline-logical-block,
.ltx_inline-logical-block .ltx_para {
  display: inline;
  text-indent: 0px;
}
.ltx_inline-block,
.ltx_inline-block .ltx_para {
  display: inline-block;
}
.ltx_nodisplay {
  display: none;
}

/* TODO: it appears our width estimations for the individual rows of an inline block
         are not always accurate? Revert ot auto for now,
         see 2105.00613 for examples */
.ltx_inline-block > .ltx_p {
  width: auto !important;
}
/* also some parbox sizing goes wrong in the title of hep-th/0001161, avoid for now. */
.ltx_title_document > .ltx_parbox,
.ltx_title_document > .ltx_inline-block {
  width: auto !important;
}

/* experimental, only for figures: flex model, to center short captions, justify long ones */
:not(.ltx_flex_cell) > .ltx_figure {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin: var(--space-xl) auto;
}
/* tables use their usual block display with automatic overflow-x;
   unsolved: should we allow growth into the margins for very wide tables?
             or introduce a separate pop-out display mode?
*/
.ltx_table{
  text-align: center;
  margin: var(--space-xl) auto;
}
/* A full-width (non-floated) table or figure must not get squeezed into the
   narrow column left beside a preceding wrapfigure/wraptable float — clear it so
   it breaks onto its own full-width row (matching the PDF, where such floats are
   page-width). Witness 2606.19939: Table 4 otherwise renders at ~half width
   alongside Figure 5. Floated wrap{figure,table} (.ltx_align_float*) are excluded
   so they keep wrapping. */
.ltx_table:not(.ltx_align_floatleft):not(.ltx_align_floatright),
:not(.ltx_flex_cell) > .ltx_figure:not(.ltx_align_floatleft):not(.ltx_align_floatright) {
  clear: both;
}
/* don't use the auto overflow rule in subfigure cases
   see https://arxiv.org/html/2503.09799v1#S2.T2   */
.ltx_table:not(:has(> .ltx_flex_table)) {
  overflow-x: auto;
  overflow-y: hidden;
}
.ltx_table .ltx_caption {
  margin-inline: auto;
  max-width: max-content;
}

.ltx_caption {
  font-family: var(--text-font-family);
}
.ltx_table .ltx_caption,
.ltx_figure .ltx_caption {
  text-align: justify;
  line-height: var(--line-height-prose);
  margin-top: var(--space-md);
  margin-bottom: var(--space-md);
}
.ltx_flex_figure .ltx_figure .ltx_caption {
  text-align: center;
}
/* other notes, for example, the ones in deluxetable */
.ltx_figure .ltx_parbox {
  text-align: justify;
}
.ltx_parbox {
  text-indent: 0rem;
  display: inline-block;
}
/* floats, such as Algorithm listings.
   align-self is only overridden by .ltx_minipage.ltx_align_center below;
   inherit-from-parent is the natural default and was the same as the
   previous explicit `normal` for non-flex parents. */
.ltx_minipage {
  display: inline-block;
}
.ltx_minipage.ltx_align_center {
  align-self: center;
}
.ltx_minipage .ltx_float {
  display: inline-block;
}
/* inline-block or bliock display for captions in listings in minipage?
  see listings in arXiv:1712.01103 */
.ltx_minipage .ltx_float .ltx_caption {
  display: block;
}
/* often minipages are inline-blocks, for which "vertical-align" is inactive */
/* so we also default to an auto margin in order to center */
.ltx_minipage.ltx_align_middle {
  margin: auto;
  width: auto !important;
}
.ltx_minipage > .ltx_graphics {
  max-width: 100%;
}
/* minipages need some dedicated work (ar5iv#83),
   but for now we can accommodate with a bit of special-case padding; */
.ltx_flex_size_2 .ltx_tabular.ltx_minipage {
  margin: var(--space-sm);
}
.ltx_flex_size_3 .ltx_tabular.ltx_minipage {
  margin: 0.66rem;
}
.ltx_flex_size_4 .ltx_tabular.ltx_minipage {
  margin: var(--space-xs);
}

.ltx_overlay {
  position: relative;
}
/* Implicit contract with LaTeXML: the second child of .ltx_overlay is
   the "overlay layer" that gets absolute-positioned on top of the
   first. If LaTeXML's emission ever stops putting the overlay in
   the second slot, this rule needs a class-based selector instead. */
.ltx_overlay > span:nth-child(2) {
  position: absolute;
  inset-inline-start: 0;
}

.ltx_listing {
  display: block;
  max-width: var(--main-width);
  margin-bottom: var(--space-sm);
  /* Code is intrinsically LTR and structurally aligned at the
     leftmost column (line numbers, indentation). When a listing
     sits inside a `.ltx_figure` (which sets `text-align: center`
     for centred captions) or any other centring ancestor, that
     inherited centring cascades down to the listing-line content,
     producing a ragged middle-aligned look. `text-align: left`
     pins each line to the start edge regardless of context.

     Why physical `left` and not logical `start`: source code is
     LTR even in an RTL document. Line numbers, indentation, and
     monospace columns all assume left-to-right flow. */
  text-align: left;
}
.ltx_framed > .ltx_listing {
  margin-bottom: 0rem;
}
.ltx_listing > .ltx_framed_rectangle {
  /* download arrow has a glitchy border, disable it. */
  border-style: none;
}
/* ensure that listingline rules have a listing ancestor,
   as e.g. 1403.1525 currently has listinglines inside ltx_theorem */
.ltx_listing .ltx_listingline {
  /* listings never wrap, so text-align has nothing to act on — omit. */
  white-space: nowrap;
  min-height: 1rem;
  display: block;
  /* default font-size for a listing line, as sometimes text doesn't have a wrapper,
     e.g. see the leading "#" in 2109.04981, figure 5 */
  font-size: 0.7rem;
}
.ltx_listing .ltx_tag_listingline {
  padding-right: 0.3rem;
  /* gutter rule between line-number tag and code: hairline, currentColor */
  border-right: var(--border-hairline) solid;
  margin-right: 0.3rem;
  text-align: right;
  width: 1.3rem;
  display: inline-block;
  & > .ltx_text {
    /* see algorithm 2 in 2406.04076, for an example of the numbering tags getting wide. */
    word-break: keep-all;
    overflow-wrap: normal;
    /* !important needed due to use of element "style" attributes in latexml */
    /* Sometimes the 80% downscale is too much, 0.7rem is a good pragmatic constant */
    font-size: 0.7rem !important;
  }
}
.ltx_lst_space {
  white-space: pre;
}
/* for now hide the download button for listings,
   needs some styling thought and also ensuring it works. */
.ltx_listing_data {
  display: none;
}
/* keep listings spaced as-is in justified paragraphs
   example: 2111.08099, end of Intro */
.ltx_lstlisting.ltx_text {
  white-space: break-spaces;
}
/* also, keep listings left-aligned,
   even if the author wanted them centered in TeX.
   The authors of 2006.16852 made the request. */
.ltx_lstlisting.ltx_align_center {
  text-align: left;
}

.ltx_float {
  margin: 3.5rem auto 3.5rem;
}
.ltx_minipage > .ltx_float {
  margin: 0.2rem auto 0.2rem;
}
/* A framed float (e.g. an algorithm) defaults to inline-block shrink-to-fit via
   .ltx_framed_top, which is right for a single-column listing. But when it holds
   a multi-panel .ltx_flex_figure (e.g. side-by-side Training / Inference phases),
   shrink-to-fit collapses the whole box to a single column's width. Let such
   floats span the content width so the flex row can distribute its panels across
   the page, and stretch the panels to share that width evenly. */
.ltx_float.ltx_framed:has(> .ltx_flex_figure) {
  display: block;
  width: auto;
}
.ltx_float.ltx_framed:has(> .ltx_flex_figure) > .ltx_flex_figure > .ltx_flex_cell {
  flex: 1 1 0;
}
.ltx_float .ltx_caption {
  text-align: justify;
  hyphens: auto;
  border-top: solid var(--border-color);
  border-bottom: solid var(--border-color);
  border-width: 0.1rem;
  margin-top: 0.2rem;
  margin-bottom: 0.2rem;
  padding: 0.2rem;
}
.ltx_rule {
  color: var(--border-color);
  /* for hand-drwan bits such as  a QED symbol */
  vertical-align: middle;
  /* latexml often produces an element style="background:black;" for
    .ltx_rule nodes, which makes them impossible to style beyond the author intent.
    as this is experimental, we take the liberty of overriding those with !important.
  */
  background-color: var(--border-color) !important;
}
}  /* end @layer components — transformed-wrappers feature flag follows un-layered */

/* ===================================================================
   FEATURE FLAG (off): LaTeXML transform handling.

   The next ~50 lines are *one* conditional switch, not many
   independent decisions. LaTeXML's translation of \scalebox /
   \resizebox / transform attributes produces output that is
   sized correctly in PDF but unreliable in HTML — we routinely see
   wrong widths, vertical-align quirks, and unintentional clipping.

   Until LaTeXML's transform handling matures, every rule below
   disables the author's transform request with !important and
   reverts to natural sizing. Each !important here is for the same
   reason: defeating an inline `style="transform: …"` injected by
   LaTeXML.

   When LaTeXML PRs land that make these cases work, this whole
   block can be deleted.

   See: 2106.15835 (failed table squeeze), 0901.0489 (figure-level
   transform), 2006.13760, 1504.02179, 1909.02255, 2110.07681,
   2111.15640, 2111.00396 for the live test cases.
   =================================================================== */
.ltx_transformed_outer {
  width: auto !important;
  height: auto !important;
  vertical-align: initial !important;
}

/* For now, disable transformed_inner over figures and tables as well */
.ltx_table > .ltx_inline-block > .ltx_transformed_inner,
.ltx_figure > .ltx_inline-block > .ltx_transformed_inner,
.ltx_table > .ltx_transformed_outer > .ltx_transformed_inner,
.ltx_figure > .ltx_transformed_outer > .ltx_transformed_inner,
/* see 0901.0489 for an example where the div.ltx_table itself has a transform */
.ltx_table.ltx_transformed_outer > .ltx_transformed_inner,
/* see 2006.13760 for an example where the div.ltx_figure itself has a transform */
.ltx_figure.ltx_transformed_outer > .ltx_transformed_inner,
/* see 1504.02179 for an example where div.ltx_inline-block itself has a transform */
.ltx_inline-block.ltx_transformed_outer > .ltx_transformed_inner,
/* sometimes latexml copies a tabular scaffold under a figure too faithfully,
   see figures in 1909.02255 for examples. */
.ltx_tr:only-child > .ltx_td:only-child > .ltx_inline-block > .ltx_transformed_inner,
.ltx_tr:only-child > .ltx_td:only-child > .ltx_p:only-child > .ltx_inline-block > .ltx_transformed_inner,
.ltx_tr:only-child > .ltx_td:only-child > .ltx_transformed_outer > .ltx_transformed_inner,
.ltx_tr:only-child > .ltx_td:only-child > .ltx_p:only-child > .ltx_transformed_outer > .ltx_transformed_inner,
/* sometimes the inline block is *wrapping* the table, see
/* https://ar5iv.labs.arxiv.org/html/2110.07681#A1.p6.10
   a :has(table) selector could be made more precise, when browser support is available. */
.ltx_para > .ltx_inline-block:only-child.ltx_transformed_outer > .ltx_transformed_inner {
  transform: none !important;
  width: initial !important;
}

span.ltx_transformed_inner {
  display: inline-block;
}
/* see flipped RL in 1912.02875 for one example */
.ltx_transformed_inner > .ltx_p {
  margin: 0;
  padding: 0;
}
/* TODO: Maybe re-allow after latexml becomes very accurate with equation transforms?
 see equations 1 and 2 in arXiv:2111.15640 */
.ltx_eqn_cell > .ltx_transformed_outer > .ltx_transformed_inner,
/* TODO: Similarly, scale() on tables seems to be unpredictably different than the intention in PDF,
 disable for now? Needs a proper latexml fix.
 Example: subfigure scaled tables in 2111.00396 */
.ltx_flex_cell > .ltx_transformed_outer > .ltx_transformed_inner {
  transform: none !important;
}

@layer components {  /* resume layered rules */

/* \phantom - hide content but still allocate stand-in space */
.ltx_phantom {
  visibility: hidden;
}

/*======================================================================
 Inline Basics

 Note that LaTeX(ML)'s font model doesn't map quite exactly to CSS's
 Font Families => font-family
*/
.ltx_font_serif {
  font-family: var(--text-font-family);
}
.ltx_font_sansserif {
  font-family: var(--headings-font-family);
}
.ltx_font_typewriter {
  font-family: var(--code-font-family);
}
/* dingbats should be converted to unicode? */
/* Math font families handled within math: script, symbol, fraktur, blackboard ? */
/* Font Series => font-weight */
.ltx_font_bold {
  font-weight: bold;
}
.ltx_font_medium {
  font-weight: normal;
}
/* Font Shapes => font-style or font-variant */
.ltx_font_italic {
  font-style: italic;
}
.ltx_font_upright {
  font-style: normal;
  font-variant: normal;
}
.ltx_font_slanted {
  font-style: oblique;
}
.ltx_font_smallcaps {
  font-variant: small-caps;
  font-style: normal;
}
.ltx_font_mathcaligraphic {
  font-family: var(--math-caligraphic-font-family);
}

/* Fallbacks for when content+mathvariant cannot be mapped to Unicode */
.ltx_mathvariant_italic {
  font-style: italic;
}
.ltx_mathvariant_bold {
  font-weight: bold;
}
.ltx_mathvariant_bold-italic {
  font-style: italic;
  font-weight: bold;
}
.ltx_mathvariant_sans-serif {
  font-family: sans-serif;
}
.ltx_mathvariant_bold-sans-serif {
  font-family: sans-serif;
  font-weight: bold;
}
.ltx_mathvariant_sans-serif-italic {
  font-family: sans-serif;
  font-style: italic;
}
.ltx_mathvariant_bold-sans-serif-italic {
  font-family: sans-serif;
  font-style: italic;
  font-weight: bold;
}
.ltx_mathvariant_monospace {
  font-family: monospace;
}
/* Can we say anything generic about double-struck, script or fraktur ? */
.ltx_mathvariant_double-struck {
  font-weight: bold;
}
.ltx_mathvariant_script {
  font-family: var(--math-caligraphic-font-family), cursive;
}
.ltx_mathvariant_bold-script {
  font-family: var(--math-caligraphic-font-family), cursive;
  font-weight: bold;
}
.ltx_mathvariant_bold-fraktur {
  font-weight: bold;
}

/* equations in non-aligned mode (not normally used) */
.ltx_eqn_div {
  display: block;
  width: 95%;
  text-align: center;
}

/* equations in aligned mode (aligning tags, etc as well as equations) */
.ltx_eqn_table {
  display: table;
  width: 100%;
  border-collapse: collapse;
  margin: 0.65rem auto 0.65rem;
}
.ltx_eqn_row {
  display: table-row;
}
.ltx_eqn_cell {
  display: table-cell;
  width: auto;
  padding-block: 0.3rem;
  padding-inline: 0.2rem;
}
.ltx_eqn_cell.ltx_eqn_eqno {
  width: 3em;
  /* avoid line-breaking complex eqn labels */
  /* see eqn. A_2 at 0708.2787 for an example */
  white-space: nowrap;
}
.ltx_tag.ltx_tag_equation,
.ltx_tag.ltx_tag_equationgroup {
  font-size: 0.9em;
}

/* Padding between column pairs in ams align */
table.ltx_eqn_align tr.ltx_equation td.ltx_align_left + td.ltx_align_right,
table.ltx_eqn_align tr.ltx_equation td.ltx_align_left + td.ltx_align_center,
table.ltx_eqn_align tr.ltx_equation td.ltx_align_center + td.ltx_align_right,
table.ltx_eqn_align tr.ltx_equation td.ltx_align_center + td.ltx_align_center {
  padding-inline-start: 3em;
}
table.ltx_eqn_eqnarray tr.ltx_eqn_lefteqn + tr td.ltx_align_right {
  min-width: 2em;
}

.ltx_eqn_eqno.ltx_align_right .ltx_tag {
  float: right;
}

.ltx_eqn_center_padleft,
.ltx_eqn_center_padright {
  width: 50%;
  min-width: 2em;
}
.ltx_eqn_left_padleft,
.ltx_eqn_right_padright {
  min-width: 2em;
}
.ltx_eqn_left_padright,
.ltx_eqn_right_padleft {
  width: 100%;
}

/* Various lists */
.ltx_itemize,
.ltx_enumerate,
.ltx_description {
  display: block;
}
.ltx_item > .ltx_para > .ltx_description,
.ltx_item > .ltx_para > .ltx_itemize,
.ltx_item > .ltx_para > .ltx_enumerate {
  margin-top: var(--space-xs);
  margin-inline-start: var(--space-xs);
}
.ltx_description .ltx_item,
.ltx_itemize .ltx_item,
.ltx_enumerate .ltx_item {
  display: list-item;
}
/* Position the tag to look like a normal item bullet. */
/* This approach works for the common case (`.ltx_itemize`,
   `.ltx_description`) where the tag is short and uniform-ish.
   `.ltx_enumerate` with custom Roman / multi-character tags
   (`I` / `II` / `III` / ...) is handled separately below via
   subgrid, so the per-row content always starts at the same x. */
li.ltx_item > .ltx_tag {
  display: inline;
  margin-inline-start: -2.5rem;
  padding-inline-end: 0.5rem;
  text-align: end;
  /* The tag is inline (baseline-aligned) while the adjacent .ltx_para is an
     inline-block with vertical-align:top. Their first-line baselines diverge by
     (line-height_tag - line-height_para)/2, so a tag inheriting the default
     `normal` line-height floats above the paragraph's first line. Match the
     prose line-height to put the tag on the same baseline. (Enumerate lists
     use the subgrid layout below and are unaffected.) */
  line-height: var(--line-height-prose);
}

.ltx_item .ltx_tag + .ltx_para {
  vertical-align: top;
  display: inline-block;
  width: calc(100% - 0.5rem);
  & .ltx_p {
    display: inline;
  }
}
span.ltx_item .ltx_tag + span.ltx_para {
  display: inline;
}

/* Enumerate-list tag column via subgrid. Same shape as the
   `.ltx_biblist` refactor: parent grid sets two tracks, each
   `.ltx_item` participates via `subgrid` so the *widest tag in
   the whole list* sizes the tag column and every item lines up.
   Fixed `1`/`2`/`3` numeric tags looked fine under the inline +
   negative-margin approach above; `I`/`II`/`III`-style custom
   tags didn't, because tag widths vary visibly and content
   positions staggered. Reported by the project owner on
   arXiv:2403.11784 during iteration-4.

   This block lands *after* the `.ltx_enumerate .ltx_item {
   display: list-item }` rule above on purpose — the source-order
   cascade lets `display: grid` win without needing increased
   specificity. Overrides on the tag and on adjacent rules too
   so that the legacy inline + width:calc(100%-0.5rem) pair on
   `.ltx_tag + .ltx_para` doesn't interfere. */
.ltx_enumerate {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  column-gap: 0.5em;
  /* Drop the <ol>/<ul> UA-default `padding-inline-start: 40px`
     so the tag column starts flush with the prose paragraph
     above. Pre-subgrid, the negative-margin trick on the tag
     offset the UA padding by hand; with subgrid the right move
     is to remove the padding outright. Matches the same
     treatment on `.ltx_biblist`. */
  padding-inline-start: 0;
}
.ltx_enumerate > .ltx_item {
  display: grid;
  grid-template-columns: subgrid;
  grid-column: 1 / -1;
}
.ltx_enumerate > .ltx_item > .ltx_tag {
  grid-column: 1;
  grid-row: 1;
  display: block;
  margin: 0;
  padding: 0;
  text-align: start;
}
.ltx_enumerate > .ltx_item > :not(.ltx_tag) {
  grid-column: 2;
}
/* Inside an enumerate, the legacy `.ltx_tag + .ltx_para` rule
   (inline-block, width: calc(100% - 0.5rem)) double-counted the
   gutter once the tag moved out of the inline flow. Reset for
   the enumerate scope. */
.ltx_enumerate > .ltx_item > .ltx_tag + .ltx_para {
  display: block;
  width: auto;
}

.ltx_item > .ltx_para > .ltx_p:first-child {
  text-indent: 0rem;
}
.ltx_item > .ltx_para > .ltx_p {
  margin-top: 0rem;
  margin-bottom: 0rem;
}

.ltx_item .ltx_para {
  margin-bottom: 0rem;
  display: inline;
}
.ltx_item + .ltx_item {
  margin-top: 1em;
}
dt.ltx_item + dd.ltx_item {
  margin-top: 0;
}

/*TODO: Confusing override. maybe dt should have the ltx_tag_item class instead of ltx_item? */
dd.ltx_item + dt.ltx_item {
  margin-top: 0rem;
}
dl.ltx_description {
  list-style-type: none;
}
dl.ltx_description dt {
  margin-inline-end: 0.5em;
  float: inline-start;
  font-weight: bold;
  font-size: 95%;
}
dl.ltx_description dd.ltx_item {
  margin-inline-start: 3em;
  text-indent: 0rem;
}
dl.ltx_description dl.ltx_description dd {
  margin-inline-start: 3em;
  margin-bottom: 0.75em;
}

/* Lists inside a table-containing figure
   should still be left-aligned.
   See 2005.00832, Table IV, for example */
.ltx_table .ltx_itemize,
.ltx_table .ltx_enumerate,
.ltx_table .ltx_description {
  text-align: justify;
  hyphens: auto;
  font-family: var(--text-font-family);
  line-height: var(--line-height-prose);
}

/*======================================================================
 Borders and such */
.ltx_tabular {
  display: inline-table;
  border-collapse: collapse;
}
.ltx_tabular.ltx_centering {
  display: table;
  margin-inline: auto;
}
.ltx_graphics.ltx_centering,
.ltx_picture.ltx_centering {
  margin-inline: auto;
  text-align: center;
}
/* usually within text, center them vertically as well */
.ltx_picture.ltx_centering {
  vertical-align: middle;
}

.ltx_thead,
.ltx_tfoot,
.ltx_tbody {
  display: table-row-group;
}
.ltx_tr {
  display: table-row;
}
.ltx_td,
.ltx_th {
  display: table-cell;
}

/* LaTeXML translates p{<dim>} tabular columns to fixed-width inline-blocks
   sized for the AUTHOR'S PDF layout (often a two-column journal). In our
   single-column layout those widths can be absurdly tight — arXiv 2605.00310
   Table III carries a 14.2pt "Year" column that renders one letter per line.
   Floor each block at its longest word (min-content with word integrity):
   squeezed columns relax to readable, deliberately narrow paragraph columns
   still wrap at spaces, and nothing ever narrows. */
.ltx_tabular :is(.ltx_td, .ltx_th) > .ltx_inline-block {
  min-width: min-content;
}
.ltx_tabular :is(.ltx_td, .ltx_th) > .ltx_inline-block .ltx_p {
  overflow-wrap: normal;
}
.ltx_tabular .ltx_td,
.ltx_tabular .ltx_th {
  padding: 0.1em 0.5em;
  max-width: var(--main-width);
  overflow-wrap: break-word;
  white-space: normal;
}
/* `.ltx_nopad_l`, `.ltx_nopad_r`, and the `.ltx_border_*` / `.ltx_framed_*`
   classes below carry physical-side semantics from LaTeXML's emission
   (the `_l`/`_r`/`_left`/`_right` suffix names the table-cell edge
   directly). These rules stay on physical `left/right` properties
   until LaTeXML standardises a writing-direction-aware emission. */
.ltx_tabular .ltx_td.ltx_nopad_l,
.ltx_tabular .ltx_th.ltx_nopad_l {
  padding-left: 0;
}
.ltx_tabular .ltx_td.ltx_nopad_r,
.ltx_tabular .ltx_th.ltx_nopad_r {
  padding-right: 0;
}

/* min-height does NOT apply to tr! */
.ltx_tabular .ltx_tr td:first-child::after,
.ltx_tabular .ltx_tr th:first-child::after {
  content: "";
  display: inline-block;
  vertical-align: top;
  min-height: 1em;
}

/* see the last table in 1607.01446 for why
   th should be nowrap;
  TODO: Maybe our latexml data model needs to evolve to add classes,
  with types of content in the cells?
  Numbers and text may be best treated separately. */
.ltx_tabular .ltx_th.ltx_th_column {
  white-space: nowrap;
}
/* regular lines */
.ltx_border_t {
  border-top: var(--border-hairline) solid var(--border-color);
}
.ltx_border_r {
  border-right: var(--border-hairline) solid var(--border-color);
}
.ltx_border_b {
  border-bottom: var(--border-hairline) solid var(--border-color);
}
.ltx_border_l {
  border-left: var(--border-hairline) solid var(--border-color);
}
/* double lines */
.ltx_border_tt {
  border-top: var(--border-double) double var(--border-color);
}
.ltx_border_rr {
  border-right: var(--border-double) double var(--border-color);
}
.ltx_border_bb {
  border-bottom: var(--border-double) double var(--border-color);
}
.ltx_border_ll {
  border-left: var(--border-double) double var(--border-color);
}
/* Light lines */
.ltx_border_T {
  border-top: var(--border-hairline) solid var(--border-light-color);
}
.ltx_border_R {
  border-right: var(--border-hairline) solid var(--border-light-color);
}
.ltx_border_B {
  border-bottom: var(--border-hairline) solid var(--border-light-color);
}
.ltx_border_L {
  border-left: var(--border-hairline) solid var(--border-light-color);
}
/* arydshln.sty */
.ltx_border_r_dashed {
  border-right: var(--border-hairline) dashed var(--border-color);
}
.ltx_border_b_dashed {
  border-bottom: var(--border-hairline) dashed var(--border-color);
}
/* Framing */
/* set theme's frame color for all variants */
.ltx_framed {
  border-color: var(--border-color);
}
/* avoid padding/margin collapse */
span.ltx_framed {
  display: inline-block;
  text-indent: 0;
}
/* common setup, but what is the right selector?
   they need to be inline inside ltx_p (see 1703.08608),
   and inline-block when used on images...
   On closer look, the difference is that framed rectangles which are *empty*
   render correct only with display:inline;
   This became clear while also examining cases of spans in p which *require*
   inline-block to get the right border (see 1708.02728). */
.ltx_framed_rectangle:not(:empty),
.ltx_framed_top:not(:empty),
.ltx_framed_left:not(:empty),
.ltx_framed_right:not(:empty),
.ltx_framed_bottom:not(:empty),
.ltx_framed_underline:not(:empty),
.ltx_framed_topbottom:not(:empty) {
  display: inline-block;
}
/* specific features */
.ltx_framed_rectangle {
  border-style: solid;
  border-width: var(--border-hairline);
  padding-inline: 0.3rem;
}
.ltx_framed_top {
  border-top-style: solid;
  border-top-width: var(--border-hairline);
}
.ltx_framed_left {
  border-left-style: solid;
  border-left-width: var(--border-hairline);
}
.ltx_framed_right {
  border-right-style: solid;
  border-right-width: var(--border-hairline);
}
.ltx_framed_bottom,
.ltx_framed_underline {
  border-bottom-style: solid;
  border-bottom-width: var(--border-hairline);
}
.ltx_framed_topbottom {
  border-top-style: solid;
  border-top-width: var(--border-hairline);
  border-bottom-style: solid;
  border-bottom-width: var(--border-hairline);
}
.ltx_framed_leftright {
  border-left-style: solid;
  border-left-width: var(--border-hairline);
  border-right-style: solid;
  border-right-width: var(--border-hairline);
}

/*======================================================================
 Misc */
.ltx_verbatim {
  text-align: left;
  font-size: 90%;
}
/*======================================================================
 Meta stuff */
.ltx_tag_note {
  display: none;
}
/* Naming exception: these four classes are UPPER_CASE because they
   mirror LaTeX's \INFO / \WARNING / \ERROR / \FATAL macro names.
   Don't "normalise" to lowercase — the contract is with LaTeXML's
   output, not with CSS conventions. */
.ltx_INFO,
.ltx_WARNING,
.ltx_ERROR,
.ltx_FATAL {
  text-align: left;
  display: inline;
}
.ltx_INFO {
  color: var(--info-text-color);
}
.ltx_WARNING {
  color: var(--warning-text-color);
}
.ltx_ERROR {
  font-weight: normal;
  color: var(--error-text-color);
}
.ltx_FATAL {
  font-weight: normal;
  color: var(--fatal-text-color);
}
.ltx_rdf {
  display: none;
}
.ltx_missing,
.ltx_nounicode {
  color: var(--error-text-color);
}
.ltx_missing_label {
  color: var(--warning-text-color);
}

/* math specific */
merror.ltx_ERROR {
  font-size: 0.75rem;
  background-color: var(--background-color);
}
mjx-merror {
  background-color: var(--background-color) !important;
}

/*======================================================================
  Former "state of MathML in 2023" 7-mrow heuristic — REMOVED 2026-05-14

  The rule below used to override `text-align: justify` to `left` for
  paragraphs and list items containing math with 7+ mrows. Justifying
  prose around a wide unbreakable formula produced large whitespace
  wells in 2023-era browser MathML; the heuristic preserved
  readability by short-circuiting to left-alignment.

  Tested for obsolescence with the canonical trigger paper
  (arXiv:2105.10386, "Analysis of Boolean Functions") loaded into
  the corpus from a local cache: `npm test` shows 0 pixels of diff
  across the entire 47-paper corpus when the rule is removed, at
  1280 CSS-px × {light, dark} × fullPage. Current Chromium handles
  the wide-formula justification case fine without the override.

  Wider browser-matrix verification (Firefox, Safari) would require
  rendering through those engines too — Playwright supports them
  via `chromium.launch()` → `firefox.launch()` / `webkit.launch()`,
  deferred until the harness gets a multi-engine pass. */

/* see discussion at github.com/w3c/mathml-core/issues/39 */
mfrac > * {
  font-size: inherit;
  padding: 0.1em;
}

}  /* end @layer components — known-bug fixes follow in @layer fixes */

@layer fixes {

/*======================================================================
  Fixes for known markup Bugs

  B1. We have certain semi-supported bindings where a bibliography will be detected, but a paper
   will also mark it manually as e.g. \section{Bibliography}.
   (see arXiv:astro-ph/0001001)
   Detect: A section with only a title (no content) as a previous sibling to a bibliography
   Resolution: hide the extra section element. */
.ltx_section:has(> .ltx_title_section:only-child):has(+ .ltx_bibliography) {
  display: none;
}

/* B2 was removed in favour of fixing empty bibblocks upstream in latexml. */

/* B3. ltx_parbox having too narrow widths in tables (see ar5iv#191) */
.ltx_th .ltx_parbox,
.ltx_tr .ltx_parbox {
  width: initial !important;
}

.ltx_para.ltx_minipage.ltx_align_center {
  margin: auto;
  display: block;
}

}  /* end @layer fixes */
