* { box-sizing: border-box; }
html { min-width: 320px; background: var(--canvas); color: var(--ink); font-family: var(--font); -webkit-tap-highlight-color: transparent; }
body { margin: 0; font-size: 13px; font-weight: 400; }
.hosted-gate { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.hosted-gate .card { width: min(100%, 440px); padding: 28px; }
.hosted-gate .lede { margin: 16px 0 24px; }
.button-link { display: inline-block; padding: 10px 16px; border-radius: var(--radius-sm); background: var(--orange); color: var(--on-accent); font-weight: 700; text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .button-link:hover { background: var(--orange-hover); } }
.button-link:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
button, input, select { font: inherit; }
button, select, input { min-height: 28px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--panel); color: var(--ink); font-size: 13px; }
/* One dropdown look everywhere: native arrow off, one filled caret at a fixed
   inset on the right. */
select {
  appearance: none; -webkit-appearance: none; padding-right: 28px; cursor: pointer;
  overflow: hidden; text-overflow: ellipsis;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3E%3Cpath d='M0 0h8L4 4z' fill='%231B1E23'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center; background-size: 8px 4px;
}
button { padding: 5px 12px; border-color: var(--orange); background: var(--orange); color: var(--on-accent); font-weight: 700; cursor: pointer; }
@media (hover: hover) and (pointer: fine) { button:hover { background: var(--orange-hover); } }
button.secondary, button.quiet { border-color: var(--line-strong); background: var(--panel); color: var(--ink); }
button.quiet { border-color: transparent; background: transparent; color: var(--muted); }
button.danger { color: var(--red); }
button:focus-visible, input:focus-visible, select:focus-visible, [tabindex]:focus-visible { outline: 3px solid color-mix(in srgb, var(--focus) 55%, transparent); outline-offset: 2px; }
[hidden] { display: none !important; }
/* ------------------------------------------------------------- shell */
.app-shell { display: grid; grid-template-columns: 224px minmax(0, 1fr); min-height: 100vh; }
.sidebar {
  position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; gap: 22px;
  padding: 18px 12px; background: var(--arena); color: var(--on-arena); overflow-y: auto;
}
.brand-lockup { display: flex; align-items: center; gap: 10px; padding: 0 6px; white-space: nowrap; }
.brand-lockup div { display: grid; }
.brand-lockup strong { font-size: 15px; letter-spacing: 0; }
.brand-lockup span { color: var(--on-arena); opacity: .7; font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.brand-mark { display: block; flex-shrink: 0; width: 27px; height: 27px; }
.side-nav { display: flex; flex: 1; flex-direction: column; gap: 2px; }
.nav-tab {
  display: flex; align-items: center; gap: 8px; width: 100%; min-height: 36px; padding: 0 10px;
  border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--on-arena);
  font-size: 13px; font-weight: 700; text-align: left; opacity: .78;
}
@media (hover: hover) and (pointer: fine) { .nav-tab:hover { background: rgb(255 255 255 / 7%); color: var(--on-arena); opacity: 1; } }
.nav-tab.active { background: transparent; color: var(--on-arena); font-weight: 700; opacity: 1; }
.nav-tab:focus-visible { outline: 3px solid var(--focus); outline-offset: -3px; opacity: 1; }
.nav-tab[hidden] { display: none; }

.connection-link-form { display: grid; gap: 10px; margin-bottom: 16px; }
.connection-espn-form { display: grid; gap: 10px; margin-bottom: 16px; }
.connection-espn-form[hidden] { display: none; }
.connection-espn-form h2 { margin: 0; }
.connection-paste-option { margin-bottom: 16px; }
.connection-paste-form { display: grid; gap: 9px; margin-top: 12px; }
.connection-paste-form textarea { min-height: 150px; width: 100%; padding: 10px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--panel); color: var(--ink); font: inherit; resize: vertical; }
.connection-link-row { display: flex; gap: 8px; }
.connection-link-row input { flex: 1; min-width: 0; }
.connection-layout { display: grid; grid-template-columns: minmax(230px, .7fr) minmax(0, 1.3fr); gap: 16px; align-items: start; }
.connection-list { display: grid; gap: 10px; }
.connection-item { border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 12px; }
.connection-select { display: block; width: 100%; padding: 4px 0; border: 0; background: none; color: var(--ink); font: inherit; font-weight: 700; text-align: left; cursor: pointer; }
.connection-select[aria-pressed="true"] { color: var(--ink); }
.connection-meta { color: var(--faint); font-size: 13px; margin: 5px 0; }
.connection-warning { color: var(--red); font-size: 13px; margin: 8px 0; }
.connection-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.connection-actions button { min-height: 40px; }
.connection-detail h3 { margin: 18px 0 8px; }
.connection-team { border-bottom: 1px solid var(--line); padding: 10px 0; }
.connection-roster { margin: 10px 0; padding-left: 24px; }
.connection-roster li { margin: 4px 0; }
.connection-picks { max-height: 440px; overflow: auto; }
.connection-picks table { width: 100%; }
.connection-actions a, #connectionChromeConnect { display: inline-flex; align-items: center; min-height: 44px; padding: 5px 12px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); color: var(--ink); text-decoration: none; font-size: 13px; font-weight: 700; }
.connection-picker { display: grid; gap: 5px; min-width: 0; max-width: 330px; margin: 14px 0; font-size: 13px; font-weight: 700; }
.connection-picker select:not(.lw-chip-select) { width: 100%; min-height: 44px; padding-left: 10px; font-size: 16px; }
.connection-detail-tabs { display: flex; flex-wrap: wrap; gap: 7px; max-width: 100%; margin: 18px 0 12px; }
.connection-detail-tabs button { flex: 0 0 auto; min-height: 44px; }
.connection-detail-tabs button[aria-pressed="true"], .connection-actions button[aria-pressed="true"] { border-color: var(--orange); color: var(--orange); }
.connection-analysis-player { padding: 12px 0; border-bottom: 1px solid var(--line); }
.connection-analysis-player strong { display: block; font-size: 15px; }
.connection-day-strip { display: flex; gap: 6px; max-width: 100%; overflow-x: auto; padding: 10px 0; }
.connection-day-strip span { flex: 0 0 auto; padding: 7px 9px; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 12px; }
.connection-stream-hint { padding: 10px; border-radius: var(--radius-sm); background: color-mix(in srgb, var(--orange) 12%, var(--panel)); }
.connection-stream-highlight { border-left: 3px solid var(--orange); padding-left: 10px; }
.connection-trade-picks { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 175px), 1fr)); gap: 6px; }
.connection-trade-option { display: flex; align-items: center; gap: 7px; min-height: 44px; padding: 7px; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 13px; }
.connection-trade-option input { min-height: auto; }
.connection-trade-result { margin-top: 12px; }
.matchup-controls { display: flex; flex-wrap: wrap; align-items: end; gap: 8px; margin: 14px 0; }
.matchup-controls .connection-picker { flex: 1 1 170px; margin: 0; }
.matchup-controls button { min-height: 44px; }
.matchup-controls button[aria-pressed="true"] { border-color: var(--orange); color: var(--orange); }
.matchup-hero, .matchup-category, .matchup-advice-card, .matchup-day-detail { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); }
.matchup-hero h3 { margin: 0 0 8px; overflow-wrap: anywhere; }
.matchup-expected { display: block; margin: 8px 0; font-size: 16px; }
.matchup-needs { margin: 8px 0 0; font-weight: 700; color: var(--orange); overflow-wrap: anywhere; }
.matchup-categories, .matchup-advice, .matchup-league-list { display: grid; gap: 8px; min-width: 0; }
.matchup-category-head { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.matchup-category-head strong, .matchup-category-head span { font-size: 14px; }
.matchup-needs-help { border-color: var(--orange); border-left-width: 4px; background: color-mix(in srgb, var(--orange) 5%, var(--panel)); }
.matchup-needs-help .matchup-standing { color: var(--orange); font-weight: 700; }
.matchup-category-totals { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; border-top: 1px solid var(--line); padding-top: 8px; }
.matchup-category-total { display: grid; gap: 3px; min-width: 0; }
.matchup-category-total span { color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.matchup-category-total strong { font-size: 20px; }
.matchup-category-actual { margin: 8px 0 0; color: var(--muted); font-size: 12px; }
.matchup-compare { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0 4px; }
.matchup-compare th, .matchup-compare td { position: static; padding: 8px 10px; background: none; text-align: right; font-size: 14px; letter-spacing: 0; text-transform: none; border: 0; }
.matchup-compare thead th { color: var(--muted); font-size: 12px; font-weight: 700; white-space: normal; overflow-wrap: anywhere; line-height: 1.25; vertical-align: bottom; }
.matchup-compare tbody th { width: 56px; text-align: left; color: var(--ink); font-weight: 700; }
.matchup-compare thead th:first-child { width: 56px; }
.matchup-compare td { border-radius: var(--radius-sm); }
.matchup-compare td strong { display: block; font-size: 16px; font-variant-numeric: tabular-nums; }
.matchup-so-far { display: block; color: var(--muted); font-size: 11px; }
tr.matchup-needs-help { border: 0; background: none; }
.matchup-compare tr.matchup-needs-help th { color: var(--orange); }
.matchup-compare tr.matchup-needs-help th::after { content: " •"; }
.matchup-legend { margin: 4px 0 12px; color: var(--muted); font-size: 12px; }
.matchup-strategy { padding: 12px; border-left: 4px solid var(--orange); border-radius: var(--radius-sm); background: color-mix(in srgb, var(--orange) 9%, var(--panel)); }
.matchup-stream-chips, .matchup-stream-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.matchup-stream-day, .matchup-stream-impact { padding: 5px 8px; border-radius: 999px; background: color-mix(in srgb, var(--orange) 11%, var(--panel)); font-size: 12px; }
.matchup-stream-day { font-weight: 700; }
.matchup-stream-actions button { min-height: 44px; }
.matchup-day-strip { display: flex; gap: 6px; max-width: 100%; overflow-x: auto; padding: 2px 0 10px; }
.matchup-day { display: grid; flex: 0 0 auto; gap: 2px; min-width: 82px; max-width: 200px; white-space: normal; min-height: 52px; padding: 6px; border-color: var(--line-strong); background: var(--panel); color: var(--ink); }
.matchup-day[aria-pressed="true"] { border-color: var(--orange); background: color-mix(in srgb, var(--orange) 9%, var(--panel)); }
.matchup-day span { font-size: 11px; font-weight: 400; }
.matchup-day-detail ul { padding-left: 20px; margin: 4px 0 10px; }
.matchup-advice-card p { margin: 0 0 6px; overflow-wrap: anywhere; }
.matchup-advice-card button { min-height: 44px; }
.matchup-league-card { display: grid; gap: 5px; min-width: 0; min-height: 60px; padding: 12px; border-color: var(--line); background: var(--panel); color: var(--ink); text-align: left; }
.matchup-league-card strong, .matchup-league-card span { overflow-wrap: anywhere; }
.matchup-league-card em { color: var(--orange); font-size: 12px; }
@media (min-width: 850px) {
  .matchup-categories { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .connection-layout { grid-template-columns: minmax(0, 1fr); }
  .connection-link-row { flex-direction: column; }
  .connection-link-row input, .connection-link-row button, .connection-actions button, .connection-actions a, .connection-detail-tabs button, .connection-select { min-height: 44px; }
  .connection-picks { max-width: 100%; }
  .connection-paste-form textarea { font-size: 16px; }
}
.account-nav { flex-direction: column; align-items: flex-start; gap: 2px; min-height: 52px; margin-top: auto; padding-top: 7px; padding-bottom: 7px; }
.account-nav-email { display: block; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; font-weight: 400; opacity: .8; }
.count { display: inline-grid; min-width: 20px; height: 20px; margin-left: auto; padding: 0 6px; place-items: center; border-radius: 999px; background: rgb(255 255 255 / 14%); color: var(--on-arena); font-size: 11px; }
.league-card { margin-top: auto; display: grid; gap: 3px; padding: 12px; border-radius: var(--radius-lg); background: rgb(255 255 255 / 7%); font-size: 12px; }
.account-view .account-card { max-width: 720px; padding: 20px; }
.league-card .eyebrow { color: var(--on-arena); opacity: .7; margin: 0; }
.league-card strong { font-size: 13px; }
.league-card > span { opacity: .8; }
.league-facts { display: grid; gap: 2px; margin: 8px 0 0; font-size: 11px; }
.league-facts div { display: flex; justify-content: space-between; gap: 8px; }
.league-facts dt { opacity: .65; }
.league-facts dd { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
main { min-width: 0; padding: 22px clamp(14px, 2.4vw, 32px) 40px; }
#fullBoardSubView { overflow-x: clip; }

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.view-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 14px; }
.eyebrow { margin: 0 0 4px; color: var(--orange); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
h1, h2 { margin: 0; letter-spacing: 0; }
h1 { font-size: 24px; }
h2 { font-size: 15px; }
.lede { margin: 6px 0 0; color: var(--muted); font-size: 13px; }
.view-actions { display: flex; gap: 7px; }
.control-panel { display: grid; grid-template-columns: minmax(180px, 1.5fr) repeat(5, minmax(115px, .7fr)); gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); box-shadow: var(--shadow); }
/* With the two playoff controls the wide layout needs six columns so every
   dropdown stays on one row (Leon, 2026-09-29). Narrower layouts keep their
   own column counts below. */
@media (min-width: 1081px) {
  .control-panel.with-playoff { grid-template-columns: minmax(170px, 1.2fr) repeat(auto-fit, minmax(118px, 1fr)); }
}
label, .control-panel fieldset { display: grid; gap: 5px; min-width: 0; }
label > span, legend { color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
input, select { width: 100%; padding: 6px 9px; }
select { padding-right: 28px; }
input[type="checkbox"], input[type="radio"] { width: auto; min-height: 0; padding: 0; accent-color: var(--orange); }
.control-panel fieldset { grid-column: 1 / -1; margin: 0; padding: 9px 0 0; border: 0; border-top: 1px solid var(--line); }
.pills { display: flex; flex-wrap: wrap; gap: 6px; }
.pills label { display: flex; grid-template-columns: auto 1fr; align-items: center; gap: 5px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 11px; font-weight: 700; cursor: pointer; }
.pills input { width: auto; min-height: auto; accent-color: var(--orange); }
.bulk-bar { position: sticky; top: 8px; z-index: 8; display: flex; align-items: center; gap: 10px; width: fit-content; max-width: 100%; margin: 10px auto -48px; padding: 7px 9px 7px 13px; border: 1px solid var(--line-strong); border-radius: 999px; background: var(--arena); color: var(--on-arena); box-shadow: var(--shadow); }
.bulk-bar select { min-width: 180px; }
/* The board fills nearly the whole window once scrolled to (Leon, 2026-10-08:
   "make the board area larger vertically, especially on the phone"). The
   heading and filters scroll away above it; the header row stays pinned. */
.table-shell { max-height: calc(100vh - 96px); max-height: calc(100dvh - 96px); min-height: min(420px, 70dvh); margin-top: 14px; overflow: auto; overscroll-behavior-x: contain; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); scrollbar-gutter: stable; }
table { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; }
th, td { height: 30px; padding: 3px 8px; border-bottom: 1px solid color-mix(in srgb, var(--line) 72%, transparent); font-size: 12px; white-space: nowrap; }
th { position: sticky; top: 0; z-index: 3; border-bottom-color: var(--line-strong); background: var(--surface); color: var(--faint); font-size: 11px; letter-spacing: 0; text-align: right; text-transform: none; }
th button { min-height: 28px; padding: 2px; border: 0; background: transparent; color: inherit; font-size: inherit; letter-spacing: 0; text-transform: inherit; }
@media (hover: hover) and (pointer: fine) { th button:hover { background: transparent; color: var(--ink); } }
/* Rookies only: the Big Board freezes its columns with .fz (below); this
   nth-child rule outranked .fz-rank and made LW rank 210px wide (2026-10-23). */
td { text-align: right; }
.player-name { display: block; overflow: hidden; font-weight: 700; text-overflow: ellipsis; }
.player-meta { color: var(--faint); font-size: 11px; }
.delta-up { color: var(--green); font-weight: 700; }
.delta-down { color: var(--red); font-weight: 700; }
/* Same continuous gradient as the side panel (see board.css): tint from the
   server's magnitude, capped for readable ink text; bold marks positive. */
.board-table, table { --signal-tint-max: 0.42; }
.stat-positive { color: var(--ink); font-weight: 700; background: rgb(var(--green-rgb) / calc(var(--magnitude, 0.5) * var(--signal-tint-max))); }
.stat-negative { color: var(--ink); background: rgb(var(--red-rgb) / calc(var(--magnitude, 0.5) * var(--signal-tint-max))); }
/* The Big Board carries 21 columns: headers may wrap to two lines and cells
   are tighter, so the scores fit at 1440 and stay near the left edge below. */
#boardScroller th, #boardScroller td { padding: 4px 5px; }
#boardScroller th { white-space: normal; line-height: 1.15; letter-spacing: 0; vertical-align: bottom; }
#boardScroller th button { white-space: normal; text-align: inherit; width: min-content; margin-left: auto; }
/* Research tables share the frozen player-name column with in-season tables. */
#boardScroller .fz { position: static; background: var(--panel); }
#boardScroller thead .fz { background: var(--surface); }
#boardScroller .fz-name { position: sticky; left: 0; z-index: 2; text-align: left; }
#boardScroller thead .fz-name { z-index: 4; }
#boardScroller .fz-star { min-width: 30px; text-align: center; }
#boardScroller :is(.fz-rank, .fz-adp1, .fz-adp2) { min-width: 46px; text-align: right; }
#boardScroller .fz-adp1, #boardScroller .fz-adp2 { color: var(--muted); }
#boardScroller .fz-name button { display: block; text-overflow: ellipsis; }

#boardScroller th.txt, #boardScroller td.txt { width: 1%; text-align: left; padding-left: 8px; padding-right: 10px; white-space: nowrap; }
#boardScroller th.txt button { margin-left: 0; }
#boardScroller td.punted, #boardScroller th.punted { color: var(--faint); }
#boardScroller th.punted button { text-decoration: line-through; }
.table-summary { margin: 8px 2px; color: var(--faint); font-size: 11px; }
.sub-nav { display: flex; gap: 4px; margin-bottom: 14px; border-bottom: 1px solid var(--line); }
.sub-tab { min-height: 36px; padding: 0 14px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--muted); font-size: 12px; font-weight: 700; }
@media (hover: hover) and (pointer: fine) { .sub-tab:hover { background: var(--surface); color: var(--ink); } }
.sub-tab.active { border-bottom-color: var(--orange); color: var(--ink); }
.rookies-controls { display: flex; flex-wrap: nowrap; align-items: center; gap: 6px; min-width: 0; min-height: 36px; margin: 0; padding: 4px 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.rookies-controls > label { margin: 0; min-width: 0; }
.rookies-controls > label > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.rookies-controls > .lw-inline-search { flex: 1; min-width: 0; max-width: 320px; }
.rookies-state { margin-block: 8px; }
.rookies-state.lw-empty-card { text-align: center; }
@media (max-width: 760px) {
  .rookies-controls { padding: 4px 8px; }
  .rookies-state { margin-inline: 8px; }
}
.depth-layout { display: grid; grid-template-columns: 148px minmax(0, 1fr); gap: 14px; margin-top: 14px; }
.depth-teams { display: grid; gap: 2px; align-content: start; max-height: calc(100vh - 330px); overflow-y: auto; padding: 6px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); }
.depth-teams button { min-height: 32px; padding: 0 10px; border: 0; border-left: 2px solid transparent; border-radius: 0; background: transparent; color: var(--muted); font-size: 12px; font-weight: 700; text-align: left; }
@media (hover: hover) and (pointer: fine) { .depth-teams button:hover { background: var(--surface); color: var(--ink); } }
.depth-teams button[aria-pressed="true"] { background: transparent; border-left-color: var(--orange); color: var(--ink); }
.depth-card { min-height: 320px; }
.depth-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.depth-column { display: grid; gap: 8px; align-content: start; }
.depth-position-head { padding-bottom: 6px; border-bottom: 1px solid var(--line); color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-align: center; text-transform: none; }
.depth-slot { display: grid; gap: 5px; padding: 8px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.depth-slot-name { display: flex; justify-content: space-between; gap: 6px; font-size: 12px; font-weight: 700; }
.depth-slot-name span:last-child { color: var(--faint); font-weight: 700; white-space: nowrap; }
.depth-slot-bar { height: 4px; border-radius: 999px; background: var(--line); overflow: hidden; }
.depth-slot-bar span { display: block; height: 100%; background: var(--orange); }
.depth-slot-meta { display: flex; justify-content: space-between; color: var(--faint); font-size: 11px; }
.depth-empty-slot { padding: 8px 0; color: var(--faint); font-size: 11px; font-style: italic; }
.split-layout { display: grid; grid-template-columns: minmax(230px, 310px) minmax(0, 1fr); gap: 16px; min-height: 520px; }
.collection-pane, .detail-pane, .card { border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); box-shadow: var(--shadow); }
.collection-pane { padding: 8px; }
.list-cards { display: grid; gap: 5px; }
.list-card { display: grid; grid-template-columns: 1fr auto; gap: 3px 8px; width: 100%; padding: 11px; border-color: transparent; background: transparent; color: var(--ink); text-align: left; }
.list-card.active { border-color: var(--line); background: var(--surface); }
@media (hover: hover) and (pointer: fine) { .list-card:hover { border-color: var(--line); background: var(--surface); } }
.list-card strong { overflow: hidden; text-overflow: ellipsis; }
.list-card small { grid-column: 1; color: var(--faint); font-weight: 700; }
.kind-tag { grid-column: 2; grid-row: 1 / span 3; align-self: center; color: var(--blue); font-size: 11px; font-weight: 700; text-transform: none; }
.detail-pane { min-width: 0; padding: clamp(14px, 2vw, 24px); }
.detail-head, .card-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 13px; border-bottom: 1px solid var(--line); }
.detail-head h2, .session-identity strong, .connection-select { min-width: 0; overflow-wrap: anywhere; }
.detail-actions { display: flex; flex-wrap: wrap; gap: 5px; }
.stale-guide { margin: 14px 0; padding: 12px; border: 1px solid color-mix(in srgb, var(--amber) 45%, transparent); border-radius: var(--radius); background: var(--amber-soft); color: var(--amber); }
.stale-guide p { margin: 3px 0 9px; font-size: 12px; }
.stale-guide div { display: flex; flex-wrap: wrap; gap: 5px; }
.row-actions { display: flex; justify-content: end; gap: 3px; }
.row-actions button { min-width: 34px; min-height: 32px; padding: 4px 7px; }

/* Ranking list detail (decision 13): the pilot's drag-reorder editor,
 * reusing this page's own table/delta conventions (.delta-up/.delta-down,
 * already used by the research board's rank-change column) rather than
 * the design pilot's lw-* classes -- decision 17's token-only migration
 * applies to every real stylesheet, not just the ones already shipped. */
.ranking-layout { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 16px; align-items: start; margin-top: 14px; }
.ranking-table-wrap { overflow-x: auto; overscroll-behavior-x: contain; }
.ranking-table { width: 100%; border-collapse: separate; border-spacing: 0; }

.ranking-table th, .ranking-table td { padding: 7px 8px; border-bottom: 1px solid color-mix(in srgb, var(--line) 72%, transparent); font-size: 12px; text-align: left; white-space: nowrap; }
.ranking-table th { color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.ranking-table th.num, .ranking-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
@media (hover: hover) and (pointer: fine) { .ranking-table tr:hover td { background-color: var(--orange-soft); } }
.ranking-table tr[data-dragging="true"] { opacity: .55; }
.ranking-table tr[data-drag-over="true"] td { box-shadow: inset 0 2px 0 0 var(--orange); }
.ranking-table tr[data-drag-over="after"] td { box-shadow: inset 0 -2px 0 0 var(--orange); }
.drag-grip { display: flex; align-items: center; justify-content: center; width: 28px; color: var(--faint); font-size: 13px; letter-spacing: 0; cursor: grab; touch-action: none; }
.drag-grip:active { cursor: grabbing; }
.ranking-side .card h3 { margin: 0 0 6px; color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.changes-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; font-size: 12px; }
.changes-list li { display: flex; justify-content: space-between; gap: 8px; }
.changes-list li span:last-child { font-weight: 700; font-variant-numeric: tabular-nums; }
.changes-empty { color: var(--faint); font-size: 12px; }
.ranking-side .card button.wide { width: 100%; margin-top: 10px; }

/* Preserve enough room for the table's fixed reorder grip at common laptop
 * widths. Keep the summary below the table until the full 1600px layout is
 * available. */
@media (max-width: 1599px) {
  .ranking-layout { grid-template-columns: minmax(0, 1fr); }
}

/* Shortlist detail (decision 13): membership only, no ranking -- a
 * deliberately different, simpler shape from the ranking table above,
 * since order carries no meaning for a shortlist. */
.shortlist-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; margin-top: 14px; }
.shortlist-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.shortlist-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 700; }
.shortlist-item button { min-width: 28px; min-height: 28px; padding: 0 8px; }
.league-grid { display: grid; grid-template-columns: minmax(420px, 1fr) minmax(320px, .9fr); gap: 16px; }
.card { padding: clamp(14px, 2vw, 22px); }
.card-heading select { width: auto; max-width: 240px; }
.session-analysis-card .card-heading select { max-width: min(380px, 62%); }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.form-grid .wide { grid-column: 1 / -1; }
.slot-picker { border: 0; padding: 0; margin: 0; min-width: 0; }
.slot-picker legend { padding: 0; margin-bottom: 6px; font-size: 11px; font-weight: 700; color: var(--muted); }
.slot-total { font-weight: 400; color: var(--faint); }
/* Each picker keeps room for its number: one row of nine when the card is
   wide, wrapping when the card is half width beside Session analysis (the
   War Room just above 1080px, as with the side panel open). */
.slot-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(54px, 1fr)); gap: 6px; }
.slot-pick { display: flex; flex-direction: column; align-items: stretch; gap: 3px; }
.slot-pick span { font-size: 11px; font-weight: 700; text-align: center; color: var(--ink); }
.slot-pick select { width: 100%; min-width: 0; padding-left: 10px; padding-right: 24px; text-align: center; }
.form-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; }
.empty-state { display: grid; min-height: 220px; place-content: center; color: var(--muted); text-align: center; }
.empty-state p { max-width: 440px; margin: 5px auto; font-size: 12px; }
.category-ranks-status { min-height: 0; margin: 8px 0; padding: 24px 8px; }
.category-ranks-status > strong { color: var(--ink); font-size: 13px; }
.category-ranks-status > button { min-height: 44px; margin-top: 8px; }
.analysis-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(105px, 1fr)); gap: 8px; margin-top: 14px; }
.analysis-metric { padding: 10px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.analysis-metric strong { display: block; font-size: 16px; }
.analysis-metric span { color: var(--faint); font-size: 11px; }
.full-analysis-open { margin-top: 14px; }
.player-link { min-height: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; font-weight: 700; text-align: left; cursor: pointer; max-width: 100%; }
.player-link:focus-visible, .player-link:active { background: transparent; color: var(--orange-hover); text-decoration: underline; text-underline-offset: 2px; }
@media (hover: hover) and (pointer: fine) { .player-link:hover { background: transparent; color: var(--orange-hover); text-decoration: underline; text-underline-offset: 2px; } }
dialog.player-dialog { width: min(1040px, calc(100vw - 32px)); }
.player-dialog-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 20px; }
.player-history-title { margin: 6px 0 0; font-size: 14px; }
.player-history-title span { color: var(--faint); font-weight: 400; font-size: 12px; }
.player-table-wrap { overflow: auto; overscroll-behavior-x: contain; max-height: 52vh; border: 1px solid var(--line); border-radius: var(--radius); }
.player-table { width: 100%; min-width: max-content; }
.player-table th, .player-table td { position: static; width: auto; min-width: 0; box-shadow: none; text-align: right; }
.player-table th:first-child, .player-table td:first-child { text-align: left; font-weight: 700; }
.player-table .projection-row td { background: var(--orange-soft); }
.plan-card { margin: 14px 0; padding: 16px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); }
.plan-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.plan-head strong { font-size: 16px; }
.plan-features { margin: 10px 0 14px; padding-left: 18px; color: var(--ink); font-size: 13px; line-height: 1.6; }
.pro-notice .button-link { display: inline-block; margin-top: 8px; font-weight: 700; color: var(--orange); }
.slot-edit { display: flex; align-items: center; gap: 6px; color: var(--faint); font-size: 11px; white-space: nowrap; }
.slot-edit select { width: auto; min-width: 58px; height: 30px; padding: 0 24px 0 8px; }
td.table-empty { position: static; height: 180px; text-align: center; white-space: normal; background: var(--panel); }
td.table-empty strong { display: block; margin-bottom: 4px; font-size: 14px; }
td.table-empty p { margin: 0 auto; max-width: 520px; color: var(--faint); }
.full-analysis-card { margin-top: 16px; min-width: 0; }
.analysis-modes { display: flex; gap: 6px; margin: 4px 0 10px; }
.analysis-modes button[aria-pressed="true"] { border-color: var(--orange); color: var(--ink); font-weight: 700; }
.analysis-table { overflow: auto; overscroll-behavior-x: contain; max-height: 70vh; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); }
.analysis-table table { width: 100%; min-width: max-content; }
.analysis-table th:nth-child(2), .analysis-table td:nth-child(2) { width: 190px; min-width: 190px; }
.analysis-team { cursor: pointer; }
.analysis-team:focus-visible td { background-color: var(--orange-soft); }
@media (hover: hover) and (pointer: fine) { .analysis-team:hover td { background-color: var(--orange-soft); } }
.analysis-team.mine td:nth-child(2) { font-weight: 700; }
.analysis-team.selected td { box-shadow: inset 0 -2px 0 0 var(--orange); }
.analysis-roster h3 { margin: 18px 0 8px; font-size: 14px; }
.league-grid > * { min-width: 0; }
.mock-launch { display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.mock-launch-actions { display: flex; align-items: center; gap: 8px; }
.mock-launch-actions > .icon-button { width: 44px; min-width: 44px; min-height: 44px; }
.league-read-state { margin-block: 8px; }
.mock-summary { grid-column: 2 / -1; margin: -8px 0 0; color: var(--muted); font-size: 12px; }
.mock-new-league { grid-column: 2 / -1; display: grid; gap: 8px; margin: 0; padding: 12px 0 0; border: 0; border-top: 1px solid var(--line); }
.mock-new-league legend { padding: 0; margin-bottom: 6px; }
.mock-new-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 10px; }
.mock-new-league .mock-summary { margin: 0; }
.session-list-card { margin-top: 16px; }
/* Leagues (Leon, 2026-10-08): live sessions sit beside the configuration so a
   session can be adjusted next to its league; analysis is below, full width. */
.league-grid .session-list-card { margin-top: 0; display: flex; flex-direction: column; min-height: 0; }
.league-grid .session-list { max-height: 640px; overflow-y: auto; }
.session-analysis-card { margin-top: 16px; }
.session-list { display: grid; gap: 7px; margin-top: 12px; container-type: inline-size; }
.draft-state { display: grid; justify-items: center; gap: 5px; padding: 24px 0; text-align: center; }
.draft-state > strong { color: var(--ink); font-size: 13px; }
.draft-state > p { max-width: 440px; margin: 0; color: var(--muted); font-size: 12px; }
.draft-state > button { min-height: 44px; margin-top: 3px; }
.draft-loading { margin-top: 12px; }
/* A narrow session list (beside the configuration, or a small screen) stacks
   each row: name and date on the first line, slot, status and remove on the
   second (Leon, 2026-10-09: rows were squeezed into four-line names). */
@container (max-width: 620px) {
  .session-row { grid-template-columns: auto minmax(0, 1fr); row-gap: 8px; }
  .session-row > .session-identity { grid-column: 1 / -1; }
  .session-row > :last-child { justify-self: end; }
  .session-identity span { white-space: normal; }
}
.session-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 14px; padding: 12px; border-radius: var(--radius); }
.session-identity { display: grid; gap: 2px; min-width: 0; min-height: 0; padding: 0; border: 0; background: none; color: inherit; font-weight: inherit; text-align: left; cursor: pointer; }
.session-identity:active { background: none; }
@media (hover: hover) and (pointer: fine) {
  .session-identity:hover { background: none; }
  .session-identity:hover strong { text-decoration: underline; text-underline-offset: 2px; }
}
.session-row > .status-pill { justify-self: start; }
.session-row.selected { box-shadow: inset 2px 0 var(--orange); }
.session-identity .session-pending { color: var(--amber); font-weight: 700; white-space: normal; }
.session-edit { min-height: 30px; padding: 3px 12px; }
.session-dialog { width: min(620px, calc(100vw - 24px)); }
.session-dialog-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.session-dialog label { display: grid; gap: 5px; }
.session-dialog label > span, .session-dialog legend { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.session-dialog .slot-pick { gap: 4px; }
.session-punts { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-bottom: 6px; }
.session-dialog .punt-choice { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; }
.session-dialog .punt-choice input { min-height: 0; }
#sessionDialogNote.bad, #newDraftNote.bad { color: var(--red); }
.session-dialog .check-row { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.session-dialog .check-row input { min-height: 0; }
.session-dialog .check-row span { color: var(--ink); font-size: 13px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.session-dialog form { max-height: calc(100dvh - 48px); overflow-y: auto; }
.session-list-card .card-heading { flex-wrap: wrap; gap: 8px 12px; }
.session-list-card .card-heading h2 { margin-right: auto; }
#newLiveDraft { min-height: 30px; padding: 3px 12px; }
.session-identity strong { font-size: 14px; }
.session-row.most-recent .session-identity strong { color: var(--ink); }
.session-identity span { display: block; overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.session-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px; }
.session-link { color: var(--blue); font-size: 12px; font-weight: 700; }
.status-active { border-color: var(--orange); color: var(--orange-hover); }
.status-complete { border-color: var(--green); background: var(--green-soft); color: var(--green); }
.status-good { border-color: var(--green); background: var(--green-soft); color: var(--green); }
.status-attention { border-color: var(--amber); background: var(--amber-soft); color: var(--amber); }
.account-card { grid-column: 1 / -1; }
/* No text-transform: its content is JS-authored sentence case already
 * ("Action incomplete"), and GLOSSARY.md requires sentence case throughout. */
.status-pill { padding: 3px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 11px; font-weight: 700; }
.sync-facts { display: flex; gap: 24px; margin: 12px 0; }
.sync-facts div { display: grid; gap: 2px; }
.sync-facts dt { color: var(--faint); font-size: 11px; text-transform: none; }
.sync-facts dd { margin: 0; font-weight: 700; }
.sync-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; }
.sync-toggle input { width: auto; accent-color: var(--orange); }
.account-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.account-options { margin-top: 18px; border-top: 1px solid var(--line); padding-top: 14px; }
.account-options .account-actions { margin-top: 12px; }
.account-note { margin: 12px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.account-note a { color: var(--orange-hover); text-decoration-thickness: 1px; text-underline-offset: 2px; }
.account-note a:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.account-error { color: var(--red); font-size: 13px; line-height: 1.5; }
.conflict-panel { margin-top: 14px; padding: 12px; border: 1px solid var(--amber); border-radius: var(--radius); background: var(--amber-soft); }
.conflict-panel p { margin: 0 0 12px; font-size: 13px; line-height: 1.5; }
.import-preview { max-height: 240px; overflow-y: auto; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); font-size: 12px; }
.import-preview p { overflow-wrap: anywhere; }
.import-preview pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.import-preview ul { padding-left: 20px; }
button:disabled { opacity: .55; cursor: default; }
button.primary:disabled { opacity: 1; background: var(--line); border-color: var(--line); color: var(--faint); }
#accountDialogDetail { line-height: 1.5; overflow-wrap: anywhere; }
dialog { width: min(460px, calc(100vw - 24px)); padding: 0; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--panel); color: var(--ink); box-shadow: 0 24px 80px rgb(0 0 0 / 30%); }
dialog::backdrop { background: rgb(8 13 23 / 62%); }
dialog form { display: grid; gap: 15px; padding: 20px; }
.dialog-heading, .dialog-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.icon-button { width: 36px; min-height: 36px; padding: 0; border-color: transparent; background: transparent; color: var(--muted); font-size: 20px; }
dialog fieldset { display: grid; gap: 8px; margin: 0; padding: 0; border: 0; }
.radio { display: grid; grid-template-columns: auto 1fr; align-items: center; color: var(--ink); font-size: 12px; }
.radio input { width: auto; accent-color: var(--orange); }
.toast { position: fixed; right: max(18px, env(safe-area-inset-right)); bottom: max(18px, env(safe-area-inset-bottom)); z-index: 20; max-width: min(420px, calc(100vw - 36px)); padding: 11px 14px; border-radius: var(--radius); background: var(--arena); color: var(--on-arena); font-size: 12px; font-weight: 700; opacity: 0; transform: translateY(8px); transition: opacity var(--motion) var(--ease), transform var(--motion) var(--ease); pointer-events: none; }
.toast.show { opacity: 1; transform: none; }

@media (forced-colors: active) {
  .stat-positive, .stat-negative { color: CanvasText; background: Canvas; }
  .stat-positive { border-bottom: 3px solid Highlight; }
  .stat-negative { border-bottom: 3px dashed Highlight; }
}

@media (max-width: 1080px) {
  /* One column on phones: the top bar keeps its own height and the view takes
     the rest. Without explicit rows, a short view (Mock, Playoffs, Account)
     let min-height stretch the bar to fill the screen (Leon, 2026-10-20). */
  .app-shell { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .sidebar { position: sticky; top: 0; z-index: 10; height: auto; flex-direction: row; align-items: center; gap: 12px; padding: calc(8px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) 8px calc(12px + env(safe-area-inset-left)); overflow-x: auto; overscroll-behavior-x: contain; }
  .side-nav { flex-direction: row; flex: 0 0 auto; }
  .nav-tab { width: auto; white-space: nowrap; }
  .account-nav { flex-direction: row; align-items: center; gap: 6px; min-height: 36px; margin-top: 0; }
  .account-nav-email { width: auto; max-width: 150px; }
  .league-card { display: none; }
  .control-panel { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .search-field { grid-column: span 2; }
  .league-grid { grid-template-columns: 1fr; }
  .mock-launch { grid-template-columns: 1fr; align-items: stretch; }
}
@media (max-width: 760px) {
  main { padding: 18px calc(10px + env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left)); }
  .view-heading { align-items: start; }
  .view-actions { display: none; }
  .control-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .search-field, .control-panel fieldset { grid-column: 1 / -1; }
  /* Phone: the board takes the screen below the sticky nav bar. */
  .table-shell { max-height: calc(100vh - 72px); max-height: calc(100dvh - 72px); min-height: min(360px, 70dvh); margin-top: 10px; }
  .eyebrow { display: none; }
  #boardView .view-heading .lede { display: none; }
  .view-heading { margin-bottom: 8px; }
  h1 { font-size: 20px; }
  .control-panel { gap: 8px; padding: 10px; }
  .pills { gap: 4px; }
  .pills label { padding: 4px 7px; }
  #boardScroller th, #boardScroller td { height: 28px; padding: 2px 4px; font-size: 11px; }
  .split-layout { grid-template-columns: 1fr; }
  .depth-layout { grid-template-columns: 1fr; }
  .depth-teams { max-height: 160px; }
  .depth-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ranking-layout { grid-template-columns: 1fr; }
  .collection-pane { max-height: 210px; overflow-y: auto; }
  .league-grid { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .wide { grid-column: 1; }
  .bulk-bar { border-radius: var(--radius); }
}
@media (max-width: 480px) {
  /* Two filters per row, not one: the filters used to fill the first screen. */
  .control-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .search-field, .control-panel fieldset { grid-column: 1 / -1; }
  .bulk-bar { flex-wrap: wrap; }
  .bulk-bar label { flex: 1; }
}

/* ------------------------------------------------ rankings and starring */
.star { min-height: 26px; width: 26px; padding: 0; border: 0; background: transparent; color: var(--line-strong); font-size: 15px; line-height: 1; }
@media (hover: hover) and (pointer: fine) { .star:hover { background: transparent; color: var(--orange); } }
.star.on { color: var(--orange); }
th:first-child .sr-only + *, th:first-child { color: var(--faint); }
.ranking-page { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 16px; align-items: start; }
.ranking-main { padding: 16px 18px; min-width: 0; }
.ranking-meta { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; }
.ranking-main.ranking-state { padding: 0; border: 0; background: transparent; box-shadow: none; }
.ranking-empty-state { min-height: 0; text-align: center; }
.ranking-empty-state .ranking-create { width: 100%; height: 44px; min-height: 44px; font-size: 14px; }
/* The 44px link target uses 14px of the card’s visual bottom padding. */
.ranking-empty-state .ranking-import-link { display: block; width: 100%; min-height: 44px; margin-top: 4px; margin-bottom: -14px; padding: 0; border: 0; background: transparent; color: var(--orange); font-size: 13px; font-weight: 700; }
.ranking-main .ranking-table-wrap { max-height: calc(100vh - 220px); overflow: auto; margin-top: 10px; }
.ranking-main .ranking-table th { position: sticky; top: 0; z-index: 3; background: var(--panel); }
.ranking-table th, .ranking-table td { padding: 4px 8px; height: 32px; }
.ranking-table tr.out-of-pool td { color: var(--faint); }
.ranking-table tr.out-of-pool .player-name { text-decoration: line-through; }
.ranking-aside { display: grid; gap: 12px; position: sticky; top: 16px; }
.ranking-tool { padding: 14px 16px; }
.ranking-starred-tool { padding: 10px 12px; }
.ranking-tool h3 { margin: 0; color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.ranking-starred-tool h3 { color: var(--ink); font-size: 13px; }
.ranking-tool .card-heading { padding-bottom: 8px; margin-bottom: 8px; }
.ranking-starred-tool .card-heading { margin: 0 0 4px; padding: 0; border: 0; }
.ranking-tool .lede { font-size: 12px; margin: 4px 0 8px; }
.build-pills { margin: 0 0 8px; padding: 0; border: 0; }
.build-pills label { padding: 4px 7px; }
.starred-list { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; font-size: 12px; max-height: 220px; overflow-y: auto; }
.starred-list li { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.starred-list button { min-height: 22px; padding: 0 6px; }
.changes-list { max-height: 220px; overflow-y: auto; }
.ranking-aside button.wide { width: 100%; }
.nudge { min-width: 24px !important; min-height: 24px !important; padding: 0 6px !important; }
.ranking-more { display: none; }
.inline-field { display: block; min-width: 220px; }
@media (max-width: 1080px) { .ranking-page { grid-template-columns: 1fr; } .ranking-aside { position: static; } }
/* The ranking table is its own layout: none of the Big Board's sticky
   first-two-column rules apply (they clipped player names). */
.ranking-table th, .ranking-table td { position: static; left: auto; width: auto; min-width: 0; box-shadow: none; background: var(--panel); }



.ranking-main .ranking-table thead th { position: sticky; top: 0; z-index: 3; }

.ranking-find { max-width: 220px; margin-left: auto; }
.ranking-table tr.found td { background: var(--orange-soft); }
.ranking-table tr.found .player-name { color: var(--orange-hover); }

/* Keep table cells as table cells. Flex/block layout belongs inside them,
   otherwise Chrome creates anonymous cells with mismatched row borders. */
.ranking-table td { vertical-align: middle; }
.ranking-table td.player-col { min-width: 140px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.ranking-table td.player-col .player-name { line-height: 1.35; }
.ranking-table .adp-col { width: 46px; color: var(--muted); }
.depth-slot-name .player-link { font-weight: 700; }
.ranking-table tr:not([draggable="true"]) .drag-grip { cursor: default; opacity: .4; }
.ranking-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 12px; }
.ranking-toolbar .ranking-find { margin-left: 0; flex: 1; }
.filter-toggle { white-space: nowrap; }
button.filter-toggle[aria-pressed="true"] { background: var(--orange-soft); border-color: var(--orange); color: var(--ink); }
td.table-empty, #boardScroller td.table-empty { position: static; padding: 24px 12px; text-align: center; white-space: normal; color: var(--muted); }
.view-actions { align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.score-help { position: relative; font-size: 12px; }
.score-help-copy { position: static; width: auto; padding: 0; color: var(--ink); line-height: 1.5; }

/* Depth charts use the viewport rather than the board table's short scroll
   allowance. Teams and the chart scroll independently; both stay reachable. */
.depth-workspace { height: 100dvh; min-height: 0; }
.depth-workspace #boardView { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.depth-workspace .view-heading { flex-shrink: 0; }
.depth-workspace #depthSubView { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.depth-workspace .depth-layout { flex: 1; min-height: 0; margin-top: 0; grid-template-columns: 100px minmax(0, 1fr); }
.depth-workspace .depth-teams { min-height: 0; max-height: none; scrollbar-gutter: stable; }
.depth-workspace .depth-teams button { min-height: 28px; }
.depth-workspace .depth-card { min-height: 0; overflow: auto; }
.depth-card .card-heading { flex-wrap: wrap; gap: 6px; }
.depth-card .card-heading .lede { font-size: 12px; }
.depth-slot-name { flex-direction: column; gap: 3px; overflow-wrap: anywhere; }
.depth-slot-name span:last-child { font-size: 11px; }
.depth-team-stats { margin: 16px 0 20px; }
.depth-stats-heading, .depth-phone-toolbar { display: none; }
.depth-player-count { color: var(--muted); font-size: 11px; }
.depth-state { margin-block: 8px; }
.depth-stats-note { margin-block: 4px; }
.team-stats { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 5px; margin: 0; }
.team-stat { padding: 8px 4px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); text-align: center; }
.team-stat dt { color: var(--muted); font-size: 11px; font-weight: 700; }
.team-stat dd { margin: 4px 0 0; font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; }
@media (max-width: 1080px) {
  .depth-workspace { grid-template-rows: auto minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .view-heading { flex-wrap: wrap; gap: 12px; }
  .view-actions { display: flex; justify-content: flex-start; }
  .depth-workspace .depth-layout { grid-template-columns: 66px minmax(0, 1fr); gap: 8px; }
  .depth-workspace .depth-teams { padding: 4px; }
  .depth-workspace .depth-teams button { padding-inline: 4px; }
  .depth-card { padding: 12px; }
  .team-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Operator usage card (Account, only for LW_ADMIN_EMAILS). */
.usage-card { margin-top: 16px; }
.usage-now { display: grid; gap: 2px; margin: 10px 0 14px; }
.usage-now strong { font-size: 24px; }
.usage-now span { color: var(--muted); font-size: 12px; }
.usage-table-wrap { overflow-x: auto; overscroll-behavior-x: contain; margin: 12px 0; }
.usage-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.usage-table th, .usage-table td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: right; }
.usage-table th:first-child, .usage-table td:first-child { text-align: left; }
.usage-table caption { padding-bottom: 6px; color: var(--muted); font-size: 12px; text-align: left; }
.usage-table caption { font-weight: 700; font-size: 13px; }
.usage-table tbody th { font-weight: 700; }
.usage-table .usage-total th, .usage-table .usage-total td { font-weight: 700; border-top: 2px solid var(--line); }
.usage-glossary { display: grid; gap: 6px; margin: 14px 0 0; font-size: 12px; }
.usage-glossary div { display: grid; grid-template-columns: 112px 1fr; gap: 8px; }
.usage-glossary dt { font-weight: 700; }
.usage-glossary dd { margin: 0; color: var(--muted); }
@media (max-width: 520px) { .usage-glossary div { grid-template-columns: 1fr; gap: 0; } }

/* Drafts page (2026-10-10): drafts first; saved settings in a window. */
.view-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.draft-help-button { width: 44px; min-width: 44px; min-height: 44px; }
.presets-dialog { width: min(720px, calc(100vw - 24px)); }
.presets-body { display: grid; gap: 14px; padding: 20px; max-height: calc(100dvh - 48px); overflow-y: auto; }
.presets-picker { display: flex; flex-wrap: wrap; gap: 8px; }
.presets-picker select { flex: 1 1 200px; }
.presets-body form { padding: 0; }

/* Link to the public setup guide (site/guide.html), styled like a nav item. */
.nav-guide { display: flex; align-items: center; min-height: 36px; padding: 0 10px; border-radius: var(--radius-sm); color: var(--on-arena); font-size: 13px; font-weight: 700; opacity: .78; text-decoration: none; }
.nav-guide:focus-visible { background: rgb(255 255 255 / 7%); opacity: 1; }
@media (hover: hover) and (pointer: fine) { .nav-guide:hover { background: rgb(255 255 255 / 7%); opacity: 1; } }

/* Ranking import (Leon, 2026-10-16). */
.import-dialog form { display: grid; gap: 12px; min-width: min(520px, 90vw); }
.import-summary { margin: 0; font-weight: 700; }
.import-choices { display: grid; gap: 8px; max-height: 240px; overflow: auto; }
.import-choices label { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 8px; align-items: center; }
.import-missing ul { max-height: none; overflow: visible; margin: 6px 0 0; padding-left: 18px; font-size: 13px; color: var(--muted); }
@media (max-width: 560px) { .import-choices label { grid-template-columns: 1fr; } }
.import-steps { margin: 8px 0; padding-left: 20px; display: grid; gap: 6px; font-size: 13px; }
.import-save-help { font-size: 13px; margin: 6px 0; }
.import-save-help ul { margin: 6px 0 0; padding-left: 18px; display: grid; gap: 4px; }
.import-help-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.import-tip { margin: 0; padding: 8px 10px; border-radius: 8px; border: 1px solid color-mix(in srgb, var(--amber) 45%, transparent); background: var(--amber-soft); font-size: 13px; }
.build-undo { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; padding: 8px 10px; border: 1px solid color-mix(in srgb, var(--amber) 45%, transparent); border-radius: var(--radius); background: var(--amber-soft); font-size: 13px; }
.build-undo button { flex: none; }

/* ------------------------------------------------------------ Rankings polish
   (Leon, 2026-10-16). Presentation only: rows, order and actions are the
   same elements on every screen size. */
.ranking-main .detail-head h2 { margin: 0; font-size: 20px; }
.ranking-main .detail-actions button { min-height: 32px; }
.ranking-default-badge { display: inline-block; margin-left: 6px; padding: 2px 8px; border-radius: 999px; background: var(--orange-soft); color: var(--orange-hover); font-size: 11px; font-weight: 700; vertical-align: middle; }
.ranking-table tbody tr:nth-child(10n) td { border-bottom-color: var(--line); }
.ranking-table td.rank-col { color: var(--muted); font-weight: 700; }

.phone-only { display: none !important; }



/* Share dialog (Leon, 2026-10-16) */
.share-dialog form { display: grid; gap: 12px; min-width: min(520px, 90vw); }
.share-status { margin: 0; font-weight: 700; }
#shareOn { display: grid; gap: 10px; }
#shareOn[hidden] { display: none; }
.share-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.share-actions .button { display: inline-flex; align-items: center; text-decoration: none; }
#shareUrl { width: 100%; font-size: 14px; }

/* ------------------------------------------------ Playoff schedule tab
   (Leon, 2026-10-16) */
.playoff-tab-controls .inline-field { display: grid; gap: 2px; font-size: 11px; color: var(--muted); }
.po-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.po-stat { display: grid; gap: 2px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.po-stat-title { color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.po-stat strong { font-size: 16px; white-space: nowrap; }
.po-stat-detail { color: var(--muted); font-size: 12px; }
.po-stat-loading > :is(span,strong) { position: relative; }
.po-stat-loading > :is(span,strong)::after { content: ""; position: absolute; top: 50%; left: 0; right: 20%; height: 10px; transform: translateY(-50%); border-radius: 3px; background: var(--line); }
.po-tabs { display: flex; gap: 6px; margin-bottom: 10px; }
.po-tab { padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; background: var(--panel); color: var(--muted); font-weight: 700; }
.po-tab.active { border-color: var(--orange); background: var(--orange-soft); color: var(--ink); }
.po-panel { padding: 14px 16px; }
.po-heading { margin: 4px 0 2px; font-size: 15px; }
.po-panel .lede { font-size: 12px; margin: 2px 0 10px; }
.po-nights { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(34px, 1fr); gap: 4px; overflow-x: auto; overscroll-behavior-x: contain; margin-bottom: 16px; padding-bottom: 4px; }
.po-night { display: grid; justify-items: center; gap: 1px; padding: 6px 2px; border-radius: 6px; border: 1px solid var(--line); font-size: 11px; }
.po-night strong { font-size: 15px; }
.po-night.light { outline: 2px solid var(--green); outline-offset: -2px; }
.po-night-day, .po-night-date { color: var(--muted); }
.po-legend { margin: 0 0 10px; color: var(--muted); font-size: 12px; }
.po-table-wrap { overflow-x: auto; overscroll-behavior-x: contain; }
.po-table { width: auto; min-width: 100%; border-collapse: collapse; font-size: 12px; }
.po-player-toolbar { display: flex; flex-wrap: nowrap; gap: 6px; align-items: center; min-width: 0; margin-bottom: 6px; }
.po-player-toolbar > .lw-inline-search { flex: 1; min-width: 0; max-width: 320px; }
.lw-chip.lw-chip-toggle { height: 24px; min-height: 24px; padding: 0 8px; font-size: 11px; }
/* The Big Board's frozen-column rules target every table's first columns;
   none of them apply here. */
.po-table th, .po-table td { position: static; left: auto; width: auto; min-width: 0; max-width: none; box-shadow: none;
  padding: 6px 8px; border-bottom: 1px solid var(--line); white-space: nowrap; text-align: left; }
.po-table th { color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; background: var(--panel); }
.po-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.po-table .po-team, .po-table .po-strong { font-weight: 700; }
.po-grade { font-weight: 700; text-align: center; }
.po-table .po-grade-cell { text-align: center; }
.po-grade-pill { display: inline-flex; min-width: 24px; height: 20px; align-items: center; justify-content: center; border-radius: 5px; font-size: 11px; font-weight: 700; }
.po-grade-pill.po-grade-A, .po-grade-pill.po-grade-F { color: var(--on-accent); }
.po-grade-pill.po-grade-A { background: var(--green); }
.po-grade-pill.po-grade-B { background: var(--green-soft); }
.po-grade-pill.po-grade-C { background: var(--line); }
.po-grade-pill.po-grade-D { background: var(--red-soft); }
.po-grade-pill.po-grade-F { background: var(--red); }
.po-schedule-state { margin-block: 12px; order: 4; }
.po-schedule-state:not(:has(.po-loading-row)), .lw-empty-card { padding: 24px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.po-schedule-state > strong, .lw-empty-card > strong { display: block; font-size: 13px; }
.po-schedule-state > p, .lw-empty-card > p { color: var(--muted); font-size: 12px; }
.po-schedule-state > button, .lw-empty-card > button { min-height: 44px; }
.po-loading-row, .lw-skeleton-row { display: flex; align-items: center; gap: 16px; height: 30px; border-bottom: 1px solid var(--line); }
.po-loading-row > span, .lw-skeleton-row > span { height: 10px; border-radius: 3px; background: var(--line); flex: 1; }
.po-loading-row > span:first-child, .lw-skeleton-row > span:first-child { flex: 2; }
.po-grade-A { color: var(--green); }
.po-grade-B { color: color-mix(in srgb, var(--green) 65%, var(--ink)); }
.po-grade-D { color: color-mix(in srgb, var(--red) 65%, var(--ink)); }
.po-grade-F { color: var(--red); }
.po-team-toggle { min-height: 0; border: 0; padding: 2px; background: transparent; color: var(--ink); font: inherit; font-weight: 700; cursor: pointer; text-align: left; }
.po-team-toggle:focus-visible { color: var(--orange); text-decoration: underline; }
@media (hover: hover) and (pointer: fine) { .po-team-toggle:hover { background: transparent; color: var(--orange); text-decoration: underline; } }
.po-team-detail[hidden] { display: none; }
.po-team-detail td { padding: 12px !important; background: var(--panel); white-space: normal; }
.po-team-weeks { display: grid; gap: 12px; }
.po-team-week { min-width: 0; }
.po-team-week-title { display: block; margin-bottom: 5px; font-size: 12px; }
.po-team-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.po-team-day { display: grid; justify-items: center; align-content: center; min-height: 52px; border: 1px solid var(--line); border-radius: 5px; font-size: 11px; text-align: center; }
.po-team-day.plays { box-shadow: inset 0 0 0 2px var(--orange); }
.po-team-day strong { font-size: 15px; line-height: 1; }
.po-day-note { min-height: 12px; font-size: 11px; white-space: nowrap; }
.po-heat-0, .po-table td.po-heat-0 { background: transparent; }
.po-heat-1, .po-table td.po-heat-1 { background: color-mix(in srgb, var(--schedule-neutral) 20%, var(--panel)); }
.po-heat-2, .po-table td.po-heat-2 { background: color-mix(in srgb, var(--schedule-neutral) 40%, var(--panel)); }
.po-heat-3, .po-table td.po-heat-3 { background: color-mix(in srgb, var(--schedule-neutral) 65%, var(--panel)); }
.po-heat-4, .po-table td.po-heat-4 { background: color-mix(in srgb, var(--schedule-neutral) 100%, var(--panel)); }
.po-table.po-grid th.po-window, .po-table.po-grid td.po-window { box-shadow: inset 0 0 0 1px var(--orange); }
.po-grid th, .po-grid td { padding: 4px 6px; }
.po-grid .po-average td { font-weight: 700; color: var(--muted); }
.po-player .player-name { max-width: 200px; }
@media (max-width: 760px) {
  .po-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #playoffsView .view-actions { display: flex; flex-wrap: wrap; width: 100%; }
  #playoffsView .view-actions select:not(.lw-chip-select) { min-height: 44px; }
  .po-table { font-size: 12px; }
  .po-table th, .po-table td { padding: 6px 5px; }
}
@media (max-width: 520px) {
  /* Collapsed phone row (Leon, 2026-10-20): team and grade on the first
     line; total playoff games and each playoff week's count on the second. */
  /* One rule under the whole row: the two visible cells differ in height,
     so their own borders stepped (Leon's iPhone, 2026-10-20). */
  .po-panel { padding: 12px; }
  .po-team-day { min-height: 48px; }
}

/* Draft recap (Leon, 2026-10-18) */
.recap-card { margin-top: 16px; }
.recap-body { max-height: 70vh; overflow: auto; overscroll-behavior-x: contain; }
.recap-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.recap-table th, .recap-table td { padding: 5px 8px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.recap-table th { position: sticky; top: 0; background: var(--panel); color: var(--faint); font-size: 11px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.recap-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.recap-table tr.mine td { background: var(--orange-soft); }
.recap-table tr.round-start td { border-top: 2px solid var(--line); }
.recap-table .recap-player { font-weight: 700; }
.recap-teams { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.recap-team { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); }
.recap-team.mine { border-color: var(--orange); background: var(--orange-soft); }
.recap-team h3 { margin: 0 0 6px; font-size: 13px; }
.recap-team ol { margin: 0; padding: 0; list-style: none; display: grid; gap: 3px; font-size: 12px; }
.recap-team li { display: flex; gap: 6px; align-items: baseline; }
.recap-round { width: 22px; color: var(--faint); font-variant-numeric: tabular-nums; }
.recap-pos, .recap-empty { color: var(--muted); }

/* The recap's Picks / By team toggle looks like the analysis toggle. */
.recap-modes { display: flex; gap: 6px; margin: 4px 0 10px; }
.recap-modes button[aria-pressed="true"] { border-color: var(--orange); color: var(--ink); font-weight: 700; }
#leagueView a:not(.session-link) { color: var(--orange-hover); }
@media (max-width: 760px) { .recap-body { max-height: none; } }

/* Mouse feedback uses one quiet treatment. Touch keeps the explicit press
   states below and never inherits a sticky hover colour. */
@media (hover: hover) and (pointer: fine) {
  button, .nav-guide { transition: background-color .12s ease, border-color .12s ease, color .12s ease; }
  button.secondary:not(:disabled):hover { background: var(--surface); border-color: var(--orange); }
  button.quiet:not(:disabled):hover { background: var(--surface); color: var(--ink); }
  .po-team-toggle:hover, .player-link:hover { background: transparent; }
}
@media (prefers-reduced-motion: reduce) {
  button, .nav-guide { transition: none; }
}

/* Main actions retain 44px touch targets; row controls use the row's target. */
@media (pointer: coarse) {
  button:active { filter: brightness(.94); }
  .button-link, .nav-tab, .nav-guide, .connection-actions button,
  .connection-select, .dialog-actions button { min-height: 44px; }
  input:not([type="checkbox"]):not([type="radio"]), textarea { font-size: 16px; }
  .player-link:active, .roster-player:active, .waiver-player-name:active { color: var(--orange); }
}

/* Round/week wording must fit, and remain tappable in phone landscape too. */
#playoffLengthControl { grid-column: span 2; }
#playoffWeeks, #poWeeks { min-height: 44px; font-size: 16px; }
#poWeeks { width: min(290px, 100%); }

.connection-toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; min-width: 0; }
.connection-pills { display: flex; flex: 1; min-width: 0; flex-wrap: wrap; gap: 6px; }
.connection-pills button { min-height: 44px; max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.connection-pills button[aria-pressed="true"] { border-color: var(--orange); color: var(--orange); background: var(--orange-soft); }
.connection-switcher { display: none; }
.connection-sync { min-height: 44px; font-size: 13px; }
.connection-sync-short { display: none; }
.connection-toolbar > .connection-warning { flex-basis: 100%; margin: 0; order: 5; }
.connection-more { position: relative; flex: 0 0 auto; }
.connection-menu-toggle { display: grid; place-items: center; width: 44px; min-height: 44px; padding: 0; font-size: 20px; }
.connection-actions-sheet .connection-actions { display: grid; gap: 0; }
.connection-actions-sheet .connection-actions :is(button, a) { min-height: 44px; text-align: left; justify-content: start; border: 0; }
.connection-sheet { width: min(560px, calc(100% - 24px)); max-height: calc(100dvh - 48px); overflow: auto; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: var(--panel); color: var(--ink); }
.connection-sheet::backdrop { background: color-mix(in srgb, var(--arena) 40%, transparent); }
.connection-sheet .dialog-heading { margin-bottom: 12px; }
.connection-sheet .icon-button { width: 44px; min-height: 44px; }
.connection-sheet #connectionSheetAdd { width: 100%; min-height: 44px; margin-top: 12px; border: 1px dashed var(--line-strong); background: var(--panel); color: var(--orange); }
.connection-item { display: grid; grid-template-columns: minmax(0,1fr) 44px; gap: 2px 8px; padding: 8px 12px; border-radius: 10px; }
.connection-item:has(.connection-select[aria-pressed="true"]) { background: transparent; box-shadow: inset 2px 0 var(--orange); color: var(--ink); }
.connection-item .connection-select { min-height: 44px; overflow-wrap: anywhere; padding: 4px; font-size: 15px; }
.connection-item > p { grid-column: 1 / -1; }
.connection-detail-tabs { margin: 0 0 8px; flex-wrap: nowrap; gap: 4px; border-bottom: 1px solid var(--line); }
.connection-detail-tabs button { flex: 1; min-width: 0; min-height: 44px; padding: 0 10px; border: 0; border-radius: 0; background: transparent; color: var(--muted); font-size: 15px; }
.connection-detail-tabs button[aria-selected="true"] { box-shadow: inset 0 -3px var(--orange); color: var(--orange); }
#connectionFirstRun { max-width: 640px; margin: 24px auto; }
#connectionSetup { display: grid; gap: 12px; }
#connectionSetup .card { padding: 0; border: 0; box-shadow: none; background: transparent; }
#connectionSetup h2 { margin: 0; }
#connectionSetup .connection-link-row { display: grid; grid-template-columns: 1fr; }
#connectionSetup input, #connectionSetup textarea, #connectionSetup select:not(.lw-chip-select) { font-size: 16px; min-height: 44px; }
#connectionSetup button { min-height: 44px; }
#connectionSetup .connection-link-form { margin: 0; }

/* The table is the focus on both screen sizes. */
.matchup-workspace { display: grid; grid-template-columns: minmax(0,1fr) 290px; gap: 16px; align-items: start; }
.matchup-main, .matchup-sidebar { min-width: 0; }
.matchup-sidebar { display: grid; gap: 12px; }
.matchup-hero { padding: 12px 14px; border-radius: 12px 12px 0 0; }
.matchup-period { margin: 0; color: var(--muted); font-size: 13px; }
.matchup-score-line { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.matchup-expected { margin: 0; font-size: 24px; line-height: 1.2; }
.matchup-needs { display: inline-block; margin: 0; padding: 4px 8px; border-radius: 20px; font-size: 12px; background: var(--orange-soft); }
.matchup-basis { position: relative; flex: 0 0 44px; }
.matchup-table-shell { max-height: 65dvh; overflow: auto; border: 1px solid var(--line); border-top: 0; border-radius: 0 0 12px 12px; background: var(--panel); }
.matchup-compare { border-spacing: 0; }
.matchup-compare th, .matchup-compare td { padding: 8px 7px; height: 40px; font-size: 14px; border-bottom: 1px solid var(--line); border-radius: 0; }
.matchup-compare th { min-width: 0; }
.matchup-compare thead th { position: sticky; top: 0; z-index: 2; background: var(--panel); font-size: 13px; vertical-align: bottom; }
.matchup-compare thead th:first-child, .matchup-compare tbody th { width: 52px; }
.matchup-compare td strong { font-size: 16px; }
.matchup-column-label { display: block; font-size: 11px; color: var(--muted); }
.matchup-compare .matchup-standing-col { width: 90px; white-space: nowrap; font-size: 12px; font-weight: 700; }
.standing-ahead, .standing-locked { color: var(--green); }
.standing-behind, .standing-lost { color: var(--red); }
.standing-close { color: var(--ink); }
.matchup-legend { font-size: 11px; margin: 5px 0; }
.matchup-stream-section, .matchup-days-section, .matchup-other-section { border: 1px solid var(--line); border-radius: 12px; padding: 0 12px; background: var(--panel); min-width: 0; }
.matchup-sidebar .matchup-advice-card { padding: 12px 0; border: 0; border-top: 1px solid var(--line); border-radius: 0; }
.matchup-sidebar .matchup-advice-card p { font-size: 14px; }
.matchup-sidebar .matchup-advice-card strong { display: block; margin-bottom: 5px; }
.matchup-sidebar .matchup-advice { gap: 0; }
.matchup-controls { margin: 4px 0 8px; flex-wrap: nowrap; align-items: center; }
.matchup-controls .connection-picker { flex: 1; font-size: 0; max-width: none; }
.matchup-controls select:not(.lw-chip-select) { min-height: 44px; }
.matchup-controls button { font-size: 13px; padding: 0 10px; }
@media (max-width: 1100px) and (min-width: 761px) {
  .matchup-workspace { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 760px) {
  #connectionsView { margin: 0; }
  main { padding: 10px 12px 30px; }
  .connection-toolbar { flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
  .connection-switcher { display: flex; flex: 1; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; min-height: 44px; padding: 0 12px; background: var(--panel); color: var(--ink); border: 1px solid var(--line-strong); border-radius: 22px; text-align: left; font-size: 15px; }
  .connection-chip-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
  .connection-chip-score { flex-shrink: 0; font-size: 14px; }
  .connection-pills, .connection-toolbar .connection-add, .connection-toolbar > .connection-more, .connection-sync-long { display: none; }
  .connection-sync-short { display: inline; }
  .connection-sync { flex: 0 0 auto; padding: 0 6px; }
  .connection-sheet { margin: 112px auto auto; max-height: calc(100dvh - 136px); }
  .connection-detail-tabs { gap: 0; }
  .connection-detail-tabs button { font-size: 14px; padding: 0 4px; }
  .matchup-workspace { display: flex; flex-direction: column; gap: 8px; }
  .matchup-main, .matchup-sidebar { width: 100%; }
  .matchup-sidebar { gap: 8px; }
  .matchup-hero { padding: 8px 12px; }
  .matchup-expected { font-size: 20px; }
  .matchup-period { font-size: 12px; }
  .matchup-compare .matchup-actual-col { display: none; }
  .matchup-compare .matchup-standing-col { width: 78px; font-size: 11px; }
  .matchup-compare th, .matchup-compare td { height: 40px; padding: 7px 6px; }
  .matchup-compare thead th { max-width: none; height: 44px; font-size: 12px; }
  .matchup-compare thead th:first-child, .matchup-compare tbody th { width: 46px; }
  .matchup-compare tbody th { font-size: 14px; }
  .matchup-compare td strong { font-size: 16px; }
}

/* Big Board: search and a counted filter sheet leave the board in view. */
.board-toolbar { display: flex; align-items: end; gap: 8px; }
.board-toolbar .search-field { flex: 1; min-width: 0; }
.board-toolbar .search-field > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.board-toolbar input { font-size: 16px; min-height: 44px; }
.board-toolbar button { min-height: 44px; }
.board-help-button { min-width: 44px; border-radius: 50%; }
.board-filter-sheet, .board-help-sheet { width: min(720px, calc(100% - 24px)); max-height: calc(100dvh - 40px); overflow: auto; padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel); color: var(--ink); }
.board-filter-sheet::backdrop, .board-help-sheet::backdrop { background: color-mix(in srgb, var(--arena) 40%, transparent); }
.board-filter-sheet .control-panel, .board-filter-sheet .control-panel.with-playoff { grid-template-columns: repeat(2, minmax(0,1fr)); padding: 16px 0; border: 0; box-shadow: none; background: transparent; }
.board-filter-sheet select:not(.lw-chip-select) { font-size: 16px; min-height: 44px; }
.board-filter-sheet button, .board-help-sheet button { min-height: 44px; }
.board-filter-sheet .pills label { min-height: 44px; }
.board-help-sheet .score-help { display: block; margin: 12px 0; }
.board-help-sheet .score-help-copy { position: static; width: auto; max-width: none; box-shadow: none; margin-top: 8px; }
@media (max-width: 760px) {
  .research-board #boardView > .view-heading { display: none; }
  .board-filter-sheet { padding: 16px; }
  .board-filter-sheet .control-panel { gap: 10px; }
}

.sidebar .brand-lockup { padding-inline: 0; gap: 8px; }
.sidebar .brand-lockup strong { font-size: 14px; }
#navToggle { min-width: 28px; padding-inline: 3px; }
#connectionFirstRun { padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel); }
@media (max-width: 760px) {
  .matchup-main, .matchup-sidebar { display: contents; }
  .matchup-workspace > *, .matchup-main > *, .matchup-sidebar > * { max-width: 100%; width: 100%; }
  .matchup-hero { order: 0; }
  .matchup-table-shell { order: 1; }
  .matchup-legend { order: 2; }
  .matchup-stream-section { order: 3; }
  .matchup-days-section { order: 4; }
  .matchup-other-section { order: 5; }
}
.matchup-period-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.matchup-options { position: relative; min-width: 0; }

.matchup-score-line { justify-content: flex-start; align-items: center; flex-wrap: wrap; }
.matchup-score-line .matchup-needs { max-width: 100%; }
.connection-item .connection-select { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.connection-select strong { overflow-wrap: anywhere; }
.connection-row-score { flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.connection-item > .connection-meta { margin: 0; font-size: 12px; }
.connection-item > .connection-warning { margin: 3px 0; }
#connectionSetupDialog .connection-setup-intro { display: none; }
.matchup-team-name { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; white-space: normal; overflow-wrap: anywhere; }




/* In-season stats and schedules: all wide content scrolls within its table. */
.matchup-games { border-bottom: 2px solid var(--line); }
.matchup-games-played { display: none; font-weight: 400; }
.connection-rename { max-width: min(30rem, calc(100vw - 2rem)); }
.connection-rename input { width: 100%; min-height: 44px; font-size: 16px; }
.stream-stat-grid { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 1px; margin: 5px 0 10px; font-variant-numeric: tabular-nums; }
.stream-stat-grid div { text-align: center; min-width: 0; }
.stream-stat-grid dt { font-size: 11px; color: var(--muted); }
.stream-stat-grid dd { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: 0; white-space: nowrap; }
.stat-helps { color: var(--green); }
.stat-hurts { color: var(--red); }
.lineup-grid-shell, .waiver-table-shell { max-width: 100%; overflow: auto; isolation: isolate; border: 1px solid var(--line); border-radius: 10px; margin-top: 12px; }
.lineup-grid, .waiver-table { border-collapse: separate; border-spacing: 0; font-variant-numeric: tabular-nums; }

.lineup-grid small, .waiver-table small { display: block; color: var(--muted); font-weight: 400; font-size: 11px; white-space: normal; }
.lineup-player { display: block; padding: 5px; margin-bottom: 4px; border-radius: 5px; background: var(--canvas); }
.lineup-played { border-left: 3px solid var(--muted); }
.lineup-projected_start { border-left: 3px solid var(--green); }
.lineup-doubtful { border-left: 3px solid var(--orange); }
.lineup-out { border-left: 3px solid var(--red); }
.lineup-empty { color: var(--muted); }
.waiver-controls { display: flex; gap: 10px; flex-wrap: wrap; margin: 12px 0; }
.waiver-controls select:not(.lw-chip-select) { min-height: 44px; font-size: 16px; }
.waiver-day-filter { display: flex; flex-wrap: wrap; gap: 6px; }
.waiver-day-filter button { min-height: 44px; }
.waiver-day-filter [aria-pressed="true"] { border-color: var(--orange); background: color-mix(in srgb, var(--orange) 12%, var(--panel)); }
.waiver-table th, .waiver-table td { padding: 6px 8px; }
.waiver-table th:first-child { width: 150px; min-width: 150px; max-width: 150px; white-space: normal; }
.waiver-player-name { text-align: left; white-space: normal; padding: 0; border: 0; background: transparent; color: var(--ink); font-weight: 700; }
.waiver-schedule { text-align: center; }
@media (max-width: 760px) {
  .matchup-games-played { display: block; font-size: 11px; }
  .waiver-table th:first-child { width: 130px; min-width: 130px; max-width: 130px; }
}
.waiver-controls .connection-picker { margin: 0; }
.waiver-table tbody th, .lineup-grid tbody th { top: auto; text-align: left; text-transform: none; letter-spacing: 0; color: var(--ink); }
.waiver-table-shell { max-height: 70dvh; }
.waiver-table thead th { z-index: 2; }
.waiver-table thead th:first-child { z-index: 3; }
.lineup-grid thead th { position: static; }
.lineup-grid thead th:first-child { position: sticky; }
.waiver-player-name { font-size: 14px; line-height: 1.3; }
.lineup-grid .lineup-current-day { color: var(--ink); }
@media (max-width: 760px) { .stream-stat-grid dd { font-size: 12px; } .stream-stat-grid dt { font-size: 11px; } }


/* My leagues polish: Safari's useful phone viewport can be only 664px tall. */
.connection-data-notes { margin: 4px max(24px, calc((100vw - 1232px) / 2)); padding-inline: 0; border: 0; color: var(--muted); font-size: 12px; }
.connection-data-notes li { overflow-wrap: anywhere; }
.connection-active-panel > .connection-picks table th:first-child,
.connection-active-panel > .connection-picks table td:first-child { text-align: left; }
.connection-status { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; margin-left: 5px; padding: 1px 5px; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 1.4; letter-spacing: 0; text-transform: none; background: var(--blue-soft); color: var(--ink); }
.connection-status.status-out { color: var(--red); background: var(--red-soft); }
.connection-status.status-questionable { color: var(--amber); background: var(--amber-soft); }
@media (max-width: 760px) {
  .matchup-hero { display: grid; grid-template-columns: minmax(0, 1fr) max-content 44px; gap: 0 8px; align-items: center; padding: 4px 10px 7px; }
  .matchup-period-row, .matchup-score-line { display: contents; }
  .matchup-options { grid-column: 1; grid-row: 1; }
  .matchup-basis { grid-column: 3; grid-row: 1; }
  .matchup-expected { grid-column: 2; grid-row: 1; margin: 0; font-size: 20px; line-height: 1; }
  .matchup-needs { grid-column: 1 / -1; grid-row: 2; display: block; width: fit-content; max-width: 100%; margin: 0; padding: 3px 7px; font-size: 11px; }
  .matchup-team-name { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .matchup-compare th, .matchup-compare td { height: 32px; padding: 5px 6px; }
  .matchup-compare thead th { height: 36px; padding-block: 4px; }
  .matchup-compare .matchup-games td { padding-block: 4px; }
}


/* Compact daily lineups: future days first, history available on demand. */
.lineup-toolbar { align-items: center; gap: 6px; flex-wrap: wrap; margin: 0; }

.lineup-help { position: relative; margin-left: auto; }
.lineup-help p { position: absolute; right: 0; z-index: 4; width: min(290px, calc(100vw - 60px)); margin: 4px 0; padding: 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); box-shadow: var(--shadow); font-size: 13px; }
.lineup-player { display: flex; align-items: center; flex-wrap: wrap; gap: 3px; min-height: 26px; margin: 0; padding: 3px; font-size: 12px; }
.lineup-player .lineup-exception { display: inline; font-size: 11px; color: inherit; }
.lineup-player .connection-status { margin-left: 0; padding: 0 3px; }

.lineup-toolbar button[aria-expanded="true"] { border-color: var(--orange); background: var(--orange-soft); }

/* Declutter: one stat source at a time, details on demand. */
.matchup-workspace { grid-template-columns: minmax(0, 1fr); }
.matchup-table-controls { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 4px 0; }
.matchup-week-nav, .matchup-stat-source { display: flex; align-items: center; gap: 4px; }
.matchup-table-controls button { min-height: 44px; }
.matchup-week-nav button { min-width: 44px; font-size: 20px; padding: 0 8px; }
.matchup-stat-source [aria-pressed="true"] { background: var(--orange-soft); border-color: var(--orange); color: var(--ink); }
.matchup-compare .matchup-games-played { display: block; font-size: 11px; }
.waiver-filters { margin-bottom: 8px; }
.waiver-phone-heading, .waiver-table .waiver-phone-schedule { display: none; }
@media (max-width: 760px) {
  .matchup-table-controls { order: 1; }
  .matchup-table-shell { order: 2; max-height: none; }
  .matchup-legend { order: 3; }
  .matchup-compare th, .matchup-compare td { height: 28px; padding-block: 3px; }
  .matchup-compare td strong { font-size: 14px; }
  .matchup-table-controls button { font-size: 13px; padding-inline: 10px; }
  .matchup-week-nav button { font-size: 20px; }
  .waiver-table-shell { overflow-x: hidden; }
  .waiver-table { width: 100%; min-width: 100%; table-layout: fixed; }
  .waiver-table th:first-child { width: 75px; min-width: 75px; max-width: 75px; }
  .waiver-table th, .waiver-table td { padding: 2px 1px; font-size: 11px; text-align: center; }
  .waiver-table th:first-child, .waiver-table td:first-child { padding-inline: 3px; text-align: left; }
  .waiver-table thead th button { display: none; }
  .waiver-phone-heading { display: inline; letter-spacing: 0; }
  .waiver-table tr > :nth-child(n+11) { display: none; }
  .waiver-player-name { display: block; width: 100%; font-size: 11px; min-height: 44px; line-height: 1.2; }
  .waiver-player-text { display: block; white-space: normal; overflow-wrap: anywhere; }
  .waiver-player-name small:not(.waiver-phone-schedule) { display: none; }
  .waiver-table .waiver-phone-schedule { display: block; font-size: 11px; line-height: 1.1; }
  .waiver-table .connection-status { font-size: 11px; padding-inline: 2px; margin-left: 0; }
  .team-strength-table th, .team-strength-table td { font-size: 11px; padding-inline: 3px; }
}
.matchup-score-caption { font-size: 11px; font-weight: 400; color: var(--muted); }
.waiver-numeric-compact { display: none; }
@media (max-width: 760px) {
  .waiver-table td { padding-inline: 0; }
  .waiver-numeric-full { display: none; }
  .waiver-numeric-compact { display: inline; }
}
.lineup-no_game { color: var(--muted); }


/* Server-provided roster lines; no slot allocation or ranking in the browser. */
.roster-controls { gap: 6px; flex-wrap: wrap; }
.roster-controls button { min-height: 44px; padding: 6px 10px; }
.roster-stat-table { max-width: 100%; overflow: auto; }
.roster-stat-table th, .roster-stat-table td { padding: 7px; }

.roster-player { display: inline-flex; align-items: center; gap: 4px; background: none; border: 0; color: var(--ink); font: inherit; text-align: left; }
button.roster-player { min-height: 44px; cursor: pointer; text-decoration: underline; }
.roster-stat-table small { display: block; }
.waiver-machine { margin-bottom: 12px; }
.waiver-drop-choices { display: flex; flex-wrap: wrap; gap: 4px 12px; border: 0; padding: 0; }
.waiver-move-choice { display: flex; align-items: center; gap: 4px; min-height: 24px; font-size: 12px; cursor: pointer; white-space: normal; }
.waiver-move-choice input { width: 18px; height: 18px; flex-shrink: 0; }
.waiver-comparison { margin-top: 12px; }
@media (max-width: 760px) {
  .roster-stat-table th, .roster-stat-table td { padding: 5px; font-size: 11px; }

  .roster-controls { flex-wrap: nowrap; }
  .roster-controls button { flex: 1; font-size: 12px; padding: 4px; }
  .waiver-table .waiver-move-choice { font-size: 11px; }
  .waiver-table .waiver-move-choice span { overflow-wrap: anywhere; }
}
.roster-stat-table, .team-strength-table, .league-standings, .waiver-comparison .table-shell { min-height: 0; }

.team-strength-table.strength-totals table { min-width: 640px; table-layout: auto; }

.board-season-controls { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }


.matchup-streaming { margin-top: 16px; }
.stream-stat-filter { display: flex; gap: 8px; margin: 10px 0; }
.stream-stat-filter label { display: grid; gap: 4px; min-width: 0; flex: 1; }
.stream-stat-filter input, .stream-stat-filter select:not(.lw-chip-select) { min-height: 44px; width: 100%; }
.stream-game-list { display: grid; gap: 8px; }
.stream-game-card { border: 1px solid var(--line); background: var(--panel); border-radius: var(--radius); padding: 10px; }
.stream-game-card p { margin: 6px 0; }

@media (max-width: 760px) {
  .board-season-controls { flex-wrap: nowrap; gap: 4px; }



  .stream-stat-filter input, .stream-stat-filter select:not(.lw-chip-select) { font-size: 16px; }
}
@media (max-width: 760px) { .matchup-streaming { order: 5; } }



/* Zero/unknown streaming volume is information, not a warning. */
.matchup-needs.matchup-adds { color: var(--ink); background: var(--line); }
.matchup-needs.matchup-adds-positive { color: var(--green); background: var(--green-soft); }

.roster-player-line { display: flex; align-items: center; gap: 6px; }
.roster-player-line .roster-player { flex: 1; min-width: 0; }
.roster-designation { width: 48px; min-width: 48px; min-height: 44px; padding: 4px; font: inherit; flex: 0 0 48px; }
.stream-designation-pointer button { min-height: 44px; padding: 2px 4px; font: inherit; }
@media (max-width: 760px) { .roster-designation { font-size: 16px; } }
.strength-controls { display: flex; gap: 12px; flex-wrap: wrap; }
.strength-controls .roster-controls { margin: 0; }
@media (max-width: 760px) { .strength-controls { flex-wrap: wrap; gap: 8px; } .strength-controls .roster-controls { flex: 0 0 auto; } }

/* Approved War Room foundations — DESIGN_SYSTEM.md, 2026-10-26. */
.app-shell { display: block; min-height: 100dvh; }
.sidebar { position: sticky; top: 0; z-index: 30; height: 48px; display: flex; flex-direction: row; align-items: center; gap: 18px; padding: 0 20px; overflow: visible; }
.sidebar .brand-lockup { flex: 0 0 auto; padding: 0; }
.sidebar .brand-lockup strong { font-size: 15px; }
.sidebar .brand-lockup span, .sidebar .league-card, .account-nav-email, .phone-bar, .phone-nav-close { display: none; }
.side-nav { flex: 1; flex-direction: row; align-items: center; gap: 2px; min-width: 0; }
.side-nav .nav-tab, .side-nav .nav-guide { flex: 0 0 auto; width: auto; min-height: 36px; margin: 0; padding: 0 10px; font-size: 13px; }
.side-nav .account-nav { margin-left: auto; justify-content: center; }
.nav-guide { display: none; }
.workspace-tabs { position: sticky; top: 48px; z-index: 24; display: flex; gap: 0; padding: 0 max(24px, calc((100vw - 1192px) / 2)); border-bottom: 1px solid var(--line); background: var(--panel); }
.workspace-tabs .nav-tab { width: auto; min-height: 44px; padding: 0 16px; gap: 0; border-radius: 0; color: var(--muted); opacity: 1; }
.workspace-tabs .nav-tab.active { background: transparent; color: var(--orange); box-shadow: inset 0 -2px var(--orange); }
.workspace-tabs .count { margin-left: 4px; background: var(--surface); color: var(--muted); font-size: 11px; }
main { display: block; width: 100%; max-width: 1240px; margin: 0 auto; padding: 14px 24px 32px; }
h1 { font-size: 20px; }
h2, h3 { font-size: 15px; }
.view-heading { gap: 12px; margin-bottom: 10px; }
.depth-workspace, .depth-workspace #boardView, .depth-workspace #depthSubView { height: auto; min-height: 0; display: block; }
:is(.table-shell, .ranking-main .ranking-table-wrap, .player-table-wrap, .analysis-table, .connection-picks, .recap-body, .waiver-table-shell, .matchup-table-shell, .roster-stat-table, .lineup-grid-shell) { min-height: 0; max-height: none; overflow-x: auto; overflow-y: visible; scrollbar-gutter: auto; }
:is(.depth-teams, .depth-workspace .depth-teams, .depth-workspace .depth-card, .league-grid .session-list, .collection-pane, .starred-list, .changes-list) { max-height: none; overflow: visible; }
th, td, #boardScroller th, #boardScroller td, #rookiesScroller th, #rookiesScroller td,
:is(.waiver-table, .matchup-compare, .lineup-grid, .roster-stat-table, .recap-table, .team-strength-table) :is(th, td) { height: 30px; padding: 0 8px; font-size: 12px; font-variant-numeric: tabular-nums; }
th { text-align: right; font-size: 11px; font-weight: 700; }
th:first-child, tbody th, th.text, td.text, .txt, .left { text-align: left; }
table :is(.icon-button, .star, .nudge) { min-width: 24px; width: 24px; }
table th button { padding-inline: 0; }
:is(.control-panel, .matchup-controls, .matchup-table-controls, .waiver-controls, .roster-controls, .board-season-controls, .po-controls, .stream-stat-filter, .ranking-toolbar) :is(button, select:not(.lw-chip-select), input:not([type="checkbox"])) { min-height: 28px; height: 28px; padding-block: 0; font-size: 12px; }
:is(.matchup-controls, .waiver-controls, .roster-controls, .board-season-controls, .stream-stat-filter, .ranking-toolbar) { flex-wrap: nowrap; max-width: 100%; overflow-x: auto; }
:is(button.player-link, button.roster-player, button.waiver-player-name, button.po-team-toggle) { border: 0; border-radius: 0; background: transparent; color: var(--ink); text-decoration: none; }
@media (hover: hover) and (pointer: fine) {
  :is(button.player-link, button.roster-player, button.waiver-player-name, button.po-team-toggle):hover { background: transparent; color: var(--orange); text-decoration: underline; }
  .workspace-tabs .nav-tab:hover { background: var(--surface); color: var(--ink); }
}
.connection-detail-tabs { position: sticky; top: 48px; z-index: 23; margin: 0 0 10px; background: var(--panel); }
.connection-detail-tabs button { min-height: 44px; font-size: 13px; }
.connection-toolbar { margin-bottom: 8px; }
.connection-more { display: block; }
.connection-sheet { margin: auto; }
#appActionsDialog > :is(button, a) { display: flex; align-items: center; min-height: 44px; width: 100%; margin-top: 4px; padding-inline: 10px; text-align: left; }
@media (min-width: 761px) and (max-width: 1080px) {
  .sidebar { gap: 6px; padding-inline: 8px; }
  .sidebar .brand-mark { display: none; }
  .side-nav .nav-tab { padding-inline: 7px; font-size: 12px; }
}
@media (max-width: 760px) {
  .phone-bar { display: flex; align-items: center; gap: 4px; position: sticky; top: 0; z-index: 30; height: calc(44px + env(safe-area-inset-top)); padding: env(safe-area-inset-top) 6px 0; background: var(--panel); border-bottom: 1px solid var(--line); }
  .phone-bar strong, #phoneLeagueContext { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 16px; }
  #phoneLeagueContext { padding: 0 8px; min-height: 44px; border: 0; border-radius: 0; background: transparent; color: var(--ink); text-align: left; }
  #phoneNavToggle, #phoneMore, .phone-nav-close { display: grid; place-items: center; width: 44px; min-width: 44px; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--ink); font-size: 24px; }
  .app-shell .sidebar { display: none; position: fixed; inset: 0 auto 0 0; width: min(300px, calc(100% - 44px)); height: 100dvh; z-index: 40; flex-direction: column; align-items: stretch; gap: 10px; padding: calc(8px + env(safe-area-inset-top)) 10px calc(14px + env(safe-area-inset-bottom)); overflow-x: hidden; overflow-y: auto; }
  .app-shell.phone-menu-open .sidebar { display: flex; }
  .sidebar .brand-lockup { min-height: 44px; }
  .sidebar .brand-lockup span { display: block; font-size: 11px; }
  .sidebar .brand-lockup .phone-nav-close { color: var(--on-arena); margin-left: auto; }
  .side-nav { flex-direction: column; align-items: stretch; }
  .side-nav .nav-tab, .side-nav .nav-guide { display: flex; align-items: center; width: 100%; min-height: 44px; padding-inline: 14px; font-size: 15px; }
  .side-nav #connectionsNav { order: -1; }
  .side-nav .nav-guide { margin-top: 6px; border-top: 1px solid var(--line-strong); border-radius: 0; font-size: 13px; }
  .side-nav .account-nav { margin: auto 0 0; flex-direction: column; align-items: start; justify-content: center; font-size: 13px; }
  .account-nav-email { display: block; max-width: 100%; width: auto; font-size: 12px; }
  .phone-nav-backdrop { position: fixed; inset: 0; z-index: 39; padding: 0; border: 0; border-radius: 0; background: color-mix(in srgb, var(--arena) 45%, transparent); }
  body.phone-nav-open { overflow: hidden; }
  .workspace-tabs { top: calc(44px + env(safe-area-inset-top)); padding-inline: 6px; }
  .connection-detail-tabs { top: calc(44px + env(safe-area-inset-top)); }
  th, td, #boardScroller th, #boardScroller td, #rookiesScroller th, #rookiesScroller td,
  :is(.waiver-table, .matchup-compare, .lineup-grid, .roster-stat-table, .recap-table, .team-strength-table) :is(th, td) { height: 34px; }
  .workspace-tabs .nav-tab { flex: 1; justify-content: center; font-size: 13px; }
  main { padding: 10px calc(10px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left)); }
  #connectionToolbar, #connectionToolbar > .connection-more { display: contents; }
  #connectionToolbar > :not(.connection-more):not(.connection-warning), #connectionToolbar .connection-menu-toggle { display: none; }
  .connection-detail-tabs { margin-inline: -10px; padding-inline: 4px; }
  .connection-detail-tabs button { padding-inline: 6px; font-size: 12px; }
  .connection-sheet { position: fixed; inset: auto 0 0; width: 100%; max-height: calc(100dvh - 64px); margin: 0; padding: 14px 14px calc(14px + env(safe-area-inset-bottom)); border-radius: 14px 14px 0 0; }
  input:not([type="checkbox"]):not([type="radio"]), textarea { font-size: 16px; }
  .control-panel input:not([type="checkbox"]) { font-size: 16px; }
  .view-heading .view-actions { display: flex; }
}

/* Shared player tables: the player remains in view as stats move sideways. */
.player-table-shell { max-width: 100%; overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--panel); }
.player-table { table-layout: auto; }
.player-table :is(th, td) { height: 30px; padding: 0 8px; font-size: 12px; }
.player-table :is(th, td).numeric { text-align: right; font-variant-numeric: tabular-nums; }
.player-table :is(th, td).text { text-align: left; }
.player-table .player-name-cell { position: sticky; left: 0; z-index: 2; width: 180px; min-width: 180px; max-width: none; white-space: nowrap; background: var(--panel); box-shadow: 1px 0 0 var(--line); }
.player-table thead .player-name-cell { z-index: 4; background: var(--surface); }
.player-table .player-link { display: inline-flex; align-items: center; flex-shrink: 0; max-width: none; overflow: visible; white-space: nowrap; font-size: 13px; }
.player-short-name { display: none; }
button.player-droppable, .player-droppable { color: var(--orange); }
.page-table-header { position: fixed; z-index: 22; overflow: hidden; background: var(--surface); box-shadow: 0 1px 0 var(--line-strong); }
.page-table-header table { table-layout: fixed; }
.page-table-header th { top: 0; }
@media (max-width: 760px) {
  .player-table .player-name-cell { width: 140px; min-width: 140px; max-width: none; }
  .player-full-name { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .player-short-name { display: inline; }
  .player-table :is(th, td) { height: 34px; padding-inline: 6px; }
}

.player-table .two-line :is(th, td) { height: 40px; }
.player-table .roster-player-line { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.player-table .roster-player-line small { margin: 0; }
.player-table .roster-designation { width: 36px; min-width: 36px; max-width: 36px; font-size: 12px; }
.player-table .roster-player { flex: 1; }
.player-table .player-name-cell { overflow: visible; }

#boardScroller .player-name-cell { width: 180px; min-width: 180px; max-width: 180px; }
#rookiesScroller .player-name-cell { position: sticky; left: 0; z-index: 2; width: 180px; min-width: 180px; max-width: 180px; text-align: left; background: var(--panel); }
#rookiesScroller thead .player-name-cell { z-index: 4; background: var(--surface); }
#rookiesScroller .two-line td { height: 40px; }
@media (max-width: 760px) {
  #boardScroller .player-name-cell, #rookiesScroller .player-name-cell { width: 118px; min-width: 118px; max-width: 118px; }
}

/* Waivers keeps the complete table at every width; only stats move sideways. */
.waiver-table.player-table { width: max-content; min-width: 100%; table-layout: auto; }
.waiver-table.player-table tr > :nth-child(n) { display: table-cell; }
.waiver-table.player-table th button { display: inline-block; }
.waiver-table.player-table .player-name-cell { width: 180px; min-width: 180px; max-width: none; white-space: nowrap; }
.waiver-table.player-table .player-name-cell button { width: auto; min-height: 0; height: 24px; font-size: 13px; }
.waiver-name-content { display: flex; align-items: center; gap: 4px; }
.waiver-name-content .waiver-move-choice { min-height: 24px; margin: 0; }
.waiver-name-content .waiver-move-choice span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.waiver-filters { display: flex; align-items: center; gap: 6px; height: 28px; overflow-x: auto; margin-bottom: 6px; }
.waiver-filters .connection-actions { flex: 0 0 auto; flex-wrap: nowrap; margin: 0; gap: 4px; }
.waiver-filters .connection-actions button { min-height: 28px; height: 28px; }
.waiver-filters .waiver-controls { display: flex; flex: 0 0 auto; overflow: visible; margin: 0; gap: 4px; }
.waiver-filters .waiver-controls .connection-picker { display: block; flex: 0 0 auto; max-width: 150px; margin: 0; font-size: 12px; }
.waiver-filters .waiver-day-filter { flex-wrap: nowrap; overflow-x: auto; }
.waiver-filters .waiver-day-filter button { flex: 0 0 auto; min-height: 28px; }
@media (max-width: 760px) {
  .waiver-table.player-table .player-name-cell { width: 140px; min-width: 140px; max-width: none; }
}

/* Matchup: one result word, and colour only on your side. */
.matchup-hero { padding: 0; border: 0; border-radius: 0; background: transparent; }
.matchup-period-row { display: flex; align-items: center; gap: 6px; }
.matchup-options { flex: 1; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.matchup-period { font-size: 12px; color: var(--muted); }
.matchup-controls { margin: 0; align-items: center; }
.matchup-controls .connection-picker { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 4px; font-size: 11px; }
.matchup-controls button, .matchup-controls select:not(.lw-chip-select), .matchup-basis button { min-height: 28px; height: 28px; font-size: 12px; }
.matchup-score-line { display: flex; align-items: center; justify-content: center; gap: 16px; flex-wrap: nowrap; padding: 4px 0; min-height: 40px; }
.matchup-score-line > .matchup-team-name { max-width: 30%; font-size: 15px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.matchup-expected { margin: 0; font-size: 24px; }
.matchup-expected .matchup-score-caption { display: block; font-size: 11px; text-align: center; }
.matchup-score-line .matchup-needs { width: 100%; margin: 0; text-align: center; font-size: 12px; }
.matchup-compare { border-spacing: 0; table-layout: fixed; }
.matchup-compare :is(th,td), .matchup-compare thead th { height: 30px; padding: 0 8px; }
.matchup-compare td strong { font-size: 13px; font-weight: 400; }
.matchup-compare .standing-ahead, .matchup-compare .standing-locked { color: var(--green); }
.matchup-compare .standing-behind, .matchup-compare .standing-lost { color: var(--red); }
.matchup-compare .standing-close { color: var(--muted); background: transparent; }
.matchup-compare tr.matchup-needs-help th { color: var(--ink); }
.matchup-compare tr.matchup-needs-help th::after { content: none; }
.matchup-standing-col { font-size: 12px; font-weight: 700; }
.matchup-panel-controls { display: flex; gap: 2px; }
.lineup-toolbar { margin-bottom: 6px; }

.lineup-grid.player-table .player-name-cell { width: 180px; min-width: 180px; max-width: none; }
.lineup-grid .lineup-benched, .lineup-grid .lineup-out { background: var(--red-soft); color: var(--red); border-left: 0; }
.lineup-grid .lineup-slot { display: inline; font-size: 12px; }
.lineup-grid .lineup-starts :is(th, td) { border-top: 1px solid var(--line-strong); }
.lineup-overflow { padding: 8px 10px; border: 1px solid var(--red); border-radius: var(--radius-sm); background: var(--red-soft); color: var(--red); font-size: 12px; }
@media (max-width: 760px) {
  .matchup-hero { display: block; }
  .matchup-period-row { display: flex; }
  .matchup-score-line { display: flex; gap: 10px; }
  .matchup-score-line > .matchup-team-name { font-size: 13px; }
  .matchup-table-controls { flex-wrap: nowrap; }
  .matchup-table-controls button { min-height: 28px; height: 28px; font-size: 12px; }
  .matchup-week-nav button { min-width: 28px; }
  .matchup-compare :is(th,td), .matchup-compare thead th { height: 34px; }
  .matchup-panel-controls { display: flex; gap: 4px; }
  .matchup-panel-controls button { min-height: 28px; height: 28px; font-size: 12px; }
  .matchup-panel-controls [aria-pressed="true"] { background: var(--orange-soft); color: var(--ink); }
  .matchup-main[data-matchup-panel="days"] .matchup-overview { display: none; }
  .matchup-main[data-matchup-panel="categories"] > .matchup-days-section { display: none; }
  .lineup-grid.player-table .player-name-cell { width: 140px; min-width: 140px; max-width: none; }
}

/* Waivers is a task: three columns on desktop, one step at a time on phone. */
.waiver-steps { display: flex; gap: 4px; margin: 8px 0; }


.waiver-workspace { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, .85fr) minmax(0, 1fr); gap: 12px; align-items: start; }
.waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) { min-width: 0; }
.waiver-workspace h3 { margin: 8px 0; }
.waiver-drop-choices { display: block; }
.waiver-drop-choices .waiver-move-choice { min-height: 24px; }
.waiver-drop-choices .waiver-move-choice span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }

.waiver-comparison .standing-locked, .waiver-comparison .standing-ahead { color: var(--green); }
.waiver-comparison .standing-lost, .waiver-comparison .standing-behind { color: var(--red); }
.waiver-comparison .standing-close { color: var(--muted); }
@media (max-width: 760px) {
  .waiver-workspace { display: block; }
  .waiver-workspace[data-step="0"] :is(.waiver-drop-panel,.waiver-result-panel), .waiver-workspace[data-step="1"] :is(.waiver-add-panel,.waiver-result-panel), .waiver-workspace[data-step="2"] :is(.waiver-add-panel,.waiver-drop-panel) { display: none; }

  .waiver-drop-panel .connection-actions button { min-height: 44px; }
}

.streaming-table .stream-game-card { border: 0; padding: 0; background: transparent; }
.stream-stat-chips { display: flex; gap: 4px; overflow-x: auto; padding-block: 4px; }
.stream-stat-chips button { flex: 0 0 auto; min-height: 24px; height: 24px; padding: 0 8px; font-size: 11px; border-radius: 999px; }
.stream-stat-chips [aria-pressed="true"] { background: var(--arena); color: var(--on-arena); border-color: var(--arena); }
.stream-day-dots { display: inline-flex; gap: 3px; color: var(--muted); }
.stream-dot-fill { color: var(--orange); }
.stream-dot-lost { color: var(--red); }
.connection-trade-picks { display: block; margin-bottom: 10px; }
.trade-player-table .connection-trade-option { min-height: 24px; padding: 0; border: 0; }

@media (max-width: 760px) {
  .waiver-add-panel { display: flex; flex-direction: column; }


}

/* Player: a phone sheet and a desktop side panel; designation has one home. */
.player-profile { position: fixed; inset: 0 0 0 auto; margin: 0; width: min(560px, 100%); max-width: 100%; height: 100dvh; max-height: 100dvh; padding: 0; overflow-y: auto; border: 0; border-left: 1px solid var(--line); background: var(--panel); color: var(--ink); }
.player-profile::backdrop { background: color-mix(in srgb, var(--arena) 30%, transparent); }
.profile-heading { position: sticky; top: 0; z-index: 8; display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 52px; padding: 4px 12px; border-bottom: 1px solid var(--line); background: var(--panel); }
.profile-heading h2 { font-size: 20px; }
.profile-heading button { width: 44px; min-height: 44px; font-size: 24px; }
.profile-body { padding: 10px 14px 20px; }
.profile-body h3 { margin: 12px 0 6px; }
.profile-body .connection-meta { font-size: 12px; }
.profile-designations { display: flex; gap: 4px; margin: 10px 0 4px; }


.profile-week, .profile-stats { max-height: none; min-height: 0; overflow-x: auto; }
.profile-week table { width: 100%; }
.profile-week :is(th,td) { text-align: left; height: 30px; }
.profile-week .lineup-benched { background: var(--red-soft); color: var(--red); }
.profile-stats :is(th,td):first-child { position: sticky; left: 0; min-width: 124px; max-width: 124px; background: var(--panel); text-align: left; }
.profile-stats thead th:first-child { background: var(--surface); }
.profile-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.profile-actions button { min-height: 44px; }
@media (max-width: 760px) {
  .player-profile { inset: auto 0 0; width: 100%; height: auto; max-height: calc(100dvh - 44px); border-radius: 14px 14px 0 0; padding-bottom: env(safe-area-inset-bottom); }
  .profile-week :is(th,td), .profile-stats :is(th,td) { height: 34px; }
}

.league-subtabs, .trade-steps { display: flex; gap: 4px; margin: 8px 0; }


.trade-pick-columns { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; margin-bottom: 10px; }
.trade-pick-columns section { min-width: 0; }
.trade-rank-result .rank-improves { color: var(--green); }
.trade-rank-result .rank-worsens { color: var(--red); }
.connection-data-notes { min-height: 28px; height: 28px; }
.connection-sheet .info-copy { white-space: pre-line; }
@media (max-width: 760px) {
  .trade-pick-columns { grid-template-columns: minmax(0,1fr); }
  .trade-pick-panel > .primary, .connection-trade-result > .primary { min-height: 44px; }
}

/* Research views share the same compact filters and table rules. */
.board-inline-filters, .control-panel.board-inline-filters, .control-panel.board-inline-filters.with-playoff { display: flex; flex-wrap: nowrap; align-items: end; gap: 6px; overflow-x: auto; padding: 4px 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.board-inline-filters > label { flex: 0 0 auto; min-width: 100px; }
.board-inline-filters > label > span { font-size: 11px; }
.board-inline-filters select:not(.lw-chip-select), .board-inline-filters button { min-height: 28px; height: 28px; font-size: 12px; }
.board-inline-filters fieldset { flex: 0 0 auto; }
.board-inline-filters .pills { flex-wrap: nowrap; }
.board-inline-filters .pills label { min-height: 24px; height: 24px; padding: 0 6px; }
.board-toolbar .search-field { flex: 1; max-width: 320px; }
.board-toolbar .search-field input { min-height: 28px; height: 28px; }
.ranking-main .ranking-table-wrap { overflow-x: auto; }
.ranking-table.player-table .player-name-cell { position: sticky; left: 0; z-index: 2; width: 180px; min-width: 180px; max-width: 180px; background: var(--panel); }
.ranking-table thead .player-name-cell { z-index: 4; background: var(--surface); }
.ranking-table .nudge { min-height: 24px !important; height: 24px; min-width: 24px !important; padding: 0 4px !important; }
.ranking-table .row-actions { display: flex; gap: 2px; }
.ranking-table .ranking-more { min-height: 24px; height: 24px; width: 24px; padding: 0; }
.ranking-moves-sheet .ranking-more-menu { display: grid; gap: 6px; margin-block: 12px; }
.ranking-moves-sheet .ranking-more-menu button { min-height: 44px !important; }
.depth-team-picker { display: none; }
.depth-workspace .depth-layout { grid-template-columns: 90px minmax(0,1fr); }
.depth-team-stats { max-width: 100%; overflow-x: auto; }
.team-stats { min-width: 450px; }
.team-stat { padding: 4px; border: 0; border-radius: 0; background: transparent; }
.team-stat dd { margin-top: 3px; font-size: 13px; }
.depth-slot { min-height: 40px; padding: 3px 6px; gap: 0; }
.depth-slot-bar { display: none; }
.po-table.player-table .player-name-cell { position: sticky; left: 0; z-index: 2; min-width: 118px; text-align: left; background: var(--panel); }
.po-table.player-table thead .player-name-cell { z-index: 4; background: var(--surface); }
.po-team-sheet .po-team-days { margin-block: 12px; }
button.primary, .dialog-actions > button { font-size: 14px; }
@media (max-width: 760px) {
  .board-inline-filters > label { min-width: 90px; }
  .ranking-table.player-table .player-name-cell { width: 140px; min-width: 140px; max-width: none; }
  .ranking-table .row-actions > .nudge:not([data-dir]) { display: none; }
  .ranking-table .ranking-more { display: block; }
  .depth-team-picker { display: flex; gap: 4px; margin-bottom: 8px; }
  .depth-team-picker select { flex: 1; min-width: 0; }
  .depth-team-picker :is(button,select:not(.lw-chip-select)) { min-height: 28px; height: 28px; font-size: 12px; }
  .depth-workspace .depth-layout { display: block; }
  .depth-workspace .depth-teams { display: none; }
  .depth-grid { grid-template-columns: 1fr; }
  .depth-position-head { min-height: 28px; margin-bottom: 0; }
  .depth-slot-name { flex-direction: row; align-items: center; }
  .depth-slot-name .player-link { font-size: 13px; }
  .depth-slot-meta { margin-top: 1px; }
  .po-table :is(th,td) { height: 34px; }
}

.player-table .roster-player-line { gap: 0 4px; }
.player-table .roster-player-line small { flex-basis: 100%; line-height: 12px; }

.ranking-table .grip-col { width: 24px; min-width: 24px; max-width: 24px; padding-inline: 0; text-align: center; }

/* S review: names have their own width; dates never widen daily slots. */
.standings-table { table-layout: auto; width: max-content; min-width: 100%; }
.standings-table .player-name-cell, .standings-table .player-link { white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.lineup-grid :is(th,td):not(.player-name-cell) { width: 50px; min-width: 50px; max-width: 50px; padding-inline: 3px; text-align: center; }
.lineup-grid thead th:not(.player-name-cell) { white-space: normal; }
.lineup-grid .connection-status { display: none; }
.waiver-drop-table .player-name-cell { white-space: nowrap; }
.waiver-mode [aria-pressed="true"] { background: var(--orange-soft); border-color: var(--orange); color: var(--ink); box-shadow: inset 0 -2px 0 var(--orange); }
.waiver-basis { flex: 0 0 28px; min-height: 28px; height: 28px; padding: 0; }
.waiver-plays { white-space: nowrap; }
.waiver-days-sheet .waiver-day-filter { display: flex; flex-wrap: wrap; gap: 6px; }
.waiver-days-sheet .waiver-day-filter button { min-height: 44px; }
.matchup-choices .matchup-controls { display: flex; flex-wrap: wrap; overflow: visible; }
.matchup-choices .connection-picker { flex: 1 0 100%; }
.matchup-choices :is(button,select:not(.lw-chip-select)) { min-height: 44px; height: 44px; }
.matchup-choices .connection-picker select:not(.lw-chip-select) { width: 100%; }
.matchup-table-controls { justify-content: flex-start; flex-wrap: nowrap; gap: 6px; min-height: 28px; padding: 0; margin-bottom: 2px; }
.matchup-table-controls :is(.matchup-week-nav,.matchup-panel-controls,.matchup-stat-source) { flex: 0 0 auto; gap: 2px; }
.matchup-table-controls button { height: 28px; min-height: 28px; padding: 0 6px; font-size: 12px; white-space: nowrap; }

.matchup-table-controls .matchup-basis { flex: 0 0 24px; margin-left: auto; }
.matchup-table-controls .matchup-basis button { width: 24px; padding: 0; }
.matchup-streaming-row { display: flex; align-items: center; justify-content: space-between; gap: 4px; margin: 0 0 2px; }
.matchup-streaming-row .matchup-adds { padding: 0; margin: 0; background: transparent; font-size: 11px; }
.matchup-streaming-link { min-height: 28px; height: 28px; padding: 0; font-size: 12px; border: 0; background: transparent; }
.stream-game-list { display: block; }
.stream-name-content { display: inline-flex; align-items: center; gap: 4px; }
.stream-plan-number { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 16px; width: 16px; height: 16px; border-radius: 50%; background: var(--orange); color: var(--on-accent); font-size: 11px; }
.streaming-table .stream-plan-row :is(th,td) { background: var(--orange-soft); }
.streaming-table [data-column="drop"] { white-space: nowrap; }
.stream-day-dots { gap: 2px; }
.stream-dot-day { display: inline-flex; align-items: center; justify-content: center; min-width: 12px; font-size: 11px; }
.connection-switcher { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; max-width: 360px; background: var(--panel); color: var(--ink); border-color: var(--line-strong); }
@media (max-width: 760px) {
  .matchup-table-controls { gap: 4px; }
  .matchup-table-controls button { padding-inline: 4px; }
  .matchup-days-section { padding: 0; border: 0; }
  .matchup-days-section > h3 { display: none; }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) > h3 { display: none; }
  .waiver-steps { margin: 4px 0; }
}

.waiver-filters :is(button,select:not(.lw-chip-select)) { height: 28px; min-height: 28px; padding-block: 0; font-size: 12px; }
.matchup-table-controls { max-width: 100%; overflow-x: auto; }

@media (max-width: 760px) {
  .connection-detail-tabs { margin-bottom: 4px; }
  .matchup-score-line { min-height: 34px; }
  .matchup-compare thead th { height: 28px; }
}

/* Follow-up visual review: compact row controls; the entire row accepts taps. */
.player-table :is(button,input,select:not(.lw-chip-select)) { min-height: 0; height: 24px; padding-block: 0; }
.player-table :is(button.player-link,button.roster-player,button.waiver-player-name) { width: auto; min-height: 0; height: 24px; line-height: 20px; }
.player-table .connection-trade-option { min-height: 24px; padding-block: 0; }


.waiver-comparison :is(th,td).text { text-align: left; }
.comparison-changed :is(th,td) { background: var(--orange-soft); }
.previous-result { display: block; font-size: 10px; color: var(--muted); white-space: nowrap; }
.comparison-week-nav { display: inline-flex; align-items: center; gap: 4px; height: 28px; font-size: 12px; }
.comparison-week-nav button { min-height: 28px; height: 28px; min-width: 28px; padding: 0 6px; }
.stream-other-drop { color: var(--muted); font-size: 11px; margin-left: 4px; }
.profile-heading h2:focus { outline: none; }
.profile-heading button:focus:not(:focus-visible) { outline: none; }
.board-controls-row { display: flex; align-items: center; gap: 4px; max-width: 100%; }
.board-controls-row #boardControls { flex: 1; min-width: 0; margin: 0; }
.board-search-button { display: none; }
@media (min-width: 1101px) {
  .matchup-main { display: grid; grid-template-columns: minmax(0,520px) minmax(0,1fr); grid-template-rows: auto 28px auto; gap: 2px 16px; align-items: start; }
  .matchup-main > :not(.matchup-days-section) { grid-column: 1; }
  .matchup-main > .matchup-days-section { grid-column: 2; grid-row: 1 / span 3; min-width: 0; }
  .matchup-main .matchup-panel-controls { display: none; }
}
@media (min-width: 761px) {
  .matchup-main > :is(.matchup-overview,.matchup-table-controls) { max-width: 560px; }
}
@media (max-width: 760px) {
  .board-toolbar { display: none; }
  .board-search-button { display: inline-flex; flex: 0 0 28px; justify-content: center; align-items: center; width: 28px; min-height: 28px; height: 28px; padding: 0; }
  #boardControls { padding: 0; height: 28px; align-items: center; }
  #boardControls > label { margin: 0; gap: 0; min-width: 0; }
  #boardControls > label > span, #boardControls legend { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  #boardControls select:not(.lw-chip-select) { min-height: 28px; height: 28px; font-size: 12px; padding-block: 0; }
  #boardControls fieldset { margin: 0; padding: 0; border: 0; }
  #boardScroller .player-name-cell { min-width: 140px; width: 140px; max-width: none; }
  /* Phone starts with name + stats. ADP stays available on desktop. */
  #boardScroller :is(.fz-star,.fz-rank,.fz-adp1,.fz-adp2,[data-board-column="positions"],[data-board-column="team"],[data-board-column="gamesProjected"],[data-board-column="mpg"],[data-board-column="myRank"]) { display: none; }
  #boardSearchDialog input { width: 100%; min-height: 44px; font-size: 16px; }
}

.board-name-content { display: inline-flex; align-items: center; gap: 4px; }
.board-phone-rank { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
@media (max-width: 760px) {
  #boardControls #boardAdpControl { display: none; }
  #boardScroller .board-name-content .star { flex: 0 0 24px; width: 24px; min-height: 24px; height: 24px; padding: 0; }
}

/* Final no-collapsible pass: short help stays visible; forms/previews use sheets. */
.import-save-help h3, .connection-private-help h3, .account-options h3 { margin: 8px 0 4px; font-size: 13px; }
.score-help h3 { font-size: 15px; margin: 12px 0 6px; }
.score-help-open { min-height: 28px; height: 28px; font-size: 12px; padding-block: 0; }
.connection-paste-option { min-height: 44px; margin-top: 8px; }
.import-missing h3 { font-size: 13px; }
.import-contents-sheet pre { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; }

/* Rule 12: shared components measured from mockups-2026-10-26. */
.lw-segment { display: inline-flex; flex: 0 0 auto; align-items: center; width: max-content; max-width: 100%; gap: 2px; padding: 2px; border: 0; border-radius: 7px; background: var(--line); }
.lw-segment > button { flex: 0 0 auto; width: auto; min-width: 0; height: 24px; min-height: 24px; padding: 0 9px; border: 0; border-radius: 5px; background: transparent; color: var(--muted); box-shadow: none; font-size: 12px; font-weight: 700; line-height: 24px; white-space: nowrap; }
.lw-segment > button[aria-pressed="true"] { background: var(--panel); color: var(--ink); border: 0; box-shadow: 0 1px 2px rgb(27 30 35 / 15%); }
.lw-chip:not(select), button.lw-chip { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: auto; max-width: 180px; min-height: 24px; height: 24px; padding: 0 8px; border: 0; border-radius: 999px; background-color: var(--line); color: var(--ink); font-size: 11px; font-weight: 700; line-height: 24px; white-space: nowrap; }
select.lw-chip-select {
  display: inline-flex; flex: 0 0 auto; max-width: 180px; white-space: nowrap;
  width: auto; height: 24px; min-height: 24px; padding: 0 22px 0 8px; border: 0; border-radius: 999px;
  background-color: var(--line); background-position: right 8px center; background-size: 8px 4px;
  color: var(--ink); font-size: 11px; font-weight: 700; line-height: 24px;
}
.lw-chip.lw-chip-primary { background-color: var(--orange); color: var(--on-accent); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3E%3Cpath d='M0 0h8L4 4z' fill='%23FFFFFF'/%3E%3C/svg%3E"); }
select.lw-chip-primary option { background-color: var(--panel); color: var(--ink); }
button.lw-chip[aria-pressed="true"] { background: var(--orange); color: var(--on-accent); }
button.lw-chip.lw-chip-toggle[aria-pressed="true"] { background: var(--ink); color: var(--panel); }
.lw-result { display: inline-flex; align-items: center; justify-content: center; width: 56px; min-width: 56px; height: 20px; border-radius: 5px; font-size: 11px; font-weight: 700; line-height: 20px; white-space: nowrap; }
.lw-result.result-locked { background: var(--green); color: var(--panel); }
.lw-result.result-ahead { background: var(--green-soft); color: var(--green); }
.lw-result.result-close, .lw-result.result-unknown { background: var(--line); color: var(--ink); }
.lw-result.result-behind { background: var(--red-soft); color: var(--red); }
.lw-result.result-lost { background: var(--red); color: var(--panel); }
.lw-week-stepper { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 0; width: max-content; height: 28px; padding: 0; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); }
.lw-week-stepper > button { display: inline-flex; align-items: center; justify-content: center; width: 26px; min-width: 26px; height: 26px; min-height: 26px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--ink); font-size: 15px; line-height: 26px; }
.lw-week-stepper > .lw-week-label { width: auto; min-width: 34px; padding: 0 2px; font-size: 12px; font-weight: 700; text-align: center; white-space: nowrap; }
.lw-steps { display: flex; align-items: center; gap: 0; margin: 8px 0; padding: 0; list-style: none; }
.lw-step { display: inline-flex; align-items: center; gap: 5px; min-width: 0; color: var(--faint); font-size: 12px; font-weight: 700; white-space: nowrap; }
.lw-step + .lw-step::before { content: "›"; padding: 0 8px; color: var(--faint); }
.lw-step-number { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; border: 1px solid var(--line-strong); font-size: 11px; }
.lw-step.is-current { color: var(--ink); }
.lw-step.is-current .lw-step-number { border-color: var(--orange); background: var(--orange); color: var(--panel); }
.lw-step.is-done { color: var(--green); }
.lw-step.is-done .lw-step-number { border-color: var(--green); background: var(--green); color: var(--panel); }
.lw-round-select, .player-table button.lw-round-select { display: inline-flex; flex: 0 0 22px; align-items: center; justify-content: center; width: 22px; min-width: 22px; height: 22px; min-height: 22px; padding: 0; border: 1px solid var(--line-strong); border-radius: 50%; background: var(--panel); color: var(--faint); font-size: 15px; line-height: 20px; }
.lw-round-select[aria-pressed="true"], .player-table .lw-round-select[aria-pressed="true"] { border-color: var(--orange); background: var(--orange); color: var(--panel); }
.lw-name-line { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.lw-slot { display: inline-block; flex: 0 0 20px; min-width: 20px; color: var(--faint); font-size: 10px; font-weight: 700; text-align: left; }
.lw-caption { margin: 6px 0; font-size: 11px; color: var(--muted); line-height: 16px; }
.lw-control-row { display: flex; align-items: center; gap: 6px; min-height: 36px; padding: 4px 0; max-width: 100%; overflow-x: auto; }
.lw-action-bar { display: flex; align-items: center; gap: 10px; min-height: 64px; padding: 8px 10px; border-top: 1px solid var(--line-strong); background: var(--panel); }
.lw-action-summary { flex: 1; min-width: 0; line-height: 17px; }
.lw-action-summary strong { display: block; font-size: 13px; font-weight: 700; }
.lw-action-summary > span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: var(--muted); }
.lw-action-bar > button.lw-main-action, .lw-action-bar > button.lw-back { width: auto; min-height: 44px; height: 44px; padding: 0 16px; border-radius: 10px; font-size: 14px; font-weight: 700; }
.lw-action-bar > button.lw-main-action { background: var(--orange); color: var(--on-accent); border-color: var(--orange); }
.lw-action-bar > button.lw-back { background: var(--panel); color: var(--ink); border-color: var(--line-strong); }
.lw-action-bar > button:disabled { opacity: 1; background: var(--line); border-color: var(--line); color: var(--muted); }
.lw-compare-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 8px 0; }
.lw-compare-card { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); padding: 8px 10px; }
.lw-compare-card > span { display: block; font-size: 11px; color: var(--muted); }
.lw-compare-card strong { font-size: 20px; font-weight: 700; line-height: 24px; }
.lw-compare-card small { margin-left: 5px; font-size: 12px; color: var(--muted); }
.player-table .player-name-cell { box-shadow: 1px 0 0 var(--line); }
:is(.player-table,.matchup-compare,.po-table,.recap-table,.trade-rank-result) thead th, #boardScroller thead th, #rookiesScroller thead th { height: 26px; padding: 0 6px; border-bottom: 1px solid var(--line-strong); background: var(--panel); color: var(--muted); font-size: 11px; font-weight: 700; line-height: 15px; white-space: nowrap; }
.player-table .player-name-cell { border-right: 0; }
.connection-detail-tabs { height: 40px; gap: 0; padding: 0; border-bottom: 1px solid var(--line); }
.connection-detail-tabs button, .workspace-tabs .nav-tab { min-height: 40px; height: 40px; padding: 0 10px; border: 0; border-radius: 0; background: transparent; color: var(--muted); font-size: 13px; font-weight: 700; box-shadow: none; }
.connection-detail-tabs button[aria-selected="true"], .workspace-tabs .nav-tab.active { color: var(--ink); background: transparent; box-shadow: inset 0 -2px var(--orange); }
@media (max-width: 760px) {
  .phone-bar { height: calc(44px + env(safe-area-inset-top)); border-bottom: 1px solid var(--line); }
  #phoneViewName, #phoneLeagueContext { font-size: 16px; font-weight: 700; }
  .connection-detail-tabs button { padding: 0 5px; font-size: 13px; }
  .lw-action-bar { position: sticky; bottom: 0; z-index: 24; min-height: calc(64px + env(safe-area-inset-bottom)); padding-bottom: calc(8px + env(safe-area-inset-bottom)); margin-inline: -10px; }
  .lw-step + .lw-step::before { padding-inline: 6px; }
}

/* Fidelity screen composition: the same components on phone and desktop. */
.matchup-table-controls .lw-segment > button, .roster-controls.lw-segment > button, .board-season-controls .lw-segment > button, .lineup-toolbar.lw-segment > button { min-height: 24px; height: 24px; padding: 0 9px; font-size: 12px; }
.matchup-table-controls .lw-week-stepper > button { width: 26px; min-width: 26px; height: 26px; min-height: 26px; padding: 0; }
.matchup-table-controls .lw-week-stepper > .lw-week-label { width: auto; min-width: 34px; padding-inline: 2px; }
.matchup-table-controls .lw-segment { gap: 2px; }
.matchup-period-caption { text-align: center; margin: 0 0 4px; }
.matchup-hero { padding: 0; margin: 0; background: transparent; border: 0; }
.matchup-expected { margin: 0; }
.matchup-compare .matchup-team-name { display: block; max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.matchup-compare .matchup-standing-col { width: 68px; padding-inline: 6px; }
.matchup-streaming-row { justify-content: flex-start; gap: 4px; min-height: 30px; white-space: nowrap; }
.matchup-streaming-link { display: inline; width: auto; min-height: 24px; height: 24px; background: transparent; border: 0; border-radius: 0; padding: 0; color: var(--orange); font-size: 11px; }
.matchup-legend { display: flex; align-items: center; gap: 4px; font-size: 11px; margin: 2px 0 6px; }
.matchup-legend > button, .lineup-help { width: 24px; min-width: 24px; height: 24px; min-height: 24px; padding: 0; margin-left: auto; }
.lw-segment.lineup-toolbar { flex-wrap: nowrap; gap: 2px; margin: 0; }
.roster-source-row { padding-block: 4px; }
.roster-source-row .lw-caption { margin-left: auto; white-space: nowrap; }
.roster-stat-table .player-name-cell { min-width: 160px; }
.roster-stat-table :is(th,td), .waiver-table :is(th,td), .trade-player-table :is(th,td) { color: var(--ink); }
:is(.connection-standings,.team-strength-table) tbody .player-name-cell { font-size: 13px; font-weight: 700; color: var(--ink); box-shadow: 1px 0 0 var(--line); }
.strength-controls { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-block: 4px; overflow-x: auto; }
.waiver-filters { gap: 4px; margin: 0; padding: 4px 0; min-height: 36px; }
.waiver-filters button.lw-chip { min-height: 24px; height: 24px; padding-block: 0; font-size: 11px; }
.waiver-search-sheet form { display: flex; gap: 8px; }
.waiver-search-sheet input { min-width: 0; flex: 1; min-height: 44px; font-size: 16px; }
.waiver-options-sheet .connection-picker { margin-block: 10px; }
.waiver-options-sheet select:not(.lw-chip-select) { min-height: 28px; }
.waiver-name-content { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.waiver-panel-title { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.lw-step.is-later .lw-step-number { background: var(--line); color: var(--muted); border-color: var(--line); }
.waiver-add-bar { display: none; }
.waiver-drop-bar, .waiver-compare-bar { margin-top: 8px; }
.waiver-reset { margin: 0 0 6px; }
.compare-after-value small { display: block; color: var(--muted); font-size: 11px; }
.waiver-comparison :is(th,td):first-child, .trade-rank-result :is(th,td):first-child { text-align: left; }
.trade-controls { justify-content: space-between; }
.trade-side-tabs { display: none; }
.trade-side-heading { margin: 6px 0; font-size: 13px; }
.trade-verdict-cards strong { font-size: 16px; }
.trade-rank-result .rank-improves { color: var(--green); }
.trade-rank-result .rank-worsens { color: var(--red); }
.board-season-controls { justify-content: space-between; flex-wrap: nowrap; min-height: 40px; padding: 4px 0; margin: 0; }
.board-season-controls > .lw-chip { margin-left: auto; flex: 0 0 auto; min-height: 24px; height: 24px; font-size: 11px; }
.board-controls-row { min-height: 36px; }
#boardControls { display: flex; flex-wrap: nowrap; align-items: center; gap: 4px; padding: 4px 0; overflow-x: auto; height: 36px; }
#boardControls > label { min-width: 0; margin: 0; }
#boardControls > label > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
#boardControls button.lw-chip { min-height: 24px; height: 24px; font-size: 11px; padding-block: 0; }
#boardPuntOpen { max-width: 120px; overflow: hidden; text-overflow: ellipsis; display: block; }
#boardStarred { white-space: nowrap; }
.board-options-fields { display: grid; gap: 12px; }
.board-options-fields label { display: grid; gap: 4px; }
.board-punt-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.board-punt-chips > label { display: inline-flex; position: relative; align-items: center; cursor: pointer; }
.board-punt-chips > label:has(input:checked) { background: var(--orange); color: var(--on-accent); }
.board-punt-chips input { position: absolute; width: 1px; height: 1px; min-height: 0; overflow: hidden; clip-path: inset(50%); }
.board-punt-chips > label:focus-within { outline: 2px solid var(--focus); outline-offset: 2px; }
.board-punt-summary { margin: 10px 0 12px; font-size: 11px; color: var(--muted); }
.board-punt-sheet > .primary { width: 100%; min-height: 44px; }
@media (min-width: 761px) {
  .trade-player-table :is(th,td)[data-column]:not([data-column="positions"]):not([data-column="overallRank"]):not([data-column="positionRank"]):not([data-column="vsProjection"]) { display: none; }
  .waiver-steps { display: none; }
  .waiver-drop-table :is(th,td)[data-column]:not([data-column="PTS"]):not([data-column="REB"]):not([data-column="AST"]):not([data-column="overallRank"]):not([data-column="positionRank"]):not([data-column="games"]) { display: none; }
  .waiver-workspace .lw-action-bar { flex-wrap: wrap; padding-inline: 0; }
  .waiver-workspace .lw-action-summary { flex-basis: 100%; }
  .waiver-workspace .lw-back { display: none; }
  .waiver-workspace .lw-compare-cards { grid-template-columns: 1fr 1fr; }
  .waiver-workspace .lw-compare-card { padding: 6px; }
  .waiver-workspace .lw-compare-card strong { font-size: 16px; }
  .waiver-workspace .waiver-comparison { overflow-x: auto; }
}
@media (max-width: 760px) {
  .roster-stat-table :is(th,td)[data-column="positions"] { display: none; }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) { display: flex; flex-direction: column; }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) > .lw-action-bar { order: 99; }
  .waiver-add-bar { display: flex; }
  .waiver-add-bar .waiver-next { display: block; position: static; margin: 0; box-shadow: none; order: 0; }
  .trade-side-tabs { display: inline-flex; }
  .trade-side-heading { display: none; }
  .trade-pick-columns[data-side="give"] > [data-trade-side="get"], .trade-pick-columns[data-side="get"] > [data-trade-side="give"] { display: none; }
  .trade-player-table :is(th,td)[data-column="positions"] { display: none; }
  .trade-pick-panel { display: flex; flex-direction: column; }
  .trade-pick-bar { margin-top: auto; }
  .board-season-controls { gap: 4px; }
  .board-season-controls .lw-segment > button { padding-inline: 7px; }
  #boardControls { height: 36px; }
}

.waiver-mode-row { justify-content: space-between; }
.waiver-mode-row .waiver-mode { margin: 0; }
.stream-volume { display: flex; align-items: center; gap: 6px; margin: 0; padding-block: 4px; font-size: 13px; }
.stream-timing-help { margin-left: auto; min-height: 24px; height: 24px; width: 24px; padding: 0; }
.stream-stat-filter { padding-block: 0; min-height: 30px; gap: 4px; }
.stream-filter-label { flex: 0 0 34px; font-size: 11px; color: var(--muted); }
.stream-stat-chips { align-items: center; padding: 0; min-height: 30px; }
.stream-stat-filter .lw-chip.stream-day-chip { width: 24px; min-width: 24px; padding: 0; }
.streaming-table .stream-plan-row .player-name-cell { background: var(--orange-soft); }
#boardScroller .stat-positive { background: var(--green-soft); color: var(--green); }
#boardScroller .stat-negative { background: var(--red-soft); color: var(--red); }
@media (max-width: 760px) {
  main { padding: 0 0 24px; }
  .connection-detail-tabs { margin: 0; padding: 0; }
  .matchup-workspace { display: block; }
  .matchup-main { display: block; }
  .matchup-main > .matchup-table-controls { order: 0; margin: 0; padding: 4px 8px; width: 100%; min-height: 36px; }
  .matchup-hero { padding: 4px 10px 0; }
  .matchup-period-caption { margin-bottom: 0; }
  .matchup-score-line { min-height: 34px; }
  .matchup-overview > .matchup-table-shell { border-radius: 0; border-inline: 0; }
  .matchup-streaming-row { padding-inline: 10px; }
  .matchup-legend { padding-inline: 10px; }
  .matchup-days-section > .lw-control-row { padding-inline: 8px; }
  .roster-source-row, .strength-controls, .waiver-mode-row, .waiver-filters, .trade-controls, .board-season-controls { padding-inline: 8px; }
  .category-ranks-status { margin-inline: 8px; }
  .league-subtabs { margin: 8px; }
  .lw-steps { padding-inline: 10px; }
  .lw-caption { padding-inline: 10px; }
  .matchup-period-caption { padding-inline: 0; }
  .roster-stat-table, .team-strength-table, .league-standings, .waiver-table-shell, .waiver-drop-choices, .connection-trade-picks, #boardScroller { border-radius: 0; border-inline: 0; }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) { min-height: calc(100dvh - 152px); }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) > .lw-action-bar { margin-top: auto; }
  .lw-action-bar { margin-inline: 0; }
  .trade-pick-panel, .connection-trade-result { display: flex; flex-direction: column; min-height: calc(100dvh - 116px); }
  .trade-pick-bar, .trade-result-bar { margin-top: auto; }
  .waiver-result-panel .lw-week-stepper { margin: 4px 10px; }
  .waiver-result-panel .waiver-comparison { width: 100%; padding-inline: 10px; }
  .stream-stat-filter, .stream-stat-chips, .stream-volume { padding-inline: 8px; }
  .stream-legend { margin-inline: 0; }
  .board-controls-row { padding-inline: 8px; }
  #boardControls > #boardStarred { min-width: 72px; }
  .board-help-button { display: none; }
  #boardControls #boardOptionsOpen { display: inline-flex; }
}

#phoneViewName { flex: 1; min-width: 0; width: auto; padding: 0 8px; height: 44px; border: 0; background: transparent; color: var(--ink); text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.matchup-streaming { margin-top: 0; }
.stream-stat-filter { margin-block: 0; }
.stream-stat-filter button.lw-chip { min-height: 24px; height: 24px; font-size: 11px; }
.waiver-table-shell, .lineup-grid-shell { margin-top: 0; }
.connection-trade-result { margin-top: 0; }
.po-tabs { display: inline-flex; width: max-content; max-width: 100%; gap: 2px; border: 0; border-radius: 7px; padding: 2px; background: var(--line); }
.po-tabs > .po-tab { height: 24px; min-height: 24px; padding: 0 9px; font-size: 12px; border: 0; border-radius: 5px; color: var(--muted); background: transparent; }
.po-tabs > .po-tab.active { background: var(--panel); color: var(--ink); box-shadow: 0 1px 2px rgb(27 30 35 / 15%); }
@media (min-width: 761px) {
  .research-board #boardView > .view-heading { display: none; }
  #fullBoardSubView { display: grid; grid-template-columns: max-content minmax(150px,180px) minmax(0,1fr); gap: 0 8px; align-items: center; }
  #boardSeasonControls { grid-row: 1; grid-column: 1; }
  #boardPositionNote { grid-row: 2; grid-column: 1 / -1; margin: 0; font-size: 11px; }
  .board-toolbar { grid-row: 1; grid-column: 2; }
  .board-toolbar .search-field { max-width: none; width: 100%; }
  .board-toolbar input { width: 100%; min-width: 0; }
  .board-controls-row { grid-row: 1; grid-column: 3; }
  #boardScroller, #boardSummary { grid-column: 1 / -1; }
  #boardScroller { margin-top: 8px; }
}
@media (max-width: 760px) {
  .connection-trade-result { margin: 0; }
  .player-table-shell { border-radius: 0; border-inline: 0; }
  #boardPositionNote { margin: 0; padding: 2px 8px; font-size: 11px; }
}

.matchup-score-line { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); gap: 8px; }
.matchup-score-line > .matchup-team-name { max-width: none; }
.matchup-score-line > .matchup-team-name:last-child { text-align: right; }
.matchup-compare tbody th { font-size: 12px; font-weight: 400; }
.compare-after-value small { display: inline; margin-left: 3px; }
.waiver-comparison .lw-compare-card strong { font-size: 16px; }
.lineup-grid .lineup-slot { display: inline-flex; justify-content: center; align-items: center; min-width: 24px; height: 16px; border-radius: 3px; padding: 0 3px; background: var(--green-soft); color: var(--green); font-size: 11px; font-weight: 700; }
.lineup-grid .lineup-benched .lineup-slot { background: var(--red); color: var(--panel); }
.lineup-grid .lineup-out .lineup-slot { background: var(--red-soft); color: var(--red); }
.lineup-grid .lineup-no_game .lineup-slot { background: transparent; color: var(--faint); }
.lineup-grid .lineup-inactive .lineup-slot { background: transparent; color: var(--muted); }
.lineup-grid .lineup-injury-label { position: sticky; left: 8px; display: inline-block; background: var(--panel); }
.lineup-grid .lineup-injury-start > th { text-align: left; color: var(--muted); font-size: 11px; font-weight: 700; }
.matchup-refresh-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 52px; padding-inline: 8px; }
.matchup-updated { color: var(--muted); font-size: 11px; }
.matchup-refresh-row .matchup-refresh { min-height: 44px; font-size: 14px; font-weight: 700; white-space: nowrap; }
@media (min-width: 761px) { .matchup-refresh-row { padding-inline: 0; } }
.lineup-grid :is(.lineup-benched,.lineup-out) { background: var(--panel); }
@media (max-width: 760px) {
  .waiver-mode-row { min-height: 40px; padding-block: 6px; justify-content: flex-start; }
  .waiver-mode-row > .lw-steps { margin: 0 0 0 auto; padding: 0; }
  .waiver-mode-row[data-step="1"] > .waiver-mode, .waiver-mode-row[data-step="2"] > .waiver-mode { display: none; }
  .waiver-mode-row[data-step="1"] > .lw-steps, .waiver-mode-row[data-step="2"] > .lw-steps { margin-left: 0; }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) { min-height: calc(100dvh - 124px); }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) > .lw-action-bar { margin-bottom: -24px; }
}

.player-profile { width: min(480px,100%); }
.profile-week-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.profile-week-heading h3 { margin: 12px 0 6px; }
.profile-week-heading .lw-caption { margin: 0; padding: 0; }
.profile-week { border: 1px solid var(--line); border-radius: 8px; }
.profile-week table { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0; }
.profile-week :is(th,td) { text-align: center; min-width: 0; padding: 3px 2px; border-right: 1px solid var(--line); }
.profile-week thead th { height: 26px; font-size: 11px; color: var(--muted); border-bottom: 1px solid var(--line); white-space: nowrap; }
.profile-week tbody td { height: 42px; border-bottom: 0; }
.profile-week :is(th,td):last-child { border-right: 0; }
.profile-week .profile-game-day { background: var(--green-soft); }
.profile-opponent { display: block; font-size: 11px; font-weight: 700; }
.profile-week .lineup-slot { display: inline-block; font-size: 11px; line-height: 16px; font-weight: 700; color: var(--green); padding: 0 3px; border-radius: 3px; background: var(--panel); }
.profile-week .lineup-slot.lineup-benched { background: var(--red-soft); color: var(--red); }
.profile-week .profile-no-game { color: var(--faint); }
.profile-stats thead th { height: 26px; font-size: 11px; color: var(--muted); white-space: nowrap; }
@media (max-width: 760px) {
  .player-profile { top: 56px; height: calc(100dvh - 56px); max-height: calc(100dvh - 56px); }
  .profile-heading { padding-top: 12px; min-height: 60px; }
  .profile-heading::before { content: ""; position: absolute; top: 7px; left: calc(50% - 18px); width: 36px; height: 4px; border-radius: 2px; background: var(--line-strong); }
  .profile-body { display: flex; flex-direction: column; min-height: calc(100dvh - 116px); }
  .profile-actions { margin-top: auto; padding-top: 12px; }
  .profile-week :is(th,td) { height: auto; }
  .profile-week thead th { height: 26px; }
  .profile-week tbody td { height: 42px; }
}

.desktop-league-switcher, .desktop-league-sync, .desktop-league-more { display: none; }
@media (min-width: 761px) {
  .connected-workspace main { max-width: none; padding: 0 0 24px; }
  #connectionsView:has(.connection-detail-tabs) #connectionToolbar, #connectionsView:has(.connection-detail-tabs) #connectionToolbar > .connection-more { display: contents; }
  #connectionsView:has(.connection-detail-tabs) #connectionToolbar > :not(.connection-more), #connectionsView:has(.connection-detail-tabs) #connectionToolbar .connection-menu-toggle { display: none; }
  .connection-detail-header { display: flex; align-items: center; gap: 8px; position: sticky; top: 48px; z-index: 23; min-height: 44px; padding: 0 max(24px,calc((100vw - 1192px) / 2)); border-bottom: 1px solid var(--line); background: var(--panel); }
  .desktop-league-switcher { display: inline-flex; align-items: center; min-height: 28px; max-width: 180px; padding: 0 10px; border-color: var(--line); background: var(--panel); color: var(--ink); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .connection-detail-header .connection-detail-tabs { flex: 0 1 auto; width: auto; position: static; margin: 0; border: 0; }
  .connection-detail-header .connection-detail-tabs button { flex: 0 0 auto; padding-inline: 16px; }
  .desktop-league-sync, .desktop-league-more { display: inline-flex; align-items: center; justify-content: center; width: 28px; min-width: 28px; height: 28px; min-height: 28px; padding: 0; }
  .desktop-league-sync { margin-left: auto; }
  .connection-active-panel { max-width: 1240px; margin: 0 auto; padding: 14px 24px 0; }
  #connectionsView > :not(.connection-detail-shell):not(#connectionToolbar) { max-width: 1192px; margin-inline: auto; }
}
@media (max-width: 760px) {
  .connected-workspace main { padding-bottom: 0; }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) > .lw-action-bar { margin-bottom: 0; }
}

.desktop-league-warning { display: none; }
@media (min-width: 761px) {
  .desktop-league-warning { display: block; max-width: 1192px; margin: 8px auto; }
}
.player-table .move-selected :is(td,th), .player-table .move-selected .player-name-cell { background: var(--orange-soft); }
#boardScroller th button, #rookiesScroller th button { width: auto; white-space: nowrap; height: 24px; min-height: 24px; padding-block: 0; font-size: 11px; }

.waiver-drop-table .waiver-roster-group :is(th,td) { height: 22px; background: var(--canvas); color: var(--muted); font-size: 11px; }




/* Keep visually hidden captions inside their scrolling table in Safari. */
.player-table-shell { position: relative; }
.player-table-shell > table > caption.sr-only { left: 0; top: 0; }

.lw-value-bar { display: inline-block; flex: 0 0 70px; width: 70px; height: 6px; overflow: hidden; border-radius: 3px; background: var(--line); }
.lw-value-bar > span { display: block; height: 6px; background: var(--orange); }
.depth-minutes { display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; font-variant-numeric: tabular-nums; }
.depth-minute-value { min-width: 4ch; text-align: right; font-variant-numeric: tabular-nums; }
#depthRotationPhone { display: none; }
@media (max-width: 760px) {
  .view-heading > div:first-child { display: none; }
  .view-heading { margin: 0; }
  .view-heading .view-actions { width: 100%; padding: 6px 8px; gap: 6px; min-height: 40px; }
  .view-heading .view-actions :is(button,select:not(.lw-chip-select)) { height: 28px; min-height: 28px; padding-block: 0; font-size: 12px; }
  :is(#newList,#importRanking,#importRankingAside,#rankingTemplate,#useRanking,#resetRanking,#rankingBackToTop,#newLiveDraft,#openPresets,#draftHelpOpen,#hostedExport,#poEditOpen) { min-height: 44px; height: 44px; padding-block: 0; font-size: 14px; }
  .depth-team-picker > button.lw-chip { height: 24px; min-height: 24px; }
  dialog :is(input:not([type="checkbox"]):not([type="radio"]),select:not(.lw-chip-select),textarea) { font-size: 16px; min-height: 44px; }
  .view-heading [data-score-help] { display: none; }
  #depthSubView .card-heading { display: none; }
  .depth-phone-toolbar { display: flex; align-items: center; justify-content: space-between; height: 44px; padding-inline: 8px; }
  .depth-team-picker { display: inline-flex; height: 28px; border: 1px solid var(--line); border-radius: 7px; margin: 0; background: var(--panel); }
  .depth-team-picker :is(button,select:not(.lw-chip-select)) { height: 26px; min-height: 26px; border: 0; background-color: transparent; }
  .depth-team-picker select { min-width: 120px; font-weight: 700; }
  .depth-workspace .depth-layout { margin: 0; }
  .depth-card { border: 0; border-radius: 0; padding: 0; box-shadow: none; background: transparent; }
  .depth-team-stats { margin: 0; padding: 6px 8px 8px; border-block: 1px solid var(--line); background: var(--panel); }
  .depth-stats-heading { display: block; margin: 0 0 3px; font-size: 11px; font-weight: 400; color: var(--muted); }
  .depth-state { margin-inline: 8px; }
  .depth-workspace #depthGrid { display: none; }
  #depthRotationPhone { display: block; margin-top: 8px; }
  .depth-rotation-table .player-name-cell { min-width: 148px; }
  .depth-rotation-table [data-column="position"] { color: var(--muted); }
  .depth-rotation-table .depth-position-row th { height: 22px; font-size: 11px; color: var(--muted); background: var(--canvas); }
  .drafts-card, .session-analysis-card { margin: 8px; padding: 12px; border-radius: 8px; }
  .ranking-page { display: flex; flex-direction: column; gap: 0; }
  .ranking-aside { display: contents; }
  .ranking-tool { order: 3; margin: 8px; width: calc(100% - 16px); }
  .ranking-tool:first-child { order: 0; border: 0; border-radius: 0; padding: 4px 8px; margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
  .ranking-tool:first-child > :is(h3,p) { display: none; }
  .ranking-tool:first-child .build-pills { flex: 1 0 100%; flex-wrap: nowrap; overflow-x: auto; margin: 0; padding: 0; }
  .build-pills label { height: 24px; min-height: 24px; padding: 0 8px; border: 0; border-radius: 999px; background: var(--line); font-size: 11px; white-space: nowrap; }
  .build-pills label:has(input:checked) { background: var(--orange); color: var(--panel); }
  .build-pills input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .build-pills label:focus-within { outline: 2px solid var(--focus); }
  #applyBuild { width: auto; min-height: 44px; height: 44px; padding-block: 0; font-size: 14px; margin: 4px 0; }
  .ranking-main { order: 1; padding: 0; border: 0; border-radius: 0; box-shadow: none; }
  .ranking-main.ranking-state { margin: 8px; width: calc(100% - 16px); }
  .ranking-main .detail-head { padding: 4px 8px; margin: 0; min-height: 28px; border: 0; }
  .ranking-main .detail-head > div:first-child { display: none; }
  .ranking-main .detail-actions { display: flex; flex-wrap: nowrap; width: 100%; gap: 4px; overflow-x: auto; }
  .ranking-main .detail-actions button { min-height: 24px; height: 24px; padding: 0 8px; font-size: 11px; }
  .ranking-main .ranking-toolbar { padding: 4px 8px; margin: 0; }
  .ranking-main .ranking-toolbar input { height: 28px; min-height: 28px; }
  .ranking-main .ranking-toolbar button { height: 24px; min-height: 24px; font-size: 11px; }
  #rankingFilterSummary { padding-inline: 8px; }
}

.phone-ranking-actions { display: grid; gap: 4px; }
.phone-ranking-actions button { min-height: 44px; text-align: left; }
@media (max-width: 760px) {
  .ranking-main .detail-head { display: none; }
  .ranking-table .adp-col, .ranking-table .meta-col:not([data-label="G"]) { display: none; }
  .ranking-table [data-label="G"] { display: table-cell; }
  .ranking-table .score-col { display: table-cell; }
  .ranking-table .player-name-cell { min-width: 150px; }
  #mockView > .card { margin: 8px; padding: 12px; border-radius: 8px; }
  .mock-launch { display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
  .mock-launch h2 { font-size: 15px; margin: 0 0 6px; }
  .mock-launch .lede { font-size: 13px; margin: 0; }
  .mock-launch #startMock { min-height: 44px; border-radius: 10px; }
  .session-list-card .card-heading { padding-bottom: 8px; }
  .playoff-tab-controls > label > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .playoff-tab-controls :is(select:not(.lw-chip-select),button) { min-height: 24px; height: 24px; border: 0; border-radius: 999px; background-color: var(--line); font-size: 11px; padding-block: 0; }
  .po-tabs { margin: 4px 8px 8px; }
  .po-panel { padding: 0; border: 0; border-radius: 0; }
  .po-panel > .lede { display: none; }
  .po-heading { padding-inline: 8px; font-size: 13px; }
  .po-summary { display: flex; gap: 6px; padding: 4px 8px; margin: 0; overflow-x: auto; }
  .po-stat { flex: 1; min-width: 0; padding: 6px 8px; }
  .po-stat-title { font-size: 11px; }
  .po-stat strong { font-size: 13px; }
  .po-player-position { display: none; }
  .po-stat-detail { display: none; }
}

.stream-gain, .player-table .stream-gain { height: 24px; min-height: 24px; padding: 0; font-size: 13px; font-weight: 700; color: var(--green); }
.stream-plan-summary { display: none; }
@media (max-width: 760px) {
  .streaming-table [data-column="compare"] { display: none; }
  .matchup-streaming { min-height: calc(100dvh - 124px); display: flex; flex-direction: column; }
  .stream-plan-summary { display: flex; align-items: center; gap: 10px; min-height: 64px; margin-top: auto; padding: 8px 10px; background: var(--panel); border-top: 1px solid var(--line-strong); position: sticky; bottom: 0; z-index: 24; }
  .stream-plan-summary strong { font-size: 13px; }
  .stream-plan-summary > span { font-size: 12px; color: var(--muted); }
}

@media (min-width: 761px) {
  #boardScroller table { width: 100%; table-layout: fixed; }
  #boardScroller .fz-name { width: 180px; min-width: 180px; }
  #boardScroller .fz-star { width: 30px; }
  #boardScroller .fz-rank { width: 46px; }
  #boardScroller :is(.fz-adp1,.fz-adp2) { width: 64px; }
  #boardScroller :is(th,td).txt { width: 56px; }
}

@media (min-width: 761px) {
  .trade-steps { display: none; }
  .trade-workspace { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1.15fr); gap: 12px; align-items: start; }
  .trade-workspace > .trade-pick-panel, .trade-workspace .trade-pick-columns { display: contents; }
  .trade-workspace .trade-controls { grid-column: 1 / -1; grid-row: 1; }
  .trade-workspace .trade-pick-columns > section:first-child { grid-column: 1; grid-row: 2; }
  .trade-workspace .trade-pick-columns > section:last-child { grid-column: 2; grid-row: 2; }
  .trade-workspace .trade-pick-bar { grid-column: 1 / span 2; grid-row: 3; }
  .trade-workspace .connection-trade-result { grid-column: 3; grid-row: 2 / span 3; min-width: 0; }
  .trade-workspace .trade-pick-panel > p { grid-column: 1 / span 2; }
  .trade-workspace .trade-rank-result { overflow-x: auto; }
  .trade-workspace .trade-result-bar { padding-inline: 0; flex-wrap: wrap; }
  .trade-workspace .trade-result-bar .lw-back { display: none; }
  .trade-workspace .trade-result-bar .lw-action-summary { flex-basis: 100%; }
}

.ranking-table-wrap { position: relative; }
table .sr-only { left: 0; top: 0; }
@media (max-width: 760px) {
  .ranking-page, .ranking-main, .ranking-tool { min-width: 0; max-width: 100%; }
  #reorderBuild { min-width: 0; max-width: 100%; width: 100%; }
  #rankingPicker { max-width: 190px; min-width: 0; }
}

.rookie-pick-prefix { display: none; }
.rookie-identity { display: block; min-width: 0; max-width: 100%; }
.rookie-identity-text { display: flex; align-items: center; min-width: 0; gap: 3px; }
.rookie-identity-text > button.player-name { display: block; flex: 1; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rookie-identity-text > .player-meta { flex: 0 0 auto; margin: 0; white-space: nowrap; color: var(--muted); font-size: 11px; }
@media (max-width: 760px) {
  #rookiesScroller .rookie-pick-column, #rookiesScroller .rookie-star-column { display: none; }
  #rookiesScroller .player-name-cell { min-width: 156px; }
  .rookie-identity { display: grid; grid-template-columns: 20px minmax(0, 1fr) 24px; align-items: center; gap: 3px; }
  .rookie-identity-text { display: block; overflow: hidden; }
  .rookie-identity-text > button.player-name { width: 100%; height: auto; min-height: 0; line-height: 16px; }
  .rookie-identity-text > .player-meta { display: block; overflow: hidden; text-overflow: ellipsis; line-height: 13px; }
  .rookie-identity > button.star { display: inline-flex; width: 24px; min-width: 24px; height: 24px; min-height: 24px; margin: 0; padding: 0; justify-self: end; }
  .rookie-pick-prefix { display: inline-block; width: 20px; font-size: 11px; color: var(--faint); }
}
@media (min-width: 1101px) {
  .matchup-main { position: relative; grid-template-columns: minmax(0,460px) minmax(0,1fr); grid-template-rows: 36px max-content auto; gap: 0 16px; }
  .matchup-main > .matchup-table-controls { grid-row: 1; }
  .matchup-main > .matchup-hero { grid-row: 2; padding: 8px 12px; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; background: var(--panel); }
  .matchup-main > .matchup-overview { grid-row: 3; }
  .matchup-main .matchup-table-shell { border-radius: 0 0 10px 10px; }
  .matchup-main .matchup-streaming-row { position: absolute; top: 0; right: 0; min-height: 28px; }
  .matchup-main > .matchup-days-section { grid-row: 2 / span 2; display: grid; grid-template-columns: 1fr max-content; gap: 4px 8px; padding: 6px 12px 0; }
  .matchup-days-section > h3 { grid-column: 1; margin: 0; align-self: center; }
  .matchup-days-section > .lw-control-row { grid-column: 2; grid-row: 1; min-height: 28px; padding: 0; }
  .matchup-days-section > :is(.lineup-grid-shell,.lineup-overflow) { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
  .ranking-aside > button { order: 4; }
  .ranking-aside > :is(#useRanking,#resetRanking) { display: none; }
  .ranking-table .rank-col, .ranking-table .star-col, .ranking-table th.meta-col { display: none; }
  .ranking-table .player-name-cell { min-width: 170px; }
  .ranking-table .player-name-cell > .player-link { display: inline-flex; }
  .ranking-phone-rank { display: inline-block; width: 20px; font-size: 11px; color: var(--faint); font-weight: 400; }
  .ranking-table .player-name-cell > .star { display: inline-flex; margin-left: 3px; }
}

.po-phone-window, .po-phone-rank, .po-phone-grade { display: none; }
#poEditDialog .playoff-tab-controls { display: grid; width: 100%; gap: 12px; }
#poEditDialog .playoff-tab-controls select { height: 44px; min-height: 44px; font-size: 16px; }
#poEditDialog .playoff-tab-controls label > span { position: static; width: auto; height: auto; clip-path: none; }
#poEditDialog > .primary { width: 100%; margin-top: 12px; height: 44px; }
@media (max-width: 760px) {
  #playoffsView > .view-heading .playoff-tab-controls { display: none; }
  .po-phone-window { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 6px 8px; background: var(--panel); border-bottom: 1px solid var(--line); }
  .po-phone-window > div { flex: 1; min-width: 0; }
  .po-phone-window strong, .po-phone-window span { display: block; }
  .po-phone-window strong { font-size: 13px; }
  .po-phone-window span { font-size: 11px; color: var(--muted); }
  .po-phone-window > button { height: 28px; min-height: 28px; padding-block: 0; font-size: 12px; }
  .po-summary .po-stat:first-child { display: none; }
  #poTeams { display: flex; flex-direction: column; }
  #poTeamTable tr > :nth-child(2), #poTeamTable tr > :nth-child(3) { display: none; }
  #poTeamTable .player-name-cell { min-width: 118px; }
  .po-phone-rank { display: inline-block; width: 20px; color: var(--faint); font-size: 11px; font-weight: 400; }
  .po-phone-grade { display: inline-flex; margin-left: 4px; }
  .po-loading-row, .lw-skeleton-row { height: 34px; }
  .po-schedule-state { margin-inline: 8px; }
}

/* The mockups use flat panels and name the workspace in navigation. */
.card { border-radius: 10px; box-shadow: none; }
.build-pills label { display: inline-flex; align-items: center; height: 24px; min-height: 24px; padding: 0 8px; border: 0; border-radius: 999px; background: var(--line); color: var(--ink); font-size: 11px; white-space: nowrap; }
.build-pills label:has(input:checked) { background: var(--orange); color: var(--panel); }
.build-pills input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.build-pills label:focus-within { outline: 2px solid var(--focus); }
@media (min-width: 761px) {
  .view-heading > div:first-child { display: none; }
  .view-heading:not(:has(.view-actions:not([hidden]))) { display: none; }
  .view-heading .view-actions { width: 100%; }
  .playoff-tab-controls { flex-wrap: nowrap; justify-content: flex-start; }
}

.depth-card .card-heading > .lede { display: none; }
/* Desktop research follows the full-width calendar and rotation mockups. */
@media (min-width: 761px) {
  .depth-workspace .depth-card { padding: 0; border: 0; background: transparent; }
  .depth-card .card-heading { padding: 0 0 10px; border: 0; }
  .depth-team-stats { margin: 0 0 12px; padding: 0; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); }
  .depth-column { gap: 0; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); overflow: hidden; }
  .depth-position-head { padding: 5px 10px; text-align: left; }
  .depth-slot { padding: 5px 10px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; gap: 3px; }
  .depth-slot:last-child { border-bottom: 0; }
  .depth-slot .lw-value-bar { width: 100%; height: 6px; }
  .depth-slot-name .player-link { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
  #poContent { display: flex; flex-direction: column; gap: 10px; }
  #poContent > .po-summary { order: 0; margin: 0; }
  #poTeams { display: contents; }
  #poContent > .po-tabs { order: 3; margin: 0; }
  #poTeams > .po-table-wrap { order: 4; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); }
  #poTeamsNote { order: 5; font-size: 11px; }
  #poContent > :is(#poPlayers,#poSeason) { order: 4; }
  .po-stat { padding: 6px 10px; min-height: 48px; }
  .po-stat strong { font-size: 14px; }
  .po-stat-detail { display: none; }
  .po-night { min-width: 34px; min-height: 42px; padding: 2px; border-radius: 4px; }
  .po-night strong { font-size: 13px; }
  .playoff-tab-controls .inline-field { display: flex; align-items: center; gap: 8px; }
  #poControls :is(select:not(.lw-chip-select),button) { height: 28px; min-height: 28px; width: auto; padding-block: 0; font-size: 12px; }
}

/* The combined Free agents view uses service order and per-move game facts. */
.free-agent-toolbar { display: flex; flex-direction: column; gap: 0; }
.free-agent-summary { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 32px; font-size: 12px; }
.free-agent-summary-copy { min-width: 0; }
.free-agent-summary .lw-chip { max-width: 172px; }
.free-agent-days, .free-agent-best { display: flex; align-items: center; flex: 0 0 auto; gap: 3px; white-space: nowrap; }
.free-agent-filter-label { font-size: 11px; color: var(--muted); }
.free-agent-days .waiver-day-chip { width: 23px; padding: 0; }
.free-agent-best .lw-chip { min-width: 0; padding-inline: 6px; }
.waiver-filters { overflow-x: auto; max-width: 100%; padding: 4px 0; gap: 5px; }
.waiver-filters > * { flex: 0 0 auto; }
.free-agent-search { width: 170px; height: 28px; min-height: 28px; max-width: 170px; font-size: 12px; }
.free-agent-ranked { box-shadow: inset 0 -2px 0 var(--orange); }
.waiver-header-clear { margin-left: auto; height: 24px; min-height: 24px; padding: 0 7px; font-size: 11px; }
.free-agent-picked { margin-left: auto; font-size: 12px; }
.waiver-header-clear + .free-agent-picked { margin-left: 0; }
.waiver-panel-title .waiver-header-clear { order: 3; }
.waiver-table :is(th,td)[data-column="thisWeek"] { width: 82px; min-width: 82px; }
.waiver-table :is(th,td)[data-column="gamesLeftThisWeek"] { min-width: 32px; text-align: right; }
.waiver-clear { white-space: nowrap; }
.lw-action-bar > .waiver-clear { min-height: 44px; height: 44px; padding: 0 10px; border-radius: 10px; font-size: 14px; }
.lineup-grid-shell { border: 0; border-radius: 0; }
.lineup-grid :is(th,td) { border-bottom: 1px solid var(--line); border-inline: 0; }
.lineup-grid .lineup-total:not(.lineup-starts) :is(th,td) { border-top: 0; }
.lineup-grid .lineup-current-day { background: var(--panel); }
.roster-stat-table { max-width: 1020px; }
.roster-stat-table .roster-no-game :is(.player-link,.lw-slot,.connection-status) { color: var(--muted); }
.matchup-category-panel { display: contents; }
.profile-designation-row { display: flex; align-items: center; gap: 10px; margin-block: 10px; }
.profile-designation-row .profile-designations { margin: 0; }
.profile-designation-row > .lw-caption { margin: 0; font-size: 11px; }
.profile-stat-label { display: block; font-weight: 700; white-space: nowrap; }
.profile-stat-sublabel { display: block; font-size: 11px; font-weight: 400; color: var(--muted); line-height: 12px; }
.profile-stats { margin-top: 12px; }
.profile-stats table { width: 100%; border-collapse: separate; border-spacing: 0; }
.profile-stats :is(th,td) { height: 34px; padding: 0 5px; font-size: 12px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.profile-stats :is(th,td):first-child { min-width: 96px; max-width: 116px; padding-left: 0; box-shadow: 1px 0 0 var(--line); }
.profile-stats .profile-actuals-row > td { border-bottom-color: var(--line-strong); }
.profile-body .profile-history-note { font-size: 11px; }
@media (min-width: 761px) {
  .free-agent-toolbar { display: grid; grid-template-columns: max-content minmax(0,1fr); gap: 0 12px; }
  .free-agent-toolbar .waiver-search { display: none; }
  .free-agent-best { min-width: 0; overflow-x: auto; }
  .free-agent-summary { grid-column: 1 / -1; }
  .waiver-add-week { display: none; }
  .waiver-workspace .waiver-header-clear { margin-left: auto; }
  .waiver-workspace .lw-action-bar > .waiver-clear { display: none; }
  .waiver-drop-table :is(th,td)[data-column="games"] { display: table-cell; }
}
@media (min-width: 1101px) {
  .matchup-main { display: grid; grid-template-rows: auto; align-content: start; align-items: start; align-self: start; }
  .matchup-main > .matchup-category-panel { grid-column: 1; grid-row: 1; display: flex; flex-direction: column; align-self: start; min-width: 0; }
  .matchup-category-panel > .matchup-table-controls { order: 0; height: 36px; padding: 0; }
  .matchup-category-panel > .matchup-hero { order: 1; padding: 8px 12px; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; background: var(--panel); }
  .matchup-category-panel > .matchup-overview { order: 2; }
  .matchup-main > .matchup-days-section { grid-row: 1; padding-top: 42px; }
}
@media (max-width: 760px) {
  .free-agent-toolbar[data-step]:not([data-step="0"]) { display: none; }
  .free-agent-summary { order: 0; padding-inline: 8px; gap: 4px; font-size: 11px; }
  .free-agent-week-context, .free-agent-search, .free-agent-days > .free-agent-filter-label { display: none; }
  .free-agent-summary .lw-chip { max-width: 150px; font-size: 11px; }
  .free-agent-toolbar .waiver-filters { order: 1; gap: 3px; padding: 4px 8px; }
  .waiver-filters button.lw-chip.waiver-search { width: 28px; min-width: 28px; height: 28px; min-height: 28px; border-radius: 6px; padding: 0; }
  .free-agent-days { gap: 2px; }
  .waiver-filter-chip:has([data-league-control="waiver-position"]) { width: 46px; padding-inline: 5px; }
  .waiver-filter-chip:has([data-league-control="waiver-stats"]) { width: 53px; padding-inline: 5px; }
  .waiver-filters .lw-chip-toggle { padding-inline: 5px; }
  .free-agent-best { order: 2; max-width: 100%; overflow-x: auto; padding: 3px 8px 5px; gap: 3px; }
  .free-agent-best .lw-chip { padding-inline: 5px; }
  .waiver-header-clear { display: none; }
  .waiver-table :is(th,td)[data-column="team"], .waiver-table :is(th,td)[data-column="positions"] { display: none; }
  .waiver-mode-row { justify-content: space-between; }
  .waiver-workspace[data-step="0"] > .waiver-add-panel { min-height: calc(100dvh - 250px); }
  .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) > .lw-action-bar { gap: 6px; }
  .waiver-workspace .lw-action-bar > .lw-main-action { padding-inline: 12px; }
  .profile-stats th, .profile-stats td { min-width: 38px; }
}

@media (min-width: 1101px) {
  .waiver-machine { grid-template-columns: minmax(0,2fr) minmax(0,1fr); grid-template-rows: max-content max-content; }
  .waiver-add-panel { grid-column: 1; grid-row: 1 / span 2; }
  .waiver-drop-panel { grid-column: 2; grid-row: 1; }
  .waiver-result-panel { grid-column: 2; grid-row: 2; }
  .waiver-add-panel > .waiver-add-bar { display: none; }
}

.profile-body { display: flex; flex-direction: column; min-height: calc(100dvh - 72px); box-sizing: border-box; }
.profile-intro .connection-meta { margin: 0; font-size: 12px; }
.profile-intro h2 { margin: 0; }
.profile-heading { border-bottom: 0; }
.player-profile .profile-stats { border: 0; border-radius: 0; }
.matchup-days-section { align-content: start; }
.matchup-waivers-link { border: 0; background: transparent; padding: 0; color: var(--orange); font-size: 11px; font-weight: 700; }
@media (min-width: 761px) {
  .waiver-mode-row { display: none; }
  .waiver-timing-chip { height: 28px; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); }
  .waiver-table [data-column="team"] { min-width: 38px; }
}
@media (max-width: 760px) {
  .waiver-table.player-table :is(th,td)[data-column="team"], .waiver-table.player-table :is(th,td)[data-column="positions"] { display: none; }
  .waiver-mode-row > .lw-steps { margin-left: 0; }
  .waiver-mode-row > .waiver-add-week { margin-left: auto; }
  .profile-body { min-height: calc(100dvh - 116px); }
  .profile-actions { width: 100%; }
  .profile-actions > button { width: 100%; }
}

.free-agent-caption { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.waiver-add-panel .free-agent-picked { margin-left: auto; }
.waiver-add-panel .waiver-header-clear { margin-left: 0; }
@media (min-width: 761px) {
  .waiver-table thead .player-name-cell { padding-left: 32px; }
}

.waiver-drop-filter { margin-left: auto; }
@media (min-width: 761px) {
  .waiver-drop-choices[data-drop-filter="droppable"] .drop-not-droppable { display: none; }
}

.waiver-review-panels { display: contents; }
@media (min-width: 1101px) {
  .waiver-machine { grid-template-rows: auto; }
  .waiver-add-panel { grid-row: 1; }
  .waiver-review-panels { display: flex; flex-direction: column; grid-column: 2; grid-row: 1; gap: 12px; align-self: start; min-width: 0; }
}

.waiver-table.player-table thead th.free-agent-ranked { box-shadow: inset 0 -2px 0 var(--orange); }
.waiver-table.player-table :is(th,td)[data-column="thisWeek"] { box-sizing: border-box; width: 82px; min-width: 82px; max-width: 82px; padding-inline: 3px; }
@media (max-width: 760px) {
  #connectionActivePanel[data-league-view="waivers"] { display: flex; flex-direction: column; min-height: calc(100dvh - 84px); }
  #connectionActivePanel[data-league-view="waivers"] .waiver-workspace { display: flex; flex-direction: column; flex: 1; min-height: 0; }
  #connectionActivePanel[data-league-view="waivers"] .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) { flex: 1; min-height: 0; }
}
@media (max-width: 760px) {
  #connectionActivePanel[data-league-view="waivers"] .waiver-workspace { align-items: stretch; }
  #connectionActivePanel[data-league-view="waivers"] .waiver-workspace :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel) { width: 100%; max-width: 100%; }
}
@media (max-width: 760px) {
  #connectionActivePanel[data-league-view="waivers"] .waiver-workspace { gap: 0; }
}
@media (max-width: 760px) {
  #connectionActivePanel[data-league-view="waivers"] .waiver-workspace { margin-bottom: 0; }
}

@media (max-width: 760px) {
  .waiver-mode-row > .comparison-week-nav { margin-left: auto; }
  .waiver-result-panel .waiver-comparison { padding-bottom: 16px; }
}
@media (min-width: 761px) and (max-width: 1100px) {
  .waiver-drop-panel > .waiver-panel-title { flex-wrap: wrap; }
  .waiver-drop-panel .waiver-drop-filter { margin-left: 0; }
}

/* Schedule facts only: seven compact day letters and the supplied games left. */
.free-agent-weekdays { display: inline-flex; gap: 1px; }
.free-agent-day { display: inline-flex; flex: 0 0 10px; align-items: center; justify-content: center; width: 10px; height: 16px; border-radius: 3px; font-size: 10px; font-weight: 400; color: var(--faint); background: transparent; }
.free-agent-day.plays { color: var(--green); background: var(--green-soft); font-weight: 700; }
.free-agent-day.past { color: var(--line); }
.waiver-table .free-agent-games-left { color: var(--ink); font-weight: 700; }
.free-agent-days .waiver-day-chip:disabled { color: var(--faint); background: var(--line); cursor: default; }

@media (max-width: 760px) {
  .free-agent-caption { padding-inline: 6px; }
}

.rank-position { color: var(--muted); white-space: nowrap; }
@media (min-width: 761px) {
  .free-agent-summary .waiver-add-week { display: inline-flex; flex: 0 0 auto; }
  .free-agent-summary .free-agent-summary-copy { margin-right: auto; }
}

/* Keep the full Add table reachable; fit the normal desktop columns first. */
.waiver-add-panel .waiver-table-shell { min-width: 0; overflow-x: auto; }
@media (min-width: 761px) {
  .waiver-table.player-table :is(th,td) { padding-inline: 3px; }
  .waiver-table.player-table .player-name-cell { width: 160px; min-width: 160px; }
  .waiver-table.player-table thead .player-name-cell { padding-left: 31px; }
  .waiver-table.player-table [data-column="team"] { min-width: 30px; }
  .waiver-table.player-table [data-column="gamesLeftThisWeek"] { min-width: 24px; }
}

/* Desktop review, 2026-10-30: shared table and toolbar geometry. */
.profile-body > .profile-stats { width: 100%; min-width: 0; max-width: 100%; overflow-x: auto; }
.profile-stats table { min-width: max-content; }
.depth-stats { display: block; min-width: 0; }
.depth-stats table { width: 100%; min-width: 530px; border-collapse: collapse; }
.depth-stats :is(th,td) { height: 30px; padding: 0 6px; text-align: right; border-bottom: 1px solid var(--line); font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.depth-stats thead th { height: 26px; font-size: 11px; color: var(--muted); }
.depth-stats tbody th { text-align: left; }
.depth-stats-loading td { position: relative; color: transparent; }
.depth-stats-loading td::after { content: ""; position: absolute; left: 4px; right: 4px; top: 50%; height: 10px; transform: translateY(-50%); border-radius: 3px; background: var(--line); }
@media (max-width: 760px) {
  .depth-stats table { min-width: 0; table-layout: fixed; }
  .depth-stats .depth-stats-label { display: none; }
  .depth-stats :is(th,td) { height: 20px; padding: 0 3px; border: 0; }
  .depth-stats tbody td { font-weight: 700; }
}
.po-night-card { border: 1px solid var(--line); border-radius: 8px; padding: 8px; margin-bottom: 12px; }
.po-night-card .po-heading { margin: 0 0 8px; padding: 0; }
.po-night-card .lw-caption { padding: 0; }
.po-night-card .po-legend { margin: 8px 0 0; font-size: 11px; }
.trade-side-heading { display: flex; align-items: center; gap: 6px; }
.trade-side-heading > .lw-caption { margin-left: auto; }
.trade-context { margin-left: auto; }
@media (min-width: 761px) {
  .player-table .player-name-cell { box-shadow: 1px 0 0 var(--line); border-bottom-color: var(--line); border-right: 0; }
  .roster-stat-table { width: 100%; max-width: none; }
  .roster-stat-table table { width: 100%; }
  .roster-source-row { display: flex; align-items: center; gap: 10px; }
  .roster-source-row > .roster-basis-caption { margin-left: 0; }
  .player-profile { width: min(560px,100%); }
  .roster-designation-legend { margin: 0 0 0 auto; }
  .standings-table { width: 100%; table-layout: auto; }
  .standings-table .player-name-cell { width: 1%; min-width: 180px; padding-right: 20px; }
  .standings-table [data-column="rank"] { width: 40px; min-width: 40px; }
  .standings-table [data-column="record"] { text-align: right; }
  .waiver-machine .lw-action-bar, .trade-workspace .lw-action-bar { display: none; }
  .waiver-workspace .waiver-panel-title, .trade-workspace .trade-side-heading, .trade-workspace .trade-result-heading { margin: 0; padding: 8px; border-bottom: 1px solid var(--line-strong); font-size: 13px; }
  .waiver-result-panel > .lw-caption, .connection-trade-result > .lw-caption { margin: 8px; font-size: 11px; }
  .waiver-machine :is(.waiver-add-panel,.waiver-drop-panel,.waiver-result-panel), .trade-pick-columns > section, .connection-trade-result { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; min-width: 0; background: var(--panel); }
  .trade-workspace { gap: 8px 12px; }
  .trade-controls { margin: 0; min-height: 28px; }
  .trade-partner-label { font-size: 12px; }
  .trade-workspace .trade-controls { grid-row: 1; }
  .matchup-table-controls .matchup-streaming-row { margin-left: auto; }
  .matchup-table-controls .matchup-waivers-link { margin: 0; }
  #boardScroller .fz-name { text-align: left; }
  #boardScroller .fz-name button { justify-content: flex-start; text-align: left; margin-left: 0; }
  #boardScroller thead .fz-rank { padding-inline: 3px; }
  #boardPositionNote { margin-left: auto; text-align: right; font-size: 11px; }
  .board-toolbar .search-field { position: relative; }
  .board-toolbar .search-field::before { content: "⌕"; position: absolute; left: 8px; bottom: 5px; color: var(--muted); font-size: 16px; pointer-events: none; }
  .board-toolbar input { height: 28px; min-height: 28px; padding: 0 8px 0 26px; font-size: 12px; }
  .score-help-open { width: 28px; min-width: 28px; height: 28px; min-height: 28px; padding: 0; font-size: 12px; }
  #poTeamTable .num { text-align: right; }
  #poTeamTable .po-grade-cell { text-align: center; }
  #listsView > .view-heading { display: block; }
  #listsView > .view-heading > div:first-child { display: none; }
  .ranking-page-actions { width: 100%; justify-content: flex-start; gap: 8px; }
  .ranking-page-actions #importRanking { margin-left: auto; }
  .ranking-changes-tool, .ranking-page:not(.ranking-empty-page) .ranking-starred-tool { display: none; }
  .ranking-tool > .lede, .ranking-tool .lw-caption { font-size: 11px; }
}
@media (max-width: 760px) {
  .trade-partner-label, .trade-context { display: none; }
  .roster-source-row { flex-wrap: wrap; }
  .roster-designation-legend { flex-basis: 100%; margin: 4px 0; }
  #poTeamTable tr > :nth-child(4), #poTeamTable tr > :nth-child(5) { display: none; }
}

@media (min-width: 761px) {
  .matchup-main .matchup-table-controls { grid-column: 1 / -1; width: 100%; max-width: none; }
  .matchup-main .matchup-table-controls .matchup-streaming-row { position: static; }
  #poTeams > .po-night-card { order: 6; }
}

@media (min-width: 761px) {
  .player-table tbody :is(th,td) { border-bottom-color: var(--line); }
  .trade-side-heading > .lw-caption { padding: 0; line-height: normal; }
  .trade-workspace .trade-side-heading { min-height: 0; height: 36px; padding-block: 0; }
  .matchup-main .matchup-table-controls .matchup-streaming-row { margin-bottom: 0; }
}
@media (max-width: 760px) {
  .trade-side-heading { display: none; }
}

@media (min-width: 761px) {
  .standings-table.player-table :is(th,td)[data-column="record"] { text-align: right; }
}
@media (min-width: 1101px) {
  .matchup-main > .matchup-category-panel { grid-row: 2; }
  .matchup-main > .matchup-days-section { grid-row: 2; padding-top: 6px; }
}


/* Trade board: supplied basis lines, ranks and values; local filtering only. */
.trade-view-tabs { width: max-content; max-width: 100%; margin: 4px 0 8px; }
.trade-board-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 0; max-width: 100%; }
.trade-board-toolbar .lw-control-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.trade-board-filters > select { max-width: 180px; }
.trade-market-shell { border-radius: 8px; }
.trade-market-table.player-table :is(th,td) { padding-inline: 4px; }
.trade-market-table.player-table .player-name-cell { width: 160px; min-width: 160px; }
.trade-market-table thead :is(th,td) { font-size: 11px; white-space: nowrap; }
.trade-market-table thead .market-sort { display: block; width: 100%; min-height: 24px; height: 24px; padding: 0; border: 0; border-radius: 0; background: transparent; color: inherit; font-size: 11px; font-weight: 700; text-align: inherit; white-space: nowrap; }
.trade-vs-proj { color: var(--ink); font-weight: 700; }
.market-name-meta { display: none; }
.trade-market-caption { margin: 6px 0; font-size: 11px; }
@media (max-width: 760px) {
  .trade-view-tabs { margin: 4px 8px; }
  .trade-board-toolbar { padding: 4px 8px; margin: 0; }
  .trade-board-filters > select { max-width: 140px; }
  .trade-market-shell { border-inline: 0; border-radius: 0; }
  .trade-market-table.player-table :is(th,td) { height: 40px; padding-inline: 5px; }
  .trade-market-table.player-table thead th { height: 26px; }
  .trade-market-table.player-table .player-name-cell { width: 140px; min-width: 140px; max-width: 140px; }
  .trade-market-table .player-link { min-height: 0; height: 20px; font-size: 13px; }
  .market-player-name { display: flex; flex-direction: column; align-items: flex-start; gap: 0; }
  .market-name-meta { display: block; width: 130px; color: var(--muted); font-size: 11px; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .trade-market-caption { padding-inline: 8px; white-space: normal; }
}

.trade-market-panel { min-width: 0; max-width: 100%; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--panel); }
.trade-market-panel > .trade-market-shell { border: 0; border-radius: 0; }
.league-view-row, .league-matchup-controls { margin: 8px 0; }
.league-view-picker { max-width: 180px; }
.league-punt-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }
.league-punt-chips .lw-chip[aria-pressed="true"] { background: var(--orange); color: white; }
.league-punt-sheet > .primary { width: 100%; min-height: 44px; }
button.league-punt-hint.lw-chip, button.league-view-punts.lw-chip { max-width: 100%; }
.league-returning { display: block; color: var(--muted); font-size: 11px; font-weight: 400; overflow: hidden; text-overflow: ellipsis; }
.category-rank-table .league-team-label:has(.league-returning) { display: grid; grid-template-columns: 16px minmax(0,1fr); column-gap: 6px; row-gap: 0; }
.category-rank-table .league-returning { grid-column: 1 / -1; }
.category-rank-table tr:has(.league-returning) > td { height: 40px; }
.league-playoff-table .player-name-cell { min-width: 160px; }
@media (max-width: 760px) {
  .league-view-row, .league-matchup-controls { margin: 8px; }
  .league-matchup-list { margin-inline: 8px; }
  .league-category-toolbar > .league-view-row { margin-bottom: 0; }
  .league-playoff-table [data-column="rank"] { display: none; }
  .trade-market-panel { border-inline: 0; border-radius: 0; }
}

/* UI review batch 1: inline search, sheet focus and sticky navigation. */
.connection-sheet:focus-visible, .player-profile:focus-visible { outline: none; }
.lw-inline-search { display: flex; align-items: center; gap: 8px; min-width: 0; height: 28px; padding: 0 8px; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); color: var(--muted); }
.lw-inline-search > svg { flex: 0 0 16px; }
.lw-inline-search > input { width: 100%; min-width: 0; height: 100%; min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--ink); font-size: 12px; }
.lw-inline-search:focus-within { outline: 2px solid var(--focus); outline-offset: 1px; }
.lw-inline-search input:focus-visible { outline: none; }
#boardTeam { width: auto; max-width: 130px; }
.waiver-inline-search-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
.waiver-inline-search-row > .lw-inline-search { flex: 1; }
.waiver-inline-search-row > select { width: auto; max-width: 130px; }
.waiver-inline-search-row .free-agent-search { max-width: none; font-size: 12px; }
.board-research-toolbar { min-width: 0; grid-column: 1 / -1; }
@media (min-width: 761px) {
  .side-nav > .nav-tab.active { background: transparent; font-weight: 700; color: var(--on-arena); }
  .board-research-toolbar { display: flex; align-items: center; gap: 8px; }
  .board-research-toolbar > .board-toolbar { display: flex; align-items: center; gap: 8px; min-width: 170px; flex: 1 1 250px; }
  .board-research-toolbar .lw-inline-search { flex: 1; }
  .board-research-toolbar > .board-controls-row { min-width: 0; }
  .board-research-toolbar #boardPositionNote { flex: 0 0 auto; margin: 0 0 0 auto; white-space: nowrap; }
  .board-research-toolbar #boardHelpOpen { flex: 0 0 24px; width: 24px; min-width: 24px; height: 24px; min-height: 24px; padding: 0; border: 0; background: transparent; color: var(--muted); }
  .free-agent-toolbar { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
  .waiver-inline-search-row { flex: 1 1 250px; }
  .free-agent-toolbar .waiver-filters { flex: 0 1 auto; min-width: 0; }
  .free-agent-toolbar .free-agent-best { flex: 0 1 auto; }
  .free-agent-toolbar .free-agent-summary { flex: 1 0 100%; }
  .ranking-toolbar > .lw-inline-search { flex: 0 1 260px; }
}
@media (max-width: 760px) {
  .connection-sheet { max-width: none; box-sizing: border-box; padding-inline: 16px; }
  .connection-sheet::before { content: ""; position: absolute; top: 6px; left: calc(50% - 18px); width: 36px; height: 4px; border-radius: 2px; background: var(--line-strong); }
  .connection-sheet .dialog-heading { min-height: 48px; margin: 0; padding: 0; }
  .connection-detail-header { position: sticky; top: calc(44px + env(safe-area-inset-top)); z-index: 23; background: var(--panel); }
  .connection-detail-tabs { position: static; }
  .lw-inline-search { height: 36px; }
  .lw-inline-search > input, .waiver-inline-search-row .free-agent-search { display: block; font-size: 16px; }
  .board-research-toolbar { display: flex; flex-wrap: wrap; gap: 0; }
  .board-research-toolbar > #boardSeasonControls { flex: 1 0 100%; padding-inline: 8px; }
  .board-research-toolbar > .board-toolbar { display: flex; align-items: center; gap: 8px; width: 100%; padding: 4px 8px; margin: 0; }
  .board-research-toolbar .lw-inline-search { flex: 1; }
  .board-research-toolbar > .board-controls-row { width: 100%; padding: 0 8px 4px; }
  .board-research-toolbar #boardControls { width: 100%; min-width: 0; gap: 6px; }
  .board-research-toolbar #boardPositionNote, .board-research-toolbar #boardHelpOpen { display: none; }
  #boardScroller { margin-top: 0; }
  #boardControls .board-team-filter { display: none; }
  .waiver-inline-search-row { order: 1; width: 100%; padding: 4px 8px; }
  .free-agent-toolbar .waiver-filters { order: 2; padding-inline: 8px; gap: 4px; }
  .free-agent-toolbar .free-agent-best { order: 3; }
  .free-agent-days .waiver-day-chip { width: 20px; min-width: 20px; }
  .ranking-toolbar > .lw-inline-search { flex: 1 1 150px; }
}
.connection-sheet .dialog-heading > .icon-button { width: 44px; min-width: 44px; height: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--muted); }
@media (min-width: 761px) {
  .connection-sheet { width: min(560px, calc(100% - 24px)); box-sizing: border-box; }
}
@media (min-width: 761px) and (max-width: 1100px) {
  .board-research-toolbar { flex-wrap: wrap; }
  .board-research-toolbar > .board-controls-row { flex: 0 0 auto; }
}

/* UI review batch 2: League standings, category ranks and team choice. */
.team-strength-table tbody :is(th,td) { background: var(--panel); }
.strength-controls { justify-content: flex-start; gap: 8px; flex-wrap: wrap; }
.strength-controls > .lw-segment { display: inline-flex; width: auto; flex: 0 0 auto; }
:is(.team-strength-table,.league-standings) .league-own-row > :is(th,td) { background: var(--orange-soft); color: var(--ink); font-weight: 400; }
.league-own-row .league-team-name { color: var(--orange-hover); }
.team-strength-table thead .player-name-cell { font-size: 11px; color: var(--muted); }
.league-team-label { display: flex; align-items: center; gap: 6px; min-width: 0; }
.league-team-rank { flex: 0 0 16px; color: var(--faint); font-size: 11px; font-weight: 400; }
.league-team-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.team-strength-table [data-column="finish"], .standings-table [data-column="rank"] { width: 36px; min-width: 36px; color: var(--faint); font-size: 11px; }
.league-team-notice { display: flex; align-items: center; gap: 8px; min-height: 44px; width: max-content; max-width: 100%; margin-bottom: 4px; font-size: 13px; }
.standings-table [data-column="record"], .standings-table [data-column="gamesBack"] { text-align: right; }
.standings-table.player-table :is(th,td)[data-column="gamesBack"] { text-align: right; }
@media (min-width: 761px) {
  .league-standings { width: max-content; max-width: min(720px,100%); }
  .standings-table { width: auto; min-width: 0; }
  .standings-table .player-name-cell { width: auto; min-width: 240px; max-width: 340px; }
  .standings-table .player-link { max-width: 320px; }
  .standings-table [data-column="record"] { min-width: 80px; }
  .standings-table [data-column="winPct"] { min-width: 70px; }
  .standings-table [data-column="gamesBack"] { min-width: 60px; }
  :is(.team-strength-table,.league-standings,.league-playoff-table) .league-team-rank { display: none; }
  .team-strength-table [data-column="finish"] { text-align: right; }
}
@media (max-width: 760px) {
  .league-team-notice { margin-inline: 8px; max-width: calc(100% - 16px); }
  .league-team-choice.lw-chip { max-width: 170px; }
  .team-strength-table [data-column="finish"], .standings-table [data-column="rank"] { display: none; }
  .team-strength-table :is(th,td)[data-column] { min-width: 40px; }
  .team-strength-table .player-name-cell { width: 160px; min-width: 160px; max-width: 160px; }
  .league-standings .player-link { max-width: 180px; }
}
.league-category-toolbar { display: flex; align-items: center; gap: 8px; }
.category-rank-key { margin-left: auto; white-space: nowrap; color: var(--muted); font-size: 11px; }
@media (max-width: 760px) {
  .league-category-toolbar { flex-wrap: wrap; gap: 0; }
  .league-category-toolbar > .strength-controls { width: 100%; }
}

/* UI review batch 3: shared gutters and table details. */
#boardScroller th.fz-name button { margin-left: 0; }
.roster-stat-table .roster-slot { color: var(--faint); font-size: 10px; font-weight: 700; }
.roster-stat-table :is(.roster-bench-start,.roster-injury-start) > :is(th,td) { border-top: 2px solid var(--line-strong); }
.matchup-compare .matchup-games > th { color: var(--muted); }
.matchup-compare .matchup-games strong { font-weight: 700; }
.strength-caption { white-space: normal; overflow: visible; }
.strength-basis-label::before { content: " · "; }
.category-rank-summary { margin-left: auto; color: var(--muted); font-size: 11px; white-space: nowrap; }
@media (min-width: 761px) {
  main { max-width: 1280px; }
  .connection-active-panel { max-width: 1280px; }
  #connectionDetail > .connection-loading { width: calc(100% - 48px); max-width: 1232px; margin-inline: auto; }
  .connection-detail-header { padding-inline: max(24px,calc((100vw - 1232px) / 2)); }
  .roster-stat-table [data-column="slot"] { width: 40px; min-width: 40px; max-width: 40px; }
  .roster-player-line > .lw-slot { display: none; }
  .strength-controls > .category-rank-key, .strength-caption > .strength-basis-label { display: none; }
  .strength-basis-label::before { content: none; }
}
@media (max-width: 760px) {
  .roster-stat-table [data-column="slot"] { display: none; }
  .roster-stat-table .numeric { min-width: 40px; }
  .category-rank-summary, .strength-controls > .category-rank-key { display: none; }
  .matchup-controls { padding-inline: 8px; }
  .matchup-main .matchup-table-controls { padding-inline: 8px; }
  .matchup-days-section { padding: 0; border: 0; border-radius: 0; background: transparent; }
  .trade-verdict-cards { margin-inline: 8px; }
  .view > .empty-state { margin-inline: 8px; }
  #rookiesSubView .table-empty { padding-inline: 8px; }
  .account-view > .account-card { margin: 8px; width: auto; }
  .connection-active-panel > .league-read-state { margin-inline: 8px; }
  .account-actions { flex-direction: column; align-items: stretch; gap: 0; }
  .account-actions > button { min-height: 44px; width: 100%; }
  .ranking-tool:first-child { margin-inline: 8px; width: calc(100% - 16px); padding-inline: 0; background: transparent; }
  .po-player-toolbar { padding: 4px 8px; }
  #connectionDetail > .connection-loading { margin-inline: 8px; }
  .lw-caption { padding-inline: 8px; }
  .connection-data-notes { margin-inline: 8px; }
}

/* UI review batch 4: phone Matchup uses one control row and the daily window. */
.lineup-grid thead .lineup-past-day { color: var(--faint); }
.lineup-grid thead .lineup-current-day { color: var(--ink); font-weight: 700; box-shadow: inset 0 -2px 0 var(--orange); }
.matchup-add-window { color: var(--muted); font-size: 11px; }
.matchup-add-window > strong { color: var(--ink); }
@media (max-width: 760px) {
  .matchup-category-panel { display: flex; flex-direction: column; }
  .matchup-category-panel > .matchup-table-controls { order: 0; min-height: 40px; margin: 0; padding: 4px 8px; }
  .matchup-category-panel > .matchup-hero { order: 1; background: var(--panel); }
  .matchup-category-panel > .matchup-overview { order: 2; }
  .matchup-table-controls > :is(.matchup-stat-source,.lineup-toolbar) { margin-left: auto; }
  .matchup-main[data-matchup-panel="days"] .matchup-hero { display: none; }
  .matchup-days-section > :is(h3,.lineup-detail-controls) { display: none; }
  .matchup-streaming-row { display: flex; align-items: center; justify-content: space-between; padding-inline: 8px; min-height: 36px; background: var(--panel); }
  .matchup-legend { display: flex; align-items: center; gap: 8px; }
  .matchup-legend > button { margin-left: auto; }
  .lineup-caption { display: flex; align-items: center; gap: 8px; margin-block: 4px; }
  .lineup-caption > .lineup-help { margin-left: auto; width: 24px; min-width: 24px; height: 24px; min-height: 24px; padding: 0; }
}

/* UI review batch 5: waiver comparison and compact trade steps. */
.waiver-comparison-summary { margin: 0 0 6px; font-size: 12px; color: var(--muted); }
.comparison-adds { color: var(--green); }
.comparison-drops { color: var(--red); }
.compare-after-value { font-weight: 700; }
.compare-after-value .change-good { color: var(--green); }
.compare-after-value .change-bad { color: var(--red); }
.waiver-comparison > .comparison-timing { padding: 0 12px 10px; margin-bottom: 0; }
.trade-view-row { display: flex; align-items: center; }
.trade-roster-warning.connection-warning { margin: 0; min-height: 28px; padding: 6px 8px; border: 0; border-radius: 0; background: var(--red-soft); color: var(--red); font-size: 12px; line-height: 16px; }
@media (max-width: 760px) {
  .waiver-result-panel .waiver-comparison { margin-top: 0; padding: 0; border: 0; border-radius: 0; background: transparent; }
  .waiver-result-panel > .connection-warning, .trade-pick-panel > .connection-warning { margin-inline: 8px; }
  .waiver-comparison-summary { padding-inline: 8px; }
  .waiver-comparison > .lw-compare-cards { margin: 0 8px 8px; }
  .waiver-comparison > .table-shell { border-inline: 0; border-radius: 0; }
  .waiver-comparison table { width: 100%; }
  .waiver-comparison :is(th,td):first-child { padding-left: 8px; }
  .waiver-comparison :is(th,td):last-child { text-align: center; }
  .waiver-comparison .compare-after-value small { display: inline; margin-left: 3px; }
  .trade-view-row { height: 40px; padding: 4px 8px; gap: 4px; }
  .trade-view-row > .trade-view-tabs { margin: 0; flex: 0 0 auto; }
  .trade-view-row > .trade-steps { margin: 0 0 0 auto; padding: 0; gap: 0; }
  .trade-view-row .lw-step { gap: 3px; }
  .trade-view-row .lw-step + .lw-step::before { padding-inline: 4px; }
  .trade-workspace .trade-controls { height: 40px; min-height: 40px; margin: 0; padding: 4px 8px; overflow: visible; gap: 4px; }
  .trade-controls > .lw-chip-select { min-width: 0; max-width: 150px; flex-shrink: 1; text-overflow: ellipsis; }
  .trade-controls > .trade-side-tabs { margin-left: auto; flex: 0 0 auto; }
  .trade-side-tabs > button { padding-inline: 7px; }
  .trade-pick-columns { margin-bottom: 0; }
  .trade-pick-bar > .trade-clear { height: 44px; min-height: 44px; padding: 0 16px; border-radius: 10px; font-size: 14px; }
}

.league-adds-hint { color: var(--muted); font-size: 12px; white-space: nowrap; }
@media (min-width: 761px) { .league-adds-timing { display: none; } }
@media (max-width: 760px) { .league-adds-hint { height: 28px; line-height: 28px; padding-inline: 8px; } }


/* Approved definition callout (War Room component rule 12, 2026-11-03). */
.lw-definition-callout { display: flex; align-items: center; gap: 4px; margin: 8px; padding: 4px 0 4px 10px; border-left: 3px solid var(--orange); border-radius: 0 7px 7px 0; background: var(--orange-soft); color: var(--ink); font-size: 13px; }
.lw-definition-copy { flex: 1; min-width: 0; margin: 0; line-height: 18px; }
.lw-definition-dismiss { flex: 0 0 28px; width: 28px; min-width: 28px; height: 28px; min-height: 28px; padding: 0; color: var(--muted); }
.definition-copy-phone { display: none; }
@media (max-width: 760px) {
  .lw-definition-callout { font-size: 12px; }
  .lw-definition-dismiss { flex-basis: 44px; width: 44px; min-width: 44px; height: 44px; min-height: 44px; }
  .definition-copy-full { display: none; }
  .definition-copy-phone { display: inline; }
  .trade-market-table [data-column="tradeAction"] { min-width: 70px; }
}


/* My leagues Team: roster and the supplied league-playoff schedule. */
.roster-view-row { margin-block: 4px 8px; }
.roster-playoff-window { text-align: right; margin: 4px 0 12px; }
.roster-playoff-summary { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; padding: 12px; margin-bottom: 8px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); color: var(--muted); font-size: 12px; }
.roster-playoff-summary strong { color: var(--ink); }
.roster-playoff-games > strong { font-size: 20px; }
.roster-playoff-placement > strong { font-size: 16px; }
.roster-playoff-weekly { display: flex; flex-wrap: wrap; gap: 12px; }
.roster-playoff-table .roster-playoff-total { font-weight: 700; }
.roster-playoff-table .roster-playoff-inactive { opacity: .5; }
.roster-playoff-caption { margin-block: 6px; }
@media (max-width: 760px) {
  .roster-view-row { padding-inline: 8px; }
  .roster-playoff-window { margin-inline: 8px; }
  .roster-playoff-summary { margin-inline: 8px; }
  .roster-playoff-weekly { flex-basis: 100%; }
}


/* Trade Build: league-wide inline search and selected-player statistics. */
.trade-search-panel { min-width: 0; margin-block: 8px; padding: 12px; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); }
.trade-search-panel > h3 { margin: 0 0 8px; font-size: 13px; }
.trade-search-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.trade-search-controls > .lw-inline-search { flex: 1 1 180px; min-width: 0; }
.trade-search-controls > select { max-width: 150px; }
.trade-search-results { margin-block: 8px; }
.trade-search-result { display: flex; align-items: center; gap: 8px; min-height: 44px; padding-block: 6px; border-top: 1px solid var(--line); }
.trade-search-identity { flex: 1; min-width: 0; }
.trade-search-meta { display: block; color: var(--muted); font-size: 11px; }
.trade-search-action { flex: 0 0 auto; min-height: 24px; height: 24px; padding: 0 10px; border-radius: 999px; font-size: 12px; }
.trade-search-caption, .trade-search-empty { margin: 4px 0 0; }
.trade-search-empty { padding-block: 8px; }
.trade-selected-player { padding: 0 8px 8px; }
.trade-selected-label { margin: 4px 0 8px; }
.trade-selected-card { padding: 12px; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); }
.trade-selected-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.trade-selected-identity { flex: 1 1 140px; min-width: 0; }
.trade-selected-name { min-height: 28px; height: auto; max-width: 100%; padding: 0; font-size: 13px; font-weight: 700; white-space: normal; text-align: left; }
.trade-selected-meta { margin-left: 4px; color: var(--muted); font-size: 11px; }
.trade-selected-stats { --trade-category-count: 9; display: grid; grid-template-columns: repeat(var(--trade-category-count,9),minmax(32px,1fr)); gap: 3px; margin: 0 0 8px; overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; }
.trade-selected-stats > div { min-width: 0; padding: 4px 1px; border-radius: 5px; background: var(--canvas); text-align: center; font-variant-numeric: tabular-nums; }
.trade-selected-stats dt { color: var(--muted); font-size: 11px; }
.trade-selected-stats dd { margin: 2px 0 0; font-size: 12px; font-weight: 700; }
.trade-selected-footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 8px; font-size: 11px; }
@media (min-width: 761px) { .trade-workspace .trade-search-panel { grid-column: 1; grid-row: 3; margin: 0; } }
@media (max-width: 760px) {
  .trade-search-panel { margin: 0 8px 8px; }
  .trade-search-input { font-size: 16px; }
  .trade-search-action { min-height: 44px; height: 44px; }
  .trade-search-panel > .trade-search-caption { white-space: normal; }
  .trade-selected-player { padding: 8px; }
  .trade-selected-name { min-height: 44px; }
}

/* Search results identify players in full; the roster tables retain short phone names. */
.trade-search-identity .player-full-name { display: inline; position: static; width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal; }
.trade-search-identity .player-short-name { display: none; }


/* Rule-12 move grades and category impact; letters are supplied by the service. */
.move-grade { display: inline-flex; flex: 0 0 60px; width: 60px; height: 60px; align-items: center; justify-content: center; border-radius: 15px; color: var(--on-grade); font-size: 24px; font-weight: 700; }
.move-grade-great { background: var(--grade-great); }
.move-grade-good { background: var(--grade-good); }
.move-grade-even { background: var(--grade-even); }
.move-grade-poor { background: var(--grade-poor); }
.move-grade-bad { background: var(--grade-bad); }
.move-grade-compact { flex-basis: 28px; width: 28px; height: 28px; border-radius: 5px; font-size: 14px; }
.trade-grade-summary, .trade-impact-card, .trade-result-players { min-width: 0; margin-bottom: 10px; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.trade-grade-headline { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.trade-grade-headline > div { flex: 1 1 140px; min-width: 0; }
.trade-grade-headline h3 { margin: 0 0 4px; font-size: 20px; }
.trade-grade-headline p { margin: 0; font-size: 13px; color: var(--muted); }
.trade-grade-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.trade-grade-chips > :is(.trade-impact-good,.trade-impact-bad) { padding: 4px 8px; border-radius: 999px; font-size: 11px; font-weight: 700; }
.trade-impact-good { background: var(--green-soft); color: var(--green); }
.trade-impact-bad { background: var(--red-soft); color: var(--red); }
.trade-peer-grade { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; }
.trade-result-section-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.trade-result-section-header h3 { margin: 0; font-size: 13px; }
.trade-impact-row { display: grid; grid-template-columns: 38px minmax(12px,1fr) 90px minmax(32px,max-content); align-items: center; gap: 6px; min-height: 30px; font-size: 12px; }
.trade-impact-track { position: relative; display: block; height: 12px; border-radius: 6px; background: var(--canvas); overflow: hidden; }
.trade-impact-track::before { position: absolute; content: ""; height: 100%; left: 50%; border-left: 1px solid var(--line-strong); }
.trade-impact-fill { position: absolute; display: block; height: 100%; border-radius: 6px; }
.trade-impact-fill.is-good { left: 50%; background: var(--green-bright); }
.trade-impact-fill.is-bad { right: 50%; background: var(--red); }
.trade-impact-fill.is-even { display: none; }
.trade-impact-values, .trade-impact-change { text-align: right; font-variant-numeric: tabular-nums; color: var(--muted); }
.trade-impact-change.is-good { color: var(--green); }
.trade-impact-change.is-bad { color: var(--red); }
.trade-impact-caption { margin: 8px 0 0; font-size: 12px; }
.trade-result-player-shell { min-width: 0; max-width: 100%; }
.trade-result-player-table .player-name-cell { min-width: 160px; }
.trade-player-direction { display: inline-flex; padding: 2px 4px; border-radius: 4px; font-size: 11px; font-weight: 700; }
.trade-player-direction.is-give { background: var(--red-soft); color: var(--red); }
.trade-player-direction.is-get { background: var(--green-soft); color: var(--green); }
.trade-playoff-edge { margin: 8px 0 0; padding: 8px; border-radius: 6px; background: var(--canvas); font-size: 12px; }
.trade-playoff-edge.is-good { background: var(--green-soft); }
.trade-playoff-edge.is-bad { background: var(--red-soft); }
@media (max-width: 760px) {
  .trade-grade-summary, .trade-impact-card, .trade-result-players { margin-inline: 8px; }
}

.trade-playoff-edge-copy { margin: 0; }
.trade-playoff-edge-window { display: block; margin-top: 4px; font-size: 11px; }

/* Resume remains a link visually when opening needs a sign-in handoff. */
button.session-link { border: 0; padding: 0; background: transparent; color: var(--blue); }
@media (max-width: 760px) {
  .session-link { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; }
}

/* Compare reuses the supplied move-grade and category-impact components. */
.waiver-grade-summary, .waiver-impact-card { margin-inline: 0; }
.waiver-grade-summary .waiver-move-score { margin-top: 4px; }
.waiver-impact-neutral { padding: 4px 8px; border-radius: 999px; background: var(--canvas); color: var(--muted); font-size: 11px; font-weight: 700; }
.waiver-games-label { margin: 12px 0 4px; padding: 0; }
.waiver-games-days { display: flex; flex-wrap: wrap; gap: 6px; }
.waiver-game-day { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 40px; padding: 6px; background: var(--canvas); border-radius: 6px; font-size: 11px; color: var(--muted); }
.waiver-game-day strong { font-size: 13px; }
@media (max-width: 760px) {
  .waiver-grade-summary, .waiver-impact-card { margin-inline: 8px; }
  .waiver-impact-card .trade-result-section-header h3 { font-size: 12px; }
}
.waiver-game-day .change-good { color: var(--green); }
.waiver-game-day .change-bad { color: var(--red); }

table.roster-playoff-table [data-column="playoffGrade"] { width: 56px; min-width: 56px; max-width: 56px; text-align: right; }
.league-roster-heading { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 8px 0; }
.league-roster-heading h3 { margin: 0; font-size: 15px; }
@media (max-width: 760px) {
  .league-roster-heading { margin-inline: 8px; }
}


/* League sigma is supplied already signed, including TO. Only the fill is clamped. */
.category-rank-table .league-own-row > :is(th,td) { background: var(--panel); color: var(--ink); font-weight: 400; }
.category-rank-table .league-own-row > :first-child { box-shadow: inset 3px 0 var(--orange), 1px 0 var(--line); }
.category-rank-table .league-own-row .league-team-name { color: var(--ink); }
.category-rank-number { display: block; font-weight: 400; }
.category-sigma { display: block; font-size: 10px; font-weight: 700; line-height: 12px; }
.category-sigma-strong .category-rank-value { font-weight: 700; }
.category-sigma-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 6px 8px; }
.category-sigma-scale { display: inline-block; flex: 0 1 200px; width: 200px; height: 10px; border-radius: 6px; background: linear-gradient(90deg,var(--red-soft),var(--panel),var(--green-soft)); }
.category-sigma-definition { white-space: nowrap; }
@media (max-width: 760px) {
  .category-sigma-legend { column-gap: 6px; }
  .category-sigma-scale { flex-basis: 120px; width: 120px; }
  .category-sigma-definition { flex-basis: 100%; }
  .category-rank-table :is(th,td)[data-column] { min-width: 44px; }
}

/* Suggested moves stay in service order and open the existing review flows. */
.move-grade-suggestion { flex-basis: 40px; width: 40px; height: 40px; border-radius: 10px; font-size: 16px; }
.suggestions-new-dot { display: inline-block; width: 6px; height: 6px; margin-left: 4px; border-radius: 50%; background: var(--orange); }
.waiver-view-row { flex-wrap: wrap; overflow-x: visible; margin-block: 4px 8px; }
.suggestions-week { margin-left: auto; }
.suggestions-heading { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin: 8px 0; }
.suggestions-heading h3 { margin: 0; font-size: 13px; }
.suggestions-refresh { min-height: 28px; }
.suggestions-definition { margin-bottom: 10px; }
.suggestions-list { display: grid; gap: 8px; }
.suggestion-card { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: start; gap: 12px; width: 100%; min-height: 44px; padding: 12px; text-align: left; color: var(--ink); background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); }
.suggestion-body { display: grid; min-width: 0; gap: 7px; }
.suggestion-move { font-size: 13px; font-weight: 700; }
.suggestion-reason { font-size: 12px; font-weight: 400; color: var(--muted); overflow-wrap: anywhere; }
.suggestion-outlook { font-size: 12px; font-weight: 700; }
.suggestion-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.suggestion-chips > span { padding: 3px 6px; border-radius: 5px; font-size: 11px; font-weight: 700; }
.suggestion-partner-grade { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 400; color: var(--muted); }
@media (max-width: 760px) {
  .waiver-view-row, .suggestions-heading { margin-inline: 8px; }
  .suggestions-list, .suggestions-definition { margin-inline: 8px; }
  .suggestions-heading > button { min-height: 44px; }
  .trade-view-row { flex-wrap: wrap; height: auto; min-height: 40px; }
}
@media (hover: hover) and (pointer: fine) {
  .suggestion-card:hover { background: var(--panel); border-color: var(--line-strong); }
}

.trade-search-name-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px; }
.trade-search-player-meta { font-size: 11px; font-weight: 400; color: var(--muted); }

@media (min-width: 761px) {
  .trade-result-player-table { width: 100%; min-width: 100%; table-layout: fixed; }
  .trade-result-player-table :is(th,td) { padding-inline: 1px; }
  .trade-result-player-table thead th { font-size: 11px; white-space: normal; height: 26px; }
  .trade-result-player-table .player-name-cell { width: 150px; min-width: 150px; max-width: 150px; white-space: nowrap; padding-inline: 3px; }
  .trade-result-player-table .lw-name-line { display: flex; flex-wrap: nowrap; min-width: 0; gap: 4px; }
  .trade-result-player-table .trade-player-direction { flex: 0 0 auto; }
  .trade-result-player-table .player-link { display: block; min-width: 0; flex: 1 1 auto; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .trade-player-table-label { margin: 8px 0 4px; }
}

/* Recommendation v2 uses the existing cards and service-supplied dated steps. */
.suggestion-timing, .suggestion-step-games, .suggestion-roster-issue { font-size: 12px; font-weight: 400; }
.suggestion-plan-steps { display: grid; gap: 8px; margin: 0; padding-left: 20px; }
.suggestion-plan-step { display: list-item; padding-block: 8px; border-top: 1px solid var(--line); }
.suggestion-plan-step > :is(span,strong) { display: block; margin-block: 4px; }
.suggestion-plan-step > .suggestion-chips { display: flex; }
.suggestion-season { display: grid; gap: 4px; }
.suggestion-week-compare { justify-self: start; min-height: 44px; }
.comparison-move-timing { display: block; margin: 4px 0; font-size: 12px; font-weight: 400; }

.suggestion-reason { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* November 7 oversight: one phone Board row, explicit filter sheet and native targets. */
.matchup-score-range { white-space: nowrap; overflow-wrap: normal; }
.league-punt-sheet-hint { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-block: 12px; }
.league-punt-sheet-hint p { margin: 0; }
.trade-filter-count { display: inline-grid; place-items: center; min-width: 16px; height: 16px; margin-left: 4px; border-radius: 999px; background: var(--ink); color: var(--panel); font-size: 11px; }
.trade-board-filter-sheet > .primary { width: 100%; min-height: 44px; margin-top: 16px; }
.trade-board-filter-sheet .trade-board-filters { display: grid; gap: 12px; margin-block: 16px; }
.trade-board-filter-sheet .trade-board-filters > select { max-width: 100%; width: 100%; min-height: 44px; font-size: 16px; }
.trade-board-filter-sheet .trade-board-punts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
@media (max-width: 760px) {
  .trade-board-toolbar, .trade-board-toolbar .lw-control-row { flex-wrap: nowrap; }
  .trade-board-toolbar { overflow-x: auto; min-height: 44px; touch-action: pan-x pan-y; mask-image: linear-gradient(to right, black calc(100% - 20px), transparent); }
  .trade-board-toolbar > *, .trade-board-toolbar .lw-segment { flex: none; }
  .trade-board-toolbar .trade-board-desktop-basis { display: none; }
  .trade-board-phone-basis.lw-chip-select { width: 116px; max-width: 116px; }
  button.league-clear-punts.lw-chip { min-width: 44px; min-height: 44px; height: 44px; padding: 0; }
}

/* Sheet actions keep full tap targets, including nested punt controls. */
.trade-board-filter-sheet button.lw-chip,
.league-punt-sheet button.lw-chip { min-width: 44px; min-height: 44px; height: auto; }

/* Supplied punt values remain secondary to the normal value and grade. */
.normal-punt-value { white-space: nowrap; }
.punt-value { font-size: 11px; font-weight: 400; color: var(--muted); }
.league-team-rank:has(.punt-value) { flex-basis: auto; }
.category-rank-table .league-team-label:has(.punt-value) { grid-template-columns: auto minmax(0,1fr); }
.trade-selected-upside { margin: 8px 0; font-size: 13px; }
.trade-punt-grade { margin-inline-start: 4px; display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 400; color: var(--muted); }
.trade-punt-outlook { color: var(--muted); }
.suggestions-loading-label { display: block; margin-bottom: 12px; font-size: 13px; }

/* Explicit Trade Board actions: each44px target has its own row space. */
.trade-market-table.player-table tbody :is(th,td) { height: 44px; }
.trade-market-table.player-table .player-name-cell { width: 220px; min-width: 220px; }
.market-player-line { display: flex; align-items: center; gap: 4px; }
.market-player-line .market-player-name { position: relative; flex: 1; min-width: 0; }
.trade-market-table .player-name-cell .market-trade-pick { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--faint); }
.market-trade-pick-mark { display: grid; place-items: center; width: 22px; height: 22px; border: 1px solid var(--line-strong); border-radius: 50%; font-size: 15px; font-weight: 700; line-height: 20px; }
.market-trade-pick[aria-pressed="true"] .market-trade-pick-mark { color: var(--on-grade); background: var(--orange); border-color: var(--orange); }
.trade-market-table .market-player-name .player-link { display: flex; align-items: center; width: 100%; max-width: 100%; min-width: 0; height: 44px; min-height: 44px; padding: 0; text-align: left; }
.trade-market-table .player-link :is(.player-full-name,.player-short-name) { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 760px) {
  .trade-market-table.player-table .player-name-cell { width: 180px; min-width: 180px; max-width: 180px; }
  .trade-market-table .market-player-name .player-link { padding-bottom: 12px; }
  .market-player-line .market-name-meta { position: absolute; left: 0; bottom: 4px; width: 100%; pointer-events: none; }
}
