* { box-sizing: border-box; }
html { color-scheme: light; scroll-padding-top: 1rem; }
body { margin: 0; color: var(--rl-ink); background: var(--rl-abyss); font: 500 1rem/1.7 var(--rl-font-body); }
button, input, select { font: inherit; }
button, a, input, select { -webkit-tap-highlight-color: transparent; }
button, a { touch-action: manipulation; }
button { cursor: pointer; }
a { color: var(--rl-action); text-underline-offset: .25em; }
:where(button, input, select, a, [tabindex="-1"]):focus-visible { outline: 3px solid var(--rl-focus); outline-offset: 4px; }
[hidden] { display: none !important; }
h1, h2, h3, p { margin: 0; overflow-wrap: anywhere; }
h1, h2, h3 { font-family: var(--rl-font-display); line-height: 1.4; }
h1 { font-size: clamp(1.75rem, 2.5vw, 2.25rem); }
h2 { font-size: 1.35rem; }
.skip-link { position: fixed; inset: .75rem auto auto .75rem; z-index: 100; padding: .75rem; background: var(--rl-paper); transform: translateY(-200%); }
.skip-link:focus { transform: none; }
.hero { width: min(var(--rl-width-tool), calc(100% - 2rem)); margin: auto; padding: 2rem 0; color: var(--rl-foam); }
.eyebrow { margin-bottom: .5rem; color: var(--rl-sun); font: 800 .875rem/1.5 var(--rl-font-display); }
.hero p:not(.eyebrow) { max-width: 49rem; margin-top: .75rem; line-height: 1.8; }
main { display: grid; grid-template-columns: 21rem minmax(0, 1fr); align-items: start; gap: 1.5rem; width: min(var(--rl-width-tool), calc(100% - 2rem)); margin: 0 auto 3rem; }
.panel { min-width: 0; border-radius: var(--rl-radius-small); }
.controls { padding: 1.5rem; background: var(--rl-surface); }
.section-title p { margin-top: .5rem; color: var(--rl-muted); font-size: .875rem; }
.section-jump { display: flex; align-items: center; min-height: 44px; margin-top: .5rem; font-weight: 700; }
form { margin-top: 1.5rem; }
fieldset { min-width: 0; margin: 0; padding: 1rem 0 1.5rem; border: 0; border-top: 1px solid var(--rl-boundary); }
legend { padding: 0 .5rem 0 0; font-weight: 800; font-size: 1.125rem; }
label { display: grid; gap: .375rem; min-width: 0; margin-bottom: 1rem; font-size: .875rem; font-weight: 700; }
input:not([type=checkbox]), select { width: 100%; min-width: 0; min-height: 48px; padding: .5rem .625rem; border: 1px solid var(--rl-boundary); border-radius: var(--rl-radius-small); color: var(--rl-ink); background: var(--rl-foam); font-size: 1rem; }
input:out-of-range { border-color: var(--rl-danger); border-width: 2px; }
.input-range { color: var(--rl-muted); font-size: .875rem; font-weight: 500; }
.inline-grid { display: grid; align-items: start; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.checkbox-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .25rem .5rem; margin: .5rem 0 1rem; }
.checkbox-grid label { display: flex; align-items: center; min-height: 44px; margin: 0; gap: .5rem; cursor: pointer; }
body[data-rl-mode=tool] .checkbox-grid input { flex: 0 0 auto; width: 18px; height: 18px; min-block-size: 18px; margin: 0; accent-color: var(--rl-action); }
button { min-height: 48px; padding: .625rem 1rem; border: 1px solid var(--rl-boundary); border-radius: var(--rl-radius-small); color: var(--rl-ink); background: var(--rl-foam); font-weight: 700; }
button:hover { background: var(--rl-surface); }
button[type=reset] { width: 100%; margin-top: 1.25rem; font-size: .875rem; }
.results-panel { padding: 1.5rem 2rem; background: var(--rl-paper); }
.results-head { display: flex; justify-content: space-between; gap: 1rem; }
.results-head .section-jump { flex-shrink: 0; margin: 0; align-self: start; font-size: .875rem; }
.summary { min-height: 8.5rem; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; margin-top: 1.5rem; padding: 1rem 0; border-block: 1px solid var(--rl-divider); }
.metric { display: flex; flex-direction: column; align-items: start; min-width: 0; gap: .25rem; }
.metric-label { color: var(--rl-muted); font-size: .875rem; font-weight: 700; }
.metric strong { font: 800 1.375rem/1.4 var(--rl-font-display); font-variant-numeric: tabular-nums; }
.metric.primary strong, .metric.candidates strong { font-size: 2rem; }
.metric-note { color: var(--rl-muted); font-size: .875rem; }
.metric.primary { order: -2; }
.metric.candidates { order: -1; }
.meter { width: 100%; height: 4px; margin-top: .5rem; background: var(--rl-divider); }
.meter span { display: block; height: 100%; background: var(--rl-action); }
.rank-track { min-height: 2rem; display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: .75rem 0 1.5rem; font: 800 .875rem/1.5 var(--rl-font-display); }
.rank-track span { padding: .25rem .625rem; color: var(--rl-muted); }
.rank-track .active { border-bottom: 2px solid var(--rl-action); }
.rank-track .current { color: var(--rl-on-selected); background: var(--rl-selected); border-color: var(--rl-on-selected); }
.results-toolbar { display: flex; align-items: end; justify-content: space-between; flex-wrap: wrap; gap: 1rem; padding-bottom: 1rem; }
.sort-control { width: 13rem; margin: 0; }
.result-count { font-weight: 800; font-size: .875rem; }
.empty { padding: 1.5rem; border-left: 4px solid var(--rl-action); background: var(--rl-surface); }
.result-list { border-top: 1px solid var(--rl-boundary); }
.bike-card { display: grid; grid-template-columns: minmax(0, 1fr) 7rem; gap: 1rem 1.5rem; padding: 1.5rem 0; border-bottom: 1px solid var(--rl-divider); content-visibility: auto; contain-intrinsic-size: auto 270px; }
.bike-card-head { min-width: 0; }
.bike-card h3 { margin: .25rem 0; font-size: clamp(1.125rem, 1.6vw, 1.5rem); scroll-margin-top: 1rem; }
.maker { color: var(--rl-muted); font-size: .875rem; }
.rank-badge { font-size: .875rem; font-weight: 700; }
.fit-row { display: grid; grid-template-columns: 1fr auto; gap: .25rem .5rem; align-self: start; align-items: baseline; font-size: .875rem; color: var(--rl-muted); }
.fit-row strong { color: var(--rl-ink); font: 800 1.75rem/1.4 var(--rl-font-display); }
.fit-bar { grid-row: 2; grid-column: 1 / -1; height: 4px; background: var(--rl-divider); }
.fit-bar span { display: block; height: 100%; background: var(--rl-action); }
dl { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); grid-column: 1 / -1; gap: .75rem 1rem; margin: 0; }
dl div { min-width: 0; }
dt { color: var(--rl-muted); font-size: .875rem; }
dd { margin: .125rem 0 0; font-weight: 700; font-size: .875rem; overflow-wrap: anywhere; }
.show-more-results { display: block; width: 100%; margin-top: 1.5rem; border-color: var(--rl-action); background: var(--rl-action); color: var(--rl-on-action); }
.show-more-results:hover { background: var(--rl-deep); }
@media (min-width: 1001px) and (min-height: 700px) {
  .controls { position: sticky; top: 1rem; max-height: calc(100dvh - 2rem); overflow-y: auto; overscroll-behavior: contain; }
}
@media (max-width: 1200px) {
  main { grid-template-columns: 19rem minmax(0, 1fr); }
  .results-panel { padding: 1.5rem; }
  .summary { min-height: 15.25rem; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1rem; }
  .metric { grid-column: span 2; }
  .metric.primary, .metric.candidates { grid-column: span 3; }
  dl { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1000px) {
  main { grid-template-columns: 1fr; }
  .controls { padding: 1.5rem; }
  .hero { padding: 1.5rem 0; }
}
@media (max-width: 520px) {
  .controls, .results-panel { padding: 1.25rem; }
  .results-head { display: block; }
  .results-head .section-jump { margin-top: .5rem; }
  .bike-card { grid-template-columns: minmax(0, 1fr) 5.5rem; gap: 1rem; }
  .summary { gap: .75rem; }
  .sort-control { width: 100%; }
  dl { gap: .75rem; }
}

body { --rl-ink: #273c45; --rl-muted: #53666e; --rl-action: #365f70; --rl-paper: #f4f4ee; --rl-surface: #dfe9e7; --rl-selected: #dfc59c; --rl-on-selected: #343a3e; }
.results-panel { background: #f4f4ee; }
.controls { background: #e2e9e5; }
.results-panel, .controls { box-shadow: 0 16px 42px #031d3226; }
.metric strong { font-weight: 650; }

@media(min-width:1600px) { .hero,main { width: min(1440px,calc(100% - 80px)); } main { grid-template-columns: 23rem minmax(0,1fr); gap: 2rem; } .results-panel { padding: 2rem; } .summary { gap: 1.5rem; } .result-list { margin-top: .5rem; } }
