/* =========================================================================
   leaderboard.css - styles specific to the Leaderboard page
   -------------------------------------------------------------------------
   Pairs with global.css (tokens, header, footer, buttons, container).
   All shades derive from --primary (injected on <html>) via color-mix(),
   so the whole board re-themes when the event base color changes.
   ========================================================================= */

/* ---- division tabs (top of the hierarchy: Division -> Overall / Round -> Leaderboard -> Flight) ---- */
.lb-divisions {
  display: flex;
  align-items: center;
  gap: 2px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--line);
  margin-bottom: 16px;
}
.lb-divisions-label {
  font-size: 10px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--soft);
  margin-right: 12px;
  white-space: nowrap;
}
.lb-division {
  padding: 9px 16px 11px;
  border: none;
  border-bottom: 2.5px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  color: var(--soft);
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  font-family: var(--sans);
  white-space: nowrap;
}
.lb-division:hover { color: var(--ink); }
.lb-division.is-active { color: var(--ink); font-weight: 700; border-bottom-color: var(--primary); }

/* ---- controls: round toggle + board selector ---- */
.lb-controls {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 26px 0 14px;
}
.lb-toggle { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.lb-pill {
  padding: 8px 14px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--soft);
  font-family: var(--sans);
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}
.lb-pill:hover { border-color: color-mix(in srgb, var(--primary), #fff 55%); }
.lb-pill.is-active { background: var(--primary); border-color: var(--primary); color: #fff; }

.lb-select-label {
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-size: 9px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--soft);
}
.lb-select-wrap { position: relative; }
.lb-select {
  appearance: none;
  background: var(--surface);
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 34px 9px 14px;
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  min-width: 220px;
}
.lb-select-wrap::after {
  content: "\25BE";
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  font-size: 10px;
  color: var(--soft);
}

/* ---- filters row: flight chips + search ---- */
.lb-filters {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  padding-bottom: 14px;
}
.lb-flights { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lb-flights-label {
  font-size: 9px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--soft);
  margin-right: 4px;
}
.lb-chip {
  padding: 7px 14px;
  border-radius: 20px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--soft);
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.lb-chip.is-active { background: var(--primary); border-color: var(--primary); color: #fff; }

.lb-search {
  display: flex;
  align-items: center;
  gap: 9px;
  background: color-mix(in srgb, var(--primary,#237A52) 8%, #fff);
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 9px 14px;
  min-width: 220px;
}
.lb-search svg { color: var(--soft); flex: none; }
.lb-search input {
  border: none;
  outline: none;
  background: color-mix(in srgb, var(--primary,#237A52) 8%, #fff);
  font-family: var(--sans);
  font-size: 13px;
  color: var(--ink);
  width: 100%;
}

/* ---- standings table ---- */
.lb-table {
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
  background: var(--surface);
}

.lb-table.no-table-wrap{
	border: none;
}

.lb-scroll { overflow-x: auto; }
.lb-grid {
  display: grid;
  grid-template-columns: 44px 46px minmax(180px, 1fr) 60px 62px 74px 84px 74px 30px;
  gap: 8px;
  align-items: center;
  min-width: 720px;
}
.lb-row { padding: 11px 16px; border-bottom: 1px solid var(--line); border-left: 3px solid transparent; }
.lb-row:last-child { border-bottom: none; }
.lb-row--head { padding: 12px 16px; border-bottom: 1px solid var(--line); }
.lb-row--clickable { cursor: pointer; background: var(--surface); }
.lb-row--clickable:hover { background: var(--tint); }
.lb-row--leader { border-left-color: var(--primary); }
.lb-row--fav { background: color-mix(in srgb, var(--primary), #fff 90%); border-left-color: color-mix(in srgb, var(--primary), #C9A23A 60%); }

.lb-th {
  font-size: 9.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--soft);
  font-weight: 600;
}
.lb-c-center { text-align: center; }
.lb-c-right { text-align: right; }

.lb-pos { font-weight: 700; font-size: 14px; color: var(--ink); font-variant-numeric: tabular-nums; }
.lb-pos--leader { color: color-mix(in srgb, var(--primary), #C9A23A 55%); }

.lb-player { display: flex; align-items: center; gap: 10px; min-width: 0; }
.lb-name { font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-affil { font-size: 11px; color: var(--soft); }
.lb-num { font-size: 14px; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.lb-total { font-size: 16px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.lb-topar { font-size: 13px; font-weight: 700; color: var(--soft); font-variant-numeric: tabular-nums; }
.lb-topar--under { color: #B23B3B; }
.lb-caret { text-align: center; color: color-mix(in srgb, var(--soft), #fff 40%); font-size: 15px; }

.lb-group {
  padding: 9px 16px;
  background: color-mix(in srgb, var(--primary), #fff 92%);
  border-bottom: 1px solid var(--line);
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--primary);
}

/* avatar + squad + tee dot */
.lb-avatar {
  width: 32px; height: 32px; flex: none;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 12px; font-weight: 700;
  overflow: hidden;                 /* clips the photo to the circle */
}
.lb-avatar--photo { background: var(--tint); }
.lb-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }

.lb-squad {
  display: flex; align-items: center; justify-content: center;
  min-width: 0;
}
.lb-squad-name {
  max-width: 100%;
  text-align: center;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lb-squad img { width: 100%; height: 100%; object-fit: contain; }
.lb-tee-dot {
  width: 11px; height: 11px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.28);
  display: inline-block;
  flex: none;
}
.lb-thru { font-size: 13px; color: var(--soft); font-variant-numeric: tabular-nums; }

.lb-foot {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 12px 2px 0;
  font-size: 11px;
  color: var(--soft);
}
.lb-empty { padding: 30px 16px; text-align: center; color: var(--soft); font-size: 16px; }

/* =========================================================================
   slide-up detail sheet
   ========================================================================= */
.sheet {
  position: fixed; inset: 0; z-index: 60;
  background: rgba(0,0,0,.42);
  display: flex; align-items: flex-end; justify-content: center;
}
.sheet[hidden] { display: none; }
.sheet-panel {
  width: min(800px, 100%);
  max-height: 88vh;
  background: #fff;
  border-radius: 16px 16px 0 0;
  border-top: 4px solid var(--primary);
  display: flex; flex-direction: column;
  overflow: hidden;
  animation: sheet-up .26s cubic-bezier(.22,.61,.36,1);
}
@keyframes sheet-up { from { transform: translateY(100%); } to { transform: translateY(0); } }

.sheet-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; padding: 18px 22px 14px;
}
.sheet-id { display: flex; align-items: center; gap: 12px; min-width: 0; }
.sheet-name { font-size: 18px; font-weight: 700; color: var(--ink); }
.sheet-sub { font-size: 12px; color: var(--soft); margin-top: 2px; }
.sheet-head-actions { display: flex; align-items: center; gap: 8px; flex: none; }

.sheet-fav, .sheet-close {
  width: 34px; height: 34px;
  border-radius: 50%;
  border: none;
  background: var(--tint);
  color: var(--ink);
  font-size: 15px;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
}
.sheet-fav svg { width: 18px; height: 18px; }
.sheet-fav.is-fav svg { fill: #B08833; stroke: #B08833; }
.sheet-fav svg { fill: none; stroke: #9AA79F; }

.sheet-stats {
  display: flex; gap: 28px; flex-wrap: wrap;
  padding: 0 22px 16px;
  border-bottom: 1px solid var(--line);
}
.sheet-stat { display: flex; flex-direction: column; gap: 3px; }
.sheet-stat-label { font-size: 9px; letter-spacing: .14em; text-transform: uppercase; color: var(--soft); }
.sheet-stat-val { font-size: 15px; font-weight: 700; color: var(--ink); display: flex; align-items: center; gap: 6px; }

.sheet-tabs {
  display: flex; flex-wrap: wrap; column-gap: 22px;
  padding: 4px 22px 0;
  border-bottom: 1px solid var(--line);
}
.sheet-tab {
  border: none; background: none;
  padding: 10px 2px;
  cursor: pointer;
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 500;
  color: var(--soft);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.sheet-tab.is-active { color: var(--ink); font-weight: 700; border-bottom-color: var(--primary); }

.sheet-body { overflow-y: auto; flex: 1; }
.sheet-round-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px; padding: 14px 22px 4px;
}
.sheet-round-name { font-size: 12px; font-weight: 700; color: var(--ink); }
.sheet-course { display: flex; align-items: center; gap: 6px; margin-top: 3px; font-size: 11.5px; color: var(--soft); }
.sheet-round-tot { display: flex; gap: 10px; align-items: baseline; flex: none; }
.sheet-round-gross { font-size: 20px; font-weight: 700; color: var(--ink); }
.sheet-round-par { font-size: 13px; font-weight: 700; color: var(--soft); }
.sheet-round-par--under { color: #B23B3B; }
.sheet-pad { height: 100px; }

/* scorecard */
.card {
  background: var(--paper);
  border-top: 1px solid var(--line);
  padding: 10px 16px;
  overflow-x: auto;
}
.card-grid { display: grid; gap: 2px; }
.card-cell {
  height: 24px;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.card-head {
  font-size: 9px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--soft); font-weight: 600;
  display: flex; align-items: center;
}
.card-cell--soft { color: var(--soft); }
.card-cell--faint { color: color-mix(in srgb, var(--soft), #fff 45%); font-size: 9.5px; }
.card-cell--strong { font-weight: 700; color: var(--ink); }
.card-cell--empty { color: color-mix(in srgb, var(--soft), #fff 55%); }
.card-mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 19px; height: 19px; font-weight: 700;
}
.card-mark--eagle { background: #B08833; color: #fff; border-radius: 50%; }
.card-mark--birdie { color: var(--primary); border: 1.5px solid var(--primary); border-radius: 50%; }
.card-mark--bogey { border: 1.5px solid color-mix(in srgb, var(--soft), #fff 30%); border-radius: 4px; }
.card-mark--dbogey { background: #B23B3B; color: #fff; border-radius: 4px; }
.card-drop { text-decoration: line-through; text-decoration-color: #B23B3B; color: color-mix(in srgb, var(--soft), #fff 40%); font-weight: 600; }
.card-legend { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 10.5px; color: var(--soft); }

@media (max-width: 560px) {
  .lb-select { min-width: 0; width: 100%; }
  .lb-search { min-width: 0; width: 100%; }
  .lb-filters { flex-direction: column; align-items: stretch; }
}

/* =========================================================================
   Extensions for the JSP build - board families beyond the base stroke
   table (match play, field matches, skins/winner, pick-a-pro, combination,
   eclectic) plus sheet sections shared by the display fragments.
   All shades still derive from --primary; no hard-coded palette values.
   ========================================================================= */

/* ---- shared status blocks ---- */
.lb-working { display: flex; justify-content: center; padding: 40px 0; }
.lb-error {
  margin: 12px 0; padding: 12px 16px;
  border: 1px solid #B23B3B; border-radius: 8px;
  background: color-mix(in srgb, #B23B3B, #fff 92%);
  color: #B23B3B; font-size: 13px;
}
.lb-nodata { padding: 34px 16px; text-align: center; color: var(--soft); font-size: 16px; }
.lb-note { padding: 0 2px 12px; font-size: 11.5px; color: var(--soft); }
.lb-section-label {
  font-size: 9px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--soft); font-weight: 700; padding: 0 2px 8px;
}
.lb-section-label--fav { color: #B08833; }

/* ---- squad badge (logo in a white circle, monogram, or name) ---- */
.lb-squad-badge {
  width: 26px; height: 26px; border-radius: 50%; flex: none;
  background: #fff;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--ink), transparent 92%), 0 1px 3px rgba(0,0,0,.12);
  display: inline-flex; align-items: center; justify-content: center; overflow: hidden;
}
.lb-squad-badge img { width: 82%; height: 82%; object-fit: contain; }
.lb-squad-name { font-size: 11px; font-weight: 600; color: var(--soft); }

/* ---- team monogram avatar (square-ish) ---- */
.lb-avatar--team { border-radius: 7px; letter-spacing: .02em; }

/* ---- live / unofficial marker ---- */
.lb-live { font-size: 9.5px; letter-spacing: .08em; text-transform: uppercase; color: #B08833; font-weight: 700; }

/* ---- excluded (dropped) round or hole value ---- */
.lb-excluded { text-decoration: line-through; text-decoration-color: #B23B3B; color: color-mix(in srgb, var(--soft), #fff 40%); }

/* ---- match play pairing cards ---- */
.lb-match-card {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 16px; margin-bottom: 10px;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); cursor: pointer;
}
.lb-match-card:hover { border-color: color-mix(in srgb, var(--primary), #fff 45%); }
.lb-match-card--fav { border-color: #B08833; background: rgba(176,136,51,.07); }
/* Give both sides equal padding so heights stay aligned; the winning side is tinted below. */
.lb-match-side { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; padding: 8px 12px; border-radius: 8px; }
.lb-match-side--right { flex-direction: row-reverse; text-align: right; }
.lb-match-side--lost { opacity: .5; }
/* Winner / won side gets a soft primary-tinted background to call out the winner. */
.lb-match-side--won {
  background: color-mix(in srgb, var(--primary), transparent 85%);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary), transparent 74%);
}
.lb-match-side-name { font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-match-side--won .lb-match-side-name { font-weight: 700; }
.lb-match-side-sub { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--soft); }
.lb-match-side--right .lb-match-side-sub { flex-direction: row-reverse; }
.lb-match-win-chip {
  flex: none; font-size: 10px; font-weight: 700; color: var(--primary);
  border: 1px solid var(--primary); border-radius: 20px; padding: 2px 8px;
}
.lb-match-mid { flex: none; text-align: center; min-width: 78px; }
.lb-match-result { font-size: 12px; font-weight: 700; color: var(--soft); }
.lb-match-result--decided { color: var(--primary); }
.lb-match-vs { font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--soft); margin-top: 2px; }
.lb-match-pts { flex: none; text-align: right; min-width: 64px; }
.lb-match-pts-label { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; color: var(--soft); }
.lb-match-pts-val { font-size: 12px; font-weight: 700; color: var(--ink); }

/* ---- points values ---- */
.lb-pts { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--ink); }
.lb-pts--neg { color: #B23B3B; }
.lb-result--won { color: var(--primary); font-weight: 600; }
.lb-result--lost { color: #B23B3B; font-weight: 600; }
.lb-result--halved { color: var(--soft); font-weight: 600; }

/* ---- skins / winner-by-hole rows ---- */
.lb-hole-row--won { background: color-mix(in srgb, var(--primary), transparent 96%); }
.lb-tie-chip {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12.5px; font-weight: 600; color: var(--ink);
  background: var(--tint); border-radius: 20px; padding: 2px 9px;
}
.lb-carryover { font-size: 12.5px; color: var(--soft); font-style: italic; }

/* ---- sheet: header value block (Combined / Points / Eclectic) ---- */
.sheet-headval { text-align: right; flex: none; }
.sheet-headval-label { font-size: 9px; letter-spacing: .14em; text-transform: uppercase; color: var(--soft); }
.sheet-headval-nums { display: flex; gap: 8px; align-items: baseline; justify-content: flex-end; }
.sheet-headval-score { font-size: 22px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.sheet-headval-par { font-size: 13px; font-weight: 700; color: var(--soft); }
.sheet-headval-par--under { color: #B23B3B; }

/* ---- sheet: simple line rows (pick-a-pro, combination components) ---- */
.sheet-line {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 22px; border-bottom: 1px solid var(--line);
}
.sheet-line-main { min-width: 0; flex: 1; display: flex; align-items: center; gap: 11px; }
.sheet-line-name { font-size: 13.5px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sheet-line-sub { font-size: 11px; color: var(--soft); margin-top: 2px; }
.sheet-line--dim { opacity: .5; }
.sheet-line--counted { background: color-mix(in srgb, var(--primary), transparent 95%); }
.sheet-line-vals { flex: none; display: flex; gap: 14px; align-items: baseline; }
.sheet-line-score { font-size: 15px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.sheet-line-score--strong { font-size: 18px; }
.sheet-line-par { width: 48px; text-align: right; font-size: 12.5px; font-weight: 700; color: var(--soft); font-variant-numeric: tabular-nums; }
.sheet-line-par--under { color: #B23B3B; }
.sheet-counts-chip {
  flex: none; font-size: 9px; font-weight: 700; color: var(--primary);
  border: 1px solid var(--primary); border-radius: 20px; padding: 2px 7px;
}
.sheet-total-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 16px 22px; background: var(--paper); border-top: 2px solid var(--primary);
}
.sheet-total-label { font-size: 13px; font-weight: 700; color: var(--primary); letter-spacing: .04em; text-transform: uppercase; }

/* ---- sheet: team member list ---- */
.sheet-member { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.sheet-member-name { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.sheet-member-sub { font-size: 11px; color: var(--soft); }
.sheet-member-tee { display: flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--soft); flex: none; }
.sheet-member-hc { width: 60px; text-align: right; font-size: 12.5px; color: var(--ink); font-weight: 600; font-variant-numeric: tabular-nums; flex: none; }
.sheet-team-hc-bar {
  display: flex; justify-content: space-between; align-items: center;
  margin: 12px 22px 14px; padding: 9px 12px; background: var(--tint); border-radius: 8px;
}
.sheet-team-hc-label { font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--primary); font-weight: 700; }
.sheet-team-hc-val { font-size: 16px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.sheet-block { padding: 0 22px; }
.sheet-block-label {
  font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--soft); font-weight: 700; padding: 12px 0 4px;
  border-top: 1px solid var(--line);
}
.sheet-member-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 10px 20px 4px; }
.sheet-member-card-who { display: flex; align-items: center; gap: 8px; min-width: 0; }

/* ---- scorecard: counted-ball highlighting (ball select / best ball) ---- */
.card-cell--counted { background: color-mix(in srgb, var(--primary), transparent 90%); border-radius: 4px; }
.card-cell--counted-emph { background: color-mix(in srgb, var(--primary), transparent 84%); box-shadow: inset 0 0 0 1.5px var(--primary); border-radius: 4px; position: relative; }
.card-cell--dim { opacity: .32; }
.card-check {
  position: absolute; top: -4px; right: -1px;
  width: 11px; height: 11px; border-radius: 50%;
  background: var(--primary); color: #fff; font-size: 7px; font-weight: 900;
  display: flex; align-items: center; justify-content: center; line-height: 1;
}

/* ---- match sheet: mirrored hole-by-hole ---- */
.sheet-match-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 22px 14px; }
.sheet-match-mid { flex: none; text-align: center; min-width: 54px; padding-top: 6px; }
.sheet-match-status {
  display: flex; justify-content: center; align-items: center; gap: 10px;
  padding: 0 22px 14px; border-bottom: 1px solid var(--line);
  font-size: 13px; font-weight: 700; color: var(--soft);
}
.sheet-match-status .winner { color: var(--primary); }
.sheet-match-status .meta { font-size: 11px; color: var(--soft); font-weight: 400; }
.sheet-match-favrow { display: flex; gap: 10px; padding: 12px 22px 14px; border-bottom: 1px solid var(--line); }
.sheet-match-favside { flex: 1; display: flex; align-items: center; gap: 8px; justify-content: center; font-size: 11.5px; color: var(--soft); }
.sheet-match-grid { display: grid; grid-template-columns: 1fr 56px 1fr; gap: 6px; align-items: center; padding: 8px 16px; border-bottom: 1px solid var(--line); }
.sheet-match-grid--head { position: sticky; top: 0; background: var(--surface); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; color: var(--soft); text-align: center; padding: 10px 16px 6px; border-bottom: none; }
.sheet-match-grid--closed { background: color-mix(in srgb, var(--primary), transparent 94%); }
.sheet-match-grid--after { opacity: .45; }
.sheet-match-hole { text-align: center; }
.sheet-match-hole-num { font-size: 12px; color: var(--ink); font-weight: 600; }
.sheet-match-hole-meta { font-size: 9px; color: var(--soft); }
.sheet-match-score { display: flex; justify-content: center; }
.sheet-match-score span {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%;
  font-weight: 700; font-size: 12.5px; font-variant-numeric: tabular-nums; color: var(--ink);
}
.sheet-match-score--won span { background: var(--primary); color: #fff; }

/* ---- sheet: favorite star active state ---- */
.sheet-fav.is-fav { background: rgba(176,136,51,.15); }
.sheet-fav.is-fav svg { fill: #B08833; stroke: #B08833; }

/* ---- eclectic grid ---- */
.ecl-grid { display: grid; gap: 2px; }
.ecl-lab { height: 26px; display: flex; align-items: center; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--soft); font-weight: 700; }
.ecl-lab--round { color: var(--ink); text-transform: none; font-size: 11px; }
.ecl-lab--best { color: var(--primary); }
.ecl-cell { height: 26px; display: flex; align-items: center; justify-content: center; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.ecl-cell--soft { color: var(--soft); }
.ecl-cell--faint { color: color-mix(in srgb, var(--soft), #fff 45%); font-size: 9.5px; }
.ecl-cell--strong { font-weight: 700; color: var(--ink); }
.ecl-cell--best { font-weight: 700; color: var(--primary); }
.ecl-best-mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 6px;
  background: var(--primary); color: #fff; font-weight: 700;
}