/* ================================================================
   RESET + BASE
   ================================================================ */
*, *::before, *::after { box-sizing: border-box; }
html {
  color-scheme: dark;
  scroll-behavior: smooth;
  width: 100%;
  overflow-x: hidden;
}
body {
  margin: 0;
  width: 100%;
  min-width: 0;
  min-height: 100vh;
  font-family: var(--font-ui);
  font-size: 15px;
  line-height: 1.5;
  color: var(--text-body);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, canvas, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { color: inherit; cursor: pointer; }
h1, h2, h3, h4 { margin: 0; }
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-track { background: var(--surface); }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 4px; }

/* ================================================================
   FONTS
   ================================================================ */
:root {
  --font-ui:      Aptos, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-display: var(--font-ui);
  --font-mono:    ui-monospace, "SFMono-Regular", "Cascadia Mono", "Roboto Mono", "Liberation Mono", monospace;
  --font-money:   var(--font-ui);
}

/* ================================================================
   APP SHELL
   ================================================================ */
.topbar {
  position: sticky; top: 0; z-index: 50;
  background: rgba(15,15,18,.86);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border);
}
.topbar__inner {
  max-width: var(--w-admin);
  margin: 0 auto;
  padding: 0 var(--gutter);
  height: 62px;
  display: flex;
  align-items: center;
  gap: 28px;
  min-width: 0;
}
.brand {
  display: flex;
  align-items: center;
  gap: 11px;
  flex: none;
}
.brand__mark {
  width: 26px; height: 26px;
  border-radius: 5px;
  background: var(--accent);
  box-shadow: 0 0 0 1px var(--accent-a30), 0 4px 14px var(--accent-a22);
  position: relative;
  flex: none;
}
.brand__mark::after {
  content: "";
  position: absolute;
  inset: 0; margin: auto;
  width: 11px; height: 11px;
  border-radius: 2px;
  background: var(--bg);
  transform: rotate(45deg);
}
.brand__name {
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: 0;
  color: var(--text);
  white-space: nowrap;
}
.mainnav { display: flex; gap: 4px; }
.nav-toggle {
  display: none;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  background: var(--field);
  color: var(--text-2);
  position: relative;
  transition: border-color 180ms ease, color 180ms ease, background 180ms ease;
}
.nav-toggle span {
  display: block;
  position: absolute;
  left: 50%;
  top: 50%;
  width: 19px;
  height: 2px;
  margin-left: -9.5px;
  margin-top: -1px;
  border-radius: 999px;
  background: currentColor;
  transform-origin: 50% 50%;
  transition:
    transform 220ms cubic-bezier(.2,.8,.2,1),
    opacity 160ms ease;
}
.nav-toggle span:nth-child(1) { transform: translateY(-6px); }
.nav-toggle span:nth-child(2) { transform: scaleX(.82); }
.nav-toggle span:nth-child(3) { transform: translateY(6px); }
.nav-is-open .nav-toggle {
  color: var(--text-strong);
  border-color: var(--accent-chip-bd);
  background: var(--accent-chip);
}
.nav-is-open .nav-toggle span:nth-child(1) { transform: rotate(45deg) scaleX(1.04); }
.nav-is-open .nav-toggle span:nth-child(2) { opacity: 0; transform: scaleX(.2); }
.nav-is-open .nav-toggle span:nth-child(3) { transform: rotate(-45deg) scaleX(1.04); }
.navlink {
  font-size: 13.5px;
  font-weight: 600;
  padding: 7px 12px;
  border-radius: var(--r-pill);
  color: var(--muted);
  transition: color 140ms, background 140ms;
}
.navlink:hover { color: var(--text-strong); }
.navlink.is-active { color: var(--text-strong); background: var(--field-alt); }
.topbar__spacer { flex: 1; }
.topbar__season {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--faintest);
}
.topbar__admin-actions { display: flex; align-items: center; gap: 8px; }

.page {
  margin: 0 auto;
  padding: clamp(22px,3.4vw,46px) var(--gutter) 96px;
  min-width: 0;
}
.page--public  { max-width: var(--w-public);  }
.page--session { max-width: var(--w-session); }
.page--admin   { max-width: var(--w-admin);   }
@media (min-width: 1280px) {
  .page--admin,
  .page--session {
    padding-left: 28px;
    padding-right: 28px;
  }
}
.site-footer {
  margin-top: clamp(44px, 6vw, 76px);
  padding-top: 18px;
  border-top: 1px solid var(--divider);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 8px 18px;
  color: var(--faintest);
  font-size: 12.5px;
}
.site-footer span {
  white-space: nowrap;
}
.site-footer span:nth-child(2) {
  color: var(--muted);
  justify-self: center;
}
.site-footer span:nth-child(3) {
  justify-self: end;
}
@media (max-width: 640px) {
  .site-footer {
    grid-template-columns: 1fr;
    justify-items: center;
    gap: 6px;
    margin-top: 36px;
    padding: 18px 0 max(20px, env(safe-area-inset-bottom));
    text-align: center;
  }
  .site-footer span:nth-child(2),
  .site-footer span:nth-child(3) {
    justify-self: center;
  }
}

/* ================================================================
   FLASH MESSAGES
   ================================================================ */
.flash-stack { display: grid; gap: 10px; margin-bottom: 24px; }
.flash {
  padding: 11px 16px;
  border-radius: var(--r-sm);
  font-size: 14px;
  border: 1px solid var(--border);
  background: var(--surface);
}
.flash.success {
  color: var(--pos);
  border-color: var(--pos-tint-bd);
  background: var(--pos-tint);
}
.flash.error {
  color: var(--neg);
  border-color: var(--neg-tint-bd);
  background: var(--neg-tint);
}

/* ================================================================
   TYPOGRAPHY
   ================================================================ */
.kicker {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--faintest);
  margin: 0 0 6px;
  display: block;
}
.kicker--dot {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.kicker--dot::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex: none;
}
.kicker--dot-accent::before { background: var(--accent); }
.kicker--dot-warn::before { background: var(--warn); }
.eyebrow {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 8px;
}
h1 {
  font-family: var(--font-display);
  font-size: clamp(30px,4.4vw,46px);
  font-weight: 600;
  letter-spacing: 0;
  color: var(--text);
  line-height: 1.05;
}
h2 {
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 600;
  color: var(--text-strong);
}
h3 {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-strong);
}

/* page intro */
.hero { padding: 28px 0 22px; }
.hero__kicker {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 10px;
}
.session-number {
  color: var(--accent);
  font-size: 12.5px;
  margin-bottom: 9px;
}
.hero__title {
  font-family: var(--font-display);
  font-size: clamp(30px,4.4vw,46px);
  font-weight: 600;
  letter-spacing: 0;
  color: var(--text);
  line-height: 1.05;
  margin: 0 0 10px;
}

.currency-symbol {
  font-family: var(--font-money);
  font-variant-numeric: normal;
}
.hero__sub {
  color: var(--muted);
  font-size: 14.5px;
  margin: 0;
  max-width: 54ch;
}

/* ================================================================
   PANEL / CARD
   ================================================================ */
.panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: hidden;
  min-width: 0;
}
.panel__head {
  padding: 16px 22px;
  border-bottom: 1px solid var(--field-alt);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: var(--surface-head);
}
.panel__title {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 18px;
  margin: 0;
  color: var(--text-strong);
}
.panel__tag { font-family: var(--font-mono); font-size: 11px; color: var(--faintest); }
.panel__body { padding: 20px; }

/* panel-header — old utility kept for admin forms */
.panel-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
  padding: 20px 20px 0;
}
.panel-header--center { align-items: center; }
.panel-actions { display: flex; align-items: center; gap: 10px; }

/* ================================================================
   STAT / METRIC TILE
   ================================================================ */
.stat {
  padding: 15px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
}
.stat__val {
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 600;
  line-height: 1;
  margin: 4px 0 0;
}
.stat__sub {
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--muted);
  margin-top: 8px;
}
.stat--hero .stat__val { font-size: 34px; }
.player-rank {
  margin: 0 0 7px;
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 12.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.player-stat-grid {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: var(--s3);
}
.player-stat-grid .stat {
  min-width: 0;
}
.player-stat-grid .stat__val {
  font-size: clamp(19px, 1.7vw, 24px);
  word-break: keep-all;
}
.stat-pair {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  margin-top: 4px;
}
.stat-pair__val {
  font-family: var(--font-display);
  font-size: clamp(17px, 1.55vw, 22px);
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}
.stat--rail { position: relative; padding-left: 20px; }
.stat--rail::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--rail, var(--accent));
}

/* hero stat row (small inline tiles) */
.stat-row-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

/* ================================================================
   TOOLBAR
   ================================================================ */
.toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 24px 0 12px;
}
.toolbar__left  { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.toolbar__right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.toolbar__hint {
  font-size: 12.5px;
  color: var(--muted);
  max-width: 42ch;
  line-height: 1.4;
  margin: 0;
}
.sortnote { font-family: var(--font-mono); font-size: 11.5px; color: var(--faintest); }
.sortnote b { color: var(--text-2); font-weight: 500; }

/* ================================================================
   SEGMENTED CONTROL
   ================================================================ */
.segmented {
  display: inline-flex;
  padding: 3px;
  gap: 2px;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
}
.seg {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 13px;
  border: 0;
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--muted);
  font: 600 13px var(--font-ui);
  cursor: pointer;
  white-space: nowrap;
  transition: background 120ms, color 120ms;
}
.seg:hover { color: var(--text-2); }
.seg.is-on {
  background: var(--accent-chip);
  color: var(--text-strong);
  box-shadow: inset 0 0 0 1px var(--accent-chip-bd);
}
.seg__count { font-family: var(--font-mono); font-size: 11px; font-weight: 500; color: var(--faintest); }
.seg.is-on .seg__count { color: var(--accent); }

/* ================================================================
   INPUTS / SELECTS
   ================================================================ */
.fieldlabel {
  display: block;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--faintest);
  margin-bottom: 7px;
}
.field-input, .field-select {
  width: 100%;
  padding: 10px 12px;
  background: var(--field);
  border: 1px solid var(--border-strong);
  border-radius: var(--r-sm);
  color: var(--text-strong);
  font: 14px var(--font-ui);
  outline: none;
  appearance: none;
}
.field-input:focus, .field-select:focus {
  border-color: var(--accent-chip-bd);
  box-shadow: 0 0 0 3px var(--accent-a22);
}
.field-input::placeholder { color: var(--faintest-2); }

/* form-card (admin forms) */
.form-card { display: grid; gap: 16px; align-content: start; padding: 22px; }
.form-card label { display: grid; gap: 6px; }
.form-card label > span {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--faintest);
}
.form-card input, .form-card select, .form-card textarea {
  width: 100%;
  padding: 10px 12px;
  background: var(--field);
  border: 1px solid var(--border-strong);
  border-radius: var(--r-sm);
  color: var(--text-strong);
  font: 14px var(--font-ui);
  outline: none;
  appearance: none;
}
.form-card input:focus, .form-card select:focus, .form-card textarea:focus {
  border-color: var(--accent-chip-bd);
  box-shadow: 0 0 0 3px var(--accent-a22);
}
.form-card textarea { resize: vertical; min-height: 92px; }
.form-card input::placeholder, .form-card textarea::placeholder { color: var(--faintest-2); }

.session-filter-form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.session-filter-select {
  min-width: 200px;
  padding: 8px 12px;
  background: var(--field);
  border: 1px solid var(--border-strong);
  border-radius: var(--r-sm);
  color: var(--text-strong);
  font: 13.5px var(--font-ui);
  outline: none;
  appearance: none;
}
.session-filter-select:focus {
  border-color: var(--accent-chip-bd);
  box-shadow: 0 0 0 3px var(--accent-a22);
}

/* ================================================================
   TABLE
   ================================================================ */
.tbl-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  min-width: 700px;
}
.tbl thead tr { background: var(--surface-head); }
.tbl th {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  padding: 13px 14px;
  text-align: right;
  white-space: nowrap;
  border-bottom: 1px solid var(--border);
}
.tbl th.col-player, .tbl th.col-left { text-align: left; }
.tbl td {
  padding: 12px 14px;
  text-align: right;
  border-top: 1px solid var(--divider);
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--num);
  white-space: nowrap;
}
.tbl td.col-player, .tbl td.col-left {
  text-align: left;
  font-family: var(--font-ui);
  color: var(--text-body);
}
.tbl tbody tr { cursor: pointer; transition: background 80ms; }
.tbl tbody tr:hover { background: #1e1e25; }
.tbl .num-net { font-weight: 600; font-size: 15px; }
.tbl .num-pos { color: var(--pos); }
.tbl .num-neg { color: var(--neg); }
.tbl .num-neutral { color: var(--muted-2); }
.tbl .num-muted { color: var(--muted-2); }
.tbl .rank-num { font-family: var(--font-display); font-size: 15px; font-weight: 600; color: var(--num); }
.tbl .rank-1 { color: var(--rank-1); }
.tbl .rank-2 { color: var(--rank-2); }
.tbl .rank-3 { color: var(--rank-3); }

/* accounting columns (hidden until .is-full) */
.tbl .col-acct { display: none; }
.tbl.is-full .col-acct { display: table-cell; }
.tbl--session {
  min-width: 860px;
  font-size: 13.5px;
}
.tbl--session.is-full {
  min-width: 1180px;
}
.tbl--session th,
.tbl--session td {
  padding-inline: 12px;
}
.tbl--session th:nth-child(7),
.tbl--session td:nth-child(7) {
  width: 1%;
}
.tbl--session .badge {
  padding-inline: 7px;
  font-size: 10px;
}

/* sticky rank+player on horizontal scroll */
.tbl .col-rank   { position: sticky; left: 0;   background: var(--surface); z-index: 1; }
.tbl .col-player { position: sticky; left: 52px; background: var(--surface); z-index: 1; }
.tbl thead .col-rank   { background: var(--surface-head); z-index: 2; }
.tbl thead .col-player { background: var(--surface-head); z-index: 2; }
.tbl--session .col-player { left: 0; min-width: 148px; }

/* sort button inside th */
.sort-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: 0;
  color: inherit;
  font: inherit;
  cursor: pointer;
  padding: 0;
}
.sort-btn.is-active { color: var(--text-2); }
.sort-arrow { color: var(--accent); font-size: 10px; }

/* rank delta cell */
.tbl .col-rank-delta { text-align: center; }
.rank-delta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 22px;
  padding: 0 8px;
  border-radius: var(--r-pill);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
}
.rank-delta--up   { color: var(--pos); background: var(--pos-tint); box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.rank-delta--down { color: var(--neg); background: var(--neg-tint); box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.rank-delta--flat { color: var(--faintest-2); background: var(--surface-sunk); box-shadow: inset 0 0 0 1px var(--border); }

/* old positive/negative/neutral utility (kept for compatibility) */
.positive { color: var(--pos) !important; font-weight: 600; }
.negative { color: var(--neg) !important; font-weight: 600; }
.neutral  { color: var(--muted-2) !important; font-weight: 600; }

/* old table-wrap (admin uses plain table still) */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 11px 14px; text-align: left; white-space: nowrap; vertical-align: middle; }
th {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  background: var(--surface-head);
  border-bottom: 1px solid var(--border);
}
tbody tr { transition: background 80ms; }
tbody tr:hover { background: #1e1e25; }
tbody tr:not(:last-child) td { border-bottom: 1px solid var(--divider); }
td { font-size: 13.5px; color: var(--text-body); }
td a { font-weight: 600; color: var(--text-strong); }
td a:hover { color: var(--accent); }

/* ================================================================
   BADGES / STATUS PILLS
   ================================================================ */
.badge {
  display: inline-block;
  padding: 3px 9px;
  border-radius: 5px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  font-weight: 500;
  white-space: nowrap;
}
.badge--paid     { color: var(--pos);  background: var(--pos-tint);  box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.badge--settled  { color: var(--rolled); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.badge--partial  { color: var(--warn); background: var(--warn-tint); box-shadow: inset 0 0 0 1px var(--warn-tint-bd); }
.badge--unpaid   { color: var(--neg);  background: var(--neg-tint);  box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.badge--owes     { color: var(--owes); background: var(--owes-tint); box-shadow: inset 0 0 0 1px var(--owes-tint-bd); }
.badge--none     { color: var(--faintest-2); }
.badge--open     { color: var(--warn); background: var(--warn-tint); box-shadow: inset 0 0 0 1px var(--warn-tint-bd); }
.badge--closed   { color: var(--muted-2); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.badge--written_off { color: var(--neg); background: var(--neg-tint); box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.badge--collected   { color: var(--pos); background: var(--pos-tint); box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }

/* old status-badge pattern (kept for templates) */
.status-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 5px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  font-weight: 500;
  white-space: nowrap;
}
.status-open       { color: var(--warn); background: var(--warn-tint); box-shadow: inset 0 0 0 1px var(--warn-tint-bd); }
.status-closed     { color: var(--muted-2); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.status-paid       { color: var(--pos);  background: var(--pos-tint);  box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.status-settled    { color: var(--rolled); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.status-partial    { color: var(--warn); background: var(--warn-tint); box-shadow: inset 0 0 0 1px var(--warn-tint-bd); }
.status-unpaid     { color: var(--neg);  background: var(--neg-tint);  box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.status-owes       { color: var(--owes); background: var(--owes-tint); box-shadow: inset 0 0 0 1px var(--owes-tint-bd); }
.status-none       { color: var(--faintest-2); }
.status-written_off { color: var(--neg); background: var(--neg-tint); box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.status-collected   { color: var(--pos); background: var(--pos-tint); box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }

/* event-type pills */
.pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 5px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  font-weight: 500;
}
.pill-buyin          { color: var(--accent); background: var(--accent-tint); box-shadow: inset 0 0 0 1px var(--accent-chip-bd); }
.pill-front          { color: var(--warn);   background: var(--warn-tint);   box-shadow: inset 0 0 0 1px var(--warn-tint-bd); }
.pill-cashout        { color: var(--rank-2); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.pill-paid           { color: var(--pos);    background: var(--pos-tint);    box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.pill-rollover_in    { color: var(--rolled); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.pill-payout_carry_in { color: var(--rolled); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.pill-rollover_out   { color: var(--rolled); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.pill-paid_out       { color: var(--pos);    background: var(--pos-tint);    box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.pill-debt_repayment { color: var(--pos);    background: var(--pos-tint);    box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.pill-writeoff       { color: var(--neg);    background: var(--neg-tint);    box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.pill-front_collected { color: var(--pos);   background: var(--pos-tint);    box-shadow: inset 0 0 0 1px var(--pos-tint-bd); }
.pill-front_writeoff  { color: var(--neg);   background: var(--neg-tint);    box-shadow: inset 0 0 0 1px var(--neg-tint-bd); }
.pill-note           { color: var(--muted-2); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }
.pill-session_open   { color: var(--warn);  background: var(--warn-tint);   box-shadow: inset 0 0 0 1px var(--warn-tint-bd); }
.pill-session_close  { color: var(--muted-2); background: var(--surface-raised); box-shadow: inset 0 0 0 1px var(--border); }

/* ================================================================
   CHARTS
   ================================================================ */
.chart-wrap { padding: 0 20px 20px; position: relative; }
.chart-frame {
  position: relative;
  height: clamp(220px, 30vw, 300px);
}
.chart-frame--tall { height: clamp(260px, 36vw, 340px); }
.chart-frame canvas { width: 100% !important; height: 100% !important; }

.session-net-bars {
  display: grid;
  gap: 11px;
  min-height: clamp(220px, 30vw, 300px);
  align-content: center;
  padding-top: 4px;
}
.session-net-bars__row {
  display: grid;
  grid-template-columns: minmax(92px, 150px) minmax(160px, 1fr) minmax(86px, max-content);
  gap: 12px;
  align-items: center;
}
.session-net-bars__name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-2);
  font-size: 13px;
  font-weight: 600;
}
.session-net-bars__track {
  position: relative;
  height: 18px;
  border-radius: 5px;
  background: var(--surface-sunk);
  overflow: hidden;
}
.session-net-bars__track::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
  background: var(--border-hi);
  z-index: 1;
}
.session-net-bars__bar {
  position: absolute;
  top: 4px;
  height: 10px;
  min-width: 2px;
  border-radius: 5px;
}
.session-net-bars__bar--pos { left: 50%; }
.session-net-bars__bar--neg { right: 50%; }
.session-net-bars__amount {
  font-family: var(--font-mono);
  font-size: 12.5px;
  color: var(--num);
  text-align: right;
  white-space: nowrap;
}

.result-mix {
  min-height: clamp(220px, 30vw, 300px);
  display: grid;
  align-content: center;
  gap: 18px;
}
.result-mix__bar {
  display: flex;
  height: 24px;
  overflow: hidden;
  border-radius: 6px;
  background: var(--surface-sunk);
  box-shadow: inset 0 0 0 1px var(--border);
}
.result-mix__seg {
  min-width: 0;
  flex-basis: 0;
}
.result-mix__seg--win { background: var(--pos); }
.result-mix__seg--even { background: var(--muted-2); }
.result-mix__seg--loss { background: var(--neg); }
.result-mix__legend {
  display: grid;
  gap: 10px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 11.5px;
}
.result-mix__legend-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
}
.result-mix__legend-row span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.result-mix__legend-row strong {
  display: grid;
  grid-template-columns: minmax(2ch, auto) 6ch;
  gap: 8px;
  color: var(--text-2);
  font-weight: 600;
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.result-mix__legend-row strong b,
.result-mix__legend-row strong em {
  font: inherit;
  text-align: right;
}
.result-mix__key {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: none;
}
.result-mix__key--win { background: var(--pos); }
.result-mix__key--even { background: var(--muted-2); }
.result-mix__key--loss { background: var(--neg); }
.result-mix__note {
  color: var(--faintest);
  font-family: var(--font-mono);
  font-size: 11px;
}

/* ================================================================
   RECON CARDS (session cash flow / open items)
   ================================================================ */
.recon-grid { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.recon-card-head { padding: 14px 20px 0; }
.recon-metric-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--border);
  border-top: 1px solid var(--border);
  margin-top: 12px;
}
.recon-cell { background: var(--surface); padding: 14px 20px; }
.recon-val {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--text-strong);
  line-height: 1;
  margin: 4px 0 0;
}
.recon-val--pos { color: var(--pos); }
.recon-val--neg { color: var(--neg); }
.recon-val--warn { color: var(--warn); }
.recon-val--num { color: var(--num); }

/* ================================================================
   QUICK SNAPSHOT (2×2 grid inside a panel)
   ================================================================ */
.snapshot-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--border);
  border-top: 1px solid var(--border);
}
.snapshot-cell { background: var(--surface); padding: 16px 20px; }
.snapshot-val {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--text-strong);
  line-height: 1;
  margin: 4px 0 0;
}

/* ================================================================
   AUDIT / RAW-EVENTS FEED
   ================================================================ */
.feed { max-height: 360px; overflow-y: auto; }
.feed__row {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 9px 20px;
  border-top: 1px solid var(--divider);
}
.feed__row:first-child { border-top: none; }
.feed__name { flex: 1; font-size: 13px; color: var(--text-2); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.feed__amt  { font-family: var(--font-mono); font-size: 12.5px; color: var(--num); white-space: nowrap; }
.feed__time { font-family: var(--font-mono); font-size: 10.5px; color: var(--faintest-2); white-space: nowrap; }
.feed__tag  { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .06em; font-weight: 500; text-transform: uppercase; white-space: nowrap; }

/* old event-card (used in session detail and admin) */
.event-feed { display: grid; gap: 0; }
.event-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  border-top: 1px solid var(--divider);
}
.event-card:first-child { border-top: none; }
.event-card-top {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
}
.event-card-top strong {
  font-size: 13px;
  color: var(--text-strong);
  white-space: nowrap;
}
.event-card--inline {
  display: grid;
  grid-template-columns: minmax(82px, 120px) max-content minmax(0, 1fr) minmax(88px, auto) minmax(74px, auto);
  gap: 12px;
  align-items: center;
  padding: 9px 16px;
}
.event-card--inline .event-card-top {
  display: contents;
}
.event-card--inline .event-card-top strong {
  grid-column: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.event-card--inline .pill {
  grid-column: 2;
  justify-self: start;
  padding: 2px 7px;
  font-size: 9.5px;
}
.event-card--inline .event-note {
  grid-column: 3;
}
.event-card--inline .event-amount {
  grid-column: 4;
}
.event-card--inline .tiny-text {
  grid-column: 5;
}
.event-note {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-size: 12.5px;
}
.event-amount { font-family: var(--font-mono); font-size: 13px; font-weight: 600; color: var(--num); margin: 0; white-space: nowrap; text-align: right; }
.muted-text { color: var(--muted); font-size: 13.5px; margin: 0; }
.muted-text.small, .tiny-text { font-size: 12px; }
.tiny-text { color: var(--faintest); margin: 0; text-align: right; white-space: nowrap; }
.note-list { margin: 0; padding-left: 16px; color: var(--muted); font-size: 13px; }
.note-list li + li { margin-top: 4px; }

/* ================================================================
   BUTTONS
   ================================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border: 0;
  border-radius: var(--r-sm);
  font: 700 14px var(--font-ui);
  cursor: pointer;
  white-space: nowrap;
  transition: opacity 120ms, box-shadow 120ms;
}
.btn--primary { background: var(--accent); color: var(--accent-ink); box-shadow: 0 4px 16px var(--accent-a30); }
.btn--primary:hover { opacity: .88; }
.btn--ghost { background: var(--field); color: var(--text-2); border: 1px solid var(--border-strong); font-weight: 600; }
.btn--ghost:hover { border-color: var(--border-hi); color: var(--text-strong); }
.btn--outline { background: var(--accent-tint); color: var(--accent); border: 1px solid var(--accent-chip-bd); }
.btn--outline:hover { background: var(--accent-chip); }
.btn--sm { padding: 7px 13px; font-size: 13px; }

/* legacy button classes mapped to new */
.primary-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border: 0;
  border-radius: var(--r-sm);
  font: 700 14px var(--font-ui);
  cursor: pointer;
  background: var(--accent);
  color: var(--accent-ink);
  box-shadow: 0 4px 16px var(--accent-a30);
  text-decoration: none;
  transition: opacity 120ms;
}
.primary-button:hover { opacity: .88; }
.secondary-button, .ghost-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: var(--r-sm);
  font: 600 13.5px var(--font-ui);
  cursor: pointer;
  background: var(--field);
  color: var(--text-2);
  border: 1px solid var(--border-strong);
  text-decoration: none;
  transition: border-color 120ms, color 120ms;
}
.secondary-button:hover, .ghost-button:hover {
  border-color: var(--border-hi);
  color: var(--text-strong);
}
.secondary-button:disabled, .ghost-button:disabled {
  cursor: not-allowed;
  opacity: .45;
}
.table-action-button {
  display: inline-flex;
  align-items: center;
  padding: 5px 11px;
  border-radius: var(--r-pill);
  font: 600 12px var(--font-ui);
  cursor: pointer;
  background: var(--field);
  color: var(--text-2);
  border: 1px solid var(--border-strong);
  transition: border-color 120ms, color 120ms;
}
.table-action-button:hover { border-color: var(--accent-chip-bd); color: var(--accent); }

/* ================================================================
   LAYOUT UTILITIES
   ================================================================ */
.cards   { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.cards-2 { display: grid; gap: var(--s4); grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.leaderboard-hero-stats {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-self: center;
  justify-content: flex-end;
}
.leaderboard-hero-stats .stat {
  min-width: 132px;
}
.leaderboard-hero-stats .stat:last-child {
  min-width: 168px;
}
.split   { display: flex; flex-wrap: wrap; gap: var(--s4); align-items: flex-start; }
.split > .col-main { flex: 2; min-width: 360px; }
.split > .col-side { flex: 1; min-width: 300px; }
.stack   { display: grid; gap: 20px; }
.inline-action-form { margin: 0; }
.button-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

/* Breadcrumb */
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--faintest);
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.breadcrumb a { color: var(--text-2); }
.breadcrumb a:hover { color: var(--accent); }
.breadcrumb__sep { color: var(--slash); }

/* Admin workspace */
.admin-workspace {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(280px, 1fr) minmax(260px, .9fr);
  gap: var(--s4);
  align-items: stretch;
}
.admin-workspace > .panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.admin-bottom-grid {
  --admin-bottom-body-h: 340px;
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr);
  gap: var(--s4);
  align-items: stretch;
  margin-top: var(--s4);
}
.admin-bottom-grid > .panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.admin-bottom-grid .table-wrap,
.admin-bottom-grid .event-feed {
  height: var(--admin-bottom-body-h);
  min-height: 0;
  overflow-y: auto;
}
.admin-bottom-grid .table-wrap {
  overflow-x: auto;
}
.admin-bottom-grid .event-feed {
  align-content: start;
}

/* Cash position strip */
.cash-strip {
  display: grid;
  gap: var(--s3);
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  margin-bottom: 28px;
}

/* Live indicator dot */
.live-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--pos);
  font-weight: 500;
}
.live-badge::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--pos);
  animation: livepulse 2.2s ease-in-out infinite;
}
@keyframes livepulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: .5; transform: scale(.78); }
}

/* Provisional (sub-threshold players) */
.provisional-grid {
  display: grid;
  gap: var(--s3);
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.provisional-card {
  padding: 14px 16px;
  background: var(--surface-sunk);
  border: 1px dashed var(--border-hi);
  border-radius: var(--r-md);
  transition: border-color 120ms;
}
.provisional-card:hover { border-color: var(--accent-chip-bd); }
.provisional-card__name {
  font-weight: 600;
  font-size: 14px;
  color: var(--text-2);
  margin: 0 0 6px;
}
.provisional-card__meta {
  display: flex;
  gap: 12px;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--faintest);
}

/* Perf / Cash section separator dot */
.section-marker {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--faintest);
  margin-bottom: 16px;
}
.section-marker__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex: none;
}
.section-marker__dot--accent { background: var(--accent); }
.section-marker__dot--rolled { background: var(--rolled); }

/* Debt / admin tools */
.debt-panel  {
  display: grid;
  gap: 0;
  margin-top: var(--s4);
}
.debt-summary { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.debt-layout {
  display: grid;
  grid-template-columns: minmax(240px, .85fr) minmax(0, 2fr);
  gap: 16px;
  padding: 16px 20px 18px;
}
.debt-list {
  display: grid;
  align-content: start;
  gap: 8px;
  max-height: 245px;
  overflow-y: auto;
}
.debt-list-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 10px 12px;
  background: var(--surface-sunk);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
}
.debt-list-item strong {
  display: block;
  color: var(--text-strong);
  font-size: 13.5px;
  margin-bottom: 2px;
}
.debt-list-item span {
  display: block;
  color: var(--faintest);
  font-family: var(--font-mono);
  font-size: 10.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.debt-list-item b {
  color: var(--owes);
  font-family: var(--font-mono);
  font-size: 13px;
  white-space: nowrap;
}
.debt-empty {
  display: grid;
  place-items: center;
  gap: 8px;
  padding: 30px 20px 34px;
  color: var(--muted);
  text-align: center;
}
.debt-empty__mark {
  display: grid;
  place-items: center;
  min-width: 64px;
  height: 40px;
  padding: 0 14px;
  border-radius: var(--r-pill);
  background: var(--surface-sunk);
  border: 1px solid var(--border);
  color: var(--pos);
  font-family: var(--font-mono);
  font-weight: 700;
}
.debt-empty p {
  margin: 0;
  font-size: 13.5px;
}
.debt-action-grid {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(2, minmax(260px, 1fr));
}
.debt-form {
  gap: 10px;
  padding: 0;
  background: transparent;
}
.debt-form h3 {
  margin-bottom: 2px;
}
.debt-form textarea {
  min-height: 58px;
}
.import-form input[type="file"] { width: 100%; margin: 4px 0 8px; color: var(--muted); }
.import-form input[type="file"]::file-selector-button {
  appearance: none;
  border: 1px solid var(--border-strong);
  background: var(--field);
  color: var(--text-2);
  border-radius: var(--r-pill);
  padding: 5px 11px;
  font: 600 13px var(--font-ui);
  margin-right: 8px;
  cursor: pointer;
}
.import-form input[type="file"]::file-selector-button:hover {
  border-color: var(--accent-chip-bd);
  color: var(--accent);
}

/* Admin: append ledger event */
.append {
  min-width: 0;
}
.append__body {
  padding: 18px 20px;
}
.append__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.field { display: block; }
.field__label {
  display: block;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--faintest);
  margin-bottom: 7px;
}
.field__opt { text-transform: none; letter-spacing: 0; }
.control {
  width: 100%;
  padding: 10px 12px;
  background: var(--field);
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  color: var(--text-strong);
  font: 14px var(--font-ui);
  outline: none;
}
select.control { cursor: pointer; }
.control--money {
  display: flex;
  align-items: center;
  gap: 0;
  padding: 0 12px;
}
.control__prefix { color: var(--faint); font-family: var(--font-mono); }
.control--money input {
  width: 100%;
  padding: 10px 6px;
  background: transparent;
  border: 0;
  outline: none;
  color: var(--text-strong);
  font-family: var(--font-mono);
  font-size: 14px;
}
.control:focus,
.control--money:focus-within {
  border-color: var(--accent-chip-bd);
  box-shadow: 0 0 0 3px var(--accent-a22);
}
.append__note {
  margin-bottom: 14px;
}
.append__textarea {
  min-height: 96px;
  resize: vertical;
}
.append__footer { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.append__preview { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--faint); }
.evtag-pill {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .05em;
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 5px;
  background: rgba(255,255,255,.03);
  box-shadow: inset 0 0 0 1px var(--border-strong);
}

/* Admin: session controls */
.panel--pad { padding: 18px 20px; }
.panel__title--mb { margin: 0 0 16px; }
.session-control-panel {
  min-width: 0;
}
.session-summary-strip {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  overflow: hidden;
  margin-bottom: 14px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--border);
}
.session-summary-strip > div {
  min-width: 0;
  padding: 9px 10px;
  background: var(--surface-sunk);
}
.session-summary-strip strong {
  display: block;
  margin-top: 3px;
  color: var(--text-strong);
  font-family: var(--font-mono);
  font-size: 12.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.import-export-panel {
  min-width: 0;
}
.livecard {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 140px;
  padding: 15px 16px;
  background: var(--surface-sunk);
  border: 1px solid var(--border-strong);
  border-radius: 11px;
  margin-bottom: 14px;
}
.livecard__head { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.dot { width: 7px; height: 7px; border-radius: 50%; }
.dot--live { background: var(--pos); animation: livepulse 1.6s ease-in-out infinite; }
.dot--idle { background: var(--muted-2); }
.livecard__name { font-weight: 600; color: var(--text-strong); font-size: 14px; }
.livecard__no { font-family: var(--font-mono); font-size: 10.5px; color: var(--faintest); }
.livecard__metrics { display: flex; gap: 18px; margin-bottom: 14px; }
.micro {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--faintest);
  margin-bottom: 4px;
}
.mono16 { font-family: var(--font-mono); font-size: 16px; color: var(--text-strong); }
.mono16--warn { color: var(--warn); }
.btn-close {
  display: block;
  width: 100%;
  text-align: center;
  padding: 9px;
  border-radius: 8px;
  background: var(--accent-tint);
  border: 1px solid var(--accent-chip-bd);
  color: var(--accent);
  font: 600 13px var(--font-ui);
  cursor: pointer;
}
.btn-close:hover { background: var(--accent-chip); }
.btn-newsession {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px;
  border-radius: 9px;
  background: transparent;
  border: 1px dashed var(--border-hi);
  color: var(--text-2);
  font: 600 14px var(--font-ui);
  cursor: pointer;
}
.btn-newsession:hover { border-color: var(--accent); color: var(--accent); }
.btn-newsession--primary {
  background: var(--accent);
  border-style: solid;
  border-color: var(--accent);
  color: var(--accent-ink);
  box-shadow: 0 4px 16px var(--accent-a30);
}
.btn-newsession--primary:hover { color: var(--accent-ink); opacity: .88; }
.prune-session-form {
  display: flex;
  justify-content: center;
  padding-top: 12px;
}
.prune-session-form .secondary-button {
  justify-content: center;
}
.carry-recs {
  display: grid;
  gap: 8px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--divider);
}
.carry-rec {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
  padding: 8px 10px;
  background: var(--surface-sunk);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
}
.carry-rec span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-strong);
  font-size: 13px;
  font-weight: 600;
}
.carry-rec strong {
  color: var(--rolled);
  font-family: var(--font-mono);
  font-size: 12.5px;
  white-space: nowrap;
}
.carry-rec form {
  margin: 0;
}
.carry-rec em {
  color: var(--faintest);
  font-size: 11.5px;
  font-style: normal;
  white-space: nowrap;
}

/* Admin: CSV tools */
.csv__desc { margin: 0 0 12px; font-size: 12.5px; color: var(--faint); }
.import-form {
  display: flex;
  flex: 1;
  flex-direction: column;
}
.csv__btns { display: flex; gap: 10px; margin-bottom: 12px; }
.csv-btn-ghost {
  flex: 1;
  text-align: center;
  padding: 9px 10px;
  border-radius: 8px;
  background: var(--field);
  border: 1px solid var(--border-strong);
  color: var(--text-2);
  font: 600 13px var(--font-ui);
  text-decoration: none;
  cursor: pointer;
}
.csv-btn-ghost:hover { border-color: var(--border-hi); }
.csv__drop {
  display: grid;
  flex: 1;
  min-height: 112px;
  place-items: center;
  padding: 18px 14px;
  border: 1px dashed var(--border-strong);
  border-radius: 9px;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--faintest);
  cursor: pointer;
}
.csv__drop.is-drag { border-color: var(--accent); color: var(--accent); }

/* Form shell (admin login) */
.form-shell { display: grid; justify-content: center; padding-top: 40px; }
.form-shell.narrow { grid-template-columns: minmax(320px, 480px); }

/* Modal */
.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(5, 5, 8, .68);
  backdrop-filter: blur(5px);
}
.modal-backdrop[hidden] { display: none; }
.modal-card {
  width: min(100%, 440px);
  overflow: hidden;
  border-radius: var(--r-md);
  background: var(--surface);
  border: 1px solid var(--border-strong);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .45);
}
.modal-card__head {
  padding: 18px 20px 0;
}
.modal-card__text {
  margin: 0;
  padding: 14px 20px 18px;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.5;
}
.modal-card__actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 16px 20px;
  border-top: 1px solid var(--divider);
  background: var(--surface-sunk);
  flex-wrap: wrap;
}

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width: 860px) {
  .split > .col-main, .split > .col-side { min-width: 100%; }
  .admin-workspace { grid-template-columns: 1fr; }
  .append__textarea { min-height: 120px; }
  .debt-layout {
    grid-template-columns: 1fr;
  }
  .admin-bottom-grid { grid-template-columns: 1fr; }
}

@media (min-width: 861px) and (max-width: 1180px) {
  .admin-workspace {
    grid-template-columns: repeat(2, minmax(280px, 1fr));
  }
}

@media (max-width: 1180px) {
  .player-stat-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  h1 { font-size: 28px; }
  .hero { padding: 18px 0 14px; }
  .topbar__season { display: none; }
  .page {
    padding: 18px 12px 72px;
  }
  .panel {
    border-radius: 12px;
  }
  .panel__head {
    padding: 14px 14px;
  }
  .panel__body,
  .form-card,
  .append__body,
  .panel--pad {
    padding: 16px 14px;
  }
  .chart-wrap {
    padding: 0 10px 14px;
  }
  .chart-frame {
    height: 230px;
  }
  .chart-frame--tall {
    height: 260px;
  }
  .cards,
  .cards-2,
  .provisional-grid,
  .recon-grid,
  .append__grid {
    grid-template-columns: 1fr;
  }
  .form-shell {
    padding-top: 20px;
  }
  .form-shell.narrow {
    grid-template-columns: minmax(0, 480px);
  }
  .cash-strip { grid-template-columns: 1fr 1fr; }
  .debt-action-grid { grid-template-columns: 1fr; }
  .snapshot-grid { grid-template-columns: 1fr; }
  .recon-metric-grid { grid-template-columns: 1fr; }
  .player-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .event-card--inline {
    grid-template-columns: minmax(0, 1fr) max-content auto;
  }
  .event-card--inline .event-card-top strong {
    grid-column: 1;
  }
  .event-card--inline .pill {
    grid-column: 2;
  }
  .event-card--inline .event-amount {
    grid-column: 3;
  }
  .event-card--inline .event-note {
    grid-column: 1 / -1;
  }
  .event-card--inline .tiny-text {
    grid-column: 1 / -1;
    justify-self: end;
  }
  .leaderboard-hero-stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }
  .leaderboard-hero-stats .stat,
  .leaderboard-hero-stats .stat:last-child {
    min-width: 0;
  }
  .tbl-scroll,
  .table-wrap {
    width: 100%;
    max-width: 100%;
    overscroll-behavior-x: contain;
  }
  .tbl {
    min-width: 620px;
  }
  .tbl--session,
  .tbl--session.is-full {
    min-width: 760px;
  }
  .feed,
  .debt-list,
  .admin-bottom-grid .table-wrap,
  .admin-bottom-grid .event-feed {
    max-height: none;
    height: auto;
  }
  .csv__btns,
  .append__footer,
  .button-row,
  .modal-card__actions {
    align-items: stretch;
  }
  .csv__btns > *,
  .append__footer > *,
  .button-row > *,
  .modal-card__actions > * {
    flex: 1 1 auto;
    justify-content: center;
  }
}

@media (max-width: 440px) {
  .cash-strip { grid-template-columns: 1fr; }
}

/* ================================================================
   MOBILE — additional responsive rules
   ================================================================ */

/* Topbar: app-style single row with an anchored menu on phones. */
@media (max-width: 700px) {
  .topbar__inner {
    height: 58px;
    padding-inline: 12px;
    gap: 10px;
  }
  .brand {
    flex: 1 1 auto;
    min-width: 0;
  }
  .brand__name {
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .nav-toggle {
    display: grid;
    flex: none;
    order: 20;
  }
  .topbar__spacer { display: none; }
  .mainnav {
    position: fixed;
    top: calc(58px + env(safe-area-inset-top));
    left: 10px;
    right: 10px;
    z-index: 60;
    display: grid;
    gap: 4px;
    padding: 8px;
    border: 1px solid var(--border-strong);
    border-radius: 12px;
    background: rgba(22, 22, 28, .98);
    box-shadow: 0 18px 48px rgba(0,0,0,.42);
    transform: translateY(-6px) scale(.985);
    transform-origin: top center;
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition:
      opacity 180ms ease,
      transform 220ms cubic-bezier(.2,.8,.2,1),
      visibility 180ms;
    overflow: hidden;
  }
  .nav-is-open .mainnav {
    transform: translateY(0) scale(1);
    opacity: 1;
    pointer-events: auto;
    visibility: visible;
  }
  .navlink {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: 11px 12px;
    border-radius: 8px;
    font-size: 14px;
  }
  .topbar__admin-actions .btn {
    height: 38px;
    padding-inline: 11px;
  }
}

/* Toolbar: stack left/right sections vertically on narrow viewports */
@media (max-width: 700px) {
  .toolbar {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .toolbar__left,
  .toolbar__right { width: 100%; }
  .session-filter-form { width: 100%; }
  .session-filter-select { min-width: 0; flex: 1; width: 100%; }
}

/* Panel head: let title + action button wrap on narrow panels */
@media (max-width: 580px) {
  .panel__head { flex-wrap: wrap; row-gap: 6px; }
}

/* Segmented control: scroll horizontally if it overflows on very small phones */
@media (max-width: 380px) {
  .segmented {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    max-width: 100%;
  }
  .segmented::-webkit-scrollbar { display: none; }
}

/* Session net bars: tighter name column so bars have room */
@media (max-width: 540px) {
  .session-net-bars__row {
    grid-template-columns: minmax(68px, 100px) minmax(80px, 1fr) minmax(70px, max-content);
    gap: 8px;
  }
  .session-net-bars__name { font-size: 12px; }
  .session-net-bars__amount { font-size: 11px; }
}

/* Very small phones: reduce nav / segment padding to keep everything touchable */
@media (max-width: 360px) {
  .navlink { padding: 6px 10px; font-size: 12.5px; }
  .seg { padding: 6px 10px; font-size: 12px; }
  .hero__title, h1 { font-size: 24px; }
}
