/* Page-only presentation. The :is() ID supplies the specificity of the legacy
   per-section styles without changing their homepage presentation or engine. */
:is(#abrsm-syllabus-finder-ui, .sf2-ui).sf2-ui {
  --sf2-text: #202327;
  --sf2-muted: #555d66;
  --sf2-border: #d5d8dc;
  --sf2-border-soft: #e7e8ea;
  --sf2-soft-red: #fff5f6;
  --sf2-heading: Campton, sans-serif;
  --sf2-body: Whitney, sans-serif;
  padding: 24px 0 32px;
  background: #fff;
  min-height: 0;

  [hidden] { display: none !important; }
  :is(button, a, input, select, summary):focus-visible {
    outline: 2px solid #202327;
    outline-offset: 3px;
    box-shadow: none;
  }
  :is(h1, h2)[tabindex]:focus { outline: none; }
  :is(button, a, input, select, summary) { -webkit-tap-highlight-color: transparent; }
  .sf2-wrap { width: 100%; max-width: none; margin: 0 auto; }
  .sf2-shell { overflow: visible; border: 0; border-radius: 0; box-shadow: none; background: none; }
  .sf2-head { display: block; padding: 0 0 18px; background: none; }
  .sf2-head-copy { gap: 8px; }
  .sf2-title { font: 600 clamp(28px, 2.4vw, 36px)/1.14 var(--sf2-heading); letter-spacing: -.025em; max-width: 900px; margin: 0; }
  .sf2-subtitle { max-width: 740px; margin: 0; font: 400 18px/1.5 var(--sf2-body); color: var(--sf2-muted); }
  .sf2-progress { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin: 0 0 24px; padding: 0; border-bottom: 1px solid var(--sf2-border); background: none; }
  .sf2-progress::before, .sf2-progress::after { display: none; }
  .sf2-progress > li { list-style: none; margin: 0; padding: 0; min-width: 0; }
  .sf2-progress-item { position: relative; display: flex; align-items: center; justify-content: flex-start; gap: 10px; width: 100%; min-height: 62px; padding: 12px 10px; margin: 0; border: 0; border-bottom: 3px solid transparent; border-radius: 0; background: none; color: var(--sf2-muted); text-align: left; opacity: 1; font: 500 16px/1.25 var(--sf2-body); transform: none; }
  .sf2-progress-item::before, .sf2-progress-item::after { display: none; }
  .sf2-progress-item.is-active { color: var(--sf2-text); border-bottom-color: var(--sf2-accent); }
  .sf2-progress-item.is-complete { color: var(--sf2-text); }
  .sf2-progress-item.is-clickable:hover { background: #f6f6f5; transform: none; }
  .sf2-progress-item:disabled { cursor: default; }
  .sf2-progress-number { flex: 0 0 28px; width: 28px; height: 28px; margin: 0; border: 1px solid var(--sf2-border); border-radius: 50%; background: #fff; color: var(--sf2-muted); box-shadow: none; font: 500 14px/1 var(--sf2-body); }
  .sf2-progress-item.is-active .sf2-progress-number { background: var(--sf2-accent); border-color: var(--sf2-accent); color: #111; box-shadow: none; }
  .sf2-progress-item.is-complete .sf2-progress-number { background: #f1f2f1; border-color: #c9ceca; color: #26392c; }
  .sf2-progress-label { font: 500 16px/1.3 var(--sf2-body); color: inherit; }
  .sf2-progress-detail { font-weight: 400; }
  .sf2-context-bar { gap: 12px; padding: 0 0 20px; margin: 0; border: 0; background: none; }
  .sf2-context-chips { gap: 8px; flex: 1 1 auto; flex-wrap: wrap; overflow: visible; }
  .sf2-context-chip { display: block; min-height: 40px; padding: 8px 12px; border: 1px solid var(--sf2-border-soft); border-radius: 6px; background: #f6f6f5; font: 500 15px/1.3 var(--sf2-body); color: var(--sf2-text); white-space: normal; text-align: left; }
  .sf2-context-chip-label { display: inline; font-weight: 400; color: var(--sf2-muted); }
  .sf2-context-chip::after { content: none; }
  .sf2-context-edit, .sf2-context-link { display: inline-flex; min-height: 40px; padding: 8px 0; border: 0; background: none; color: var(--sf2-text); text-decoration: underline; text-underline-offset: 3px; font: 500 15px/1.4 var(--sf2-body); }
  .sf2-main { min-height: 0; padding: 4px 0 28px; }
  .sf2-stage { animation: none; min-height: 0; }
  .sf2-stage[data-stage="1"] { grid-template-columns: minmax(0, 1fr); }
  .sf2-stage[data-stage="2"] { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 48px; }
  .sf2-panel { padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
  .sf2-panel-title, .sf2-results-title { margin: 0 0 8px; font: 600 24px/1.3 var(--sf2-heading); color: var(--sf2-text); letter-spacing: -.02em; }
  .sf2-panel-intro, .sf2-results-sub { margin: 0 0 22px; font: 400 16px/1.5 var(--sf2-body); color: var(--sf2-muted); }
  .sf2-chip-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .sf2-chip { display: grid; grid-template-columns: 36px minmax(0, 1fr) 20px; column-gap: 16px; row-gap: 6px; min-height: 106px; padding: 20px; border: 1px solid var(--sf2-border); border-radius: 8px; background: #fff; color: var(--sf2-text); box-shadow: none; transform: none; text-align: left; }
  .sf2-chip:hover { border-color: #858b92; background: #f9f9f8; box-shadow: none; transform: none; }
  .sf2-chip::before, .sf2-chip::after { display: none; }
  .sf2-chip-icon { grid-row: 1 / 3; grid-column: 1; align-self: center; width: 36px; height: 36px; border: 0; border-radius: 0; background: none; color: #505964; }
  .sf2-chip strong { grid-column: 2; grid-row: 1; align-self: end; margin: 0; font: 600 18px/1.3 var(--sf2-heading); color: var(--sf2-text); }
  .sf2-chip small { grid-column: 2; grid-row: 2; margin: 0; color: var(--sf2-muted); font: 400 15px/1.4 var(--sf2-body); }
  .sf2-choice-mark { position: static; grid-column: 3; grid-row: 1 / 3; align-self: center; width: 20px; height: 20px; border: 1px solid #989fa7; background: #fff; }
  a.sf2-chip .sf2-choice-mark { border: 0; border-radius: 0; background: none; }
  a.sf2-chip .sf2-choice-mark::after { content: '↗'; position: static; display: block; width: auto; height: auto; color: #505964; background: none; border: 0; transform: none; font-size: 22px; }
  .sf2-search { width: 100%; min-height: 46px; padding: 10px 14px; border: 1px solid #8b929a; border-radius: 8px; background: #fff; box-shadow: none; font: 400 16px/1.4 var(--sf2-body); color: var(--sf2-text); }
  .sf2-instrument-search { max-width: 540px; margin: 0 0 20px; }
  .sf2-popular-panel { margin: 0 0 24px; padding: 0; border: 0; background: none; }
  .sf2-popular-head { margin-bottom: 10px; }
  .sf2-popular-title, .sf2-list-heading { margin: 0 0 10px; color: var(--sf2-muted); font: 500 15px/1.4 var(--sf2-body); }
  .sf2-popular-title { margin: 0; }
  .sf2-popular-reset { min-height: 36px; color: var(--sf2-text); font-size: 15px; text-decoration: underline; text-underline-offset: 3px; }
  .sf2-popular-grid { display: flex; flex-wrap: wrap; gap: 8px; }
  .sf2-filter-pill { min-height: 44px; padding: 8px 14px; border: 1px solid var(--sf2-border); border-radius: 6px; background: #fff; color: var(--sf2-text); box-shadow: none; font: 500 15px/1.3 var(--sf2-body); }
  .sf2-filter-pill.is-active { background: #fff5f6; border-color: var(--sf2-accent); color: #111; box-shadow: inset 0 0 0 1px var(--sf2-accent); }
  .sf2-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; max-height: none; overflow: visible; padding: 0; border: 0; border-radius: 0; background: none; }
  .sf2-instrument-btn { display: flex; gap: 12px; align-items: center; min-height: 56px; padding: 12px; border: 1px solid var(--sf2-border); border-radius: 6px; background: #fff; color: var(--sf2-text); font: 500 15px/1.35 var(--sf2-body); box-shadow: none; transform: none; }
  .sf2-instrument-btn:hover { border-color: #858b92; transform: none; }
  .sf2-instrument-btn[aria-selected="true"], .sf2-instrument-btn[aria-pressed="true"] { background: #fff5f6; border-color: var(--sf2-accent); color: #111; box-shadow: inset 0 0 0 1px var(--sf2-accent); }
  .sf2-instrument-icon { flex: 0 0 24px; width: 24px; height: 24px; border: 0; background: none; color: #545d67; }
  .sf2-icon-glyph { width: 100%; height: 100%; }
  .sf2-mode-panel { padding: 0 0 0 36px; border-left: 1px solid var(--sf2-border-soft); border-right: 0; }
  .sf2-mode-panel .sf2-panel-title { margin-bottom: 16px; }
  .sf2-grade-panel { padding: 0; }
  .sf2-mode-fork { display: grid; grid-template-columns: 1fr; gap: 12px; }
  .sf2-mode-card { display: grid; grid-template-columns: 32px minmax(0, 1fr) 20px; gap: 6px 14px; min-height: 100px; padding: 18px; border: 1px solid var(--sf2-border); border-radius: 8px; background: #fff; box-shadow: none; }
  .sf2-mode-card[aria-pressed="true"] { border-color: var(--sf2-accent); background: #fff5f6; box-shadow: inset 0 0 0 1px var(--sf2-accent); }
  .sf2-mode-card-icon { grid-column: 1; grid-row: 1 / 3; align-self: center; width: 32px; height: 32px; background: none; border: 0; border-radius: 0; color: #515b65; }
  .sf2-mode-card-icon .sf2-icon-glyph { width: 30px; height: 30px; }
  .sf2-mode-card strong { grid-column: 2; grid-row: 1; align-self: end; margin: 0; padding: 0; font: 600 17px/1.35 var(--sf2-heading); }
  .sf2-mode-card small { grid-column: 2; grid-row: 2; font: 400 15px/1.4 var(--sf2-body); }
  .sf2-card-choice { position: static; grid-column: 3; grid-row: 1 / 3; align-self: center; width: 20px; height: 20px; border-color: #989fa7; }
  .sf2-mode-card[aria-pressed="true"] .sf2-card-choice { border-width: 5px; }
  .sf2-grade-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .sf2-grade { min-height: 54px; padding: 12px 6px; border: 1px solid var(--sf2-border); border-radius: 6px; background: #fff; color: var(--sf2-text); font: 500 16px/1.3 var(--sf2-body); box-shadow: none; transform: none; }
  .sf2-grade[aria-pressed="true"] { background: #fff5f6; border-color: var(--sf2-accent); color: #111; box-shadow: inset 0 0 0 1px var(--sf2-accent); }
  .sf2-feedback { display: flex; gap: 12px; align-items: center; }
  .sf2-feedback:has(.sf2-status.is-error), .sf2-feedback:has(.sf2-status.is-loading), .sf2-feedback:has(.sf2-status.is-success) { margin-bottom: 20px; }
  .sf2-status { display: block; position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); border: 0; }
  .sf2-status:is(.is-error, .is-loading, .is-success) { position: static; flex: 1; width: auto; height: auto; padding: 12px 16px; margin: 0; overflow: visible; clip-path: none; border: 1px solid var(--sf2-border); border-radius: 6px; background: #f6f6f5; color: var(--sf2-text); font: 400 16px/1.5 var(--sf2-body); }
  .sf2-status.is-error { border-color: #d5a76c; background: #fff8ed; color: #603d16; }
  .sf2-status.is-success { border-color: #9caf9d; background: #f1f7f2; color: #214c2b; }
  .sf2-empty { padding: 20px; border: 1px solid var(--sf2-border-soft); border-radius: 6px; background: #f6f6f5; color: var(--sf2-muted); font: 400 16px/1.5 var(--sf2-body); }
  .sf2-list > .sf2-empty { grid-column: 1 / -1; }
  .sf2-pieces-heading-row { width: 100%; align-items: start; }
  .sf2-selection-count { min-height: 32px; border: 0; border-radius: 4px; padding: 6px 10px; background: #f3f4f3; color: var(--sf2-text); font-size: 14px; }
  .sf2-pieces-panel::after { display: none; }
  .sf2-piece-panel { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 28px; margin: 0; border-top: 1px solid var(--sf2-border-soft); }
  .sf2-piece-workspace { padding: 24px 0 0; border: 0; }
  .sf2-piece-summary-boundary { min-width: 0; align-self: stretch; }
  .sf2-piece-summary { position: sticky; top: 20px; align-self: start; margin: 24px 0 0; padding: 20px; border: 1px solid var(--sf2-border-soft); border-radius: 8px; background: #f7f7f5; box-shadow: none; }
  .sf2-piece-tabs { width: 100%; max-width: none; grid-template-columns: repeat(var(--sf2-piece-tab-count, 3), minmax(0, 1fr)); gap: 0; overflow: visible; }
  .sf2-piece-quick-filters { flex-wrap: wrap; overflow: visible; }
  .sf2-piece-tab { min-height: 44px; font-size: 15px; }
  .sf2-piece-tab.is-active { background: #fff5f6; border-color: var(--sf2-accent); color: #111; box-shadow: inset 0 -2px var(--sf2-accent); }
  .sf2-piece-quick-tools { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; max-width: none; }
  .sf2-piece-search { min-height: 44px; border-radius: 6px; font-size: 16px; }
  .sf2-piece-list { border: 1px solid var(--sf2-border); border-radius: 6px; box-shadow: none; }
  /* Keep the six preview rows whole; only the additional rows need a scroller. */
  .sf2-piece-rows:not(.sf2-piece-rows-more) { max-height: none; overflow: visible; }
  .sf2-piece-more { margin: 8px 10px 10px; border-radius: 6px; background: #f6f6f5; }
  .sf2-piece-more summary { min-height: 44px; padding: 10px 12px; font: 500 15px/1.4 var(--sf2-body); }
  .sf2-piece-more summary:focus-visible { outline-offset: -3px; }
  .sf2-piece-more .sf2-more-expanded { display: none; }
  .sf2-piece-more[open] .sf2-more-collapsed { display: none; }
  .sf2-piece-more[open] .sf2-more-expanded { display: inline; }
  .sf2-piece-row { background: #fff; }
  .sf2-piece-row.is-selected { background: #fff5f6; color: #111; }
  .sf2-piece-row label { min-width: 0; }
  .sf2-piece-title { color: var(--sf2-text); font-weight: 500; }
  .sf2-piece-source, .sf2-piece-composer { color: var(--sf2-muted); }
  .sf2-choice-card { border-radius: 6px; background: #fff; box-shadow: none; }
  .sf2-own-choice, .sf2-note, .sf2-exam-guidance { grid-column: 1 / -1; margin: 0; border-radius: 6px; box-shadow: none; }
  .sf2-results { padding: 0; border: 0; background: none; box-shadow: none; }
  .sf2-results-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 32px; align-items: start; padding: 0 0 20px; border: 0; background: none; }
  .sf2-results-sub { margin-bottom: 0; }
  .sf2-results-metrics { display: flex; flex-wrap: wrap; gap: 24px; padding: 0; border: 0; background: none; overflow: visible; }
  .sf2-results-metric { display: flex; gap: 6px; align-items: baseline; min-height: 0; min-width: 0; width: auto; padding: 0; background: none; border: 0; border-radius: 0; }
  .sf2-results-metric-icon { display: none; }
  .sf2-results-metric strong { font: 600 24px/1.4 var(--sf2-heading); color: var(--sf2-text); }
  .sf2-results-metric span { font: 400 15px/1.4 var(--sf2-body); color: var(--sf2-muted); }
  .sf2-bulk-actions { grid-column: 1 / -1; }
  .sf2-bulk-actions summary { display: list-item; width: fit-content; min-height: 36px; padding: 8px 0; color: var(--sf2-muted); cursor: pointer; font: 500 15px/1.3 var(--sf2-body); }
  .sf2-bulk-actions > div { display: flex; flex-wrap: wrap; gap: 8px; padding: 8px 0; }
  .sf2-results-body { padding: 0; gap: 28px; }
  .sf2-results-filters { flex-wrap: wrap; gap: 8px; padding: 0 0 20px; overflow: visible; }
  .sf2-group { margin: 0; padding: 0; border: 0; background: none; box-shadow: none; }
  .sf2-group-title { margin: 0 0 16px; padding: 0; font: 600 20px/1.3 var(--sf2-heading); }
  .sf2-results-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; }
  .sf2-book, .sf2-book[data-book-kind] { display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: 20px; padding: 20px 0; min-height: 0; border: 0; border-top: 1px solid var(--sf2-border-soft); border-radius: 0; background: #fff; box-shadow: none; animation: none; transform: none; }
  .sf2-book:hover { box-shadow: none; transform: none; }
  .sf2-book::before, .sf2-book::after { display: none; }
  .sf2-book-image { align-self: start; width: 100%; height: 154px; min-height: 0; padding: 10px; border: 0; border-radius: 4px; background: #f5f5f3; }
  .sf2-book-image img { width: 100%; height: 100%; object-fit: contain; }
  .sf2-book-body { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
  .sf2-book-badges { gap: 4px; margin: 0; }
  .sf2-badge, .sf2-badge.required, .sf2-badge.supporting { min-height: 22px; padding: 3px 6px; border: 0; border-radius: 3px; background: #f1f2f1; color: #464e55; font: 500 12px/1.3 var(--sf2-body); }
  .sf2-book-title { margin: 0; font: 600 18px/1.4 var(--sf2-heading); color: var(--sf2-text); overflow-wrap: anywhere; }
  .sf2-book-title a { color: inherit; }
  .sf2-book-meta { margin: 0; font: 500 18px/1.4 var(--sf2-body); color: var(--sf2-text); }
  .sf2-book-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 2px 0 0; }
  .sf2-btn, .sf2-book-actions .sf2-btn, .sf2-stage-nav .sf2-btn { width: auto; min-width: 0; min-height: 46px; padding: 10px 16px; border: 1px solid var(--sf2-border); border-radius: 8px; background: #fff; color: #202327; box-shadow: none; font: 500 16px/1.3 var(--sf2-body); text-align: center; transform: none; }
  .sf2-book-actions .sf2-btn { flex: 0 1 auto; }
  .sf2-btn.sf2-btn-primary { border-color: #ff364e; background: #ff364e; color: #111; }
  .sf2-btn:not([disabled]):hover { border-color: #777f88; box-shadow: none; transform: none; }
  .sf2-btn.sf2-btn-primary:not([disabled]):hover { border-color: #e72b43; background: #ff5267; }
  .sf2-btn[disabled] { background: #ededeb; border-color: #ededeb; color: #676c71; opacity: 1; cursor: not-allowed; }
  .sf2-btn-quiet { background: none; border-color: transparent; }
  .sf2-coverage { margin: 0; padding-top: 8px; border: 0; border-top: 1px solid var(--sf2-border-soft); border-radius: 0; background: none; }
  .sf2-coverage summary { min-height: 36px; color: var(--sf2-muted); font-size: 14px; }
  .sf2-coverage ul { margin: 4px 0 0; padding-left: 18px; color: var(--sf2-muted); font-size: 14px; }
  .sf2-stage-nav { display: flex; flex-wrap: wrap; gap: 10px; position: sticky; bottom: 0; z-index: 6; min-height: 76px; padding: 14px 0; border-top: 1px solid var(--sf2-border); background: #fff; box-shadow: none; backdrop-filter: none; }
  .sf2-stage-progress-wrap { display: flex; gap: 16px; align-items: center; flex: 1 1 auto; min-width: 0; }
  .sf2-stage-progress { width: 100px; height: 4px; }
  .sf2-stage-step { font-size: 15px; color: var(--sf2-muted); }
  .sf2-stage-summary { margin-right: auto; font-size: 15px; white-space: normal; }
  .sf2-stage-nav.is-results .sf2-stage-progress-wrap { display: none; }
  .sf2-stage-nav .sf2-btn-primary { min-width: 180px; }

  @media (max-width: 1000px) {
    .sf2-wrap { width: calc(100% - 48px); }
    .sf2-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .sf2-chip-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sf2-piece-panel { grid-template-columns: minmax(0, 1fr) 260px; gap: 20px; }
    .sf2-piece-summary { padding: 16px; }
    .sf2-results-grid { column-gap: 24px; }
    .sf2-book, .sf2-book[data-book-kind] { grid-template-columns: 92px minmax(0, 1fr); gap: 16px; }
    .sf2-book-image { height: 130px; }
    .sf2-book-actions .sf2-btn { padding: 10px 12px; }
  }
  @media (max-width: 760px) {
    padding: 24px 0 20px;
    .sf2-wrap { width: calc(100% - 32px); }
    .sf2-head { padding: 0 0 20px; }
    .sf2-head-copy { gap: 10px; }
    .sf2-title { font-size: 28px; line-height: 1.2; }
    .sf2-subtitle { font-size: 16px; }
    .sf2-progress { margin-bottom: 20px; }
    .sf2-progress-item { flex-direction: column; justify-content: flex-start; gap: 7px; min-height: 78px; padding: 8px 2px 12px; text-align: center; }
    .sf2-progress-label { font-size: 14px; }
    .sf2-progress-detail { display: none; }
    .sf2-progress-number { flex-basis: 26px; width: 26px; height: 26px; }
    .sf2-context-bar { flex-wrap: wrap; gap: 8px 16px; padding-bottom: 20px; }
    .sf2-context-chips { flex: 1 1 100%; }
    .sf2-context-chip { padding: 8px 10px; font-size: 14px; min-height: 38px; }
    .sf2-context-chip-label { display: none; }
    .sf2-context-edit, .sf2-context-link { font-size: 14px; min-height: 32px; }
    .sf2-main { padding: 0 0 24px; }
    .sf2-panel-title, .sf2-results-title { font-size: 22px; }
    .sf2-panel-intro, .sf2-results-sub { font-size: 16px; margin-bottom: 18px; }
    .sf2-chip-grid { grid-template-columns: 1fr; gap: 10px; }
    .sf2-chip { min-height: 86px; padding: 16px; column-gap: 14px; }
    .sf2-chip strong { font-size: 17px; }
    .sf2-chip small { font-size: 15px; }
    .sf2-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .sf2-instrument-btn { padding: 10px; gap: 8px; min-height: 60px; font-size: 15px; }
    .sf2-instrument-icon { flex-basis: 20px; width: 20px; height: 20px; }
    .sf2-popular-panel { margin-bottom: 20px; }
    .sf2-popular-grid { gap: 8px; }
    .sf2-popular-grid .sf2-filter-pill { flex: 1 0 calc(50% - 8px); justify-content: flex-start; padding: 8px 10px; }
    .sf2-stage[data-stage="2"] { grid-template-columns: minmax(0, 1fr); gap: 28px; }
    .sf2-mode-panel { padding: 0; border: 0; }
    .sf2-mode-card { min-height: 96px; padding: 14px; column-gap: 12px; }
    .sf2-grade-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .sf2-feedback { flex-wrap: wrap; }
    .sf2-status:is(.is-error, .is-loading, .is-success) { flex-basis: 100%; }
    .sf2-pieces-heading-row { flex-wrap: wrap; gap: 0; margin-bottom: 16px; }
    .sf2-piece-panel { display: flex; flex-direction: column; gap: 20px; }
    .sf2-piece-workspace { padding: 20px 0 0; }
    .sf2-piece-summary { position: static; width: 100%; margin: 0; padding: 16px; }
    .sf2-piece-quick-tools { grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .sf2-piece-tab { padding: 8px 4px; min-width: 0; font-size: 14px; }
    .sf2-piece-row { padding: 12px; }
    .sf2-piece-row-head { grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .sf2-piece-select { width: 100%; padding: 10px; box-shadow: none; }
    .sf2-piece-play { justify-self: start; width: auto; min-height: 40px; margin-left: 10px; padding: 8px 12px; border-radius: 6px; }
    .sf2-results-head { grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .sf2-results-metrics { gap: 20px; }
    .sf2-results-metric strong { font-size: 22px; }
    .sf2-results-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
    .sf2-book, .sf2-book[data-book-kind] { grid-template-columns: 84px minmax(0, 1fr); gap: 14px; padding: 20px 0; }
    .sf2-book-image { height: 116px; padding: 6px; }
    .sf2-book-body { gap: 8px; }
    .sf2-book-title { font-size: 16px; line-height: 1.45; }
    .sf2-book-actions { flex-direction: column; align-items: stretch; gap: 8px; }
    .sf2-book-actions .sf2-btn { flex: none; width: 100%; min-height: 44px; font-size: 15px; }
    .sf2-stage-nav { gap: 8px; min-height: 0; padding: 12px 0 max(12px, env(safe-area-inset-bottom)); }
    .sf2-stage-progress-wrap { flex: 1 1 calc(100% - 72px); order: 0; gap: 12px; }
    .sf2-stage-nav [id$="-reset"] { order: 1; padding: 8px 10px; min-height: 36px; margin-left: auto; }
    .sf2-stage-nav [id$="-back"] { order: 2; display: inline-flex; flex: 0 0 68px; padding: 10px 8px; }
    .sf2-stage-nav [id$="-next"] { order: 3; flex: 1 1 180px; min-width: 0; }
    .sf2-stage-summary { order: 0; flex: 1 1 calc(100% - 72px); font-size: 14px; }
    .sf2-stage-nav.is-results [id$="-next"] { font-size: 15px; }
    &.sf2-route-phase .sf2-stage-nav [id$="-back"] { display: none; }
    .sf2-bulk-actions > div { flex-direction: column; }
  }
  @media (max-width: 350px) {
    .sf2-title { font-size: 26px; }
    .sf2-book, .sf2-book[data-book-kind] { grid-template-columns: 72px minmax(0, 1fr); gap: 12px; }
    .sf2-book-image { height: 100px; }
    .sf2-instrument-btn { gap: 6px; padding: 10px 8px; }
    .sf2-instrument-btn .sf2-instrument-icon { display: none; }
    .sf2-results-metrics { gap: 14px; }
    .sf2-stage-nav [id$="-back"] { flex-basis: 56px; }
  }

  :is(button, a, input, select, summary) { scroll-margin-block: 84px 20px; }
  /* One step/action bar. It precedes the choices, so Back and Reset never
     depend on reaching the end of a long instrument or book list. */
  .sf2-workspace-bar { position: sticky; top: 0; z-index: 7; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: center; border-block: 1px solid var(--sf2-border); background: #fff; }
  .sf2-workspace-bar .sf2-progress { margin: 0; border: 0; }
  .sf2-workspace-bar .sf2-progress-item { min-height: 56px; padding: 8px; }
  .sf2-workspace-bar .sf2-stage-nav { position: static; min-height: 0; padding: 8px 0; border: 0; gap: 8px; }
  .sf2-workspace-bar .sf2-stage-progress-wrap, .sf2-workspace-bar .sf2-stage-summary { display: none; }
  .sf2-workspace-bar .sf2-btn { min-height: 40px; padding: 8px 12px; }
  .sf2-workspace-bar .sf2-btn-primary { min-width: 164px; }
  &.sf2-route-phase .sf2-instrument-panel { display: none; }
  .sf2-context-bar { padding: 12px 0; }
  .sf2-main { padding-top: 16px; }
  .sf2-stage { scroll-margin-top: 84px; }
  .sf2-results-body { scroll-margin-top: 84px; }
  .sf2-results-body:focus-visible { outline: 2px solid #202327; outline-offset: 4px; }

  @media (min-width: 1200px) {
    .sf2-chip-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .sf2-instrument-panel { display: grid; grid-template-columns: minmax(280px, .85fr) minmax(0, 1.6fr); column-gap: 28px; align-items: start; }
    .sf2-instrument-panel > :is(.sf2-panel-title, .sf2-panel-intro, .sf2-list-heading, .sf2-list) { grid-column: 1 / -1; }
    .sf2-instrument-search { grid-column: 1; margin: 0; max-width: none; align-self: end; }
    .sf2-instrument-panel > .sf2-sr-only { position: absolute; }
    .sf2-popular-panel { grid-column: 2; margin: 0; }
    .sf2-popular-head { margin-bottom: 6px; }
    .sf2-popular-grid { gap: 6px; }
    .sf2-popular-grid .sf2-filter-pill { min-height: 40px; padding: 8px 10px; }
    .sf2-instrument-panel > .sf2-list-heading { margin: 14px 0 8px; }
    .sf2-list { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
    .sf2-instrument-btn { min-height: 48px; padding: 10px; gap: 8px; }
    .sf2-instrument-panel .sf2-panel-intro { margin-bottom: 12px; }
    .sf2-piece-workspace { padding-top: 16px; }
    .sf2-piece-summary { margin-top: 16px; }
    .sf2-results-head { padding-bottom: 12px; }
    .sf2-results-body { max-height: var(--sf2-results-height, none); overflow-y: auto; overscroll-behavior-y: contain; scrollbar-gutter: stable; }
  }
  .sf2-results-body::-webkit-scrollbar { width: 12px; }
  .sf2-results-body::-webkit-scrollbar-track { background: #f6f6f5; }
  .sf2-results-body::-webkit-scrollbar-thumb { background: #a0a6ae; border: 3px solid #f6f6f5; border-radius: 8px; }
  @media (min-width: 1600px) { .sf2-list { grid-template-columns: repeat(7, minmax(0, 1fr)); } }
  @media (max-width: 1199px) {
    .sf2-wrap { width: calc(100% - (var(--abrsm-wide-gutter) * 2)); max-width: none !important; padding-inline: 0 !important; }
    .sf2-workspace-bar { grid-template-columns: minmax(0, 1fr); gap: 0; }
    .sf2-workspace-bar .sf2-stage-nav { justify-content: flex-end; border-top: 1px solid var(--sf2-border-soft); }
  }
  @media (max-width: 768px) { .sf2-wrap { width: calc(100% - 32px); } }
  @media (max-width: 760px) {
    .sf2-workspace-bar .sf2-progress-item { min-height: 68px; padding: 6px 2px; }
    .sf2-workspace-bar .sf2-stage-nav { display: grid; grid-template-columns: auto auto minmax(0, 1fr); padding: 8px 0; }
    .sf2-workspace-bar .sf2-stage-nav :is([id$="-back"], [id$="-reset"], [id$="-next"]) { order: 0; margin: 0; min-height: 44px; min-width: 0; font-size: 14px; padding: 8px; }
    .sf2-workspace-bar .sf2-stage-nav [id$="-next"] { grid-column: 3; }
    .sf2-workspace-bar .sf2-stage-nav.is-results [id$="-next"] { font-size: 14px; }
    .sf2-main { padding-top: 16px; }
    .sf2-stage, .sf2-results-body { scroll-margin-top: 144px; }
    :is(button, a, input, select, summary) { scroll-margin-top: 160px; }
  }
  /* At high zoom / short windows, keep the document as the single scroller. */
  @media (max-height: 699px) { .sf2-results-body { max-height: none; overflow: visible; } }
  @media (min-width: 761px) and (max-height: 699px), (max-height: 499px) { .sf2-workspace-bar { position: static; } }


  /* Five exam choices: two main routes above three complementary options. */
  @media (min-width: 1200px) and (min-height: 700px) {
    .sf2-route-panel .sf2-chip-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-template-rows: minmax(0, 1.15fr) minmax(0, .85fr); min-height: var(--sf2-route-height, 440px); gap: 16px; }
    .sf2-route-panel .sf2-chip { position: relative; grid-column: span 2; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 0; min-height: 0; padding: 24px; border: 1px solid var(--sf2-border); border-radius: 8px; }
    .sf2-route-panel .sf2-chip:is([data-pathway="practical"], [data-pathway="performance"]) { grid-column: span 3; padding: 32px; background: #fafaf8; }
    .sf2-route-panel .sf2-chip-icon { align-self: flex-start; width: 36px; height: 36px; }
    .sf2-route-panel .sf2-chip strong { align-self: flex-start; margin: 14px 0 8px; font-size: 22px; line-height: 1.2; }
    .sf2-route-panel .sf2-chip small { max-width: calc(100% - 20px); font-size: 17px; }
    .sf2-route-panel .sf2-chip:is([data-pathway="practical"], [data-pathway="performance"]) .sf2-chip-icon { width: 56px; height: 56px; }
    .sf2-route-panel .sf2-chip:is([data-pathway="practical"], [data-pathway="performance"]) strong { font-size: 30px; }
    .sf2-route-panel .sf2-chip:is([data-pathway="practical"], [data-pathway="performance"]) small { font-size: 19px; }
    .sf2-route-panel .sf2-choice-mark { position: absolute; top: 24px; right: 24px; display: grid; place-items: center; width: 36px; height: 36px; border: 0; border-radius: 6px; background: #f0f1ef; }
    .sf2-route-panel .sf2-choice-mark::after { content: '→'; position: static; display: block; width: auto; height: auto; border: 0; background: none; transform: none; font: 400 24px/1 var(--sf2-body); color: var(--sf2-text); }
    .sf2-route-panel a.sf2-chip .sf2-choice-mark::after { content: '↗'; }
    .sf2-route-panel .sf2-chip:hover { background: #fff5f6; border-color: var(--sf2-accent); }
  }


  /* Grade first, then browsing: no empty side column on grade-only routes. */
  .sf2-stage[data-stage="2"] { grid-template-columns: minmax(0, 1fr); gap: 28px; min-height: 0; }
  .sf2-stage[data-stage="2"] .sf2-panel { min-height: 0; }
  .sf2-mode-panel { padding: 0; border: 0; }
  @media (min-width: 761px) {
    .sf2-grade-grid { display: flex; flex-wrap: wrap; gap: 12px; }
    .sf2-grade { flex: 1 1 140px; min-width: 0; min-height: 88px; padding: 18px 12px; font: 600 20px/1.3 var(--sf2-heading); }
    .sf2-mode-fork { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
    .sf2-mode-card { min-height: 180px; padding: 28px; grid-template-columns: 40px minmax(0, 1fr) 20px; column-gap: 18px; }
    .sf2-mode-card strong { font-size: 22px; }
    .sf2-mode-card small { font-size: 17px; }
    .sf2-mode-card-icon { width: 40px; height: 40px; }
    .sf2-mode-card-icon .sf2-icon-glyph { width: 40px; height: 40px; }
  }
  /* Fixed compact columns keep small groups from stretching into wide tiles. */
  @media (min-width: 761px) {
    .sf2-results-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
    .sf2-book, .sf2-book[data-book-kind] { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; gap: 10px; padding: 12px; height: 100%; border: 1px solid var(--sf2-border-soft); border-radius: 8px; }
    .sf2-book-image { height: 132px; padding: 8px; }
    .sf2-book-image:empty { display: none; }
    .sf2-book:has(> .sf2-book-image:empty) { grid-template-rows: 1fr; }
    .sf2-book-body { gap: 8px; }
    .sf2-book-title { min-height: 2.7em; font-size: 16px; line-height: 1.35; }
    .sf2-book-meta { font-size: 16px; }
    .sf2-book-actions { margin-top: auto; flex-wrap: nowrap; gap: 6px; }
    .sf2-book-actions .sf2-btn { min-height: 44px; padding: 8px 10px; font-size: 14px; }
    .sf2-book-actions .sf2-btn-primary { flex: 1 1 auto; }
    .sf2-coverage { padding-top: 6px; }
  }
  @media (min-width: 1000px) { .sf2-results-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
  @media (min-width: 1200px) { .sf2-results-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
  @media (min-width: 1400px) { .sf2-results-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
  @media (min-width: 1600px) { .sf2-results-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }

  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  }
}
