.league-filter-card { margin-bottom: 22px; padding: 18px 22px; }
.league-create-card, .league-category-card, .league-phase-dates-card { margin-bottom: 22px; padding: 23px; }
.league-filter-form { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; gap: 15px; }
.league-filter-form label, .league-admin-form label { min-width: 0; }
.league-admin-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px; align-items: start; }
.league-admin-grid > .portal-card, .league-round-card { min-width: 0; padding: 23px; }
.league-admin-form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; padding: 0; }
.league-category-form { grid-template-columns: repeat(4,minmax(0,1fr)); align-items: end; }
.league-phase-dates-form { grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; }
.league-create-form { grid-template-columns: repeat(2,minmax(0,1fr)); }
.league-admin-form input, .league-admin-form select { min-width: 0; font-size: 12px; }
.league-admin-form > button { align-self: end; }
.league-inline-form { grid-template-columns: minmax(0,1fr) auto; align-items: end; margin: 0 0 16px; }
.league-roster, .league-byes ul { list-style: none; margin: 0; padding: 0; }
.league-roster li { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-top: 1px solid var(--portal-border); font-size: 11px; }
.league-roster small, .league-muted { color: var(--muted); }
.league-muted { margin: 12px 0 0; font-size: 11px; }
.league-round-card { margin-top: 22px; }
.league-round-form { margin: 0 0 25px; }
.league-round { padding: 20px 0; border-top: 1px solid var(--portal-border); }
.league-round > header { display: flex; align-items: start; justify-content: space-between; gap: 18px; margin-bottom: 16px; }
.league-round > header span { color: var(--muted); font-size: 9px; font-weight: 700; text-transform: uppercase; }
.league-round h3 { margin: 4px 0; font: 400 25px/1.1 var(--serif); }
.league-round > header p { margin: 5px 0; color: var(--muted); font-size: 10px; }
.league-fixture-form, .league-bye-form { margin: 16px 0 0; }
.league-fixture-form { grid-template-columns: 1.2fr .55fr 1fr 1fr auto; align-items: end; }
.league-bye-form { grid-template-columns: 1.2fr 1fr .55fr auto; align-items: end; }
.league-fixtures, .league-byes { margin-top: 20px; }
.league-fixtures h4, .league-byes h4 { margin: 0 0 10px; font: 700 11px var(--sans); }
.league-fixture-row { display: grid; grid-template-columns: minmax(180px,1fr) minmax(160px,.8fr) minmax(120px,.7fr) auto; align-items: end; gap: 12px; padding: 12px 0; border-top: 1px solid var(--portal-border); }
.league-fixture-row label { min-width: 0; }
.league-fixture-row input { min-width: 0; font-size: 11px; }
.league-fixture-pair { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 8px; padding-bottom: 11px; font-size: 11px; }
.league-fixture-pair span { color: var(--muted); font-size: 9px; text-transform: uppercase; }
.league-byes li { display: inline-flex; margin: 0 7px 7px 0; padding: 6px 9px; background: #f1f3ea; font-size: 10px; }
@media(max-width:1050px){.league-fixture-form{grid-template-columns:repeat(2,minmax(0,1fr))}.league-fixture-row{grid-template-columns:1fr 1fr}.league-fixture-pair{grid-column:1/-1}}
@media(max-width:1050px){.league-category-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.league-filter-form,.league-admin-grid,.league-admin-form,.league-inline-form,.league-round-form,.league-fixture-form,.league-bye-form,.league-fixture-row{grid-template-columns:1fr}.league-round > header{display:block}.league-fixture-pair{grid-column:auto}}
.league-fixture-card { padding: 12px 0; border-top: 1px solid var(--portal-border); }
.league-fixture-edit { margin: 4px 0 10px; }
.league-fixture-edit > summary { width: fit-content; color: var(--ink-soft); font-size: 10px; font-weight: 700; cursor: pointer; }
.league-fixture-edit > form { margin-top: 12px; }
.league-public-page { --ink: #1d1d1b; --ink-soft: #42423c; --muted: #62625c; }
.league-public-page { --portal-border: #e4e1d8; display: grid; min-width: 0; gap: 26px; padding-block: 26px 56px; }
.league-public-page > *, .league-public-group, .league-public-standings, .league-public-table-wrap { min-width: 0; }
.league-public-note { display: flex; align-items: baseline; gap: 16px; padding: 14px 18px; border-left: 3px solid #c9a64e; background: #f3f1e8; }
.league-public-note > span, .league-public-category > header > span, .league-public-group-heading > div > span { color: var(--muted); font-size: 9px; font-weight: 800; letter-spacing: .08em; }
.league-public-note p { margin: 0; font-size: 12px; }
.league-category-selector { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 14px; }
.league-category-choice { display: flex; min-width: 0; min-height: 92px; align-items: center; justify-content: center; padding: 18px; border: 1px solid #bba779; background: #fff; color: var(--ink); text-align: center; text-decoration: none; transition: border-color .15s ease,background-color .15s ease; }
.league-category-choice:hover { border-color: #765712; background: #faf8f2; }
.league-category-choice:focus-visible { outline: 3px solid #b58b2b; outline-offset: 3px; }
.league-category-choice.is-selected { border-color: var(--ink); background: var(--ink); color: #fff; }
.league-category-choice strong { font: 700 22px/1.2 var(--sans); }
.league-group-selector { display: grid; grid-template-columns: repeat(auto-fit,minmax(170px,1fr)); gap: 12px; margin: 18px 0 24px; }
.league-group-choice { display: flex; min-height: 68px; align-items: center; justify-content: center; padding: 15px 18px; border: 1px solid #bba779; color: var(--ink); background: #fff; font: 700 18px/1.2 var(--sans); text-decoration: none; text-align: center; }
.league-group-choice:hover { border-color: #765712; background: #faf8f2; }
.league-group-choice.is-selected { border-color: var(--ink); color: #fff; background: var(--ink); }
.league-group-choice:focus-visible { outline: 3px solid #b58b2b; outline-offset: 3px; }
.league-public-category-prompt,.league-public-category-error { margin: 0; padding: 15px 18px; border-left: 3px solid #c9a64e; background: #f3f1e8; color: var(--ink-soft); font-size: 12px; }
.league-public-category-error { border-color: #a51f2b; background: #fff0f1; color: #6d2027; }
.league-public-rules { padding: 21px; border: 1px solid var(--portal-border); background: #f8f7f2; }
.league-public-rules > header > span { color: var(--muted); font-size: 9px; font-weight: 800; letter-spacing: .08em; }
.league-public-rules > header h2 { margin: 5px 0 17px; font: 400 28px/1.1 var(--serif); }
.league-public-rules-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; }
.league-public-rules-grid article { min-width: 0; padding-top: 12px; border-top: 1px solid var(--portal-border); }
.league-public-rules-grid h3 { margin: 0 0 8px; font: 700 12px var(--sans); }
.league-public-rules-grid p, .league-public-rules-grid li { color: var(--ink-soft); font-size: 10px; line-height: 1.55; }
.league-public-rules-grid p { margin: 7px 0 0; }
.league-public-rules-grid ul { display: grid; gap: 6px; margin: 0; padding-left: 17px; }
.league-public-category > header { margin-bottom: 17px; }
.league-public-category > header h2 { margin: 0; font: 700 27px/1.2 var(--sans); }
.league-public-format { margin: 7px 0 0; color: var(--muted); font-size: 11px; }
.league-public-group { margin-top: 28px; padding: 0; border: 0; background: transparent; }
.league-public-group-heading { display: grid; grid-template-columns: minmax(120px,.55fr) minmax(0,1.45fr); align-items: start; gap: 20px; }
.league-public-group-heading h3 { margin: 0 0 5px; font: 700 21px/1.2 var(--sans); }
.league-public-group-phase p { margin: 4px 0; color: var(--ink-soft); font-size: 10px; line-height: 1.5; }
.league-public-roster { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; padding: 0; list-style: none; }
.league-public-roster li { padding: 7px 9px; background: #f1f3ea; font-size: 10px; }
.league-public-round { margin-top: 24px; border-top: 1px solid var(--portal-border); }
.league-public-round > header { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; padding: 12px 0; text-align: center; }
.league-public-round h4 { margin: 0; font: 700 13px var(--sans); }
.league-public-round > header p { margin: 0; color: var(--muted); font-size: 10px; }
.league-public-fixture { display: grid; grid-template-columns: minmax(0,1fr) minmax(140px,.35fr) auto; align-items: center; gap: 14px; padding: 12px 0; border-top: 1px solid #eee; scroll-margin-top: var(--league-scroll-offset, 210px); }
.league-public-page:not(.league-public-page--manager) .league-public-fixture { grid-template-columns: minmax(0,1fr) minmax(140px,.35fr); }
.league-public-pair { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); align-items: center; gap: 10px; }
.league-score { display: inline-flex; align-items: center; justify-content: center; gap: 5px; font-variant-numeric: tabular-nums; }
.league-score-set { white-space: nowrap; }
.league-player-match-actions { display: grid; justify-items: stretch; gap: 6px; max-width: 152px; }
.league-player-match-actions > .league-score { padding: 4px 0; }
.league-personal-fixture .league-report-result { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; padding: 9px 12px; border: 1px solid #12624d; border-radius: 4px; background: #fff; color: #12624d; font: 800 11px/1.3 var(--sans); text-align: center; text-decoration: none; }
.league-personal-fixture .league-report-result:hover { background: #dcefe1; color: #0c4839; }
.league-personal-fixture .league-report-result:focus-visible { outline: 3px solid #238a69; outline-offset: 3px; }
.league-personal-fixture .league-report-result--pending { border-color: #9a721e; background: #fff4d4; color: #71500c; }
.league-personal-fixture .league-report-result--pending:hover { background: #ffebad; color: #5a3d06; }
@media(max-width:700px){.league-personal-fixture--reportable.league-personal-fixture .league-public-pair{grid-template-columns:minmax(0,1fr) 112px minmax(0,1fr);gap:8px}.league-personal-fixture .league-report-result{padding-inline:7px;font-size:10px}.league-player-match-actions{max-width:132px}}
@media(max-width:700px){.league-score{flex-direction:column;gap:3px;line-height:1.3}.league-public-pair{grid-template-columns:minmax(0,1fr) 48px minmax(0,1fr)}.league-score-set{display:block}}
.league-public-side { display: grid; gap: 4px; font-size: 12px; }
.league-public-side strong { min-width: 0; overflow-wrap: anywhere; }
.league-public-side--away { text-align: right; }
.league-public-pair > b { text-align: center; font-size: 10px; }
.league-public-appointment { display: flex; flex-direction: column; justify-content: center; gap: 4px; color: var(--muted); text-align: right; font-size: 10px; }
.league-public-match-state { color: #775812; font-size: 10px; line-height: 1.5; }
.league-retired-flag { display: block; margin-top: 4px; color: #5c5b55; font-size: 10px; }
.league-public-draft-note { padding: 12px 14px; border-left: 3px solid #a78026; background: #fff7de; color: #684d0f; font-size: 12px; }
.league-public-fixture-actions,.league-public-playoff-actions { display: flex; align-items: center; justify-content: flex-end; }
.league-public-edit-link { display: inline-flex; min-width: 86px; min-height: 44px; align-items: center; justify-content: center; padding: 9px 14px; border: 1px solid #b9b8ad; color: var(--ink); font-size: 11px; font-weight: 800; text-decoration: none; }
.league-public-edit-link:hover { border-color: var(--ink); background: #f3f1e8; }
.league-public-edit-link:focus-visible { outline: 3px solid #b58b2b; outline-offset: 3px; }
.league-public-byes { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 0; padding: 0; list-style: none; }
.league-public-byes li { display: flex; gap: 9px; padding: 5px 0; background: transparent; font-size: 11px; }
.league-public-byes small { color: var(--muted); }
.league-public-empty { margin: 10px 0; color: var(--muted); font-size: 11px; }
.league-standing-card,.league-playoff-admin-card { margin-top: 22px; padding: 23px; }
.league-threshold-legend,.league-public-threshold-legend { margin: 0 0 12px; padding: 10px 12px; border-left: 3px solid #a51f2b; color: #6d2027; background: #fff0f1; font-size: 10px; }
.league-table-wrap,.league-public-table-wrap { overflow-x: auto; }
.league-standings,.league-public-standings table { width: 100%; border-collapse: collapse; font-size: 10px; }
.league-standings { min-width: 760px; }
.league-public-standings table { min-width: 780px; font-size: 12px; }
.league-standings th,.league-standings td,.league-public-standings th,.league-public-standings td { padding: 9px 10px; border-bottom: 1px solid var(--portal-border); text-align: center; white-space: nowrap; }
.league-public-standings th,.league-public-standings td { padding: 10px 9px; }
.league-standings th,.league-public-standings th { color: var(--muted); background: #f4f3ed; font-size: 9px; text-transform: uppercase; }
.league-standings th:nth-child(2),.league-standings td:nth-child(2),.league-public-standings th:nth-child(2),.league-public-standings td:nth-child(2) { text-align: left; }
.league-below-threshold { color: #7f1822; background: #fff0f1 !important; }
.league-threshold-flag { display: block; width: fit-content; margin-top: 4px; color: #8d1722; font-size: 9px; font-weight: 800; }
.league-pending-draw { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: 12px; padding: 12px; border: 1px solid #d5ad58; background: #fff9e8; }
.league-pending-draw > div { display: grid; gap: 4px; font-size: 10px; }
.league-pending-draw > div span { color: var(--muted); }
.league-result-entry,.league-playoff-match details { margin-top: 9px; }
.league-result-entry > summary,.league-playoff-match summary { width: fit-content; color: var(--ink-soft); font-size: 10px; font-weight: 700; cursor: pointer; }
.league-result-form { grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; margin-top: 12px; padding: 14px; background: #f7f6f1; }
.league-result-form > small { grid-column: 1/-1; color: var(--muted); font-size: 9px; }
.league-result-saved { margin: 8px 0; color: #355a32; font-size: 10px; }
.league-playoff-prepare-form { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 12px 0; }
.league-playoff-prepare-form small { color: var(--muted); font-size: 9px; }
.league-playoff-entry { margin: 16px 0 22px; padding: 15px; background: #f5f4ee; }
.league-playoff-entry h3,.league-playoff-fixtures h3 { margin: 0 0 12px; font: 700 12px var(--sans); }
.league-playoff-form { grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; }
.league-playoff-match { margin-top: 10px; padding: 14px; border: 1px solid var(--portal-border); background: white; }
.league-playoff-match > header { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 9px; font-size: 10px; }
.league-playoff-match > header span { color: var(--muted); }
.league-playoff-match > p { margin: 5px 0; padding: 7px; font-size: 11px; }
.league-public-standings { margin-top: 16px; }
.league-public-standings h4 { margin: 0 0 9px; font: 700 13px var(--sans); }
.league-public-table-legend { margin: 0 0 10px; color: var(--muted); font-size: 9px; line-height: 1.6; }
.league-public-standings abbr { text-decoration: none; text-underline-offset: 2px; }
.league-public-playoff { margin-top: 26px; padding-top: 17px; border-top: 1px solid var(--portal-border); }
.league-public-playoff > header > span { color: var(--muted); font-size: 9px; font-weight: 800; letter-spacing: .08em; }
.league-public-playoff h3 { margin: 0 0 12px; font: 700 22px/1.2 var(--sans); }
.league-public-playoff-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.league-public-playoff-match { display: flex; min-width: 0; flex-direction: column; gap: 9px; padding: 14px 0; border: 0; border-top: 1px solid var(--portal-border); background: transparent; scroll-margin-top: var(--league-scroll-offset, 210px); }
.league-public-playoff-match > header { display: flex; justify-content: space-between; gap: 12px; font-size: 10px; }
.league-public-playoff-match > header span { color: var(--muted); }
.league-public-playoff-match p { margin: 8px 0 0; padding-top: 7px; border-top: 1px solid #eee; font-size: 11px; }
.league-public-playoff-appointment { display: flex; flex-wrap: wrap; gap: 4px 12px; color: var(--muted); font-size: 10px; }
.league-public-playoff-actions { margin-top: auto; }
@media(max-width:1050px){.league-result-form,.league-playoff-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.league-public-rules-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.league-category-selector,.league-group-selector,.league-public-playoff-grid,.league-public-rules-grid{grid-template-columns:1fr}.league-category-choice{min-height:76px}.league-result-form,.league-playoff-form{grid-template-columns:1fr}.league-result-form>small{grid-column:auto}.league-pending-draw{align-items:start;flex-direction:column}}
@media(max-width:700px){.league-public-group-heading,.league-public-fixture,.league-public-page:not(.league-public-page--manager) .league-public-fixture{grid-template-columns:1fr}.league-public-round > header{gap:4px}.league-public-appointment{text-align:left}.league-public-fixture-actions,.league-public-playoff-actions{justify-content:flex-start}.league-public-note{align-items:start;flex-direction:column;gap:5px}}
