/* Existing app.css atoms consume the same component contracts as selects.
   Resolve lh at the control, so font changes retain the same outer height. */
.btn,.input,.select,.fp-select__button,.fp-select__search{--control-padding-block:max(0px,calc((var(--control-height) - 1lh - 2px) / 2))}
.btn{min-height:var(--control-height);padding-block:var(--control-padding-block);border-radius:var(--button-radius);font-size:var(--button-font-size);line-height:var(--button-line-height);transition-duration:var(--motion-fast);transition-timing-function:var(--motion-ease)}
.btn--sm{--control-height:var(--control-height-sm);min-height:var(--control-height);border-radius:var(--radius-sm);font-size:var(--font-size-caption)}
.btn--lg{--control-height:var(--control-height-lg);min-height:var(--control-height);border-radius:var(--radius-cta);font-size:var(--font-size-body)}
.input,.select,.textarea{border-radius:var(--input-radius);font-size:var(--input-font-size);line-height:var(--input-line-height);padding:var(--control-padding-y) var(--control-padding-x)}
.input,.select{min-height:var(--control-height);padding-block:var(--control-padding-block)}
.select{padding-inline-end:var(--control-padding-end)}
.chip{border-radius:var(--chip-radius);font-size:var(--chip-font-size);line-height:var(--chip-line-height)}
.btn:disabled,.input:disabled,.select:disabled,.textarea:disabled{opacity:var(--disabled-opacity)}
@media(max-width:767px){.input,.select,.textarea{font-size:var(--font-size-touch)}.btn--sm{--control-height:var(--control-height-md)}}
/* One progressive-enhancement select; the native element owns form values. */
.fp-select{display:inline-block;position:relative;min-width:0;max-width:100%;vertical-align:middle}
.fp-select:has(>.select),.fp-select:has(>.input){width:100%}
.fp-select__native,.fp-select>select[data-project-select]{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;padding:0!important;border:0!important;overflow:hidden}
.fp-select__button{box-sizing:border-box;display:flex;align-items:center;position:relative;width:100%;min-height:var(--control-height);padding-block:var(--control-padding-block);padding-inline:var(--control-padding-x) var(--control-padding-end);border:1px solid var(--control-border);border-radius:var(--control-radius);background:var(--control-bg);color:var(--control-ink);font:inherit;font-size:var(--font-size-control);line-height:var(--line-height-control);text-align:start;cursor:pointer}
.fp-select__button>span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-select__button::after{content:'';position:absolute;inset-inline-end:var(--control-icon-inset);top:50%;width:var(--control-icon-size);height:var(--control-icon-size);background:currentColor;opacity:.75;clip-path:polygon(20% 35%,50% 65%,80% 35%,88% 43%,50% 81%,12% 43%);transform:translateY(-50%);transition:transform var(--motion-fast) var(--motion-ease)}
.fp-select__button[aria-expanded=true]::after{transform:translateY(-50%) rotate(180deg)}
.fp-select__button:hover:not(:disabled){border-color:var(--color-border-strong)}
.fp-select__button:focus-visible,.fp-select__search:focus-visible{border-color:var(--control-focus);outline:none;box-shadow:none}
.fp-select__button[aria-invalid=true]{border-color:var(--control-error)}
.fp-select__button:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
.fp-select__popup{box-sizing:border-box;position:fixed;z-index:var(--select-popup-z);padding:var(--space-2);border:1px solid var(--control-border);border-radius:var(--select-popup-radius);background:var(--color-surface);color:var(--control-ink);box-shadow:var(--shadow-floating);overflow:auto;overscroll-behavior:contain}
.fp-select__popup[hidden],.fp-select__search[hidden]{display:none!important}
.fp-select__popup [role=option]{box-sizing:border-box;display:flex;align-items:center;min-height:var(--control-height);padding:var(--space-2) var(--control-padding-end) var(--space-2) var(--space-3);border-radius:var(--select-option-radius);font-size:var(--font-size-control);line-height:var(--line-height-control);cursor:pointer;position:relative;overflow-wrap:anywhere}
.fp-select__popup [aria-selected=true]{color:var(--color-primary);font-weight:700}
.fp-select__popup [aria-selected=true]::after{content:'✓';position:absolute;inset-inline-end:var(--control-icon-inset);top:50%;transform:translateY(-50%);width:var(--control-icon-size);text-align:center}
.fp-select__popup .is-focused,.fp-select__popup [role=option]:hover:not([aria-disabled=true]){background:var(--color-surface-hover)}
.fp-select__popup [aria-disabled=true]{opacity:var(--disabled-opacity);cursor:not-allowed}
.fp-select__search{box-sizing:border-box;width:100%;min-height:var(--control-height);padding:var(--control-padding-block) var(--control-padding-x);border:1px solid var(--control-border);border-radius:var(--control-radius);background:var(--control-bg);color:inherit;font:inherit;font-size:var(--font-size-touch);line-height:var(--line-height-control);margin-bottom:var(--space-2)}
.fp-select__popup p{padding:var(--space-3);font-size:var(--font-size-control);color:var(--color-text-muted)}
.sl-filters .fp-select{width:100%}
@media(max-width:767px){.fp-select__button{font-size:var(--font-size-touch)}}
@media(prefers-reduced-motion:reduce){.fp-select__button::after{transition:none}}

.race-tabs{display:flex!important;position:relative;isolation:isolate;gap:4px!important;width:max-content;max-width:100%;padding:5px!important;margin:16px 0 24px!important;border-radius:999px;background:var(--color-surface);overflow:auto;flex-wrap:nowrap!important}.race-tabs a{position:relative;z-index:1;white-space:nowrap;padding:10px 18px!important;border:0!important;border-radius:999px!important;background:transparent!important;box-shadow:none!important;font-size:14px;color:var(--color-text-muted)}.race-tabs a[aria-current]{color:var(--color-text)}.race-tabs__indicator{position:absolute;inset-inline-start:0;top:5px;bottom:5px;border-radius:999px;background:var(--color-surface-hover);transition:transform .22s ease,width .22s ease;pointer-events:none}.live-filter-status{font-size:12px;color:var(--color-text-muted);min-height:18px}.live-filter-status[role=alert]{color:var(--color-primary)}
@media(prefers-reduced-motion:reduce){.race-tabs__indicator{transition:none}}

/* One workspace geometry for all three race lists. */
#board-main.race-workspace,#sl-main.race-workspace{width:100%;max-width:none;margin-inline:0;padding:var(--space-8) clamp(var(--space-4),2vw,var(--space-8)) var(--space-10);min-width:0}
.race-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--space-12);margin:0}
.race-heading .display-2{font-size:var(--workspace-title-size,var(--font-size-page));line-height:1.2;margin:0;letter-spacing:-.025em}
.race-workspace>.race-tabs{margin:20px 0 28px!important}
.race-tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6)}
#board-main .race-tools .toolbar__grow{flex:1 1 100%;margin-inline-start:0}
.race-tools .live-filter-status:empty{display:none}
@media(max-width:767px){#board-main.race-workspace,#sl-main.race-workspace{padding:var(--space-6) var(--space-4) var(--space-8)}.race-heading .display-2{font-size:var(--workspace-title-size,var(--font-size-page));line-height:1.2}.race-heading{min-height:var(--space-10)}.race-heading>.chip{display:none}.race-workspace>.race-tabs{margin:var(--space-4) 0 var(--space-6)!important}.race-tools{gap:var(--space-2)}.race-tools>a{white-space:normal}}
/* Filtering never changes the geometry of its controls. */
#board-main .race-tools .toolbar__grow{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) 180px 108px 108px;align-items:start;gap:var(--space-3);width:100%;position:relative;padding-bottom:22px}
#board-main .toolbar__grow>.input{width:100%}.board-filter-reset.is-idle{visibility:hidden}.race-tools .live-filter-status{position:absolute;bottom:0;inset-inline-start:0;margin:0;line-height:18px}.race-tools .fp-select{width:100%}
.sl-filters{position:relative;padding-bottom:var(--space-5)}.sl-filters .live-filter-status{position:absolute;bottom:0;inset-inline-start:0}
.board-selection{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;min-height:var(--control-height);margin-top:var(--space-5);padding:var(--space-2) var(--space-3);background:var(--color-surface);border-radius:var(--control-radius);font-size:var(--font-size-control)}.board-selection label{display:flex;align-items:center;gap:var(--space-3)}.board-selection input,.board-row-check,.board-check-cell input{width:var(--choice-size);height:var(--choice-size);accent-color:var(--color-primary);cursor:pointer}.board-check-cell{width:var(--space-12)!important;min-width:var(--space-12)!important;max-width:var(--space-12)!important}.board-selectable{display:flex;align-items:center;gap:var(--space-3);padding-inline-start:var(--control-padding-x)}.board-selectable .sheet-row{flex:1;min-width:0}.board-row-check{flex-shrink:0}.is-selected{background:color-mix(in srgb,var(--color-primary) 7%,var(--color-surface))!important}.board-bulk-editor{padding:var(--space-5);background:var(--color-surface);border-radius:var(--control-radius);margin-top:var(--space-3)}.board-bulk-editor[hidden]{display:none}#board-bulk-form{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-4);margin-top:var(--space-4)}#board-bulk-form label{display:grid;gap:var(--space-2);font-size:var(--font-size-control)}.board-bulk-buttons,[data-bulk-status]{grid-column:1/-1}.board-bulk-buttons{display:flex;gap:var(--space-3);flex-wrap:wrap}
@media(max-width:1199px){#board-main .race-tools .toolbar__grow{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}#board-search{grid-column:1/-1}}
@media(max-width:767px){#board-main .race-tools .toolbar__grow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}#board-bulk-form{grid-template-columns:1fr}.board-selection{gap:var(--space-3)}.board-selection label{width:100%}}
.public-start-group{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:12px 20px;background:var(--color-surface-sunken);font-size:13px;color:var(--color-text-muted)}.public-start-row{display:grid;grid-template-columns:56px minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:20px;padding:20px}.public-start-row small{display:block;font-size:12px;color:var(--color-text-muted);margin-top:4px}.public-start-bib{font-weight:800;font-variant-numeric:tabular-nums}.public-start-dogs{font-size:14px}@media(max-width:767px){.public-start-row{grid-template-columns:36px minmax(0,1fr);gap:8px 12px;padding:16px}.public-start-dogs{grid-column:2}.public-start-row>span:last-child:not(:first-child){grid-column:2}}

html{scrollbar-gutter:stable}.sl-filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto;align-items:end}.sl-filters label{min-width:0}@media(max-width:1199px){.sl-filters{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:767px){.sl-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){#board-main :is(.table-card,.ui-table-region){margin-inline:0;width:100%}.board-selectable{padding-inline-start:12px}.board-selectable .sheet-row{padding-inline:10px}.board-selectable .sheet-row__main{min-width:0}}

.race-tabs__indicator{background:var(--color-primary)}.race-tabs a[aria-current]{color:var(--color-on-primary)!important;font-weight:700}.sl-publication-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 20px;margin-bottom:20px;border-radius:12px;background:var(--color-surface)}.sl-publication-controls p{font-size:13px;color:var(--color-text-muted);margin-top:5px}.sl-publication-controls form{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sl-publication-controls h2{font-size:16px;font-weight:700}

/* A discipline contains one continuous table; pair members share a row group. */
.public-discipline{margin-top:32px}.public-discipline>header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:16px 0}.public-discipline h3{font-size:24px;font-weight:800}.public-discipline>header>span{color:var(--color-text-muted);font-size:13px}
.public-roster{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;text-align:start;background:var(--color-surface);border-radius:12px;overflow:hidden}.public-roster-person{width:40%}.public-roster-club{width:30%}.public-roster-dogs{width:30%}.public-roster th,.public-roster td{padding:15px 20px;vertical-align:top;overflow-wrap:anywhere;text-align:start;font-size:15px;line-height:1.5}.public-roster thead th{background:var(--color-surface-hover);font-size:12px;color:var(--color-text-muted);font-weight:600;border-bottom:1px solid var(--color-border)}.public-roster-member th{font-weight:700;position:relative}.public-roster-member td{color:var(--color-text-secondary,var(--color-text))}.public-roster-member small{display:block;font-size:12px;color:var(--color-text-muted);font-weight:400;margin-top:4px}.public-roster tbody+tbody>tr:first-child>*{border-top:1px solid var(--color-border)}.public-roster .public-roster-caption td{padding:12px 20px 0;font-size:11px;letter-spacing:.02em;color:var(--color-text-muted)}.public-roster-pair .public-roster-member>*{padding-top:9px;padding-bottom:9px}.public-roster-pair .public-roster-member:last-child>*{padding-bottom:18px}.public-roster-pair .public-roster-member th::before{content:'';position:absolute;inset-inline-start:8px;top:0;bottom:0;width:5px;border-inline-start:2px solid var(--color-primary)}.public-roster-pair .public-roster-caption+.public-roster-member th::before{top:14px;border-top:2px solid var(--color-primary)}.public-roster-pair .public-roster-member:last-child th::before{bottom:25px;border-bottom:2px solid var(--color-primary)}
@media(max-width:767px){.public-discipline h3{font-size:22px}.public-discipline>header>span{font-size:12px;white-space:nowrap}.public-roster th,.public-roster td{padding:13px 10px;font-size:13px}.public-roster thead th{font-size:11px}.public-roster-member th{padding-inline-start:16px}.public-roster .public-roster-caption td{padding-inline-start:16px}.public-roster-pair .public-roster-member th::before{inset-inline-start:5px;width:4px}.public-roster-person{width:40%}.public-roster-club{width:29%}.public-roster-dogs{width:31%}}
.sl-discipline-title{font-size:24px;font-weight:800;margin:28px 0 12px}

.public-roster-wrap{border:0;background:transparent;box-shadow:none;min-width:0}.table-data.public-roster{min-width:0}.table-data.public-roster th,.table-data.public-roster td{white-space:normal}

/* Keyboard focus uses one existing boundary, never an outer ring or halo. */
:focus-visible{outline:none;box-shadow:none}
:where(input,select,textarea,button,.btn,.fp-select__button,.fp-select__search):focus-visible{outline:none;box-shadow:none;border-color:var(--control-focus)}
:where(input,select,textarea,button,.btn,.fp-select__button,.fp-select__search):focus{outline:none;box-shadow:none}
.input:focus,.select:focus,.textarea:focus,.fp-select__button:focus-visible,.fp-select__search:focus-visible{border-color:var(--control-focus);outline:none;box-shadow:none}
.input[aria-invalid=true]:focus,.select[aria-invalid=true]:focus,.textarea[aria-invalid=true]:focus,.fp-select__button[aria-invalid=true]:focus-visible{border-color:var(--control-error)}
:where(a,summary,[role=tab],[role=button]):focus-visible{text-decoration:underline;text-decoration-thickness:.125em;text-underline-offset:.2em}
button:focus-visible,.btn:focus-visible{border-color:var(--control-focus)}
.btn--primary:focus-visible{border-color:var(--color-on-primary);text-decoration:underline;text-decoration-thickness:.125em;text-underline-offset:.2em}
/* Main navigation pills opt into brand selection; subset filters stay neutral. */
.tabs--pills.tabs--accent .tabs__ind{background:var(--color-primary);box-shadow:none}
.tabs--pills.tabs--accent>[aria-current=page],.tabs--pills.tabs--accent>[aria-selected=true]{color:var(--color-on-primary);font-weight:var(--font-weight-label)}
.tabs--pills.tabs--accent:not(:has(.tabs__ind))>[aria-current=page],.tabs--pills.tabs--accent:not(:has(.tabs__ind))>[aria-selected=true]{background:var(--color-primary);box-shadow:none}

/* Tab labels share the control's centered content box, including editor/HTMX links. */
.tabs>:is(a,button),.race-tabs>a{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;vertical-align:middle;text-align:center}

/* Board filter layout responds to its actual width, including inspector push. */
#board-main .race-tools{container-type:inline-size;container-name:board-tools}
#board-main .race-tools .toolbar__grow{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(8rem,.8fr) auto auto}
#board-main .race-tools .toolbar__grow>:is(.input,.fp-select){min-width:0;max-width:100%}
@media(max-width:1199px){#board-main .race-tools .toolbar__grow{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){#board-main .race-tools .toolbar__grow{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container board-tools (max-width:58rem){#board-main .race-tools .toolbar__grow{grid-template-columns:repeat(3,minmax(0,1fr))}#board-search{grid-column:1/-1}}
@container board-tools (max-width:36rem){#board-main .race-tools .toolbar__grow{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Icon-only is a geometry modifier of the same button, not a new visual kind. */
.btn--icon{display:inline-flex;align-items:center;justify-content:center;width:var(--control-height);min-width:var(--control-height);height:var(--control-height);min-height:var(--control-height);padding:0;flex:none}
