/* All-Time Athletics — minimal stylesheet.
   Aim: HN / Simon Willison restraint. Two text colours, one accent, one
   border weight. No shadows, no rounded corners, no gradients.
   Theme is driven by `data-theme` on <html>; falls back to OS preference. */

/* ---- design tokens ---------------------------------------------- */

:root,
:root[data-theme="light"] {
  --fg:        #1a1a1a;
  --fg-muted:  #707070;
  --bg:        #fdfdfc;
  --bg-soft:   #f4f3ef;   /* faint stripe / inline code background */
  --row-alt:   #f7f7f7;   /* very light neutral gray for table zebra */
  --border:    #d8d6d1;
  --accent:    #1a73e8;
  --warn:      #b87900;   /* sparingly: warning text */
  --err:       #c0392b;   /* sparingly: error text + border */
}
:root[data-theme="dark"] {
  --fg:        #ededed;
  --fg-muted:  #909090;
  --bg:        #111111;
  --bg-soft:   #1b1b1b;
  --row-alt:   #161616;
  --border:    #2f2f2f;
  --accent:    #7aa9ff;
  --warn:      #e0a04a;
  --err:       #e57363;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --fg:       #ededed;
    --fg-muted: #909090;
    --bg:       #111111;
    --bg-soft:  #1b1b1b;
    --row-alt:  #161616;
    --border:   #2f2f2f;
    --accent:   #7aa9ff;
    --warn:     #e0a04a;
    --err:      #e57363;
  }
}

/* Two type sizes for body, one for h2, one for h1 — that's it. */
:root {
  --fs-xs:  0.82rem;   /* meta, captions, tiny labels */
  --fs-sm:  0.92rem;   /* compact secondary text */
  --fs-md:  1rem;      /* body */
  --fs-lg:  1.15rem;   /* h2 */
  --fs-xl:  1.5rem;    /* h1 */

  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 1rem;
  --space-4: 1.5rem;
}

/* ---- reset + base ----------------------------------------------- */

* { box-sizing: border-box; }

html { color-scheme: light dark; }
html[data-theme="dark"]  { color-scheme: dark; }
html[data-theme="light"] { color-scheme: light; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  font-size: var(--fs-md);
  line-height: 1.55;
  color: var(--fg);
  background: var(--bg);
  max-width: 64rem;             /* slightly narrower than before, easier to read */
  margin: 0 auto;
  padding: var(--space-3);
}

a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
a:hover { text-decoration-thickness: 2px; }

code, kbd, samp {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.95em;
  background: var(--bg-soft);
  padding: 0 0.25em;
}

h1 { font-size: var(--fs-xl); margin: var(--space-3) 0 var(--space-1); font-weight: 600; }
h2 { font-size: var(--fs-lg); margin: var(--space-4) 0 var(--space-2); font-weight: 600; }

p { margin: var(--space-2) 0; }
.lede { color: var(--fg); margin: var(--space-2) 0 var(--space-3); }

.visually-hidden {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* ---- footer ---------------------------------------------------- */

footer {
  font-size: var(--fs-sm);
  color: var(--fg-muted);
  margin-top: var(--space-4);
  padding: var(--space-2) 0;
  border-top: 1px solid var(--border);
}
footer p { margin: var(--space-1) 0; }

/* ---- github corner (top-right) -------------------------------- */

.github-corner {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 20;
  line-height: 0;
  text-decoration: none;
}
.github-corner svg { display: block; width: 72px; height: 72px; }
.github-corner-bg   { fill: var(--fg); }
.github-corner-arm,
.github-corner-body { fill: var(--bg); }
.github-corner:hover .github-corner-arm {
  animation: octocat-wave 560ms ease-in-out;
  transform-origin: 130px 106px;
}
@keyframes octocat-wave {
  0%, 100% { transform: rotate(0); }
  20%, 60% { transform: rotate(-25deg); }
  40%, 80% { transform: rotate(10deg); }
}
@media (max-width: 500px) {
  .github-corner svg { width: 56px; height: 56px; }
  .github-corner:hover .github-corner-arm { animation: none; }
}

/* ---- primary nav (top of every page) -------------------------- */

.primary-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: var(--space-2) var(--space-3);
  margin: 0 0 var(--space-3);
  padding-right: 80px;            /* clear the fixed github corner */
  border-bottom: 1px solid var(--border);
}
.nav-brand {
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--fg);
  text-decoration: none;
  align-self: center;
  padding: 0.4rem 0;
  letter-spacing: -0.01em;
}
.nav-brand:hover { color: var(--accent); }
.nav-brand:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.nav-tabs {
  display: flex;
  flex-wrap: wrap;
  margin-left: auto;              /* push tabs to the right of brand */
  gap: 0;
}
.nav-tab {
  font-size: var(--fs-sm);
  padding: 0.4rem 0.85rem;
  color: var(--fg-muted);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;            /* sit on the row's bottom border */
}
.nav-tab:hover { color: var(--fg); }
.nav-tab-active {
  color: var(--fg);
  border-bottom-color: var(--fg);
  font-weight: 500;
}
.nav-tab:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}
@media (max-width: 600px) {
  .primary-nav { padding-right: 64px; }
  .nav-tabs { margin-left: 0; width: 100%; }
  .nav-tab:first-child { padding-left: 0; }
}

/* ---- single card style ----------------------------------------- */

/* Every "panel" on the site shares the same card chrome.   */
.card,
.recent-panel,
.summary-card {
  margin: var(--space-3) 0;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--border);
  background: transparent;
}
.card > h2:first-child { margin-top: 0; }

/* ---- socials --------------------------------------------------- */

.socials {
  list-style: none;
  margin: var(--space-2) 0 0;
  padding: 0;
  display: flex;
  gap: var(--space-2);
}
.socials a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--fg-muted);
  text-decoration: none;
  transition: color 120ms ease;
}
.socials a:hover { color: var(--accent); }

/* ---- download page --------------------------------------------- */

.download-table {
  border-collapse: collapse;
  margin: var(--space-3) 0;
  width: 100%;
  max-width: 720px;
}
.download-table th,
.download-table td {
  border-bottom: 1px solid var(--border);
  padding: var(--space-1) var(--space-2);
  text-align: left;
  vertical-align: top;
}
.download-table th { font-weight: 600; }
.download-table td.num { white-space: nowrap; color: var(--fg-muted); }

/* ---- meta tags ------------------------------------------------- */

.meta-tag {
  font-size: var(--fs-xs);
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fg-muted);
  margin-left: var(--space-2);
  vertical-align: middle;
}
.meta-tag::before { content: "· "; opacity: 0.6; }
.meta-tag:first-of-type { margin-left: var(--space-3); }

/* ---- buttons --------------------------------------------------- */

.btn {
  font: inherit;
  font-size: var(--fs-sm);
  padding: 0.25rem 0.7rem;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--fg);
  cursor: pointer;
  border-radius: 0;
  text-decoration: none;
  display: inline-block;
}
.btn:hover { border-color: var(--fg-muted); }
.btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.btn-on,
.legality-tabs .tab[aria-pressed="true"] {
  background: var(--fg);
  color: var(--bg);
  border-color: var(--fg);
}
.btn-sm  { font-size: var(--fs-xs); padding: 0.15rem 0.5rem; }

/* Native <select>s wearing the .btn class — strip browser chrome and draw
   a custom caret so they line up with adjacent <button class="btn"> elements. */
select.btn {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 1.8rem;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 7' fill='none' stroke='%23707070' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='1,1.5 6,5.5 11,1.5'/></svg>");
  background-repeat: no-repeat;
  background-position: right 0.55rem center;
  background-size: 0.6rem;
  line-height: 1.45;
}
select.btn::-ms-expand { display: none; }

/* ---- index: filter input + event grid -------------------------- */

#filter,
#athlete-filter {
  width: 100%;
  padding: var(--space-2);
  font: inherit;
  margin-bottom: var(--space-3);
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--fg);
  border-radius: 0;
}
#filter:focus,
#athlete-filter:focus { outline: 2px solid var(--accent); outline-offset: -1px; border-color: var(--accent); }

.event-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--space-3);
}
.sex-block h2 { margin-top: 0; }

.legality-tabs { margin: var(--space-2) 0; display: flex; gap: var(--space-1); }
.legality-tabs .tab {
  font: inherit;
  font-size: var(--fs-sm);
  padding: 0.2rem 0.6rem;
  cursor: pointer;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 0;
  color: var(--fg-muted);
}

.event-list { list-style: none; padding: 0; margin: 0; }
.event-list li {
  display: flex;
  justify-content: space-between;
  padding: 0.15rem 0;
  font-size: var(--fs-sm);
}
.event-list li[hidden] { display: none; }
.row-count { font-variant-numeric: tabular-nums; color: var(--fg-muted); }

/* ---- index: latest-additions panel ----------------------------- */

.recent-panel h2 { margin-top: 0; font-size: var(--fs-md); }
.recent-meta { margin: var(--space-1) 0 var(--space-2); color: var(--fg-muted); font-size: var(--fs-sm); }
.recent-list { list-style: none; padding: 0; margin: 0; }
.recent-list li {
  padding: 0.25rem 0;
  border-top: 1px solid var(--border);
  font-size: var(--fs-sm);
  display: grid;
  grid-template-columns: 6rem 1fr auto;
  gap: var(--space-1) var(--space-2);
  align-items: baseline;
}
.recent-list li:first-child { border-top: none; }
.recent-date { font-variant-numeric: tabular-nums; color: var(--fg-muted); font-size: var(--fs-xs); }
.recent-venue {
  font-weight: 500;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.recent-count { font-size: var(--fs-xs); color: var(--fg-muted); white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ---- analytics page: stats panel ------------------------------- */

.summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: var(--space-3);
}
.summary-cell { min-width: 0; }
.summary-label {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fg-muted);
}
.summary-value {
  font-size: var(--fs-xl);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  margin-top: 0.1rem;
}
.summary-unit { font-size: var(--fs-sm); font-weight: 400; color: var(--fg-muted); }
.summary-meta {
  font-size: var(--fs-sm);
  color: var(--fg-muted);
  margin-top: 0.1rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ---- chart card (collapsible) ---------------------------------- */

.chart-card { padding: 0; }
.chart-card > summary {
  list-style: none;
  cursor: pointer;
  padding: var(--space-2) var(--space-3);
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  user-select: none;
}
.chart-card > summary::-webkit-details-marker { display: none; }
.chart-card > summary::before {
  content: "▾";
  font-size: 0.85em;
  color: var(--fg-muted);
  width: 1ch;
}
.chart-card:not([open]) > summary::before { content: "▸"; }
.chart-card > summary:hover .chart-title { text-decoration: underline; }
.chart-title { font-weight: 600; }
.chart-meta { color: var(--fg-muted); font-size: var(--fs-sm); }
.chart-body { padding: var(--space-2) var(--space-3) var(--space-3); position: relative; }
.chart-note { margin: var(--space-2) 0 0; font-size: var(--fs-sm); color: var(--fg-muted); }
.chart-note em { font-style: italic; color: var(--fg); }

.chart-mode-toggle {
  display: flex;
  gap: var(--space-1);
  margin-bottom: var(--space-2);
}

/* ---- analytics: horizontal-bar lists (top countries / prolific) ---- */

.country-bars,
.athlete-bars {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.3rem;
  max-width: 36rem;
}
.country-bars li,
.athlete-bars li {
  display: grid;
  gap: var(--space-2);
  align-items: center;
  font-size: var(--fs-sm);
}
.country-bars li { grid-template-columns: 5.5rem 1fr 2.5rem; }
.athlete-bars li { grid-template-columns: 12rem  1fr 2.5rem; }

.country-cell { font-variant-numeric: tabular-nums; }
.athlete-cell {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.country-bar {
  display: block;
  height: 0.7rem;
  background: var(--bg-soft);
  border: 1px solid var(--border);
}
.country-bar-fill {
  display: block;
  height: 100%;
  background: var(--accent);
  opacity: 0.85;
}
.country-count { font-variant-numeric: tabular-nums; text-align: right; color: var(--fg-muted); }

/* ---- analytics: decade leaders --------------------------------- */

.decade-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.25rem;
}
.decade-list li {
  display: grid;
  grid-template-columns: 4rem 5rem 1fr auto;
  gap: var(--space-2);
  align-items: baseline;
  font-size: var(--fs-sm);
  padding: 0.2rem 0;
  border-top: 1px solid var(--border);
}
.decade-list li:first-child { border-top: none; }
.decade-label {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--fg-muted);
}
.decade-mark {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  text-align: right;
}
.decade-holder {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.decade-date {
  font-variant-numeric: tabular-nums;
  color: var(--fg-muted);
  font-size: var(--fs-xs);
}

/* ---- WR chart svg --------------------------------------------- */

.wr-chart {
  display: block;
  width: 100%;
  max-width: 60rem;
  height: auto;
  margin-inline: auto;
}
.wr-chart .grid {
  stroke: var(--border);
  stroke-width: 1;
  stroke-dasharray: 2 3;
  opacity: 0.7;
}
.wr-chart .grid-axis { stroke: var(--border); stroke-dasharray: none; opacity: 1; }
.wr-chart .ax {
  font-family: inherit;
  font-size: 11px;
  fill: var(--fg-muted);
}
.wr-chart .ax-grid {
  font-family: inherit;
  font-size: 10px;
  fill: var(--fg-muted);
  opacity: 0.6;
}
.wr-chart .bar { fill: var(--accent); opacity: 0.75; }
.wr-chart .bar:hover { opacity: 1; }

/* ---- interactive athlete chart controls ----------------------- */
.chart-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
  margin-bottom: var(--space-2);
}
/* ---- table toolbar (WR-only + section dropdown) --------------- */

.table-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: var(--space-2);
  margin: var(--space-3) 0 var(--space-2);
  position: relative;
}

.dropdown { position: relative; }
.dropdown > summary {
  list-style: none;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.dropdown > summary::-webkit-details-marker { display: none; }
.dropdown > summary::after {
  content: "▾";
  font-size: 0.75em;
  color: var(--fg-muted);
}
.dropdown:not([open]) > summary::after { content: "▸"; }
.dropdown-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 20;
  min-width: 20rem;
  max-width: 30rem;
  max-height: 60vh;
  overflow: auto;
  padding: var(--space-2);
  background: var(--bg);
  border: 1px solid var(--border);
}
.dropdown-actions {
  display: flex;
  gap: var(--space-1);
  padding-bottom: var(--space-1);
  margin-bottom: var(--space-1);
  border-bottom: 1px solid var(--border);
}

.section-list { list-style: none; padding: 0; margin: 0; }
.section-list li { padding: 0.15rem 0; }
.section-list label {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: var(--space-2);
  align-items: center;
  cursor: pointer;
  padding: 0.2rem 0.4rem;
  font-size: var(--fs-sm);
}
.section-list label:hover { background: var(--bg-soft); }
.section-list input[type="checkbox"] { margin: 0; accent-color: var(--accent); }
.section-name {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 18rem;
}
.section-count { font-variant-numeric: tabular-nums; color: var(--fg-muted); font-size: var(--fs-xs); }

#visible-count { font-variant-numeric: tabular-nums; font-weight: 600; }

/* ---- SQL playground ------------------------------------------- */

.sql-toolbar {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-2) 0;
  flex-wrap: wrap;
}
.sql-examples-label {
  font-size: var(--fs-sm);
  color: var(--fg-muted);
}
#sql-examples { max-width: 22rem; }
.sql-status {
  font-size: var(--fs-sm);
  color: var(--fg-muted);
  margin-left: auto;
}
.sql-status-ok   { color: var(--fg); }
.sql-status-warn { color: var(--warn); }
.sql-status-err  { color: var(--err); }

#sql-input {
  width: 100%;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: var(--fs-sm);
  line-height: 1.45;
  padding: var(--space-2) 0.7rem;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--fg);
  border-radius: 0;
  resize: vertical;
  white-space: pre;
  tab-size: 2;
}
#sql-input:focus { outline: 2px solid var(--accent); outline-offset: -1px; border-color: var(--accent); }

.sql-schema { font-size: var(--fs-sm); }
.sql-schema p { margin: var(--space-1) 0; }
.sql-cols { padding-left: 1.25rem; }
.sql-cols li { margin: 0.1rem 0; }

#sql-result { margin: var(--space-3) 0; }
.sql-table-wrap {
  border: 1px solid var(--border);
  overflow: auto;
  max-height: 70vh;
  background: var(--bg);
}
.sql-table {
  border-collapse: collapse;
  font-size: var(--fs-sm);
  width: 100%;
}
.sql-table th, .sql-table td {
  padding: 0.3rem 0.6rem;
  border-bottom: 1px solid var(--border);
  text-align: left;
  white-space: nowrap;
}
.sql-table thead th {
  position: sticky;
  top: 0;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  font-weight: 600;
  letter-spacing: 0.01em;
}
.sql-table tbody tr:nth-child(even) { background: var(--row-alt); }
.sql-table tbody tr:hover { background: var(--bg-soft); }
.sql-null { color: var(--fg-muted); font-style: italic; }
.sql-rowcount {
  margin: 0;
  padding: var(--space-1) 0.6rem;
  font-size: var(--fs-xs);
  color: var(--fg-muted);
  background: var(--bg);
  border-top: 1px solid var(--border);
}
.sql-empty {
  margin: 0;
  padding: var(--space-2);
  color: var(--fg-muted);
  border: 1px solid var(--border);
}
.sql-error {
  margin: 0;
  padding: var(--space-2) 0.8rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: var(--fs-sm);
  color: var(--err);
  background: var(--bg-soft);
  border: 1px solid var(--err);
  white-space: pre-wrap;
  word-break: break-word;
}

/* ---- CodeMirror SQL editor (sql.html) ----------------------------- */
/* Three-colour palette: keywords pick up the site accent, comments fade to
   muted, everything else is body text. Keeps highlighting useful but
   doesn't introduce new colours the rest of the site doesn't already have. */
.CodeMirror {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: var(--fs-sm);
  line-height: 1.45;
  height: auto;
  min-height: 14em;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--fg);
}
.CodeMirror-gutters {
  background: var(--bg);
  border-right: 1px solid var(--border);
}
.CodeMirror-linenumber { color: var(--fg-muted); }
.CodeMirror-cursor { border-left-color: var(--fg); }
.CodeMirror-focused { outline: 2px solid var(--accent); outline-offset: -1px; }
.CodeMirror-selected { background: var(--bg-soft) !important; }
.CodeMirror-focused .CodeMirror-selected {
  background: rgba(125, 125, 125, 0.35) !important;
}
.cm-s-default .cm-keyword,
.cm-s-default .cm-builtin,
.cm-s-default .cm-atom         { color: var(--accent); font-weight: 600; }
.cm-s-default .cm-comment      { color: var(--fg-muted); font-style: italic; }
.cm-s-default .cm-operator,
.cm-s-default .cm-punctuation  { color: var(--fg-muted); }
.cm-s-default .cm-string,
.cm-s-default .cm-string-2,
.cm-s-default .cm-number,
.cm-s-default .cm-variable,
.cm-s-default .cm-variable-2   { color: var(--fg); }

/* ---- LiteTable -------------------------------------------------- */

#table { margin: var(--space-3) 0; }

.lt-host { font-size: var(--fs-sm); color: var(--fg); }
.lt-wrap {
  background: var(--bg);
  border: 1px solid var(--border);
  overflow-x: auto;
}
.lt-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}
.lt-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--bg);
  color: var(--fg);
  font-weight: 600;
  letter-spacing: 0.01em;
  text-align: left;
  padding: var(--space-1) var(--space-2);
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.lt-table thead tr.lt-filters th { padding-top: 0; padding-bottom: var(--space-1); }
.lt-table th.lt-sortable { cursor: pointer; user-select: none; }
.lt-table th.lt-sortable:hover { background: var(--bg-soft); }
.lt-th-arrow {
  display: inline-block;
  width: 0.6em;
  margin-left: 0.25em;
  color: var(--fg-muted);
  opacity: 0.55;
}
.lt-table th.lt-sort-asc  .lt-th-arrow::before { content: "▲"; color: var(--accent); }
.lt-table th.lt-sort-desc .lt-th-arrow::before { content: "▼"; color: var(--accent); }
.lt-table th.lt-sort-asc  .lt-th-arrow,
.lt-table th.lt-sort-desc .lt-th-arrow { opacity: 1; }
.lt-filter {
  width: 100%;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--fg);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 2px 6px;
  font: inherit;
  font-size: 0.85em;
}
.lt-filter:focus {
  outline: none;
  border-color: var(--fg);
}
.lt-table tbody tr {
  background: var(--bg);
}
.lt-table tbody tr:nth-child(even) { background: var(--row-alt); }
.lt-table tbody tr:hover { background: var(--bg-soft); }
.lt-table tbody tr.lt-selected,
.lt-table tbody tr.lt-selected:hover { background: var(--bg-soft); box-shadow: inset 3px 0 0 var(--accent); }
.lt-table tbody td {
  padding: 0.4rem var(--space-2);
  border-bottom: 1px solid var(--border);
  color: var(--fg);
}
.lt-table tbody td.lt-num { text-align: right; font-variant-numeric: tabular-nums; }
.lt-table a { color: var(--accent); }

.lt-pager {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) 0;
  flex-wrap: wrap;
}
.lt-pager:empty { padding: 0; }
.lt-page-info { color: var(--fg-muted); font-size: var(--fs-sm); }


/* uPlot --------------------------------------------------------------- */
.uplot, .u-wrap { font: inherit; color: var(--fg); }
.uplot .u-legend { color: var(--fg); font-size: 0.85rem; }
.uplot .u-legend .u-marker { border-radius: 2px; }
.uplot .u-axis { color: var(--fg-muted); }
.uplot-tooltip {
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
  background: var(--bg);
  color: var(--fg);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 6px 8px;
  font-size: 0.8rem;
  line-height: 1.35;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  white-space: nowrap;
  z-index: 5;
}
.uplot-tooltip b { font-weight: 600; }
.uplot-tooltip .ut-muted { color: var(--fg-muted); }
