*{box-sizing:border-box} :root{--navy:#0c293c;--navy2:#153f58;--green:#1e7b57;--bg:#f2f6f8;--card:#fff;--line:#d8e3e8;--text:#172732;--muted:#637681;--red:#ad4f4f;--gold:#e3bd55} body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:linear-gradient(#edf3f6,#f8fafb 320px);color:var(--text);font-size:15px}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 12px;font-weight:800;color:var(--text)}button:hover{filter:brightness(.98)}button:disabled{opacity:.42;cursor:not-allowed}.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.secondary{background:#eef4f7}.danger-soft{color:#a04747;background:#fff8f8;border-color:#eccaca}.text-btn{border:0;background:transparent;padding:5px 7px}.big{width:100%;font-size:17px;padding:14px}.hidden{display:none!important}.eyebrow{font-size:11px;font-weight:950;letter-spacing:.12em;color:#758791}.fine{font-size:11px;color:var(--muted);text-align:center}.app-header{height:66px;background:rgba(9,34,50,.98);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 20px;position:sticky;top:0;z-index:50;box-shadow:0 3px 12px #0002}.brand-row{display:flex;align-items:center;gap:11px}.brand-mark{width:44px;height:44px;border-radius:12px;background:linear-gradient(145deg,#76d3aa,#d8f2e5);color:#0c2b3d;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:1000}.brand-mark.small{width:38px;height:38px}.brand-title{font-size:15px;font-weight:950;letter-spacing:.08em}.brand-title span{font-size:9px;background:#ffffff1c;padding:3px 6px;border-radius:999px}.brand-sub{font-size:11px;color:#b7cbd7}.header-right{display:flex;align-items:center;gap:9px}.header-right span{font-size:12px;color:#d9e6ed}.header-right .text-btn{color:#fff}.overlay{position:fixed;inset:0;background:#0b2635dd;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.welcome-card{width:min(610px,100%);background:#fff;border-radius:20px;padding:30px 34px;box-shadow:0 25px 70px #0004;max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.welcome-card h1{font-size:36px;margin:2px 0}.lead{font-size:16px;line-height:1.55;color:var(--muted)}.welcome-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.welcome-steps>div{padding:13px;background:#f5f9fa;border:1px solid var(--line);border-radius:12px}.welcome-steps b{display:flex;width:31px;height:31px;border-radius:50%;background:var(--navy);color:#fff;align-items:center;justify-content:center;margin-bottom:7px}.welcome-steps strong{display:block;font-size:14px}.welcome-steps span{font-size:11px;color:var(--muted)}label{font-size:13px;font-weight:850;display:block}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:10px 0 14px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:11px 12px;background:#fff;color:var(--text);min-height:44px;margin-top:5px}textarea{min-height:105px}main{max-width:1400px;margin:auto;padding:14px 18px 50px}.tabs{display:flex;gap:4px;background:#e5edf1;border:1px solid #d7e2e8;border-radius:12px;padding:4px;position:sticky;top:74px;z-index:40;overflow:auto}.tab{border:0;background:transparent;white-space:nowrap;font-size:13px}.tab.active{background:var(--navy);color:#fff}.panel{display:none;padding-top:20px}.panel.active{display:block}.page-head{display:flex;justify-content:space-between;gap:18px;align-items:end;margin-bottom:14px}.page-head.compact{align-items:center}.page-head h1{font-size:31px;margin:3px 0}.page-head h2{font-size:24px;margin:2px 0}.page-head p{margin:0;color:var(--muted);font-size:14px;line-height:1.5}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 6px 20px #142c3b0c}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.card-head h2{margin:2px 0}.pill{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900}.quick-start{display:flex;align-items:center;gap:7px;background:#f4faf7;border:1px solid #cfe5d9;border-radius:13px;padding:10px 12px;margin-bottom:10px}.quick-start>div{margin-right:auto}.quick-start strong{display:block}.quick-start span{font-size:11px;color:var(--muted)}.quick-start button{font-size:11px;padding:8px 10px}.quick-start .recommended{border-color:#5ba47e;background:#edf8f2}.cap-bar{position:sticky;top:124px;z-index:30;background:linear-gradient(135deg,#0e2e43,#17465f);color:#fff;border-radius:14px;padding:13px 15px;margin-bottom:9px;display:grid;grid-template-columns:1fr auto;gap:5px 15px;box-shadow:0 10px 28px #0b24362c}.cap-bar .eyebrow{color:#90cfb1}.cap-bar strong{display:block;font-size:28px}.cap-stats{display:flex;gap:18px;align-items:center;font-size:12px}.cap-stats b{font-size:15px}.progress{grid-column:1/-1;height:7px;background:#ffffff25;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:#83caaa}.position-counts{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 11px}.pos-count{font-size:11px;font-weight:900;border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 8px}.pos-count.done{background:#eaf6ef;color:#166c4d;border-color:#cbe5d7}.builder-grid{display:grid;grid-template-columns:minmax(570px,1.05fr) minmax(500px,.95fr);gap:12px;align-items:start}.pitch-card{position:sticky;top:213px}.market-col{min-width:0}.market-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.filter-chip{font-size:11px;font-weight:900;border:1px solid var(--line);background:#eef4f7;border-radius:999px;padding:6px 9px}.small-btn{font-size:11px;padding:7px 10px}.market-controls{display:grid;grid-template-columns:1.3fr .8fr .8fr 1fr;gap:7px;padding:9px;position:static}.market-controls input,.market-controls select{margin:0}.market-card{padding:7px 10px;max-height:730px;overflow:auto}.market-head,.player-row{display:grid;grid-template-columns:1fr 65px 70px 74px 86px;gap:7px;align-items:center}.market-head{padding:5px 4px 8px;border-bottom:1px solid var(--line);font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.06em;color:#87959e}.market-head span:not(:first-child){text-align:center}.player-row{padding:9px 4px;border-bottom:1px solid #edf1f3}.player-row:hover{background:#f9fbfc}.player-main{display:grid;grid-template-columns:46px 1fr;gap:8px;align-items:center;cursor:pointer}.player-name{font-size:14px;font-weight:900}.player-meta{font-size:10px;color:var(--muted)}.fixture-mini,.row-price,.row-proj{text-align:center;font-size:12px;font-weight:900}.fixture-mini small,.row-proj small{display:block;font-size:8px;color:var(--muted)}.kit{position:relative;width:44px;height:44px;margin:auto}.kit.large{width:82px;height:78px}.kit-body{position:absolute;left:10px;top:7px;width:24px;height:33px;border-radius:5px 5px 8px 8px;border:1px solid #0002}.kit.large .kit-body{left:19px;top:9px;width:44px;height:60px;border-radius:9px 9px 12px 12px}.sleeve{position:absolute;top:9px;width:12px;height:15px;border-radius:5px}.sleeve.left{left:2px;transform:rotate(18deg)}.sleeve.right{right:2px;transform:rotate(-18deg)}.kit.large .sleeve{top:13px;width:22px;height:26px}.kit.large .sleeve.left{left:2px}.kit.large .sleeve.right{right:2px}.kit-num{position:absolute;left:50%;top:18px;transform:translateX(-50%);font-size:10px;font-weight:1000;text-shadow:0 1px 2px #0007}.kit.large .kit-num{top:33px;font-size:19px}.gridiron{position:relative;overflow:hidden;border-radius:16px;border:3px solid #f4f6f7;background:repeating-linear-gradient(180deg,transparent 0,transparent 8.9%,rgba(255,255,255,.44) 9%,rgba(255,255,255,.44) 9.25%,transparent 9.35%,transparent 18%),repeating-linear-gradient(90deg,rgba(255,255,255,.018) 0,rgba(255,255,255,.018) 10%,rgba(0,0,0,.015) 10%,rgba(0,0,0,.015) 20%),linear-gradient(#337f5a,#26714e);box-shadow:inset 0 0 0 2px #ffffff17,0 9px 25px #173a2a1d;padding:54px 18px 48px}.gridiron:before,.gridiron:after{content:"END ZONE";position:absolute;left:0;right:0;height:39px;background:#124b37aa;color:#ffffff53;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:950;letter-spacing:.22em}.gridiron:before{top:0;border-bottom:2px solid #ffffffab}.gridiron:after{bottom:0;border-top:2px solid #ffffffab}.yard-labels{position:absolute;inset:39px 0 39px;pointer-events:none}.yard-labels span{position:absolute;color:#ffffff55;font-size:14px;font-weight:1000}.yard-labels .l{left:4%}.yard-labels .r{right:4%;transform:rotate(180deg)}.pitch-row{position:relative;z-index:2;display:grid;grid-template-columns:64px 1fr;align-items:center;margin:3px 0}.row-label{color:#fff;background:#0a3225a8;border:1px solid #ffffff30;border-radius:999px;font-size:10px;font-weight:950;text-align:center;padding:5px 6px;margin-right:6px}.slot-wrap{display:flex;justify-content:center;gap:7px;min-height:96px;align-items:center}.player-card{position:relative;width:116px;min-height:92px;background:#fffffff5;border:1px solid #0d2e401c;border-radius:11px;padding:6px;text-align:center;box-shadow:0 5px 13px #0002;cursor:pointer}.player-card.empty{background:#ffffff16;border:2px dashed #ffffff95;color:#fff;box-shadow:none;display:flex;align-items:center;justify-content:center}.player-card.empty:hover{background:#ffffff24}.slot-pos{font-size:10px;font-weight:1000;letter-spacing:.06em}.empty small{display:block;margin-top:5px;color:#e3f0e9;font-size:9px}.card-name{font-size:12px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-meta{font-size:10px;color:#60727e}.card-points{font-size:11px;font-weight:900}.bench-head{display:flex;justify-content:space-between;align-items:center;margin:10px 1px 6px;font-size:12px}.bench-head span{font-size:11px;color:var(--muted)}.bench-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.bench-card{min-height:100px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;text-align:center;position:relative;cursor:pointer}.bench-card.empty{border-style:dashed;color:var(--muted);display:flex;align-items:center;justify-content:center}.dragging{opacity:.4}.drag-over{outline:3px solid var(--gold);outline-offset:2px}.captain-badge{position:absolute;right:5px;top:5px;z-index:5;min-width:30px;height:25px;border-radius:6px;background:#f1c94e;color:#172732;display:flex;align-items:center;justify-content:center;font-weight:1000;font-size:9px;border:2px solid #fff;box-shadow:0 2px 6px #0003}.captain-badge.vc{background:#dfe7ec}.captain-dock{position:absolute;z-index:5;right:14px;top:47px;background:#0b2e3ce8;color:#fff;border:1px solid #ffffff20;border-radius:12px;padding:8px 9px;display:flex;align-items:center;gap:6px}.captain-dock small{display:block;color:#c9dce5;font-size:8px;max-width:180px}.captain-dock .eyebrow{color:#8fd3b2}.captain-token{width:48px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:1000;cursor:grab;border:2px solid #fff;box-shadow:0 2px 7px #0003;position:relative}.captain-token:after{content:"••••";position:absolute;bottom:1px;font-size:6px;letter-spacing:1px;opacity:.65}.captain-token.c{background:#f1c94e;color:#152430}.captain-token.vc{background:#dce6ec;color:#152430}.captain-token.armed{outline:3px solid #fff;outline-offset:2px}.team-pitch{min-height:720px;padding-top:58px}.build-pitch{min-height:590px}.score-box{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;border-radius:13px;padding:11px 16px;min-width:170px}.score-box span{display:block;font-size:11px;color:#c6dbe6}.score-box strong{font-size:29px}.team-metrics,.season-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.team-metrics>div,.season-metrics .card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px 12px}.team-metrics span,.season-metrics span{display:block;font-size:10px;color:var(--muted)}.team-metrics b,.season-metrics strong{font-size:17px}.host-controls{background:linear-gradient(135deg,#0d2b3f,#17475f);color:#fff;border-radius:14px;padding:12px 14px;margin:10px 0;display:flex;justify-content:space-between;gap:10px;align-items:center}.host-controls .eyebrow{color:#8fd3b2}.host-controls strong{display:block}.host-buttons{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.host-buttons button{font-size:10px;padding:7px 9px}.team-card{position:relative}.live-module{display:none!important;margin-top:10px}.live-progress{height:7px;background:#e4eaed;border-radius:999px;overflow:hidden;margin:8px 0}.live-progress i{display:block;height:100%;width:0;background:#54a87a}.live-row{display:grid;grid-template-columns:1fr 75px 70px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #edf1f3}.live-row strong{font-size:13px}.live-row small{display:block;color:var(--muted);font-size:10px}.live-status{text-align:center;font-size:10px;font-weight:900;border-radius:999px;background:#eef3f6;padding:4px}.live-pts{text-align:right;font-size:16px;font-weight:950}.transfer-banner{background:#fff6dc;border:1px solid #ebd28e;border-radius:11px;padding:10px 12px;margin-bottom:9px;font-size:12px}.section-divider{height:1px;background:var(--line);margin:22px 0}.move-metrics{display:flex;gap:8px;flex-wrap:wrap}.move-metrics span{background:#eef4f7;border-radius:999px;padding:6px 8px;font-size:11px}.move-roster{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.move-item{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px}.move-item strong{font-size:12px}.move-item small{display:block;font-size:9px;color:var(--muted)}.league-grid,.rules-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.rank-row{display:grid;grid-template-columns:38px 1fr 70px;gap:7px;padding:8px 0;border-bottom:1px solid #edf1f3}.rank-row b:last-child{text-align:right}.rebuild-card{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;margin-bottom:10px}.power-icon{width:52px;height:52px;border-radius:13px;background:#e6c25d;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:1000}.rebuild-card h2{margin:2px 0}.rebuild-card p{margin:0;color:var(--muted);font-size:12px}.price-row{display:grid;grid-template-columns:1fr 90px 70px;gap:8px;padding:8px 0;border-bottom:1px solid #edf1f3}.price-up{color:#17714f}.price-down{color:#a54848}.rule-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px}.rule-card h2{margin:0 0 7px}.rule-card li{font-size:14px;line-height:1.5;margin:6px 0;color:#50616e}.feedback-card{max-width:760px;display:grid;gap:10px}.modal{position:fixed;inset:0;background:#081c28b5;z-index:90;display:flex;align-items:flex-end;justify-content:center;padding:20px}.modal-card{position:relative;width:min(760px,100%);background:#fff;border-radius:18px;padding:20px 22px;box-shadow:0 20px 60px #0005;max-height:90vh;overflow:auto}.modal-close{position:absolute;right:14px;top:12px;border:0;font-size:25px}.modal-hero{display:flex;gap:14px;align-items:center}.modal-hero h1{font-size:32px;margin:2px 0}.modal-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.modal-metrics>div{background:#f5f8f9;border-radius:11px;padding:11px}.modal-metrics span{display:block;font-size:10px;color:var(--muted)}.modal-metrics b{font-size:20px}.fixture-title{display:flex;justify-content:space-between;align-items:end}.fixture-title span{font-size:9px;color:var(--muted)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 3px 0 6px}.dot.easy{background:#69b98e}.dot.neutral{background:#d3bd55}.dot.hard{background:#cf6c6c}.fixture-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.fixture-card{border:1px solid var(--line);border-radius:10px;padding:9px;text-align:center}.fixture-card.d1{background:#e8f6ee;border-color:#b9dfca}.fixture-card.d2{background:#f1f8ed}.fixture-card.d3{background:#fbf8e9}.fixture-card.d4{background:#fff1e7}.fixture-card.d5{background:#fdeaea;border-color:#e7bcbc}.fixture-card strong{display:block;font-size:14px}.fixture-card b{display:block;font-size:18px}.fixture-card small{font-size:9px;color:var(--muted)}.modal-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}@media(max-width:1050px){.builder-grid{grid-template-columns:1fr}.pitch-card{position:static}.market-controls{position:static}.cap-bar{top:124px}.host-controls{display:block}.host-buttons{justify-content:flex-start;margin-top:8px}}@media(max-width:720px){main{padding:10px}.app-header{padding:0 10px}.header-right span{display:none}.tabs{top:72px}.page-head{display:block}.page-head>button,.score-box{margin-top:9px}.cap-bar{display:block;top:120px}.cap-stats{margin-top:7px;gap:10px;flex-wrap:wrap}.progress{margin-top:8px}.market-controls{grid-template-columns:1fr 1fr}.market-head,.player-row{grid-template-columns:1fr 55px 62px 72px}.market-head span:nth-child(4),.row-proj{display:none}.player-main{grid-template-columns:40px 1fr}.team-metrics,.season-metrics{grid-template-columns:1fr 1fr}.pitch-row{grid-template-columns:48px 1fr}.row-label{font-size:8px;padding:4px 2px}.player-card{width:88px;min-height:85px}.slot-wrap{gap:3px}.team-pitch{min-height:650px;padding-left:7px;padding-right:7px}.build-pitch{min-height:550px;padding-left:6px;padding-right:6px}.captain-dock{right:7px}.captain-dock>div:first-child{display:none}.bench-row{gap:3px}.bench-card{min-height:90px}.league-grid,.rules-grid{grid-template-columns:1fr}.move-roster{grid-template-columns:1fr}.fixture-grid{grid-template-columns:1fr 1fr}.overlay{align-items:flex-start;padding:max(8px,env(safe-area-inset-top)) 8px max(14px,env(safe-area-inset-bottom));overflow-y:auto}.welcome-card{width:100%;max-height:none;overflow:visible;margin:0 auto 20px;padding:16px 14px;border-radius:14px}.gm-welcome-lockup-wrap{margin:-2px 0 2px}.gm-welcome-lockup{width:min(260px,78vw);max-height:26svh;object-fit:contain}.welcome-steps{grid-template-columns:repeat(3,1fr);gap:5px;margin:10px 0}.welcome-steps>div{padding:8px 6px}.welcome-steps b{width:24px;height:24px;margin-bottom:4px}.welcome-steps strong{font-size:11px}.welcome-steps span{display:none}.form-grid{grid-template-columns:1fr}.welcome-card h1{font-size:28px}.lead{font-size:14px;line-height:1.4}}
/* v41 consolidated feedback build */
.quick-start{flex-wrap:wrap}
.quick-start-status{width:100%;font-size:11px;font-weight:850;color:#257054;margin-top:4px}
.market-controls{grid-template-columns:1.25fr .7fr .8fr .8fr .95fr!important}
.position-counts{gap:8px!important;margin:10px 0 14px!important}
.pos-count{font-size:14px!important;padding:8px 12px!important;border-width:2px!important}
.pos-count.done{box-shadow:0 2px 7px #176c4d16}
.free-move-metric small{display:block;font-size:9px;color:var(--muted);font-weight:650;margin-top:2px}
.move-metrics small{font-size:9px;color:var(--muted)}

/* Cleaner gridiron field */
.gridiron{
  background:
    repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0,rgba(255,255,255,.025) 10%,rgba(0,0,0,.018) 10%,rgba(0,0,0,.018) 20%),
    linear-gradient(#33845e,#26724e)!important;
  padding:56px 22px 50px!important;
}
.yard-labels{inset:40px 0 40px!important}
.yard-labels .yard-line{position:absolute;left:2%;right:2%;height:2px;background:rgba(255,255,255,.57)}
.yard-labels .yard-line.mid{height:3px;background:rgba(255,255,255,.82)}
.yard-labels .yard-num{position:absolute!important;right:2.3%!important;left:auto!important;transform:translateY(-50%)!important;color:rgba(255,255,255,.48)!important;font-size:13px!important}
.yard-labels .hash{position:absolute;width:17px;height:2px;background:rgba(255,255,255,.55)}
.yard-labels .hash.a{left:36%}.yard-labels .hash.b{right:36%}
.pitch-row{grid-template-columns:72px 1fr!important;margin:5px 0!important}
.row-label{font-size:12px!important;padding:6px 8px!important}
.slot-wrap{min-height:100px!important}

/* Strong 5-level fixture palette */
.fixture-card.d1,.fixture-cell.d1{background:#d4f2df!important;border-color:#43a86e!important;color:#125f38}
.fixture-card.d2,.fixture-cell.d2{background:#e8f5d7!important;border-color:#8abd63!important;color:#426d28}
.fixture-card.d3,.fixture-cell.d3{background:#fff3b8!important;border-color:#d7b82d!important;color:#705e0e}
.fixture-card.d4,.fixture-cell.d4{background:#ffe2c6!important;border-color:#e88a42!important;color:#8b4820}
.fixture-card.d5,.fixture-cell.d5{background:#f9cfd2!important;border-color:#d85860!important;color:#8f2930}
.fixture-card{border-width:2px!important}
.modal-difficulty-legend{font-weight:850}

/* Drag legality hints */
.swap-valid{outline:4px solid #55bd82!important;outline-offset:3px!important;background:#eaf8f0!important;transform:translateY(-2px)}
.swap-invalid{opacity:.28!important;filter:grayscale(.45)}
.swap-source{outline:4px solid #f1c94e!important;outline-offset:3px!important}

/* Bench scores */
.bench-card .card-points{display:block;margin-top:3px;font-size:12px;font-weight:950}
.bench-card.score-live,.player-card.score-live{border-color:#48a97a!important;box-shadow:0 0 0 3px #65bb8b33,0 5px 13px #0002!important}
.bench-card.score-final,.player-card.score-final{background:#f0f4f6!important;border-color:#9babb5!important}
.card-points.live{color:#15734f}
.card-points.final{color:#415866}
.card-points .lock{font-size:10px;margin-left:2px}
.card-points small{display:block;font-size:8px;color:var(--muted);font-weight:750}

/* Cleaner rules */
.rules-quick{padding:8px 18px}
.rule-section{display:grid;grid-template-columns:180px 1fr;gap:15px;padding:15px 0;border-bottom:1px solid var(--line)}
.rule-section:last-child{border-bottom:0}
.rule-section h2{font-size:18px;margin:1px 0}
.rule-section ul{margin:0;padding-left:20px}
.rule-section li{font-size:14px;line-height:1.5;margin:5px 0}

/* Fixture season grid */
.difficulty-scale{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.difficulty-scale span{font-size:10px;font-weight:950;padding:6px 8px;border-radius:8px;border:1px solid #0001}
.difficulty-scale .d1{background:#d4f2df;color:#125f38}.difficulty-scale .d2{background:#e8f5d7;color:#426d28}
.difficulty-scale .d3{background:#fff3b8;color:#705e0e}.difficulty-scale .d4{background:#ffe2c6;color:#8b4820}
.difficulty-scale .d5{background:#f9cfd2;color:#8f2930}
.fixture-grid-tools{display:flex;gap:10px;margin-bottom:12px}
.fixture-grid-tools label{font-size:12px;font-weight:900}
.fixture-grid-tools select{display:block;min-height:38px;margin-top:4px}
.fixture-season-grid{overflow:auto;border:1px solid var(--line);border-radius:10px}
.fixture-table{border-collapse:separate;border-spacing:0;min-width:1450px;width:100%;font-size:11px}
.fixture-table th,.fixture-table td{padding:6px;border-right:1px solid #e0e7eb;border-bottom:1px solid #e0e7eb;text-align:center}
.fixture-table thead th{position:sticky;top:0;z-index:3;background:#102b3f;color:#fff}
.fixture-table .team-sticky{position:sticky;left:0;z-index:2;background:#fff;text-align:left;font-weight:950;min-width:76px}
.fixture-table thead .team-sticky{z-index:4;background:#102b3f;color:#fff}
.fixture-cell{padding:7px 5px;border-radius:7px;font-weight:950;white-space:nowrap}
.fixture-cell.bye{background:#e8edf0;color:#657681}
.fixture-cell.tbc{background:#f4f6f7;color:#9aa6ad}
.fixture-table tr.dim{opacity:.25}.fixture-table tr.focus{outline:2px solid #1e7857;outline-offset:-2px}
.fixture-note{font-size:11px;color:var(--muted);margin:9px 2px 0}

/* Full player profile */
.profile-back{margin-bottom:10px}
.player-profile-head{display:flex;gap:18px;align-items:center;padding:18px;margin-bottom:12px}
.profile-kit{min-width:95px}
.profile-kpis{display:flex;gap:8px;flex-wrap:wrap}
.profile-kpis span{background:#f5f8fa;border:1px solid var(--line);border-radius:9px;padding:8px 11px;min-width:110px}
.profile-kpis small{display:block;font-size:9px;color:var(--muted)}
.profile-kpis b{font-size:15px}
.profile-block{margin-bottom:12px}
.profile-note{font-size:10px;color:var(--muted)}
.profile-table-wrap{overflow:auto}
.profile-table{border-collapse:collapse;width:100%;font-size:12px}
.profile-table th,.profile-table td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.profile-table th{font-size:9px;text-transform:uppercase;color:var(--muted)}
.profile-table th:first-child,.profile-table td:first-child,.profile-table th:nth-child(2),.profile-table td:nth-child(2){text-align:left}
.profile-points{font-weight:1000;color:#166c4d}
.profile-empty{padding:25px;text-align:center;color:var(--muted);font-size:13px}
.profile-fixtures{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.profile-fixtures .fixture-card{padding:14px;text-align:center;border-radius:10px}

/* Live scoring feed */
.live-module .card-head h2:after{content:" · Player scores below";font-size:10px;color:var(--muted);font-weight:700}
.live-row{grid-template-columns:1fr 90px 90px!important}
.live-status{font-weight:950}
.live-status.live{color:#14724e}.live-status.final{color:#536874}

@media(max-width:900px){
  .market-controls{grid-template-columns:1fr 1fr!important}
  .rule-section{grid-template-columns:1fr;gap:2px}
  .profile-fixtures{grid-template-columns:repeat(2,1fr)}
}

/* v42 season engine / persistence / profile depth */

.recovery-panel{margin-top:13px;border-top:1px solid var(--line);padding-top:11px}
.recovery-panel summary{cursor:pointer;font-size:12px;font-weight:950;color:#38576a}
.recovery-panel p{font-size:11px;color:var(--muted);margin:8px 0}
.recovery-current{padding:8px 10px;background:#eaf6ef;border:1px solid #c8e6d6;border-radius:8px;font-size:11px;margin:7px 0}
.recovery-form{display:flex;gap:6px;margin-top:7px}
.recovery-form input{flex:1;text-transform:uppercase;letter-spacing:.08em;font-weight:900}

.season-history-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:12px;margin-bottom:12px}
.season-history-wrap{overflow:auto}
.season-history-table{width:100%;border-collapse:collapse;font-size:12px}
.season-history-table th,.season-history-table td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.season-history-table th{font-size:9px;text-transform:uppercase;color:var(--muted)}
.season-history-table th:first-child,.season-history-table td:first-child,
.season-history-table th:nth-child(2),.season-history-table td:nth-child(2){text-align:left}
.rank-up{color:#16704f}.rank-down{color:#b14b50}.rank-flat{color:#71818b}
.transfer-history-row{display:grid;grid-template-columns:40px 1fr auto;gap:7px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.transfer-history-row:last-child{border-bottom:0}
.transfer-history-row small{display:block;color:var(--muted);font-size:9px}
.transfer-history-row .penalty{font-size:10px;color:#a54449;font-weight:950}
.season-history-empty{padding:20px;text-align:center;color:var(--muted);font-size:12px}

.profile-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.profile-market-pulse{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.profile-market-pulse>div{background:#f5f8fa;border:1px solid var(--line);border-radius:9px;padding:10px}
.profile-market-pulse small{display:block;color:var(--muted);font-size:9px}
.profile-market-pulse b{font-size:15px}
.profile-price-history{min-height:104px;display:flex;align-items:flex-end;gap:5px;padding:8px 2px 2px}
.price-history-bar{flex:1;min-width:18px;text-align:center}
.price-history-bar i{display:block;margin:0 auto 4px;width:70%;min-height:4px;background:#276f91;border-radius:4px 4px 1px 1px}
.price-history-bar span{font-size:8px;color:var(--muted);display:block}
.price-history-bar b{font-size:9px;display:block}
.profile-breakdown{font-size:9px;color:var(--muted);max-width:340px;white-space:normal!important;line-height:1.35;text-align:left!important}
.profile-kpis span.positive b{color:#15704f}.profile-kpis span.negative b{color:#a84349}

.rank-row{grid-template-columns:34px 1fr auto!important}
.rank-row span small{display:block;font-size:8px;color:var(--muted);margin-top:2px}
.rank-move-up{color:#16704f;font-weight:950}.rank-move-down{color:#b14b50;font-weight:950}.rank-move-flat{color:#86949d;font-weight:850}

@media(max-width:900px){
  .season-history-grid,.profile-two-col{grid-template-columns:1fr}
  .profile-market-pulse{grid-template-columns:repeat(2,1fr)}
}

/* v43 private-alpha hardening */
.save-state{font-size:9px;color:#70818b;font-weight:850;padding:5px 7px}
.save-state.saving{color:#a06d16}.save-state.saved{color:#17704e}.save-state.error{color:#a64349}

/* v45 Gameweek clarity / trade UX */
.market-controls{grid-template-columns:minmax(230px,1.25fr) minmax(150px,.62fr) minmax(190px,.9fr) minmax(160px,.72fr) minmax(190px,.85fr)!important;align-items:stretch}
.market-controls input,.market-controls select{font-size:14px!important;min-width:0;width:100%;padding:12px 38px 12px 13px!important}
.affordable-control{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 13px;font-size:13px;font-weight:950;white-space:nowrap;cursor:pointer}
.affordable-control input{width:18px!important;height:18px!important;padding:0!important;accent-color:#1b7555}

.starting-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(340px,.7fr);gap:12px;align-items:start}
.starting-list-card{position:sticky;top:10px}
.team-list-panel{display:flex;flex-direction:column;gap:7px}
.team-list-row{display:grid;grid-template-columns:45px minmax(0,1fr) 105px;gap:8px;align-items:center;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:#fff}
.team-list-row.live{border:2px solid #50ad7a;background:#eef9f3}
.team-list-row.final{background:#f1f4f6;border-color:#a6b3bc}
.team-list-row.autosub{border:3px solid #1b7752;background:#e5f6ec;font-weight:1000}
.team-list-row .slot{font-size:11px;font-weight:1000;color:#48606e}
.team-list-row .player-meta strong{display:block;font-size:14px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-list-row .player-meta small{font-size:10px;color:var(--muted)}
.team-list-row .score{text-align:right;font-size:16px;font-weight:1000;line-height:1.1}
.team-list-row .score.live{color:#12714c}.team-list-row .score.final{color:#425963}
.team-list-row .score.captain{color:#8a5d00;background:#fff0b0;border:2px solid #e4bd42;border-radius:8px;padding:6px}
.sub-label{display:inline-block;background:#15704d;color:#fff;border-radius:999px;padding:2px 6px;font-size:8px;margin-left:4px;vertical-align:2px}

.player-card .card-points,.bench-card .card-points{font-size:15px!important;line-height:1.1!important}
.player-card .card-points small,.bench-card .card-points small{font-size:10px!important;margin-top:3px!important}
.player-card .card-points.live,.bench-card .card-points.live{font-size:17px!important}
.player-card .card-points.final,.bench-card .card-points.final{font-size:16px!important}
.player-card .captain-score,.bench-card .captain-score{color:#895d00!important;background:#fff0af!important;border:2px solid #e4bd42!important;border-radius:8px;padding:4px 6px!important}
.captain-badge{background:#f4c542!important;color:#17242c!important;border:2px solid #fff!important;box-shadow:0 2px 7px #0003!important}
.captain-token.c{background:#f4c542!important;color:#152630!important}

.live-row{font-size:14px!important;padding:11px 8px!important}
.live-row strong{font-size:15px!important}.live-row small{font-size:10px!important}
.live-pts{font-size:19px!important;font-weight:1000!important}.live-status{font-size:13px!important}
.live-row.autosub-row{font-weight:1000;background:#e7f7ed;border:2px solid #58a979;border-radius:8px;margin:4px 0}
.live-row.autosub-row strong{font-weight:1000!important}

.profile-table{font-size:15px!important}.profile-table th{font-size:11px!important;padding:12px 10px!important}.profile-table td{padding:13px 10px!important}
.profile-points{font-size:18px!important}.profile-breakdown{font-size:12px!important;line-height:1.5!important;min-width:360px!important}
.player-profile-head h1{font-size:32px!important}.profile-kpis b{font-size:18px!important}
.profile-fixtures .fixture-card b{font-size:19px!important}

#movesModule{margin:8px 0 15px!important;padding:0!important}
.moves-module .section-divider{display:none!important}
.moves-module .page-head{background:#f8fbfc;border:1px solid var(--line);border-radius:13px;padding:13px 15px;margin:0 0 9px}
.moves-module .page-head h2{font-size:22px!important}.moves-module .page-head p{font-size:12px!important}
.move-metrics{font-size:13px!important}.move-metrics b{font-size:15px!important}
.move-roster{margin-top:8px!important}.move-item button{font-size:14px!important;font-weight:1000!important}
.trade-state-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;border:2px solid #bfd0da;background:#f7fafc;border-radius:11px;padding:12px 14px;margin-bottom:9px}
.trade-state-banner.preseason{border-color:#72b88e;background:#edf8f1}
.trade-state-banner strong{font-size:15px}.trade-state-banner small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.trade-state-banner .penalty{font-size:12px;font-weight:950}.trade-state-banner .penalty b{color:#a63e45}
.friend-link-hint{font-size:9px;color:#c8dce6;margin-left:6px;max-width:240px}

.bench-card.autosub-used{border:3px solid #1b7752!important;background:#e5f6ec!important;font-weight:1000!important}
.bench-card.autosub-used:after{content:"AUTO-SUB USED";display:block;margin-top:5px;font-size:9px;color:#126643;font-weight:1000}

.rules-scoring-block{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}
.rules-scoring-block h2{margin:2px 0 12px}.rules-scoring-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.rules-scoring-grid>div{background:#f7fafb;border:1px solid var(--line);border-radius:10px;padding:13px}.rules-scoring-grid h3{margin:0 0 5px;font-size:16px}.rules-scoring-grid p{margin:0;font-size:12px;line-height:1.55}

.fixture-season-grid{max-width:980px!important}.fixture-table{min-width:1650px!important}

@media(max-width:1250px){.starting-layout{grid-template-columns:1fr}.starting-list-card{position:static}.market-controls{grid-template-columns:1fr 1fr!important}}
@media(max-width:720px){.team-list-row{grid-template-columns:38px minmax(0,1fr) 90px}.rules-scoring-grid{grid-template-columns:1fr}.profile-breakdown{min-width:260px!important}}

/* v46 player depth, watchlists and weekly recap */
.market-controls{grid-template-columns:1.2fr .6fr .78fr .82fr .72fr .88fr!important}
.market-footer{display:flex;justify-content:space-between;align-items:center;padding:11px 12px;border-top:1px solid var(--line);background:#f7fafb}
.market-footer span{font-size:11px;color:var(--muted);font-weight:800}
.player-pool-badge{display:inline-block;font-size:8px;font-weight:950;padding:2px 5px;border-radius:999px;margin-left:5px;vertical-align:2px}
.player-pool-badge.core{background:#e1f0e8;color:#176644}
.player-pool-badge.extended{background:#edf0f4;color:#596974}
.watch-star{appearance:none;border:0!important;background:transparent!important;padding:1px 3px!important;font-size:18px!important;line-height:1!important;color:#a4b0b7!important;box-shadow:none!important}
.watch-star.on{color:#d39e13!important}
.market-card .player-name{display:flex;align-items:center;gap:3px}
.extended-note{font-size:9px;color:#7b8992;font-weight:700;margin-top:1px}
.modal-metrics{grid-template-columns:repeat(4,1fr)!important}

.week-recap-card{margin-bottom:12px}
.week-recap-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.recap-stat{border:1px solid var(--line);background:#f6f9fa;border-radius:10px;padding:10px}
.recap-stat small{display:block;color:var(--muted);font-size:9px;font-weight:800}
.recap-stat b{font-size:18px;display:block;margin-top:2px}
.recap-stat.gold{background:#fff5cf;border-color:#e2c257}
.recap-stat.positive b{color:#176c4c}.recap-stat.negative b{color:#a6454b}
.global-top-scorers{margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}
.global-top-scorers>strong{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.global-scorer-row{display:grid;grid-template-columns:28px 1fr auto;gap:7px;padding:7px 0;border-bottom:1px solid #edf1f3;font-size:12px}
.global-scorer-row:last-child{border-bottom:0}
.global-scorer-row small{color:var(--muted)}

.host-data-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.host-data-actions button{cursor:pointer}
.host-data-status{font-size:11px;color:#687a87;margin-top:8px}
@media(max-width:1050px){
  .market-controls{grid-template-columns:repeat(3,1fr)!important}
  .week-recap-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:650px){
  .market-controls{grid-template-columns:1fr 1fr!important}
  .modal-metrics{grid-template-columns:repeat(2,1fr)!important}
  .week-recap-grid{grid-template-columns:1fr 1fr}
}

/* v47 broadcast / pro-football styling */
:root{--navy:#071d2c;--navy2:#0d344d;--broadcast-red:#c93232;--score-gold:#f0c94d;--turf:#17633f;--turf2:#1e7049}
.app-header{height:72px;background:linear-gradient(90deg,#061a29,#0b2c42 55%,#091f30);border-bottom:3px solid var(--broadcast-red);box-shadow:0 5px 18px #00101a33}
.pro-shield{clip-path:polygon(50% 0,92% 14%,86% 69%,50% 100%,14% 69%,8% 14%);border-radius:0!important;background:linear-gradient(180deg,#f6f8f9,#c8d7df)!important;width:42px!important;height:48px!important;box-shadow:inset 0 0 0 3px #0d334b}
.pro-shield span{font-size:14px;font-weight:1000}
.brand-title{font-size:16px;letter-spacing:.11em}.brand-sub{font-size:9px;letter-spacing:.08em;text-transform:uppercase}
.tabs{background:#fff;border-radius:5px;border:1px solid #cfdbe1;padding:0;overflow:hidden;box-shadow:0 2px 10px #0b29390a}
.tab{border-radius:0!important;padding:13px 16px;font-size:12px;text-transform:uppercase;letter-spacing:.045em;border-right:1px solid #e2e8eb!important}
.tab.active{background:#0b2a3e;position:relative}.tab.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--broadcast-red)}
.broadcast-ribbon{display:grid;grid-template-columns:1.5fr repeat(4,minmax(110px,.7fr));background:linear-gradient(90deg,#071e2c,#0c344d);color:#fff;border-top:4px solid var(--broadcast-red);border-radius:5px;overflow:hidden;margin-bottom:10px;box-shadow:0 8px 22px #0a22301b}
.broadcast-ribbon>div{min-height:64px;padding:10px 13px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid #ffffff18}
.broadcast-ribbon small{font-size:8px;letter-spacing:.15em;color:#a9c0ce;font-weight:950}.broadcast-ribbon strong{font-size:17px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.broadcast-brand{flex-direction:row!important;align-items:center!important;gap:9px!important}.broadcast-brand span{display:grid;place-items:center;width:34px;height:34px;background:#fff;color:#092537;font-size:11px;font-weight:1000;clip-path:polygon(50% 0,92% 14%,86% 69%,50% 100%,14% 69%,8% 14%)}.broadcast-brand b{font-size:12px;letter-spacing:.1em}
.game-window-card{margin-bottom:12px;border-radius:6px}.game-window-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.game-window{min-height:82px;border:1px solid #ccd9df;border-radius:5px;background:linear-gradient(#fff,#f3f6f7);padding:9px 10px;position:relative;overflow:hidden}
.game-window:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#98a9b3}.game-window.live:before{background:#26a466}.game-window.complete:before{background:#344f60}.game-window.current{box-shadow:0 0 0 2px #d04b4b33;border-color:#c34b4b}
.game-window small{display:block;font-size:8px;color:var(--muted);font-weight:900;letter-spacing:.09em}.game-window strong{font-size:13px;display:block;margin-top:4px}.game-window b{font-size:18px;display:block;margin-top:2px}.game-window .window-players{font-size:9px;color:#687985;margin-top:3px}
.pitch-shell{position:relative}.midfield-mark{pointer-events:none;position:absolute;z-index:2;left:50%;top:49%;transform:translate(-50%,-50%);width:84px;height:84px;opacity:.11;display:grid;place-items:center;clip-path:polygon(50% 0,93% 14%,87% 70%,50% 100%,13% 70%,7% 14%);background:white}.midfield-mark span{color:#0d5037;font-size:27px;font-weight:1000}
.gridiron{border-radius:4px!important;background:repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0,rgba(255,255,255,.025) 9.9%,rgba(0,0,0,.025) 10%,rgba(0,0,0,.025) 20%),linear-gradient(90deg,var(--turf),var(--turf2),var(--turf))!important;border:4px solid #f3f5ef!important;box-shadow:inset 0 0 30px #062a1a33}
.team-card{border-radius:6px!important;padding:9px!important;background:#e8edf0}.player-card,.bench-card{border-radius:5px!important;box-shadow:0 4px 8px #00162121!important}.player-card .slot-pos,.bench-card .slot-pos{font-size:10px;letter-spacing:.09em}.player-card .card-name,.bench-card .card-name{font-weight:1000}
.score-box{border-radius:4px!important;background:linear-gradient(180deg,#0c3852,#08293d)!important;border-top:4px solid var(--broadcast-red)!important}.score-box strong{font-size:34px!important;letter-spacing:-.03em}
.card{border-radius:7px}button,input,select,textarea{border-radius:5px}.fixture-cell,.fixture-card{border-radius:4px!important}
.season-integrity-card{margin-bottom:12px}.season-integrity{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.integrity-item{border:1px solid var(--line);border-radius:5px;padding:9px 10px;background:#f7f9fa}.integrity-item small{display:block;font-size:8px;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.08em}.integrity-item b{display:block;font-size:14px;margin-top:3px}.integrity-item.ok b{color:#176947}.integrity-item.warn b{color:#a84646}
@media(max-width:900px){.broadcast-ribbon{grid-template-columns:1fr 1fr}.broadcast-brand{grid-column:1/-1}.game-window-strip{grid-template-columns:repeat(2,1fr)}.season-integrity{grid-template-columns:repeat(2,1fr)}}

/* v48 Game Day + server-authoritative team management */
.week-slate-card{margin-bottom:12px;border-top:4px solid #c93232}
.week-matchup-slate{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.matchup-card{border:1px solid #cfdbe1;border-radius:5px;background:linear-gradient(#fff,#f4f7f8);padding:9px 10px;min-height:92px;position:relative}
.matchup-card.owned{box-shadow:inset 0 0 0 2px #1d795533}
.matchup-time{font-size:9px;color:#647884;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.matchup-teams{display:grid;grid-template-columns:1fr 22px 1fr;align-items:center;gap:5px;margin-top:7px}
.matchup-team{text-align:center;font-weight:1000;font-size:14px}
.matchup-team i{display:block;width:18px;height:6px;border-radius:2px;margin:0 auto 4px}
.matchup-at{text-align:center;font-size:9px;color:#81909a;font-weight:900}
.matchup-owned{margin-top:7px;text-align:center;font-size:9px;font-weight:950;color:#176a49}
.kickoff-local{display:block;font-size:8px!important;color:#657985!important;font-weight:850!important;margin-top:1px}
.write-session-status{font-size:9px;font-weight:900;color:#5e7380;background:#eef3f6;border:1px solid #d6e1e7;padding:5px 8px;border-radius:4px;margin-left:auto}
.write-session-status.secure{color:#166a49;background:#e6f5ed;border-color:#b9dec9}
.write-session-status.warn{color:#9a6325;background:#fff3df;border-color:#ebca96}
.server-trade-pending{opacity:.65;pointer-events:none}
.trade-state-banner.server-backed:after{content:"SERVER VERIFIED";font-size:8px;font-weight:1000;letter-spacing:.08em;color:#1b6b4b;background:#e1f3e9;border:1px solid #b7dec7;padding:3px 5px;border-radius:3px;margin-left:8px}
@media(max-width:1000px){.week-matchup-slate{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.week-matchup-slate{grid-template-columns:1fr}}

/* v49 security + market/form depth */
.profile-performance-card{margin-bottom:12px;border-top:4px solid #173d59}
.profile-performance{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.form-stat{border:1px solid #d6e0e5;background:linear-gradient(#fff,#f4f7f8);border-radius:5px;padding:10px}
.form-stat small{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:#6b7d88;font-weight:900}
.form-stat b{display:block;font-size:19px;margin-top:3px}
.form-stat.hot{background:#eef8f2;border-color:#b9ddc8}.form-stat.hot b{color:#146747}
.form-stat.gold{background:#fff6d3;border-color:#e4ca6b}
.profile-price-reason{margin-top:7px;padding:8px 9px;border-left:4px solid #173d59;background:#f4f7f9;font-size:10px;color:#5d707c;font-weight:800}
.price-history-bar span.reason{font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70px;margin:auto;color:#80909a}
.security-note{font-size:9px;color:#617580;font-weight:800}
@media(max-width:900px){.profile-performance{grid-template-columns:repeat(3,1fr)}}
@media(max-width:550px){.profile-performance{grid-template-columns:repeat(2,1fr)}}

/* v50 — generic pro-football broadcast visual system */
:root{
  --pg-navy:#081d2b;
  --pg-navy-2:#10394f;
  --pg-red:#c83d3d;
  --pg-gold:#e3b93f;
  --pg-silver:#dce5e9;
  --pg-turf:#1d7047;
}
body{background:linear-gradient(180deg,#e9eff2 0,#f7f9fa 380px,#f7f9fa 100%)}
.app-header{background:linear-gradient(90deg,#071b29,#0e3449 62%,#092230)!important;border-bottom:3px solid var(--pg-red)}
.brand-mark{clip-path:polygon(50% 0,92% 15%,86% 68%,50% 100%,14% 68%,8% 15%);border-radius:0!important}
.brand-title{letter-spacing:.08em!important;text-transform:uppercase}
.tabs{border-radius:4px!important;box-shadow:0 3px 12px #04172312}
.tab{border-radius:0!important;text-transform:uppercase;letter-spacing:.045em}
.tab.active{position:relative;background:var(--pg-navy-2)!important}
.tab.active:after{content:"";position:absolute;height:4px;background:var(--pg-red);left:0;right:0;bottom:0}

.league-ticker{
  max-width:1480px;margin:10px auto 0;padding:0 18px;
  display:grid;grid-template-columns:1.4fr repeat(5,minmax(100px,.65fr));
}
.league-ticker>div{
  min-height:58px;background:#0a2637;color:#fff;padding:8px 11px;
  border-right:1px solid #ffffff18;border-top:3px solid #173f58;
  display:flex;flex-direction:column;justify-content:center;
}
.league-ticker>div:first-child{border-top-color:var(--pg-red);border-radius:4px 0 0 4px}
.league-ticker>div:last-child{border-radius:0 4px 4px 0}
.league-ticker small{font-size:8px;color:#a9bfcc;font-weight:950;letter-spacing:.13em}
.league-ticker b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ticker-brand{flex-direction:row!important;align-items:center!important;gap:8px!important}
.ticker-brand span{
  width:31px;height:35px;display:grid;place-items:center;background:#fff;color:#0b2b3e;font-weight:1000;font-size:10px;
  clip-path:polygon(50% 0,92% 15%,86% 68%,50% 100%,14% 68%,8% 15%);
}
.ticker-brand b{font-size:11px;letter-spacing:.08em}

.card{border-radius:6px!important}
button,input,select,textarea{border-radius:4px!important}
.gridiron{border-radius:3px!important;border:4px solid #f5f5ee!important;box-shadow:inset 0 0 40px #05261530}
.player-card,.bench-card{border-radius:4px!important}
.player-card .card-name,.bench-card .card-name{font-weight:1000}
.score-box{background:linear-gradient(#123c53,#082839)!important;border-top:4px solid var(--pg-red)!important;border-radius:4px!important}
.score-box strong{font-size:34px!important}

.league-tools-card,.my-leagues-card,.manager-feed-card{margin-bottom:12px}
.league-tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.league-tools-grid label{font-size:10px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
.inline-form{display:flex;gap:6px;margin-top:5px}
.inline-form input{flex:1}
.my-league-row{
  display:grid;grid-template-columns:1fr auto auto;gap:9px;align-items:center;
  padding:10px 0;border-bottom:1px solid var(--line)
}
.my-league-row:last-child{border-bottom:0}
.my-league-row strong{font-size:13px}
.my-league-row small{display:block;color:var(--muted);font-size:9px}
.league-code-pill{
  padding:5px 7px;border:1px solid #cfdce2;background:#f4f8fa;font-size:10px;font-weight:1000;letter-spacing:.1em
}

.manager-feed{display:flex;flex-direction:column}
.feed-row{display:grid;grid-template-columns:76px 1fr auto;gap:9px;padding:10px 0;border-bottom:1px solid var(--line);align-items:center}
.feed-row:last-child{border-bottom:0}
.feed-type{font-size:8px;font-weight:1000;letter-spacing:.07em;text-transform:uppercase;padding:4px 6px;background:#edf3f6;color:#44606f;border-left:3px solid #7194a8}
.feed-type.trade{border-left-color:#277451}.feed-type.price{border-left-color:#d19b2b}.feed-type.week{border-left-color:#c94747}.feed-type.rank{border-left-color:#315e8a}
.feed-row strong{font-size:12px}.feed-row small{display:block;color:var(--muted);font-size:9px}
.feed-row time{font-size:9px;color:var(--muted)}

.compare-drawer{
  position:fixed;right:0;top:0;bottom:0;width:min(520px,94vw);background:#fff;z-index:999;
  box-shadow:-16px 0 34px #00162135;padding:18px;overflow:auto;border-left:5px solid var(--pg-navy-2)
}
.compare-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:10px}
.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.compare-player{border:1px solid var(--line);padding:10px;border-radius:5px}
.compare-player h3{font-size:17px;margin:2px 0}
.compare-stat-row{display:grid;grid-template-columns:1fr auto auto;gap:6px;padding:7px 0;border-bottom:1px solid #edf1f3;font-size:11px}
.compare-stat-row:last-child{border-bottom:0}
.compare-best{background:#ecf7f0;color:#166947;font-weight:1000;padding:1px 4px}
.compare-select{
  display:flex;gap:6px;align-items:center;background:#f5f8fa;padding:8px;border:1px solid var(--line);margin-bottom:8px
}
.compare-select select{flex:1}

@media(max-width:900px){
  .league-ticker{grid-template-columns:repeat(2,1fr)}
  .ticker-brand{grid-column:1/-1}
  .league-tools-grid{grid-template-columns:1fr}
}

/* v50.1 continued build */
.trade-decision-card{display:grid;grid-template-columns:1.4fr repeat(4,minmax(110px,.65fr));margin:10px 0 12px;border:1px solid #cbd8df;border-left:5px solid #153d56;background:#fff;box-shadow:0 5px 14px #09253412}
.trade-decision-card.hidden{display:none}.trade-decision-card>div{padding:10px 12px;border-right:1px solid #e4eaed}.trade-decision-card>div:last-child{border-right:0}
.trade-decision-card small{display:block;font-size:8px;color:var(--muted);font-weight:950;text-transform:uppercase;letter-spacing:.09em}.trade-decision-card b{display:block;font-size:15px;margin-top:2px}.trade-decision-card .trade-name b{font-size:17px}
.trade-decision-card .penalty-warning{background:#fff3f3}.trade-decision-card .penalty-warning b{color:#a53d43}.trade-decision-card .free-trade{background:#edf8f1}.trade-decision-card .free-trade b{color:#176b49}

.gameweek-outlook-card{margin-bottom:12px}.gameweek-outlook-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.outlook-stat{padding:9px 10px;border:1px solid var(--line);background:#f6f9fa;border-radius:4px}.outlook-stat small{display:block;font-size:8px;font-weight:950;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}.outlook-stat b{display:block;font-size:18px;margin-top:3px}
.outlook-stat.live{border-left:4px solid #2b9d65;background:#eef8f2}.outlook-stat.remaining{border-left:4px solid #c18b25}.outlook-stat.locked{border-left:4px solid #3e5968}

.market-pulse-card{margin-bottom:12px}.market-pulse-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.pulse-panel{border:1px solid var(--line);border-top:4px solid #355a70;border-radius:4px;background:#fff;padding:9px}.pulse-panel.bought{border-top-color:#24734e}.pulse-panel.sold{border-top-color:#b44747}.pulse-panel.owned{border-top-color:#c99a2d}.pulse-panel.value{border-top-color:#32658c}
.pulse-panel h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:0 0 6px}.pulse-row{display:grid;grid-template-columns:1fr auto;gap:6px;padding:7px 0;border-bottom:1px solid #edf1f3}.pulse-row:last-child{border-bottom:0}.pulse-row strong{font-size:11px}.pulse-row small{display:block;color:var(--muted);font-size:8px}.pulse-row b{font-size:11px}
@media(max-width:1050px){.trade-decision-card{grid-template-columns:1fr 1fr}.trade-decision-card .trade-name{grid-column:1/-1}.gameweek-outlook-grid{grid-template-columns:repeat(3,1fr)}.market-pulse-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.gameweek-outlook-grid{grid-template-columns:1fr 1fr}.market-pulse-grid{grid-template-columns:1fr}}

/* v50.2 — ideas adapted from leading fantasy formats */
.readiness-card{margin-bottom:12px;border-top:4px solid #1b4c68}
.readiness-badge{font-size:10px;font-weight:1000;letter-spacing:.08em;padding:6px 9px;border-radius:4px;background:#edf2f5;color:#556a77;text-transform:uppercase}
.readiness-badge.ready{background:#e8f7ee;color:#176947;border:1px solid #80bf98}
.readiness-badge.warn{background:#fff3d9;color:#8c6414;border:1px solid #deb75f}
.readiness-badge.blocked{background:#fae9e9;color:#9e3d43;border:1px solid #d99499}
.readiness-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.readiness-check{border:1px solid var(--line);background:#f8fafb;padding:9px;border-radius:4px}
.readiness-check i{display:inline-grid;place-items:center;width:21px;height:21px;border-radius:50%;font-style:normal;font-weight:1000;font-size:10px;margin-bottom:5px}
.readiness-check.ok i{background:#dff3e7;color:#176947}.readiness-check.warn i{background:#fff0cc;color:#986d10}.readiness-check.bad i{background:#f9e0e0;color:#a14046}
.readiness-check small{display:block;text-transform:uppercase;letter-spacing:.07em;font-size:8px;color:var(--muted);font-weight:900}
.readiness-check b{display:block;font-size:12px;margin-top:2px}

.bye-planner-card{margin-bottom:12px}
.bye-planner-grid{display:grid;grid-template-columns:repeat(10,minmax(88px,1fr));gap:6px;overflow-x:auto}
.bye-week-cell{border:1px solid var(--line);padding:9px 8px;border-radius:4px;background:#f7f9fa;min-width:88px}
.bye-week-cell.clear{border-top:4px solid #2c875d}.bye-week-cell.watch{border-top:4px solid #d5a33c}.bye-week-cell.stress{border-top:4px solid #bf4c52;background:#fff5f5}
.bye-week-cell small{display:block;font-size:8px;color:var(--muted);font-weight:900;text-transform:uppercase}
.bye-week-cell b{font-size:18px;display:block}.bye-week-cell span{font-size:9px;color:#657783;display:block;margin-top:2px}
.bye-planner-advice{margin-top:9px;padding:9px 11px;border-left:4px solid #486d82;background:#f2f6f8;font-size:11px}

.profile-price-intelligence{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}
.price-intel-stat{border:1px solid var(--line);padding:8px;border-radius:4px;background:#f7f9fa}
.price-intel-stat.rise{background:#edf8f1;border-color:#9fcdb0}.price-intel-stat.fall{background:#fff1f1;border-color:#ddb0b3}
.price-intel-stat small{display:block;font-size:8px;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.price-intel-stat b{display:block;font-size:13px;margin-top:3px}
.price-intel-note{grid-column:1/-1;font-size:9px;color:#71818b;margin-top:2px}

.rival-compare-card{margin-bottom:12px;border-top:4px solid #9b7621}
.rival-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:10px}
.rival-stat{border:1px solid var(--line);padding:8px;border-radius:4px;background:#f7f9fa}
.rival-stat small{display:block;font-size:8px;color:var(--muted);font-weight:900;text-transform:uppercase}.rival-stat b{display:block;font-size:15px;margin-top:3px}
.rival-columns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rival-list{border:1px solid var(--line);border-radius:4px;padding:9px}.rival-list h3{font-size:11px;text-transform:uppercase;letter-spacing:.07em;margin:0 0 5px}
.rival-player{display:flex;justify-content:space-between;gap:6px;padding:6px 0;border-bottom:1px solid #edf1f3;font-size:10px}.rival-player:last-child{border-bottom:0}
.rival-differential{font-size:8px;background:#fff3c9;color:#845f12;font-weight:1000;padding:2px 4px;border-radius:3px;margin-left:4px}
.rank-row.rival-clickable{cursor:pointer}.rank-row.rival-clickable:hover{background:#f1f6f8}

.market-pulse-grid{grid-template-columns:repeat(6,1fr)!important}
.pulse-panel.risers{border-top-color:#19875a}.pulse-panel.fallers{border-top-color:#bd454c}

@media(max-width:1150px){
  .readiness-grid{grid-template-columns:repeat(3,1fr)}
  .market-pulse-grid{grid-template-columns:repeat(3,1fr)!important}
}
@media(max-width:760px){
  .readiness-grid{grid-template-columns:1fr 1fr}
  .profile-price-intelligence{grid-template-columns:1fr 1fr}
  .rival-summary{grid-template-columns:1fr 1fr}.rival-columns{grid-template-columns:1fr}
  .market-pulse-grid{grid-template-columns:1fr!important}
}

/* v50.3 — competitive Gameweek loop */
.captaincy-centre-card{margin-top:12px;border-top:4px solid #d0a13a}
.captaincy-centre{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.captain-option{border:1px solid var(--line);background:#f8fafb;border-radius:4px;padding:9px;position:relative}
.captain-option.current{border:2px solid #d0a13a;background:#fff8dd}.captain-option.rank1:before{content:"TOP PICK";position:absolute;right:7px;top:7px;font-size:7px;font-weight:1000;letter-spacing:.08em;color:#7c5b11}
.captain-option small{display:block;color:var(--muted);font-size:8px;font-weight:900;text-transform:uppercase}.captain-option h3{font-size:13px;margin:3px 0}
.captain-option .captain-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:7px 0}.captain-option .captain-kpis div{background:#fff;border:1px solid #e1e8eb;padding:5px}.captain-option .captain-kpis b{display:block;font-size:11px}.captain-option .captain-kpis span{font-size:7px;color:var(--muted)}
.captain-option button{width:100%;font-size:10px;padding:6px}.captain-option button:disabled{opacity:.55}

.manager-review-card{margin-bottom:12px;border-top:4px solid #173f58}.manager-review-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.review-stat{border:1px solid var(--line);background:#f7f9fa;border-radius:4px;padding:9px}.review-stat small{display:block;font-size:8px;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.07em}.review-stat b{display:block;font-size:17px;margin-top:3px}
.review-stat.good{background:#edf8f1;border-color:#9dcdb0}.review-stat.warn{background:#fff5df;border-color:#e0bd72}
.manager-review-xi{margin-top:9px;display:grid;grid-template-columns:1fr 1fr;gap:9px}.review-xi-list{border:1px solid var(--line);padding:9px;border-radius:4px}.review-xi-list h3{font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin:0 0 5px}
.review-xi-player{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid #edf1f3;font-size:10px}.review-xi-player:last-child{border-bottom:0}.review-captain{background:#fff1b9;padding:1px 4px;font-weight:1000;border-radius:3px;margin-left:3px}

.league-live-note{margin:8px 0;padding:8px 10px;background:#eaf6ef;border-left:4px solid #25835a;font-size:10px;font-weight:800}
.rank-row.live-rank:before{content:"LIVE";font-size:7px;font-weight:1000;color:#168053;margin-right:2px}.rank-row .live-score{color:#168053}.rank-row.me-live{background:#fff8dd;border-left-color:#d0a13a}
@media(max-width:1050px){.captaincy-centre{grid-template-columns:1fr 1fr}.manager-review-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.captaincy-centre{grid-template-columns:1fr}.manager-review-grid{grid-template-columns:1fr 1fr}.manager-review-xi{grid-template-columns:1fr}}

/* v50.3.1 stability + Captaincy readability hotfix */
.data-load-error{padding:22px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;background:#fff1f1;border-left:5px solid #b84148}
.data-load-error b{font-size:15px}.data-load-error span{font-size:11px;color:#6d7b84}
.build-pitch .player-card.empty{min-width:126px;min-height:88px;background:rgba(255,255,255,.9);border:2px dashed rgba(13,54,77,.25)}
.build-pitch .player-card.empty .slot-pos{font-size:13px;font-weight:1000}.build-pitch .player-card.empty small{font-size:10px}
.position-counts{display:flex!important;gap:7px;flex-wrap:wrap;margin:9px 0 10px}
.pos-count{padding:7px 10px!important;font-size:11px!important;font-weight:900!important}
.captaincy-centre{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
.captain-option-large{border:1px solid #cdd9df;background:#f8fafb;border-radius:6px;padding:14px;box-shadow:0 4px 12px #0925350d}
.captain-option-large.current{border:3px solid #d0a13a;background:#fff9df}
.captain-option-head{display:grid;grid-template-columns:66px 1fr 100px;gap:12px;align-items:center}
.captain-option-head .kit.large{transform:scale(1.15);transform-origin:center}
.captain-option-head small{display:block;color:var(--muted);font-size:10px;font-weight:800;margin-top:4px}
.captain-option-head h3{font-size:21px;line-height:1.05;margin:3px 0 0;font-weight:1000}
.captain-rank-tag{display:inline-block;background:#0d344b;color:#fff;padding:4px 7px;font-size:8px;font-weight:1000;letter-spacing:.09em;border-radius:3px}
.captain-option-large.current .captain-rank-tag{background:#c08d1b}
.captain-projection{text-align:right}.captain-projection b{display:block;font-size:28px;line-height:1;font-weight:1000}.captain-projection span{font-size:8px;color:var(--muted);font-weight:900}
.captain-kpis-large{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:14px 0 11px}
.captain-kpis-large>div{background:#fff;border:1px solid #dde6ea;border-radius:4px;padding:9px}
.captain-kpis-large span{display:block;font-size:8px;color:var(--muted);font-weight:900;letter-spacing:.05em}.captain-kpis-large b{display:block;font-size:17px;margin-top:2px}
.captain-option-large button{width:100%;padding:10px;font-size:11px;font-weight:1000;letter-spacing:.04em}
.current-cap-btn{background:#e2b943!important;color:#162833!important;border-color:#c89b28!important}
@media(max-width:900px){.captaincy-centre{grid-template-columns:1fr!important}.captain-option-head{grid-template-columns:58px 1fr 84px}.captain-option-head h3{font-size:18px}.captain-projection b{font-size:24px}}

/* ==========================================================
   v50.4 — cleaner field + less crowded team page
   ========================================================== */

/* Internal data labels stay in the model but are not user-facing. */
.player-pool-badge,
.extended-note{display:none!important}

/* The pitch should read as a field, not a spreadsheet. */
.gridiron{
  background:
    repeating-linear-gradient(
      90deg,
      rgba(255,255,255,.018) 0,
      rgba(255,255,255,.018) 9.9%,
      rgba(0,0,0,.018) 10%,
      rgba(0,0,0,.018) 20%
    ),
    repeating-linear-gradient(
      0deg,
      transparent 0,
      transparent calc(10% - 1px),
      rgba(255,255,255,.30) calc(10% - 1px),
      rgba(255,255,255,.30) 10%
    ),
    linear-gradient(90deg,#17643f,#1d7048,#17643f)!important;
}
.yard-number{
  opacity:.48!important;
  font-size:15px!important;
  font-weight:800!important;
  letter-spacing:.01em!important;
  text-shadow:none!important
}
.yard-label{
  min-width:74px!important;
  width:auto!important;
  padding:5px 10px!important;
  border-radius:3px!important;
  background:rgba(4,35,25,.36)!important;
  border:0!important;
  color:rgba(255,255,255,.88)!important;
  box-shadow:none!important;
  font-size:10px!important;
  font-weight:900!important;
  letter-spacing:.10em!important;
  text-transform:uppercase!important
}
.yard-label:after{
  content:"";
  display:block;
  height:2px;
  width:18px;
  margin:4px auto 0;
  background:rgba(255,255,255,.38)
}
.end-zone-label{
  opacity:.38!important;
  letter-spacing:.24em!important;
  font-size:10px!important
}
.build-pitch .player-card.empty{
  background:rgba(249,252,250,.88)!important;
  border:1.5px dashed rgba(33,67,77,.30)!important;
  box-shadow:0 2px 5px rgba(3,28,20,.08)!important;
}
.build-pitch .player-card.empty .slot-pos{
  color:#193746!important;
  font-size:12px!important
}
.build-pitch .player-card.empty small{
  color:#7b8c91!important;
  font-size:9px!important
}

/* Week slate: fewer, larger tiles. */
.week-slate-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:11px!important
}
.week-slate-game{
  min-height:128px!important;
  padding:14px 15px!important;
  border-radius:6px!important
}
.week-slate-game .slate-time{
  font-size:10px!important;
  letter-spacing:.07em!important
}
.week-slate-game .slate-teams{
  font-size:20px!important;
  margin-top:8px!important
}
.week-slate-game .slate-owned{
  font-size:10px!important;
  line-height:1.35!important;
  margin-top:9px!important
}
.week-slate-game .team-abbr,
.week-slate-game strong{
  font-size:19px!important
}
@media(max-width:1050px){
  .week-slate-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:650px){
  .week-slate-grid{grid-template-columns:1fr!important}
}

/* Captaincy data remains available in player detail / Manager Review. */
.captaincy-centre-card{display:none!important}

/* Correct v50.4 Week Slate selectors */
.week-matchup-slate{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:11px!important
}
.matchup-card{
  min-height:128px!important;
  padding:14px 15px!important;
  border-radius:6px!important
}
.matchup-time{
  font-size:10px!important;
  letter-spacing:.07em!important
}
.matchup-teams{
  margin-top:10px!important;
  grid-template-columns:1fr 30px 1fr!important
}
.matchup-team{
  font-size:19px!important
}
.matchup-team i{
  width:28px!important;
  height:7px!important;
  margin-bottom:6px!important
}
.matchup-at{
  font-size:10px!important
}
.matchup-owned{
  font-size:10px!important;
  line-height:1.35!important;
  margin-top:11px!important
}
@media(max-width:1050px){
  .week-matchup-slate{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:650px){
  .week-matchup-slate{grid-template-columns:1fr!important}
}

/* v50.4 actual field selector cleanup */
.yard-labels .yard-line{
  height:1px!important;
  background:rgba(255,255,255,.27)!important
}
.yard-labels .yard-line.mid{
  height:1.5px!important;
  background:rgba(255,255,255,.42)!important
}
.yard-labels .yard-num{
  right:2.2%!important;
  color:rgba(255,255,255,.36)!important;
  font-size:11px!important;
  font-weight:800!important
}
.yard-labels .hash{
  width:11px!important;
  height:1px!important;
  background:rgba(255,255,255,.28)!important
}
.pitch-row{
  grid-template-columns:58px 1fr!important;
  margin:7px 0!important
}
.row-label{
  align-self:center!important;
  background:transparent!important;
  border:0!important;
  border-right:1px solid rgba(255,255,255,.25)!important;
  border-radius:0!important;
  box-shadow:none!important;
  color:rgba(255,255,255,.82)!important;
  font-size:9px!important;
  font-weight:950!important;
  line-height:1.15!important;
  letter-spacing:.08em!important;
  padding:5px 8px 5px 2px!important;
  margin-right:7px!important;
  text-align:right!important;
  text-transform:uppercase!important
}
.slot-wrap{min-height:102px!important}

/* v50.6 mobile / installable-web foundation */
.install-app-btn{
  background:#eef5f7!important;color:#0d344a!important;border:1px solid #c2d4dc!important;
  font-size:10px!important;font-weight:950!important;letter-spacing:.05em!important;padding:7px 9px!important
}
@media(max-width:760px){
  body{padding-bottom:68px!important}
  .app-header{height:62px!important}
  .brand-sub{display:none!important}
  .brand-title{font-size:12px!important;letter-spacing:.06em!important}
  .pro-shield{width:34px!important;height:39px!important}
  .tabs{
    position:fixed!important;z-index:850!important;left:0!important;right:0!important;bottom:0!important;
    display:flex!important;overflow-x:auto!important;overscroll-behavior-x:contain!important;
    padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)!important;
    border:0!important;border-top:1px solid #c7d4da!important;border-radius:0!important;
    background:#fff!important;box-shadow:0 -5px 18px rgba(5,27,39,.12)!important
  }
  .tab{
    flex:0 0 auto!important;min-width:84px!important;min-height:54px!important;padding:8px 10px!important;
    font-size:9px!important;display:grid!important;place-items:center!important;text-align:center!important;
    white-space:normal!important;line-height:1.08!important;border-right:1px solid #edf1f3!important
  }
  .tab.active:after{height:3px!important}
  .page{padding-left:10px!important;padding-right:10px!important}
  .page-head{margin-top:10px!important}
  .page-head h1{font-size:23px!important}
  .squad-layout,.starting-layout{grid-template-columns:1fr!important}
  .player-market{max-height:none!important}
  .market-toolbar{display:grid!important;grid-template-columns:1fr 1fr!important;gap:6px!important}
  .market-toolbar input,.market-toolbar select{min-width:0!important;width:100%!important}
  .market-toolbar .search-wrap{grid-column:1/-1!important}
  .team-list-card{order:2}
  .team-card{order:1}
  .broadcast-ribbon{grid-template-columns:1fr 1fr!important}
  .broadcast-brand{grid-column:1/-1!important}
  .team-metrics{grid-template-columns:repeat(2,1fr)!important}
  .score-box strong{font-size:28px!important}
  .league-ticker{display:none!important}
  .card{padding:10px!important}
  .modal-card{width:calc(100vw - 18px)!important;max-height:90vh!important}
  .compare-drawer{width:100vw!important}
  .week-matchup-slate{grid-template-columns:1fr!important}
  .fixtures-scroll{scrollbar-width:thin}
}
@media(max-width:430px){
  .market-toolbar{grid-template-columns:1fr!important}
  .market-toolbar .search-wrap{grid-column:auto!important}
  .team-metrics{grid-template-columns:1fr 1fr!important}
  .pitch-row{grid-template-columns:48px 1fr!important}
  .row-label{font-size:8px!important;padding-right:5px!important}
  .player-card{min-width:0!important}
  .bench-grid{grid-template-columns:1fr!important}
}

/* v50.6 mobile selector corrections for the real current DOM */
@media(max-width:760px){
  .tabs{top:auto!important;height:auto!important}
  main{padding:10px!important}
  .builder-grid{grid-template-columns:1fr!important;gap:10px!important}
  .pitch-card{position:static!important}
  .market-col{min-width:0!important}
  .market-card{max-height:none!important}
  .market-controls{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:6px!important;
    padding:8px!important
  }
  .market-controls input,.market-controls select,.market-controls label{
    width:100%!important;min-width:0!important;margin:0!important
  }
  .market-controls #search{grid-column:1/-1!important}
  .affordable-control{min-height:40px!important;display:flex!important;align-items:center!important}
  .bench-row{
    display:grid!important;
    grid-template-columns:repeat(5,minmax(108px,1fr))!important;
    overflow-x:auto!important;
    padding-bottom:5px!important
  }
}
@media(max-width:430px){
  .market-controls{grid-template-columns:1fr!important}
  .market-controls #search{grid-column:auto!important}
}

/* v50.6 narrow-phone overflow fixes */
@media(max-width:760px){
  .builder-grid,.pitch-card,.market-col,.market-controls,.market-card{min-width:0!important;width:100%!important;max-width:100%!important}
  .gridiron{padding-left:6px!important;padding-right:6px!important}
  .pitch-row{grid-template-columns:44px minmax(0,1fr)!important}
  .row-label{margin-right:3px!important;padding-left:0!important;padding-right:4px!important}
  .slot-wrap{min-width:0!important;gap:3px!important}
  .player-card{width:82px!important;max-width:82px!important;min-width:0!important}
  .build-pitch .player-card.empty{min-width:0!important;width:82px!important;max-width:82px!important}
  .market-head,.player-row{grid-template-columns:minmax(0,1fr) 48px 58px 68px!important;min-width:0!important}
  .player-main{min-width:0!important;grid-template-columns:36px minmax(0,1fr)!important}
  .player-main>div:last-child{min-width:0!important}
  .player-name{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
}
@media(max-width:390px){
  .player-card{width:78px!important;max-width:78px!important}
  .build-pitch .player-card.empty{width:78px!important;max-width:78px!important}
}

/* v50.7 — web game-loop polish */
.compact-management-strip{
  display:grid!important;grid-template-columns:1.25fr 1fr 1fr 1.35fr!important;
  gap:0!important;margin-bottom:10px!important;border:1px solid #d5e0e5!important;
  background:#fff!important;border-radius:5px!important;overflow:hidden!important
}
.compact-management-strip>div{padding:9px 12px!important;border-right:1px solid #e3eaed!important;background:transparent!important}
.compact-management-strip>div:last-child{border-right:0!important}
.compact-management-strip span{font-size:8px!important;letter-spacing:.08em!important;text-transform:uppercase!important;color:#71818b!important;font-weight:950!important}
.compact-management-strip b{font-size:15px!important;margin-top:1px!important}
.compact-week-status{margin-bottom:10px!important;padding:10px 12px!important}
.compact-week-status .card-head{margin-bottom:7px!important}
.compact-week-status .gameweek-outlook-grid{grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:5px!important}
.compact-week-status .outlook-stat{padding:7px 8px!important;min-height:58px!important}
.compact-week-status .outlook-stat b{font-size:15px!important}
.compact-week-status .outlook-stat small{font-size:7px!important}
.week-ready-note{grid-column:1/-1;padding:7px 9px;border-left:4px solid #31805b;background:#eef8f2;font-size:10px;font-weight:800;color:#315a48}
.week-ready-note.warn{border-left-color:#d2a139;background:#fff6df;color:#785817}
.week-ready-note.bad{border-left-color:#b84b51;background:#fff0f0;color:#823a40}

/* Live scoring is one of the main products, not fine print. */
.live-module{padding:14px!important;border-top:5px solid #167b50!important}
.live-module .card-head h2{font-size:22px!important}
.live-progress{height:8px!important;margin:10px 0 7px!important}
.live-row{grid-template-columns:minmax(0,1fr) 92px 110px!important;min-height:62px!important;padding:10px 8px!important;align-items:center!important}
.live-row strong{font-size:14px!important}
.live-row small{font-size:9px!important;line-height:1.35!important}
.live-status{font-size:10px!important;font-weight:950!important;padding:6px 7px!important}
.live-pts{font-size:22px!important;font-weight:1000!important;text-align:right!important;letter-spacing:-.02em!important}
.live-pts.captain-score,.team-list-row .score.captain,.card-points.captain-score{color:#b9840f!important;background:#fff4c7!important;border-color:#d8ad49!important;font-weight:1000!important}
.autosub-row{background:#eef8f2!important;border-left:5px solid #25845a!important}
.autosub-row small b{font-size:10px!important;color:#126643!important}
.autosub-used{border:3px solid #25845a!important;background:#edf8f1!important;position:relative!important}
.bench-used-label{position:absolute;right:5px;top:5px;background:#176d4b;color:white;font-size:7px;font-weight:1000;letter-spacing:.08em;padding:3px 5px;border-radius:3px;z-index:3}

/* Trade Centre stays high on Squad page but doesn't consume half the page. */
.moves-module{margin:8px 0 12px!important;padding:10px 12px!important;border:1px solid #d3dfe4!important;background:#f8fafb!important;border-radius:5px!important}
.moves-module .section-divider{display:none!important}
.moves-module .page-head.compact{margin:0 0 8px!important}
.moves-module .page-head.compact h2{font-size:18px!important}
.move-roster{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:5px!important}
.move-item{padding:7px!important;min-width:0!important;background:#fff!important}
.move-item strong{font-size:10px!important;display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.move-item small{font-size:8px!important;display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.move-item button{font-size:8px!important;padding:5px 6px!important}
.trade-state-banner{margin-bottom:8px!important}
.trade-decision-card{margin:7px 0 10px!important}

/* Locking should be obvious but not visually noisy. */
.player-card.locked-player,.bench-card.locked-player{filter:saturate(.72)!important}
.locked-corner{position:absolute;left:5px;top:5px;background:rgba(9,33,47,.88);color:#fff;font-size:7px;font-weight:1000;padding:3px 5px;border-radius:3px;z-index:4}

@media(max-width:1050px){
  .compact-week-status .gameweek-outlook-grid{grid-template-columns:repeat(3,1fr)!important}
  .move-roster{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media(max-width:760px){
  .compact-management-strip{grid-template-columns:1fr 1fr!important}
  .compact-management-strip>div:nth-child(2){border-right:0!important}
  .compact-week-status .gameweek-outlook-grid{grid-template-columns:1fr 1fr!important}
  .move-roster{grid-template-columns:1fr 1fr!important}
  .live-row{grid-template-columns:minmax(0,1fr) 70px 82px!important}
  .live-pts{font-size:18px!important}
}
\n/* v50.7 final hierarchy cleanup */\n#team>.page-head>.score-box{display:none!important}\n
/* ==========================================================
   v50.8 PRICE WATCH
   ========================================================== */
.external-data-link,.injury-link-508{
  display:flex;flex-direction:column;justify-content:center;text-decoration:none;
  border:1px solid #c7d5dc;background:#f7fafb;color:#123449;border-radius:5px;
  padding:9px 12px;font-weight:950;line-height:1.1
}
.external-data-link small,.injury-link-508 small{font-size:8px;color:#70838e;margin-top:4px;font-weight:800}
.external-data-link:hover,.injury-link-508:hover{border-color:#1b7653;background:#f0f8f4}
.team-head-actions-508{display:flex;gap:8px;align-items:stretch}
.injury-link-508{min-width:150px;position:relative;padding-left:38px}
.injury-link-508>span{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:20px;color:#b6252d;font-weight:1000}

.price-update-banner{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:10px;border-top:4px solid #c89b32}
.price-update-banner strong{display:block;font-size:21px;margin:2px 0}
.price-update-banner small{color:var(--muted);font-weight:750}
.price-explain-508{max-width:430px;background:#f5f1f5;border:1px solid #ddd0df;border-radius:5px;padding:7px 10px;color:#59305d}
.price-explain-508 summary{cursor:pointer;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.05em}
.price-explain-508 p{font-size:10px;line-height:1.45;margin:8px 0 2px;color:#62727c}

.price-tools-508{margin-bottom:10px}
.price-search-508>span{display:block;font-size:10px;font-weight:950;margin-bottom:5px}
.price-search-508 input{width:100%;font-size:15px;padding:13px 14px;margin:0 0 9px}
.price-filter-row-508{display:grid;grid-template-columns:1fr 1fr 1.35fr auto;gap:7px}
.price-filter-row-508 select,.price-filter-row-508 button{margin:0}

.price-table-card-508{padding:0!important;overflow:hidden}
.price-table-scroll-508{overflow:auto}
.price-table-head-508,.price-row-508{
  display:grid;grid-template-columns:minmax(230px,1.6fr) 145px 120px 125px 145px 100px 100px 100px;
  min-width:1110px;gap:8px;align-items:center
}
.price-table-head-508{padding:12px 14px;background:#f4f7f8;border-bottom:1px solid #d8e1e5;font-size:9px;font-weight:1000;text-transform:uppercase;letter-spacing:.055em;color:#667984}
.price-row-508{padding:10px 14px;border-bottom:1px solid #e6ecef;cursor:pointer}
.price-row-508:hover{background:#f8fbfc}
.price-row-508.owned{box-shadow:inset 3px 0 0 #b78b24;background:#fffdf5}
.price-player-508{display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;align-items:center;min-width:0}
.price-player-508 .kit{transform:scale(.78);transform-origin:center}
.price-player-508 strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.price-player-508 small{display:block;font-size:9px;color:var(--muted);margin-top:2px}
.price-status-508{display:inline-flex;align-items:center;justify-content:center;width:max-content;max-width:100%;padding:6px 8px;border-radius:4px;font-size:9px;font-weight:1000;line-height:1.1}
.price-status-508.rise{background:#e6f3de;color:#285b22;border:1px solid #bad7ab}
.price-status-508.big-rise{background:#3d6729;color:#fff;border:1px solid #31551f}
.price-status-508.fall{background:#f8dde1;color:#8c1732;border:1px solid #e3aeb9}
.price-status-508.big-fall{background:#8f1233;color:#fff;border:1px solid #74102a}
.price-status-508.hold{background:#edf1f3;color:#536974;border:1px solid #d6dfe3}
.price-move-508{font-weight:1000;font-size:12px}
.price-move-508.up,.price-trend-508.up{color:#217247}
.price-move-508.down,.price-trend-508.down{color:#b2243c}
.price-trend-508{font-size:10px;font-weight:900}
.price-trend-508 small{display:block;color:#84939b;font-size:8px;margin-top:2px}
.price-money-508{font-size:12px;font-weight:900}
.price-money-508.muted{color:#94a0a7;font-weight:700}
.price-table-footer-508{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;background:#f7f9fa;color:#687983;font-size:9px;font-weight:800}
.price-owned-dot-508{display:inline-flex;margin-left:6px;background:#f3d77a;color:#54400d;border-radius:3px;padding:2px 4px;font-size:7px;font-weight:1000;vertical-align:middle}

@media(max-width:800px){
  .team-head-actions-508{margin-top:9px}
  .price-update-banner{align-items:flex-start;flex-direction:column}
  .price-explain-508{max-width:none;width:100%}
  .price-filter-row-508{grid-template-columns:1fr 1fr}
  .price-filter-row-508 select:nth-child(3){grid-column:1/-1}
}
@media(max-width:520px){
  .team-head-actions-508{display:grid;grid-template-columns:1fr 1fr}
  .injury-link-508{min-width:0}
  .price-filter-row-508{grid-template-columns:1fr}
  .price-filter-row-508 select:nth-child(3){grid-column:auto}
  .price-table-footer-508{display:block}.price-table-footer-508 span{display:block;margin:3px 0}
}


/* ==========================================================
   v50.9 MARKET INTEL + INJURY CENTRE
   ========================================================== */
.price-pulse-509{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:0 0 10px}
.price-pulse-card-509{appearance:none;text-align:left;background:#fff;border:1px solid #d5dfe4;border-top:4px solid #8da0aa;border-radius:5px;padding:12px 13px;cursor:pointer;min-height:88px;color:#17384a}
.price-pulse-card-509:hover{transform:translateY(-1px);box-shadow:0 5px 16px rgba(8,29,43,.08)}
.price-pulse-card-509 span{display:block;font-size:9px;font-weight:1000;letter-spacing:.055em;color:#697d88}
.price-pulse-card-509 strong{display:block;font-size:24px;line-height:1.05;margin:5px 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.price-pulse-card-509 small{display:block;color:#7a8b94;font-size:9px;font-weight:750}
.price-pulse-card-509.rise{border-top-color:#1e845a}.price-pulse-card-509.fall{border-top-color:#bd3940}.price-pulse-card-509.owned{border-top-color:#c39428}.price-pulse-card-509.demand{border-top-color:#395e86}
.price-target-509{font-size:12px;font-weight:950;color:#17384a}.price-target-509 b{display:block}.price-target-509 small{display:block;font-size:8px;color:#748690;margin-top:3px;font-weight:800}

.injury-official-btn-509{display:flex;flex-direction:column;justify-content:center;position:relative;min-width:215px;padding:12px 14px 12px 48px;border-radius:5px;text-decoration:none;background:#0b2a3b;color:#fff;border:1px solid #0b2a3b}
.injury-official-btn-509>span{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:27px;line-height:1;color:#ef6c70;font-weight:1000}
.injury-official-btn-509 b{font-size:12px}.injury-official-btn-509 small{font-size:8px;margin-top:4px;color:#b9c8d0;font-weight:800}.injury-official-btn-509:hover{background:#123b53}
.injury-command-509{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(250px,.8fr);gap:22px;align-items:center;border-top:4px solid #b62d35;background:linear-gradient(100deg,#fff 0%,#f9fbfc 60%,#f2f6f8 100%)}
.injury-command-copy-509 h2{font-size:23px;margin:4px 0 6px}.injury-command-copy-509 p{margin:0;color:#647680;line-height:1.5;max-width:700px}
.injury-command-actions-509{display:grid;gap:7px}.injury-command-actions-509 a{display:flex;justify-content:space-between;gap:10px;text-decoration:none;border:1px solid #cbd7dc;background:#fff;padding:11px 12px;border-radius:4px;color:#14374a;font-size:11px;font-weight:950}.injury-command-actions-509 a:hover{border-color:#1f7355;background:#f5faf7}
.injury-grid-509{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:10px;margin-top:10px}
.injury-squad-list-509{display:grid;gap:6px}.injury-team-row-509{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #e5ebee}.injury-team-row-509:last-child{border-bottom:0}
.injury-team-mark-509{height:40px;border-radius:4px;background:linear-gradient(135deg,var(--team1),var(--team1) 67%,var(--team2) 67%);display:grid;place-items:center;color:#fff;text-shadow:0 1px 2px #000;font-size:11px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.injury-team-players-509{min-width:0}.injury-team-players-509 strong{display:block;font-size:11px;color:#15384b}.injury-team-players-509 span{display:block;font-size:9px;color:#72838d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.injury-team-row-509>a{font-size:9px;font-weight:950;text-decoration:none;color:#1c654b;border:1px solid #c8d8d0;background:#f6faf8;border-radius:4px;padding:8px 9px;white-space:nowrap}.injury-team-row-509>a:hover{background:#eaf6ef;border-color:#8eb5a2}
.injury-guide-card-509{align-self:start}.injury-guide-item-509{padding:12px 0;border-bottom:1px solid #e4eaed}.injury-guide-item-509 b{display:block;font-size:11px;color:#14374a;margin-bottom:4px}.injury-guide-item-509 span{display:block;font-size:10px;line-height:1.45;color:#6b7d87}.injury-guide-note-509{margin-top:14px;padding:11px;border-radius:4px;background:#fff8e5;border:1px solid #ead8a0}.injury-guide-note-509 strong{display:block;font-size:9px;letter-spacing:.04em;color:#805d0d}.injury-guide-note-509 span{font-size:10px;color:#6d654e;line-height:1.4}.injury-empty-509{display:flex;flex-direction:column;gap:4px;padding:22px 8px;text-align:center;color:#70828c}.injury-empty-509 b{color:#244659}

@media(max-width:980px){.price-pulse-509{grid-template-columns:1fr 1fr}.injury-command-509,.injury-grid-509{grid-template-columns:1fr}}
@media(max-width:650px){.price-pulse-509{grid-template-columns:1fr 1fr}.price-pulse-card-509{min-height:78px;padding:10px}.price-pulse-card-509 strong{font-size:20px}.injury-official-btn-509{min-width:0;width:100%}.injury-team-row-509{grid-template-columns:42px minmax(0,1fr)}.injury-team-row-509>a{grid-column:2;justify-self:start}.injury-command-509{gap:14px}}

/* v51.0 — Brand + UX cleanup */
.gm-header-brand{gap:12px}.gm-shield-logo{width:70px;height:82px;background:#182946;border:4px solid #d9dee4;border-radius:7px 7px 34px 34px;clip-path:polygon(0 0,100% 0,100% 64%,92% 78%,50% 100%,8% 78%,0 64%);display:flex;align-items:center;justify-content:center;position:relative;color:#e5e9ef;flex:0 0 auto}
.gm-shield-logo.small{width:46px;height:54px;border-width:3px}.gm-shield-logo b{font-size:15px;letter-spacing:1px;position:absolute;bottom:17px}.gm-shield-logo.small b{font-size:10px;bottom:11px}.gm-star{position:absolute;top:5px;font-size:12px}.gm-ball{position:absolute;top:21px;font-size:17px;color:#82441f;transform:rotate(-20deg)}.gm-shield-logo.small .gm-star{font-size:8px;top:4px}.gm-shield-logo.small .gm-ball{font-size:11px;top:14px}.brand-title{font-size:19px!important;letter-spacing:1.8px}.brand-title span{opacity:.55;font-size:10px}.brand-sub{font-weight:900;letter-spacing:4px;color:#40506e!important}
.tabs{overflow-x:auto;scrollbar-width:thin}.tabs .tab{white-space:nowrap}
.starting-team-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px}.starting-team-head h1{margin:3px 0 4px}.starting-team-head p{margin:0;color:var(--muted)}
.my-points-hero{min-width:180px;background:#123d55;color:white;border-radius:18px;padding:15px 20px;text-align:right;box-shadow:0 10px 24px #123d5522}.my-points-hero small{display:block;font-size:11px;font-weight:950;letter-spacing:2px;color:#94ddb8}.my-points-hero strong{display:block;font-size:42px;line-height:1}.my-points-hero span{font-size:10px;font-weight:900;letter-spacing:1.5px;opacity:.78}
.broadcast-ribbon.simplified{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:12px;padding:10px 14px}.broadcast-ribbon.simplified>div{min-width:0}.broadcast-ribbon.simplified strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.starting-layout{grid-template-columns:minmax(0,1fr)!important}.starting-list-card{display:none!important}.team-card{max-width:1180px;margin:0 auto}.captain-dock{padding:8px 12px!important}.captain-dock small{font-size:11px}
.team-pitch{background:linear-gradient(90deg,#1d7047 0 10%,#236f49 10% 20%,#1d7047 20% 30%,#236f49 30% 40%,#1d7047 40% 50%,#236f49 50% 60%,#1d7047 60% 70%,#236f49 70% 80%,#1d7047 80% 90%,#236f49 90% 100%)!important}
.yard-labels.clean .yard-line{border-top:1px solid rgba(255,255,255,.30)!important}.yard-labels.clean .yard-line.mid{border-top:2px solid rgba(255,255,255,.52)!important}.yard-labels.clean .yard-num{opacity:.42!important;font-size:11px!important}.hash{display:none!important}
.row-label{background:transparent!important;border:0!important;color:rgba(255,255,255,.86)!important;letter-spacing:2px!important}.pitch-row{border:0!important}
.player-card,.bench-card{cursor:grab}.player-card.dragging,.bench-card.dragging{cursor:grabbing;opacity:.65}.swap-valid{outline:4px solid #2dcc72!important;outline-offset:4px!important;box-shadow:0 0 0 7px rgba(45,204,114,.2)!important}.swap-invalid{opacity:.20!important}.captain-target{outline:3px dashed #ffc52f!important;outline-offset:3px!important}
.locked-corner{top:6px!important;left:auto!important;right:6px!important;width:28px!important;height:28px!important;padding:0!important;display:grid!important;place-items:center!important;border-radius:50%!important;font-size:13px!important;line-height:1!important;z-index:7!important}.locked-player .slot-pos{padding-right:32px}
.trade-module-head{display:flex;justify-content:space-between;align-items:end;margin:12px 0 8px}.trade-module-head h2{margin:3px 0}.trade-module-head p{margin:0;color:var(--muted)}
.trade-status-line{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.trade-status-line>span{background:#eef4f7;border:1px solid #d9e4ea;border-radius:12px;padding:9px 12px}.trade-status-line small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:900;letter-spacing:1px}.trade-status-line b{font-size:17px}
.trade-state-banner{margin:0 0 10px!important;min-height:auto!important;padding:10px 13px!important}.trade-state-banner .penalty{display:none!important}
.trade-decision-card{grid-template-columns:1.4fr repeat(4,1fr)!important;border:3px solid #1f6f54!important;background:#effaf5!important}.cap-bar.trade-active{box-shadow:0 0 0 4px rgba(74,190,132,.20),0 12px 30px rgba(8,29,43,.10)!important}.cap-bar.trade-active #capRemaining{color:#a7f0c7!important}
.market-controls{grid-template-columns:minmax(180px,1.3fr) minmax(90px,.6fr) minmax(100px,.7fr) minmax(120px,.8fr) minmax(150px,.9fr) minmax(120px,.8fr)!important;gap:10px!important}.market-controls input,.market-controls select,.affordable-control{min-width:0!important}.affordable-control{padding:8px 12px!important}
.fixture-card.d1,.fixture-cell.d1,.difficulty-scale .d1{background:#bcebd0!important;border-color:#258a55!important;color:#0a5530!important}.fixture-card.d2,.fixture-cell.d2,.difficulty-scale .d2{background:#d9efbd!important;border-color:#71a842!important;color:#365f1d!important}.fixture-card.d3,.fixture-cell.d3,.difficulty-scale .d3{background:#ffe98d!important;border-color:#c7a715!important;color:#665200!important}.fixture-card.d4,.fixture-cell.d4,.difficulty-scale .d4{background:#ffc998!important;border-color:#d97721!important;color:#793b0b!important}.fixture-card.d5,.fixture-cell.d5,.difficulty-scale .d5{background:#f5aeb5!important;border-color:#c53b49!important;color:#7d1520!important}.difficulty-scale{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.difficulty-scale span{border:2px solid transparent;border-radius:10px;padding:7px 10px;font-weight:900}.difficulty-scale b{font-size:16px;margin-right:3px}
.matchup-owned-kits{display:flex!important;justify-content:center!important;gap:7px!important;flex-wrap:wrap!important;margin-top:12px!important}.owned-kit-chip{display:flex;align-items:center;gap:5px;background:#eef8f3;border:1px solid #b9dec9;border-radius:10px;padding:4px 8px}.owned-kit-chip .kit{transform:scale(.72);transform-origin:center;width:34px;margin:-3px -5px}.owned-kit-chip small{font-weight:900;color:#176d4b}
@media(max-width:900px){.starting-team-head{align-items:stretch;flex-direction:column}.my-points-hero{text-align:left}.market-controls{grid-template-columns:1fr 1fr!important}.trade-status-line{grid-template-columns:1fr}.difficulty-scale{justify-content:flex-start}}


/* v51.1 TEST FIX PASS */
/* Cleaner field: remove the yard-line layer entirely; stripes provide the football-field cue. */
.yard-labels,.yard-line,.yard-num{display:none!important}
.team-pitch,.build-pitch{background:linear-gradient(90deg,#1d7047 0 10%,#236f49 10% 20%,#1d7047 20% 30%,#236f49 30% 40%,#1d7047 40% 50%,#236f49 50% 60%,#1d7047 60% 70%,#236f49 70% 80%,#1d7047 80% 90%,#236f49 90% 100%)!important}
.pitch-row{border:0!important}
/* Starting Team: pitch + list together on desktop. */
.starting-layout{display:grid!important;grid-template-columns:minmax(0,1.45fr) minmax(330px,.55fr)!important;gap:14px!important;align-items:start!important}
.starting-list-card{display:block!important;position:sticky!important;top:10px!important;max-height:calc(100vh - 30px);overflow:auto}
/* Captain pointer drag */
.captain-token{touch-action:none;user-select:none}.captain-drag-ghost{position:fixed;z-index:99999;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:12px;background:#ffc52f;color:#142433;display:grid;place-items:center;font-weight:950;font-size:18px;box-shadow:0 8px 24px rgba(0,0,0,.28);pointer-events:none}.captain-target{outline:4px solid #ffc52f!important;outline-offset:3px!important}
/* Prevent AUTO-SUB and lock badges colliding. */
.bench-used-label{left:8px!important;right:auto!important;top:8px!important;max-width:calc(100% - 52px)}.bench-card .locked-corner{right:7px!important;top:7px!important}.bench-card.auto-sub-used{padding-top:42px!important}
/* Trade centre: one obvious decision at a time. */
.trade-picker-51{display:grid;grid-template-columns:minmax(260px,1fr) auto minmax(220px,.7fr);align-items:end;gap:12px;padding:14px;border:1px solid #cedce4;border-radius:14px;background:#f8fbfc}.trade-picker-51 label small,.trade-pending-summary small{display:block;font-size:10px;font-weight:950;letter-spacing:1.5px;color:var(--muted);margin-bottom:5px}.trade-picker-51 select{width:100%;min-width:0}.trade-picker-51>span{color:var(--muted);font-size:12px;line-height:1.35}.trade-pending-summary{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:center;padding:14px;border:2px solid #4abe84;border-radius:14px;background:#effaf5}.trade-pending-summary>div{min-width:0}.trade-pending-summary b{display:block;font-size:18px}.trade-pending-summary span{color:var(--muted);font-size:12px}.trade-simple-note{padding:12px 14px;border-radius:12px;background:#edf8f2;border:1px solid #9fd7b9;font-weight:800;color:#196847}.move-roster{grid-template-columns:1fr!important}.trade-state-banner{margin-top:6px!important}
/* Market controls: never crop select text. */
.market-controls{display:grid!important;grid-template-columns:minmax(240px,1.3fr) minmax(190px,1fr)!important;gap:10px!important;overflow:visible!important}.market-controls>*{width:100%!important;min-width:0!important}.market-controls select,.market-controls input{overflow:visible!important;text-overflow:ellipsis}.affordable-control{min-height:54px!important;justify-content:flex-start!important}
/* Simple 3-level fixture difficulty. */
.fixture-card.d1,.fixture-cell.d1,.difficulty-scale .d1{background:#c7edd7!important;border-color:#3d9c68!important;color:#145f3c!important}.fixture-card.d2,.fixture-cell.d2,.difficulty-scale .d2{background:#ffeaa0!important;border-color:#c8a829!important;color:#675400!important}.fixture-card.d3,.fixture-cell.d3,.difficulty-scale .d3{background:#f5b7bd!important;border-color:#c94a57!important;color:#7b1822!important}.fixture-card.d4,.fixture-cell.d4,.difficulty-scale .d4,.fixture-card.d5,.fixture-cell.d5,.difficulty-scale .d5{display:none!important}.difficulty-scale{gap:8px!important}.difficulty-scale span{min-width:104px;text-align:center}
.fixture-shirt-51{width:34px;height:38px;border-radius:7px 7px 9px 9px;background:var(--shirt);color:var(--shirt-ink);display:inline-grid;place-items:center;font-size:13px;font-weight:950;position:relative;box-shadow:inset 0 -3px 0 rgba(0,0,0,.12)}.fixture-shirt-51:before,.fixture-shirt-51:after{content:"";position:absolute;top:7px;width:9px;height:16px;background:var(--shirt)}.fixture-shirt-51:before{left:-6px;border-radius:6px 0 0 6px}.fixture-shirt-51:after{right:-6px;border-radius:0 6px 6px 0}.owned-kit-chip{padding:7px 12px!important;gap:11px!important}.owned-kit-chip small{white-space:nowrap}
.season-points-cap{background:rgba(255,255,255,.12);border-radius:10px;padding:6px 9px}.season-points-cap b{color:#a7f0c7}
.recovery-current .small-btn{margin-left:8px}
@media(max-width:1180px){.starting-layout{grid-template-columns:1fr!important}.starting-list-card{position:static!important;max-height:none}.market-controls{grid-template-columns:1fr 1fr!important}.trade-picker-51{grid-template-columns:1fr auto}.trade-picker-51>span{grid-column:1/-1}.trade-pending-summary{grid-template-columns:1fr 1fr}.trade-pending-summary button{grid-column:1/-1}}
@media(max-width:720px){.market-controls{grid-template-columns:1fr!important}.trade-picker-51,.trade-pending-summary{grid-template-columns:1fr!important}.starting-layout{grid-template-columns:1fr!important}}

/* v51.2 — rules readability + long-season stability polish */
.rules-scoring-block{padding:26px!important;margin-top:20px!important}
.rules-scoring-block>h2{font-size:30px!important;line-height:1.15!important;margin:4px 0 18px!important}
.rules-scoring-block>.eyebrow{font-size:13px!important;letter-spacing:.16em!important}
.rules-scoring-grid{gap:16px!important}
.rules-scoring-grid>div{padding:20px 22px!important;border-radius:14px!important}
.rules-scoring-grid h3{font-size:21px!important;margin:0 0 9px!important}
.rules-scoring-grid p{font-size:15px!important;line-height:1.7!important}
.rules-scoring-grid p b{font-size:1.02em}
.host-controls.season-busy{opacity:.92}
.host-controls.season-busy .host-buttons button{cursor:wait}
@media(max-width:900px){
  .rules-scoring-grid{grid-template-columns:1fr!important}
  .rules-scoring-grid p{font-size:15px!important}
}


/* v51.4 — final regression polish from tester feedback */
/* Rules need to read like a guide, not fine print. */
.rules-scoring-block{padding:30px!important}
.rules-scoring-block>h2{font-size:34px!important;margin-bottom:22px!important}
.rules-scoring-grid{gap:18px!important}
.rules-scoring-grid>div{padding:23px 25px!important;min-height:132px}
.rules-scoring-grid h3{font-size:24px!important;margin-bottom:11px!important}
.rules-scoring-grid p{font-size:18px!important;line-height:1.65!important;letter-spacing:.005em!important}
/* Keep filters readable across Chrome/Safari rather than forcing six controls into one strip. */
.market-controls{grid-template-columns:repeat(3,minmax(210px,1fr))!important;align-items:stretch!important}
.market-controls input,.market-controls select{height:54px!important;min-height:54px!important;padding:0 14px!important;font-size:15px!important;line-height:1.2!important;margin:0!important}
.market-controls select{-webkit-appearance:menulist!important;appearance:auto!important;padding-right:34px!important}
.affordable-control{height:54px!important;min-height:54px!important;margin:0!important;padding:0 14px!important;display:flex!important;align-items:center!important;gap:10px!important;border:1px solid var(--line)!important;border-radius:9px!important;background:#fff!important}
.affordable-control input{width:20px!important;height:20px!important;min-height:20px!important;margin:0!important;flex:0 0 auto!important}
/* Three fixture states only. BYE is deliberately grey, not 'Tough'. */
.fixture-card.bye,.fixture-cell.bye{background:#e8edf0!important;border-color:#b9c5cc!important;color:#53646e!important}
.fixture-card.d1,.fixture-cell.d1{background:#c7edd7!important;border-color:#3d9c68!important;color:#145f3c!important}
.fixture-card.d2,.fixture-cell.d2{background:#ffeaa0!important;border-color:#c8a829!important;color:#675400!important}
.fixture-card.d3,.fixture-cell.d3{background:#f5b7bd!important;border-color:#c94a57!important;color:#7b1822!important}
/* The field is stripes only — no yard-number or horizontal-line overlay. */
.yard-labels,.yard-line,.yard-num{display:none!important}
.team-pitch,.build-pitch{background:linear-gradient(90deg,#1d7047 0 10%,#236f49 10% 20%,#1d7047 20% 30%,#236f49 30% 40%,#1d7047 40% 50%,#236f49 50% 60%,#1d7047 60% 70%,#236f49 70% 80%,#1d7047 80% 90%,#236f49 90% 100%)!important}
@media(max-width:1180px){.market-controls{grid-template-columns:repeat(2,minmax(220px,1fr))!important}}
@media(max-width:720px){.market-controls{grid-template-columns:1fr!important}.rules-scoring-block{padding:22px!important}.rules-scoring-grid p{font-size:17px!important}.rules-scoring-grid h3{font-size:22px!important}}


/* v51.5 — GAMEWEEK READINESS + HOST RESTORE */

/* Clean football-field markings: subtle horizontal yard lines only; no hashes or odd labels. */
.team-pitch,.build-pitch{
  background:
    linear-gradient(to bottom,transparent 49.72%,rgba(255,255,255,.50) 49.72%,rgba(255,255,255,.50) 50.28%,transparent 50.28%),
    repeating-linear-gradient(to bottom,transparent 0,transparent 19.74%,rgba(255,255,255,.26) 19.74%,rgba(255,255,255,.26) 20%),
    linear-gradient(90deg,#1d7047 0 10%,#236f49 10% 20%,#1d7047 20% 30%,#236f49 30% 40%,#1d7047 40% 50%,#236f49 50% 60%,#1d7047 60% 70%,#236f49 70% 80%,#1d7047 80% 90%,#236f49 90% 100%)!important;
}

/* Player market now includes actual selection percentage. */
.market-head,.player-row{grid-template-columns:minmax(220px,1fr) 74px 76px 78px 78px 88px!important}
.row-owned{text-align:center;font-size:13px;font-weight:950;color:#1d6c50}.row-owned small{display:block;font-size:8px;color:var(--muted);font-weight:800}
.modal-metrics{grid-template-columns:repeat(4,1fr)!important}

/* Preseason trade/change information remains visible before GW1. */
.moves-module{display:block}
.trade-state-banner.preseason{background:#edf8f2!important;border-color:#9fd7b9!important;color:#196847!important}

/* Gameweek readiness is intentionally obvious without taking over the page. */
.gameweek-readiness-515{background:#fff;border:1px solid #d6e2e7;border-radius:14px;padding:12px 14px;margin:0 0 12px;box-shadow:0 6px 18px rgba(14,46,67,.06)}
.readiness-head-515{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.readiness-head-515 strong{display:block;font-size:18px;margin-top:2px}
.readiness-pill-515{border-radius:999px;padding:7px 12px;font-size:11px;font-weight:950;letter-spacing:.08em;background:#fff0c7;color:#765700;border:1px solid #e6c75f}
.readiness-pill-515.ready{background:#e7f6ed;color:#176743;border-color:#9fd6b6}.readiness-pill-515.warn{background:#fff0c7;color:#765700;border-color:#e6c75f}
.gameweek-readiness-515 .gameweek-outlook-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.readiness-check-515{background:#f6f9fa;border:1px solid #dfe7eb;border-radius:10px;padding:8px 10px;min-height:58px}.readiness-check-515 small{display:block;color:#6b7d87;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.readiness-check-515 b{display:block;font-size:13px;margin-top:4px}.readiness-check-515.ok{background:#f0f8f4;border-color:#cce6d8}.readiness-check-515.bad{background:#fff5f3;border-color:#edcbc5}.readiness-check-515.warn{background:#fff9e9;border-color:#ecd99d}
.readiness-message-515{grid-column:1/-1;border-radius:10px;padding:9px 11px;font-size:12px;font-weight:850}.readiness-message-515.ready{background:#eaf7f0;color:#176743}.readiness-message-515.warn{background:#fff3d6;color:#775a0d}

/* Persistent host controls: visible on every tab once the host key is valid. */
.host-controls-persistent{position:sticky;top:121px;z-index:36;margin:10px 0 4px!important;border:2px solid #58b98a;box-shadow:0 8px 24px rgba(8,29,43,.16)}
.host-control-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.host-control-title strong{font-size:14px}.host-mode-pill{background:#70d2a0;color:#0b3c29;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:1000;letter-spacing:.12em}
.host-entry-btn.active-host{color:#92e1b5!important;background:rgba(112,210,160,.12)!important;border-radius:8px}
.host-entry-btn{color:#fff!important}
.host-controls-persistent .host-buttons{align-items:center}

/* Captain/VC pointer drag */
.captain-token{cursor:grab!important;-webkit-user-drag:none!important}.captain-token:active{cursor:grabbing!important}

/* Side-by-side lineup remains the desktop default. */
.starting-layout{display:grid!important;grid-template-columns:minmax(0,1.45fr) minmax(330px,.55fr)!important;gap:14px!important;align-items:start!important}
.starting-list-card{display:block!important}

/* Safari / narrower layouts */
@media(max-width:1180px){
  .market-head,.player-row{grid-template-columns:minmax(200px,1fr) 66px 70px 72px 72px 82px!important}
  .starting-layout{grid-template-columns:1fr!important}
  .host-controls-persistent{position:static}
}
@media(max-width:760px){
  .gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:1fr 1fr}
  .modal-metrics{grid-template-columns:1fr 1fr!important}
  .market-head,.player-row{grid-template-columns:minmax(170px,1fr) 62px 66px 72px 76px!important}
  .market-head span:nth-child(4),.row-proj{display:none!important}
}


/* v51.6 — tester polish, trades, fixture progression and granular prices */
/* No horizontal field lines: only grass striping + end zones. */
.gridiron{background:repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0,rgba(255,255,255,.025) 10%,rgba(0,0,0,.025) 10%,rgba(0,0,0,.025) 20%),linear-gradient(#2e7b55,#226a48)!important}
.gridiron::before,.gridiron::after{border-color:rgba(255,255,255,.34)!important}
.pitch-row{border:0!important}.yard-labels,.yard-line,.yard-num{display:none!important}

/* Player market: reduce density and keep filters inside the card. */
.market-controls{grid-template-columns:repeat(3,minmax(0,1fr))!important;width:100%!important;max-width:100%!important;overflow:hidden!important}
.market-controls>*{min-width:0!important;max-width:100%!important}.market-controls select,.market-controls input{width:100%!important;max-width:100%!important}
.market-head,.player-row{grid-template-columns:minmax(260px,1fr) 82px 78px 88px 92px!important;min-width:0!important}
.player-next-line{display:block;margin-top:3px;font-size:9px;color:#6b7e89;font-weight:750}
.market-head span:nth-child(4){color:#1f6f52}.row-owned{font-size:13px!important}

/* Kit outlines make white/light sleeves visible (especially NYJ). */
.sleeve{border:1px solid rgba(14,34,44,.25)!important;box-shadow:0 1px 1px rgba(0,0,0,.06)}

/* C stays gold; VC is deliberately silver. */
.captain-badge.vc{background:#d7e0e6!important;color:#243640!important;border-color:#fff!important}
.captain-token.vc{background:#d7e0e6!important;color:#243640!important}
.captain-drag-ghost.vc{background:#d7e0e6!important}

/* Readiness gets enough room to explain what is wrong. */
.gameweek-readiness-515{padding:16px 18px!important;overflow:visible!important}
.readiness-head-515{align-items:flex-start!important;flex-wrap:wrap!important}
.gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
.readiness-check-515{min-height:68px!important;padding:10px 12px!important}.readiness-check-515 b{font-size:14px!important}
.readiness-message-515{grid-column:1/-1!important;padding:12px 14px!important;line-height:1.45!important}
.readiness-message-515 strong{display:block;font-size:14px;margin-bottom:4px}.readiness-message-515 span{display:block;margin-top:3px}

/* Consistent player-card sizing. */
.team-pitch .player-card{height:124px!important;min-height:124px!important;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}
.team-pitch .player-card .card-points{margin-top:auto;min-height:22px}.team-pitch .player-card .card-name{width:100%}
#teamBench .bench-card{height:132px!important;min-height:132px!important;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}
#teamBench .bench-card .card-points{margin-top:auto}.build-pitch .player-card{min-height:110px!important}

/* Trade points are central, explicit and confirmed before execution. */
.trade-status-line{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.trade-status-line>span:nth-child(2){background:#fff7e3!important;border-color:#ead18a!important}.trade-status-line>span:nth-child(2) b{color:#9a5b0a!important}
.trade-status-line>span:nth-child(3){background:#eef8f3!important;border-color:#b9dfca!important}.trade-status-line>span:nth-child(3) b{color:#176b4c!important}
.trade-points-explainer-516{margin:10px 0 12px;padding:12px 14px;border-radius:12px;font-size:13px;line-height:1.45}
.trade-points-explainer-516.free{background:#edf8f2;border:1px solid #b7ddc8;color:#176b4c}.trade-points-explainer-516.cost{background:#fff2e8;border:1px solid #e5bd98;color:#8b4813}.trade-points-explainer-516 b{font-size:14px}

/* Autosub contribution is shown on the DNP starter row. */
.team-list-row.autosub-replaced{box-shadow:inset 4px 0 0 #2f825f;background:#f1f9f5}.sub-replacement-516{display:block!important;margin-top:5px;color:#1d7454!important;font-weight:900!important;font-size:10px!important}

/* Match cards carry useful context without becoming huge. */
.matchup-team{display:grid!important;grid-template-columns:auto auto;justify-content:center;align-items:center;column-gap:7px}.matchup-team small{grid-column:1/-1;font-size:9px;color:#687b86;margin-top:4px}.matchup-team b{font-size:22px}.matchup-context-516{text-align:center;color:#687b86;font-size:9px;font-weight:800;margin-top:8px}

/* Price Watch ownership column. */
.price-table-head-508,.price-row-508{grid-template-columns:minmax(230px,1.55fr) 82px 135px 115px 120px 135px 92px 92px 92px!important;min-width:1160px!important}
.price-ownership-516{text-align:center;color:#1f6f52}.price-ownership-516 b{display:block;font-size:13px}.price-ownership-516 small{display:block;font-size:8px;color:#71828c}

@media(max-width:1000px){.market-controls{grid-template-columns:repeat(2,minmax(0,1fr))!important}.trade-status-line{grid-template-columns:1fr 1fr!important}.gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:1fr 1fr!important}}
@media(max-width:720px){.market-controls{grid-template-columns:1fr!important}.market-head,.player-row{grid-template-columns:minmax(180px,1fr) 68px 72px 78px 82px!important}.row-proj{display:block!important}.trade-status-line{grid-template-columns:1fr!important}.gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:1fr!important}}


/* v51.8 — tester candidate branding + cleanup */
.gm-header-brand{gap:10px;min-width:0}
.gm-brand-shield{width:45px;height:56px;object-fit:contain;display:block;flex:0 0 auto;filter:drop-shadow(0 2px 4px #0004)}
.gm-brand-copy{min-width:0}
.gm-header-brand .brand-title{font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif!important;font-size:22px!important;letter-spacing:1.2px!important;line-height:.98;white-space:nowrap}
.gm-header-brand .brand-title span{font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:9px!important;vertical-align:middle;margin-left:5px;letter-spacing:.05em}
.gm-header-brand .brand-sub{font-size:9px!important;letter-spacing:4.2px!important;color:#aeb6bf!important;margin-top:3px}
.gm-welcome-lockup-wrap{display:flex;justify-content:center;margin:-8px 0 8px}
.gm-welcome-lockup{width:min(520px,100%);height:auto;display:block;border-radius:10px}
.ticker-brand{min-width:190px}
.ticker-logo-517{width:25px;height:34px;object-fit:contain;flex:0 0 auto}
.ticker-brand>div{display:flex;flex-direction:column;gap:1px}
.ticker-brand>div small{font-size:7px;letter-spacing:.18em;color:#97a7b1;font-weight:900}

/* Readiness stays obvious, but collapses once the team is ready/live. */
.gameweek-readiness-515{padding:9px 11px!important;margin-bottom:8px!important}
.readiness-head-515{margin-bottom:6px!important;align-items:center!important;flex-wrap:nowrap!important}
.readiness-head-515 strong{font-size:15px!important;margin-top:1px!important}
.readiness-pill-515{padding:5px 9px!important;font-size:9px!important}
.gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:6px!important}
.readiness-check-515{min-height:46px!important;padding:6px 8px!important}
.readiness-check-515 small{font-size:8px!important} .readiness-check-515 b{font-size:11px!important;margin-top:2px!important}
.readiness-message-515{padding:7px 9px!important;font-size:11px!important;line-height:1.3!important}
.readiness-message-515 strong{font-size:12px!important;margin-bottom:2px!important}
.gameweek-readiness-515.ready-compact .readiness-head-515{margin-bottom:0!important}
.gameweek-readiness-515.ready-compact .gameweek-outlook-grid{display:none!important}
.gameweek-readiness-515.ready-compact{display:flex;align-items:center;justify-content:space-between;gap:12px}
.gameweek-readiness-515.ready-compact .readiness-head-515{flex:1}

/* Season Centre: remove duplicated feed/price-move concepts and make the remaining story scan cleanly. */
.season-centre-517{max-width:1220px;margin:0 auto}
.season-page-head-517{margin-bottom:10px}
.season-metrics-517{grid-template-columns:.7fr 1.15fr 1fr 1fr .8fr;gap:8px;margin-bottom:10px}
.season-metrics-517 .card{padding:11px 12px}
.season-metrics-517 .hero-metric-517{background:linear-gradient(135deg,#0d2c40,#174962);color:#fff;border-color:#174962}
.season-metrics-517 .hero-metric-517 span{color:#a9c3d2}
.season-lead-grid-517{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.5fr);gap:10px;margin-bottom:10px;align-items:stretch}
.season-lead-grid-517>.card{margin:0!important}
.rebuild-card-517{display:grid!important;grid-template-columns:auto 1fr!important;align-content:center!important}
.rebuild-card-517 button{grid-column:1/-1;width:100%;margin-top:8px}
.season-history-grid{margin-bottom:10px!important}
.manager-review-card{margin-bottom:10px!important}
.season-bottom-grid-517{display:grid;grid-template-columns:1.15fr .85fr;gap:10px;align-items:start}
.season-bottom-grid-517>.card{margin:0!important}
.season-integrity-card-517 .season-integrity{grid-template-columns:1fr 1fr}

@media(max-width:900px){
  .gm-header-brand .brand-title{font-size:18px!important}
  .gm-brand-shield{width:38px;height:48px}
  .season-metrics-517{grid-template-columns:1fr 1fr}
  .season-lead-grid-517,.season-bottom-grid-517{grid-template-columns:1fr}
  .gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:1fr 1fr!important}
}
@media(max-width:620px){
  .gm-header-brand .brand-sub{display:none}
  .gm-header-brand .brand-title{font-size:16px!important;letter-spacing:.7px!important}
  .gm-brand-shield{width:32px;height:42px}
  .gameweek-readiness-515{display:block!important}
  .gameweek-readiness-515 .gameweek-outlook-grid{grid-template-columns:1fr!important}
  .season-metrics-517{grid-template-columns:1fr 1fr}
}

/* v52.0 — 2026 Live Season */
.season-mode-pill-520{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:#eef3f6;color:#274150;font-size:11px;font-weight:900;letter-spacing:.08em}
.season-mode-pill-520.live{background:#dff5e8;color:#146b49;border:1px solid #99d8bb}
.live-status-520{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;background:#edf7f1;color:#1a6a4b;font-size:12px;font-weight:800;max-width:460px}
.season-mode-public-520{background:#0d3347}.season-mode-public-520 b{color:#8ce0b7!important}
.host-controls.live-2026 .test-only-520{display:none!important}
.host-controls.live-2026 #simStart,.host-controls.live-2026 #simAdvance,.host-controls.live-2026 #simQuick,.host-controls.live-2026 #simReset{display:none!important}
.host-controls.live-2026 #simFinalize{background:#143f54;color:white}
@media(max-width:800px){.live-status-520{max-width:none;width:100%}}


/* v52.1.3 release-candidate UI cleanup */
/* Correct ticker count: brand + season + week + status + projected + overall + captain. */
.league-ticker{grid-template-columns:1.35fr repeat(6,minmax(92px,.62fr))!important;align-items:stretch!important}
.league-ticker>div{min-width:0!important}

/* All-player market + Safari-safe controls. */
.market-controls{grid-template-columns:minmax(180px,1.05fr) minmax(150px,.9fr) minmax(150px,.9fr) minmax(150px,.9fr) minmax(180px,1fr)!important;overflow:visible!important}
.market-controls>*{min-width:0!important;max-width:100%!important}
.market-controls input,.market-controls select{width:100%!important;min-width:0!important;max-width:100%!important;height:52px!important;line-height:1.2!important;-webkit-appearance:menulist!important;appearance:auto!important;background:#fff!important}
.affordable-control{width:100%!important;min-width:0!important;overflow:hidden!important;white-space:nowrap!important;justify-content:flex-start!important;padding:0 13px!important}
.affordable-control span,.affordable-control b{overflow:hidden;text-overflow:ellipsis}
#loadMorePlayers{display:none!important}

/* Squad/starting cards should look consistent and keep final/captain scores inside the card. */
.team-pitch .player-card{width:124px!important;height:142px!important;min-height:142px!important;padding:7px 7px 8px!important;overflow:hidden!important}
.team-pitch .player-card .kit{flex:0 0 44px!important}
.team-pitch .player-card .card-name{font-size:12px!important;line-height:1.15!important;min-height:28px!important;display:flex!important;align-items:center!important;justify-content:center!important;white-space:normal!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
.team-pitch .player-card .card-meta{line-height:1.1!important;min-height:12px!important}
.team-pitch .player-card .card-points{margin-top:auto!important;width:100%!important;min-height:25px!important;font-size:12px!important;line-height:1.08!important;padding:3px 2px!important}
.team-pitch .player-card .card-points small{display:block!important;font-size:9px!important;line-height:1.1!important;margin-top:2px!important}
.team-pitch .captain-badge{z-index:5!important}
.locked-corner{z-index:6!important}
#teamBench .bench-card{height:142px!important;min-height:142px!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;align-items:center!important}
#teamBench .bench-card .card-name{min-height:30px!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}

/* Owned-player matchup chips: slimmer + difficulty coloured. */
.matchup-owned-kits{gap:7px!important;margin-top:9px!important;display:flex!important;justify-content:center!important;flex-wrap:wrap!important}
.owned-kit-chip{min-width:0!important;width:auto!important;max-width:190px!important;padding:5px 9px!important;gap:7px!important;border-radius:10px!important;border:1px solid #cfdde3!important;background:#f7fafb!important}
.owned-kit-chip small{font-size:10px!important;max-width:120px!important;overflow:hidden!important;text-overflow:ellipsis!important}
.owned-kit-chip.d1{background:#e7f6ed!important;border-color:#99d2b1!important;color:#176743!important}
.owned-kit-chip.d2{background:#fff8df!important;border-color:#e1c45d!important;color:#705a08!important}
.owned-kit-chip.d3{background:#fdebec!important;border-color:#e09a9f!important;color:#8e2931!important}
.fixture-shirt-51{transform:scale(.88);transform-origin:center}

/* Custom trade confirmation. */
.trade-confirm-521{position:fixed;inset:0;z-index:140;background:#061a28cc;display:flex;align-items:center;justify-content:center;padding:20px}
.trade-confirm-card-521{width:min(620px,100%);background:#fff;border-radius:18px;padding:24px;box-shadow:0 30px 80px #0005;position:relative}
.trade-confirm-card-521 h2{font-size:27px;margin:3px 0 15px}.trade-confirm-close-521{position:absolute;right:14px;top:12px;border:0;background:transparent;font-size:26px}
.trade-confirm-players-521{display:grid;grid-template-columns:1fr 40px 1fr;align-items:center;gap:10px}.trade-confirm-players-521>div{background:#f4f8fa;border:1px solid #d9e4e9;border-radius:12px;padding:12px;text-align:center}.trade-confirm-players-521>div b{display:block;font-size:16px}.trade-confirm-players-521>div span,.trade-confirm-players-521>div small{display:block;color:#647985;font-size:10px}.trade-confirm-players-521>i{text-align:center;font-size:26px;font-style:normal;color:#6e808a}
.trade-confirm-metrics-521{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.trade-confirm-metrics-521>div{background:#f5f8fa;border-radius:10px;padding:10px}.trade-confirm-metrics-521 small{display:block;font-size:9px;font-weight:900;color:#758792;letter-spacing:.06em}.trade-confirm-metrics-521 b{font-size:17px}.trade-confirm-metrics-521 b.cost{color:#a33f37}.trade-confirm-metrics-521 b.free{color:#176b4c}.trade-confirm-card-521 p{font-size:12px;color:#596d78;line-height:1.45}.trade-confirm-buttons-521{display:flex;justify-content:flex-end;gap:8px}

/* Smaller onboarding primary action and clearer recovery explanation. */
#welcomeStart{width:auto!important;min-width:230px!important;display:block!important;margin:14px auto!important;padding:11px 22px!important;font-size:15px!important}
.recovery-panel{margin-top:10px!important}.recovery-panel .fine{line-height:1.45!important}

/* Host controls never distort the main broadcast/ticker row. */
.host-controls-persistent{width:100%!important}.host-control-title{min-width:220px!important}.host-buttons{min-width:0!important}

@media(max-width:1150px){.market-controls{grid-template-columns:repeat(2,minmax(0,1fr))!important}.league-ticker{grid-template-columns:repeat(3,1fr)!important}.ticker-brand{grid-column:1/-1!important}}
@media(max-width:720px){.market-controls{grid-template-columns:1fr!important}.trade-confirm-metrics-521{grid-template-columns:1fr!important}.trade-confirm-players-521{grid-template-columns:1fr!important}.trade-confirm-players-521>i{transform:rotate(90deg)}}

/* v52.1.3 hard guard against stale image intrinsic sizing */
.gm-brand-shield{width:45px!important;height:56px!important;max-width:45px!important;max-height:56px!important;object-fit:contain!important}.ticker-logo-517{width:25px!important;height:34px!important;max-width:25px!important;max-height:34px!important;object-fit:contain!important}.ticker-brand img{flex:0 0 25px!important}


/* v52.1.3 — compact horizontal polish */
/* Fixture owned-player chips: closer to the squad shirt proportions, not wide/fat tiles. */
.matchup-owned-kits{
  gap:6px!important;
  margin-top:8px!important;
  justify-content:center!important;
  align-items:center!important;
}
.owned-kit-chip{
  width:auto!important;
  min-width:0!important;
  max-width:150px!important;
  min-height:36px!important;
  padding:3px 7px!important;
  gap:6px!important;
  border-radius:9px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  box-shadow:none!important;
}
.owned-kit-chip .fixture-shirt-51{
  width:26px!important;
  height:30px!important;
  min-width:26px!important;
  border-radius:6px 6px 7px 7px!important;
  font-size:10px!important;
  transform:none!important;
  flex:0 0 26px!important;
}
.owned-kit-chip .fixture-shirt-51:before,
.owned-kit-chip .fixture-shirt-51:after{
  top:6px!important;
  width:7px!important;
  height:13px!important;
}
.owned-kit-chip .fixture-shirt-51:before{left:-5px!important}
.owned-kit-chip .fixture-shirt-51:after{right:-5px!important}
.owned-kit-chip small{
  font-size:9px!important;
  line-height:1.1!important;
  max-width:105px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

/* Rules: restore normal typography and keep scoring information horizontally organised. */
.rules-scoring-block{
  padding:16px!important;
  margin-top:14px!important;
}
.rules-scoring-block>.eyebrow{
  font-size:9px!important;
  letter-spacing:.13em!important;
}
.rules-scoring-block>h2{
  font-size:22px!important;
  line-height:1.15!important;
  margin:2px 0 12px!important;
}
.rules-scoring-grid{
  display:grid!important;
  grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,1.05fr) minmax(0,1.55fr)!important;
  gap:8px!important;
  align-items:stretch!important;
}
.rules-scoring-grid>div{
  min-height:0!important;
  padding:11px 12px!important;
  border-radius:9px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
}
.rules-scoring-grid h3{
  font-size:15px!important;
  line-height:1.15!important;
  margin:0 0 5px!important;
}
.rules-scoring-grid p{
  font-size:11px!important;
  line-height:1.45!important;
  margin:0!important;
  letter-spacing:0!important;
}
.rules-scoring-grid p br+br{display:none!important}

/* Horizontal-first data presentation on desktop. */
@media(min-width:1101px){
  .rules-scoring-grid>div{height:100%!important}
}
@media(max-width:1100px){
  .rules-scoring-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:650px){
  .rules-scoring-grid{grid-template-columns:1fr!important}
  .rules-scoring-grid p{font-size:11px!important}
}
