.chart-lab :focus-visible { outline: 2px solid var(--text); outline-offset: 5px; }
.chart-lab [hidden] { display: none !important; }
.chart-lab h2 { font-size: 24px; font-weight: 600; line-height: 1.28; letter-spacing: -.015em; }
.chart-stage { margin-top: var(--s-home); }
.chart-heading { border-top: 1px solid var(--border); padding-top: var(--s-grid-label); }
.chart-heading p, #chart-legend, .chart-boundary { margin-top: 18px; color: var(--text-2); }
#chart-legend, .chart-boundary { max-width: 740px; }
#chart-controls { display: flex; flex-wrap: wrap; gap: 10px; margin-top: var(--s-section); }
#chart-controls button { font: inherit; color: var(--text); background: transparent; border: 1px solid var(--border); border-radius: 24px; padding: 10px 16px; min-height: 44px; cursor: pointer; }
#chart-controls button[aria-pressed="true"] { background: var(--text); color: var(--bg); border-color: var(--text); }
#chart-status { margin-top: 18px; color: var(--text-2); min-height: 3.4em; }
#chart-timeline { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); list-style: none; margin-top: var(--s-grid-label); padding: 0; gap: 28px 14px; }
#chart-timeline > li { min-width: 0; border-top: 1px solid var(--border); padding-top: 12px; }
#chart-timeline h3 { font-size: var(--t-nav); font-weight: 500; color: var(--text-2); }
.chart-observation { border-left: 2px solid var(--text); padding-left: 9px; margin-top: 20px; overflow-wrap: anywhere; }
.chart-observation strong { display: block; font-size: var(--t-nav); font-weight: 500; line-height: 1.5; }
.chart-observation span { display: block; color: var(--text-2); font-size: 13px; line-height: 1.5; margin-top: 4px; }
.chart-observation .chart-context { color: var(--text); margin-top: 10px; }
.chart-gap { border-left: 2px dashed var(--text-2); padding-left: 9px; margin-top: 20px; font-size: var(--t-nav); color: var(--text-2); }
.chart-source { width: 100%; border-collapse: collapse; table-layout: fixed; margin-top: var(--s-section); font-size: var(--t-nav); }
.chart-source caption { text-align: left; color: var(--text-2); margin-bottom: 18px; }
.chart-source th, .chart-source td { text-align: left; vertical-align: top; padding: 12px 12px 12px 0; border-bottom: 1px solid var(--border); overflow-wrap: anywhere; }
.chart-source th { font-weight: 500; }
.chart-source td { color: var(--text-2); }
.chart-source tr[data-state="missing"] td { font-style: italic; }
.chart-reading, .chart-source-note { margin-top: var(--s-home); }
.chart-print { display: grid; grid-template-columns: 1fr 260px; gap: var(--s-section); align-items: start; padding-top: var(--s-section); border-top: 1px solid var(--border); margin-top: var(--s-home); }
.chart-print p { margin-top: 18px; color: var(--text-2); }
.chart-print img { width: 100%; height: auto; }
@media (max-width: 760px) {
  #chart-timeline { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .chart-print { grid-template-columns: 1fr; }
  .chart-print img { max-width: 300px; }
}
@media (max-width: 440px) {
  #chart-timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .chart-source { font-size: 13px; }
  .chart-source thead th:first-child { width: 30%; }
  .chart-source thead th:nth-child(2) { width: 37%; }
  .chart-source th, .chart-source td { padding-right: 6px; }
  .chart-stage, .chart-reading, .chart-source-note, .chart-print { margin-top: var(--s-checkin); }
}
@media (prefers-reduced-motion: reduce) {
  .chart-lab *, .chart-lab *::before, .chart-lab *::after { animation: none; transition: none; scroll-behavior: auto; }
}
@media print {
  @page { margin: 16mm; }
  :root { --bg: #fff; --text: #000; --text-2: #000; --border: #777; }
  html, body { background: #fff; color: #000; overflow: visible; }
  .nav, footer, #chart-controls, #chart-status, #chart-timeline, .chart-print img { display: none; }
  .editorial-main { padding: 0; }
  .chart-lab .page-title { font-size: 32px; }
  .chart-lab p, .chart-source { font-size: 11pt; }
  .chart-stage, .chart-reading, .chart-source-note, .chart-print, .editorial-copy section + section { margin-top: 24pt; }
  .chart-source tr { break-inside: avoid; }
  .chart-print { display: block; }
  h2 { break-after: avoid; }
}
