/* ==========================================================================
   Leibniz brand foundation · leibniz-brand.css
   The design language of Super-Demo.html (products/guigen-leibniz), lifted
   into a reusable foundation for Leibniz-authored report and bench pages.
   Public API: the .lbg-* classes and --lbg-* tokens listed in design.md.
   Fonts: Fraunces (serif), IBM Plex Sans (sans), JetBrains Mono / IBM Plex
   Mono (mono). Load them before this file; see design.md for the link tags.
   ========================================================================== */

/* ---------- tokens ---------- */
:root {
  /* engine + earned */
  --lbg-teal-deep: #0E3258;
  --lbg-teal: #2B6478;
  --lbg-teal-mid: #3C6B72;
  --lbg-gold: #C8A24C;
  --lbg-gold-deep: #A4842E;
  --lbg-ombre: linear-gradient(90deg, #0E3258, #2B6478, #3C6B72, #7C8761, #B7984E, #C8A24C);
  --lbg-ombre-vertical: linear-gradient(180deg, #0E3258, #2B6478 45%, #C8A24C);
  --lbg-black: linear-gradient(135deg, #1c1c1c, #33424f);

  /* paper */
  --lbg-surface-primary: #eef1f6;   /* paper */
  --lbg-surface-secondary: #f7f9fc; /* surface */
  --lbg-surface-tertiary: #e6ebf2;  /* paper-2 */
  --lbg-surface-card: #ffffff;

  /* ink */
  --lbg-text-primary: #14181f;
  --lbg-text-secondary: #3a424f;
  --lbg-text-muted: #697283;
  --lbg-text-faint: #9aa3b2;

  /* rules */
  --lbg-border-subtle: #e9edf3;
  --lbg-border-default: #dde3ec;
  --lbg-border-strong: #3a424f;
  --lbg-focus: #2B6478;

  /* night: the proof surface */
  --lbg-night: #0f1722;
  --lbg-night-line: #1d2735;
  --lbg-night-ink: #c8d2de;
  --lbg-night-muted: #5e7186;
  --lbg-night-keyword: #7fd6c2;
  --lbg-night-function: #e0c98a;

  /* verdicts: solver outcomes only */
  --lbg-verdict-ok: #1f7a4d;   --lbg-verdict-ok-bg: #e9f4ee;  --lbg-verdict-ok-line: #cfe6d9;
  --lbg-verdict-ctx: #9a6b14;  --lbg-verdict-ctx-bg: #f8efdc; --lbg-verdict-ctx-line: #ecdcb4;
  --lbg-verdict-con: #c20012;  --lbg-verdict-con-bg: #fbe3e5; --lbg-verdict-con-line: #f3c2c7;

  /* data series */
  --lbg-chart-1: #0E3258;
  --lbg-chart-2: #C8A24C;
  --lbg-chart-3: #2B6478;
  --lbg-chart-4: #7C8761;
  --lbg-chart-5: #A4842E;
  --lbg-chart-6: #9aa3b2;

  /* type */
  --lbg-font-serif: 'Fraunces', Georgia, 'Times New Roman', serif;
  --lbg-font-sans: 'IBM Plex Sans', -apple-system, system-ui, sans-serif;
  --lbg-font-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  --lbg-type-display: clamp(34px, 4.2vw, 48px);
  --lbg-type-page-title: clamp(28px, 3.2vw, 36px);
  --lbg-type-title: 24px;
  --lbg-type-section: 20px;
  --lbg-type-subsection: 16px;
  --lbg-type-lede: 17px;
  --lbg-type-body: 15px;
  --lbg-type-compact: 13.5px;
  --lbg-type-label: 12.5px;
  --lbg-type-metadata: 11px;
  --lbg-type-mono: 12px;

  --lbg-weight-regular: 400;
  --lbg-weight-medium: 500;
  --lbg-weight-semibold: 600;
  --lbg-weight-heading: 600;

  --lbg-leading-display: 1.08;
  --lbg-leading-page-title: 1.12;
  --lbg-leading-title: 1.2;
  --lbg-leading-section: 1.25;
  --lbg-leading-subsection: 1.3;
  --lbg-leading-lede: 1.5;
  --lbg-leading-body: 1.6;
  --lbg-leading-compact: 1.5;
  --lbg-leading-caption: 1.45;

  /* rhythm + shape */
  --lbg-space-1: 4px;  --lbg-space-2: 8px;  --lbg-space-3: 12px; --lbg-space-4: 16px;
  --lbg-space-5: 20px; --lbg-space-6: 24px; --lbg-space-8: 32px; --lbg-space-10: 40px;
  --lbg-space-12: 48px; --lbg-space-16: 64px;
  --lbg-radius-small: 4px;
  --lbg-radius: 9px;
  --lbg-radius-large: 16px;
  --lbg-ease: cubic-bezier(.22, .7, .16, 1);
  --lbg-wrap: 1180px;
  --lbg-wrappad: clamp(24px, 3.5vw, 44px);
}

/* ---------- base ---------- */
.lbg-report, .lbg-report * { box-sizing: border-box; }
.lbg-report {
  margin: 0;
  background: var(--lbg-surface-primary);
  background-image:
    radial-gradient(900px 420px at 100% -6%, rgba(43, 100, 120, .05), transparent 60%),
    radial-gradient(760px 460px at -6% 8%, rgba(28, 28, 28, .05), transparent 60%);
  color: var(--lbg-text-primary);
  font-family: var(--lbg-font-sans);
  font-size: var(--lbg-type-body);
  line-height: var(--lbg-leading-body);
  -webkit-font-smoothing: antialiased;
  font-variant-numeric: tabular-nums;
}
.lbg-report ::selection { background: #d8ecef; color: #0e3258; }
.lbg-report h1, .lbg-report h2, .lbg-report h3, .lbg-report h4 {
  font-family: var(--lbg-font-serif);
  font-weight: var(--lbg-weight-heading);
  letter-spacing: -.012em;
  margin: 0;
  color: var(--lbg-text-primary);
}
.lbg-report p, .lbg-report ul, .lbg-report ol, .lbg-report figure, .lbg-report table { margin: 0; }
.lbg-report a { color: var(--lbg-teal-deep); text-decoration-color: rgba(43, 100, 120, .35); text-underline-offset: .15em; }
.lbg-report a:hover { text-decoration-color: currentColor; }
.lbg-report :focus-visible { outline: 2px solid var(--lbg-focus); outline-offset: 3px; border-radius: var(--lbg-radius-small); }
.lbg-report button, .lbg-report input, .lbg-report select { font-family: var(--lbg-font-sans); font-size: inherit; }
.lbg-report img { max-width: 100%; height: auto; }
.lbg-report [hidden] { display: none !important; }

/* ---------- shell ---------- */
.lbg-shell { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; }
.lbg-shell > main { flex: 1; }
.lbg-skip-link {
  position: absolute; left: var(--lbg-space-4); top: -100px;
  padding: var(--lbg-space-2) var(--lbg-space-3); background: #fff; color: var(--lbg-teal-deep);
  border: 1px solid var(--lbg-border-default); border-radius: var(--lbg-radius); z-index: 100;
}
.lbg-skip-link:focus { top: var(--lbg-space-4); }

.lbg-header {
  position: relative;
  background: rgba(255, 255, 255, .94);
  border-bottom: 1px solid var(--lbg-border-default);
}
.lbg-header::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px;
  background: var(--lbg-ombre); opacity: .5;
}
.lbg-masthead {
  max-width: var(--lbg-wrap); margin: 0 auto; padding: 0 var(--lbg-wrappad);
  min-height: 54px; display: flex; align-items: center; gap: var(--lbg-space-5);
}
.lbg-identity { display: flex; align-items: center; gap: 9px; flex: none; color: inherit; text-decoration: none; }
.lbg-icon {
  width: 24px; height: 24px; border-radius: 6px; flex: none;
  background: url("leibniz-icon.png") center / cover no-repeat;
  box-shadow: 0 2px 8px rgba(14, 50, 88, .22);
}
.lbg-wordmark {
  font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-semibold); font-size: 16.5px;
  color: #2f3e4b; line-height: 1; white-space: nowrap; letter-spacing: -.005em;
}
.lbg-wordmark i, .lbg-wordmark em { font-style: italic; font-weight: var(--lbg-weight-regular); color: var(--lbg-gold-deep); margin-left: 2px; }
.lbg-document-meta {
  margin-left: auto; display: flex; align-items: baseline; gap: var(--lbg-space-4); min-width: 0;
  font-family: var(--lbg-font-mono); font-size: 10.5px; letter-spacing: .02em; color: var(--lbg-text-muted); white-space: nowrap;
}
.lbg-document-meta > * { overflow: hidden; text-overflow: ellipsis; }
.lbg-document-meta b, .lbg-recipient { color: var(--lbg-text-secondary); font-weight: var(--lbg-weight-medium); }
.lbg-state { font-family: var(--lbg-font-serif); font-style: italic; font-size: 13px; letter-spacing: 0; color: var(--lbg-gold-deep); }
.lbg-confidentiality { color: var(--lbg-text-faint); }

.lbg-footer {
  max-width: var(--lbg-wrap); margin: 0 auto; width: 100%;
  padding: var(--lbg-space-10) var(--lbg-wrappad) var(--lbg-space-12);
  display: flex; align-items: center; gap: var(--lbg-space-4);
  font-family: var(--lbg-font-mono); font-size: 10.5px; letter-spacing: .02em; color: var(--lbg-text-faint);
}
.lbg-footer::before { content: ""; }
.lbg-glyph {
  width: 28px; height: 28px; flex: none; background: var(--lbg-ombre); opacity: .55;
  -webkit-mask: url("leibniz-glyph.png") center / contain no-repeat;
  mask: url("leibniz-glyph.png") center / contain no-repeat;
}
.lbg-footer > span:last-child { margin-left: auto; text-align: right; }

/* ---------- grid ---------- */
.lbg-section, .lbg-chapter, .lbg-context, .lbg-opening {
  max-width: var(--lbg-wrap); margin: 0 auto; padding: 0 var(--lbg-wrappad); width: 100%;
}
.lbg-section { padding-top: var(--lbg-space-10); padding-bottom: var(--lbg-space-10); }
.lbg-chapter { padding-top: var(--lbg-space-16); padding-bottom: var(--lbg-space-12); }
.lbg-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--lbg-space-6); row-gap: var(--lbg-space-8); }
.lbg-grid > * { min-width: 0; }
.lbg-span-4 { grid-column: span 4; }
.lbg-span-5 { grid-column: span 5; }
.lbg-span-6 { grid-column: span 6; }
.lbg-span-7 { grid-column: span 7; }
.lbg-span-8 { grid-column: span 8; }
.lbg-span-12 { grid-column: span 12; }
.lbg-split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--lbg-space-8); row-gap: var(--lbg-space-6); align-items: start; }
.lbg-split > * { min-width: 0; }
.lbg-reading { max-width: 66ch; }
.lbg-flow > * + * { margin-top: var(--lbg-space-4); }
.lbg-stack { display: flex; flex-direction: column; gap: var(--lbg-space-3); }
.lbg-stack > * { margin: 0; }
.lbg-cluster { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--lbg-space-2) var(--lbg-space-4); }

@media (max-width: 960px) {
  .lbg-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .lbg-span-7, .lbg-span-8, .lbg-span-12 { grid-column: span 6; }
  .lbg-span-4, .lbg-span-5, .lbg-span-6 { grid-column: span 6; }
}
@media (max-width: 640px) {
  .lbg-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--lbg-space-4); }
  .lbg-grid > [class*="lbg-span-"] { grid-column: span 4; }
  .lbg-split { grid-template-columns: minmax(0, 1fr); }
  .lbg-section { padding-top: var(--lbg-space-8); padding-bottom: var(--lbg-space-8); }
  .lbg-chapter { padding-top: var(--lbg-space-12); }
  .lbg-document-meta { display: none; }
}

/* ---------- type roles ---------- */
.lbg-display { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: var(--lbg-type-display); line-height: var(--lbg-leading-display); letter-spacing: -.02em; }
.lbg-title { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: var(--lbg-type-page-title); line-height: var(--lbg-leading-page-title); letter-spacing: -.018em; }
.lbg-heading-24 { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: var(--lbg-type-title); line-height: var(--lbg-leading-title); letter-spacing: -.012em; }
.lbg-heading-20 { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: var(--lbg-type-section); line-height: var(--lbg-leading-section); letter-spacing: -.01em; }
.lbg-heading-16 { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: var(--lbg-type-subsection); line-height: var(--lbg-leading-subsection); }
.lbg-lede { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-regular); font-size: var(--lbg-type-lede); line-height: var(--lbg-leading-lede); color: var(--lbg-text-secondary); max-width: 46ch; }
.lbg-label { font-size: var(--lbg-type-label); font-weight: var(--lbg-weight-semibold); color: var(--lbg-text-secondary); letter-spacing: .01em; }
.lbg-meta { font-family: var(--lbg-font-mono); font-size: var(--lbg-type-metadata); letter-spacing: .02em; color: var(--lbg-text-muted); }
.lbg-caption { font-size: var(--lbg-type-compact); line-height: var(--lbg-leading-caption); color: var(--lbg-text-muted); }
.lbg-mono { font-family: var(--lbg-font-mono); font-size: var(--lbg-type-mono); font-weight: var(--lbg-weight-medium); }
.lbg-numeric { text-align: right; font-variant-numeric: tabular-nums; }
.lbg-kicker { font-family: var(--lbg-font-serif); font-style: italic; font-weight: var(--lbg-weight-regular); font-size: 15px; color: var(--lbg-gold-deep); }
.lbg-kicker[data-tone="ombre"] { background: var(--lbg-ombre); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; }
.lbg-clause { font-family: var(--lbg-font-serif); font-size: 14.5px; line-height: 1.66; color: var(--lbg-text-secondary); }
.lbg-epigraph { font-family: var(--lbg-font-serif); font-style: italic; font-weight: var(--lbg-weight-regular); font-size: var(--lbg-type-lede); line-height: var(--lbg-leading-lede); color: var(--lbg-text-secondary); max-width: 46ch; }
.lbg-epigraph cite { display: block; margin-top: var(--lbg-space-2); font-style: normal; font-family: var(--lbg-font-mono); font-size: 10.5px; letter-spacing: .04em; color: var(--lbg-text-faint); }
.lbg-visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* body prose rhythm inside .lbg-reading */
.lbg-reading p + p, .lbg-reading p + ul, .lbg-reading p + ol, .lbg-reading ul + p, .lbg-reading ol + p { margin-top: var(--lbg-space-4); }
.lbg-reading h2 + p, .lbg-reading h3 + p, .lbg-reading h4 + p { margin-top: var(--lbg-space-3); }
.lbg-reading ul, .lbg-reading ol { padding-left: 1.2em; }
.lbg-reading li + li { margin-top: var(--lbg-space-1); }
.lbg-reading strong { font-weight: var(--lbg-weight-semibold); }

/* ---------- opening ---------- */
.lbg-opening { padding-top: var(--lbg-space-12); padding-bottom: var(--lbg-space-10); display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--lbg-space-6); row-gap: var(--lbg-space-6); }
.lbg-opening > * { min-width: 0; }
.lbg-opening-claim { grid-column: 1 / span 7; display: flex; flex-direction: column; gap: var(--lbg-space-4); }
.lbg-opening-proof { grid-column: 8 / span 5; align-self: end; }
.lbg-opening-context { grid-column: 1 / span 7; }
@media (max-width: 960px) { .lbg-opening-claim, .lbg-opening-proof, .lbg-opening-context { grid-column: 1 / -1; } .lbg-opening-proof { align-self: start; } }

/* ---------- surfaces ---------- */
.lbg-band { background: var(--lbg-surface-tertiary); border-top: 1px solid var(--lbg-border-default); border-bottom: 1px solid var(--lbg-border-default); }
.lbg-band[data-tone="paper"] { background: var(--lbg-surface-card); }
.lbg-band[data-tone="contrast"] {
  background: var(--lbg-night); color: var(--lbg-night-ink); border-color: var(--lbg-night-line);
  --lbg-text-primary: #eef3f8; --lbg-text-secondary: var(--lbg-night-ink); --lbg-text-muted: #8fa3b8; --lbg-text-faint: var(--lbg-night-muted);
  --lbg-border-default: var(--lbg-night-line); --lbg-border-subtle: #1a2433; --lbg-surface-card: #141e2b; --lbg-focus: var(--lbg-gold);
}
.lbg-band[data-tone="contrast"] h1, .lbg-band[data-tone="contrast"] h2, .lbg-band[data-tone="contrast"] h3, .lbg-band[data-tone="contrast"] h4 { color: #eef3f8; }
.lbg-band[data-tone="contrast"] a { color: var(--lbg-night-keyword); }
.lbg-band[data-tone="contrast"] .lbg-kicker { color: var(--lbg-gold); }
.lbg-band[data-tone="contrast"] ::selection { background: #2c3c52; color: #fff; }
.lbg-band[data-tone="contrast"] .lbg-wordmark { color: #eef3f8; }

.lbg-note { border-left: 2px solid var(--lbg-gold); padding: var(--lbg-space-1) 0 var(--lbg-space-1) var(--lbg-space-4); font-size: var(--lbg-type-compact); line-height: var(--lbg-leading-compact); color: var(--lbg-text-secondary); }
.lbg-formula { font-family: var(--lbg-font-mono); font-size: var(--lbg-type-mono); line-height: 1.7; padding: var(--lbg-space-3) var(--lbg-space-4); background: var(--lbg-surface-card); border: 1px solid var(--lbg-border-default); border-radius: var(--lbg-radius); overflow-x: auto; }
.lbg-sources { font-size: var(--lbg-type-compact); line-height: var(--lbg-leading-compact); color: var(--lbg-text-muted); border-top: 1px solid var(--lbg-border-default); padding-top: var(--lbg-space-4); }
.lbg-sources ol { padding-left: 1.4em; }
.lbg-sources li + li { margin-top: var(--lbg-space-1); }

/* ---------- verdicts ---------- */
.lbg-verdict {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--lbg-font-sans); font-size: 11px; font-weight: var(--lbg-weight-semibold); letter-spacing: .02em; text-transform: uppercase;
  padding: 5px 10px; border-radius: 5px; white-space: nowrap; line-height: 1;
}
.lbg-verdict[data-verdict="ok"] { color: var(--lbg-verdict-ok); background: var(--lbg-verdict-ok-bg); box-shadow: inset 0 0 0 1px var(--lbg-verdict-ok-line); }
.lbg-verdict[data-verdict="ctx"] { color: var(--lbg-verdict-ctx); background: var(--lbg-verdict-ctx-bg); box-shadow: inset 0 0 0 1px var(--lbg-verdict-ctx-line); }
.lbg-verdict[data-verdict="con"] { color: #fff; background: var(--lbg-verdict-con); }
.lbg-verdict[data-verdict="ok"]::before, .lbg-verdict[data-verdict="ctx"]::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.lbg-verdict[data-verdict="con"]::before { content: "✕"; font-size: 9px; }

/* the docket: findings numbered like exhibits, a verdict spine on the left */
.lbg-docket { counter-reset: finding; border-top: 1px solid var(--lbg-border-default); }
.lbg-finding { position: relative; counter-increment: finding; padding: var(--lbg-space-6) 0 var(--lbg-space-6) 26px; border-bottom: 1px solid var(--lbg-border-default); }
.lbg-finding::before { content: ""; position: absolute; left: 0; top: 30px; bottom: 30px; width: 3px; border-radius: 3px; background: linear-gradient(180deg, var(--lbg-border-strong), rgba(58, 66, 79, .15)); }
.lbg-finding[data-verdict="con"]::before { background: linear-gradient(180deg, var(--lbg-verdict-con), rgba(194, 0, 18, .15)); }
.lbg-finding[data-verdict="ctx"]::before { background: linear-gradient(180deg, var(--lbg-verdict-ctx), rgba(154, 107, 20, .15)); }
.lbg-finding[data-verdict="ok"]::before { background: linear-gradient(180deg, var(--lbg-verdict-ok), rgba(31, 122, 77, .15)); }
.lbg-finding-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--lbg-space-3); align-items: baseline; }
.lbg-finding-ref { font-family: var(--lbg-font-mono); font-weight: var(--lbg-weight-medium); font-size: 12px; color: var(--lbg-text-muted); white-space: nowrap; }
.lbg-finding-ref::before { content: counter(finding, decimal-leading-zero) "  ·  "; color: var(--lbg-gold-deep); white-space: pre; }
.lbg-finding-title { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: 19px; line-height: 1.3; letter-spacing: -.01em; }
.lbg-finding-body { margin-top: var(--lbg-space-3); font-size: var(--lbg-type-compact); line-height: 1.62; color: var(--lbg-text-primary); max-width: 96ch; }
.lbg-finding-foot { display: flex; align-items: center; flex-wrap: wrap; gap: var(--lbg-space-3); margin-top: var(--lbg-space-3); font-family: var(--lbg-font-mono); font-size: 11px; color: var(--lbg-text-muted); }
.lbg-finding-foot .lbg-hash { color: var(--lbg-teal-deep); }
@media (max-width: 640px) { .lbg-finding-head { grid-template-columns: minmax(0, 1fr); } .lbg-finding-head .lbg-verdict { justify-self: start; } }

/* ---------- the proof surface ---------- */
.lbg-proof {
  font-family: var(--lbg-font-mono); font-size: 11.5px; line-height: 1.68; color: var(--lbg-night-ink);
  background: var(--lbg-night); border: 1px solid var(--lbg-night-line); border-radius: var(--lbg-radius);
  padding: 14px 15px; margin: 0; white-space: pre-wrap; overflow-x: auto; tab-size: 2;
}
.lbg-proof .cm { color: var(--lbg-night-muted); }
.lbg-proof .kw { color: var(--lbg-night-keyword); }
.lbg-proof .fn { color: var(--lbg-night-function); }
.lbg-proof[data-lang="cnl"] { background: var(--lbg-surface-card); color: var(--lbg-text-primary); border-color: var(--lbg-border-default); }
.lbg-proof[data-lang="cnl"] .arr { color: var(--lbg-teal); }
.lbg-proof-cap { max-height: 320px; overflow: auto; }
.lbg-hash { font-family: var(--lbg-font-mono); font-size: 10.5px; letter-spacing: .02em; color: var(--lbg-gold-deep); }
.lbg-rule-tag { font-family: var(--lbg-font-mono); font-size: 11px; font-weight: var(--lbg-weight-medium); color: var(--lbg-text-secondary); background: var(--lbg-surface-secondary); border: 1px solid var(--lbg-border-subtle); border-radius: var(--lbg-radius-small); padding: 1px 6px; white-space: nowrap; }

/* the ombre thread and dot: secondary characteristics only */
.lbg-hairline { height: 2px; border: 0; margin: 0; background: var(--lbg-ombre); opacity: .5; border-radius: 2px; }
.lbg-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: linear-gradient(135deg, var(--lbg-teal), var(--lbg-gold)); vertical-align: middle; }
.lbg-readbar { height: 3px; border-radius: 3px; background: var(--lbg-border-default); overflow: hidden; }
.lbg-readbar > i { display: block; height: 100%; width: 100%; background: var(--lbg-ombre); transform: translateX(calc(-100% + var(--progress, 0%))); transition: transform .55s var(--lbg-ease); }

/* ---------- stats ---------- */
.lbg-stat-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--lbg-space-6); border-top: 1px solid var(--lbg-border-default); padding-top: var(--lbg-space-4); }
.lbg-stat { display: flex; flex-direction: column; gap: var(--lbg-space-1); min-width: 0; }
.lbg-stat-label { font-size: var(--lbg-type-label); font-weight: var(--lbg-weight-semibold); color: var(--lbg-text-secondary); order: 1; }
.lbg-stat-value { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: 30px; line-height: 1.1; letter-spacing: -.015em; color: var(--lbg-text-primary); order: 2; }
.lbg-stat-detail { font-size: var(--lbg-type-compact); color: var(--lbg-text-muted); line-height: var(--lbg-leading-caption); order: 3; }

/* ---------- tables ---------- */
.lbg-table-wrap { width: 100%; overflow-x: auto; }
.lbg-table-wrap > table { width: 100%; border-collapse: collapse; font-size: var(--lbg-type-compact); line-height: var(--lbg-leading-compact); }
.lbg-table-wrap caption { text-align: left; caption-side: top; font-size: var(--lbg-type-label); font-weight: var(--lbg-weight-semibold); color: var(--lbg-text-secondary); padding-bottom: var(--lbg-space-3); }
.lbg-table-wrap th, .lbg-table-wrap td { padding: 10px 14px 10px 0; text-align: left; vertical-align: baseline; border-bottom: 1px solid var(--lbg-border-subtle); }
.lbg-table-wrap thead th { font-size: var(--lbg-type-label); font-weight: var(--lbg-weight-semibold); color: var(--lbg-text-muted); vertical-align: bottom; border-bottom: 1px solid var(--lbg-border-default); }
.lbg-table-wrap tbody th { font-weight: var(--lbg-weight-medium); color: var(--lbg-text-primary); white-space: nowrap; }
.lbg-table-wrap tfoot td, .lbg-table-wrap tfoot th { font-weight: var(--lbg-weight-semibold); border-bottom: 0; border-top: 1px solid var(--lbg-border-default); }
.lbg-table-wrap th:last-child, .lbg-table-wrap td:last-child { padding-right: 0; }
.lbg-table-wrap .lbg-numeric, .lbg-table-wrap [data-align="numeric"] { text-align: right; font-variant-numeric: tabular-nums; }
.lbg-table-wrap[data-density="compact"] th, .lbg-table-wrap[data-density="compact"] td { padding-top: 6px; padding-bottom: 6px; font-size: var(--lbg-type-label); }
.lbg-table-wrap tr[data-recommended="true"] > * { background: rgba(43, 100, 120, .05); }
.lbg-table-wrap td .lbg-verdict { vertical-align: middle; }

/* the matrix: every combination already solved */
.lbg-matrix td[data-verdict] { text-align: center; font-family: var(--lbg-font-mono); font-size: 11px; font-weight: var(--lbg-weight-medium); }
.lbg-matrix td[data-verdict="ok"] { color: var(--lbg-verdict-ok); background: var(--lbg-verdict-ok-bg); }
.lbg-matrix td[data-verdict="ctx"] { color: var(--lbg-verdict-ctx); background: var(--lbg-verdict-ctx-bg); }
.lbg-matrix td[data-verdict="con"] { color: var(--lbg-verdict-con); background: var(--lbg-verdict-con-bg); }

/* ---------- comparison ---------- */
.lbg-comparison { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--lbg-space-8); row-gap: var(--lbg-space-4); position: relative; }
.lbg-comparison > * { min-width: 0; }
.lbg-comparison::before { content: ""; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; transform: translateX(-1px); background: var(--lbg-ombre-vertical); opacity: .45; border-radius: 2px; }
@media (max-width: 640px) { .lbg-comparison { grid-template-columns: minmax(0, 1fr); } .lbg-comparison::before { display: none; } }

/* ---------- charts ---------- */
.lbg-chart { display: flex; flex-direction: column; gap: var(--lbg-space-3); }
.lbg-chart-header { display: flex; align-items: baseline; justify-content: space-between; gap: var(--lbg-space-4); flex-wrap: wrap; }
.lbg-chart-viewport { width: 100%; overflow: visible; }
.lbg-chart-viewport svg { width: 100%; height: auto; display: block; font-family: var(--lbg-font-sans); }
.lbg-chart figcaption { font-size: var(--lbg-type-compact); line-height: var(--lbg-leading-caption); color: var(--lbg-text-muted); max-width: 70ch; }
.lbg-legend { display: flex; flex-wrap: wrap; gap: var(--lbg-space-2) var(--lbg-space-4); font-size: var(--lbg-type-label); color: var(--lbg-text-secondary); }
.lbg-legend > * { display: inline-flex; align-items: center; gap: 6px; }
.lbg-chart-axis { stroke: var(--lbg-border-strong); stroke-width: 1; }
.lbg-chart-gridline { stroke: var(--lbg-border-default); stroke-width: 1; }
.lbg-chart-direct-label { font-size: 12px; fill: var(--lbg-text-secondary); }
.lbg-chart-value { font-size: 12px; font-weight: var(--lbg-weight-medium); fill: var(--lbg-text-primary); font-variant-numeric: tabular-nums; }
.lbg-chart-annotation { font-size: 11px; fill: var(--lbg-text-muted); }
.lbg-chart-annotation-line { stroke: var(--lbg-gold-deep); stroke-width: 1; stroke-dasharray: 3 3; }
.lbg-series-stroke { fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.lbg-series-fill { stroke: none; }
.lbg-data-point { stroke: var(--lbg-surface-card); stroke-width: 1.5; }
.lbg-series-1 { --series: var(--lbg-chart-1); }
.lbg-series-2 { --series: var(--lbg-chart-2); }
.lbg-series-3 { --series: var(--lbg-chart-3); }
.lbg-series-4 { --series: var(--lbg-chart-4); }
.lbg-series-5 { --series: var(--lbg-chart-5); }
.lbg-series-6 { --series: var(--lbg-chart-6); }
.lbg-series-stroke[class*="lbg-series-"] { stroke: var(--series); }
.lbg-series-fill[class*="lbg-series-"], .lbg-data-point[class*="lbg-series-"] { fill: var(--series); }
.lbg-legend [class*="lbg-series-"]::before { content: ""; width: 10px; height: 10px; border-radius: 2px; background: var(--series); }

/* bars: one shared label lane, one plot lane, one value lane */
.lbg-bar-comparison, .lbg-bar-list { display: grid; grid-template-columns: minmax(120px, max-content) minmax(0, 1fr) max-content; column-gap: var(--lbg-space-4); row-gap: var(--lbg-space-3); align-items: center; }
.lbg-bar { display: contents; }
.lbg-bar-label { font-size: var(--lbg-type-compact); color: var(--lbg-text-secondary); }
.lbg-bar-track { height: 10px; background: var(--lbg-surface-tertiary); border-radius: 2px; overflow: hidden; }
.lbg-bar-fill { height: 100%; background: var(--lbg-chart-1); width: var(--value, 0%); }
.lbg-bar[data-emphasis="true"] .lbg-bar-fill { background: var(--lbg-gold); }
.lbg-bar-value { font-size: var(--lbg-type-compact); font-weight: var(--lbg-weight-medium); text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- controls + calculator ---------- */
.lbg-button {
  display: inline-flex; align-items: center; gap: 8px; font-family: var(--lbg-font-sans); font-size: 13px; font-weight: var(--lbg-weight-semibold);
  border-radius: var(--lbg-radius); padding: 9px 15px; cursor: pointer; border: 1px solid var(--lbg-border-default); background: #fff; color: var(--lbg-text-secondary);
  transition: .16s var(--lbg-ease); white-space: nowrap; text-decoration: none;
}
.lbg-button:hover { border-color: var(--lbg-text-secondary); color: var(--lbg-text-primary); }
.lbg-button[data-variant="primary"] { background: var(--lbg-black); color: #fff; border-color: transparent; padding: 11px 19px; font-size: 13.5px; }
.lbg-button[data-variant="primary"]:hover { transform: translateY(-1px); box-shadow: 0 12px 26px -12px rgba(13, 20, 32, .55); }
.lbg-button[data-variant="quiet"] { border-color: transparent; background: transparent; color: var(--lbg-teal-deep); padding-left: 0; padding-right: 0; }
.lbg-button:disabled { opacity: .4; cursor: default; pointer-events: none; }

.lbg-calculator { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: var(--lbg-space-8); row-gap: var(--lbg-space-6); align-items: start; }
.lbg-calculator > * { min-width: 0; }
.lbg-calculator-inputs { display: flex; flex-direction: column; gap: var(--lbg-space-5); }
.lbg-calculator-output { display: flex; flex-direction: column; gap: var(--lbg-space-5); background: var(--lbg-surface-card); border: 1px solid var(--lbg-border-default); border-radius: var(--lbg-radius-large); padding: var(--lbg-space-6); }
@media (max-width: 960px) { .lbg-calculator { grid-template-columns: minmax(0, 1fr); } }
.lbg-control-group { display: flex; flex-direction: column; gap: var(--lbg-space-4); }
.lbg-field { display: flex; flex-direction: column; gap: var(--lbg-space-2); }
.lbg-field .lbg-label { color: var(--lbg-text-primary); }
.lbg-field input[type="number"], .lbg-field input[type="text"], .lbg-field select {
  font-family: var(--lbg-font-sans); font-size: var(--lbg-type-body); color: var(--lbg-text-primary); background: #fff;
  border: 1px solid var(--lbg-border-default); border-radius: var(--lbg-radius); padding: 9px 12px; width: 100%; min-width: 0;
  font-variant-numeric: tabular-nums;
}
.lbg-field input:focus-visible, .lbg-field select:focus-visible { outline: 2px solid var(--lbg-focus); outline-offset: 1px; border-color: var(--lbg-teal); }
.lbg-field input[type="range"] { width: 100%; accent-color: var(--lbg-teal); }
.lbg-unit-field { display: flex; align-items: stretch; border: 1px solid var(--lbg-border-default); border-radius: var(--lbg-radius); background: #fff; overflow: hidden; }
.lbg-unit-field input { border: 0 !important; border-radius: 0 !important; flex: 1; }
.lbg-unit-field input:focus-visible { outline-offset: -2px; }
.lbg-unit-prefix, .lbg-unit-suffix { display: flex; align-items: center; padding: 0 12px; font-family: var(--lbg-font-mono); font-size: 12px; color: var(--lbg-text-muted); background: var(--lbg-surface-secondary); }
.lbg-unit-prefix { border-right: 1px solid var(--lbg-border-subtle); }
.lbg-unit-suffix { border-left: 1px solid var(--lbg-border-subtle); }
.lbg-helper { font-size: var(--lbg-type-label); color: var(--lbg-text-muted); }
.lbg-error { font-size: var(--lbg-type-label); color: var(--lbg-verdict-con); }
.lbg-range-ends { display: flex; justify-content: space-between; font-family: var(--lbg-font-mono); font-size: 10.5px; color: var(--lbg-text-faint); }
.lbg-result-group { display: flex; flex-direction: column; gap: var(--lbg-space-4); }
.lbg-result { display: flex; flex-direction: column; gap: var(--lbg-space-1); padding-bottom: var(--lbg-space-4); border-bottom: 1px solid var(--lbg-border-subtle); }
.lbg-result:last-child { border-bottom: 0; padding-bottom: 0; }
.lbg-result-label { font-size: var(--lbg-type-label); font-weight: var(--lbg-weight-semibold); color: var(--lbg-text-secondary); }
.lbg-result-value { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: 30px; line-height: 1.1; letter-spacing: -.015em; }
.lbg-result[data-focal="true"] .lbg-result-value { font-size: 40px; }
.lbg-result-detail { font-size: var(--lbg-type-compact); color: var(--lbg-text-muted); }

/* ---------- the live instrument: the one earned halo ---------- */
.lbg-instrument { position: relative; isolation: isolate; background: #fff; border: 1px solid var(--lbg-border-default); border-radius: var(--lbg-radius-large); }
.lbg-instrument::before { content: ""; position: absolute; inset: -3px; border-radius: 19px; background: var(--lbg-ombre); filter: blur(12px); opacity: .3; z-index: -1; }
.lbg-instrument-top { display: flex; align-items: center; gap: 11px; padding: 13px 18px; border-bottom: 1px solid var(--lbg-border-subtle); background: var(--lbg-surface-secondary); border-radius: var(--lbg-radius-large) var(--lbg-radius-large) 0 0; }
.lbg-instrument-top .lbg-icon { width: 30px; height: 30px; border-radius: 8px; }
.lbg-instrument-name { font-family: var(--lbg-font-serif); font-weight: var(--lbg-weight-heading); font-size: 15px; }
.lbg-instrument-sub { font-size: 11px; color: var(--lbg-text-muted); }
.lbg-instrument-body { padding: var(--lbg-space-5) 18px; }

/* ---------- motion ---------- */
.lbg-in { animation: lbg-in .32s var(--lbg-ease) both; }
@keyframes lbg-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.lbg-rolling::after { content: "▍"; color: var(--lbg-night-keyword); margin-left: 1px; animation: lbg-caret .9s steps(1) infinite; }
@keyframes lbg-caret { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .lbg-report *, .lbg-report *::before, .lbg-report *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .lbg-rolling::after { animation: none; }
}

/* ---------- print ---------- */
@media print {
  .lbg-report { background: #fff; }
  .lbg-header, .lbg-footer { border: 0; }
  .lbg-header::after { display: none; }
  .lbg-skip-link, .lbg-button { display: none; }
  .lbg-proof { border: 1px solid #ccc; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .lbg-finding, .lbg-stat-strip, .lbg-table-wrap { break-inside: avoid; }
}
