/*! OSCharts 0.1.0 | Apache-2.0 | https://oscharts.com */
/* OSCharts stylesheet. One file, no inline styles needed, safe under a strict
   Content-Security-Policy. Light and dark themes, Windows high contrast
   (forced colors), print, and the reader's own text and motion settings. */

.osc {
  --osc-surface: #fcfcfb;
  --osc-ink: #0b0b0b;
  --osc-ink-2: #52514e;
  --osc-ink-3: #2b2a28;
  --osc-grid: #e1e0d9;
  --osc-baseline: #8f8e88;
  --osc-border: rgba(11, 11, 11, 0.12);
  --osc-focus: #1c5cab;
  --osc-tooltip-bg: #0b0b0b;
  --osc-tooltip-ink: #ffffff;
  --osc-c0: #2a78d6; --osc-c1: #c8501f; --osc-c2: #088a70; --osc-c3: #a06600;
  --osc-c4: #c2477a; --osc-c5: #007a00; --osc-c6: #6250d6; --osc-c7: #d23b3a;
  --osc-tex-ink: rgba(255, 255, 255, 0.62);
  color-scheme: light;
  container-type: inline-size;
  margin: 0 0 2rem;
  padding: 1rem;
  max-width: 100%;
  box-sizing: border-box;
  background: var(--osc-surface);
  color: var(--osc-ink);
  border: 1px solid var(--osc-border);
  border-radius: 8px;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 1rem;
  line-height: 1.45;
}
.osc *, .osc *::before, .osc *::after { box-sizing: border-box; }

@media (prefers-color-scheme: dark) {
  :root:where(:not([data-theme="light"])) .osc { --osc-dark: 1; }
  :root:where(:not([data-theme="light"])) .osc,
  :root:where(:not([data-theme="light"])) .osc-spark {
    --osc-surface: #1a1a19; --osc-ink: #f0efec; --osc-ink-2: #c3c2b7; --osc-ink-3: #e4e3dd;
    --osc-grid: #2c2c2a; --osc-baseline: #6f6e69; --osc-border: rgba(255, 255, 255, 0.14);
    --osc-focus: #86b6ef; --osc-tooltip-bg: #f0efec; --osc-tooltip-ink: #0b0b0b;
    --osc-c0: #3987e5; --osc-c1: #d95926; --osc-c2: #199e70; --osc-c3: #c98500;
    --osc-c4: #d55181; --osc-c5: #008300; --osc-c6: #9085e9; --osc-c7: #e66767;
    --osc-tex-ink: rgba(0, 0, 0, 0.55);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] .osc, [data-theme="dark"] .osc, .osc[data-theme="dark"],
:root[data-theme="dark"] .osc-spark, [data-theme="dark"] .osc-spark {
  --osc-surface: #1a1a19; --osc-ink: #f0efec; --osc-ink-2: #c3c2b7; --osc-ink-3: #e4e3dd;
  --osc-grid: #2c2c2a; --osc-baseline: #6f6e69; --osc-border: rgba(255, 255, 255, 0.14);
  --osc-focus: #86b6ef; --osc-tooltip-bg: #f0efec; --osc-tooltip-ink: #0b0b0b;
  --osc-c0: #3987e5; --osc-c1: #d95926; --osc-c2: #199e70; --osc-c3: #c98500;
  --osc-c4: #d55181; --osc-c5: #008300; --osc-c6: #9085e9; --osc-c7: #e66767;
  --osc-tex-ink: rgba(0, 0, 0, 0.55);
  color-scheme: dark;
}

/* Words */
.osc-caption { display: block; margin: 0 0 0.35rem; }
.osc-title { display: block; font-size: 1.125rem; font-weight: 650; line-height: 1.3; }
.osc-subtitle { display: block; color: var(--osc-ink-2); font-size: 0.9375rem; }
.osc-summary { margin: 0 0 0.75rem; color: var(--osc-ink-2); font-size: 0.9375rem; max-width: 72ch; }
.osc-description, .osc-note { margin: 0 0 0.75rem; font-size: 0.9375rem; max-width: 72ch; }
.osc-source { margin: 0.5rem 0 0; color: var(--osc-ink-2); font-size: 0.875rem; }
.osc-source a, .osc a { color: inherit; }
.osc a { overflow-wrap: anywhere; }

/* Legend: real text, wraps like text */
.osc-legend { display: flex; flex-wrap: wrap; gap: 0.25rem 1rem; list-style: none; margin: 0 0 0.5rem; padding: 0; font-size: 0.9375rem; }
.osc-legend-item { display: inline-flex; align-items: center; gap: 0.4rem; }
.osc-key { flex: none; overflow: visible; }
.osc-legend button { display: inline-flex; align-items: center; gap: 0.4rem; min-height: 2.75rem; padding: 0 0.6rem; margin-left: -0.6rem; border: 0; border-radius: 6px; background: transparent; color: inherit; font: inherit; cursor: pointer; }
.osc-legend button[aria-pressed="false"] .osc-legend-name { text-decoration: line-through; color: var(--osc-ink-2); }
.osc-legend button[aria-pressed="false"] .osc-key { opacity: 0.35; }
.osc-legend button:hover { background: var(--osc-border); }

/* The drawing */
.osc-plot { position: relative; }
.osc-svg { display: block; width: 100%; height: auto; overflow: visible; }
.osc-variant.osc-narrow { display: none; }
@container (max-width: 520px) {
  .osc-has-narrow .osc-variant.osc-wide { display: none; }
  .osc-has-narrow .osc-variant.osc-narrow { display: block; }
}
.osc-bg { fill: var(--osc-surface); }
.osc-grid { stroke: var(--osc-grid); }
.osc-baseline { stroke: var(--osc-baseline); }
.osc-tick { fill: var(--osc-ink-2); }
.osc-value, .osc-direct, .osc-axis-title { fill: var(--osc-ink-3); }
.osc-svg text { font-variant-numeric: tabular-nums; }
.osc-s0 { fill: var(--osc-c0); } .osc-s1 { fill: var(--osc-c1); } .osc-s2 { fill: var(--osc-c2); } .osc-s3 { fill: var(--osc-c3); }
.osc-s4 { fill: var(--osc-c4); } .osc-s5 { fill: var(--osc-c5); } .osc-s6 { fill: var(--osc-c6); } .osc-s7 { fill: var(--osc-c7); }
.osc-ls0 { stroke: var(--osc-c0); } .osc-ls1 { stroke: var(--osc-c1); } .osc-ls2 { stroke: var(--osc-c2); } .osc-ls3 { stroke: var(--osc-c3); }
.osc-ls4 { stroke: var(--osc-c4); } .osc-ls5 { stroke: var(--osc-c5); } .osc-ls6 { stroke: var(--osc-c6); } .osc-ls7 { stroke: var(--osc-c7); }
.osc-wf-up { fill: var(--osc-c0); } .osc-wf-down { fill: var(--osc-c7); } .osc-wf-total { fill: var(--osc-ink-2); }
.osc-slice { stroke: var(--osc-surface); }
.osc-bubble { stroke: var(--osc-surface); }
.osc-trend, .osc-whisker { stroke: var(--osc-ink-2); }
.osc-median, .osc-target { stroke: var(--osc-ink); }
.osc-boxbody { stroke: var(--osc-c0); }
.osc-wf-up-s { stroke: var(--osc-c0); } .osc-wf-down-s { stroke: var(--osc-c7); }
.osc-range0 { fill: var(--osc-grid); } .osc-range1 { fill: color-mix(in srgb, var(--osc-grid) 60%, var(--osc-baseline)); } .osc-range2 { fill: color-mix(in srgb, var(--osc-grid) 25%, var(--osc-baseline)); }
.osc-leader, .osc-connector { stroke: var(--osc-baseline); }
.osc-marker { stroke: var(--osc-surface); stroke-width: 2px; paint-order: stroke; }
.osc-area { fill-opacity: 0.12; }
.osc-area.osc-stacked { fill-opacity: 0.55; }
.osc-dashed { stroke-dasharray: 6 4; }
.osc-tex-ink { fill: var(--osc-tex-ink); stroke: var(--osc-tex-ink); }
.osc-tex { pointer-events: none; }
.osc-hit { fill: transparent; }

/* Patterns on: by choice, in print and in forced colors */
.osc.osc-patterns .osc-tex { visibility: visible; }
.osc.osc-patterns .osc-line:not(.osc-ls0) { stroke-dasharray: 7 3; }
.osc.osc-patterns .osc-ls2, .osc.osc-patterns .osc-ls5 { stroke-dasharray: 2 3; }

/* Data table */
.osc-tablewrap { overflow: auto; max-height: 28rem; margin-top: 0.75rem; border: 1px solid var(--osc-border); border-radius: 6px; }
.osc-tablewrap:focus-visible { outline: 3px solid var(--osc-focus); outline-offset: 2px; }
.osc-table { border-collapse: collapse; width: max-content; min-width: 100%; font-size: 0.9375rem; }
.osc-table caption { text-align: left; padding: 0.5rem 0.75rem; font-weight: 600; }
.osc-table th, .osc-table td { padding: 0.4rem 0.75rem; border-top: 1px solid var(--osc-border); text-align: left; vertical-align: top; max-width: 18rem; overflow-wrap: normal; word-break: normal; }
.osc-table caption { max-width: calc(100vw - 4rem); }
.osc-table thead th { position: sticky; top: 0; background: var(--osc-surface); border-top: 0; border-bottom: 2px solid var(--osc-baseline); }
.osc-table .osc-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.osc-table tbody th { font-weight: 500; }
.osc.osc-table-hidden .osc-tablewrap { display: none; }

/* Controls added by JavaScript */
.osc-controls { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.75rem; }
.osc-controls button { min-height: 2.75rem; padding: 0 0.9rem; border: 1px solid var(--osc-baseline); border-radius: 6px; background: var(--osc-surface); color: var(--osc-ink); font: inherit; font-size: 0.9375rem; cursor: pointer; }
.osc-controls button:hover { border-color: var(--osc-ink); }
.osc-controls button[aria-pressed="true"], .osc-controls button[aria-expanded="true"] { background: var(--osc-ink); color: var(--osc-surface); border-color: var(--osc-ink); }
.osc button:focus-visible { outline: 3px solid var(--osc-focus); outline-offset: 2px; }
.osc-explore { position: relative; border-radius: 6px; }
.osc-explore:focus { outline: none; }
.osc-explore:focus-visible { outline: 3px solid var(--osc-focus); outline-offset: 4px; }
.osc-help { margin: 0.5rem 0 0; font-size: 0.875rem; color: var(--osc-ink-2); }
.osc-ring { fill: none; stroke: var(--osc-ink); stroke-width: 2.5px; }
.osc-ring-halo { fill: none; stroke: var(--osc-surface); stroke-width: 6px; }
.osc-tooltip { position: absolute; z-index: 2; max-width: min(18rem, 90%); padding: 0.4rem 0.6rem; border-radius: 6px; background: var(--osc-tooltip-bg); color: var(--osc-tooltip-ink); font-size: 0.875rem; line-height: 1.35; }
.osc-tooltip[hidden] { display: none; }
.osc-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }

/* Sparklines sit in a line of text */
.osc-spark { display: inline-block; vertical-align: -0.2em; }
.osc-spark .osc-svg { display: inline-block; width: auto; height: 1.2em; }

/* Windows high contrast and other forced-color modes: system colors only,
   textures carry identity, nothing relies on hue. */
@media (forced-colors: active) {
  .osc { border-color: CanvasText; }
  .osc .osc-svg { forced-color-adjust: none; }
  .osc .osc-bg { fill: Canvas; }
  .osc .osc-mark:not(.osc-cell):not(.osc-funnel), .osc .osc-marker, .osc .osc-area { fill: Canvas; stroke: CanvasText; stroke-width: 1px; fill-opacity: 1; }
  .osc .osc-cell, .osc .osc-funnel { stroke: CanvasText; stroke-width: 1px; }
  .osc .osc-area { fill: none; }
  .osc .osc-tex { visibility: visible; }
  .osc .osc-tex-ink { fill: CanvasText; stroke: CanvasText; }
  .osc .osc-line, .osc .osc-wick, .osc .osc-trend, .osc .osc-whisker, .osc .osc-median, .osc .osc-target, .osc .osc-leader, .osc .osc-connector { stroke: CanvasText; }
  .osc .osc-cell, .osc .osc-keystep, .osc .osc-range0, .osc .osc-range1, .osc .osc-range2 { forced-color-adjust: none; }
  .osc .osc-line:not(.osc-ls0) { stroke-dasharray: 7 3; }
  .osc .osc-grid { stroke: GrayText; }
  .osc .osc-baseline { stroke: CanvasText; }
  .osc .osc-svg text:not(.osc-inlabel):not(.osc-inlabel-dark) { fill: CanvasText; }
  .osc .osc-ring { stroke: Highlight; stroke-width: 3px; }
  .osc .osc-ring-halo { stroke: Canvas; }
  .osc-tooltip { background: Canvas; color: CanvasText; border: 1px solid CanvasText; }
  .osc-controls button[aria-pressed="true"], .osc-controls button[aria-expanded="true"] { background: Highlight; color: HighlightText; }
}

@media (prefers-reduced-motion: reduce) {
  .osc *, .osc *::before, .osc *::after { transition: none !important; animation: none !important; }
}

/* Print: black on white, textures on, the data table always printed. */
@media print {
  .osc { break-inside: avoid; border-color: #000; background: #fff; color: #000; --osc-surface: #fff; --osc-ink: #000; --osc-ink-2: #222; --osc-ink-3: #000; --osc-grid: #bbb; --osc-baseline: #000; --osc-tex-ink: rgba(0, 0, 0, 0.75); }
  .osc .osc-svg { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .osc .osc-tex { visibility: visible; }
  .osc .osc-line:not(.osc-ls0) { stroke-dasharray: 7 3; }
  .osc .osc-controls, .osc .osc-tooltip, .osc .osc-help, .osc .osc-ring, .osc .osc-ring-halo { display: none !important; }
  .osc.osc-table-hidden .osc-tablewrap { display: block; }
  .osc-tablewrap { max-height: none; overflow: visible; border: 0; }
  .osc-table thead th { position: static; }
  .osc-table { break-inside: auto; }
  .osc-table tr { break-inside: avoid; }
}
