@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{--ink:#20364f;--muted:#697c92;--line:#dfe6ef;--paper:#fff;--canvas:#f2f5fa;--navy:#122b45;--ice:#b9d9ff;--blue:#326cab;--amber:#94601a;--red:#ac493b;--radius:15px;font-family:'DM Sans',-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:var(--canvas);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.5}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #4c8ddd;outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.5}.skip{position:fixed;left:240px;top:-100px;background:var(--ice);padding:12px;z-index:50}.skip:focus{top:10px}.sidebar{width:226px;position:fixed;inset:0 auto 0 0;background:var(--navy);color:#d9dfe7;display:flex;flex-direction:column;padding:30px 18px;z-index:30}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:Manrope,sans-serif;font-weight:800;font-size:23px;letter-spacing:-1.2px;padding:0 6px}.brand-dot{color:var(--ice)}.workspace-label{font-size:9px;font-weight:600;letter-spacing:1.8px;color:#8193a8;margin:46px 15px 16px}.nav-link{display:flex;gap:13px;align-items:center;border-radius:8px;padding:13px 15px;margin:4px 0;text-decoration:none;font-size:13px;font-weight:500;color:#abb7c5}.nav-link:hover{background:#192b40;color:white}.nav-link.active{background:var(--ice);color:var(--navy);font-weight:700}.nav-icon{width:18px;height:18px;display:block;flex:none}.nav-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.sidebar-bottom{margin-top:auto}.season-tag{font-size:9px;font-weight:600;letter-spacing:1.1px;border-top:1px solid #2d3f55;padding:22px 12px 12px;display:flex;align-items:center;gap:8px}.pulse{height:6px;width:6px;border-radius:50%;background:var(--ice)}.sidebar-source{font-size:11px;color:#b4bfcd;background:transparent;border:0;width:100%;padding:4px 12px 18px;text-align:left}.sidebar-source span{float:right}.profile{border-top:1px solid #2d3f55;display:flex;gap:10px;align-items:center;padding:21px 10px 0}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#344559;color:#dce8f6;font-family:Manrope;font-weight:800}.profile strong{display:block;font-size:12px}.profile small{font-size:9px;color:#8d9db0}.profile-dot{margin-left:auto;width:5px;height:5px;background:#b4bfcc;border-radius:50%}.workspace{margin-left:226px}.topbar{height:70px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 40px;background:#f6f9fc}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb span{padding:0 11px;color:#afbac7}.breadcrumb strong{font-weight:550;color:var(--ink)}.topbar-right{display:flex;gap:17px;align-items:center}.preview-label{font-size:9px;letter-spacing:1.3px;color:var(--muted)}.icon-button{border:1px solid var(--line);background:white;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;font-size:15px}.menu-toggle{display:none}.workspace main{max-width:1520px;margin:auto;padding:32px 40px 20px}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:650;color:var(--blue);text-transform:uppercase}.page-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:23px;gap:15px}.page-heading h1{font-family:Manrope,sans-serif;font-size:32px;letter-spacing:-1.45px;line-height:1.2;margin:6px 0 8px;font-weight:800}.page-heading p{color:var(--muted);margin:0;font-size:12px}.heading-controls{display:flex;align-items:center;gap:9px;flex-shrink:0}.control{border:1px solid #d0d8e1;background:white;border-radius:8px;padding:9px 13px;font-size:12px;font-weight:550;color:var(--ink)}.control:hover{border-color:#8b9db4}.control.primary{background:var(--navy);color:white;border-color:var(--navy)}.pill{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;font-size:10px;font-weight:550;border-radius:5px;background:#e6edf5;color:#3c587b;white-space:nowrap}.pill.warn{background:#fbf0d9;color:#95661f}.pill.muted{background:#eceff2;color:#607289}.pill.error{background:#fbece8;color:var(--red)}.hero{background:var(--navy);border-radius:var(--radius);color:#e9f0f8;overflow:hidden;position:relative;isolation:isolate}.hero:before{content:'';position:absolute;right:18%;top:-120px;width:300px;height:350px;border:1px solid #3847593b;border-radius:50%;transform:rotate(-20deg);pointer-events:none;z-index:-1}.hero-top{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #40516566;padding:15px 23px;font-size:10px;letter-spacing:1px;color:#afbdce}.hero-top strong{font-weight:500;letter-spacing:1.2px;color:#c3d7ef}.matchup{display:grid;grid-template-columns:1fr 160px 1fr;align-items:center;padding:22px 30px;gap:12px}.match-team{display:flex;align-items:center;gap:16px;min-width:0}.match-team.away{flex-direction:row-reverse;text-align:right}.team-crest{width:65px;height:65px;object-fit:contain;background:#ffffff0d;border:1px solid #627a9744;border-radius:14px;padding:5px;flex-shrink:0}.crest-fallback{display:grid;place-items:center;font-family:Manrope;font-size:23px;font-weight:800;color:#b9d9ff}.team-role{font-size:9px;letter-spacing:1.4px;color:#8ba1bc;margin-bottom:3px}.match-team h2{font-family:Manrope;font-size:18px;line-height:1.3;font-weight:750;letter-spacing:-.5px;margin:0;max-width:240px}.team-sub{color:#a4b2c2;font-size:11px;margin-top:5px}.match-center{text-align:center}.vs{font-size:12px;font-weight:600;letter-spacing:2px;color:#7c94b2}.match-center p{font-size:11px;color:#b3c3d7;margin:6px 0 0}.hero-bottom{display:flex;align-items:center;gap:8px;padding:10px 23px;background:#1b2c41;font-size:11px;color:#b0c5df}.hero-bottom .small-dot{height:5px;width:5px;background:#dfbd79;border-radius:50%;flex:none}.hero-bottom button{margin-left:auto;color:#cadcf1;border:0;background:transparent;font-size:11px;text-decoration:underline;text-underline-offset:3px}.section-tabs{display:flex;gap:23px;border-bottom:1px solid #d4dbe4;margin:24px 0 22px;overflow:auto;white-space:nowrap}.tab{background:transparent;border:0;padding:0 1px 12px;color:#657992;font-size:12px;font-weight:550;border-bottom:2px solid transparent}.tab.active{color:var(--ink);border-bottom-color:var(--navy);font-weight:650}.tab .tiny-dot{display:inline-block;width:5px;height:5px;background:#bfaa75;border-radius:50%;margin-left:5px;vertical-align:middle}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 278px;gap:22px;align-items:start}.card{background:white;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.card-head{padding:19px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}.card-head h2,.section-head h2{font-family:Manrope;font-size:15px;font-weight:750;letter-spacing:-.35px;margin:0}.card-head p,.section-head p{font-size:11px;color:var(--muted);margin:4px 0 0}.head-actions{display:flex;gap:8px;align-items:center}.segmented{display:flex;border:1px solid var(--line);padding:3px;border-radius:7px;background:#f2f5f8}.segmented button{border:0;background:transparent;padding:5px 10px;border-radius:4px;color:var(--muted);font-size:10px;white-space:nowrap}.segmented button.active{background:white;box-shadow:0 1px 3px #14243813;color:var(--ink);font-weight:600}.player-list{width:100%;border-collapse:collapse;table-layout:fixed}.player-list thead{background:#f7f9fc;font-size:9px;color:#778aa1;letter-spacing:.65px;text-transform:uppercase}.player-list th{text-align:right;font-weight:500;padding:11px 16px}.player-list th:first-child{text-align:left;width:51%;padding-left:22px}.player-list th:nth-child(2){width:19%}.player-list th:nth-child(3){width:15%}.player-list th:nth-child(4){width:15%}.player-list td{border-top:1px solid #e7ebf1;text-align:right;padding:10px 16px;font-size:12px;height:65px}.player-list td:first-child{text-align:left;padding-left:20px}.player-list tr:hover td{background:#f6f9fc}.player-identity{display:flex;align-items:center;gap:10px;min-width:0}.slot{font-size:9px;font-weight:650;color:#71849c;min-width:24px}.headshot{height:38px;width:38px;object-fit:contain;flex:none;background:#eaeef3;border-radius:50%}.player-name{font-size:12px;font-weight:650;line-height:1.2;white-space:normal}.player-meta{font-size:9px;color:#778aa1;margin-top:5px}.opponent{font-size:10px;color:#5d6f85}.number{font-family:Manrope,sans-serif;font-size:16px;letter-spacing:-.4px;font-weight:750;font-variant-numeric:tabular-nums}.value-button{border:0;padding:0;background:transparent;text-align:inherit;color:inherit;font:inherit;cursor:pointer;border-bottom:1px dotted transparent}.value-button:hover{border-bottom-color:#7388a1}.unavailable{font-size:10px;color:#8495a9;line-height:1.3}.value-sub{font-size:8px;color:#8697ab;line-height:1.2;margin-top:3px}.card-foot{padding:12px 21px;font-size:10px;color:#72859d;border-top:1px solid var(--line);background:#f7f9fc}.side-stack{display:grid;gap:17px}.insight{padding:22px}.insight h3{font-family:Manrope;font-size:14px;font-weight:750;letter-spacing:-.3px;margin:10px 0 8px}.insight p{font-size:11px;color:var(--muted);line-height:1.65;margin:0}.insight-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#dfe9f5;font-size:16px}.insight .control{margin-top:16px;display:inline-flex;text-decoration:none;font-size:10px;width:100%;justify-content:center}.insight-rule{height:1px;background:var(--line);margin:16px 0}.mini-label{font-size:9px;letter-spacing:.9px;color:#74879e;text-transform:uppercase}.mini-value{font-size:12px;font-weight:550;margin:5px 0 0}.coverage-list{display:grid;gap:13px;margin-top:18px}.coverage-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:#6383aa;margin-right:8px}.status-dot.missing,.status-dot.stale{background:#c0a066}.status-dot.invalid{background:#c86d55}.side-note{font-size:10px;color:#7a8ca2;padding:0 9px;line-height:1.7}.side-note strong{color:#5c6e84;font-weight:550}.section-head{margin:28px 0 16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.table-card{margin-bottom:22px}.table-description{max-width:720px}.data-table-wrap{overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:11px;text-align:left}.data-table th{font-size:9px;color:#70849c;letter-spacing:.55px;text-transform:uppercase;background:#f6f9fc;padding:12px 18px;font-weight:550;white-space:nowrap}.data-table td{padding:14px 18px;border-top:1px solid #e7ebf1;min-width:90px;max-width:290px;overflow-wrap:anywhere}.data-table tr:hover td{background:#f6f9fc}.data-table .value-button{max-width:290px}.empty-state{padding:38px 24px;text-align:center}.empty-state .empty-icon{display:grid;place-items:center;margin:auto auto 14px;width:42px;height:42px;border-radius:12px;color:#496281;background:#e5ecf5;font-size:22px}.empty-state h3{font-family:Manrope;font-size:16px;margin:0 0 8px;letter-spacing:-.4px}.empty-state p{max-width:520px;margin:0 auto;font-size:12px;line-height:1.75;color:var(--muted)}.empty-state button{margin-top:18px}.notice{padding:13px 17px;border:1px solid #e7ddc5;background:#faf6e9;border-radius:9px;font-size:11px;line-height:1.65;color:#87764e;margin-bottom:20px}.notice strong{color:#695935}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;margin:0 0 24px}.summary-card{padding:22px}.summary-card .summary-icon{font-size:18px;margin-bottom:15px;color:#4b6686}.summary-card h3{font-family:Manrope;font-size:17px;letter-spacing:-.5px;margin:7px 0}.summary-card p{font-size:11px;color:var(--muted);line-height:1.6;margin:0}.section-tools{display:flex;gap:10px;align-items:center}.search-input{background:white;border:1px solid var(--line);border-radius:8px;padding:9px 13px;width:230px;font-size:11px}.research-list{display:grid;gap:12px}.research-item{padding:20px 23px}.research-item-top{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.research-item h3{font-family:Manrope;font-size:14px;line-height:1.6;letter-spacing:-.15px;margin:0;font-weight:650}.research-item .record-file{font-size:10px;color:#75889f;margin-top:10px;overflow-wrap:anywhere}.research-item details{font-size:11px;color:var(--muted);margin-top:12px}.research-item details summary{cursor:pointer;color:#576b83}.research-item .record-note{line-height:1.8;margin-top:10px;white-space:pre-wrap;overflow-wrap:anywhere}.product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.product-card{padding:20px}.product-card h3{font-family:Manrope;font-size:13px;margin:13px 0 8px}.product-card p{font-size:11px;line-height:1.7;color:var(--muted);margin:0}.source-summary{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:18px 0}.source-summary button{color:var(--blue);border:0;background:transparent;font-size:11px;padding:0}.pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin:22px 0;color:var(--muted);font-size:11px}.arm-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.arm-card{padding:23px}.arm-symbol{font-family:Manrope;font-size:26px;font-weight:800;letter-spacing:-1px}.arm-card h3{font-size:11px;font-weight:600;margin:5px 0}.arm-card p{font-size:10px;color:var(--muted);line-height:1.7}.arm-card.missing{background:#f3f6f9;border-style:dashed}.filter-empty{padding:30px;text-align:center;color:var(--muted)}.loading-state{padding:80px 30px;text-align:center}.loading-state h1{font-family:Manrope;font-size:24px;letter-spacing:-1px}.loading-state p{font-size:12px;color:var(--muted)}.loader{display:inline-block;width:28px;height:28px;border-radius:50%;border:2px solid #cfdae8;border-top-color:var(--blue);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}footer{padding:22px 40px 30px;font-size:10px;color:#7d8fa5;display:flex;justify-content:space-between;gap:15px}footer button{color:#5f7289;font:inherit;border:0;padding:0;background:transparent}dialog{border:1px solid #ccd5e1;border-radius:16px;padding:27px;width:min(680px,calc(100% - 30px));max-height:85vh;color:var(--ink);box-shadow:0 30px 100px #0c1a2b44}dialog::backdrop{background:#0d192766;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:20px;margin-bottom:20px}.dialog-head h2{font-family:Manrope;font-size:23px;letter-spacing:-.9px;margin:6px 0}.source-field{display:grid;grid-template-columns:130px minmax(0,1fr);gap:12px;border-top:1px solid var(--line);padding:12px 0;font-size:12px}.source-field dt{color:var(--muted)}.source-field dd{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.source-json{max-height:340px;overflow:auto;font:10px/1.7 ui-monospace,monospace;background:#eff3f8;border-radius:8px;padding:15px;white-space:pre-wrap;overflow-wrap:anywhere}.source-help{font-size:12px;color:var(--muted);line-height:1.7}.source-big-value{font-family:Manrope;font-size:35px;font-weight:800;letter-spacing:-1px;margin:7px 0 15px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--navy);color:white;padding:12px 20px;border-radius:8px;box-shadow:0 5px 30px #20364f22;display:none;z-index:99;font-size:12px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1550px){.workspace main{padding-top:40px}.content-grid{grid-template-columns:minmax(0,1fr) 305px}.matchup{padding:25px 35px}.player-list td{height:71px}.player-name{font-size:13px}}
@media(max-width:1190px){.sidebar{width:198px;padding-left:12px;padding-right:12px}.workspace{margin-left:198px}.brand{font-size:21px}.workspace main{padding:26px}.topbar{padding:0 26px}.content-grid{grid-template-columns:minmax(0,1fr)}.side-stack{grid-template-columns:repeat(2,1fr)}.side-note{grid-column:1/-1}.matchup{grid-template-columns:1fr 110px 1fr;padding:22px}.match-team h2{font-size:16px}.team-crest{height:55px;width:55px}.match-team{gap:11px}.product-grid{grid-template-columns:repeat(2,1fr)}footer{padding-left:26px;padding-right:26px}}
@media(max-width:780px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:226px;box-shadow:15px 0 70px #122b4522}.sidebar.open{transform:translateX(0)}.workspace{margin-left:0}.topbar{height:55px;padding:0 19px}.menu-toggle{display:block;border:0;background:transparent;padding:7px;font-size:18px;margin-left:-7px;margin-right:8px}.breadcrumb{margin-right:auto;font-size:11px}.topbar-right{gap:10px}.preview-label{font-size:8px}.workspace main{padding:23px 18px}.page-heading h1{font-size:27px}.page-heading{margin-bottom:19px}.page-heading p{font-size:11px}.heading-controls .control{padding:8px 10px;font-size:11px}.heading-controls .secondary-control{display:none}.matchup{grid-template-columns:1fr 65px 1fr;padding:20px 18px;gap:4px}.match-team{display:block;text-align:left}.match-team.away{text-align:right;display:block}.team-crest{width:47px;height:47px;padding:3px;border-radius:10px;margin-bottom:7px}.crest-fallback{display:inline-grid}.match-team h2{font-size:15px;max-width:170px;line-height:1.3}.team-role{font-size:8px}.team-sub{font-size:9px}.match-center p{font-size:9px;line-height:1.5}.hero-top{padding:12px 16px;font-size:8px;letter-spacing:.5px}.hero-top strong{letter-spacing:.7px}.hero-bottom{padding:10px 15px;align-items:start;font-size:9px;gap:7px}.hero-bottom .small-dot{margin-top:4px}.hero-bottom button{white-space:nowrap;font-size:9px}.section-tabs{margin-top:21px;gap:23px}.card-head{padding:15px 16px}.card-head h2{font-size:14px}.card-head p{font-size:9px}.segmented button{font-size:9px;padding:5px 7px}.player-list th{padding:10px;font-size:8px}.player-list th:first-child{width:58%;padding-left:14px}.player-list th:nth-child(2){width:17%}.player-list th:nth-child(3){width:25%}.player-list th:nth-child(4),.player-list td:nth-child(4){display:none}.player-list td{padding:10px;height:67px;font-size:11px}.player-list td:first-child{padding-left:13px}.player-identity{gap:7px}.player-name{font-size:11px}.slot{min-width:19px;font-size:8px}.headshot{height:31px;width:31px}.player-meta{font-size:8px}.opponent{font-size:9px}.number{font-size:16px}.card-foot{font-size:9px;padding:11px 14px}.summary-grid{grid-template-columns:1fr;gap:11px}.summary-card{padding:18px;display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:12px}.summary-card .summary-icon{grid-row:1/4;margin-top:4px}.summary-card .eyebrow,.summary-card h3,.summary-card p{grid-column:2}.summary-card h3{font-size:15px;margin:4px 0}.summary-card p{font-size:10px}.product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.product-card{padding:15px}.product-card h3{font-size:12px}.product-card p{font-size:10px}.arm-cards{grid-template-columns:repeat(2,1fr);gap:10px}.arm-card{padding:17px}.section-head{align-items:start;flex-direction:column}.section-tools{width:100%}.search-input{width:100%}.research-item{padding:17px}.research-item h3{font-size:12px}.research-item-top{align-items:start}.research-item .pill{max-width:250px;white-space:normal;overflow-wrap:anywhere}.source-field{grid-template-columns:100px minmax(0,1fr);font-size:11px}.side-stack{gap:12px}.insight{padding:18px}.insight p{font-size:10px}.insight h3{font-size:12px}.insight .control{font-size:9px}.coverage-row{font-size:10px}.coverage-row .pill{font-size:8px;padding:3px 5px}footer{padding:15px 20px 25px;font-size:9px;flex-direction:column;gap:5px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.sidebar,.topbar,.heading-controls,dialog{display:none}.workspace{margin:0}.workspace main{padding:0}.card,.hero{break-inside:avoid}.hero{background:white;color:black;border:1px solid #ccc}.hero *{color:black!important}.content-grid{display:block}footer{padding:10px 0}}

.mobile-actual{display:none}.stored-delta{font-size:10px;margin-top:4px}.stored-delta.positive{color:#326cab}.stored-delta.negative{color:#b15143}@media(max-width:780px){.mobile-actual{display:block;font-size:8px;color:#74879f;margin-top:5px}.mobile-actual .unavailable{font-size:8px}.stored-delta{font-size:9px}}
/* Matchup displays saved players in paired fantasy slots; it derives no scores. */
.head-to-head { overflow:hidden; }
.head-team-labels, .head-row { display:grid; grid-template-columns:minmax(0,1fr) 52px minmax(0,1fr); }
.head-team-labels { align-items:center; padding:19px 24px; background:#eef4fb; border-top:1px solid var(--line); }
.head-team-labels h3 { margin:4px 0 0; font:750 15px/1.4 Manrope,sans-serif; letter-spacing:-.3px; }
.head-team-labels > :last-child { text-align:right; }
.head-versus { text-align:center; color:#728ca9; font-size:10px; font-weight:650; letter-spacing:1px; }
.head-row { border-top:1px solid var(--line); }
.head-row:hover { background:#f8faff; }
.head-player { min-width:0; display:flex; justify-content:space-between; gap:16px; align-items:center; padding:19px 24px; }
.head-identity { display:flex; gap:11px; align-items:center; min-width:0; }
.head-identity > div { min-width:0; }
.head-identity .player-name { font-size:13px; line-height:1.4; }
.head-identity .player-meta { font-size:10px; line-height:1.5; color:#697c92; }
.head-score { text-align:right; flex-shrink:0; }
.head-score .number { font-size:23px; margin:2px 0; color:#245c99; }
.head-score .mini-label { font-size:8px; color:#73859b; }
.head-score .value-sub { font-size:9px; color:#73859b; }
.head-actual { margin-top:7px; font-size:9px; color:#73859b; }
.head-actual > div { display:inline; }
.head-actual .unavailable { font-size:9px; color:#73859b; }
.head-actual .stored-delta { font-size:9px; }
.head-player.away { flex-direction:row-reverse; }
.head-player.away .head-identity { flex-direction:row-reverse; text-align:right; }
.head-player.away .head-score { text-align:left; }
.head-slot { display:grid; place-items:center; position:relative; }
.head-slot::before { content:''; position:absolute; top:0; bottom:0; left:50%; width:1px; background:var(--line); }
.head-slot span { position:relative; border:1px solid #dbe5f1; background:#f2f6fc; color:#5d7695; border-radius:6px; padding:5px 6px; font-size:9px; font-weight:650; min-width:33px; text-align:center; }
.head-player-empty { font-size:11px; color:var(--muted); }
@media(max-width:1000px) {
  .head-player { padding:17px; gap:12px; }
  .head-identity .headshot { display:none; }
}
@media(max-width:600px) {
  .head-to-head .card-head { gap:10px; flex-wrap:wrap; }
  .head-team-labels, .head-row { grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr); }
  .head-team-labels { padding:14px 12px; }
  .head-team-labels h3 { font-size:12px; }
  .head-team-labels .mini-label { font-size:8px; }
  .head-player, .head-player.away { flex-direction:column; align-items:stretch; padding:14px 12px; gap:10px; }
  .head-identity { min-height:56px; align-items:start; }
  .head-identity .player-name { font-size:11px; }
  .head-identity .player-meta { font-size:9px; margin-top:3px; }
  .head-player .head-score { text-align:left; }
  .head-player.away .head-score { text-align:right; }
  .head-score .number { font-size:22px; }
  .head-score .value-sub { font-size:8px; }
  .head-actual { margin-top:5px; }
  .head-slot span { font-size:8px; min-width:28px; padding:4px; }
}
/* Fast week selection and optional compact matchup rows. */
.week-navigation { display:flex; align-items:center; gap:15px; margin:-3px 0 18px; min-width:0; }
.week-nav-label { font-size:8px; font-weight:650; color:var(--muted); letter-spacing:1.3px; }
.week-rail { display:flex; gap:5px; overflow-x:auto; padding:3px; min-width:0; scrollbar-width:thin; }
.week-chip { flex:0 0 54px; min-height:42px; display:grid; place-items:center; gap:1px; border:1px solid var(--line); border-radius:6px; color:#6b7e94; background:#fff; font-size:11px; font-weight:650; }
.week-chip small { display:block; max-width:50px; overflow:hidden; text-overflow:ellipsis; font-size:7px; line-height:1; font-weight:550; color:#8392a4; white-space:nowrap; }
.week-chip.is-live { border-color:#4f9577; }
.week-chip.is-final,.week-chip.is-locked { border-color:#8798ab; background:#f4f6f8; }
.week-chip.is-baseline,.week-chip.is-older-capture,.week-chip.is-horizon { border-style:dashed; }
.week-chip:hover { border-color:#8cb4e5; }
.week-chip.selected { background:var(--navy); border-color:var(--navy); color:#fff; }
.week-chip.selected small { color:#c4d4e6; }
.week-state { display:inline-flex; align-items:center; min-height:22px; padding:4px 8px; border:1px solid #63758b; border-radius:999px; font-size:8px; letter-spacing:.8px; color:#d2dfed; }
.week-state.is-live { border-color:#6fb496; color:#b7ebd5; }
.week-state.is-baseline,.week-state.is-older-capture { border-style:dashed; color:#c1c9d2; }
.stat-summary { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:4px 8px; font-size:10px; line-height:1.35; }
.stat-summary .value-button { padding:2px 0; color:#405b79; }
.head-view-controls { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.density-toggle { padding:7px 10px; background:transparent; border:1px solid var(--line); border-radius:7px; color:var(--muted); font-size:10px; }
.density-toggle[aria-pressed=true] { color:#245c99; border-color:#9ebfe7; background:#edf5ff; }
.head-to-head.is-compact .head-player { padding-top:9px; padding-bottom:9px; }
.head-to-head.is-compact .head-score .number { font-size:19px; margin:0; }
.head-to-head.is-compact .head-score .value-sub { display:none; }
.head-to-head.is-compact .head-actual { margin-top:2px; }
.matchup-context { display:grid; grid-template-columns:1fr 1fr; align-items:start; gap:18px; margin-top:20px; }
.forecast-context { padding:20px 22px; }
.forecast-context summary { font-size:13px; font-weight:650; cursor:pointer; }
.forecast-context summary span { display:block; margin:5px 0 0 15px; font-size:10px; font-weight:400; color:var(--muted); }
.forecast-context-body p { font-size:11px; color:var(--muted); line-height:1.7; }
.forecast-context-body dl { font-size:11px; }
.forecast-context-body dl > div { padding:10px 0; border-top:1px solid var(--line); }
.forecast-context-body dt { font-size:10px; color:var(--muted); margin-bottom:3px; }
.forecast-context-body dd { margin:0; overflow-wrap:anywhere; line-height:1.7; }
.forecast-context-body small { display:block; color:var(--muted); font-size:9px; }
@media(max-width:780px) {
  .week-navigation { gap:8px; margin-bottom:15px; }
  .week-nav-label { display:none; }
  .week-chip { flex-basis:34px; min-height:32px; font-size:10px; }
  .week-chip small { display:none; }
  .week-chip.selected { flex-basis:56px; }
  .week-chip.selected small { display:block; }
  .head-view-controls { gap:8px; }
  .density-toggle { font-size:9px; padding:7px; }
  .matchup-context { grid-template-columns:1fr; gap:12px; }
  .head-to-head.is-compact .head-player { gap:4px; }
  .head-to-head.is-compact .head-identity { min-height:40px; }
}

/* Source-specific timing is visible on every route without conflating clocks. */
.freshness{margin:-4px 0 20px;border:1px solid #d7e1ed;border-radius:10px;background:#f8fbff;color:var(--muted)}
.freshness.historical{background:#fbf8ef;border-color:#eadfc4}.freshness.mixed{background:#f9fafc}
.freshness summary{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:11px 14px;cursor:pointer;font-size:10px;line-height:1.45;list-style:none}
.freshness summary::-webkit-details-marker{display:none}.freshness summary strong{font-size:10px;color:var(--ink);white-space:nowrap}.freshness summary b{font-weight:550;color:#426b9b;white-space:nowrap}
.freshness-dot{width:7px;height:7px;border-radius:50%;background:#5b83af}.freshness.historical .freshness-dot{background:#b18743}.freshness.mixed .freshness-dot{background:#8a759f}
.freshness-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border-top:1px solid #dfe6ef;background:#dfe6ef}
.freshness-grid>div{min-width:0;background:#fff;padding:11px 14px}.freshness-grid span{display:block;font-size:8px;letter-spacing:.7px;text-transform:uppercase;color:#7a8ca2}.freshness-grid strong{display:block;margin-top:3px;font:600 10px/1.45 Manrope,sans-serif;color:#334d6b;overflow-wrap:anywhere}

/* The matchup restores the original score-first, dense comparison hierarchy. */
.matchup-scoreboard{display:grid;grid-template-columns:minmax(0,1fr) 170px minmax(0,1fr);align-items:center;position:relative;margin-bottom:13px;padding:17px 24px;border-radius:12px;background:#e9f1fa;border:1px solid #d6e1ee}
.matchup-scoreboard>div{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;align-items:center}.matchup-scoreboard>div>span{grid-column:1/-1;font-size:8px;text-transform:uppercase;letter-spacing:1px;color:#6e8299}.matchup-scoreboard>div>strong{font:750 14px/1.35 Manrope,sans-serif;overflow-wrap:anywhere}.matchup-scoreboard>div>b{font:800 27px/1 Manrope,sans-serif;color:#245c99}.matchup-scoreboard>div:nth-child(3){text-align:right}
.scoreboard-team{display:flex;align-items:center;gap:7px;grid-column:1/-1}.scoreboard-team .team-crest{width:25px;height:25px;border-radius:7px}.scoreboard-team span{font-size:8px;text-transform:uppercase;letter-spacing:1px;color:#6e8299}.matchup-scoreboard>div:nth-child(3) .scoreboard-team{justify-content:flex-end}
.matchup-scoreboard .scoreboard-center{display:flex;flex-direction:column;gap:2px;text-align:center}.matchup-scoreboard .scoreboard-center span{font-size:9px;color:#526d8c}.matchup-scoreboard .scoreboard-center strong{font-size:11px;letter-spacing:1.5px}.matchup-scoreboard .scoreboard-center small{font-size:9px;color:#71859c}
.matchup-scoreboard>p{grid-column:1/-1;margin:10px 0 -4px;padding-top:9px;border-top:1px solid #d1deeb;text-align:center;font-size:9px;color:#71859c;text-transform:capitalize}
.matchup-scoreboard.is-detailed .scoreboard-side{display:grid;grid-template-columns:minmax(0,1fr) auto}.matchup-scoreboard.is-detailed .scoreboard-side>strong{font-size:27px;color:#245c99}.scoreboard-side dl{grid-column:1/-1;display:flex;gap:16px;margin:8px 0 0}.scoreboard-side dl>div{display:flex;gap:4px;font-size:8px;color:#71859c}.scoreboard-side dt{text-transform:uppercase}.scoreboard-side dd{margin:0;font-weight:650;color:#3d5571}.matchup-scoreboard.is-detailed>div:nth-child(3) dl{justify-content:flex-end}.comparison-gap{padding:10px 18px;background:#faf6e9;color:#806d43;font-size:10px;border-bottom:1px solid #eadfc4}
.model-inventory{margin-bottom:16px;padding:0 20px 18px}.model-inventory dl{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:0}.model-inventory dl>div{min-width:0}.model-inventory dt{font-size:8px;text-transform:uppercase;color:var(--muted)}.model-inventory dd{margin:4px 0 0;overflow-wrap:anywhere}.model-inventory details{margin-top:14px}.contract-limits{display:grid;gap:8px;margin-top:16px}.contract-limits>div{padding:10px 12px;border-left:3px solid #b28a48;background:#fbf8ef}.contract-limits strong{font-size:9px;color:#715d39}.contract-limits p{margin:4px 0 0;font-size:10px;line-height:1.45}.frontier-results{margin-bottom:28px}.frontier-results .section-head p{max-width:780px}.frontier-item .record-note{margin:12px 0}.frontier-meta{display:grid;gap:5px;margin:12px 0;font-size:9px;color:var(--muted)}.evidence-list{display:grid;gap:8px;margin-top:10px}.evidence-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.evidence-list .value-button{text-align:left;overflow-wrap:anywhere}
.scenario-bar{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:14px 22px;border-bottom:1px solid var(--line);background:#fbfcfe}.scenario-bar>div{display:grid;gap:6px}.scenario-bar p{max-width:510px;margin:0;font-size:9px;line-height:1.5;color:var(--muted);text-align:right}.scenario-switch{flex-wrap:wrap}.scenario-switch button{font-size:10px}.scenario-switch button.active{background:var(--navy);color:#fff}
.head-player{display:grid;grid-template-columns:minmax(150px,1fr) minmax(175px,auto);grid-template-rows:auto auto;gap:2px 15px;padding:12px 18px}.head-player.away{direction:rtl}.head-player.away>*{direction:ltr}.head-player.away .head-identity{flex-direction:row-reverse;text-align:right}.head-identity .headshot{width:48px;height:48px}.head-identity img.headshot:not(.defense-logo){object-fit:cover;object-position:center top;border:1px solid #d8e0e9}.game-context{margin-top:3px;font-size:9px;color:#386b58;white-space:normal}.game-context .value-button{color:inherit}
.head-metrics{display:grid;grid-template-columns:60px 72px 48px;align-items:center;gap:5px;text-align:right}.head-player.away .head-metrics{text-align:left}.head-metrics>div{min-width:0}.head-metrics span{display:block;font-size:7px;text-transform:uppercase;letter-spacing:.65px;color:#8090a3}.head-metrics strong{display:block;margin-top:2px;font:750 14px/1.3 Manrope,sans-serif;color:#245c99}.head-metrics>div:nth-child(n+2) strong{font-size:11px;color:#4d6076}.head-metrics .unavailable{font-size:9px;font-weight:500}.projection-range{grid-column:2;font-size:8px;color:#8494a7;text-align:right}.head-player.away .projection-range{text-align:left}
.head-to-head.is-compact .head-player{padding-top:7px;padding-bottom:7px}.head-to-head.is-compact .headshot{width:38px;height:38px}.head-to-head.is-compact .projection-range{display:none}.head-to-head.is-compact .game-context{font-size:8px}.head-to-head.is-compact .head-metrics strong{font-size:12px}.head-to-head.is-compact .head-identity{min-height:0}
@media(max-width:1100px){.head-player{grid-template-columns:minmax(105px,1fr) 152px;padding:11px}.head-metrics{grid-template-columns:52px 58px 37px}.head-identity .headshot{width:42px;height:42px}.head-identity .player-name{font-size:11px}.game-context{font-size:8px}}
@media(max-width:780px){.freshness summary{grid-template-columns:auto auto minmax(0,1fr)}.freshness summary b{display:none}.freshness-grid{grid-template-columns:1fr 1fr}.matchup-scoreboard{grid-template-columns:minmax(0,1fr) 62px minmax(0,1fr);padding:14px 13px}.matchup-scoreboard>div{display:block}.matchup-scoreboard>div>span{display:block}.matchup-scoreboard>div>strong{display:block;font-size:11px;margin:3px 0}.matchup-scoreboard>div>b{font-size:21px}.scoreboard-team{display:flex}.scoreboard-team .team-crest{width:21px;height:21px}.matchup-scoreboard .scoreboard-center small{font-size:7px}.matchup-scoreboard.is-detailed .scoreboard-side{display:block}.matchup-scoreboard.is-detailed .scoreboard-side>strong{font-size:21px}.scoreboard-side dl{display:grid;gap:2px}.scoreboard-side dl>div{display:block}.matchup-scoreboard.is-detailed>div:nth-child(3) dl{justify-content:initial}.scenario-bar{align-items:start;flex-direction:column;padding:13px 16px;gap:7px}.scenario-bar p{text-align:left}.head-player,.head-player.away{display:flex;flex-direction:column;direction:ltr;align-items:stretch;padding:11px 9px;gap:7px}.head-player.away .head-identity{flex-direction:row-reverse;text-align:right}.head-identity{min-height:49px}.head-metrics{grid-template-columns:repeat(3,1fr);text-align:left;gap:2px}.head-player.away .head-metrics{text-align:right}.head-metrics span{display:none}.head-metrics strong{font-size:13px}.head-metrics>div:nth-child(n+2) strong{font-size:9px}.projection-range,.head-player.away .projection-range{display:none}.game-context{font-size:8px}.head-to-head.is-compact .head-identity{min-height:38px}.head-to-head.is-compact .game-context{display:none}.model-inventory dl{grid-template-columns:1fr 1fr}.evidence-list>div{align-items:flex-start;flex-direction:column}}

/* Proposed v1 decision controls stay usable at phone width. */
@media(max-width:780px){
  .roster-card .card-head{align-items:flex-start;flex-direction:column}
  .roster-card .head-actions{width:100%;justify-content:space-between;flex-wrap:wrap}
  .stat-summary{justify-content:flex-start}
}

/* Optional stat view reserves space for source-wrapped stats and keeps points visible on phones. */
.player-list.is-stats th:first-child{width:42%}
.player-list.is-stats th:nth-child(2){width:15%}
.player-list.is-stats th:nth-child(3){width:28%}
.player-list.is-stats th:nth-child(4){width:15%}
.mobile-points{display:none}

/* Matchup score columns mirror around the slot: Yahoo / Proj / Actual | Actual / Proj / Yahoo. */
.head-player,.head-player.away{display:grid;grid-template-columns:minmax(145px,1fr) repeat(3,58px);grid-template-rows:auto;align-items:center;gap:8px;padding:12px 16px;direction:ltr}
.head-player.away{grid-template-columns:repeat(3,58px) minmax(145px,1fr)}
.head-player.away .head-identity{flex-direction:row-reverse;text-align:right}
.matchup-metric{min-width:0;text-align:center;font-variant-numeric:tabular-nums}
.matchup-metric span{display:block;font-size:7px;text-transform:uppercase;letter-spacing:.65px;color:#8090a3}
.matchup-metric strong{display:block;margin-top:3px;font:750 13px/1.25 Manrope,sans-serif;color:#425c79}
.matchup-metric.is-actual strong{color:#245c99;font-size:15px}
.matchup-metric .value-button{max-width:100%}
.head-player-empty{display:flex;min-height:70px;align-items:center;color:var(--muted)}
.column-order{margin-top:6px;font-size:8px;letter-spacing:.55px;text-transform:uppercase;color:#6c829b}
.matchup-group-title{display:flex;align-items:center;justify-content:space-between;padding:9px 18px;background:#f7f9fc;border-top:1px solid var(--line);color:#516a86}
.matchup-group-title strong{font:700 10px/1.2 Manrope,sans-serif;letter-spacing:1px;text-transform:uppercase}
.matchup-group-title span{font-size:8px;color:#8796a8}
.matchup-group .head-rows .head-row:first-child{border-top:0}
.head-total{background:#edf4fb;border-top:1px solid #ccdbea;border-bottom:1px solid #ccdbea}
.head-total:hover{background:#edf4fb}
.head-total .head-player{padding-top:10px;padding-bottom:10px}
.group-total-label{font:750 10px/1.2 Manrope,sans-serif;letter-spacing:.7px;text-transform:uppercase;color:#526b87}
.head-total .head-slot span{background:#dfeaf6;border-color:#c3d5e9}
.head-to-head.is-compact .head-player{padding-top:7px;padding-bottom:7px}
.head-to-head.is-compact .head-identity .headshot{width:38px;height:38px}
.head-to-head.is-compact .game-context{display:none}
@media(max-width:1190px){
  .head-player,.head-player.away{grid-template-columns:minmax(105px,1fr) repeat(3,48px);gap:4px;padding:11px 9px}
  .head-player.away{grid-template-columns:repeat(3,48px) minmax(105px,1fr)}
  .head-identity .headshot{display:block;width:42px;height:42px}
}
@media(max-width:780px){
  .head-player,.head-player.away{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto auto;direction:ltr;align-items:stretch;gap:7px 2px;padding:10px 7px}
  .head-player .head-identity,.head-player.away .head-identity{grid-column:1/-1;grid-row:1;min-height:52px;align-items:flex-start}
  .head-player.home .head-identity{flex-direction:row;text-align:left}
  .head-player.away .head-identity{flex-direction:row-reverse;text-align:right}
  .head-player .matchup-metric{grid-row:2;text-align:center}
  .matchup-metric span{display:block;font-size:6px}
  .matchup-metric strong,.matchup-metric.is-projection strong{font-size:10px}
  .head-total .head-player,.head-total .head-player.away{grid-template-rows:auto;align-items:center}
  .head-total .group-total-label{display:none}
  .head-total .matchup-metric{grid-row:1}
  .matchup-group-title{padding:8px 11px}
  .column-order{font-size:7px}
}
@media(max-width:780px){
  .player-list.is-stats th:first-child{width:42%}
  .player-list.is-stats th:nth-child(2){width:16%}
  .player-list.is-stats th:nth-child(3){width:42%}
  .player-list.is-stats th:nth-child(4),.player-list.is-stats td:nth-child(4){display:none}
  .player-list.is-stats .mobile-points{display:block;font-size:8px;color:#71849c;margin-top:3px}
}

/* Sean's selected parity merge: dense decisions from the original, evidence rules from the current site. */
.season-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0 0 18px;background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden}
.season-strip>div{min-width:0;padding:13px 15px;border-left:1px solid var(--line)}.season-strip>div:first-child{border-left:0}
.season-strip span,.score-tile span{display:block;font-size:9px;letter-spacing:.7px;text-transform:uppercase;color:#73859b}.season-strip strong{display:block;margin-top:4px;font:750 18px/1.25 Manrope,sans-serif}.season-strip small{display:block;margin-top:3px;color:#7d8ea2;font-size:9px}.season-strip .pending-value{font-size:12px;color:#8b7651}.season-strip .summary-copy{font-size:12px}
.season-plan-summary{margin-bottom:18px}.data-table tr.is-mine td{background:#eef9f4;font-weight:650}

.nfl-mark{width:38px;height:38px;object-fit:contain;flex:none}.mark-fallback{display:grid;place-items:center;border-radius:50%;background:#eaf0f7;color:#60758d;font-weight:700}
.betting-scorecard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.score-tile{padding:19px;border-left:1px solid var(--line)}.score-tile:first-child{border-left:0}.score-tile strong{display:block;margin:7px 0 4px;font:800 24px/1.15 Manrope,sans-serif}.score-tile small{color:var(--muted);font-size:10px}.score-tile.is-pending{background:#fbf8ef}.score-tile.is-pending strong{font-size:15px;color:#836d44}
.week-board{margin-bottom:8px;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}.week-board>summary{display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 17px;cursor:pointer;list-style:none}.week-board>summary::-webkit-details-marker{display:none}.week-board>summary>span{font-weight:700}.week-board>summary>small{color:var(--muted)}.week-board>summary>b{font-size:10px;color:#4a6f9a}.week-board[open]>summary{background:#eef4fb;border-bottom:1px solid var(--line)}
.game-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line)}.game-card{min-width:0;padding:16px;background:#fff}.game-teams{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:center;gap:7px}.game-teams>div{display:flex;align-items:center;gap:8px;min-width:0}.game-teams>div:last-child{flex-direction:row-reverse;text-align:right}.game-teams>span{text-align:center;color:var(--muted);font-size:9px;text-transform:uppercase}.game-teams strong{font:750 13px Manrope,sans-serif}.game-kickoff{margin:8px 0 12px;text-align:center;color:#7b8da2;font-size:9px}.game-lines{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:0}.game-lines>div{min-width:0;padding:8px;background:#f6f9fc;border-radius:6px}.game-lines dt{font-size:8px;text-transform:uppercase;color:#75889f}.game-lines dd{min-height:22px;margin:4px 0 0;font-weight:650;font-size:11px;overflow-wrap:anywhere}.game-lines small{display:block;color:#8595a8;font-size:8px;line-height:1.35}.game-lines .value-button{overflow-wrap:anywhere}.method-card{margin:18px 0 26px}.method-card>summary{cursor:pointer;padding:16px 19px;font-weight:650}.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;border-top:1px solid var(--line);background:var(--line)}.method-grid>div{padding:17px;background:#fff}.method-grid strong{font-size:11px}.method-grid p{margin:6px 0 0;color:var(--muted);font-size:10px;line-height:1.65}

.playoff-board{display:grid;grid-template-columns:minmax(0,1fr) 170px minmax(0,1fr);gap:12px;align-items:center;margin-bottom:18px}.bracket-side{display:grid;grid-template-columns:1.25fr .85fr .75fr;gap:8px;padding:15px;background:#fff;border:1px solid var(--line);border-radius:12px}.bracket-title{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;padding-bottom:9px;border-bottom:1px solid var(--line)}.bracket-title span{font:800 18px Manrope,sans-serif}.bracket-title small{color:var(--muted)}.bracket-round{display:grid;gap:6px;align-content:center}.bracket-round h3{margin:0 0 3px;font-size:9px;color:var(--muted);text-transform:uppercase}.bracket-slot{min-height:42px;padding:7px;border:1px solid #e1e7ef;border-radius:6px;background:#f8fafc;display:grid;grid-template-columns:18px 1fr;align-items:center;gap:4px}.bracket-slot span{grid-row:1/3;color:#6b8098;font-weight:700}.bracket-slot strong{font-size:9px;line-height:1.3}.bracket-slot small{font-size:7px;color:#8495a8}.future-round .bracket-slot{grid-template-columns:1fr;border-style:dashed}.future-round .bracket-slot strong{color:#8191a3;font-weight:500}.champion-card{text-align:center;padding:25px 12px;border-radius:12px;background:var(--navy);color:#e8f0f8}.champion-card>span{font-size:9px;letter-spacing:1.4px;color:#9eb3ca}.champion-card .trophy{font-size:44px;color:var(--ice);margin:8px}.champion-card strong{font:750 13px/1.45 Manrope,sans-serif}.champion-card small{display:block;margin-top:7px;color:#99acc1;font-size:8px}.requirement-card{margin-bottom:26px}.requirement-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line)}.requirement-grid>div{display:flex;gap:10px;padding:15px;background:#fff}.requirement-grid>div>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#e7eef7;color:#49698e;font-weight:700;flex:none}.requirement-grid strong{font-size:10px}.requirement-grid p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.5}

.view-switch{display:inline-flex;margin:-4px 0 20px;padding:3px;border:1px solid var(--line);border-radius:9px;background:#e9eef5}.view-switch button{border:0;border-radius:6px;background:transparent;padding:8px 13px;color:#657b93;font-size:11px}.view-switch button.active{background:#fff;color:var(--ink);box-shadow:0 1px 4px #18314f18;font-weight:650}.accuracy-arms{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.accuracy-arm{padding:18px;border:1px solid #cfdbea;border-radius:11px;background:#f8fbff}.accuracy-arm>span{font:800 22px Manrope,sans-serif;color:#315f94}.accuracy-arm strong{display:block;margin:7px 0 4px;font-size:12px}.accuracy-arm small{display:block;color:var(--muted);font-size:9px;line-height:1.5}.accuracy-arm.is-missing{border-style:dashed;background:#f6f7f9}.accuracy-arm.is-missing>span{color:#7d8997}.accuracy-table{margin-bottom:18px}.accuracy-rows>div{display:grid;grid-template-columns:150px minmax(0,1fr) 220px;gap:18px;align-items:center;padding:14px 20px;border-top:1px solid var(--line)}.accuracy-rows>div:first-child{border-top:0}.accuracy-rows strong{font-size:11px}.accuracy-rows p{margin:0;color:var(--muted);font-size:10px}.accuracy-rows>div>span{text-align:right}.in-flight{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;margin-bottom:24px;background:#eef5fd}.in-flight h2{margin:6px 0;font:750 15px Manrope,sans-serif}.in-flight p{margin:0;color:var(--muted);font-size:10px}

.model-flow{margin-bottom:18px}.flow-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line)}.flow-steps>div{position:relative;padding:17px;background:#fff}.flow-steps span{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#dfeafb;color:#315f94;font-weight:700}.flow-steps strong{display:block;margin:9px 0 4px;font-size:11px}.flow-steps p{margin:0;color:var(--muted);font-size:9px;line-height:1.55}.feature-arm{margin-bottom:8px}.feature-arm>summary{display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 17px;cursor:pointer;list-style:none}.feature-arm>summary::-webkit-details-marker{display:none}.feature-arm>summary .arm-symbol{font-size:19px}.feature-arm>summary strong{display:block;font-size:11px}.feature-arm>summary small{color:var(--muted);font-size:9px}.feature-arm>summary>b{font-size:9px;color:#637b97}.feature-chips{display:flex;flex-wrap:wrap;gap:5px;padding:14px 17px;border-top:1px solid var(--line);background:#f7f9fc}.feature-chips span{padding:4px 7px;border:1px solid #d9e2ed;border-radius:5px;background:#fff;color:#4f657e;font:9px ui-monospace,SFMono-Regular,Menlo,monospace}.exclusions{margin:18px 0}.exclusion-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}.exclusion-grid>div{padding:17px;background:#fff}.exclusion-grid span{font-size:8px;text-transform:uppercase;color:var(--muted)}.exclusion-grid strong{display:block;margin:5px 0;font-size:11px;overflow-wrap:anywhere}.exclusion-grid p{margin:0;color:var(--muted);font-size:9px;line-height:1.55}

.portfolio{margin-bottom:28px}.portfolio-counts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.portfolio-counts .card{padding:16px}.portfolio-counts span{font-size:9px;text-transform:uppercase;color:var(--muted)}.portfolio-counts strong{display:block;margin:5px 0;font:750 16px Manrope,sans-serif;color:#8a7348}.portfolio-counts small{display:block;color:var(--muted);font-size:9px;line-height:1.45}.portfolio-split{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.lane-strip{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:14px 0}.lane-strip>span{margin-right:4px;color:var(--muted);font-size:9px;text-transform:uppercase}.promotion-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:center;gap:8px;padding:15px;border:1px solid var(--line);border-radius:10px;background:#fff}.promotion-flow>div{text-align:center}.promotion-flow strong{display:block;font-size:10px}.promotion-flow small{display:block;color:var(--muted);font-size:8px}.promotion-flow i{color:#7d91aa;font-style:normal}

.operations-board{margin-bottom:24px}.running-now{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:12px;padding:19px 22px;background:#eef5fd}.running-now h2{margin:6px 0 3px;font:750 16px Manrope,sans-serif}.running-now p{margin:0;color:var(--muted);font-size:10px}.running-now>div:last-child{text-align:right}.running-now>div:last-child>span{display:block;font-size:8px;text-transform:uppercase;color:var(--muted)}.running-now>div:last-child>strong{display:block;margin:3px 0;font-size:10px}.running-now>div:last-child>small{font-size:8px;color:var(--muted)}.job-table{margin-bottom:18px}

@media(max-width:1180px){.season-strip{grid-template-columns:repeat(3,1fr)}.season-strip>div:nth-child(4){border-left:0;border-top:1px solid var(--line)}.season-strip>div:nth-child(5){border-top:1px solid var(--line)}.game-grid{grid-template-columns:1fr}.playoff-board{grid-template-columns:1fr}.champion-card{grid-row:2}.requirement-grid{grid-template-columns:repeat(2,1fr)}.flow-steps{grid-template-columns:repeat(3,1fr)}}
@media(max-width:780px){.season-strip{display:flex;overflow-x:auto;scroll-snap-type:x proximity}.season-strip>div{flex:0 0 155px;border-top:0;border-left:1px solid var(--line);scroll-snap-align:start}.season-strip>div:first-child{border-left:0}.betting-scorecard{grid-template-columns:1fr 1fr}.score-tile:nth-child(odd){border-left:0}.score-tile:nth-child(n+3){border-top:1px solid var(--line)}.week-board>summary{grid-template-columns:62px minmax(0,1fr)}.week-board>summary>b{display:none}.game-lines{grid-template-columns:1fr 1fr}.method-grid,.accuracy-arms,.flow-steps,.exclusion-grid,.portfolio-counts{grid-template-columns:1fr 1fr}.bracket-side{grid-template-columns:1fr}.bracket-title{grid-column:1}.future-round{display:none}.requirement-grid{grid-template-columns:1fr}.accuracy-rows>div{grid-template-columns:1fr;gap:5px}.accuracy-rows>div>span{text-align:left}.in-flight,.running-now{align-items:flex-start;flex-direction:column}.running-now>div:last-child{text-align:left}.portfolio-split{grid-template-columns:1fr}.promotion-flow{grid-template-columns:1fr}.promotion-flow i{transform:rotate(90deg);text-align:center}.feature-arm>summary{grid-template-columns:44px minmax(0,1fr)}.feature-arm>summary>b{grid-column:2}.nfl-mark{width:31px;height:31px}}
@media(max-width:480px){.method-grid,.accuracy-arms,.flow-steps,.exclusion-grid,.portfolio-counts{grid-template-columns:1fr}.game-lines{grid-template-columns:1fr}.betting-scorecard{grid-template-columns:1fr}.score-tile{border-left:0;border-top:1px solid var(--line)}.score-tile:first-child{border-top:0}}

/* The blue hero is the single authoritative matchup scoreboard. */
.hero .matchup{grid-template-columns:minmax(180px,1fr) minmax(330px,430px) minmax(180px,1fr);padding:18px 28px;gap:18px}
.hero-scoreboard{min-width:0;padding:9px 16px;border:1px solid #5b718b66;border-radius:11px;background:#0c1e32aa;box-shadow:inset 0 1px 0 #ffffff08}
.hero-score-row{display:grid;grid-template-columns:minmax(66px,1fr) 88px minmax(66px,1fr);align-items:baseline;gap:10px;padding:4px 0;font-variant-numeric:tabular-nums}
.hero-score-row>span{text-align:center;color:#8fa5bd;font-size:8px;letter-spacing:.85px;text-transform:uppercase}
.hero-score-row>strong{font:750 16px/1.15 Manrope,sans-serif;color:#e9f2fc;text-align:right}
.hero-score-row>strong:last-child{text-align:left}
.hero-score-row[data-score=actual]>strong{font-size:25px;color:#b7d9ff}
.hero-score-row[data-score=yahoo]>strong{color:#c8d4e1}
.hero-score-row .value-button{color:inherit}
.hero-score-missing{color:#71869e;font-weight:500}
.hero-remaining{display:grid;grid-template-columns:1fr 88px 1fr;gap:10px;margin-top:7px;padding-top:7px;border-top:1px solid #5b718b55;color:#aebed0;font-size:8px}
.hero-remaining span:first-child{text-align:right}.hero-remaining span:last-child{text-align:left}.hero-remaining b{text-align:center;color:#7f95ad;text-transform:uppercase;letter-spacing:.7px;font-weight:500}
.hero-scoreboard>small{display:block;margin-top:6px;color:#7188a1;font-size:8px;text-align:center}
.hero .match-team{align-self:center}.hero .team-sub{max-width:210px;line-height:1.4}

/* A saved scenario becomes an explicit decision before the long roster scan. */
.lineup-decision .decision-copy h3,.lineup-decision>div:first-child h3{margin:5px 0 8px;font:750 17px/1.3 Manrope,sans-serif;letter-spacing:-.35px}
.lineup-decision ul{display:flex;flex-wrap:wrap;gap:5px 18px;margin:0;padding:0;list-style:none;color:#435c78;font-size:10px}
.lineup-decision li strong{color:#245c99;text-transform:uppercase;font-size:8px;letter-spacing:.6px}
.lineup-decision p{margin:9px 0 0;color:var(--muted);font-size:9px;line-height:1.55}
.decision-totals{display:grid;grid-template-columns:auto auto;align-items:baseline;gap:2px 12px;min-width:150px;padding-left:20px;border-left:1px solid #d4e0ed;font-variant-numeric:tabular-nums}
.decision-totals span{color:#71859d;font-size:8px;text-transform:uppercase;letter-spacing:.7px}.decision-totals strong{font:800 20px/1.25 Manrope,sans-serif;color:#245c99;text-align:right}.decision-totals i{grid-column:1/-1;color:#8295aa;font-style:normal;text-align:center;line-height:1}
.lineup-decision.is-hold{border-left-color:#5e9b7c}

@media(max-width:900px){
  .hero .matchup{grid-template-columns:minmax(130px,1fr) minmax(300px,370px) minmax(130px,1fr);gap:10px;padding:17px}
  .hero-score-row,.hero-remaining{grid-template-columns:minmax(55px,1fr) 72px minmax(55px,1fr)}
  .hero-score-row[data-score=actual]>strong{font-size:21px}
}
@media(max-width:780px){
  .hero .matchup{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:13px 8px;padding:16px}
  .hero .match-team{grid-column:1;grid-row:1;display:flex;text-align:left;align-items:center}.hero .match-team.away{grid-column:2;grid-row:1;display:flex;text-align:right;align-items:center}
  .hero .match-team .team-crest{margin:0 0 0 0}.hero .match-team.away .team-crest{margin:0}
  .hero-scoreboard{grid-column:1/-1;grid-row:2;padding:9px 11px}
  .hero-score-row,.hero-remaining{grid-template-columns:minmax(55px,1fr) 74px minmax(55px,1fr);gap:5px}
  .hero-score-row>strong{font-size:14px}.hero-score-row[data-score=actual]>strong{font-size:22px}
  .lineup-decision{grid-template-columns:1fr;gap:14px;padding:16px}
  .decision-totals{grid-template-columns:1fr auto;padding:12px 0 0;border-left:0;border-top:1px solid #d4e0ed}
  .decision-totals i{grid-column:1/-1}
}
@media(max-width:430px){
  .hero .match-team{gap:8px}.hero .team-crest{width:39px;height:39px}.hero .match-team h2{font-size:12px}.hero .team-sub{font-size:8px}
  .hero-score-row>span{font-size:7px}.hero-score-row[data-score=actual]>strong{font-size:19px}
}

/* Player-level decision and evidence signals. */
.defense-logo{object-fit:contain;background:#fff;border:1px solid #dbe3ec;padding:3px}
.player-signals{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.injury-status{display:inline-flex;align-items:center;border-radius:999px;padding:2px 6px;font:700 7px/1.25 Manrope,sans-serif;letter-spacing:.35px;text-transform:uppercase;white-space:nowrap;color:#6e4a00;background:#fff0b8;border:1px solid #ddb647}
.player-name.with-injury{display:flex;align-items:center;gap:5px}
.head-player.away .player-name.with-injury{justify-content:flex-end}
.injury-status.is-doubtful{color:#7f2816;background:#ffd7c8;border-color:#d96743}
.injury-status.is-out{color:#fff;background:#8b1720;border-color:#681018}
.injury-status.is-reserve{color:#fff;background:#67141a;border-color:#470b10}
.injury-status.is-unknown{color:#fff;background:#607289;border-color:#445568}
.headshot.injury-ring.is-questionable{box-shadow:0 0 0 2px #d5ab2f}
.headshot.injury-ring.is-doubtful{box-shadow:0 0 0 2px #ce5938}
.headshot.injury-ring.is-out{box-shadow:0 0 0 3px #a3241f;filter:grayscale(.55)}
.headshot.injury-ring.is-reserve{box-shadow:0 0 0 3px #6d1616;filter:grayscale(1) opacity(.62)}
.headshot.injury-ring.is-unknown{box-shadow:0 0 0 2px #77889c}
.head-player.is-optimal{box-shadow:inset 4px 0 #68a783;background:#f8fcfa}
.head-player.away.is-optimal{box-shadow:inset -4px 0 #68a783}
.head-player.is-nonoptimal{box-shadow:inset 4px 0 #d79a45;background:#fffaf2}
.head-player.away.is-nonoptimal{box-shadow:inset -4px 0 #d79a45}
.head-player.needs-projection-review .matchup-metric.is-projection strong{color:#8a641b;text-decoration:underline dotted #c69b42;text-underline-offset:3px}
.projection-reviews{margin-top:14px;overflow:hidden}
.projection-reviews>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;cursor:pointer;list-style:none;background:linear-gradient(135deg,#f8fbff,#fff)}
.projection-reviews>summary::-webkit-details-marker,.projection-review-item>summary::-webkit-details-marker{display:none}
.projection-reviews>summary span{display:grid;gap:4px}.projection-reviews>summary strong{font:750 16px/1.3 Manrope,sans-serif}.projection-reviews>summary small{font-size:13px;color:var(--muted)}.projection-reviews>summary b{font-size:12px;color:#315d8b;text-transform:uppercase;letter-spacing:.6px}
.review-coverage{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line)}
.review-coverage>div{padding:15px 20px;background:#f8fbff}.review-coverage>div.is-gap{background:#fff8ef}
.review-coverage span{font:750 12px/1.3 Manrope,sans-serif;color:#315d8b;text-transform:uppercase;letter-spacing:.45px}.review-coverage p{margin:5px 0 0;font-size:14px;line-height:1.55;color:#4f637a}
.projection-review-list{border-top:1px solid var(--line)}
.projection-review-team{border-top:1px solid var(--line)}.projection-review-team:first-child{border-top:0}
.projection-review-team-head{display:flex;align-items:center;justify-content:space-between;padding:16px 21px;background:#eef4fb;border-bottom:1px solid var(--line)}
.projection-review-team-head span{font:700 11px/1.2 Manrope,sans-serif;color:#58708b;letter-spacing:.55px}.projection-review-team-head h3{margin:3px 0 0;font:750 16px/1.2 Manrope,sans-serif}.projection-review-team-head>strong{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#264f79;color:white;font:750 14px/1 Manrope,sans-serif}
.projection-review-item{border-top:1px solid var(--line)}.projection-review-team .projection-review-item:first-of-type{border-top:0}
.projection-review-item>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 21px;cursor:pointer;background:#fbfcfe}
.projection-review-item>summary span{font-size:14px;font-weight:700}.projection-review-item>summary small{font-size:12px;color:var(--muted);font-weight:550;margin-left:7px}.projection-review-item>summary>strong{font:750 14px/1.2 Manrope,sans-serif;color:#8a641b;white-space:nowrap}
.projection-review-body{padding:18px 21px 22px;background:white}
.review-baseline-flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:14px;margin-bottom:16px;padding:15px;border:1px solid #d9e4ef;border-radius:10px;background:#f8fbff}.review-baseline-flow>div{display:grid;gap:4px}.review-baseline-flow span{font-size:12px;color:#60758d}.review-baseline-flow strong{font:800 22px/1.1 Manrope,sans-serif;color:#173a5c}.review-baseline-flow small{font-size:12px;line-height:1.4;color:#6e8094}.review-baseline-flow i{font-style:normal;font-size:20px;color:#7c91a8}.review-baseline-missing{margin-bottom:15px;padding:12px;border-radius:8px;background:#fff8ef;color:#7a5b2d;font-size:14px}
.review-metrics{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:13px;color:var(--muted);margin-bottom:17px}.review-metrics strong{display:inline-block;margin-left:4px;color:var(--ink);font-size:14px}.review-metrics em{display:block;margin-left:4px;font-size:11px;font-style:normal;color:#8b7350}
.projection-review-body dl{display:grid;gap:14px;margin:0}.projection-review-body dl>div{display:grid;grid-template-columns:135px minmax(0,1fr);gap:15px}.projection-review-body dt{font-size:12px;text-transform:uppercase;letter-spacing:.55px;color:#59718b}.projection-review-body dd{margin:0;font-size:14px;line-height:1.65;color:#40576f}.projection-review-body .value-button{text-align:left;line-height:inherit}
.review-empty{padding:18px 21px;color:var(--muted);font-size:14px}
@media(max-width:780px){
  .injury-status{font-size:6px;padding:2px 4px}
  .player-signals{gap:3px}.projection-reviews>summary,.projection-review-item>summary{padding:15px 14px}.projection-review-team-head{padding:14px}
  .review-coverage{grid-template-columns:1fr}.review-coverage>div{padding:14px}.projection-review-body{padding:15px 14px 18px}.projection-review-body dl>div{grid-template-columns:1fr;gap:4px}.projection-reviews>summary b{display:none}
  .review-baseline-flow{grid-template-columns:1fr;gap:9px}.review-baseline-flow i{transform:rotate(90deg);justify-self:start}.review-baseline-flow strong{font-size:20px}.review-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
}

.week-navigation{align-items:stretch}
.week-rail{flex:1 1 100%;width:100%}
.week-rail{flex-wrap:wrap;overflow-x:visible;padding:3px 0;gap:3px}
.week-chip{flex:1 1 0;min-width:46px;padding:0 1px}
.week-chip>span{white-space:nowrap;font-size:10.5px}
.week-chip>small{max-width:100%}
.week-chip.is-playoff{border:1.5px solid #c9a227;border-style:solid;background:#fdfaf0}
.week-chip.is-playoff small{color:#8a6d16}
.week-chip.is-playoff.selected{background:var(--navy);border-color:#c9a227;color:#fff}
.week-chip.is-playoff.selected small{color:#e8cc6a}
@media(max-width:780px){.week-chip{flex:1 1 52px}}

.hero-score-row>strong.tone-up{color:#5fd39b}
.hero-score-row>strong.tone-down{color:#ef8a76}
.group-remaining{font-style:normal;font-size:9px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:#8ba0b8;white-space:nowrap}
.group-remaining.is-away{margin-left:auto;text-align:right}
.stored-delta.positive{color:#2f7d54}
.stored-delta.negative{color:#b3402f}

.player-list tr.roster-group td{background:#eef4fa;border-top:1px solid #ccdbea;border-bottom:1px solid #ccdbea;padding:9px 20px;height:auto;text-align:left}
.roster-group .rg-name{font-family:Manrope,sans-serif;font-weight:750;font-size:12px;letter-spacing:.3px;color:#1f3a56}
.roster-group .rg-metric{margin-left:18px;font-size:12px;font-variant-numeric:tabular-nums;color:#3d566f}
.roster-group .rg-metric i{font-style:normal;font-size:8px;letter-spacing:.9px;text-transform:uppercase;color:#7d92aa;margin-right:5px}
.data-table td.review-stats{font-size:10px;color:#4d6076;max-width:320px;overflow-wrap:anywhere}
.data-table tr.is-mine td{background:#eef4fa;font-weight:600}
.data-table tr.is-forced td{background:#fbfbfc;color:#64748b}
.data-table tr.is-forced strong{color:#64748b;font-weight:600}
@media(max-width:600px){.roster-group .rg-metric{margin-left:10px;font-size:11px}}

.section-tabs{align-items:center}
.season-summary{margin-left:auto;display:flex;gap:26px;align-items:center;padding-bottom:9px}
.season-line{display:flex;align-items:baseline;gap:8px;color:#41556e;white-space:nowrap}
.season-line b{font-weight:650;color:var(--ink);font-size:12px}
.season-line i{font-style:normal;font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#8ba0b8}
.season-line em{font-style:normal;font-weight:650;font-size:13px;color:#245c99;font-variant-numeric:tabular-nums}
.season-line .unavailable{font-size:11px;font-weight:500}
@media(max-width:1340px){.season-summary{margin-left:0;width:100%;flex-wrap:wrap;gap:16px;justify-content:flex-start;padding-top:2px;border-top:1px solid var(--line)}
.section-tabs{flex-wrap:wrap;overflow:visible}}
@media(max-width:700px){.season-line em{font-size:12px}
.season-line b{font-size:11px}}

.match-team{flex-direction:row-reverse;gap:20px;text-align:right}
.match-team.away{flex-direction:row;text-align:left}
.team-crest{width:104px;height:104px;border-radius:18px;padding:7px}
.match-team h2{font-size:26px;max-width:300px;letter-spacing:-.7px}
.team-sub{font-size:13px;margin-top:7px}
@media(max-width:780px){.team-crest{width:56px;height:56px;border-radius:12px}.match-team h2{font-size:16px;max-width:none}
.team-sub{font-size:10px}}

.matchup-group-title{display:flex;align-items:center;gap:10px}
.matchup-group-title .scenario-switch{margin:0 auto}
.matchup-group-title .scenario-switch button{white-space:nowrap}
@media(max-width:600px){.matchup-group-title{flex-wrap:wrap}
.matchup-group-title .scenario-switch{margin:0;order:3;width:100%}}

.head-player.away .group-total-label{text-align:right}

.lineup-decision .decision-totals strong.v-good{color:#2f7d54}
.lineup-decision .decision-totals strong.v-bad{color:#b3402f}

.lineup-decision{padding:0}
.decision-head{display:flex;align-items:baseline;gap:10px;padding:8px 14px;border-bottom:1px solid var(--line);background:#f6f9fc}
.decision-head b{font-size:12px;font-weight:650}
.decision-head i{font-style:normal;margin-left:auto;font-size:11px;color:#5d6f85;font-variant-numeric:tabular-nums}
.decision-row{display:flex;align-items:center;gap:8px;padding:6px 14px;font-size:12px;border-top:1px solid #eef2f7;white-space:nowrap;overflow:hidden}
.decision-row:first-of-type{border-top:0}
.decision-row .slot{min-width:30px;font-size:9px}
.decision-row b{font-weight:600;overflow:hidden;text-overflow:ellipsis}
.decision-row b.out{color:#7d8fa5;font-weight:500}
.decision-row i{font-style:normal;font-variant-numeric:tabular-nums;font-weight:650;color:#245c99}
.decision-row i.out{color:#8ba0b8;font-weight:500}
.decision-row u{text-decoration:none;font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:#9fb0c2}
.decision-row strong{margin-left:auto;font-variant-numeric:tabular-nums;font-size:12px}
.decision-row strong.v-good{color:#2f7d54}.decision-row strong.v-bad{color:#b3402f}

.player-list td.yahoo-col{font-variant-numeric:tabular-nums;color:#5d6f85;font-family:Manrope,sans-serif;font-weight:650;font-size:14px}
@media(max-width:780px){.player-list th:nth-child(3),.player-list td.yahoo-col{display:none}}

.match-team h2{font-size:22px;max-width:none}
.team-crest{width:88px;height:88px}

/* the scoreboard was taking 430px of a 974px row, squeezing each team name
   into 118px so it wrapped to two lines. Give the centre only what it needs. */
.hero .matchup{grid-template-columns:minmax(200px,1fr) minmax(250px,300px) minmax(200px,1fr)}
@media(max-width:900px){.hero .matchup{grid-template-columns:minmax(120px,1fr) minmax(180px,220px) minmax(120px,1fr)}
.match-team h2{font-size:15px}.team-crest{width:52px;height:52px}}

.player-list td.baseline-col{font-variant-numeric:tabular-nums;color:#5d6f85;font-family:Manrope,sans-serif;font-weight:650;font-size:13px}
.baseline-kind{font-size:7px;letter-spacing:.9px;text-transform:uppercase;color:#9fb0c2;font-weight:600;margin-top:1px}
.baseline-delta{font-size:10px;font-weight:600;margin-top:2px}
.baseline-delta.v-good{color:#2f7d54}.baseline-delta.v-bad{color:#b3402f}
.player-list td.why-col{text-align:center;font-size:10px;line-height:1.35;color:#5d6f85;overflow-wrap:anywhere}
/* Details is column 8 now; this rule still named 6, which is Projection --
   so a narrow window hid the projection and kept the button. */
@media(max-width:1100px){.player-list th:nth-child(8),.player-list td.why-col{display:none}}

.detail-link{border:1px solid var(--line);background:#fff;border-radius:6px;padding:3px 9px;font-size:10px;font-weight:600;color:#41556e;letter-spacing:.3px}
.detail-link:hover{border-color:#8cb4e5;color:var(--navy)}
.detail-link.as-number{border:0;background:transparent;padding:0;font:inherit;color:inherit;border-bottom:1px dotted #9fb0c2}
.off-yahoo{color:#b3402f}
.number.off-yahoo{color:#b3402f}
#pw-detail{max-width:560px}
#pw-detail .detail-close{float:right;margin-left:12px}
.detail-head h2{font-family:Manrope,sans-serif;font-size:20px;margin:0 0 2px}
.detail-head p{margin:0 0 14px;font-size:11px;color:var(--muted)}
.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.detail-grid>div{background:#f6f9fc;border-radius:8px;padding:9px 11px}
.detail-grid span{display:block;font-size:8px;letter-spacing:1px;text-transform:uppercase;color:#8ba0b8}
.detail-grid strong{font-family:Manrope,sans-serif;font-size:19px;font-weight:750;font-variant-numeric:tabular-nums}
.detail-grid em{font-style:normal;font-size:9px;color:#8ba0b8}
#pw-detail h3{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#7d8fa5;margin:16px 0 6px}
.detail-table{width:100%;border-collapse:collapse;font-size:12px}
.detail-table th{font-size:8px;letter-spacing:.7px;text-transform:uppercase;color:#8ba0b8;text-align:left;padding:4px 6px}
.detail-table td{padding:5px 6px;border-top:1px solid #eef2f7;font-variant-numeric:tabular-nums}
.detail-table .n{text-align:right}
.detail-table tr.is-dropped td{color:#9fb0c2;font-style:italic}
.detail-warn{margin:8px 0 0;font-size:11px;color:#8a641b;background:#fdf7e8;border-radius:6px;padding:8px 10px}
.detail-why{font-size:12px;color:#41556e;margin:0}

/* NINE COLUMNS, AND THEY MUST SUM TO 100. The table is table-layout:fixed,
   so a column with no width declared gets whatever is left -- and when the
   Details column was added as an eighth of eight declared widths that already
   summed to 100, ACTUAL was left with zero and vanished from the page. That is
   what "you dropped actuals" was. bin/smoke-page.py now measures every header's
   rendered width against the live page, so a column can never silently
   collapse again.
   Player · Opponent · Yahoo · vs Yahoo · Baseline · Projection · Range ·
   Details · Actual */
.player-list th:first-child{width:24%}
.player-list th:nth-child(2){width:8%}
.player-list th:nth-child(3){width:8%}
.player-list th:nth-child(4){width:9%}
.player-list th:nth-child(5){width:9%}
.player-list th:nth-child(6){width:11%}
.player-list th:nth-child(7){width:15%}
.player-list th:nth-child(8){width:7%}
.player-list th:nth-child(9){width:9%}
.player-list td.dev-col{font-variant-numeric:tabular-nums;font-size:12px;color:#7d8fa5}
.range-col{padding-right:22px!important}
.rangebar{position:relative;height:6px;border-radius:3px;background:#e7edf4;overflow:visible}
.rb-fill{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,#cfe0f2,#8fb8dd)}
.rb-mark{position:absolute;top:-3px;width:2px;height:12px;background:var(--navy);border-radius:1px;transform:translateX(-1px)}
.rb-ends{display:flex;justify-content:space-between;margin-top:3px;font-size:8px;color:#9fb0c2;font-variant-numeric:tabular-nums}
.rb-ends i{font-style:normal}
@media(max-width:1200px){.player-list th:nth-child(7),.player-list td.range-col{display:none}}

.player-list th{font-size:10px;letter-spacing:.7px}
.player-list td{font-size:15px;height:70px}
.player-list .player-name{font-size:15px}
.player-list .player-meta{font-size:11px;margin-top:4px}
.player-list .slot{font-size:11px;min-width:30px}
.player-list td.opponent{font-size:14px;color:#41556e}
.player-list td.yahoo-col,.player-list td.baseline-col,.player-list td.dev-col{font-size:15px}
.player-list .number{font-size:16px}
.player-list .detail-link.as-number{font-size:16px}
.player-list .rb-ends{font-size:10px;margin-top:4px}
.player-list .stored-delta{font-size:11px}
.roster-group .rg-name{font-size:13px}
.roster-group .rg-metric{font-size:13px}
.roster-group .rg-metric i{font-size:9px}
.player-list tr.is-gap-up td{background:#f1f8f4}
.player-list tr.is-gap-down td{background:#fdf3f1}
.player-list tr.is-gap-up:hover td{background:#e8f4ed}
.player-list tr.is-gap-down:hover td{background:#fbeae6}
.player-list td.dev-col{border-radius:0}

.player-list th:nth-child(7){text-align:center}
.player-list td.range-col{padding-right:16px!important}

.rb-actual{position:absolute;top:-4px;width:9px;height:9px;border-radius:50%;background:#fff;border:2px solid #2c3f55;transform:translateX(-4.5px);box-shadow:0 0 0 1px #fff}
.rb-actual.over{border-color:#2f7d54;background:#2f7d54}
.rb-actual.under{border-color:#b3402f;background:#b3402f}
/* the naive baseline: a muted open tick, deliberately quieter than the
   forecast mark so the eye reads forecast first and baseline as context */
.rb-base{position:absolute;top:-2px;width:2px;height:10px;background:#6b7f95;border-radius:1px;transform:translateX(-1px);box-shadow:0 0 0 1px rgba(255,255,255,.92)}
.rb-base.out-hi,.rb-base.out-lo{width:0;height:0;top:-2px;background:none;border-top:5px solid transparent;border-bottom:5px solid transparent}
.rb-base.out-hi{border-left:6px solid #6b7f95;transform:translateX(-6px)}
.rb-base.out-lo{border-right:6px solid #6b7f95;transform:translateX(0)}
.rangebar.is-over{box-shadow:3px 0 0 0 #2f7d54}
.rangebar.is-under{box-shadow:-3px 0 0 0 #b3402f}
.rangebar.is-over::after{content:'';position:absolute;right:-11px;top:-1px;border-left:6px solid #2f7d54;border-top:4px solid transparent;border-bottom:4px solid transparent}
.rangebar.is-under::before{content:'';position:absolute;left:-11px;top:-1px;border-right:6px solid #b3402f;border-top:4px solid transparent;border-bottom:4px solid transparent}

/* The walk from baseline to projection: a waterfall and the same numbers as a
   table. Sean, 2026-09-20: "opens the details of the walk from baseline to
   prediction, ideally with a table and a waterfall chart." */
.waterfall{width:100%;height:auto;margin:6px 0 14px;overflow:visible}
.waterfall .wf-axis{stroke:#c9d6e4;stroke-width:1}
.waterfall .wf-link{stroke:#c0cdda;stroke-width:1;stroke-dasharray:3 3}
.waterfall rect{fill:#8fa8c2}
.waterfall .wf-base rect,.waterfall .wf-total rect{fill:var(--navy,#20364f)}
.waterfall .wf-up rect{fill:#3f8f62}
.waterfall .wf-down rect{fill:#c0563f}
.waterfall .wf-val{font:600 12px/1 'DM Sans',sans-serif;fill:#2c3f55}
.waterfall .wf-up .wf-val{fill:#2f7d54}
.waterfall .wf-down .wf-val{fill:#b3402f}
.waterfall .wf-lab{font:500 11px/1 'DM Sans',sans-serif;fill:#6b7f95}
.walk-table tr.is-base td,.walk-table tr.is-total td{background:#f4f7fb}
.walk-table tr.is-up td.n:first-of-type{color:#2f7d54;font-weight:600}
.walk-table tr.is-down td.n:first-of-type{color:#b3402f;font-weight:600}
.player-list td.why-col{text-align:center}
.walk-detail th[scope=row]{text-align:left;font-size:10px;font-weight:650;color:#41556e;padding:5px 6px;border-top:1px solid #eef2f7;text-transform:none;letter-spacing:0}
.walk-detail td.wd-cont{border-top:0}
.walk-detail .v-good{color:#2f7d54;font-weight:600}
.walk-detail .v-bad{color:#b3402f;font-weight:600}

/* Sean, 2026-09-20: "fonts on the match up board can match the your roster
   section, they are easier to read on the your roster section." The roster sets
   its Yahoo/baseline numbers at 13-14px and its labels at 9px; the matchup
   board was running 13px numbers under 7px labels, which is what made it the
   harder of the two to read. Matched to the roster, and the columns widened to
   carry the larger digits. */
/* MEASURED OFF THE ROSTER, not guessed at. The first attempt nudged these
   and Sean said it had not been done, because it had not: every one was
   still smaller than its roster twin. The two columns are the rendered
   sizes on the live page.
                        was       roster      now
     player name        13px  <-  15px/650    15px
     player meta        10px  <-  11px        11px
     column label        9px  <-  10px/500    10px
     Yahoo value        14px  <-  15px/650    15px
     projection         14px  <-  16px/750    16px
     group title        11px  <-  15px        14px   (uppercase; full 15
                                                      shouts at this weight)
   The actual stays the largest on this board, which is what Sean asked for
   on 19 Sept: "actuals should be the big ones." */
.head-player,.head-player.away{grid-template-columns:minmax(145px,1fr) repeat(3,80px);padding:14px 16px}
.head-player.away{grid-template-columns:repeat(3,80px) minmax(145px,1fr)}
.matchup-metric span{font-size:10px;font-weight:500;letter-spacing:.65px}
.matchup-metric strong{margin-top:3px;font:650 15px/1.3 Manrope,sans-serif}
.matchup-metric.is-projection strong{font-weight:750;font-size:16px}
.matchup-metric.is-actual strong{font-weight:750;font-size:19px}
.head-identity .player-name{font-size:15px;font-weight:650}
.head-identity .player-meta{font-size:11px}
.game-context{font-size:11px}
.matchup-group-title{padding:11px 18px}
.matchup-group-title strong{font-size:14px}
.matchup-group-title span{font-size:11px}
.column-order{font-size:10px}
@media(max-width:1200px){
  .head-player{grid-template-columns:minmax(115px,1fr) repeat(3,68px)}
  .head-player.away{grid-template-columns:repeat(3,68px) minmax(115px,1fr)}
  .matchup-metric strong{font-size:13px}
  .matchup-metric.is-projection strong{font-size:14px}
  .matchup-metric.is-actual strong{font-size:16px}
  .head-identity .player-name{font-size:13px}
}

/* Sean: "this whole row can be a little bigger, there's room" -- the tab row
   carrying the season finish and points. */
.section-tabs{gap:26px;margin:26px 0 22px}
.tab{font-size:14px;padding-bottom:13px}
.season-summary{gap:30px;padding-bottom:10px}
.season-line{gap:9px}
.season-line b{font-size:14px}
.season-line i{font-size:10px}
.season-line em{font-size:16px}
.season-line .unavailable{font-size:12px}
/* how a coach uses a depth slot, against the league (Sean, 2026-09-20) */
.usage-ctx{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 26px;background:#f4f7fb;
 border-radius:8px;padding:12px 14px;margin:6px 0 14px}
.usage-ctx>div{display:flex;align-items:baseline;gap:8px}
.usage-ctx span{font-size:9px;letter-spacing:.7px;text-transform:uppercase;color:#8ba0b8;font-weight:650}
.usage-ctx strong{font:750 20px/1 Manrope,sans-serif;color:#2c3f55;font-variant-numeric:tabular-nums}
.usage-ctx p{flex:1 1 100%;margin:0;font-size:12px;color:#5d6f85;line-height:1.6}
.usage-ctx.is-up strong{color:#2f7d54}
.usage-ctx.is-down strong{color:#b3402f}

/* Keep the mirrored matchup inside each phone-width half. Desktop grid
   overrides previously won below 780px and silently clipped the opponent. */
@media(max-width:780px){
  .sidebar:not(.open){visibility:hidden;pointer-events:none}
  .sidebar.open{visibility:visible;pointer-events:auto}
  .topbar{height:auto;min-height:58px;flex-wrap:wrap;gap:5px;padding:10px 16px}
  .topbar .preview-label{display:none}
  .pw-stamp{white-space:normal;max-width:200px;line-height:1.5}
  .hero .matchup{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 10px;padding:15px}
  .hero-scoreboard{min-width:0;width:100%;grid-column:1/-1}
  .hero .match-team{min-width:0;gap:7px}
  .hero .match-team h2{font-size:13px;overflow-wrap:anywhere}
  .hero .team-crest{width:44px;height:44px;flex:none}
  .head-row{grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr)}
  .head-player,.head-player.away{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto auto;direction:ltr;gap:9px 3px;padding:12px 7px;align-items:start}
  .head-player .head-identity,.head-player.away .head-identity{grid-column:1/-1;grid-row:1;gap:6px;min-width:0;min-height:83px;align-items:start;flex-direction:column}
  .head-player.away .head-identity{align-items:flex-end;text-align:right}
  .head-player .matchup-metric,.head-player.away .matchup-metric{grid-row:2;grid-column:auto;min-width:0;text-align:center}
  .head-identity .player-name{font-size:12px;line-height:1.4;overflow-wrap:anywhere}
  .head-identity .player-meta,.game-context{font-size:10px;line-height:1.4}
  .head-identity .headshot{width:46px;height:46px;flex:none}
  .matchup-metric span{font-size:8px;letter-spacing:0}
  .matchup-metric strong,.matchup-metric.is-projection strong{font-size:12px}
  .matchup-metric.is-actual strong{font-size:14px}
  .injury-status{font-size:9px;padding:2px 4px}
  .player-name.with-injury{gap:3px;flex-wrap:wrap}
  .head-player .group-total-label,.head-player.away .group-total-label{grid-column:1/-1;grid-row:1;font-size:11px}
  .head-slot{font-size:9px;padding:4px 0}
  .section-tabs{gap:16px}.section-tabs .tab{font-size:12px}
}
@media(max-width:780px){
 .topbar{display:grid;grid-template-columns:24px minmax(0,1fr) auto;column-gap:10px}
 .topbar .menu-toggle{grid-column:1;grid-row:1;margin:0;padding:0}
 .topbar .breadcrumb{grid-column:2;grid-row:1}
 .topbar .topbar-right{grid-column:3;grid-row:1}
 .topbar #pw-live-top{grid-column:1/-1;grid-row:2;max-width:none}
}
