/* Academic typography shared by the portal and isolated visual workspaces.
   Keep KaTeX glyph fonts and aligned cipher/code data component-owned. */
:root, :host {
  --font-academic: Cambria, "Sitka Text", Georgia, "Times New Roman", serif;
  --font-sans: var(--font-academic);
  --font-serif: var(--font-academic);
  --font-ui: var(--font-academic);
}
body, body[class], body[data-theme], .visual-body {
  font-family: var(--font-academic) !important;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.65;
}
/* Explicit component fonts otherwise defeat body inheritance. */
:is(h1,h2,h3,h4,h5,h6,p,li,dt,dd,label,legend,summary,button,input,textarea,select,th,td,figcaption,a,
.cl-text,.cl-note,.cl-result-note,.cl-mini-title,.cl-card-title,.cl-param-label,.cl-party-head,
.cl-card-desc,.cl-card-description,.cl-subtitle,.cl-stat-label):not(.katex):not(.katex *):not(math *):not(code *):not(pre *):not(.mono):not(.mono *):not(.cl-mono):not(.cl-mono *) {
  font-family: var(--font-academic) !important;
}
:is(h1,h2,h3,h4,h5,h6,.cl-card-title,.cl-mini-title):not(.katex *) {
  font-weight: 700;
  letter-spacing: normal !important;
}
/* Do not allow themed cards to turn academic headings into spaced-out labels. */
.cl-main :is(h1,h2,h3,h4,.cl-mini-title,.cl-card-title) { text-transform: none; }
body .cl-main { --cl-reading-size: 1.0625rem; --cl-reading-leading: 1.7; }
.visual-body { font-size: 16px; }
.visual-body :is(button,input,select,textarea) { font-size: inherit; }
/* Formula internals retain their own script, fraction and symbol metrics. */
.katex, .katex-display { font-weight: normal; }
