:root{--bg:#f6f4ef;--fg:#1d1d1b;--muted:#6b6a64;--line:#dcd8cf;--accent:#8b1e2d;--card:#fff;--me:#fff3d6}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
header.top{display:flex;align-items:center;gap:24px;padding:10px 20px;background:var(--fg);color:#fff;flex-wrap:wrap}
header .brand{color:#fff;font-weight:700;font-size:18px}header nav a{color:#ddd;margin-right:12px;font-size:14px}
header nav{flex:1}
form.viewing-as{display:flex;align-items:center;gap:8px;margin-left:auto}
form.viewing-as label{color:#bbb;font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
form.viewing-as select{background:#2c2c2a;color:#fff;border:1px solid #4a4a47;border-radius:5px;padding:5px 8px;font-size:13px}
main{max-width:1200px;margin:0 auto;padding:20px}
h1{margin:.2em 0 .4em}h2{margin:1.2em 0 .4em;font-size:1.15em;border-bottom:1px solid var(--line);padding-bottom:4px}
table{border-collapse:collapse;width:100%;background:var(--card);font-size:14px}th,td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#eee;font-weight:600}
tr.me{background:var(--me)}.muted{color:var(--muted)}.small{font-size:12px}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px 14px}
.pos{display:inline-block;min-width:28px;text-align:center;font-size:11px;font-weight:700;border-radius:3px;padding:1px 4px;color:#fff;background:#888}
.pos-QB{background:#c0392b}.pos-RB{background:#27ae60}.pos-WR{background:#2980b9}.pos-TE{background:#e67e22}.pos-K{background:#7f8c8d}.pos-DST{background:#8e44ad}
img.head{width:36px;height:36px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:6px;background:#ddd}
form.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}input,select{padding:6px 8px;border:1px solid var(--line);border-radius:4px;font-size:14px}
.rounds{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}
/* Loserboard */
.verdict{background:linear-gradient(135deg,#2b1d1f,#5a1e2a);color:#fff;border-radius:12px;padding:18px 20px;margin:12px 0 20px;text-align:center}
.verdict.tie{background:linear-gradient(135deg,#333,#555)}
.verdict.single{background:linear-gradient(135deg,#1d2b3a,#2c4a6b)}
.vs-row{display:flex;align-items:center;justify-content:center;gap:24px}
.vs-team{flex:1;max-width:320px;padding:10px;border-radius:10px;opacity:.75}
.vs-team.is-loser{opacity:1;background:rgba(255,255,255,.08);box-shadow:0 0 0 3px #ff4d6d inset}
.vs-team .big,.verdict.single .big{font-size:56px;line-height:1}
.vs-team .name,.verdict.single .name{font-size:22px;font-weight:700;margin-top:4px}
.vs-team .score{font-size:44px;font-weight:800}
.vs-mid{font-size:20px;font-weight:800;opacity:.6}
.tally{display:flex;height:14px;border-radius:7px;overflow:hidden;background:rgba(255,255,255,.15);margin:14px auto 8px;max-width:700px}
.bar-a{background:#ff4d6d}.bar-b{background:#4da3ff}
.verdict-text{font-size:18px;margin:8px 0 0;font-weight:600}
.h2h{display:flex;gap:10px}
.side{flex:1;text-align:center;padding:10px 6px;border-radius:8px;background:#f3f1ec}
.side.is-loser{background:#ffe1e7;box-shadow:0 0 0 2px #ff4d6d inset}
.side .rank{font-size:30px;font-weight:800;line-height:1}
.side .of{font-size:14px;font-weight:400;color:var(--muted)}
.side .val{margin-top:4px;font-weight:600}
.card.loser-a{border-color:#ff4d6d}.card.loser-b{border-color:#4da3ff}
.taunt{margin:10px 0 0;font-style:italic;color:#8b1e2d}
.verdict.leader{background:linear-gradient(135deg,#1f2a1d,#2f5a2a)}
.verdict.leader .vs-team.is-loser{box-shadow:0 0 0 3px #ffd54d inset}
.verdict.leader .bar-a{background:#ffd54d}.verdict.leader .bar-b{background:#4da3ff}
.details{margin-top:6px;font-size:13px;line-height:1.5}.details .lbl{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em;margin-right:4px}
.h2h-card{background:rgba(255,255,255,.1);border-radius:10px;padding:10px 14px;margin:12px auto 0;max-width:760px}
.h2h-title{font-size:12px;text-transform:uppercase;letter-spacing:.05em;opacity:.8}
.h2h-rec{font-size:22px;display:flex;gap:14px;justify-content:center;align-items:baseline;margin:4px 0}

/* Auth / login page */
main.auth{max-width:none;display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 53px);padding:40px 20px}
.auth-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:36px 32px;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.06)}
.auth-mark{font-size:40px;line-height:1}
.auth-card h1{margin:8px 0 2px;font-size:24px}
.auth-sub{margin:0 0 22px;color:var(--muted);font-size:13px}
.auth-detail{color:var(--muted);font-size:14px;line-height:1.5;margin:0 0 18px}
.auth-form{display:flex;flex-direction:column;gap:10px;text-align:left}
.auth-form label{font-size:12px;font-weight:600;color:var(--muted)}
.auth-form input{padding:11px 12px;border:1px solid var(--line);border-radius:8px;font-size:15px}
.auth-form input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.auth-form button{margin-top:4px;padding:11px 12px;border:none;border-radius:8px;background:var(--accent);color:#fff;font-size:15px;font-weight:600;cursor:pointer}
.auth-form button:hover{opacity:.92}
.auth-alert{padding:10px 12px;border-radius:8px;font-size:14px;margin-bottom:16px;text-align:left}
.auth-alert-error{background:#fdecea;color:#8b1e2d;border:1px solid #f3c6c2}
.auth-icon{font-size:40px;margin-bottom:6px}
.auth-lead{font-size:18px;font-weight:700;margin:0 0 8px}
.auth-secondary{display:inline-block;margin-top:4px;font-size:14px}

/* Viewing As comparison tables on team pages */
td.vs-win{background:#e7f6ea;font-weight:600;box-shadow:0 0 0 1px #8fd19e inset}
td.vs-lose{background:#ffe1e7;font-weight:600;box-shadow:0 0 0 1px #ff9db0 inset}

/* Team page tabs (CSS-only, no JS) */
.tabs{display:flex;flex-wrap:wrap}
.tabs .tab-input{position:absolute;opacity:0;pointer-events:none}
.tabs .tab-label{order:1;padding:9px 16px;cursor:pointer;color:var(--muted);font-weight:600;font-size:14px;border-bottom:3px solid transparent;user-select:none}
.tabs .tab-label:hover{color:var(--fg)}
.tabs .tab-input:checked+.tab-label{color:var(--fg);border-bottom-color:var(--accent)}
.tabs .tab-input:focus-visible+.tab-label{outline:2px solid var(--accent);outline-offset:-2px}
.tabs .tab-panel{display:none;order:10;flex-basis:100%;width:100%;padding-top:18px;border-top:1px solid var(--line);margin-top:2px}
#tab-summary:checked~.panel-summary{display:block}
#tab-points:checked~.panel-points{display:block}
#tab-roster:checked~.panel-roster{display:block}
#tab-keepers:checked~.panel-keepers{display:block}
#tab-draft:checked~.panel-draft{display:block}
#tab-trades:checked~.panel-trades{display:block}

/* Viewing-as side-by-side columns (Roster / Keepers / Trades tabs) */
.vs-columns{display:flex;gap:24px;flex-wrap:wrap;align-items:flex-start}
.vs-columns .vs-col{flex:1;min-width:320px}
.vs-columns .vs-col:not(:first-child){padding-left:24px;border-left:1px solid var(--line)}

/* TFFL Vault branding */
header .brand{display:flex;align-items:center;gap:8px}
.brand-badge{width:34px;height:34px;border-radius:50%;object-fit:cover;border:2px solid #8b1e2d;background:#000}
.brand-text{display:flex;flex-direction:column;line-height:1.05}
.brand-tag{font-size:10px;font-weight:400;letter-spacing:.02em;opacity:.7;white-space:nowrap}
@media(max-width:700px){.brand-tag{display:none}}
.auth-badge{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid #8b1e2d;background:#000;margin-bottom:4px}

/* TFFL Vault welcome splash */
main.welcome-main{max-width:none;padding:0;margin:0}
.welcome-screen{position:relative;display:block;width:100%;height:100vh;min-height:520px;overflow:hidden;background:#0c0c0c;cursor:pointer}
.welcome-bg{position:absolute;inset:0;background-size:contain;background-repeat:no-repeat;background-position:center center;animation:welcomeKenBurns 6s ease-out forwards;filter:saturate(1.25) contrast(1.05)}
@keyframes welcomeKenBurns{from{transform:scale(.97)}to{transform:scale(1.0)}}
.welcome-scrim{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%, rgba(10,8,8,.35) 0%, rgba(8,6,6,.75) 65%, rgba(4,3,3,.92) 100%)}
.welcome-content{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;color:#fff}
.welcome-badge-wrap{opacity:0;animation:welcomePop .6s cubic-bezier(.2,1.4,.4,1) .15s forwards}
.welcome-badge{width:96px;height:96px;border-radius:50%;object-fit:cover;border:4px solid #ffd54d;box-shadow:0 0 0 6px rgba(255,213,77,.18), 0 10px 40px rgba(0,0,0,.5)}
@keyframes welcomePop{from{opacity:0;transform:scale(.4) rotate(-8deg)}to{opacity:1;transform:scale(1) rotate(0)}}
.welcome-line1{font-size:clamp(32px,7vw,64px);font-weight:900;letter-spacing:-.01em;text-transform:uppercase;margin:22px 0 6px;line-height:1.05;text-shadow:0 4px 24px rgba(0,0,0,.6);opacity:0;transform:translateY(16px) scale(.96);animation:welcomeSlam .55s cubic-bezier(.2,1.2,.3,1) .45s forwards}
@keyframes welcomeSlam{60%{opacity:1;transform:translateY(-4px) scale(1.03)}to{opacity:1;transform:translateY(0) scale(1)}}
.welcome-line2{font-size:clamp(15px,2.6vw,20px);color:#f0d9b0;max-width:600px;margin:0;opacity:0;animation:welcomeFadeUp .6s ease .95s forwards}
@keyframes welcomeFadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.welcome-enter{margin-top:38px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:#bbb;opacity:0;animation:welcomeFadeUp .6s ease 1.5s forwards}
.welcome-dots{display:inline-block;animation:welcomeDots 1.2s steps(1) infinite}
@keyframes welcomeDots{0%{opacity:.2}50%{opacity:1}100%{opacity:.2}}
/* draft history sheet */
main.wide{max-width:1400px}
.dh-filters{position:sticky;top:0;z-index:3;margin:0 -20px 14px;padding:10px 20px;background:var(--bg);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.dh-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.dh-row input[type=search]{flex:1;max-width:380px;padding:7px 11px;border:1px solid var(--line);border-radius:6px;font-size:15px;background:var(--card)}
.dh-row input[type=search]:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.dh-count{color:var(--muted);font-size:13px;min-width:120px}
.dh-lbl{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);width:64px}
.dh-lbl-gap{width:auto;margin-left:20px}
.dh-group{display:flex;flex-wrap:wrap;gap:3px}
.tog{min-width:54px;padding:3px 7px;border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--muted);font:600 11.5px/1.5 inherit;font-family:inherit;letter-spacing:.02em;cursor:pointer;transition:background .1s,color .1s}
.tog:hover{border-color:#b9b4a8;color:var(--fg)}
.tog[aria-pressed=true]{background:var(--fg);border-color:var(--fg);color:#fff}
.tog.me[aria-pressed=true]{background:var(--accent);border-color:var(--accent)}
.tog.defunct{font-style:italic}
#dh-pos .tog[aria-pressed=true]{border-color:transparent}
#dh-pos .tog.pos-QB[aria-pressed=true]{background:#c0392b}#dh-pos .tog.pos-RB[aria-pressed=true]{background:#27ae60}#dh-pos .tog.pos-WR[aria-pressed=true]{background:#2980b9}
#dh-pos .tog.pos-TE[aria-pressed=true]{background:#e67e22}#dh-pos .tog.pos-K[aria-pressed=true]{background:#7f8c8d}#dh-pos .tog.pos-DST[aria-pressed=true]{background:#8e44ad}
.dh-links{display:flex;gap:2px;margin-left:4px}
.linkish{background:none;border:none;color:var(--accent);cursor:pointer;font-size:12px;font-family:inherit;padding:2px 5px}
.linkish:hover{text-decoration:underline}
.dh-check{display:inline-flex;align-items:center;gap:5px;font-size:13px;cursor:pointer;user-select:none;margin-right:6px}
.dh-check input{margin:0;accent-color:var(--accent)}
.dh-years{margin-left:auto;display:flex;gap:10px;font-size:13px}
table.dh{font-size:14px}
table.dh th.sort{cursor:pointer;user-select:none;white-space:nowrap}
table.dh th.sort:hover{background:#e4e2dc}
table.dh th.sort::after{content:"";display:inline-block;width:0;height:0;margin-left:6px;vertical-align:middle;border:4px solid transparent;opacity:0}
table.dh th.sort.on::after{opacity:1}
table.dh th.sort[aria-sort=ascending]::after{border-bottom:5px solid var(--fg);border-top:none}
table.dh th.sort[aria-sort=descending]::after{border-top:5px solid var(--fg);border-bottom:none}
table.dh th.num.sort{text-align:right}
table.dh tr.yr th{background:var(--fg);color:#fff;font-size:15px;padding:8px 10px}
table.dh tr.yr th a{color:#fff}
table.dh td.num,table.dh th.num{text-align:right}
table.dh tr.pk td{padding:3px 8px;white-space:nowrap}
table.dh tr.traded td{background:#fff9e8}
table.dh tr.me.traded td{background:#ffedc2}
.via{display:inline-block;font-size:12px;font-weight:600;color:#8a5a00;background:#ffe9b3;border-radius:4px;padding:0 6px}
/* drafts page tabs + slowpokes dashboard */
#tab-guide:checked~.panel-guide{display:block}
#tab-recap:checked~.panel-recap{display:block}
.draft-tabs .tab-panel.panel-guide{padding-top:18px}
#tab-history:checked~.panel-history{display:block}
#tab-slowpokes:checked~.panel-slowpokes{display:block}
.draft-tabs .tab-label .small{font-weight:400;margin-left:4px}
.draft-tabs .tab-panel{padding-top:0}
.panel-history .dh-filters{top:0}
.sp-intro{max-width:760px;margin:14px 0 18px}
.kpis{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.kpi.hero{background:var(--fg);color:#fff;border-color:var(--fg)}
.kpi-lbl{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.kpi.hero .kpi-lbl{color:#bbb}
.kpi-val{font-size:40px;font-weight:700;line-height:1.1;margin:4px 0 2px}
.kpi.hero .kpi-val{font-size:48px}
.kpi-sub{font-size:13px;color:var(--muted)}
.kpi.hero .kpi-sub{color:#ccc}
.sp-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));margin-bottom:16px}
.sp-chart h2,.card>h2{margin-top:0}
.hbars{display:flex;flex-direction:column;gap:5px}
.hbar{display:grid;grid-template-columns:78px 1fr 48px;align-items:center;gap:8px;font-size:13px}
.hbar-lbl{font-weight:600;white-space:nowrap}
.hbar-lbl .rank{display:inline-block;width:18px;color:var(--muted);font-weight:400;font-size:11px}
.hbar-track{display:block;height:16px;position:relative}
.hbar-fill{display:block;height:100%;background:#b8636d;border-radius:0 4px 4px 0}
.hbar.me .hbar-fill{background:var(--accent)}
.hbar.me .hbar-lbl{color:var(--accent)}
.hbar-val{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.vbars{display:flex;align-items:flex-end;gap:6px;height:190px;padding-top:6px}
.vbar{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;font-size:12px}
.vbar-val{color:var(--muted);font-size:11px;margin-bottom:3px}
.vbar-track{flex:1;width:100%;max-width:24px;display:flex;align-items:flex-end;border-bottom:1px solid var(--line)}
.vbar-fill{display:block;width:100%;background:#b8636d;border-radius:4px 4px 0 0}
.vbar-lbl{margin-top:4px;color:var(--muted)}
table.sp-table td.num,table.sp-table th.num{text-align:right;font-variant-numeric:tabular-nums}
table.sp-table td.heat{background:rgba(139,30,45,calc(var(--h)*.45))}
table.sp-table tr.me td{background:var(--me)}
/* draft recap */
.rc-legend{display:flex;gap:4px;margin:0 0 12px}
.rc-pair{display:grid;gap:16px;grid-template-columns:1fr 1fr;margin-bottom:16px;align-items:start}
@media(max-width:900px){.rc-pair{grid-template-columns:1fr}}
.card.alltime{background:#f3f1ec;border-style:dashed}
.card h3{margin:14px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.rc-two{display:grid;gap:16px;grid-template-columns:1fr 1fr}
@media(max-width:700px){.rc-two{grid-template-columns:1fr}}
.rc-kpis td:first-child{width:40%}
.stack-rows{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.stack-row{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:8px;font-size:12px}
.stack-row.total{margin-top:6px;padding-top:6px;border-top:1px solid var(--line);font-weight:600}
.stack-lbl{color:var(--muted);text-align:right}
.stack{display:flex;height:18px;gap:2px;width:100%}
.stack.thin{height:8px;gap:1px}
.seg{display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:600;overflow:hidden;border-radius:2px;min-width:0}
.stack.thin .seg{font-size:0}
.seg-pct{font-weight:400;opacity:.85;margin-left:4px}
.faded .seg,.hbar-fill.faded{opacity:.45}
.stack.faded{margin-top:2px}
.rc-prio td{vertical-align:top}
.rc-prio .mixcell{min-width:120px}
.rc-prio .mixcell .stack{display:flex}
.tbl-scroll{overflow-x:auto}
.hbar-track.diverge{background:linear-gradient(to right,transparent 49.5%,var(--line) 49.5%,var(--line) 50.5%,transparent 50.5%)}
.hbar-fill.neg{position:absolute;top:0;background:#c0392b;border-radius:4px 0 0 4px}
.hbar-fill.posv{position:absolute;top:0;background:#27ae60;border-radius:0 4px 4px 0}
.hbar-fill.pos-QB,.hbar-fill.pos-RB,.hbar-fill.pos-WR,.hbar-fill.pos-TE,.hbar-fill.pos-K,.hbar-fill.pos-DST{border-radius:0 4px 4px 0}
.rc-h{margin-top:8px}
.rc-cards{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.rc-card h3{margin:0 0 6px;font-size:15px;text-transform:none;letter-spacing:0;color:var(--fg)}
.rc-card.me{background:var(--me)}
.rc-mix{margin-bottom:6px}
.rc-keepers{margin-bottom:8px;line-height:1.4}
.rc-card table td{padding:2px 6px}
/* data sources */
.ds-card{margin-bottom:16px;max-width:1200px}
.ds-card p.small{font-size:14px;line-height:1.5}
.ds-table td{vertical-align:top;font-size:13px;line-height:1.45}
.ds-table td:first-child{white-space:nowrap}
.ds-table td:nth-child(2){min-width:220px}
.ds-table td:last-child{min-width:320px}
.ds-notes{margin:0;padding-left:16px}
.ds-notes li{margin:0 0 3px}
.ds-steps{padding-left:20px;line-height:1.6}
.ds-card code{background:#efede7;padding:1px 5px;border-radius:3px;font-size:12px}
/* watch */
.dh-years a.on{font-weight:700;text-decoration:underline}
/* Watch filters: collapsed <details> so they don't eat the screen on phones */
.wt-filterbox{position:sticky;top:0;z-index:3;margin:0 -20px 14px;background:var(--bg);border-bottom:1px solid var(--line)}
.wt-filterbox>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:9px 20px;font-size:13px;user-select:none}
.wt-filterbox>summary::-webkit-details-marker{display:none}
.wt-filterbox>summary::before{content:"";width:0;height:0;border:5px solid transparent;border-left:7px solid var(--muted);margin-right:-2px;transition:transform .15s}
.wt-filterbox[open]>summary::before{transform:rotate(90deg)}
.wt-filterbox>summary strong{font-weight:600}
.wt-filterbox>summary .dh-count{min-width:0}
.wt-filterbox>summary .wt-narrowed{display:none;color:var(--accent);font-weight:600}
.wt-filterbox.narrowed>summary .wt-narrowed{display:inline}
.wt-filterbox .wt-filters{position:static;margin:0;padding:4px 20px 12px;border-bottom:none}
.wt-filters .dh-lbl{width:56px}
@media(max-width:700px){.wt-filterbox{margin:0 -12px 12px}.wt-filterbox>summary,.wt-filterbox .wt-filters{padding-left:12px;padding-right:12px}.wt-filters .dh-lbl{width:100%}.wt-filters .dh-lbl-gap{margin-left:0;margin-top:6px}}
#f-nfl .tog{min-width:40px;padding:2px 5px}
#f-pos .tog[aria-pressed=true]{border-color:transparent}
#f-pos .tog.pos-QB[aria-pressed=true]{background:#c0392b}#f-pos .tog.pos-RB[aria-pressed=true]{background:#27ae60}#f-pos .tog.pos-WR[aria-pressed=true]{background:#2980b9}
#f-pos .tog.pos-TE[aria-pressed=true]{background:#e67e22}#f-pos .tog.pos-K[aria-pressed=true]{background:#7f8c8d}#f-pos .tog.pos-DST[aria-pressed=true]{background:#8e44ad}
.wt-matchups{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}
.wt-matchup{padding:4px 10px;border:1px solid var(--line);border-radius:6px;background:#faf8f3;font-weight:600}
.wt-matchup.me{background:var(--me);border-color:#e0c98a}
.wt-day{margin-top:22px}
.wt-games{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}
.wt-game{display:flex;flex-direction:column;gap:8px}
.wt-game.has-h2h{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.wt-game.live{border-color:#27ae60}
.wt-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.wt-teams{display:flex;flex-direction:column;gap:4px}
.wt-team{display:flex;align-items:center;gap:8px;font-size:15px}
.wt-logo{width:22px;height:22px}
.wt-name{font-weight:600;min-width:90px}
.wt-score{font-weight:700;font-size:16px;margin-left:auto;padding-left:8px}
.wt-when{text-align:right;white-space:nowrap}
.wt-status{font-weight:600}
.wt-status.in{color:#27ae60}
.wt-status.post{color:var(--muted)}
.wt-h2h{background:#fff3d6;border:1px solid #e0c98a;border-radius:6px;padding:6px 10px;font-size:13px}
.wt-tffl{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--line);padding-top:8px}
.wt-row{display:grid;grid-template-columns:64px 1fr;gap:8px;align-items:start;font-size:13px}
.wt-row.me{background:var(--me);margin:0 -6px;padding:2px 6px;border-radius:4px}
.wt-abbr{font-weight:700}
.wt-players{display:flex;flex-wrap:wrap;gap:4px 12px}
.wt-p{white-space:nowrap}
.wt-p.bench{opacity:.55}
.wt-hl{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));margin-top:8px}
.wt-hl-m{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#faf8f3}
.wt-hl-m.me{background:var(--me);border-color:#e0c98a}
.wt-hl-title{font-weight:700;font-size:15px;margin-bottom:6px}
.wt-hl-title .muted{font-weight:400}
.wt-hl-g{padding:6px 0;border-top:1px solid var(--line);font-size:13px}
.wt-hl-when{color:var(--muted);font-size:12px}
.wt-hl-side{display:grid;grid-template-columns:52px 1fr;gap:6px;margin-top:3px}
.wt-hl-side b{font-size:12px}
.wt-hl-none{color:var(--muted);font-size:12px;padding-top:6px;border-top:1px solid var(--line)}

/* Schedule + matchup box score */
a.tog{display:inline-block;text-decoration:none;line-height:1.5}
.sc-teams{display:flex;flex-wrap:wrap;align-items:center;gap:3px;margin:0 0 14px}
.sc-record{margin-left:10px}
.sc-weeks{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}
.sc-week h2{margin-top:0;font-size:16px}
.sc-week.upcoming{opacity:.85}
.sc-table{width:100%}.sc-table td{padding:5px 6px;vertical-align:middle}
.sc-table .sc-side{width:32%}.sc-table .sc-side a{text-decoration:none;color:var(--fg)}
.sc-table .won a{font-weight:700}
.sc-table .sc-score{text-align:right;font-variant-numeric:tabular-nums;width:3em}
.sc-table .sc-at{text-align:center;width:2em}
.sc-table .sc-link{text-align:right;font-size:12px;white-space:nowrap}
.sc-table tr.me td{background:var(--me)}
.mu-title b{font-variant-numeric:tabular-nums}
.mu-title .won{font-weight:800}
.mu-score{font-variant-numeric:tabular-nums;margin-left:6px}
.mu-cols .vs-col.me{background:var(--me);border-radius:6px;padding:12px;margin:-12px 0 0}
.mu-table{width:100%}.mu-table td,.mu-table th{padding:5px 6px;vertical-align:top}
.mu-table tr.mu-total td{border-top:2px solid var(--line);font-weight:600}
.mu-table .mu-bench th{padding-top:14px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;text-align:left}
.mu-table .mu-bench td{color:var(--muted)}.mu-table .mu-bench td a{color:var(--muted)}
.mu-table tr.mu-ir td{opacity:.6}
@media(max-width:700px){.sc-weeks{grid-template-columns:1fr}.mu-cols .vs-col{min-width:100%;padding-left:0;border-left:none}.mu-table td.muted{font-size:11px}}

/* Points page + player history grid */
.pt-filterbox{margin-bottom:12px}
#pt-nfl .tog{min-width:40px;padding:2px 5px}
#pt-pos .tog[aria-pressed=true]{border-color:transparent}
#pt-pos .tog.pos-QB[aria-pressed=true]{background:#c0392b}#pt-pos .tog.pos-RB[aria-pressed=true]{background:#27ae60}#pt-pos .tog.pos-WR[aria-pressed=true]{background:#2980b9}
#pt-pos .tog.pos-TE[aria-pressed=true]{background:#e67e22}#pt-pos .tog.pos-K[aria-pressed=true]{background:#7f8c8d}#pt-pos .tog.pos-DST[aria-pressed=true]{background:#8e44ad}
.pt-table td,.pt-table th{padding:3px 5px;white-space:nowrap;font-size:13px;font-variant-numeric:tabular-nums}
.pt-table th.num,.pt-table td.wk{padding-left:3px;padding-right:3px;min-width:2em}
.pt-table td.wk{font-weight:600}.pt-table td.wk.none{color:#c8c3b8;font-weight:400}.pt-table td.wk.sat{color:#a9a49a;text-decoration:line-through;font-weight:400}
.pt-table th.sortable{cursor:pointer;user-select:none}
.pt-table th.sortable:hover{color:var(--accent)}
.pt-table th.sort::after{content:" ▾";font-size:10px}.pt-table th.sort.asc::after{content:" ▴"}
.pt-table td.num.muted{color:#c8c3b8}
.pt-hist td,.pt-hist th{padding:3px 5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pt-hist td.num.muted{color:#c8c3b8}

/* Team page: Points tab */
.tp-bar{align-items:center;gap:8px}
.tp-bar select{padding:4px 6px;font-size:13px;margin-left:4px}
#tp-pos .tog[aria-pressed=true]{border-color:transparent}
#tp-pos .tog.pos-QB[aria-pressed=true]{background:#c0392b}#tp-pos .tog.pos-RB[aria-pressed=true]{background:#27ae60}#tp-pos .tog.pos-WR[aria-pressed=true]{background:#2980b9}
#tp-pos .tog.pos-TE[aria-pressed=true]{background:#e67e22}#tp-pos .tog.pos-K[aria-pressed=true]{background:#7f8c8d}#tp-pos .tog.pos-DST[aria-pressed=true]{background:#8e44ad}
.tp-table td,.tp-table th{padding:3px 4px;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px}
.tp-table th.num,.tp-table td.wk{padding-left:3px;padding-right:3px;min-width:2em}
.tp-table td.wk.none{color:#c8c3b8}
.tp-table td.wk.sat{color:#a9a49a;text-decoration:line-through}
.tp-table td.wk{font-weight:600}.tp-table td.wk.sat{font-weight:400}
.tp-who{white-space:nowrap}
.tp-nfl{display:inline-block;min-width:2.6em;margin-left:4px;color:var(--muted);font-size:10.5px;letter-spacing:.02em}
.tp-table tfoot td{border-top:2px solid var(--line);font-weight:600}
.tp-cols .vs-col{min-width:340px}

/* Big team emoji in tile headers */
.big-emoji{font-size:1.9em;line-height:1;vertical-align:-0.18em;margin-right:3px}
.wt-matchup .big-emoji{font-size:1.6em}
.mu-title .big-emoji{font-size:1.4em;vertical-align:-0.1em}

/* Shoulda Played 'Em */
.sp-card{margin-bottom:16px}
.sp-grid{display:grid;gap:18px;grid-template-columns:minmax(280px,1.2fr) repeat(2,minmax(240px,1fr))}
@media(max-width:900px){.sp-grid{grid-template-columns:1fr}}
.sp-scen td,.sp-scen th{padding:4px 8px}
.sp-scen tr.real td{font-weight:600}
.sp-scen tr.flip td{background:#fff3e0}
.sp-scen td.won{font-weight:700}
.sp-head{margin-bottom:6px}
.sp-swap{font-size:13px;padding:3px 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sp-swap:first-child{border-top:none}
.sp-in{color:#1e7d3a}.sp-out{color:#a33}

/* Team header: Packed Bowl drought badge */
.team-head{display:flex;align-items:center;justify-content:flex-start;gap:24px;flex-wrap:wrap;margin-bottom:4px}
.team-head h1{margin-bottom:4px}
.drought{display:flex;align-items:center;gap:10px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:var(--card);white-space:nowrap}
.drought .d-num{font-size:34px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--accent)}
.drought .d-lbl{font-size:12px;line-height:1.25;font-weight:600}
.drought.long .d-num{color:#a33}
.drought.champ{background:#fff8e1;border-color:#e0c98a}
.drought.never .d-num{font-size:22px;color:#a33}

/* Week box scores */
.sc-all{margin-left:8px;font-weight:400}
.wk-top{max-width:none;margin:0 0 14px}
.wk-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(440px,1fr))}
.wk-card.me{background:var(--me)}
.wk-card h2 a{text-decoration:none;color:var(--fg)}.wk-card h2 .won{font-weight:800}
.wk-shoulda{margin:-4px 0 8px;color:var(--muted)}
.wk-sides{display:grid;gap:12px;grid-template-columns:1fr 1fr}
.wk-table td,.wk-table th{padding:2px 4px;font-size:12.5px;white-space:nowrap}
.wk-table th{font-size:12px}
.wk-table .wk-pos{width:2.4em}
.wk-table tr.wk-bench td{border-top:1px solid var(--line)}
@media(max-width:700px){.wk-grid{grid-template-columns:1fr}.wk-sides{grid-template-columns:1fr}}

/* Players list: click-to-sort headers, both directions */
.pl-table th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.pl-table th.sortable:hover{color:var(--accent)}
.pl-table th.sort::after{content:" ▾";font-size:10px}.pl-table th.sort.asc::after{content:" ▴"}

/* Team page: Packed Bowl banner */
.pb-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:6px 0 10px;padding:10px 14px;border-radius:8px;background:linear-gradient(90deg,#fff3c4,#fff8e6);border:1px solid #e0c98a}
.pb-count{font-size:15px;white-space:nowrap}.pb-count b{font-size:20px}
.pb-list{display:flex;flex-wrap:wrap;gap:6px}
.pb-chip{background:#fff;border:1px solid #e0c98a;border-radius:6px;padding:3px 9px;font-size:13px;white-space:nowrap}
.pb-chip .pb-year{font-weight:700}.pb-chip .pb-score{font-variant-numeric:tabular-nums;color:var(--muted)}

/* Points page: visible filter bar with collapsible groups */
.pt-filterbox{position:static;margin:0 0 12px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card)}
.pt-filterbox .dh-row input[type=search]{max-width:280px}
.pt-group>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:4px 0;user-select:none}
.pt-group>summary::-webkit-details-marker{display:none}
.pt-group>summary::before{content:"";width:0;height:0;border:4px solid transparent;border-left:6px solid var(--muted);transition:transform .15s}
.pt-group[open]>summary::before{transform:rotate(90deg)}
.pt-group>summary .dh-lbl{width:auto;min-width:40px}
.pt-group>summary .pt-sum{font-size:12px;color:var(--muted)}.pt-group>summary .pt-sum.on{color:var(--accent);font-weight:600}
.pt-group>.dh-row{padding:4px 0 8px 18px}

/* Vault splash background: brushed steel door instead of a photo */
.welcome-vault{background:radial-gradient(ellipse at 50% 45%, #3a3d44 0%, #24262b 45%, #101114 100%);animation:none}
.welcome-vault::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg, rgba(255,255,255,.025) 0 2px, transparent 2px 7px)}
.welcome-badge{border:4px solid #8b1e2d;box-shadow:0 0 0 8px rgba(139,30,45,.18), 0 10px 40px rgba(0,0,0,.6)}
.welcome-tag{margin-top:22px;font-size:clamp(13px,2vw,16px);letter-spacing:.14em;text-transform:uppercase;color:#d9d4c7;opacity:0;animation:welcomeFadeUp .6s ease 1.25s forwards}

/* Splash: the Packed Bowl itself, text anchored to the bottom so the bowl stays clear */
.welcome-trophy{background-color:#000;background-size:contain;background-position:center top;filter:none}
.welcome-screen:has(.welcome-trophy) .welcome-scrim{background:linear-gradient(to top, rgba(0,0,0,.92) 0%, rgba(0,0,0,.55) 30%, rgba(0,0,0,0) 60%)}
.welcome-screen:has(.welcome-trophy) .welcome-content{justify-content:flex-end;padding-bottom:7vh}
.welcome-screen:has(.welcome-trophy) .welcome-line1{margin-top:0}
