/* Self-hosted variable fonts (SIL Open Font License, see /fonts/OFL-*.txt). Latin and
   latin-ext subsets from Google Fonts; other scripts fall back to the system stacks. */
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(/fonts/jetbrainsmono-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(/fonts/jetbrainsmono-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Newsreader'; font-style: italic; font-weight: 400; font-display: swap; src: url(/fonts/newsreader-italic-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Newsreader'; font-style: italic; font-weight: 400; font-display: swap; src: url(/fonts/newsreader-italic-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Newsreader'; font-style: normal; font-weight: 400 500; font-display: swap; src: url(/fonts/newsreader-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Newsreader'; font-style: normal; font-weight: 400 500; font-display: swap; src: url(/fonts/newsreader-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* skillscan.io theme — light and dark, editorial data site.
   Tokens on :root (light). Dark via prefers-color-scheme unless data-theme="light",
   and always via data-theme="dark". Loaded as the only stylesheet. */

:root {
  color-scheme: light;
  --bg: #f6f3ec;
  --bg-elev: #fbf9f4;
  --surface: #fffdf8;
  --text: #1d1b17;
  --text-2: #4a463f;
  --muted: #76716a;
  --border: #e2ddd2;
  --border-strong: #c9c3b6;
  --accent: #116b57;
  --accent-ink: #0b4a3c;
  --accent-soft: #e4f0eb;
  --link: #0f5e4c;
  --critical: #b42318;  --critical-soft: #fbe9e6;
  --high: #c2410c;      --high-soft: #fdeee3;
  --medium: #9a6a00;    --medium-soft: #fbf1d6;
  --low: #1d4ed8;       --low-soft: #e6ecfb;
  --safe: #15803d;      --safe-soft: #e3f3e8;
  --info: #76716a;      --info-soft: #ecE9e2;
  --shadow: 0 1px 0 rgba(29,27,23,0.04);
  --font-serif: "Newsreader", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --font-sans: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --radius: 4px;
  --measure: 66rem;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg: #141311; --bg-elev: #191815; --surface: #1e1c19;
    --text: #ebe6dc; --text-2: #c9c3b7; --muted: #948e82;
    --border: #2b2925; --border-strong: #3f3c35;
    --accent: #5cc9a3; --accent-ink: #8adcc0; --accent-soft: #1a2d27; --link: #7fd4b6;
    --critical: #f0786b; --critical-soft: #3a1c19;
    --high: #f29a5a;     --high-soft: #3a2415;
    --medium: #e3b94a;   --medium-soft: #352c12;
    --low: #7ea2f5;      --low-soft: #1b2440;
    --safe: #6cc98a;     --safe-soft: #16301f;
    --info: #948e82;     --info-soft: #26241f;
    --shadow: none;
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #141311; --bg-elev: #191815; --surface: #1e1c19;
  --text: #ebe6dc; --text-2: #c9c3b7; --muted: #948e82;
  --border: #2b2925; --border-strong: #3f3c35;
  --accent: #5cc9a3; --accent-ink: #8adcc0; --accent-soft: #1a2d27; --link: #7fd4b6;
  --critical: #f0786b; --critical-soft: #3a1c19;
  --high: #f29a5a;     --high-soft: #3a2415;
  --medium: #e3b94a;   --medium-soft: #352c12;
  --low: #7ea2f5;      --low-soft: #1b2440;
  --safe: #6cc98a;     --safe-soft: #16301f;
  --info: #948e82;     --info-soft: #26241f;
  --shadow: none;
}

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body { background: var(--bg); color: var(--text); font-family: var(--font-sans); line-height: 1.6; min-height: 100vh; }
a { color: var(--link); text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--link) 35%, transparent); text-underline-offset: 2px; }
a:hover { text-decoration-color: var(--link); }
h1, h2, h3 { font-family: var(--font-serif); font-weight: 500; letter-spacing: -0.01em; line-height: 1.15; color: var(--text); }
h1 { font-size: clamp(2rem, 1.3rem + 2.4vw, 3rem); margin: 0.25rem 0 0.75rem; }
h2 { font-size: 1.5rem; margin: 0 0 0.75rem; }
h3 { font-size: 1.2rem; }
p { margin-bottom: 0.9rem; }
code, pre, .mono { font-family: var(--font-mono); font-size: 0.85em; }
code { background: var(--bg-elev); border: 1px solid var(--border); border-radius: 3px; padding: 0.05em 0.3em; }
pre { background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius); padding: 0.75rem 0.9rem; overflow-x: auto; line-height: 1.5; }
pre code { background: none; border: 0; padding: 0; font-size: 0.8rem; }
.muted { color: var(--muted); }
.lead { font-size: 1.1rem; line-height: 1.55; color: var(--text-2); max-width: 46rem; margin: 0 0 1.25rem; }
.lead code { font-size: 0.85em; }
::selection { background: var(--accent-soft); }

/* ---------- top bar ---------- */
nav.topbar { position: sticky; top: 0; z-index: 100; background: var(--bg); border-bottom: 1px solid var(--border); }
.nav-inner { display: flex; align-items: center; gap: 1.5rem; max-width: var(--measure); margin: 0 auto; padding: 0 1rem; height: 3.25rem; }
.nav-brand { font-family: var(--font-serif); font-size: 1.3rem; font-weight: 500; color: var(--text); text-decoration: none; letter-spacing: -0.01em; display: flex; align-items: baseline; gap: 0.5rem; }
.nav-brand small { font-family: var(--font-mono); font-size: 0.65rem; color: var(--muted); letter-spacing: 0.04em; text-transform: uppercase; }
.nav-links { display: flex; gap: 0.25rem; margin-left: auto; align-items: center; }
.nav-links a { color: var(--text-2); text-decoration: none; font-size: 0.875rem; padding: 0.35rem 0.6rem; border-radius: var(--radius); }
.nav-links a:hover { color: var(--text); background: var(--bg-elev); }
.nav-links a.active { color: var(--text); box-shadow: inset 0 -2px 0 var(--accent); border-radius: 0; }
.theme-toggle { margin-left: 0.5rem; border: 1px solid var(--border-strong); background: transparent; color: var(--text-2); font: inherit; font-size: 0.75rem; font-family: var(--font-mono); padding: 0.3rem 0.55rem; border-radius: 999px; cursor: pointer; display: inline-flex; align-items: center; gap: 0.4rem; }
.theme-toggle:hover { color: var(--text); border-color: var(--text-2); }
.theme-toggle .dot { width: 0.55rem; height: 0.55rem; border-radius: 50%; background: var(--text); border: 1px solid var(--text); }
:root[data-theme="dark"] .theme-toggle .dot, :root:not([data-theme="light"]) .theme-toggle .dot { background: transparent; }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) .theme-toggle .dot { background: var(--text); } }

/* ---------- layout ---------- */
main { max-width: var(--measure); margin: 0 auto; padding: 1.75rem 1rem 4rem; }
section { margin: 2.5rem 0; }
section > h2, .panel > h2 { font-family: var(--font-sans); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); border-bottom: 1px solid var(--border); padding-bottom: 0.5rem; margin-bottom: 1rem; }
.breadcrumbs { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); margin-bottom: 1.25rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }
.breadcrumbs a { color: var(--muted); text-decoration: none; }
.breadcrumbs a:hover { color: var(--text); }
.breadcrumbs .separator { color: var(--border-strong); }

/* ---------- hero ---------- */
.hero { padding: 1.5rem 0 1.25rem; border-bottom: 1px solid var(--border); margin-bottom: 0; }
.eyebrow { font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); margin-bottom: 0.75rem; display: block; }
.hero h1 { max-width: 20ch; }
.hero .lead { max-width: 54rem; font-size: 1.15rem; }
.hero-search { display: flex; gap: 0.5rem; max-width: 34rem; }
.search-input, .filter-dropdown { font: inherit; font-size: 0.9rem; color: var(--text); background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius); padding: 0.55rem 0.8rem; }
.search-input { width: 100%; }
.search-input:focus, .filter-dropdown:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }

/* ---------- ledger stats ---------- */
.stats-bar { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 0; margin: 0 0 0.25rem; border-bottom: 1px solid var(--border); }
.stat-card { padding: 1.1rem 1rem 1rem 0; border-right: 1px solid var(--border); margin-right: 1rem; display: flex; flex-direction: column; gap: 0.15rem; }
.stat-card:last-child { border-right: 0; margin-right: 0; }
.stat-value { font-family: var(--font-serif); font-size: 2.4rem; font-weight: 500; line-height: 1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.stat-label { font-size: 0.7rem; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.08em; }
.stats-bar-severity { margin-bottom: 2rem; }
.stats-bar-severity .stat-card { flex-direction: row; align-items: baseline; gap: 0.6rem; padding: 0.8rem 1rem 0.8rem 0; }
.stats-bar-severity .stat-value { font-size: 1.5rem; }
.stats-bar-severity .stat-card::before { content: ""; width: 0.6rem; height: 0.6rem; border-radius: 50%; align-self: center; }
.sev-critical::before { background: var(--critical); } .sev-high::before { background: var(--high); } .sev-medium::before { background: var(--medium); } .sev-low::before { background: var(--low); }
.stat-critical { color: var(--critical); } .stat-high { color: var(--high); } .stat-medium { color: var(--medium); } .stat-low { color: var(--low); }
td.stat-critical, td.stat-high, td.stat-medium, td.stat-low { font-weight: 600; }

/* ---------- two-column panels ---------- */
.dashboard-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 2.5rem; margin: 1.5rem 0 2rem; }
.panel { min-width: 0; }
.panel-body { font-size: 0.9rem; }
.panel table { width: 100%; border-collapse: collapse; }

/* ---------- category bars ---------- */
.category-bar-row { display: grid; grid-template-columns: 11rem 1fr 3rem; align-items: center; gap: 0.75rem; padding: 0.3rem 0; font-size: 0.85rem; border-bottom: 1px dashed var(--border); }
.category-bar-row:last-child { border-bottom: 0; }
.category-bar-label { text-decoration: none; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.category-bar-label:hover { color: var(--link); }
.category-bar-track { height: 0.5rem; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 2px; overflow: hidden; }
.category-bar-fill { height: 100%; background: var(--accent); }
.category-bar-count { text-align: right; font-family: var(--font-mono); font-size: 0.78rem; color: var(--muted); font-variant-numeric: tabular-nums; }

/* ---------- badges ---------- */
.badge { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.68rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; padding: 0.12rem 0.5rem; border-radius: 999px; line-height: 1.5; white-space: nowrap; border: 1px solid transparent; text-decoration: none; }
.badge::before { content: ""; width: 0.42rem; height: 0.42rem; border-radius: 50%; background: currentColor; }
.badge-critical { color: var(--critical); background: var(--critical-soft); }
.badge-high { color: var(--high); background: var(--high-soft); }
.badge-medium { color: var(--medium); background: var(--medium-soft); }
.badge-low { color: var(--low); background: var(--low-soft); }
.badge-info { color: var(--info); background: var(--info-soft); }
.badge-safe { color: var(--safe); background: var(--safe-soft); }
.badge-category { color: var(--accent-ink); background: var(--accent-soft); text-transform: none; letter-spacing: 0; font-weight: 500; font-size: 0.72rem; }
.badge-category::before { display: none; }
/* Badges that are links need a 24px tap target (WCAG 2.5.8); spans keep the compact size. */
a.badge, .badge-category { min-height: 24px; padding-top: 0.2rem; padding-bottom: 0.2rem; }
.badge-category:hover { border-color: var(--accent); }
.analyzer-pill, .tag-pill { display: inline-block; font-family: var(--font-mono); font-size: 0.66rem; padding: 0.05rem 0.4rem; border-radius: 3px; border: 1px solid var(--border-strong); color: var(--muted); }
.scan-count { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); }

/* ---------- tables ---------- */
.table-controls { display: flex; gap: 0.5rem; flex-wrap: wrap; margin: 0 0 1rem; }
.table-controls .search-input { max-width: 22rem; }
.table-wrap { overflow-x: auto; border-top: 2px solid var(--text); }
table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
th, td { text-align: left; vertical-align: top; padding: 0.5rem 0.6rem; border-bottom: 1px solid var(--border); }
th { font-size: 0.7rem; font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
td { font-variant-numeric: tabular-nums; }
tbody tr:hover { background: var(--bg-elev); }
table.sortable th { cursor: pointer; user-select: none; }
table.sortable th.sorted-asc::after { content: " \2191"; } table.sortable th.sorted-desc::after { content: " \2193"; }
table.sortable td:nth-child(n+4), table.sortable th:nth-child(n+4) { text-align: right; font-family: var(--font-mono); font-size: 0.8rem; }
table.sortable td:first-child a { text-decoration: none; font-weight: 500; }
table.sortable td:first-child a:hover { text-decoration: underline; }
tr[hidden] { display: none; }

/* ---------- risk list, note list ---------- */
.top-risks .risk-card { display: block; padding: 0.7rem 0; border-bottom: 1px solid var(--border); color: inherit; text-decoration: none; }
.top-risks .risk-card:first-child { padding-top: 0; }
.top-risks .risk-card:hover .risk-card-skill { color: var(--link); }
.risk-card-header { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.risk-card-skill { font-weight: 500; }
.risk-card-description { color: var(--muted); font-size: 0.8rem; margin: 0.2rem 0 0; }
.note-card { display: grid; grid-template-columns: 7.5rem 1fr; gap: 1.25rem; padding: 1.1rem 0; border-bottom: 1px solid var(--border); text-decoration: none; color: inherit; }
.note-card:first-of-type { border-top: 1px solid var(--border); }
.note-card-header { display: contents; }
.note-date { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); padding-top: 0.35rem; }
.note-tags { grid-column: 2; display: flex; gap: 0.35rem; flex-wrap: wrap; order: 3; margin-top: 0.4rem; }
.note-title { grid-column: 2; font-size: 1.3rem; margin: 0 0 0.25rem; }
.note-card:hover .note-title { color: var(--link); }
.note-excerpt { grid-column: 2; color: var(--text-2); font-size: 0.92rem; margin: 0; }
.note-detail-header { padding-bottom: 1.25rem; border-bottom: 1px solid var(--border); margin-bottom: 1.5rem; }
.note-detail-meta { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; font-size: 0.85rem; }

/* ---------- skill page ---------- */
.skill-header h1 { font-family: var(--font-mono); font-weight: 600; font-size: clamp(1.5rem, 1.2rem + 1.4vw, 2.1rem); letter-spacing: -0.01em; overflow-wrap: anywhere; }
.verdict-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.7rem; margin: 0.5rem 0 1rem; font-size: 0.85rem; }
.verdict-strip .muted { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em; }
.copies-note { font-size: 0.85rem; color: var(--muted); margin: -0.5rem 0 1.25rem; max-width: 60rem; }
.assessment { border-left: 2px solid var(--accent); padding: 0.25rem 0 0.25rem 1.1rem; margin: 0 0 1.5rem; max-width: 60rem; }
.assessment p { font-family: var(--font-serif); font-size: 1.1rem; line-height: 1.5; color: var(--text); }
.assessment cite { display: block; font-style: normal; font-family: var(--font-mono); font-size: 0.7rem; color: var(--muted); margin-top: 0.4rem; }
.metadata-grid { display: flex; flex-wrap: wrap; gap: 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); margin: 0 0 1.5rem; }
.metadata-item { padding: 0.7rem 1.25rem 0.7rem 0; margin-right: 1.25rem; border-right: 1px solid var(--border); }
.metadata-item:last-child { border-right: 0; }
.metadata-label { display: block; color: var(--muted); font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.08em; }
.metadata-value { font-family: var(--font-mono); font-weight: 600; font-size: 1rem; }
.package-description { font-size: 1.05rem; max-width: 70ch; }
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0; border-top: 1px solid var(--border); margin: 1rem 0; }
.facts > div { padding: 0.6rem 1rem 0.6rem 0; border-bottom: 1px solid var(--border); }
.facts dt { color: var(--muted); font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 0.15rem; }
.facts dd { margin: 0; font-size: 0.92rem; }
.facts dd code, .host-list code { font-size: 0.8rem; }
.facts > div.wide { grid-column: 1 / -1; }
.package-outline { font-size: 0.9rem; max-width: 80ch; }
.package-contents h3 { font-family: var(--font-mono); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin: 1.5rem 0 0.5rem; }
.file-list summary { cursor: pointer; font-size: 0.92rem; padding: 0.5rem 0; }
table.files td.num, table.files th.num { text-align: right; font-family: var(--font-mono); font-size: 0.8rem; }
table.files td code { font-size: 0.8rem; }
.host-list { line-height: 1.9; }
.host-list code { display: inline-block; padding: 0 0.4rem; border: 1px solid var(--border); border-radius: 3px; }
.small { font-size: 0.82rem; }
.findings-list { border-top: 1px solid var(--border); }
.finding-card { border-bottom: 1px solid var(--border); }
.finding-header { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; align-items: center; gap: 0.75rem; padding: 0.7rem 0.25rem; cursor: pointer; list-style: none; }
.finding-header::-webkit-details-marker { display: none; }
.finding-header .badge { justify-self: start; }
.finding-title { font-weight: 500; font-size: 0.92rem; min-width: 0; }
.finding-header .badge-category, .finding-header .analyzer-pill { justify-self: end; }
.finding-header .badge-category { font-size: 0.68rem; max-width: 12rem; overflow: hidden; text-overflow: ellipsis; display: inline-block; }
.finding-header:hover { background: var(--bg-elev); }
.finding-body { padding: 0.25rem 0 1rem 0.25rem; }
.finding-description { font-size: 0.9rem; line-height: 1.6; margin: 0.5rem 0; max-width: 60rem; }
.finding-file { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); margin: 0.4rem 0; }
.finding-remediation { font-size: 0.85rem; margin-top: 0.75rem; padding: 0.6rem 0.9rem; border-left: 2px solid var(--safe); background: var(--safe-soft); max-width: 60rem; }
.no-findings { color: var(--muted); }
.checked ul, .sources ul, .related-list, .content-page ul { padding-left: 1.25rem; }
.checked li, .sources li { margin-bottom: 0.35rem; font-size: 0.92rem; }
.scan-delta { font-family: var(--font-mono); font-size: 0.8rem; }
.scan-delta-regress { color: var(--critical); } .scan-delta-improve { color: var(--safe); } .scan-delta-same { color: var(--muted); }
.sources img { vertical-align: middle; margin-left: 0.5rem; }
ul.plain, ol.plain { list-style: none; padding: 0; }
ul.plain li, ol.plain li { padding: 0.3rem 0; border-bottom: 1px dashed var(--border); }
.example { margin-bottom: 1.25rem; }
.example > p { margin-bottom: 0.25rem; font-size: 0.9rem; }

/* ---------- long-form content ---------- */
.content-page, article { max-width: 46rem; }
.content-page h1, article h1 { font-size: clamp(1.9rem, 1.3rem + 2vw, 2.6rem); }
.section-nav ol { display: flex; flex-wrap: wrap; gap: 0.25rem 1rem; list-style: none; padding: 0.5rem 0; margin: 0 0 1.5rem; font-size: 0.82rem; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.note-body { font-size: 1.02rem; line-height: 1.7; }
.note-body h2 { font-size: 1.45rem; margin: 2rem 0 0.6rem; }
.note-body h3 { font-size: 1.15rem; margin: 1.4rem 0 0.4rem; }
.note-body p, .note-body ul, .note-body ol { margin-bottom: 1rem; }
.note-body ul, .note-body ol { padding-left: 1.4rem; }
.note-body li { margin-bottom: 0.3rem; }
.note-body table { font-size: 0.85rem; margin: 1rem 0 1.5rem; border-top: 2px solid var(--text); }
.note-body blockquote { border-left: 2px solid var(--border-strong); padding-left: 1rem; color: var(--text-2); margin: 1rem 0; font-family: var(--font-serif); font-size: 1.1rem; }
.note-body pre { margin: 0 0 1rem; font-size: 0.8rem; }
.about-blurb p { max-width: 46rem; }

/* ---------- footer ---------- */
footer { border-top: 1px solid var(--border); margin-top: 2rem; }
.footer-inner { max-width: var(--measure); margin: 0 auto; padding: 1.25rem 1rem 2rem; display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; font-family: var(--font-mono); font-size: 0.72rem; color: var(--muted); }
.footer-item a { color: var(--text-2); text-decoration: none; }
.footer-item a:hover { color: var(--link); text-decoration: underline; }

/* ---------- a11y, motion, responsive ---------- */
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }
@media (max-width: 760px) {
  .nav-inner { gap: 0.75rem; height: auto; flex-wrap: wrap; padding: 0.5rem 1rem; }
  .nav-links { margin-left: 0; flex-wrap: wrap; width: 100%; }
  .nav-brand small { display: none; }
  .dashboard-grid { grid-template-columns: 1fr; gap: 2rem; }
  .category-bar-row { grid-template-columns: 7.5rem 1fr 2.5rem; }
  .note-card { grid-template-columns: 1fr; gap: 0.25rem; }
  .note-title, .note-excerpt, .note-tags { grid-column: 1; }
  .finding-header { grid-template-columns: auto minmax(0, 1fr); row-gap: 0.35rem; }
  .finding-header .analyzer-pill { grid-column: 1; justify-self: start; }
  .finding-header .badge-category { grid-column: 2; justify-self: start; }
  .stat-card { border-right: 0; margin-right: 0; }
  .metadata-item { border-right: 0; margin-right: 0; width: 50%; }
}
