/* Self-hosted (SIL Open Font License; see fonts/OFL-*.txt). Latin subset. */
@font-face{font-family:'Oswald';font-style:normal;font-weight:500 700;font-display:swap;src:url(/yahoo/fonts/oswald-var.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500 700;font-display:swap;src:url(/yahoo/fonts/jetbrains-mono-var.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:400;font-display:swap;src:url(/yahoo/fonts/barlow-400.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:italic;font-weight:400;font-display:swap;src:url(/yahoo/fonts/barlow-400-italic.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:500;font-display:swap;src:url(/yahoo/fonts/barlow-500.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:600;font-display:swap;src:url(/yahoo/fonts/barlow-600.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:500;font-display:swap;src:url(/yahoo/fonts/barlow-condensed-500.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:600;font-display:swap;src:url(/yahoo/fonts/barlow-condensed-600.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(/yahoo/fonts/barlow-condensed-700.woff2) format('woff2')}
:root{
  --void:#06080c;--pit:#0c1017;--steel:#141a24;--iron:#1c2433;--rust:#2a3548;
  --text:#f0f2f6;--soft:#c8d0da;--muted:#a8b4c2;
  --green:#10b981;--green-hi:#34d399;--green-bg:#0a2e22;
  --amber:#fbbf24;--amber-bg:#3b2a08;--red:#f87171;--red-bg:#3a1212;
  --qb:#ff5c77;--rb:#60a5fa;--wr:#34d399;--te:#fbbf24;--k:#a8b4c2;--def:#a78bfa;
  --display:Oswald,'Barlow Condensed','Arial Narrow',sans-serif;
  --label:'Barlow Condensed','Arial Narrow',sans-serif;
  --body:Barlow,system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--void);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;padding-bottom:88px}
a{color:var(--green)}a:hover{color:var(--green-hi)}
button,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--green-hi);outline-offset:2px}
[hidden]{display:none!important}
h1,h2,h3{font-family:var(--display);font-weight:600;margin:0;line-height:1.15;letter-spacing:.2px}
h2{font-size:22px}h3{font-size:18px;margin:20px 0 10px}

/* Header */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;background:rgba(6,8,12,.94);border-bottom:1px solid var(--iron)}
.logo{font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:2px;color:var(--text);text-decoration:none;white-space:nowrap}
.logo span{color:var(--green)}.logo small{font-size:inherit;font-weight:500;letter-spacing:1px;color:var(--muted)}
.desk-nav{display:none}
.top-actions{display:flex;align-items:center;gap:14px}
.chip-yahoo{display:flex;align-items:center;gap:6px;font-family:var(--label);font-weight:600;font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.text-button{background:none;border:0;padding:6px 0;min-height:36px;cursor:pointer;color:var(--green);font-family:var(--label);font-weight:700;font-size:14px;letter-spacing:1px;text-transform:uppercase}
.text-button:hover{color:var(--green-hi)}
.text-button:disabled{opacity:.5;cursor:default}
.text-link{font-family:var(--label);font-weight:700;font-size:14px;letter-spacing:1px;text-transform:uppercase;text-decoration:none}
.desk-only{display:none}
@media (max-width:560px){.logo small,.chip-yahoo{display:none!important}.topbar{padding:12px 16px}.top-actions{gap:12px}.text-button{font-size:13px}
  .keep-btn,.compare-btn{width:34px;height:34px}.row{gap:8px;padding:10px 10px}.slot{width:36px}.pts{min-width:36px}
  .row .name{white-space:normal;overflow:visible;line-height:1.25}.name-line{flex-wrap:wrap;row-gap:2px}}

main{max-width:1320px;margin:0 auto;padding:0 20px}
/* Sticks under the header so progress and errors are visible wherever you've scrolled. */
.status{position:sticky;top:60px;z-index:15;margin:14px 0 0;padding:10px 12px;border-radius:8px;background:var(--pit);border:1px solid var(--iron);font-size:14px;color:var(--soft);box-shadow:0 6px 18px rgba(0,0,0,.45)}
.status:empty{display:none}
.error-text{color:#fecaca!important}
.status.error{color:#fecaca;background:var(--red-bg);border:1px solid #7f1d1d;border-radius:8px;padding:10px 12px}

/* Connect */
.connect-panel{max-width:620px;margin:48px auto 24px;display:flex;flex-direction:column;gap:14px}
.connect-panel h1{font-size:40px}
.lede{margin:0;font-size:18px;color:var(--soft)}
.eyebrow{margin:0;font-family:var(--label);font-weight:600;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
.fine{margin:0;font-size:13px;color:var(--muted)}
.teams-section{margin:18px 0 0;display:flex;flex-direction:column;gap:6px;max-width:520px}
.teams-section label{font-size:13px;color:var(--muted)}
.team-picker{display:flex;gap:8px}
select{min-height:44px;background:var(--steel);border:1px solid var(--rust);border-radius:6px;padding:0 10px;font-size:15px;max-width:100%}
.team-picker select{flex-grow:1}

/* Buttons */
.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;border-radius:6px;border:1px solid var(--rust);background:transparent;color:var(--text);font-family:var(--label);font-weight:700;font-size:15px;letter-spacing:1px;text-transform:uppercase;text-decoration:none;cursor:pointer}
.button:hover{border-color:var(--muted);color:var(--text)}
.button.primary{background:var(--green);border-color:var(--green);color:var(--void)}
.button.primary:hover{background:var(--green-hi);border-color:var(--green-hi);color:var(--void)}
.button.big{min-height:52px;font-size:17px;align-self:flex-start;padding:0 26px}
.button:disabled{opacity:.5;cursor:not-allowed}
.button.ghost{margin-top:12px;width:100%}
.button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}

/* Team header + cards */
.team-head{padding:22px 0 6px;display:flex;flex-direction:column;gap:4px}
.team-head h1{font-size:30px}
.warning{margin:8px 0 0;font-size:13px;color:var(--amber)}
.card{background:var(--pit);border:1px solid var(--iron);border-radius:10px}
.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:26px 0 10px}
.view>.section-head:first-child{margin-top:18px}

.matchup{margin-top:14px;padding:16px;display:flex;flex-direction:column;gap:12px}
.matchup-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.matchup-sides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.side{display:flex;flex-direction:column;gap:2px;min-width:0}
.side.right{align-items:flex-end;text-align:right}
.side-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.side-pts{font-family:var(--mono);font-weight:700;font-size:28px;color:var(--soft)}
.side.mine .side-pts{color:var(--green)}
.bar{display:flex;gap:2px;height:6px;border-radius:3px;overflow:hidden}
.bar span{display:block;background:var(--rust)}
.bar span:first-child{background:var(--green)}
.matchup-note{margin:0;font-size:14px;color:var(--soft)}
.matchup-note strong{color:var(--text)}

/* Moves */
.moves{display:flex;flex-direction:column;gap:12px}
.move{background:var(--steel);border:1px solid var(--rust);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:10px}
.move-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.kind{font-family:var(--label);font-weight:700;font-size:13px;letter-spacing:1.5px;padding:3px 8px;border-radius:4px;background:var(--iron);color:var(--soft);text-transform:uppercase}
.kind.lineup{background:var(--amber-bg);color:var(--amber)}
.kind.roster{background:var(--red-bg);color:var(--red)}
.drop-name{flex-grow:1}
.drop-cost{min-width:0;white-space:nowrap;font-size:13px}
.kind.pickup{background:var(--green-bg);color:var(--green-hi)}
.impact{font-family:var(--mono);font-weight:700;font-size:15px;color:var(--green)}
.move-title{margin:0;font-size:18px;font-weight:600;line-height:1.3}
.move-why{margin:0;font-size:14px;color:var(--soft)}
.move-actions{display:flex;gap:8px;align-items:stretch}
.move-actions .button.primary{flex-grow:1}
.basis{font-size:13px;color:var(--muted)}
.basis summary{cursor:pointer;min-height:32px;display:flex;align-items:center;color:var(--soft)}
.all-clear{padding:18px;display:flex;gap:12px;align-items:flex-start}
.all-clear svg{flex-shrink:0;width:24px;height:24px;fill:none;stroke:var(--green);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.all-clear p{margin:4px 0 0;font-size:14px;color:var(--soft)}

/* Player rows */
.list{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:10px;padding:11px 14px;border-top:1px solid var(--iron)}
.row:first-child{border-top:0}
.row.flagged{background:#15120a}
.row.compact{padding:9px 14px}
.slot{width:42px;flex-shrink:0;font-family:var(--label);font-weight:700;font-size:14px;letter-spacing:1px}
.pos-QB{color:var(--qb)}.pos-RB{color:var(--rb)}.pos-WR{color:var(--wr)}.pos-TE{color:var(--te)}.pos-K{color:var(--k)}.pos-DEF{color:var(--def)}.pos-FLEX{color:var(--soft)}
.who{flex-grow:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.name-line{display:flex;align-items:center;gap:8px;min-width:0}
.name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game{font-size:13px;color:var(--muted)}
.pts{font-family:var(--mono);font-weight:600;font-size:15px;color:var(--soft);min-width:44px;text-align:right}
.tag{flex-shrink:0;font-family:var(--body);font-weight:600;font-size:12px;letter-spacing:.5px;padding:1px 6px;border-radius:3px}
.tag.warn{background:var(--amber-bg);color:var(--amber)}
.tag.bad{background:var(--red-bg);color:var(--red)}
.tag.good{background:var(--green-bg);color:var(--green-hi)}
.tag.lock{background:var(--iron);color:var(--muted)}
.lineup-summary{margin:0 0 12px;font-size:14px;color:var(--soft)}
.lineup-summary strong{font-family:var(--mono);color:var(--text)}
.lineup-summary .hi{color:var(--green)}

/* Waivers */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 10px}
.chip{min-height:36px;padding:0 14px;border-radius:18px;border:1px solid var(--rust);background:transparent;color:var(--soft);font-family:var(--label);font-weight:700;font-size:14px;letter-spacing:1px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:var(--void)}
.adds{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.add{background:var(--steel);border:1px solid var(--rust);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.add.top{border-color:#1f5f48}
.add-head{display:flex;align-items:flex-start;gap:12px}
.add-rank{width:26px;font-family:var(--mono);font-weight:700;font-size:18px;color:var(--muted)}
.add-gain{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0}
.add-gain strong{font-family:var(--mono);font-size:17px;color:var(--green)}
.add-gain strong.none{color:var(--muted)}
.add-gain span{font-size:12px;color:var(--muted)}
.add-why{margin:0;font-size:14px;color:var(--soft)}
.add-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid var(--iron);font-size:14px;color:var(--soft)}
.add-foot strong{color:var(--text)}
.add-foot .button{min-height:40px;font-size:14px;padding:0 14px}

/* League */
.rank-row{display:flex;align-items:center;gap:12px;padding:13px 14px;border-top:1px solid var(--iron)}
.rank-row:first-child{border-top:0}
.rank-body{flex-grow:1;display:flex;flex-direction:column;gap:6px}
.rank-line{display:flex;justify-content:space-between;font-size:14px}
.rank-line span:last-child{font-family:var(--mono);color:var(--soft)}
.meter{height:6px;background:var(--iron);border-radius:3px;overflow:hidden}
.meter span{display:block;height:100%;border-radius:3px;background:#64748b}
.meter .strong{background:var(--green)}.meter .weak{background:var(--red)}
.trade{margin-top:14px;padding:16px;background:var(--steel);border-color:var(--rust);display:flex;flex-direction:column;gap:6px}
.trade p{margin:0}
.trade .title{font-size:17px;font-weight:600}
.trade .body{font-size:14px;color:var(--soft)}
.warning-text{color:var(--amber)!important}
.settings{margin-top:14px;padding:12px 16px}
.settings summary{cursor:pointer;min-height:32px;display:flex;align-items:center;font-weight:600}
.settings table{width:100%;border-collapse:collapse;font-size:14px;margin-top:8px}
.settings th,.settings td{text-align:left;padding:6px 4px;border-top:1px solid var(--iron)}
.settings th{color:var(--muted);font-weight:500}
.footnote{margin:24px 0 0;font-size:12px;color:var(--muted)}
.empty{padding:16px;font-size:14px;color:var(--soft)}

/* Start/sit */
.startsit{padding:16px;margin-bottom:18px;display:flex;flex-direction:column;gap:10px}
.startsit h3{margin:0}
.calls{display:flex;flex-direction:column;gap:8px}
.call{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 12px;background:var(--steel);border:1px solid var(--rust);border-radius:8px;color:var(--text);text-align:left;cursor:pointer}
.call:hover{border-color:var(--muted)}
.call-names{flex-grow:1;min-width:0;font-weight:600;line-height:1.3}
.call-gap{flex-shrink:0;font-family:var(--mono);font-size:13px;color:var(--soft)}
.call-gap.ahead{color:var(--amber)}
.search-label{margin-top:6px;font-size:13px;color:var(--muted)}
input[type="search"]{min-height:44px;background:var(--steel);border:1px solid var(--rust);border-radius:6px;padding:0 12px;font:inherit;font-size:16px;color:var(--text);width:100%}
.search-results{display:flex;flex-direction:column;gap:6px}
.search-hit{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 12px;background:transparent;border:1px solid var(--iron);border-radius:6px;color:var(--text);text-align:left;cursor:pointer}
.search-hit:hover{border-color:var(--muted)}
.search-hit .name{flex-grow:1}
.compare-btn{flex-shrink:0;width:40px;height:40px;border-radius:6px;border:1px solid var(--rust);background:transparent;color:var(--soft);font-size:16px;cursor:pointer}
.compare-btn:hover{border-color:var(--muted);color:var(--text)}
.compare-btn[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:var(--void)}
.add-actions{display:flex;gap:8px;align-items:center}
.keep-btn{flex-shrink:0;width:40px;height:40px;border-radius:6px;border:1px solid var(--rust);background:transparent;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center}
.keep-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.keep-btn:hover{color:var(--text);border-color:var(--muted)}
.keep-btn[aria-pressed="true"]{background:var(--amber-bg);border-color:var(--amber);color:var(--amber)}
.keep-note{margin-top:10px}
.text-button.inline{min-height:0;padding:0;margin-left:4px;font-size:12px}
.compare-tray{position:fixed;left:12px;right:12px;bottom:84px;z-index:25;background:var(--steel);border:1px solid #1f5f48;border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:8px;box-shadow:0 10px 30px rgba(0,0,0,.55)}
.tray-head{display:flex;justify-content:space-between;align-items:center}
.tray-picks{display:flex;flex-direction:column;gap:6px}
.tray-chip{display:flex;align-items:center;gap:10px}
.tray-chip .name{flex-grow:1;font-weight:600}
.tray-verdict{margin:0;font-size:15px;line-height:1.4;color:var(--text)}
.tray-verdict:empty{display:none}
body.tray-open main{padding-bottom:210px}

/* Tab bar (phone) */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;height:72px;background:var(--pit);border-top:1px solid var(--iron);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding-bottom:env(safe-area-inset-bottom)}
.tabbar button{background:none;border:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--muted);font-family:var(--label);font-weight:700;font-size:13px;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.tabbar button[aria-pressed="true"]{color:var(--green)}
.tabbar svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

.view{display:none}
body[data-view="week"] #week-view,body[data-view="lineup"] #lineup-view,body[data-view="waivers"] #waivers-view,body[data-view="league"] #league-view{display:block}

footer{max-width:1320px;margin:32px auto 0;padding:18px 20px;border-top:1px solid var(--iron);display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between;font-size:12px;color:var(--muted)}
footer a{color:var(--muted)}

.col{min-width:0}
.col-title{margin:0 0 10px}
.lineup-cols .col+.col .col-title{margin-top:20px}
.league-cols .col+.col{margin-top:0}

/* Desktop: same tabs as the phone, each laid out to use the width */
@media (min-width:1100px){
  body{padding-bottom:0}
  .status{top:74px}
  .topbar{padding:16px 40px}
  body.loaded .desk-nav{display:flex;gap:8px;margin-right:auto;margin-left:24px}
  .desk-nav button{background:none;border:0;border-bottom:2px solid transparent;padding:8px 10px;min-height:40px;cursor:pointer;font-family:var(--label);font-weight:700;font-size:15px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
  .desk-nav button:hover{color:var(--text)}
  .desk-nav button[aria-pressed="true"]{color:var(--green);border-bottom-color:var(--green)}
  .desk-only{display:inline}
  main{padding:0 40px}
  .tabbar{display:none}
  .team-head h1{font-size:36px}
  #week-view{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px;align-items:start}
  #week-view .col:last-child>.section-head{margin-top:14px}
  body[data-view="week"] #week-view{display:grid}
  .lineup-cols,.league-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;align-items:start}
  .lineup-cols .col+.col .col-title{margin-top:0}
  .adds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:stretch}
  .add{justify-content:space-between}
  .button.ghost{max-width:360px}
  .compare-tray{left:50%;right:auto;bottom:20px;width:min(720px,calc(100% - 80px));transform:translateX(-50%)}
  body.tray-open main{padding-bottom:180px}
}
