/* Horizontal charts keep the same data readable at every screen width. */
.market-charts { display: grid; gap: 24px; margin-top: 22px; }
.market-chart { --accent: #ff576f; --tint: #ffe5e9; padding: 20px; border-top: 10px solid var(--accent); }
.market-chart.mileage-chart { --accent: #27c7a7; --tint: #ddf9ee; }
.market-chart.stock-chart { --accent: #ffd117; --tint: #fff2b8; }
.market-chart.province-chart { --accent: #b762ff; --tint: #efdcff; }
.chart-kicker { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.chart-number { display: inline-grid; place-items: center; background: var(--accent); border: 2px solid #111; width: 30px; height: 30px; box-shadow: 3px 3px 0 #111; font-size: .9rem; }
.market-chart > h2 { font-size: clamp(1.3rem, 2.3vw, 2rem); padding: 6px 12px; line-height: 1.15; }
#year-prices > h2, #km-prices > h2 { display: table; margin: 0 auto; text-align: center; }
.chart-description { margin: 12px 0; font-size: .95rem; line-height: 1.5; max-width: 75ch; }
.chart-legend { display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: .82rem; margin: 15px 0; }
.chart-legend span { display: inline-flex; align-items: center; gap: 8px; }
.legend-band { width: 28px; height: 9px; border: 1px solid #111; background: var(--accent); border-radius: 9px; }
.legend-dot { width: 12px; height: 12px; background: #111; border-radius: 50%; }
.legend-budget { height: 16px; border-left: 3px dashed #7c3eaa; }
.chart-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin: 18px 0; }
#year-prices .chart-controls { display: grid; grid-template-columns: minmax(170px, 220px) minmax(0, 1fr); gap: 24px; }
.chart-controls[hidden], #year-prices .chart-controls[hidden], .chart-toggle[hidden], .cohort-detail[hidden] { display: none; }
.chart-controls label { display: grid; gap: 6px; font-size: .82rem; font-weight: 700; }
.chart-controls select, .chart-toggle { font: inherit; font-weight: 700; color: #111; border: 2px solid #111; background: #fffdf7; padding: 10px 12px; min-height: 44px; border-radius: 0; }
.chart-toggle { cursor: pointer; background: var(--tint); box-shadow: 3px 3px 0 #111; font-size: .85rem; }
.chart-toggle:hover { background: var(--accent); }
.budget-control { padding: 12px 16px; border: 2px solid #111; background: #f1e5ff; }
.chart-controls .budget-label { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.budget-label output { font-size: 1.3rem; font-weight: 800; }
.budget-control input { width: 100%; height: 44px; accent-color: #7138a4; margin: 4px 0 0; cursor: pointer; }
.budget-note { margin: 0; font-size: .78rem; line-height: 1.4; font-weight: 400; }
.chart-mount { --label-width: 106px; font-variant-numeric: tabular-nums; }
.province-chart .chart-mount { --label-width: 182px; }
.chart-column-headings, .chart-row { display: grid; grid-template-columns: var(--label-width) minmax(0, 1fr) 110px 180px; align-items: center; gap: 14px; }
.chart-column-headings { font-size: .72rem; font-weight: 700; color: #465057; padding: 10px 14px; border-bottom: 2px solid #111; }
.chart-column-headings > span:nth-last-child(-n+2) { text-align: right; }
.chart-axis { position: relative; min-width: 0; height: 16px; font-size: .73rem; }
.chart-axis > span { position: absolute; transform: translateX(-50%); white-space: nowrap; }
.chart-axis > span:first-child { transform: none; }
.chart-axis > span:last-child { transform: translateX(-100%); }
.visual-row { border-bottom: 1px solid #c4beb2; }
.chart-row { width: 100%; padding: 12px 14px; min-height: 64px; border: 0; color: #152024; background: transparent; text-align: left; cursor: pointer; font: inherit; }
.visual-row:nth-child(2n) .chart-row { background: rgba(255,255,255,.55); }
.chart-row:hover, .chart-row[aria-expanded="true"], .visual-row:nth-child(2n) .chart-row[aria-expanded="true"] { background: var(--tint); }
.chart-row:focus-visible, .chart-toggle:focus-visible, select:focus-visible, input:focus-visible, .chart-data summary:focus-visible { outline: 3px solid #1745cc; outline-offset: 3px; }
.row-label { font-weight: 800; font-size: 1.04rem; line-height: 1.25; overflow-wrap: anywhere; }
.row-label::before { content: '+'; display: inline-block; width: 16px; margin-right: 5px; font-weight: 400; color: #6d665d; }
.chart-row[aria-expanded="true"] .row-label::before { content: '−'; }
.row-value { font-weight: 800; font-size: 1.08rem; text-align: right; white-space: nowrap; }
.row-meta { display: flex; flex-direction: column; align-items: end; gap: 4px; font-size: .75rem; line-height: 1.35; }
.row-count { color: #4b575b; }
.small-sample { display: inline-block; background: #ffd117; color: #111; padding: 2px 5px; border: 1px solid #111; font-size: .68rem; font-weight: 800; }
.row-track { display: block; position: relative; height: 26px; background: repeating-linear-gradient(to right, transparent 0, transparent calc(25% - 1px), #dbd6cc calc(25% - 1px), #dbd6cc 25%); border-left: 1px solid #b2aca1; border-right: 1px solid #b2aca1; }
.row-track::before { content: ''; position: absolute; inset: 12px 0 auto; border-top: 2px solid #d6cfc1; }
.range-band { position: absolute; top: 7px; height: 12px; min-width: 2px; border: 1px solid #111; background: var(--accent); border-radius: 10px; }
.median-marker { position: absolute; top: 4px; width: 18px; height: 18px; transform: translateX(-50%); border-radius: 50%; background: #111; border: 3px solid #fffdf7; box-shadow: 0 0 0 1px #111; z-index: 2; }
.budget-marker { position: absolute; left: var(--budget); top: -2px; bottom: -2px; border-left: 2px dashed #7c3eaa; z-index: 1; }
.value-bar { position: absolute; inset: 4px auto 4px 0; background: var(--accent); border: 1px solid #111; min-width: 2px; box-shadow: 2px 2px 0 rgba(0,0,0,.16); }
.within-budget .row-value::after { content: ' ✓'; color: #17644c; font-size: .9rem; }
.cohort-detail { padding: 16px; border: 2px solid #111; background: var(--tint); margin: 0 14px 14px; }
.cohort-detail dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px; margin: 0; }
.cohort-detail dt { font-size: .75rem; color: #39444a; }
.cohort-detail dd { margin: 4px 0 0; font-weight: 800; font-size: 1rem; }
.sample-note { font-size: .82rem; line-height: 1.4; margin: 12px 0 0; }
.chart-status { font-size: .8rem; line-height: 1.5; color: #4b575b; margin: 14px 0; }
.chart-actions { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin: 16px 0; }
.chart-actions .chart-status { margin: 0; }
.chart-caveat { font-size: .8rem; line-height: 1.5; padding: 10px 12px; background: #f1ede4; border-left: 3px solid #111; }
.chart-data { margin-top: 16px; border-top: 2px solid #111; padding-top: 12px; }
.chart-data summary { cursor: pointer; font-size: .85rem; font-weight: 700; padding: 12px 0; min-height: 44px; }
.market-chart .table-wrap { margin-top: 8px; }
.chart-mount:empty { display: none; }
@media (max-width: 800px) {
  .market-charts { gap: 20px; }
  .market-chart { padding: 14px 10px; }
  .chart-kicker { font-size: .7rem; }
  .chart-description { font-size: .88rem; }
  .chart-legend { font-size: .74rem; gap: 8px 12px; }
  .chart-controls { gap: 12px; }
  #year-prices .chart-controls { grid-template-columns: 1fr; gap: 12px; }
  .budget-control { padding: 10px 12px; }
  .chart-toggle { font-size: .8rem; }
  .chart-controls select { font-size: .85rem; }
  .chart-column-headings { display: block; padding: 10px 8px; }
  .chart-column-headings > span { display: none; }
  .chart-axis { font-size: .69rem; }
  .chart-row { grid-template-columns: minmax(0,1fr) auto; grid-template-areas: 'label value' 'track track' 'meta meta'; gap: 6px; padding: 12px 8px; }
  .row-label { grid-area: label; font-size: 1rem; }
  .row-value { grid-area: value; font-size: 1.1rem; }
  .row-track { grid-area: track; height: 26px; }
  .row-meta { grid-area: meta; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; font-size: .74rem; }
  .row-range { font-weight: 700; }
  .cohort-detail { margin: 0 8px 12px; padding: 12px; }
  .cohort-detail dl { grid-template-columns: 1fr 1fr; gap: 12px; }
}
@media (prefers-reduced-motion: no-preference) {
  .chart-row { transition: background-color 120ms ease; }
}
