:root {
  --field: #1E4D36;
  --field-deep: #163A29;
  --field-line: #2F6449;
  --chalk: #F2F4EE;
  --paper: #E8EDE7;
  --card: #F7F9F5;
  --ink: #1B2A33;
  --ink-soft: #52626A;
  --rule: #C3CDC4;
  --mustard: #E3B23C;
  --brick: #A23B2A;
  --display: "Barlow Condensed", "Arial Narrow", "Roboto Condensed", sans-serif;
  --body: "Barlow", "Segoe UI", system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { font-family: var(--body); font-size: 15px; line-height: 1.45; color: var(--ink); background: var(--paper); }
button, input, select { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--mustard); outline-offset: 2px; }
h1, h2, h3 { font-family: var(--display); font-weight: 600; line-height: 1.1; margin: 0; }
h2 { font-size: 1.45rem; }
h3 { font-size: 1.15rem; }
.muted { color: var(--ink-soft); }
.num { font-variant-numeric: tabular-nums; }
.hidden { display: none !important; }

/* top bar */
.topbar { background: var(--field); color: var(--chalk); display: flex; align-items: center; gap: 24px; padding: 10px 20px; flex-wrap: wrap; }
.topbar h1 { font-size: 1.6rem; letter-spacing: .01em; }
.topbar h1 small { font-family: var(--body); font-size: .85rem; font-weight: 400; opacity: .75; margin-left: 10px; }
.tabs { display: flex; gap: 4px; margin-left: auto; flex-wrap: wrap; }
.tabs button, .tabs a { background: none; border: 0; color: var(--chalk); padding: 6px 12px; border-radius: 4px; cursor: pointer; text-decoration: none; font-family: var(--display); font-size: 1.1rem; }
.tabs button[aria-current="page"], .tabs a[aria-current="page"] { background: var(--chalk); color: var(--field); }
.tabs a { border: 1px solid var(--field-line); }

main { padding: 18px 20px 40px; max-width: 1600px; margin: 0 auto; }
.panel { background: var(--card); border: 1px solid var(--rule); border-radius: 6px; padding: 14px; }
.stack > * + * { margin-top: 12px; }
.row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 16px; align-items: start; }

input[type=text], input[type=number], input[type=password], input[type=search], select {
  border: 1px solid var(--rule); background: #fff; border-radius: 4px; padding: 6px 8px; min-width: 0;
}
input[type=number] { width: 80px; }
.btn { border: 1px solid var(--ink); background: var(--card); border-radius: 4px; padding: 6px 14px; cursor: pointer; font-weight: 500; }
.btn:hover { background: #fff; }
.btn.primary { background: var(--field); color: var(--chalk); border-color: var(--field); }
.btn.primary:hover { background: var(--field-deep); }
.btn.warn { border-color: var(--brick); color: var(--brick); }
.btn.big { font-family: var(--display); font-size: 1.35rem; padding: 8px 22px; }
.btn:disabled { opacity: .45; cursor: not-allowed; }
label.field { display: grid; gap: 3px; font-size: .85rem; color: var(--ink-soft); }
label.field > * { color: var(--ink); font-size: .95rem; }

table { border-collapse: collapse; width: 100%; }
th, td { text-align: left; padding: 5px 8px; border-bottom: 1px solid var(--rule); vertical-align: middle; }
th { font-weight: 600; font-size: .85rem; color: var(--ink-soft); white-space: nowrap; }
th.sortable { cursor: pointer; }
th.sorted { color: var(--ink); text-decoration: underline; }
td.r, th.r { text-align: right; }
.scroll { overflow: auto; }

/* toast */
#toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); background: var(--ink); color: #fff; padding: 10px 18px; border-radius: 6px; max-width: 90vw; z-index: 50; }
#toast.err { background: var(--brick); }

/* ---------- auction console ---------- */
.auction { display: grid; grid-template-columns: 320px minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
@media (max-width: 1150px) { .auction { grid-template-columns: 1fr; } }
.onclock { background: var(--mustard); color: var(--ink); border-radius: 4px; padding: 8px 10px; font-family: var(--display); font-size: 1.25rem; }
.onclock small { font-family: var(--body); font-size: .8rem; display: block; }
.results { list-style: none; margin: 8px 0 0; padding: 0; max-height: 62vh; overflow: auto; }
.results li { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; padding: 6px 6px; border-bottom: 1px solid var(--rule); cursor: pointer; }
.results li:hover, .results li[aria-selected="true"] { background: #fff; }
.results .meta { font-size: .8rem; color: var(--ink-soft); }
.results .mine { font-family: var(--display); font-size: 1.1rem; text-align: right; }
.tag-target { color: var(--field); }
.tag-avoid { color: var(--brick); text-decoration: line-through; }

.block { background: var(--field); color: var(--chalk); border-radius: 8px; padding: 20px 22px; min-height: 420px; }
.block .player { font-family: var(--display); font-size: clamp(2rem, 3.4vw, 3.2rem); font-weight: 700; line-height: 1; }
.block .sub { opacity: .8; margin-top: 4px; }
.scoreline { display: flex; align-items: flex-end; gap: 28px; margin: 18px 0 8px; flex-wrap: wrap; }
.bigbid { font-family: var(--display); font-weight: 700; font-size: clamp(4rem, 8vw, 7rem); line-height: .85; color: var(--mustard); font-variant-numeric: tabular-nums; }
.scoreline .who { font-family: var(--display); font-size: 1.6rem; }
.scoreline .who small { display: block; font-family: var(--body); font-size: .8rem; opacity: .75; }
.seats { list-style: none; padding: 0; margin: 16px 0; display: flex; flex-wrap: wrap; gap: 6px; }
.seats li { border: 1px solid var(--field-line); border-radius: 4px; padding: 4px 9px; font-size: .9rem; background: var(--field-deep); }
.seats .turn { background: var(--mustard); color: var(--ink); border-color: var(--mustard); font-weight: 600; }
.seats .high { border-color: var(--chalk); box-shadow: inset 0 0 0 1px var(--chalk); }
.seats .passed, .seats .out { opacity: .4; text-decoration: line-through; }
.seats .max { font-size: .75rem; opacity: .8; margin-left: 4px; }
.controls { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; background: var(--field-deep); padding: 12px; border-radius: 6px; }
.controls input[type=number] { width: 96px; font-family: var(--display); font-size: 1.5rem; padding: 4px 8px; border: 0; }
.controls .btn { border-color: var(--chalk); color: var(--chalk); background: transparent; }
.controls .btn.primary { background: var(--mustard); color: var(--ink); border-color: var(--mustard); }
.controls .btn.warn { border-color: #E9A193; color: #F5C7BE; }
.controls .label { font-family: var(--display); font-size: 1.3rem; margin-right: 6px; }
.secondary { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.secondary .btn { background: transparent; color: var(--chalk); border-color: var(--field-line); font-size: .9rem; }
.prepnote { margin-top: 14px; border-top: 1px dashed var(--field-line); padding-top: 10px; font-size: .9rem; }
.chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.chip { font-size: .78rem; border: 1px solid currentColor; border-radius: 3px; padding: 0 5px; opacity: .9; }
.kbd { font-size: .78rem; opacity: .7; margin-top: 10px; }

.teamtable td, .teamtable th { padding: 4px 6px; }
.teamtable tr.me td { font-weight: 600; }
.teamtable tr.nominator td:first-child { box-shadow: inset 4px 0 0 var(--mustard); }
.teamtable tr.highbidder td { background: #fff; }
.log { margin-top: 16px; font-size: .88rem; columns: 2 340px; }
.log div { break-inside: avoid; padding: 2px 0; }

/* prep */
.planbar { height: 8px; background: var(--rule); border-radius: 4px; overflow: hidden; }
.planbar span { display: block; height: 100%; background: var(--field); }
.playertable td input[type=number] { width: 64px; }
.playertable td input[type=text] { width: 100%; min-width: 120px; }
.playertable tr.taken td { color: var(--ink-soft); }
.star { background: none; border: 0; cursor: pointer; font-size: 1.1rem; padding: 0 4px; }
.picker { position: relative; }
.picker ul { position: absolute; z-index: 20; left: 0; right: 0; top: 100%; background: #fff; border: 1px solid var(--rule); list-style: none; margin: 2px 0 0; padding: 0; max-height: 260px; overflow: auto; }
.picker li { padding: 5px 8px; cursor: pointer; }
.picker li:hover, .picker li.active { background: var(--paper); }
.teamorder li { display: grid; grid-template-columns: 24px auto 1fr 70px auto; gap: 8px; align-items: center; padding: 4px 0; }
.teamorder { list-style: none; padding: 0; margin: 0; }

/* ---------- TV board ---------- */
body.board { background: var(--field-deep); color: var(--chalk); min-height: 100vh; }
.boardtop { background: var(--field); padding: 18px 28px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: center; border-bottom: 4px solid var(--field-line); }
.boardtop .player { font-family: var(--display); font-weight: 700; font-size: clamp(2.4rem, 5vw, 4.6rem); line-height: 1; }
.boardtop .bigbid { font-size: clamp(5rem, 11vw, 10rem); text-align: right; }
.boardtop .status { font-family: var(--display); font-size: 1.6rem; margin-top: 8px; }
.boardtop .status b { background: var(--mustard); color: var(--ink); padding: 0 8px; border-radius: 3px; font-weight: 600; }
.boardgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; padding: 16px 20px; }
.teamcard { border: 1px solid var(--field-line); border-radius: 6px; background: var(--field); padding: 10px 12px; }
.teamcard.turn { border-color: var(--mustard); box-shadow: 0 0 0 2px var(--mustard); }
.teamcard h3 { font-size: 1.35rem; }
.teamcard .money { display: flex; gap: 18px; align-items: flex-end; margin: 4px 0 8px; }
.teamcard .money span { display: grid; line-height: 1.05; }
.teamcard .money b, .teamcard .money i { font-family: var(--display); font-style: normal; font-size: 1.3rem; font-weight: 600; }
.teamcard .money b { font-size: 1.8rem; color: var(--mustard); }
.teamcard .money small { font-size: .72rem; opacity: .7; }
.teamcard ol { list-style: none; margin: 0; padding: 0; font-size: .85rem; }
.teamcard li { display: grid; grid-template-columns: 34px 1fr auto; gap: 6px; border-top: 1px solid var(--field-line); padding: 2px 0; }
.teamcard li .k { opacity: .6; }
.ticker { padding: 8px 24px 20px; font-size: 1rem; opacity: .85; }
@media (prefers-reduced-motion: no-preference) {
  .flash { animation: flash .9s ease-out; }
  @keyframes flash { from { color: var(--chalk); transform: scale(1.06); } to { transform: none; } }
}

.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #3FB971; margin-right: 6px; vertical-align: middle; }

/* ---------- owner phone view ---------- */
body.teamview { background: var(--paper); }
.tv-head { background: var(--field); color: var(--chalk); padding: 12px 16px 10px; position: sticky; top: 0; z-index: 5; }
.tv-head h1 { font-size: 1.5rem; }
.tv-stats { display: flex; gap: 20px; margin-top: 4px; }
.tv-stats span { display: grid; line-height: 1.05; }
.tv-stats b { font-family: var(--display); font-size: 1.5rem; font-weight: 600; }
.tv-stats b.gold { color: var(--mustard); }
.tv-stats small { font-size: .72rem; opacity: .75; }
.tv-main { padding: 12px; max-width: 560px; margin: 0 auto; }
.tv-block { background: var(--field-deep); color: var(--chalk); border-radius: 8px; padding: 16px; }
.tv-block .player { font-family: var(--display); font-weight: 700; font-size: 2.1rem; line-height: 1; }
.tv-block .sub { opacity: .8; font-size: .9rem; margin-top: 2px; }
.tv-block .bigbid { font-size: 4.5rem; margin-top: 10px; }
.tv-block .who { font-size: 1rem; margin-top: 4px; }
.turnline { margin-top: 12px; font-family: var(--display); font-size: 1.35rem; padding: 6px 10px; border-radius: 4px; background: var(--field); }
.turnline.mine { background: var(--mustard); color: var(--ink); }
.tv-act { margin-top: 12px; background: var(--card); border: 1px solid var(--rule); border-radius: 8px; padding: 14px; }
.stepper { display: grid; grid-template-columns: 56px 1fr 56px; gap: 8px; align-items: stretch; }
.stepper button { font-size: 1.8rem; border: 1px solid var(--ink); background: #fff; border-radius: 6px; cursor: pointer; }
.stepper input { width: 100%; text-align: center; font-family: var(--display); font-size: 2.2rem; border: 1px solid var(--rule); border-radius: 6px; padding: 4px; }
.quickrow { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 8px; }
.quickrow button { padding: 10px 0; border: 1px solid var(--rule); background: #fff; border-radius: 6px; font-weight: 600; cursor: pointer; }
.bigbtns { display: grid; grid-template-columns: 2fr 1fr; gap: 8px; margin-top: 12px; }
.bigbtns button { font-family: var(--display); font-size: 1.6rem; padding: 14px 0; border-radius: 6px; cursor: pointer; border: 0; }
.bigbtns .bid { background: var(--field); color: var(--chalk); }
.bigbtns .pass { background: transparent; border: 2px solid var(--brick); color: var(--brick); }
.tv-act .hint { font-size: .85rem; color: var(--ink-soft); margin-top: 8px; }
.tv-act input[type=search] { width: 100%; font-size: 1.05rem; padding: 10px; }
.tv-list { list-style: none; margin: 8px 0 0; padding: 0; max-height: 45vh; overflow: auto; }
.tv-list li { padding: 10px 6px; border-bottom: 1px solid var(--rule); cursor: pointer; display: flex; justify-content: space-between; gap: 8px; }
.tv-list li[aria-selected="true"] { background: var(--paper); font-weight: 600; }
.tv-section { margin-top: 16px; }
.tv-section h2 { font-size: 1.25rem; margin-bottom: 6px; }
.tv-roster { list-style: none; margin: 0; padding: 0; background: var(--card); border: 1px solid var(--rule); border-radius: 8px; }
.tv-roster li { display: grid; grid-template-columns: 40px 1fr auto; gap: 8px; padding: 7px 10px; border-bottom: 1px solid var(--rule); }
.tv-roster li:last-child { border-bottom: 0; }
.tv-login { max-width: 360px; margin: 15vh auto; padding: 20px; }
.tv-err { color: var(--brick); margin-top: 8px; }
@media (prefers-reduced-motion: no-preference) {
  .turnline.mine { animation: pulse 1.6s ease-in-out 2; }
  @keyframes pulse { 50% { filter: brightness(1.15); } }
}
#ownerLinks td.r { white-space: nowrap; }

/* prep */
.subtabs { display: flex; gap: 2px; border-bottom: 2px solid var(--field); margin-bottom: 14px; flex-wrap: wrap; }
.subtabs button { border: 0; background: none; padding: 7px 14px; font-family: var(--display); font-size: 1.15rem; cursor: pointer; color: var(--ink-soft); border-radius: 4px 4px 0 0; }
.subtabs button[aria-current="page"] { background: var(--field); color: var(--chalk); }
.prepgrid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
@media (max-width: 1100px) { .prepgrid { grid-template-columns: 1fr; } }
.nowrap { white-space: nowrap; }
textarea { font: inherit; border: 1px solid var(--rule); border-radius: 4px; padding: 6px 8px; width: 100%; background: #fff; }
.linkish { background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
.linkish:hover { text-decoration: underline; }
.newsdot { display: inline-block; min-width: 18px; margin-left: 6px; padding: 0 5px; border-radius: 9px; background: var(--mustard); color: var(--ink); font-size: .72rem; font-weight: 600; text-align: center; }
.bignum { font-family: var(--display); font-size: 2.6rem; font-weight: 700; color: var(--field); line-height: 1; margin-top: 4px; }
.bignum.down { color: var(--brick); }
table.mini th, table.mini td { padding: 3px 5px; font-size: .88rem; }
.pts { display: block; font-size: .7rem; color: var(--ink-soft); }
tr.me td { font-weight: 600; background: #fff; }
.drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(440px, 100vw); background: var(--card); border-left: 4px solid var(--field); box-shadow: -8px 0 24px rgba(27, 42, 51, .18); padding: 18px; overflow: auto; z-index: 30; }
.drawnums { display: flex; gap: 18px; margin-bottom: 10px; }
.drawnums span { display: grid; line-height: 1.05; }
.drawnums b { font-family: var(--display); font-size: 1.7rem; font-weight: 600; color: var(--field); }
.drawnums small { font-size: .72rem; color: var(--ink-soft); }
.newslist { list-style: none; margin: 0; padding: 0; }
.newslist li { padding: 10px 0; border-bottom: 1px solid var(--rule); }
.newsmeta { font-size: .78rem; color: var(--ink-soft); }
.newstitle { font-weight: 600; margin-top: 2px; }
.newstitle a { color: var(--ink); }
.newssum { font-size: .9rem; color: var(--ink-soft); margin-top: 2px; }
.newslist .chip { color: var(--field); }

/* owner view on a laptop */
.tv-league { background: var(--card); border: 1px solid var(--rule); border-radius: 8px; }
.tv-league table td, .tv-league table th { padding: 6px 10px; }
.tv-league tr.turn td { background: #FFF4D6; font-weight: 600; }
.tv-league tr.mine td { font-weight: 600; }
@media (min-width: 900px) {
  .tv-main { max-width: 1180px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 24px; align-items: start; }
  .tv-main > .tv-left { grid-column: 1; }
  .tv-main > .tv-right { grid-column: 2; }
  .tv-main > .tv-right > .tv-section:first-child { margin-top: 0; }
  .tv-head { position: static; }
  .tv-head .tv-inner { max-width: 1180px; margin: 0 auto; }
}
.playertable td:nth-child(2) { white-space: nowrap; }
#plan { overflow-x: auto; }
#plan input[type=text] { width: 78px !important; }
#plan input[type=number] { width: 46px !important; }

.chip.linkish { border: 1px solid currentColor; padding: 1px 6px; }
#ptab .stack > label:not(.field) { display: block; }
.tv-head .tv-inner { padding: 0 12px; }

.call { display: inline-block; font-size: .78rem; font-weight: 600; padding: 1px 7px; border-radius: 3px; }
.call-keep { background: var(--field); color: var(--chalk); }
.call-bubble { background: var(--mustard); color: var(--ink); }
.call-release { border: 1px solid var(--rule); color: var(--ink-soft); }

/* sign-in pages */
body.authpage { min-height: 100vh; background: var(--paper); }
.authhead { background: var(--field); color: var(--chalk); padding: 28px 20px 64px; text-align: center; }
.authbrand { font-family: var(--display); font-weight: 700; font-size: 2.2rem; line-height: 1; }
.authleague { opacity: .8; margin-top: 6px; min-height: 1.2em; }
.authmain { padding: 0 16px 48px; }
.authcard { max-width: 420px; margin: -40px auto 0; background: var(--card); border: 1px solid var(--rule); border-radius: 10px; padding: 24px; box-shadow: 0 2px 0 var(--rule); }
.authcard h1 { font-size: 1.8rem; }
.authcard input[type=text], .authcard input[type=password] { width: 100%; font-size: 1.05rem; padding: 10px; }
.authcard .btn.big { width: 100%; }
.authalt { border-top: 1px solid var(--rule); margin-top: 20px; padding-top: 16px; }
.authalt p { margin: 0 0 8px; }
.teampick { border: 1px solid var(--rule); border-radius: 6px; padding: 8px 10px; margin: 0; }
.teampick legend { font-size: .85rem; color: var(--ink-soft); padding: 0 4px; }
.teamopt { display: flex; align-items: center; gap: 8px; padding: 7px 2px; border-bottom: 1px solid var(--rule); cursor: pointer; }
.teamopt:last-child { border-bottom: 0; }
.teamopt span { flex: 1; }
.teamopt.taken { color: var(--ink-soft); cursor: default; }
.teamopt small { font-size: .78rem; }
.userbar { font-size: .9rem; opacity: .9; display: flex; gap: 10px; align-items: center; }
.userbar button, .userbar a { background: none; border: 1px solid var(--field-line); color: var(--chalk); border-radius: 4px; padding: 3px 9px; cursor: pointer; font: inherit; text-decoration: none; }

.grid2 > .wide { grid-column: 1 / -1; }
#members .btn { padding: 4px 10px; font-size: .9rem; }

/* owner page: league panel */
.tv-tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; margin-bottom: 10px; background: var(--card); border: 1px solid var(--rule); border-radius: 8px; padding: 4px; }
.tv-tabs button { border: 0; background: none; padding: 9px 4px; border-radius: 6px; font-family: var(--display); font-size: 1.1rem; cursor: pointer; color: var(--ink-soft); }
.tv-tabs button[aria-selected="true"] { background: var(--field); color: var(--chalk); }
.tv-team { background: var(--card); border: 1px solid var(--rule); border-radius: 8px; margin-bottom: 8px; }
.tv-team.turn { border-color: var(--mustard); box-shadow: 0 0 0 2px var(--mustard); }
.tv-team.mine summary .tn { font-weight: 600; }
.tv-team summary { cursor: pointer; padding: 10px 12px; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2px 12px; list-style: none; }
.tv-team summary::-webkit-details-marker { display: none; }
.tv-team summary::before { content: '▸'; color: var(--ink-soft); margin-right: 6px; }
.tv-team[open] summary::before { content: '▾'; }
.tv-team summary .tn { flex: 1; }
.tv-team summary .tstats { font-size: .88rem; color: var(--ink-soft); }
.tv-team summary .tstats b { color: var(--ink); font-family: var(--display); font-size: 1.05rem; }
.tv-team .tv-roster { border: 0; border-top: 1px solid var(--rule); border-radius: 0 0 8px 8px; }
.tag { font-size: .72rem; font-weight: 600; background: var(--mustard); color: var(--ink); border-radius: 3px; padding: 1px 6px; vertical-align: middle; }
.tag.hi { background: var(--field); color: var(--chalk); }
.tv-roster li.fresh { background: #FFF4D6; }
.avbar { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.avbar input[type=search] { width: 100%; font-size: 1rem; padding: 9px; }
#avList { max-height: 60vh; overflow: auto; }
#avList li { align-items: center; }

/* prep: live auction bar + advisor */
.livebar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 16px; background: var(--field); color: var(--chalk); border-radius: 8px; padding: 14px 16px; margin-bottom: 14px; }
@media (max-width: 1000px) { .livebar { grid-template-columns: 1fr; } }
.livebar.mine { box-shadow: 0 0 0 3px var(--mustard); }
.livebar .muted { color: var(--chalk); opacity: .75; }
.livebar .linkish { color: var(--chalk); }
.livebar h3 { font-size: 1.15rem; margin: 0; }
.lb-kicker { font-size: .9rem; opacity: .9; }
.lb-player { font-family: var(--display); font-size: 1.9rem; font-weight: 700; line-height: 1.1; margin: 2px 0 6px; }
.lb-player .muted { font-family: var(--body); font-size: .9rem; font-weight: 400; }
.lb-nums { display: flex; flex-wrap: wrap; gap: 6px 20px; margin: 6px 0; }
.lb-nums span { display: grid; line-height: 1.05; }
.lb-nums b { font-family: var(--display); font-size: 1.6rem; font-weight: 600; color: var(--mustard); }
.lb-nums small { font-size: .72rem; opacity: .75; }
.lb-call { margin: 6px 0 0; font-size: .92rem; }
.lb-adv { background: var(--field-deep); border-radius: 6px; padding: 10px 12px; }
.advlist { list-style: none; margin: 8px 0; padding: 0; }
.advlist li { padding: 6px 0; border-top: 1px solid var(--field-line); }
.advlist .why { font-size: .82rem; opacity: .8; margin-top: 2px; }
.mode { display: inline-block; font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; border-radius: 3px; padding: 1px 6px; margin-right: 4px; vertical-align: middle; }
.mode-buy { background: var(--mustard); color: var(--ink); }
.mode-drain { background: #E9A193; color: var(--ink); }
.btn.mini { padding: 1px 8px; font-size: .8rem; margin-left: 6px; background: var(--chalk); color: var(--ink); border-color: var(--chalk); }
.livebar .btn.primary { background: var(--mustard); color: var(--ink); border-color: var(--mustard); }
.aibox { margin-top: 10px; border-top: 1px solid var(--field-line); padding-top: 8px; font-size: .92rem; }
.aibox.stale { opacity: .6; }
.leaguegrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.lgteam.me { box-shadow: inset 4px 0 0 var(--field); }
.lgteam.turn { border-color: var(--mustard); box-shadow: 0 0 0 2px var(--mustard); }
.lgnums { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: .9rem; margin-top: 4px; }
.lgnums b { font-family: var(--display); font-size: 1.15rem; }

.copymodal { position: fixed; inset: 0; background: rgba(27, 42, 51, .45); display: grid; place-items: center; z-index: 60; padding: 16px; }
.copymodal .panel { width: min(640px, 100%); }
.copymodal textarea { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .8rem; }
.livebar a.btn.mini { text-decoration: none; }

/* league home page (/league, and / on the league's own domain) */
body.leaguepage { background: var(--paper); }
.lghero { background: var(--field); color: var(--chalk); padding: 0 16px 40px; background-image: radial-gradient(circle at 85% 120%, var(--field-line) 0 30%, transparent 30.5%); }
.lgnav { max-width: 980px; margin: 0 auto; display: flex; gap: 4px 18px; align-items: center; flex-wrap: wrap; padding: 14px 0; }
.lgnav a { color: var(--chalk); text-decoration: none; font-family: var(--display); font-size: 1.1rem; opacity: .85; }
.lgnav a:hover { opacity: 1; text-decoration: underline; }
.lgnav a.pinned, .tabs a.pinned { border: 1px solid var(--mustard); color: var(--mustard); border-radius: 4px; padding: 2px 10px; opacity: 1; }
.lgnav .lgmark { font-weight: 700; font-size: 1.5rem; opacity: 1; margin-right: auto; color: var(--mustard); letter-spacing: .04em; }
.lghero-in { max-width: 980px; margin: 0 auto; padding-top: 28px; }
.lgkicker { margin: 0 0 6px; text-transform: uppercase; letter-spacing: .12em; font-size: .8rem; opacity: .75; }
.lghero h1 { font-size: clamp(2.6rem, 9vw, 4.6rem); font-weight: 700; letter-spacing: .01em; }
.lgchamp { display: inline-flex; gap: 14px; align-items: center; margin-top: 22px; background: var(--field-deep); border: 1px solid var(--field-line); border-radius: 10px; padding: 14px 20px 14px 16px; min-height: 84px; }
.lgtrophy { width: 48px; height: 48px; color: var(--mustard); flex: none; }
.lgchamp-label { text-transform: uppercase; letter-spacing: .1em; font-size: .75rem; opacity: .75; }
.lgchamp-team { font-family: var(--display); font-size: 1.9rem; font-weight: 700; line-height: 1.05; color: var(--mustard); }
.lgchamp-owner { opacity: .85; }
.lgmain { max-width: 980px; margin: 0 auto; padding: 8px 16px 48px; }
.lgsection { margin-top: 32px; }
.lgmods { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; margin-top: 24px; }
.lgmod { display: flex; flex-direction: column; gap: 4px; background: var(--card); border: 1px solid var(--rule); border-left: 4px solid var(--field); border-radius: 8px; padding: 14px 16px; color: var(--ink); text-decoration: none; }
.lgmod:hover { border-left-color: var(--mustard); box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.lgmod b { font-family: var(--display); font-size: 1.35rem; color: var(--field); }
.lgmod span { font-size: .9rem; color: var(--ink-soft); }
.lgsechead { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; border-bottom: 2px solid var(--field); padding-bottom: 8px; margin-bottom: 14px; }
.lgsechead h2 { font-size: 1.9rem; margin-right: auto; }
.lgsechead input[type=search] { width: min(280px, 100%); }
.lgchamps { list-style: none; margin: 0; padding: 0; background: var(--card); border: 1px solid var(--rule); border-radius: 8px; }
.lgchamps li { display: flex; gap: 16px; align-items: baseline; padding: 10px 16px; border-top: 1px solid var(--rule); }
.lgchamps li:first-child { border-top: 0; }
.lgchamps li.current { background: #FBF3DC; }
.lgchamps .yr { font-family: var(--display); font-size: 1.4rem; font-weight: 700; color: var(--field); min-width: 3.2em; }
.lgchamps .who { flex: 1; min-width: 0; }
.lgchamps .who b { font-size: 1.05rem; }
.lgchamps .note { display: block; color: var(--ink-soft); font-size: .9rem; }
.leaguepage .tag { display: inline-block; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 600; background: var(--mustard); color: var(--ink); border-radius: 3px; padding: 1px 6px; vertical-align: middle; }
.lgrule.retired .tag { background: var(--rule); }
.lgrule.retired .lgtext { color: var(--ink-soft); }
.lgedit-wrap { overflow-x: auto; }
.lgedit { border-collapse: collapse; width: 100%; min-width: 560px; }
.lgedit th { text-align: left; font-size: .8rem; color: var(--ink-soft); font-weight: 600; padding: 0 4px 4px; }
.lgedit td { padding: 3px 4px; }
.lgedit input[type=text] { width: 100%; }
.lgedit input[type=number] { width: 84px; }
.lgtoc { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 18px; }
.lgtoc a { background: var(--card); border: 1px solid var(--rule); border-radius: 999px; padding: 3px 12px; color: var(--field); text-decoration: none; font-weight: 500; font-size: .92rem; }
.lgtoc a:hover { border-color: var(--field); }
.lgrules { background: var(--card); border: 1px solid var(--rule); border-radius: 8px; padding: 16px 18px 6px; margin-bottom: 16px; scroll-margin-top: 12px; }
.lgrules h3 { font-size: 1.45rem; color: var(--field); }
.lgrules > p { margin: 4px 0 0; }
.lgrules > ol { margin: 10px 0 0; padding-left: 1.6em; }
.lgrule { padding: 6px 0 10px; }
.lgrule::marker { font-family: var(--display); font-weight: 700; color: var(--field); }
.lghist { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-top: 4px; }
.lghist span { font-size: .8rem; color: var(--ink-soft); }
.lghist span::before { content: "⟳ "; color: var(--mustard); }
.lgsub { margin: 8px 0 0; padding-left: 1.1em; }
.lgsub li { padding: 4px 0; }
.lgimg { display: block; max-width: 100%; height: auto; margin-top: 8px; border: 1px solid var(--rule); border-radius: 6px; background: #fff; }
.lgfoot { text-align: center; color: var(--ink-soft); font-size: .88rem; padding: 24px 16px 40px; border-top: 1px solid var(--rule); max-width: 980px; margin: 0 auto; }
@media (max-width: 560px) {
  .lgchamp { display: flex; }
  .lgchamps li { gap: 10px; padding: 10px 12px; }
}
/* ---------- RotoLab-style player board ---------- */
:root { --grid-head: #2F5597; --grid-line: #B7C3D6; --bc-h: #C6EFCE; --bc-h3: #8FD19E; --bc-p: #CFE2F3; --bc-p3: #9FC5E8; --bc-r: #F4CCCC; --bc-neg: #F9E0E0; }
.posbar { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--grid-head); border-radius: 4px; overflow: hidden; }
.posbar button { font: 600 .85rem/1 var(--body); padding: 6px 9px; border: 0; border-right: 1px solid var(--grid-line); background: var(--card); color: var(--grid-head); cursor: pointer; }
.posbar button:last-child { border-right: 0; }
.posbar button[aria-pressed="true"] { background: var(--grid-head); color: #fff; }
.posbar button:focus-visible { outline: 2px solid var(--mustard); outline-offset: -2px; }
table.rotogrid { border-collapse: collapse; font-size: .84rem; }
table.rotogrid th { background: var(--grid-head); color: #fff; border: 1px solid var(--grid-head); padding: 4px 6px; font-weight: 600; position: sticky; top: 0; z-index: 1; }
table.rotogrid th.sortable { cursor: pointer; }
table.rotogrid th.sorted { background: #1F3D73; }
table.rotogrid td { border: 1px solid var(--grid-line); padding: 2px 6px; }
table.rotogrid tbody tr:nth-child(even) td { background: rgba(47, 85, 151, .04); }
table.rotogrid tr.me td { background: rgba(227, 178, 60, .18); }
table.rotogrid td.bcell { text-align: center; font-weight: 600; min-width: 30px; }
table.rotogrid td.bc-h { background: var(--bc-h) !important; color: #14532D; }
table.rotogrid td.bc-h.l3 { background: var(--bc-h3) !important; }
table.rotogrid td.bc-p { background: var(--bc-p) !important; color: #1E3A5F; }
table.rotogrid td.bc-p.l3 { background: var(--bc-p3) !important; }
table.rotogrid td.bc-h.neg, table.rotogrid td.bc-p.neg { background: var(--bc-neg) !important; color: var(--brick); }
table.rotogrid td.bc-r { background: var(--bc-r) !important; color: #7A1F1F; }
table.rotogrid td input[type=number] { width: 52px; padding: 1px 4px; }
table.rotogrid td input[type=text] { min-width: 100px; padding: 1px 4px; }
table.rotogrid td select { padding: 1px 2px; }
.rosterpanels { margin-bottom: 14px; }
.rostercols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.rostercols .rotogrid { width: 100%; }
.rostergrid tr.empty td { color: var(--ink-soft); height: 22px; }
.rostergrid td.risk { color: var(--brick); }
.rostergrid tr.tot td { background: #DCE6F2 !important; font-weight: 600; }
@media (max-width: 900px) { .rostercols { grid-template-columns: 1fr; } }

/* ---------- private nomination queue ---------- */
.myqueue { margin: 10px 0 4px; border: 1px dashed var(--rule); border-radius: 6px; padding: 4px 8px; }
.myqueue summary { cursor: pointer; font-weight: 600; padding: 4px 0; }
.myqueue .results { margin: 4px 0; max-height: 220px; }
.qbtns { float: right; }
.btn.mini { padding: 0 6px; font-size: .78rem; min-height: 0; line-height: 1.5; }

/* ---------- keepers page ---------- */
.patable td { vertical-align: middle; }
.patable input.edited { border-color: var(--mustard); background: #FFF8E1; }
#qHits { position: absolute; z-index: 20; left: 0; right: 0; top: 100%; max-height: 260px; overflow: auto; margin: 2px 0 0; background: var(--card); border: 1px solid var(--rule); }
.tv-roster .nowrap, .results .nowrap { white-space: nowrap; }
.rotogrid.playertable td:nth-child(3) { white-space: nowrap; }
.permhelp { margin: 10px 0 0; font-size: .9rem; }
.permhelp dt { font-weight: 600; margin-top: 6px; }
.permhelp dd { margin: 2px 0 0; color: var(--ink-soft); }
