:root { --ink:#eaecf0; --muted:#b8c5cc; --surface:#233d4d; --surface-2:#182d39; --line:#426072; --orange:#fe7f2d; --lime:#fe7f2d; --blue:#fe7f2d; }
* { box-sizing:border-box; }
body { margin:0; min-width:320px; color:var(--ink); background:#000; font:16px/1.4 "Atkinson Hyperlegible", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
/* The initial public release is roster browsing only. */
body.public-release #admin,
body.public-release #admin-auth-dialog { display:none !important; }
body.admin-release #public { display:none !important; }
button, select, input { font:inherit; }
.shell { max-width:1440px; margin:0 auto; padding:0 32px 56px; }
.topbar { height:78px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); }
.brand { color:var(--ink); text-decoration:none; letter-spacing:.09em; font-size:13px; font-weight:800; display:flex; align-items:center; gap:10px; }
.admin-public-link { display:none; color:var(--orange); text-decoration:none; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:9px; font-weight:900; letter-spacing:.08em; }
body.admin-release .admin-public-link { display:inline-flex; align-items:center; min-height:30px; margin-left:12px; border:1px solid var(--orange); border-radius:7px; padding:0 10px; background:#0a151c; }
body.admin-release .admin-public-link:hover { color:#fff2e7; border-color:#ffb06e; box-shadow:0 0 12px rgba(254,127,45,.25); }
@media (min-width:781px) { body.admin-release .topbar { justify-content:flex-start; } body.admin-release .topbar nav { margin-left:auto; } }
@media (max-width:780px) { body.admin-release .admin-public-link { display:none; } }
.brand-mark { display:grid; place-items:center; width:28px; height:28px; background:var(--orange); color:#151515; font-family:Georgia,serif; font-size:19px; font-style:italic; border-radius:7px 7px 14px 7px; }
nav { display:flex; gap:25px; height:100%; align-items:stretch; }
.nav-link { border:0; background:none; color:var(--muted); padding:0 2px; cursor:pointer; font-weight:700; }
.nav-link.active { color:var(--ink); box-shadow:inset 0 -2px var(--orange); }
.season { color:var(--muted); font-size:12px; font-weight:700; letter-spacing:.08em; }
.view { display:none; }.view.active-view { display:block; }
.hero { padding:76px 0 45px; display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }
.eyebrow { margin:0 0 12px; color:var(--orange); font-size:10px; font-weight:800; letter-spacing:.18em; }
h1,h2,h3,p { margin-top:0; } h1 { margin-bottom:10px; font-size:clamp(38px,5.2vw,68px); line-height:.96; letter-spacing:-.065em; } .slogan { margin:0; color:var(--muted); font-size:18px; font-weight:600; }.slogan em { color:var(--orange); font-family:Georgia,serif; font-size:22px; font-weight:400; }
.last-updated { color:var(--muted); font-size:10px; letter-spacing:.12em; font-weight:800; white-space:nowrap; }.live-dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--lime); margin-right:6px; box-shadow:0 0 13px var(--lime); }
.controls { display:flex; justify-content:space-between; align-items:end; gap:20px; margin-bottom:22px; }.team-picker { display:grid; gap:7px; color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.14em; }.team-picker select { appearance:none; width:330px; border:1px solid var(--line); border-radius:8px; padding:14px 42px 14px 15px; color:var(--ink); font-size:18px; font-weight:700; background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white'%3E%3Cpath d='m4 6 4 4 4-4z'/%3E%3C/svg%3E") calc(100% - 12px) center/16px no-repeat; cursor:pointer; }.legend { color:var(--muted); font-size:13px; }.legend-dot { display:inline-block; height:8px; width:8px; border-radius:50%; margin:0 6px 1px 15px; }.legend-dot:first-child { margin-left:0; }.starter { background:var(--lime); }.reserve { background:#62626a; }
.roster-list { display:grid; gap:20px; }.roster-panel { background:var(--surface); border:1px solid var(--line); border-radius:16px; overflow:hidden; }.team-header { position:relative; display:flex; align-items:center; gap:16px; padding:23px 26px; overflow:hidden; isolation:isolate; border-bottom:1px solid var(--line); background:#231e1e; }.team-header::after { position:absolute; z-index:-1; right:-52px; top:-142px; width:310px; height:310px; border:2px solid rgba(245,237,237,.13); border-radius:50%; box-shadow:inset 0 0 0 74px transparent; content:""; background:linear-gradient(90deg,transparent 49%,rgba(245,237,237,.11) 50%,transparent 51%),linear-gradient(0deg,transparent 49%,rgba(245,237,237,.11) 50%,transparent 51%); }.team-badge { display:grid; place-items:center; width:43px; height:43px; border-radius:50%; color:#0d0d0f; background:var(--lime); font-size:10px; font-weight:900; }.team-header h2 { margin:0; font-size:22px; letter-spacing:-.03em; }.team-header p { margin:3px 0 0; color:var(--muted); font-size:15px; }.contract-link { display:inline-grid; place-items:center; width:27px; height:27px; margin-left:8px; border-radius:50%; color:var(--ink); background:#6f1717; font-size:14px; text-decoration:none; vertical-align:middle; }.contract-link:hover { background:var(--orange); }
.team-logo-wrap { display:grid; place-items:center; width:76px; height:76px; flex:0 0 76px; border-radius:50%; background:rgba(245,237,237,.96); box-shadow:0 0 10px rgba(245,237,237,.75),0 0 24px rgba(215,35,35,.45); }.team-logo { width:74px; height:74px; object-fit:contain; filter:drop-shadow(0 1px 1px rgba(0,0,0,.32)); }.depth-chart { display:grid; gap:1px; background:var(--line); }.position-lane { display:grid; grid-template-columns:72px minmax(0,1fr); background:var(--surface); }.lane-heading { display:flex; align-items:center; justify-content:center; margin:0; padding:10px; color:var(--muted); border-right:1px solid var(--line); font-size:10px; letter-spacing:.12em; font-weight:800; writing-mode:vertical-rl; transform:rotate(180deg); }.position-players { display:flex; gap:11px; padding:13px; overflow-x:auto; scrollbar-color:var(--line) transparent; }.player-card { position:relative; display:flex; align-items:center; gap:13px; padding:12px; margin:0; min-height:82px; border:1px solid #4c4141; border-radius:11px; background:var(--surface-2); cursor:grab; transition:transform .18s,border-color .18s,background .18s; }.player-card:hover { transform:translateY(-2px); border-color:#d72323; }.player-card[data-starter="true"] { border-left:3px solid var(--lime); }.avatar { height:54px; width:54px; flex:0 0 54px; object-fit:cover; object-position:center 17%; border-radius:50%; background:#333; }.player-data { min-width:0; flex:1; }.name-line { display:flex; align-items:center; gap:8px; }.name-line h3 { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin:0; color:var(--lime); font-size:16px; font-weight:650; letter-spacing:-.02em; }.number { color:var(--ink); font-size:13px; font-weight:700; }.metadata { display:flex; align-items:center; gap:5px; margin:5px 0 0; color:var(--muted); font-size:13px; white-space:nowrap; }.metadata strong { color:var(--ink); }.country-flag { width:18px; height:13px; object-fit:cover; border-radius:2px; box-shadow:0 0 4px rgba(245,237,237,.3); }.card-grip { margin-left:auto; color:#aa9292; font-size:17px; letter-spacing:-4px; transform:rotate(90deg); }.player-card.dragging { opacity:.45; }.compact-stats,.compact-facts,.season-label,.player-badges { display:none; }.public-card { flex:0 0 320px; width:320px; cursor:default; }.public-card .card-grip { display:none; }
.filtered-roster .public-card { align-items:flex-start; flex-basis:350px; min-height:196px; }.filtered-roster .season-label { display:block; margin:13px 0 5px; color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.12em; }.filtered-roster .compact-stats { display:grid; grid-template-columns:repeat(5,1fr); gap:9px 5px; padding-top:8px; border-top:1px solid var(--line); }.filtered-roster .compact-stats b { display:block; color:var(--muted); font-size:10px; letter-spacing:.08em; }.filtered-roster .compact-stats i { display:block; color:var(--ink); font-style:normal; font-size:15px; font-weight:800; }.filtered-roster .player-badges { display:flex; gap:5px; margin-top:8px; }.badge { border-radius:999px; padding:3px 7px; color:var(--ink); background:#6f1717; font-size:9px; font-weight:900; letter-spacing:.08em; }.badge.two-way { background:#624b11; }
.player-profile { position:relative; display:grid; grid-template-columns:220px 1fr; gap:22px; margin:0 0 20px; padding:26px; overflow:hidden; border:1px solid var(--line); border-radius:16px; background:linear-gradient(115deg,#29252f,#19191d 62%); }.profile-image { width:100%; height:210px; object-fit:cover; object-position:center 16%; border-radius:12px; background:#333; }.profile-overline { margin:4px 0 8px; color:var(--muted); font-size:13px; }.profile-name { margin:0; color:var(--lime); font-size:clamp(30px,4vw,50px); line-height:.95; letter-spacing:-.06em; }.profile-stats,.profile-bio { display:grid; grid-template-columns:repeat(3,1fr); margin-top:22px; border-top:1px solid var(--line); }.profile-bio { grid-column:1 / -1; grid-template-columns:repeat(4,1fr); }.profile-stat { padding:13px 12px 4px 0; }.profile-stat + .profile-stat { padding-left:14px; border-left:1px solid var(--line); }.profile-stat span { display:block; color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.1em; }.profile-stat strong { display:block; margin-top:3px; font-size:16px; letter-spacing:-.02em; }.profile-bio .profile-stat strong { font-size:13px; }.profile-link { grid-column:1 / -1; color:var(--ink); font-size:11px; font-weight:800; text-decoration:none; }.profile-link:hover { color:var(--lime); }
.admin-heading { padding:63px 0 34px; display:flex; justify-content:space-between; align-items:end; gap:25px; }.admin-heading h1 { font-size:48px; }.admin-heading > p { max-width:360px; margin:0; color:var(--muted); }.admin-layout { display:grid; grid-template-columns:290px 1fr; gap:18px; }.player-pool,.drop-area { border:1px solid var(--line); border-radius:15px; background:var(--surface); }.player-pool { padding:18px; }.pool-title,.drop-area-title { display:flex; align-items:center; justify-content:space-between; }.pool-title h2,.drop-area-title h2 { margin:0; font-size:15px; letter-spacing:-.02em; }.pool-title span,.drop-area-title span { color:var(--muted); font-size:9px; letter-spacing:.12em; font-weight:800; }.player-pool input { width:100%; margin:17px 0 12px; border:1px solid var(--line); border-radius:8px; padding:10px; background:#111114; color:var(--ink); outline:none; }.player-pool input:focus { border-color:var(--orange); }.pool-list { max-height:540px; overflow:auto; padding-right:3px; }.pool-list .player-card { margin-bottom:8px; }.drop-area { padding:20px; }.team-boards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; margin-top:17px; }.team-board { min-height:190px; background:#141417; border:1px dashed #3a3a42; border-radius:11px; padding:13px; }.team-board.over { border-color:var(--lime); background:#1b2116; }.board-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }.board-heading strong { font-size:12px; }.board-heading span { color:var(--muted); font-size:10px; }.team-board .player-card { background:#202026; }
@media(max-width:780px) { .shell { padding:0 16px 35px; }.season { display:none; }.hero,.admin-heading { padding-top:45px; align-items:flex-start; flex-direction:column; }.controls { align-items:start; flex-direction:column; }.team-picker select { width:min(100%,340px); }.position-lane { grid-template-columns:82px minmax(0,1fr); }.lane-heading { padding:14px 9px; font-size:11px; }.position-players { display:grid; grid-auto-flow:column; grid-auto-columns:calc(50% - 5px); gap:9px; padding:10px; }.public-card { width:100%; min-width:0; flex-basis:auto; }.public-card .avatar { width:42px; height:42px; flex-basis:42px; }.public-card .name-line h3 { font-size:13px; }.public-card .number { font-size:12px; }.public-card .metadata { gap:3px; font-size:10px; }.public-card .country-flag { font-size:12px; }.filtered-roster .position-players { display:flex; }.filtered-roster .public-card { flex:0 0 min(300px,78vw); }.name-line h3 { font-size:15px; }.metadata { font-size:12px; }.admin-layout { grid-template-columns:1fr; }.pool-list { max-height:260px; }.team-boards { grid-template-columns:1fr; } }

/* Latest roster-management refinements */
.team-header::after { right:18px; top:50%; width:250px; height:250px; border:0; border-radius:0; box-shadow:none; background-image:var(--team-watermark); background-position:center; background-repeat:no-repeat; background-size:contain; filter:grayscale(1) brightness(2); opacity:.2; transform:translateY(-50%); }
.contract-link { background:#000; }
@media(min-width:781px) { .admin-layout { grid-template-columns:340px 1fr; }.team-boards { grid-template-columns:1fr; } }
.admin-position-lane { display:grid; grid-template-columns:76px minmax(0,1fr); min-height:88px; border-top:1px solid var(--line); }.admin-position-lane > span { display:flex; align-items:center; justify-content:center; color:var(--muted); border-right:1px solid var(--line); font-size:10px; font-weight:800; letter-spacing:.12em; writing-mode:vertical-rl; transform:rotate(180deg); }.admin-position-list { display:flex; gap:9px; min-height:88px; padding:9px; overflow-x:auto; }.admin-position-list.over { background:rgba(215,35,35,.12); outline:1px dashed var(--orange); }.admin-position-list .player-card { flex:0 0 310px; }

/* Current visual system: #000000 / #233D4D / #FE7F2D / #EAECF0 */
.team-header { background:linear-gradient(118deg,#0d1e28 0%,#294856 42%,#172d39 68%,#0a1921 100%); box-shadow:inset 0 1px 0 rgba(234,236,240,.19), inset 0 -1px 0 rgba(0,0,0,.38); }
.team-header::before { position:absolute; inset:0; z-index:0; content:""; pointer-events:none; opacity:.28; background:repeating-linear-gradient(103deg,rgba(234,236,240,.07) 0 1px,transparent 1px 8px),linear-gradient(110deg,transparent 0 39%,rgba(234,236,240,.19) 48%,transparent 58%); mix-blend-mode:screen; }
.team-header > * { position:relative; z-index:1; }
.team-header::after { z-index:0; right:3%; top:50%; width:32%; height:175%; border:0; border-radius:0; background-image:var(--team-watermark); background-position:center right; background-repeat:no-repeat; background-size:contain; filter:grayscale(1) brightness(2.2); opacity:.14; transform:translateY(-50%); }
.team-logo-wrap { box-sizing:border-box; width:82px; height:82px; flex-basis:82px; padding:8px; background:#eaecf0 !important; border:2px solid #fff; box-shadow:0 0 13px rgba(234,236,240,.8),0 0 25px rgba(254,127,45,.3); }
.team-logo { width:100%; height:100%; filter:drop-shadow(0 2px 7px rgba(0,0,0,.5)); }
.player-card { border-color:#426072; }
.player-card:hover { border-color:var(--orange); }
.avatar { background:#233d4d; }
.contract-link { background:#000; }

/* Salary and statistical modules are retained in the markup for a future licensed source. */
.season-label, .compact-stats, .profile-stats, .profile-link { display:none !important; }
.player-card:not(.has-contract) .contract, .player-card:not(.has-contract) .salary-separator { display:none !important; }
.filtered-roster .public-card { min-height:82px; }
.team-mark { border:1px solid rgba(234,236,240,.35); border-radius:50%; color:var(--orange); background:#182d39; font-size:17px; font-weight:850; letter-spacing:.03em; }
.country-flag { width:auto; height:auto; font-size:16px; line-height:1; box-shadow:none; }

/* Metal-card treatment: layered alloy, edge highlight and restrained brushed sheen. */
.player-card { overflow:hidden; border-color:#6f8491; background:linear-gradient(118deg,#10232e 0%,#294856 38%,#1a303b 60%,#0e202a 100%); box-shadow:inset 0 1px 0 rgba(234,236,240,.25),inset 0 -1px 0 rgba(0,0,0,.45),0 5px 12px rgba(0,0,0,.22); }
.player-card::before { position:absolute; inset:0; content:""; pointer-events:none; opacity:.42; background:repeating-linear-gradient(103deg,rgba(234,236,240,.09) 0 1px,transparent 1px 8px),linear-gradient(110deg,transparent 0 39%,rgba(234,236,240,.24) 48%,transparent 58%); mix-blend-mode:screen; }
.player-card::after { position:absolute; inset:1px; border:1px solid rgba(234,236,240,.08); border-radius:9px; content:""; pointer-events:none; }
.player-card > * { position:relative; z-index:1; }
.player-card[data-starter="true"] { border-left-color:var(--orange); box-shadow:inset 0 1px 0 rgba(255,219,190,.34),inset 3px 0 0 var(--orange),0 5px 12px rgba(0,0,0,.25); }
.player-card:hover { border-color:#dce8ed; box-shadow:inset 0 1px 0 rgba(234,236,240,.36),0 7px 17px rgba(0,0,0,.34),0 0 14px rgba(254,127,45,.15); }
.player-card.contract-missing { border-right:3px solid #f05a47; box-shadow:inset -3px 0 0 rgba(240,90,71,.22),inset 0 1px 0 rgba(234,236,240,.25),0 5px 12px rgba(0,0,0,.22); }
.player-card .player-data { width:100%; }

/* Dense desktop roster layout. */
.shell { max-width:1760px; padding-left:18px; padding-right:18px; }
.team-header h2 { font-size:29px; }
.position-lane { grid-template-columns:58px minmax(0,1fr); }
.lane-heading { font-size:9px; }
.position-players { gap:8px; padding:9px; }
.public-card { flex-basis:238px; width:238px; min-height:68px; padding:9px 10px; }
.name-line h3 { color:#eaecf0; }
.public-card .name-line h3 { font-size:18px; }
.public-card .metadata { margin-top:3px; font-size:13px; }
.public-card .metadata .age { font-size:13px; }
.admin-position-lane { grid-template-columns:61px minmax(0,1fr); min-height:74px; }
.admin-position-list { min-height:74px; padding:7px; gap:7px; }
.admin-position-list .player-card { flex-basis:245px; min-height:68px; }
.roster-dragging .admin-position-list { outline:1px dashed rgba(254,127,45,.38); outline-offset:-4px; }
.admin-position-list.over,.player-pool.over { background:rgba(254,127,45,.12) !important; box-shadow:inset 0 0 0 2px rgba(254,127,45,.72),0 0 16px rgba(254,127,45,.18); }
.admin-position-list .player-card.drop-before { box-shadow:-5px 0 0 var(--orange),inset 0 1px 0 rgba(234,236,240,.25),0 5px 12px rgba(0,0,0,.22); transform:translateX(4px); }
.roster-dragging .admin-card:not(.dragging) { transition:transform .12s ease,box-shadow .12s ease; }
.country-flag { width:19px; height:14px; flex:0 0 19px; object-fit:cover; border-radius:2px; box-shadow:0 0 4px rgba(234,236,240,.35); }
.player-card .player-data { padding-left:5px; }
.player-badges { display:block; position:absolute; inset:0; z-index:3; margin:0; pointer-events:none; overflow:hidden; }
.filtered-roster .player-badges { display:block; margin:0; }
.badge { display:grid; position:absolute; z-index:5; right:0; top:0; width:34px; height:100%; padding:0; color:#06151d; place-items:center; text-align:center; font-size:8px; font-weight:950; letter-spacing:.07em; line-height:1; writing-mode:vertical-rl; clip-path:polygon(0 0,100% 0,100% 83%,50% 100%,0 83%); box-shadow:-2px 0 4px rgba(0,0,0,.35),inset 1px 0 rgba(255,255,255,.42); }
.badge.rookie { color:#eafcff; background:linear-gradient(45deg,#0575b7 0%,#0ba2f4 33%,#85d8ff 50%,#0b7cb9 67%,#0ba2f4 100%); text-shadow:0 1px 1px rgba(0,0,0,.5); }
.badge.mvp { color:#312c00; background:linear-gradient(45deg,#857a00 0%,#c8b809 33%,#fff46b 50%,#938600 67%,#c8b809 100%); }
.badge.dpy { display:none; }
.badge.new { color:#fff; background:linear-gradient(45deg,#75049a 0%,#c10bf4 33%,#f3a4ff 50%,#8a06b1 67%,#c10bf4 100%); text-shadow:0 1px 1px rgba(0,0,0,.55); }
.badge.two-way { color:#06220a; background:linear-gradient(45deg,#218b15 0%,#54f527 33%,#c9ff9b 50%,#2caa19 67%,#54f527 100%); }
.badge:nth-child(n+2) { display:none; }
.flag-separator { color:#9eb5bf; font-weight:800; }
.team-contract-link { display:inline-grid; width:24px; height:24px; place-items:center; margin-left:7px; border-radius:50%; color:#eaecf0; background:#000; font-size:13px; text-decoration:none; vertical-align:middle; }.team-contract-link:hover { color:#fff; background:#1a1a1a; }
.team-contract-check,.team-proballers-map { margin-right:7px; border:1px solid #6f8491; border-radius:5px; padding:4px 6px; color:#eaecf0; background:#000; font-size:8px; font-weight:900; letter-spacing:.06em; cursor:pointer; }
.pending-chip { margin-left:auto; border:1px solid rgba(254,127,45,.75); border-radius:999px; padding:2px 5px; color:#fea15f; font-size:8px; font-weight:900; letter-spacing:.06em; white-space:nowrap; }.public-card .pending-chip { display:none; }
.board-heading strong { color:var(--orange); font-size:18px; letter-spacing:.06em; text-transform:uppercase; }
.admin-actions { display:flex; align-items:center; gap:12px; }.trade-shortcut { border:1px solid var(--orange); border-radius:8px; padding:10px 16px; color:#101820; background:var(--orange); font-size:11px; font-weight:950; letter-spacing:.1em; cursor:pointer; }.trade-shortcut:hover { filter:brightness(1.12); }
.utility-button { margin-right:9px; border:1px solid #6f8491; border-radius:7px; padding:7px 9px; color:#eaecf0; background:#000; font-size:9px; font-weight:900; letter-spacing:.08em; cursor:pointer; }.utility-button:hover { border-color:var(--orange); color:var(--orange); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.sync-mode select { min-height:34px; border:1px solid var(--orange); border-radius:7px; padding:0 25px 0 9px; color:#f7c7a6; background:#050708; font:900 9px/1 "IBM Plex Sans",sans-serif; letter-spacing:.08em; cursor:pointer; }
.player-create { margin-top:14px; border-top:1px solid var(--line); padding-top:13px; color:var(--muted); font-size:12px; }.player-create summary { color:var(--ink); cursor:pointer; font-weight:800; }.create-fields { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:10px; }.create-fields input:first-child { grid-column:1 / -1; }.player-pool .create-fields input { margin:0; padding:8px; font-size:12px; }.create-fields button { grid-column:1 / -1; border:0; border-radius:7px; padding:9px; color:#10232e; background:var(--orange); font-size:10px; font-weight:950; letter-spacing:.08em; cursor:pointer; }.player-create p { margin:9px 0 0; line-height:1.35; }
@media(max-width:780px) { .position-lane { grid-template-columns:66px minmax(0,1fr); }.public-card { min-height:68px; }.country-flag { width:16px; height:12px; flex-basis:16px; } }

.flag-fallback { display:inline-grid; width:19px; height:14px; flex:0 0 19px; place-items:center; font-size:13px; line-height:1; }
.trade-builder { margin-top:22px; padding:22px; border:1px solid var(--line); border-radius:15px; background:var(--surface); }
.trade-heading { display:flex; justify-content:space-between; align-items:end; gap:20px; margin-bottom:18px; }.trade-heading h2 { margin:3px 0 0; font-size:24px; }.trade-heading p { max-width:460px; margin:0; color:var(--muted); font-size:13px; }
.trade-slots { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }.trade-slot { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; }.trade-slot select { min-width:0; border:1px solid var(--line); border-radius:8px; padding:10px; color:var(--ink); background:#101d25; font-weight:700; }.trade-dropzone { display:grid; align-content:center; min-height:42px; padding:7px 10px; border:1px dashed #678092; border-radius:8px; color:var(--muted); background:#0e1d26; }.trade-dropzone strong { color:var(--ink); font-size:13px; }.trade-dropzone span { font-size:11px; }.trade-dropzone.over { border-color:var(--orange); background:#1e3a48; }.trade-confirm { margin-top:16px; border:0; border-radius:8px; padding:11px 22px; color:#101820; background:var(--orange); font-weight:950; letter-spacing:.1em; cursor:pointer; }.trade-confirm:hover { filter:brightness(1.12); }
@media(max-width:780px) { .trade-heading { align-items:start; flex-direction:column; }.trade-slots { grid-template-columns:1fr; }.trade-slot { grid-template-columns:1fr; } }
@media(max-width:780px) { .admin-actions { width:100%; align-items:stretch; flex-direction:column; }.trade-shortcut,.sync-mode select { width:100%; } }
@media(min-width:781px) { .admin-layout { height:calc(100vh - 160px); align-items:stretch; }.player-pool,.drop-area { overflow-y:auto; }.pool-list { max-height:390px; height:390px; overflow-y:auto; }.trade-builder { margin-top:16px; padding:14px; }.trade-heading { align-items:start; flex-direction:column; gap:4px; }.trade-heading h2 { font-size:18px; }.trade-heading p { font-size:11px; }.trade-slots { grid-template-columns:1fr; }.trade-slot { grid-template-columns:1fr; }.trade-slot input { min-width:0; border:1px solid var(--line); border-radius:8px; padding:9px; color:var(--ink); background:#101d25; }.retirement-box { margin-top:16px; border-top:1px solid var(--line); padding-top:14px; }.retirement-box h2 { margin:0 0 8px; color:var(--ink); font-size:13px; }.retire-dropzone { min-height:48px; display:grid; place-items:center; border:1px dashed #a65336; border-radius:8px; color:#e6a388; font-size:12px; }.retire-dropzone.over { border-color:#ff7350; background:rgba(193,11,244,.12); } }

/* Rebuilt logo stack: white disc, light ring, then the cached team mark. */
.team-header::before,.team-header::after { content:none !important; }
.team-logo-wrap { position:relative; z-index:2 !important; display:grid; place-items:center; box-sizing:border-box; width:96px; height:96px; flex:0 0 96px; padding:0; overflow:visible; border:0; border-radius:50%; background:#fff !important; box-shadow:none; }
.team-logo-wrap::before { content:"" !important; position:absolute; z-index:0; inset:-1px; border:2px solid #ffc145; border-radius:50%; box-shadow:0 0 3px #fff6cf,0 0 8px rgba(255,193,69,.95),0 0 17px rgba(255,169,32,.82),0 0 28px rgba(255,122,0,.48); pointer-events:none; }
.team-logo-wrap::after { content:none !important; }
.team-logo { position:relative; z-index:2; width:112px; height:112px; max-width:none; max-height:none; object-fit:contain; object-position:center; filter:none; }

/* A narrow, edge-anchored arrow ribbon. It is outside the text flow. */
.player-card > .player-badges { display:block; position:absolute; inset:0; z-index:6; overflow:visible; pointer-events:none; }
.player-card > .player-badges .badge { position:absolute; right:0; top:-5px; width:16.5px; height:calc(82% + 4px); display:grid; place-items:center; padding:0; border-radius:0; writing-mode:vertical-rl; text-align:center; font-size:9px; font-weight:950; letter-spacing:0; line-height:1; clip-path:polygon(0 0,35% 0,50% 9%,65% 0,100% 0,100% 84%,50% 100%,0 84%); box-shadow:-1px 0 3px rgba(0,0,0,.35), inset 1px 0 rgba(255,255,255,.5); }
.badge.rookie { color:#fff; font-weight:1000; text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 2px rgba(0,0,0,.9); }
.badge.dpy { display:grid; color:#312c00; background:linear-gradient(45deg,#857a00 0%,#c8b809 33%,#fff46b 50%,#938600 67%,#c8b809 100%); }
.contract-warning { display:flex; align-items:center; justify-content:space-between; gap:6px; margin-top:7px; color:#ff8b71; font-size:9px; line-height:1.2; }.contract-warning button { border:1px solid #f05a47; border-radius:4px; padding:3px 4px; color:#fff; background:#541b19; font-size:7px; font-weight:900; letter-spacing:.04em; cursor:pointer; white-space:nowrap; }.public-card .contract-warning { display:none; }

.public-card { flex-basis:274px; width:274px; }

/* Reserve a small bleed area so the ribbon genuinely sits above the card edge. */
.public-card { margin-top:5px; }
.position-players { padding-top:14px; }

/* The Pool stays compact (about five cards) while its own scrollbar exposes every match. */
.pool-list { overflow-y:auto; scrollbar-color:#6f8491 transparent; }

.unretire-button { width:100%; margin-top:8px; border:1px solid #6f8491; border-radius:7px; padding:8px; color:#eaecf0; background:#000; font-size:9px; font-weight:950; letter-spacing:.08em; cursor:pointer; }
.unretire-button:hover { border-color:var(--orange); color:var(--orange); }
.unretire-dialog { width:min(540px,calc(100vw - 32px)); max-height:min(640px,calc(100vh - 32px)); border:1px solid #6f8491; border-radius:14px; padding:20px; color:var(--ink); background:#10232e; box-shadow:0 18px 70px rgba(0,0,0,.7); }
.unretire-dialog::backdrop { background:rgba(0,0,0,.72); backdrop-filter:blur(3px); }
.unretire-heading { display:flex; justify-content:space-between; align-items:start; gap:12px; }.unretire-heading h2 { margin:2px 0 0; font-size:24px; }.dialog-close { border:0; color:var(--ink); background:transparent; font-size:28px; line-height:1; cursor:pointer; }
.unretire-dialog input { box-sizing:border-box; width:100%; margin:16px 0 10px; border:1px solid #6f8491; border-radius:8px; padding:11px; color:var(--ink); background:#0a151c; font-size:14px; }
.retired-picker-list { display:grid; max-height:330px; gap:7px; overflow-y:auto; padding-right:3px; }.retired-picker-row { display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #426072; border-radius:8px; background:#132b38; cursor:pointer; }.retired-picker-row input { width:16px; height:16px; margin:0; accent-color:var(--orange); }.retired-picker-row span { display:grid; gap:2px; }.retired-picker-row strong { font-size:13px; }.retired-picker-row small,.retired-empty { color:var(--muted); font-size:11px; }.retired-empty { margin:6px 0; }
.unretire-actions { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:15px; color:var(--muted); font-size:12px; }.unretire-actions button { border:0; border-radius:7px; padding:10px 13px; color:#10232e; background:var(--orange); font-size:10px; font-weight:950; letter-spacing:.06em; cursor:pointer; }.unretire-actions button:disabled { cursor:not-allowed; opacity:.45; }

/* Contract mismatch is compact by default; its complete resolution controls appear on hover/focus. */
.contract-warning { display:none !important; }
.admin-position-list .player-card,.pool-list .player-card { overflow:visible; }
.contract-alert { position:absolute; z-index:8; top:7px; right:7px; }.contract-alert-icon { width:18px; height:18px; border:1px solid #ff8b71; border-radius:50%; padding:0; color:#fff; background:#8f291f; font-size:12px; font-weight:950; line-height:1; cursor:help; }.contract-tooltip-layer { position:fixed; z-index:9999; width:232px; padding:10px; border:1px solid #f05a47; border-radius:8px; color:#eaecf0; background:#172832; box-shadow:0 9px 24px rgba(0,0,0,.55); font-size:10px; line-height:1.35; }.contract-tooltip-layer strong { color:#ff9a80; font-size:11px; }.contract-tooltip-layer p { margin:5px 0 9px; color:#d6dde1; }.contract-tooltip-actions { display:flex; gap:5px; }.contract-tooltip-actions button { border:1px solid #6f8491; border-radius:4px; padding:5px 7px; color:#eaecf0; background:#071117; font-size:8px; font-weight:950; letter-spacing:.07em; cursor:pointer; }.contract-tooltip-actions button:hover { border-color:var(--orange); color:var(--orange); }
.player-fix-name { margin:4px 0 14px; color:var(--orange); font-size:16px; font-weight:850; }.player-fix-fields { display:grid; grid-template-columns:1fr 1fr; gap:9px; }.player-fix-fields label { display:grid; gap:4px; color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.05em; }.player-fix-fields .fix-contract { grid-column:1 / -1; }.player-fix-fields input,.player-fix-fields select { box-sizing:border-box; width:100%; margin:0; padding:9px; border:1px solid #6f8491; border-radius:8px; color:var(--ink); background:#0a151c; font-size:13px; }.player-fix-fields label[hidden] { display:none; }
.unretire-actions .secondary-dialog-action { color:#eaecf0; background:#172832; border:1px solid #6f8491; }.unretire-actions .secondary-dialog-action:hover { border-color:var(--orange); color:var(--orange); }

/* Use the exact same muted separator after the flag as after every other datum. */
.flag-separator { color:inherit; font-weight:inherit; }

/* Static public roster cards avoid interactive paint work; Admin cards remain draggable. */
.roster-panel { content-visibility:auto; contain-intrinsic-size:auto 500px; }.public-card { pointer-events:none; }.public-card:hover { transform:none; border-color:#6f8491; }
/* The glow follows each transparent logo instead of drawing a separate disc. */
.team-logo-wrap { background:transparent !important; }
.team-logo-wrap::before { content:none !important; }
.team-logo { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); filter:drop-shadow(0 0 2px var(--team-glow,#f40b9b)) drop-shadow(0 0 7px var(--team-glow,#f40b9b)) drop-shadow(0 0 15px color-mix(in srgb,var(--team-glow,#f40b9b) 72%,transparent)); }
.roster-panel[data-team="MIN"] .team-logo { width:100px; height:100px; }
.roster-panel[data-team="GSW"] .team-logo,.roster-panel[data-team="IND"] .team-logo,.roster-panel[data-team="DEN"] .team-logo { width:123px; height:123px; }
.roster-panel[data-team="HOU"] .team-logo { width:100px; height:100px; }
.team-board { content-visibility:auto; contain-intrinsic-size:auto 440px; }
.trade-slot { display:block; padding:0 0 14px; }.trade-player-box { display:grid; gap:7px; }.trade-tags { display:flex; flex-wrap:wrap; gap:5px; min-height:0; }.trade-tag { display:inline-flex; align-items:center; gap:5px; max-width:100%; border-radius:999px; padding:5px 7px 5px 9px; color:#eaecf0; background:#101d25; font-size:10px; font-weight:800; }.trade-tag button { width:16px; height:16px; border:0; border-radius:50%; padding:0; color:#101d25; background:#b6c4ca; font-size:13px; line-height:1; cursor:pointer; }.trade-player-box input { min-width:0; border:1px solid var(--line); border-radius:8px; padding:9px; color:var(--ink); background:#101d25; }.trade-slot select { width:100%; margin-top:9px; }.trade-divider { margin:14px 0 0; border:0; border-top:1px solid #527083; }.trade-slot:last-child .trade-divider { display:none; }

/* Final alignment, card sizing and readable edge ribbons. */
.team-header { gap:26px; }
.player-card > .player-badges .badge { border:1px solid rgba(3,13,19,.88); filter:drop-shadow(-1px 1px 1px rgba(0,0,0,.72)) drop-shadow(0 0 2px rgba(0,0,0,.55)); -webkit-text-stroke:.3px rgba(3,13,19,.92); text-shadow:0 1px 1px rgba(0,0,0,1),0 0 2px rgba(0,0,0,.96); }
.badge.rookie,.badge.two-way,.badge.mvp,.badge.dpy { color:#f5fcff; font-weight:1000; }
.badge.two-way { background:linear-gradient(45deg,#21640f 0%,#54f527 33%,#b8ff97 50%,#2e9c14 67%,#54f527 100%); }

/* One shared horizontal tag treatment for public and Admin cards. */
.player-card > .player-badges { inset:auto; top:8px; right:34px; display:flex; align-items:flex-start; justify-content:flex-end; gap:4px; max-width:calc(100% - 72px); }
.player-card > .player-badges .badge { position:static; display:inline-flex; width:auto; height:auto; min-height:18px; padding:2px 5px; border:1px solid rgba(3,13,19,.88); border-radius:4px; writing-mode:horizontal-tb; clip-path:none; color:#f5fcff; align-items:center; justify-content:center; white-space:nowrap; font-size:9px; font-weight:1000; letter-spacing:0; line-height:1; box-shadow:inset 0 1px rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.72); filter:none; -webkit-text-stroke:0; text-shadow:0 1px 1px rgba(0,0,0,.9); }
.player-card > .player-badges .badge:nth-child(n+2) { display:inline-flex; }

/* Keep roster controls in view while the assignment board scrolls beneath them. */
.drop-area-title { position:sticky; z-index:25; top:-20px; margin:-20px -20px 17px; padding:20px; background:#233d4d; border-bottom:1px solid #4f6979; box-shadow:0 5px 12px rgba(0,0,0,.3); }
.badge.mvp,.badge.dpy { background:linear-gradient(45deg,#857a00 0%,#c8b809 33%,#fff46b 50%,#938600 67%,#c8b809 100%); }
.admin-position-list .player-card { flex:0 0 280px; width:280px; height:74px; min-height:74px; box-sizing:border-box; }
.pool-list .player-card { min-height:74px; height:74px; box-sizing:border-box; }

/* Admin is a workbench: lighter cards, fast to scan, drag and edit. */
.admin-card { overflow:visible !important; border:1px solid #527083; background:#10232e; box-shadow:none; transition:border-color .12s ease,background .12s ease; }
.admin-card::before,.admin-card::after { display:none; }
.admin-card:hover { transform:none; border-color:var(--orange); box-shadow:none; background:#142c39; }
.admin-card[data-starter="true"] { box-shadow:inset 3px 0 0 var(--orange); }
.admin-card .player-data { padding-left:3px; padding-right:28px; }
.admin-card .name-line h3 { color:#eaecf0; font-size:15px; font-weight:760; }
.admin-card .metadata { margin-top:4px; font-size:12px; }
.admin-card .card-grip { color:#9eb5bf; font-size:15px; }
.admin-card .player-badges { inset:6px 31px auto auto; display:flex; gap:3px; width:auto; height:auto; overflow:visible; }
.admin-card .player-badges .badge { position:static; display:grid !important; width:auto; height:14px; min-width:0; padding:0 4px; border-radius:3px; writing-mode:initial; clip-path:none; font-size:7px; letter-spacing:.03em; box-shadow:none; }
.admin-card .card-fix-button { position:absolute; z-index:12; right:7px; bottom:6px; width:20px; height:20px; border:0; border-radius:4px; padding:0; color:#dbe4e8; background:#203b49; font-size:12px; line-height:1; cursor:pointer; }
.admin-card .card-fix-button:hover { color:#10232e; background:var(--orange); }
.admin-card .contract-alert { right:32px; top:6px; }
.admin-card.contract-missing { border-right:2px solid #f05a47; box-shadow:inset -2px 0 0 rgba(240,90,71,.32); }
.pool-list .admin-card { width:100%; }
.metadata > span,.flag-separator { color:#9eb5bf; font-weight:400; }

/* Pool actions are compact and clearly separated from the heading. */
.pending-filter { display:flex; align-items:center; gap:6px; margin:10px 0 0; color:#b8c8cf; font-size:10px; font-weight:800; letter-spacing:.04em; cursor:pointer; }.pending-filter input { width:14px; height:14px; margin:0; accent-color:var(--orange); }
.autofill-bios { display:block; margin:12px 0 4px !important; padding:7px 9px !important; font-size:8px !important; }

/* Public ribbons use the Admin colours and shadow, but fit the narrow card edge. */
.public-card > .player-badges { inset:0 0 auto auto; top:0; right:0; display:flex; flex-direction:column; align-items:flex-end; gap:2px; max-width:none; }
.public-card > .player-badges .badge { width:18px; min-height:52px; height:52px; padding:3px 0; border-radius:0 0 0 4px; writing-mode:vertical-rl; transform:rotate(180deg); clip-path:polygon(0 0,100% 0,100% 84%,50% 100%,0 84%); box-shadow:-1px 1px 3px rgba(0,0,0,.72),inset 1px 0 rgba(255,255,255,.4); font-size:8px; }

/* Rookie + two-way are intentionally both visible when an admin enables both. */
.player-badges.multi-badges .badge.two-way,.player-badges.multi-badges .badge.rookie { display:grid; }
.player-badges.multi-badges .badge.two-way { right:16.5px; }
.badge.dpy { display:grid; }
.badge.all-star { color:#0d2633; background:linear-gradient(45deg,#a7e8ff 0%,#ffffff 30%,#62d1f5 52%,#edfaff 70%,#72cceb 100%); text-shadow:none; }

.player-ribbon-fields { display:flex; flex-wrap:wrap; gap:7px; margin:13px 0 0; border:1px solid #527083; border-radius:8px; padding:9px; }
.player-ribbon-fields legend { padding:0 4px; color:var(--muted); font-size:10px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.player-ribbon-fields label { display:flex; align-items:center; gap:4px; color:#eaecf0; font-size:11px; font-weight:750; }
.player-ribbon-fields input { width:auto; margin:0; accent-color:var(--orange); }
.player-ribbon-fields input:disabled { opacity:.45; }
.trade-slot > input { width:100%; box-sizing:border-box; margin-top:9px; border:1px solid var(--line); border-radius:8px; padding:9px; color:var(--ink); background:#101d25; }

/* Smooth alloy finish: retain depth and a soft highlight, without striped texture. */
.player-card::before { background:linear-gradient(112deg,rgba(255,255,255,.025) 0%,transparent 40%,rgba(234,236,240,.16) 52%,transparent 64%,rgba(0,0,0,.08) 100%); opacity:.34; mix-blend-mode:screen; }

/* Ribbons use a deliberate bleed area beyond the public-card edge. */
.public-card { overflow:visible; }
.public-card > .player-badges { overflow:visible; }
.player-badges.multi-badges .badge:nth-child(1) { right:0; }
.player-badges.multi-badges .badge:nth-child(2) { right:16.5px; }
.player-badges.multi-badges .badge:nth-child(3) { right:33px; }

/* Public tags retain the Admin pill treatment, rotated into parallel edge ribbons. */
.public-card > .player-badges {
  inset:auto;
  top:-5px;
  right:-4px;
  display:flex;
  flex-direction:row-reverse;
  align-items:stretch;
  gap:3px;
  width:auto;
  height:auto;
  overflow:visible;
}
.public-card > .player-badges .badge {
  position:static;
  display:inline-flex;
  width:18px;
  min-width:18px;
  height:47px;
  min-height:47px;
  padding:0;
  border:0;
  border-radius:4px;
  writing-mode:vertical-rl;
  transform:none;
  clip-path:none;
  align-items:center;
  justify-content:center;
  box-shadow:inset 0 1px rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.72);
}
.public-card > .player-badges .badge-label {
  transform:rotate(180deg);
}

/* Public roster density and type hierarchy. */
@media(min-width:781px) {
  /* Keep the public depth chart at its five-card desktop size. A narrower
     window scrolls the complete team block instead of shrinking the cards. */
  .roster-panel-scroll { overflow-x:auto; overflow-y:hidden; scrollbar-color:#587688 transparent; }
  .roster-panel,.roster-panel-content { width:1423px; }
  /* Five cards fit exactly inside a desktop lane. The sixth card begins the
     horizontal overflow rather than making a five-player lane scroll. */
  .public-card { flex:0 0 264px; width:264px; min-width:264px; }
  .public-card .name-line h3 { font-size:17px; }
  .filtered-roster .public-card { flex-basis:280px; }
  .position-lane { grid-template-columns:29px minmax(0,1fr); }
  .lane-heading { padding-inline:3px; }
}
.public-card .metadata strong { font-weight:400; }
.player-card > .player-badges .badge { font-size:12px; text-transform:lowercase; }
@media(max-width:780px) { .position-lane { grid-template-columns:33px minmax(0,1fr); } }

/* Some mobile browsers expose a desktop-sized CSS viewport (or retain the
   manual desktop preview). Touch devices must still never receive the fixed
   desktop roster width: a card always fits the available phone screen. */
@media (hover:none) and (pointer:coarse) {
  .roster-panel-scroll { max-width:100%; overflow:visible; }
  .roster-panel,.roster-panel-content { width:100%; max-width:100%; }
  .position-lane { grid-template-columns:33px minmax(0,1fr); }
  .position-players { display:grid; grid-template-columns:minmax(0,1fr); grid-auto-flow:row; gap:7px; overflow:visible; padding:8px; }
  .public-card { width:100%; min-width:0; max-width:100%; flex:0 1 auto; }
}
.badge.all-star { color:#062136; background:linear-gradient(45deg,#78b9d5 0%,#eefdff 33%,#63c8f0 52%,#d9f7ff 70%,#5bafd0 100%); font-weight:1000; text-shadow:0 1px 1px rgba(255,255,255,.65); }

/* Flat, high-contrast labels: white type, no outline or metallic treatment. */
.player-card > .player-badges .badge { border:0; color:#fff; filter:none; -webkit-text-stroke:0; text-shadow:none; box-shadow:none; font-weight:400; letter-spacing:0; text-align:center; justify-content:center; align-items:center; }
.badge.mvp,.badge.dpy { background:#9b7b11; }
.badge.two-way { background:#2d9b28; }
.badge.rookie { background:#1688b8; }
.badge.new { background:#a71bc7; }
body[data-language="fr"] .public-card .badge.new .badge-label { font-size:9.5px; }
.admin-card .player-badges .badge { font-size:9px; }
.all-star-marker { display:inline-grid; place-items:center; width:15px; height:15px; margin-left:-4px; font-family:Georgia,serif; font-size:18px; font-weight:900; line-height:1; background:linear-gradient(145deg,#fff 0%,#9ca8b4 38%,#f8fbff 55%,#7c8995 100%); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 1px 0 #fff) drop-shadow(0 2px 1px rgba(0,0,0,.85)); transform:translateY(-1px); vertical-align:middle; }
.all-star-legend { display:inline-block; margin-left:7px; font-family:Georgia,serif; font-size:17px; font-weight:900; line-height:.75; vertical-align:-1px; background:linear-gradient(145deg,#fff 0%,#9ca8b4 38%,#f8fbff 55%,#7c8995 100%); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 1px 0 #fff) drop-shadow(0 2px 1px rgba(0,0,0,.85)); }
.event-report-item { display:grid; gap:3px; padding:8px 0; border-bottom:1px solid rgba(66,96,114,.55); }.event-report-item:last-child { border-bottom:0; padding-bottom:0; }

/* Five pixels less vertical lane space, while maintaining centered cards. */
.position-players { padding-top:6.5px; padding-bottom:6.5px; align-items:center; }

/* Contract link stays compact but gains a subdued green affordance. */
.team-contract-link { color:#61efb4; box-shadow:0 0 6px rgba(72,239,166,.28),0 0 12px rgba(72,239,166,.12); }
.team-contract-link:hover { color:#a4ffd2; box-shadow:0 0 8px rgba(72,239,166,.46),0 0 16px rgba(72,239,166,.2); }
.team-create-player { margin-right:7px; border:1px solid #6f8491; border-radius:5px; padding:4px 6px; color:#eaecf0; background:#000; font-size:8px; font-weight:900; letter-spacing:.06em; cursor:pointer; }
.team-create-player:hover { border-color:var(--orange); color:var(--orange); }
.fix-player-name-wrap { display:grid; gap:4px; margin:0 0 10px; color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.05em; }

/* Compact 3D contract control, placed immediately before the roster count. */
.team-header p { display:flex; align-items:center; gap:8px; }
.team-contract-link { display:inline-grid; place-items:center; flex:0 0 22px; width:22px; height:22px; margin:0; border:1px solid #67e7b0; border-radius:6px; color:#78f5bd; background:linear-gradient(145deg,#162126 0%,#020405 100%); box-shadow:inset 0 1px 0 rgba(255,255,255,.17),inset 0 -2px 0 rgba(0,0,0,.92),0 2px 0 #030806,0 3px 8px rgba(87,239,178,.18); font-size:12px; line-height:1; text-decoration:none; transition:transform 120ms ease,box-shadow 120ms ease,color 120ms ease; }
.team-contract-link:hover { color:#c2ffe1; transform:translateY(-1px); box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 0 rgba(0,0,0,.9),0 3px 0 #030806,0 5px 10px rgba(87,239,178,.25); }
.team-contract-link:active { transform:translateY(1px); box-shadow:inset 0 2px 3px rgba(0,0,0,.72); }
.fix-player-name-wrap input { margin:0; padding:9px; color:var(--ink); background:#0a151c; border:1px solid #6f8491; border-radius:8px; font-size:13px; }
.fix-player-name-wrap[hidden] { display:none; }
.fix-player-name-wrap select { margin:0; padding:9px; color:var(--ink); background:#0a151c; border:1px solid #6f8491; border-radius:8px; font-size:13px; }
.team-header h2 { font-size:34px; }

/* Discovery and sharing controls */
.controls { justify-content:flex-start; }
.player-picker { margin-left:2px; }
.public-player-search-control { display:flex; align-items:end; gap:9px; }
.public-player-search-control #public-player-search,.public-player-search-submit { height:52px; box-sizing:border-box; }
.public-player-search-submit { min-height:52px; border:1px solid var(--orange); border-radius:8px; padding:0 15px; color:var(--orange); background:#0a151c; font-size:10px; font-weight:900; letter-spacing:.1em; cursor:pointer; }
.public-player-search-submit:hover { color:#fff2e7; border-color:#ffb06e; box-shadow:0 0 14px rgba(254,127,45,.2); }
.team-picker input,.assignment-tools input,.assignment-tools select { width:260px; border:1px solid var(--line); border-radius:8px; padding:14px 15px; color:var(--ink); background:#0a151c; font-size:16px; font-weight:650; letter-spacing:normal; outline:none; }
.team-picker input:focus,.assignment-tools input:focus,.assignment-tools select:focus { border-color:var(--orange); }
.legend { margin-left:auto; }
.team-share-button { margin-left:auto; border:1px solid var(--orange); border-radius:7px; padding:8px 11px; color:var(--orange); background:#0a151c; box-shadow:0 0 10px rgba(254,127,45,.16); font-size:9px; font-weight:900; letter-spacing:.11em; cursor:pointer; }
.team-share-button:hover { color:#fff2e7; border-color:#ffb06e; box-shadow:0 0 15px rgba(254,127,45,.32); }

/* The compact share action remains recognisable without a text label. */
.team-share-button { display:grid; width:34px; height:34px; place-items:center; padding:0; font-size:20px; font-weight:400; letter-spacing:0; line-height:1; }
.team-share-button img { display:block; width:16px; height:16px; object-fit:contain; filter:brightness(0) saturate(100%) invert(67%) sepia(77%) saturate(2548%) hue-rotate(340deg) brightness(103%) contrast(99%); }
body.mobile-version .team-share-button { width:26px; height:26px; padding:0; font-size:16px; letter-spacing:0; }
.assignment-tools { display:flex; align-items:center; gap:10px; }.assignment-tools input,.assignment-tools select { width:190px; padding:7px 10px; font-size:12px; }.assignment-tools select { cursor:pointer; }
.bulk-tag-apply { min-width:64px; padding:7px 10px; font-size:10px; }.bulk-tag-apply:disabled { opacity:.45; cursor:not-allowed; }.bulk-tag-selected { min-width:58px; color:var(--orange) !important; font-size:9px !important; white-space:nowrap; }.admin-card .card-bulk-select { position:absolute; z-index:14; top:7px; right:7px; width:14px; height:14px; margin:0; accent-color:var(--orange); cursor:pointer; }
.share-format-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:20px; }.share-format-actions button { min-height:88px; border:1px solid var(--orange); border-radius:10px; color:var(--ink); background:#000; font-size:12px; font-weight:900; letter-spacing:.08em; cursor:pointer; }.share-format-actions button:hover { color:var(--orange); box-shadow:0 0 16px rgba(254,127,45,.22); }.share-format-actions small { display:block; margin-top:5px; color:var(--muted); font-size:10px; font-weight:650; letter-spacing:normal; }

/* Keep the assignment workbench noticeably wider on desktop. */
@media(min-width:781px) { .shell { max-width:1640px; }.admin-layout { grid-template-columns:340px minmax(0,1fr); }.drop-area { min-width:0; } }
@media(max-width:780px) { .player-picker { margin-left:0; }.public-player-search-control { width:100%; gap:8px; }.public-player-search-control .player-picker { flex:1; }.public-player-search-control #public-player-search,.public-player-search-submit { height:52px; }.public-player-search-submit { min-height:52px; padding:0 14px; font-size:11px; }.team-picker input { width:min(100%,340px); }.legend { margin-left:0; }.assignment-tools { width:100%; flex-wrap:wrap; }.assignment-tools input,.assignment-tools select { width:100%; }.share-format-actions { grid-template-columns:1fr; } }

/* Public navigation is deliberately minimal; the workbench is a gated area. */
.topbar nav { order:3; height:auto; margin-left:14px; }.topbar .season { order:2; margin-left:auto; }
.restricted-link { border:1px solid #ffb06e; border-radius:8px; padding:9px 12px 7px; color:#fff2e7; background:linear-gradient(145deg,#fe9752,#be4d16); box-shadow:0 3px 0 #712600,0 7px 13px rgba(254,127,45,.23),inset 0 1px 0 rgba(255,255,255,.42); font-size:9px; font-weight:950; letter-spacing:.1em; text-shadow:0 1px 0 rgba(0,0,0,.45); cursor:pointer; transform:translateY(0); transition:transform .12s,box-shadow .12s,filter .12s; }
.restricted-link:hover { filter:brightness(1.12); }.restricted-link:active { box-shadow:0 1px 0 #712600,0 3px 6px rgba(254,127,45,.2),inset 0 1px 0 rgba(255,255,255,.3); transform:translateY(2px); }
.save-changes { border:1px solid #62dca0; border-radius:8px; padding:10px 14px; color:#04130c; background:#62dca0; font-size:10px; font-weight:950; letter-spacing:.08em; cursor:pointer; }.save-changes:disabled { cursor:default; opacity:.42; }
.event-dialog textarea { box-sizing:border-box; width:100%; resize:vertical; margin:16px 0 0; border:1px solid #6f8491; border-radius:8px; padding:11px; color:var(--ink); background:#0a151c; font:inherit; font-size:13px; line-height:1.4; }
.event-help { margin:8px 0 0; color:var(--muted); font-size:12px; line-height:1.4; }.event-report { display:grid; gap:3px; margin-top:14px; border-top:1px solid #426072; padding-top:12px; color:#c9d5da; font-size:11px; }.event-report strong { color:var(--orange); }.event-report small { color:#8298a3; }.keep-login { display:flex; align-items:center; gap:7px; margin-top:10px; color:#d9e2e5; font-size:12px; }.keep-login input { width:auto; margin:0; accent-color:var(--orange); }
.sync-report-dialog { width:min(880px,calc(100vw - 48px)); height:min(760px,calc(100vh - 48px)); max-height:calc(100vh - 48px); overflow:hidden; }
.sync-report-dialog[open] { display:flex; flex-direction:column; }
.sync-report-dialog .unretire-heading,.sync-report-dialog .event-help,.sync-report-dialog .unretire-actions { flex:0 0 auto; }
.sync-report-list { display:grid; flex:1 1 auto; min-height:0; gap:8px; overflow-y:auto; margin-top:16px; padding-right:5px; }.sync-report-item { position:relative; display:grid; gap:3px; padding:10px 142px 10px 12px; border:1px solid #466276; border-radius:8px; background:#0b1a23; color:#d9e2e5; font-size:12px; line-height:1.35; }.sync-report-item strong { color:#68e1a6; text-transform:uppercase; font-size:10px; letter-spacing:.08em; }.sync-report-item.ignored strong { color:#e5c06b; }.sync-report-item.review strong { color:#ff8550; }.sync-report-item small { color:#91a5af; }.sync-report-timestamp { position:absolute; top:10px; right:12px; color:#91a5af; font-size:10px; line-height:1.2; text-align:right; white-space:nowrap; }.sync-empty { margin:16px 0 4px; color:#c9d5da; }
.sync-fix-player { justify-self:start; margin-top:5px; border:1px solid var(--orange); border-radius:6px; padding:5px 7px; color:var(--orange); background:#000; font-size:9px; font-weight:900; letter-spacing:.07em; cursor:pointer; }
.sync-report-actions { display:flex; flex-wrap:wrap; gap:6px; margin-top:5px; }.sync-id-search,.sync-create-post { justify-self:start; border:1px solid var(--orange); border-radius:6px; padding:5px 7px; color:var(--orange); background:#000; font-size:9px; font-weight:900; letter-spacing:.07em; text-decoration:none; cursor:pointer; }.sync-id-search:hover,.sync-create-post:hover { color:#fff; background:#3b2112; }
@media(max-width:780px) { .save-changes { width:100%; }.topbar .season { margin-left:auto; }.restricted-link { width:auto; } }
.admin-card .card-delete-button { position:absolute; z-index:12; right:31px; bottom:6px; width:20px; height:20px; border:1px solid #ef6657; border-radius:4px; padding:0; color:#fff; background:#8f291f; font-size:18px; line-height:16px; cursor:pointer; }
.admin-card .card-delete-button:hover { border-color:#ffb0a7; background:#ca3228; box-shadow:0 0 8px rgba(240,90,71,.45); }

/* Unified controls: black face, orange outline, and the same compact geometry. */
.restricted-link,.utility-button,.save-changes,.trade-shortcut,.trade-confirm,.unretire-button,.unretire-actions button,.team-create-player,.team-contract-check,.team-proballers-map,.create-fields button,.contract-tooltip-actions button {
  border:1px solid var(--orange) !important;
  border-radius:7px !important;
  padding:9px 12px !important;
  color:var(--orange) !important;
  background:#000 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 2px 6px rgba(0,0,0,.35) !important;
  font-size:9px !important;
  font-weight:950 !important;
  letter-spacing:.08em !important;
  text-shadow:none !important;
  transition:border-color .14s ease,color .14s ease,box-shadow .14s ease,transform .14s ease !important;
}
.restricted-link:hover,.utility-button:hover,.save-changes:hover,.trade-shortcut:hover,.trade-confirm:hover,.unretire-button:hover,.unretire-actions button:hover,.team-create-player:hover,.team-contract-check:hover,.team-proballers-map:hover,.create-fields button:hover,.contract-tooltip-actions button:hover { border-color:#ffd0aa !important; color:#ffd0aa !important; box-shadow:0 0 9px rgba(254,127,45,.26),inset 0 1px 0 rgba(255,255,255,.08) !important; filter:none !important; }
.restricted-link:active,.utility-button:active,.save-changes:active,.trade-shortcut:active,.trade-confirm:active { transform:translateY(1px) !important; }
.restricted-link { padding:8px 11px !important; background:#000 !important; box-shadow:0 2px 7px rgba(254,127,45,.16) !important; }
.save-changes:disabled,.utility-button:disabled { opacity:.48; cursor:wait; }
.save-changes:disabled[data-save-state="idle"] { cursor:default; pointer-events:none; filter:none; box-shadow:none; transform:none; }
.save-changes:disabled[data-save-state="saving"] { cursor:progress; }

/* Header identity and dedicated display type. */
.brand { gap:11px; font-size:18px; }
.brand-mark { width:38px; height:38px; overflow:hidden; border:0; border-radius:50%; padding:0; background:transparent; }
.brand-mark img { display:block; width:100%; height:100%; object-fit:cover; }
.season { font-size:17px; }
#roster-title,.slogan { font-family:"IBM Plex Sans","Atkinson Hyperlegible",ui-sans-serif,system-ui,sans-serif; }
.slogan em { font-family:inherit; }

/* Cards and Share deliberately sit on the site-black canvas. */
.player-card,.admin-card,.team-board .player-card { background:#0a151c; }
.player-card::before { display:none; }
.admin-card:hover { background:#0a151c; }
.team-share-button { background:#0a151c; }

/* Lightweight image treatment for the supplied All-Star mark. */
.all-star-marker { display:inline-flex; width:19px; height:19px; margin-left:1px; transform:translateY(-1px); vertical-align:middle; background:none; color:initial; filter:none; }
.all-star-marker img { display:block; width:100%; height:100%; object-fit:contain; }
.all-star-legend { display:inline-flex; width:17px; height:17px; margin-left:7px; vertical-align:-3px; background:none; color:initial; filter:none; }
.all-star-legend img { display:block; width:100%; height:100%; object-fit:contain; }

/* Fixed six-card desktop rhythm and a manual mobile preview for any device. */
@media(min-width:781px) { .shell { max-width:1582px; } .roster-list { max-width:1546px; } }
.player-card > .player-badges .badge { text-shadow:2px 2px 1px rgba(0,0,0,.95); }
.mobile-version-button { border:1px solid #426072; border-radius:7px; padding:8px 10px; color:#b8c5cc; background:#000; font-size:9px; font-weight:850; letter-spacing:.08em; cursor:pointer; }
.mobile-version-button:hover,.mobile-version-button[aria-pressed="true"] { border-color:var(--orange); color:var(--orange); }
body.mobile-version .shell { max-width:780px; padding:0 16px 35px; }
body.mobile-version .season { display:none; }
body.mobile-version .topbar { height:39px; }
body.mobile-version .brand { gap:5px; font-size:9px; letter-spacing:.07em; }
body.mobile-version .brand-mark { width:19px; height:19px; }
body.mobile-version .mobile-version-button { padding:4px 5px; font-size:5px; letter-spacing:.06em; }
body.mobile-version .restricted-link { padding:4px 5px !important; font-size:5px !important; }
body.mobile-version .hero,body.mobile-version .admin-heading { padding-top:45px; align-items:flex-start; flex-direction:column; }
body.mobile-version .hero { padding:22px 0 14px; gap:12px; }
body.mobile-version #roster-title { margin-bottom:5px; font-size:34px; line-height:.98; }
body.mobile-version .slogan { font-size:10px; }
body.mobile-version .slogan em { font-size:12px; }
body.mobile-version .last-updated { font-size:5px; letter-spacing:.1em; }
body.mobile-version .live-dot { width:4px; height:4px; margin-right:3px; }
body.mobile-version .controls { align-items:start; flex-direction:column; }
body.mobile-version .controls { gap:10px; margin-bottom:12px; }
body.mobile-version .team-picker { gap:4px; font-size:6px; letter-spacing:.12em; }
body.mobile-version .team-picker select,body.mobile-version .team-picker input { width:min(100%,340px); padding:7px 21px 7px 8px; border-radius:5px; font-size:9px; }
body.mobile-version .team-picker input { padding-right:8px; }
body.mobile-version .legend { font-size:7px; }
body.mobile-version .legend-dot { width:4px; height:4px; margin:0 3px 1px 8px; }
body.mobile-version .all-star-legend { width:9px; height:9px; margin-left:4px; vertical-align:-2px; }
body.mobile-version .player-card > .player-badges .badge { writing-mode:vertical-rl; }
body.mobile-version .player-card > .player-badges .badge-label { display:inline-block; white-space:nowrap; writing-mode:inherit; transform:rotate(180deg); }
.public-card > .player-badges .badge-label { display:inline-block; white-space:nowrap; writing-mode:inherit; transform:rotate(180deg); }
body.mobile-version .team-header { display:grid; grid-template-columns:42px minmax(0,1fr) auto; grid-template-areas:"logo details share"; align-items:center; gap:8px; padding:12px; }
body.mobile-version .team-logo-wrap { grid-area:logo; width:42px; height:42px; max-width:42px; max-height:42px; flex-basis:42px; overflow:hidden; padding:0; border:0; border-radius:0; background:transparent !important; box-shadow:none !important; filter:none !important; }
body.mobile-version .team-logo { width:100% !important; height:100% !important; max-width:100%; max-height:100%; object-fit:contain; filter:none !important; }
body.mobile-version .team-header > div { grid-area:details; align-self:center; min-width:0; }
body.mobile-version .team-header h2 { font-size:20px; line-height:1.05; }
body.mobile-version .team-header p { margin-top:3px; font-size:12px; line-height:1.25; }
body.mobile-version .team-contract-link { width:19px; height:19px; margin-left:0; margin-right:4px; font-size:10px; }
body.mobile-version .team-share-button { grid-area:share; justify-self:end; align-self:center; width:26px; height:26px; margin:0; padding:0; font-size:16px; letter-spacing:0; }
body.mobile-version .position-lane { grid-template-columns:31px minmax(0,1fr); }
body.mobile-version .lane-heading { padding:8px 2px; font-size:10px; letter-spacing:.07em; }
body.mobile-version .position-players { display:grid; grid-template-columns:minmax(0,1fr); grid-auto-flow:row; gap:7px; overflow:visible; padding:8px; }
body.mobile-version .public-card { width:100%; min-width:0; min-height:80px; flex-basis:auto; padding:10px; }
body.mobile-version .public-card .avatar { width:38px; height:38px; flex-basis:38px; }
body.mobile-version .public-card .name-line h3 { font-size:18px; }
body.mobile-version .public-card .number { font-size:16px; }
body.mobile-version .public-card .metadata { gap:4px; font-size:14px; }
body.mobile-version .public-card .metadata .age { font-size:17px; }
body.mobile-version .public-card > .player-badges .badge { font-size:16px; }
body.mobile-version .public-card .country-flag { font-size:12px; }
body.mobile-version .filtered-roster .position-players { display:grid; }
body.mobile-version .filtered-roster .public-card { flex:0 0 min(300px,78vw); }
body.mobile-version .admin-layout { grid-template-columns:1fr; }
body.mobile-version .pool-list { max-height:260px; }
body.mobile-version .team-boards { grid-template-columns:1fr; }
@media(max-width:780px) { .mobile-version-button { margin-left:auto; } .topbar nav { gap:8px; } }

/* The assignment board is a wide desktop workbench: five full cards per lane. */
.fix-player-aliases { grid-column:1 / -1; }
.fix-player-aliases small { display:block; margin-top:4px; color:var(--muted); font-size:9px; font-weight:650; }
.fix-player-photo { display:grid; grid-column:1 / -1; grid-template-columns:72px minmax(0,1fr); gap:8px 10px; align-items:center; margin:2px 0 0; padding:10px; border:1px solid #3d6476; border-radius:8px; background:#0a151c; }
.fix-player-photo > div:first-child { display:grid; gap:3px; grid-column:1 / -1; }.fix-player-photo strong { color:#eaecf0; font-size:10px; letter-spacing:.06em; text-transform:uppercase; }.fix-player-photo small { color:var(--muted); font-size:9px; line-height:1.25; }
.fix-player-photo img { width:72px; height:69px; grid-row:2 / span 3; border-radius:6px; object-fit:cover; background:#142933; }
.fix-photo-upload,.fix-photo-url { display:grid; gap:3px; color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.04em; }.fix-photo-upload input,.fix-photo-url input { min-width:0; margin:0; padding:7px; color:var(--ink); background:#071015; border:1px solid #496b7d; border-radius:6px; font-size:11px; }
.fix-photo-actions { display:flex; gap:6px; }.fix-photo-actions button { padding:6px 8px; font-size:8px; }
@media(min-width:1500px) {
  body.admin-release .shell { max-width:2000px; }
  body.admin-release .admin-layout { grid-template-columns:300px minmax(0,1fr); }
  body.admin-release .admin-position-list .player-card { flex:0 0 calc((100% - 36px) / 5); width:calc((100% - 36px) / 5); }
}

/* Distinct display typography for the site identity and editorial slogan. */
.brand,#roster-title,.slogan { font-family:"Contrail One","IBM Plex Sans",sans-serif; font-weight:400; }
.brand { letter-spacing:.02em; text-transform:none; }
#roster-title { font-family:Montserrat,"IBM Plex Sans",sans-serif; font-weight:800; letter-spacing:-.035em; font-size:clamp(46px,5.6vw,76px); line-height:.9; }
.slogan { letter-spacing:.01em; }
.slogan em { font-family:"IBM Plex Serif",Georgia,serif; font-style:italic; font-size:1.25em; letter-spacing:.01em; }
.undo-assignment { min-width:58px; padding:7px 9px; color:#d8e4e9; background:#142c39; font-size:9px; }

/* Public identity and tag color refinements. */
.brand { font-family:Montserrat,"IBM Plex Sans",sans-serif; font-weight:800; }
.badge.mvp { background:#c9a227; }
.undo-assignment:disabled { opacity:.45; cursor:not-allowed; }

/* Keep every compact card fact on one typographic scale. */
.public-card .metadata,.public-card .metadata .number,.public-card .metadata .age,.public-card .metadata .height,.public-card .metadata .contract { font-size:12px; }
body.mobile-version .public-card .metadata,body.mobile-version .public-card .metadata .number,body.mobile-version .public-card .metadata .age,body.mobile-version .public-card .metadata .height,body.mobile-version .public-card .metadata .contract { font-size:14px; }
body.mobile-version .public-card > .player-badges .badge { font-size:14px; }

/* Injury status is an original yellow alert mark, never a protected medical emblem. */
.injury-marker { display:inline-flex; width:18px; height:18px; flex:0 0 18px; align-items:center; justify-content:center; margin-left:1px; border:0; padding:0; background:transparent; cursor:pointer; }
.injury-marker img { display:block; width:100%; height:100%; object-fit:contain; }
.public-card .injury-marker { pointer-events:auto; cursor:help; }
.injury-detail { position:fixed; z-index:10000; display:grid; gap:3px; width:min(248px,calc(100vw - 16px)); box-sizing:border-box; border:1px solid #ad3434; border-radius:8px; padding:9px 10px; color:#e8edf0; background:#10202a; box-shadow:0 8px 18px rgba(0,0,0,.55); font-size:11px; line-height:1.3; }
.injury-detail strong { color:#ffaaa4; }.injury-detail small { color:#aab9c1; }.injury-detail a { color:#ffaaa4; }.injury-detail a:hover { color:#ffe1df; }
@media(min-width:781px) { .injury-detail { gap:5px; width:min(372px,calc(100vw - 24px)); border-radius:12px; padding:14px 15px; font-size:16.5px; }.injury-detail small { font-size:13.5px; } }
body.mobile-version .injury-marker { width:20px; height:20px; flex-basis:20px; }
body.mobile-version .injury-detail { font-size:12px; }

/* A mapped public card can open its on-demand statistics; all other cards
   retain the non-interactive rendering path for fast roster scrolling. */
.public-card.proballers-enabled { pointer-events:auto; cursor:pointer; }
.public-card.proballers-enabled:hover,.public-card.proballers-enabled:focus-visible { transform:translateY(-2px); border-color:var(--orange); outline:none; }
.proballers-detail { position:fixed; z-index:10000; width:min(278px,calc(100vw - 16px)); box-sizing:border-box; border:1px solid #527083; border-radius:10px; padding:10px; color:#e8edf0; background:#10232e; box-shadow:0 10px 24px rgba(0,0,0,.6); }
.proballers-detail-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; color:#f4f7f8; font-size:13px; }
.proballers-detail-player { display:flex; min-width:0; align-items:center; gap:10px; }.proballers-detail-title-stack { display:grid; min-width:0; gap:3px; }.proballers-detail-player strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.proballers-detail-photo { display:grid; width:44px; height:44px; flex:0 0 44px; place-items:center; overflow:hidden; border:2px solid transparent; border-radius:50%; object-fit:cover; color:#cfdae0; background:linear-gradient(#0a151c,#0a151c) padding-box,linear-gradient(135deg,#0a151c 8%,#3d6476 48%,#0a151c 92%) border-box; font-size:11px; font-weight:900; letter-spacing:.04em; }
.proballers-detail-photo-placeholder { box-sizing:border-box; padding:6px; object-fit:contain; opacity:.65; background:linear-gradient(135deg,#315a72,#142933); }
.proballers-detail-close { width:22px; height:22px; border:0; border-radius:5px; padding:0; color:#c4d0d5; background:#0a151c; font-size:18px; line-height:1; cursor:pointer; }
.proballers-detail-close:hover { color:#fff; background:#253e4a; }
.proballers-detail-loading { margin:8px 0; color:#aebfc7; font-size:10px; line-height:1.35; }
.proballers-detail-context { color:#f1c4a2; font-size:10px; font-weight:750; line-height:1.35; }
.proballers-detail-stats { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:4px; margin:8px 0 10px; }
.proballers-detail-stats span { display:grid; gap:2px; min-width:0; border:1px solid #365365; border-radius:5px; padding:5px 3px; text-align:center; background:#0a151c; }
.proballers-detail-stats strong { color:#f6fbfd; font-size:12px; }.proballers-detail-stats small { color:#8ea4af; font-size:7px; font-weight:900; letter-spacing:.04em; }
.proballers-detail-link { color:#fe7f2d; font-size:10px; font-weight:850; text-decoration:none; }.proballers-detail-link:hover { color:#ffd0aa; }
@media(min-width:781px) {
  .proballers-detail { width:min(417px,calc(100vw - 24px)); border-radius:15px; padding:15px; }
  .proballers-detail-heading { gap:12px; font-size:19.5px; }.proballers-detail-player { gap:14px; }.proballers-detail-title-stack { gap:5px; }.proballers-detail-photo { width:72px; height:72px; flex-basis:72px; border-width:3px; }
  .proballers-detail-close { width:33px; height:33px; border-radius:8px; font-size:27px; }
  .proballers-detail-loading { margin:12px 0; font-size:15px; }.proballers-detail-context { font-size:15px; }.proballers-detail-stats { gap:6px; margin:12px 0 15px; }
  .proballers-detail-stats span { border-radius:8px; padding:8px 5px; }.proballers-detail-stats strong { font-size:18px; }.proballers-detail-stats small { font-size:10.5px; }
  .proballers-detail-link { font-size:15px; }
}
@media(max-width:780px) {
  .proballers-detail-heading { font-size:15.6px; }.proballers-detail-loading,.proballers-detail-context { font-size:12px; }
  .proballers-detail-stats strong { font-size:14.4px; }.proballers-detail-stats small { font-size:8.4px; }.proballers-detail-link { font-size:12px; }
}

/* Search leaves the roster DOM intact and only highlights the target card. */
.public-card.player-search-hit { border-color:#ff73d9; box-shadow:0 0 0 2px rgba(244,11,153,.88),0 0 18px rgba(244,11,153,.86),inset 0 1px 0 rgba(255,255,255,.38); animation:player-search-pulse 1s ease-in-out 5; }
@keyframes player-search-pulse { 50% { box-shadow:0 0 0 4px rgba(244,11,153,.3),0 0 29px rgba(244,11,153,.92),inset 0 1px 0 rgba(255,255,255,.4); } }
@media(prefers-reduced-motion:reduce) { .public-card.player-search-hit { animation:none; } }

/* Keep the player editor fully visible as fields are added. On desktop, its
   compact four-column grid removes the need for an internal scrollbar. */
@media(min-width:820px) {
  .player-fix-dialog { width:min(920px,calc(100vw - 48px)); max-height:calc(100vh - 32px); overflow:hidden; }
  .player-fix-dialog .player-fix-fields { grid-template-columns:repeat(5,minmax(0,1fr)); gap:11px; }
  .player-fix-dialog .player-fix-fields .fix-contract,.player-fix-dialog .player-fix-fields .fix-player-aliases { grid-column:1 / -1; }
}

/* Mobile filters are primary controls, not compact metadata. */
body.mobile-version .team-picker { width:100%; gap:7px; font-size:10px; }
body.mobile-version .team-picker select,body.mobile-version .team-picker input { width:min(100%,440px); min-height:43px; padding:10px 38px 10px 12px; border-radius:7px; font-size:15px; }
body.mobile-version .team-picker input { padding-right:12px; }
body.mobile-version .public-player-search-control { width:min(100%,440px); }
body.mobile-version .public-player-search-control .team-picker { min-width:0; flex:1; }
body.mobile-version .public-player-search-control #public-player-search,body.mobile-version .public-player-search-submit { height:43px; }
body.mobile-version .public-player-search-submit { min-height:43px; padding:0 11px; border-radius:7px; font-size:10px; }

/* Admin feedback shares the same compact rhythm as its action buttons. */
#admin-title { font-family:Montserrat,"IBM Plex Sans",sans-serif; font-weight:800; letter-spacing:-.035em; }
.admin-actions { align-items:center; }
#admin-save-status { display:flex; flex:1 1 360px; align-items:center; min-height:34px; max-width:470px; margin:0; border:1px solid #426072; border-radius:7px; padding:7px 10px; color:#b8c8d0; background:#0a151c; font-size:11px; font-weight:650; line-height:1.25; }
.public-card .name-line h3 { letter-spacing:.008em; }
.admin-card .name-line h3 { letter-spacing:.006em; }
@media(max-width:780px) { #admin-save-status { width:100%; max-width:none; } }

/* Public support and contact controls. */
.topbar nav { display:flex; align-items:center; gap:9px; }
.language-switcher { display:inline-flex; align-items:center; gap:3px; padding:3px; border:1px solid rgba(79,111,129,.62); border-radius:8px; background:#071117; }
.language-button { display:grid; width:24px; height:24px; place-items:center; overflow:hidden; border:1px solid transparent; border-radius:5px; padding:0; background:transparent; cursor:pointer; filter:saturate(.65) opacity(.72); transition:filter .16s,background .16s,border-color .16s; }
.language-button img { display:block; width:17px; height:12px; object-fit:cover; border-radius:2px; box-shadow:0 0 3px rgba(0,0,0,.45); }
.language-button:hover,.language-button.active { border-color:rgba(254,127,45,.7); background:rgba(254,127,45,.14); filter:saturate(1) opacity(1); }
.header-icon-link,.footer-icon-link { display:grid; width:34px; height:34px; place-items:center; border:1px solid #426072; border-radius:50%; color:#eaecf0; background:#09141a; text-decoration:none; font-size:16px; font-weight:800; transition:border-color .16s,color .16s,background .16s; }
.header-icon-link:hover,.footer-icon-link:hover { border-color:var(--orange); color:var(--orange); background:#101f28; }
.x-link { font-size:15px; }
.support-button,.footer-support-link { display:inline-flex; min-height:34px; align-items:center; justify-content:center; gap:7px; border:1px solid var(--orange); border-radius:8px; padding:0 12px; color:#fff2e7; background:#0a151c; box-shadow:0 0 12px rgba(254,127,45,.14); font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:9px; font-weight:800; letter-spacing:.03em; cursor:pointer; transition:background .16s,box-shadow .16s,transform .16s; }
.support-button span { color:var(--orange); font-size:18px; line-height:1; }
.support-button:hover,.footer-support-link:hover { background:#172a34; box-shadow:0 0 17px rgba(254,127,45,.28); transform:translateY(-1px); }
.hero-season { display:inline-block; margin-left:.2em; color:var(--orange); font:700 .26em/1 "IBM Plex Sans",sans-serif; letter-spacing:.05em; vertical-align:middle; white-space:nowrap; }
.player-interaction-hint { margin:0 0 1px auto; color:#91a6b1; font-size:11px; font-style:italic; white-space:nowrap; }
.public-guidance { display:grid; justify-items:end; gap:6px; margin-left:auto; }.public-guidance .legend { margin-left:0; }.public-guidance .player-interaction-hint { margin:0; }
.project-footer { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-top:35px; padding:20px 2px 0; border-top:1px solid rgba(66,96,114,.68); color:#92a4ad; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:10px; font-weight:800; letter-spacing:.06em; }
.project-footer > div { display:flex; align-items:center; gap:8px; }
.project-footer .footer-icon-link { width:30px; height:30px; font-size:13px; }.footer-support-link { min-height:30px; padding:0 10px; font-size:9px; }
.support-dialog { width:min(930px,calc(100vw - 32px)); max-width:none; border:1px solid #618094; border-radius:18px; padding:28px; color:#eaecf0; background:#10232e; box-shadow:0 24px 70px rgba(0,0,0,.65); }
.support-dialog::backdrop { background:rgba(0,0,0,.72); backdrop-filter:blur(3px); }
.support-dialog-heading { display:flex; align-items:start; justify-content:space-between; gap:20px; }.support-dialog-heading h2 { margin:0; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:34px; line-height:1.05; letter-spacing:-.04em; }.support-intro { max-width:650px; margin:14px 0 23px; color:#c4d0d5; font-size:16px; }
.support-options { display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:12px; }.support-option { display:flex; flex-direction:column; min-height:278px; padding:18px; border:1px solid #426072; border-radius:12px; background:#0a171e; }.support-option-label { margin:0 0 7px; color:var(--orange); font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:9px; font-weight:800; letter-spacing:.15em; }.support-option h3 { margin:0; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:22px; letter-spacing:-.04em; }.support-option > p:not(.support-option-label) { margin:10px 0 16px; color:#b7c7cf; font-size:13px; line-height:1.42; }.support-option strong { color:#fff0e5; }.support-option-action { display:inline-flex; min-height:38px; align-items:center; justify-content:center; margin-top:auto; border:1px solid var(--orange); border-radius:7px; padding:8px 10px; color:var(--orange); background:#071117; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:10px; font-weight:800; letter-spacing:.05em; text-decoration:none; cursor:pointer; }.support-option-action:hover { color:#fff2e7; border-color:#ffd0aa; background:#172832; }.support-option small { min-height:17px; margin-top:8px; color:#92b9a7; font-size:11px; text-align:center; }
.support-pix-option { align-items:center; text-align:center; }.pix-qr-code { display:grid; place-items:center; width:156px; height:156px; margin:9px auto 0; padding:7px; border-radius:10px; background:#f7f4ee; }.pix-qr-code img,.pix-qr-code canvas { display:block; width:142px !important; height:142px !important; }
.wise-qr-code { display:block; width:128px; height:128px; margin:11px auto 0; border-radius:12px; object-fit:cover; background:#f1f3ef; }
.kofi-official-button { display:flex; justify-content:center; margin-top:auto; min-height:40px; }.kofi-official-button iframe { max-width:100%; }.kofi-fallback-link { margin:9px auto 0; color:#c4d0d5; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:9px; font-weight:800; letter-spacing:.05em; text-decoration:none; }.kofi-fallback-link:hover { color:var(--orange); }
@media(max-width:780px) { .topbar { height:auto !important; min-height:51px; flex-wrap:wrap; padding:8px 0; gap:6px; }.topbar nav { width:100%; justify-content:flex-end; gap:5px; }.language-switcher { order:-1; margin-right:auto; }.language-button { width:22px; height:22px; font-size:13px; }.header-icon-link { width:29px; height:29px; font-size:13px; }.support-button { min-height:29px; padding:0 8px; font-size:8px; }.support-button span { font-size:15px; }.hero-season { display:block; margin:7px 0 0; font-size:.25em; }.public-guidance { width:100%; justify-items:start; margin-left:0; }.player-interaction-hint { width:100%; margin:2px 0 0; font-size:10px; white-space:normal; }.project-footer { align-items:flex-start; flex-direction:column; gap:10px; margin-top:24px; }.support-dialog { width:calc(100vw - 20px); max-height:calc(100vh - 20px); padding:21px 16px; }.support-dialog-heading h2 { font-size:25px; }.support-intro { margin:11px 0 17px; font-size:14px; }.support-options { grid-template-columns:1fr; gap:9px; }.support-option { min-height:0; padding:15px; }.support-pix-option { min-height:0; }.pix-qr-code { width:144px; height:144px; }.pix-qr-code img,.pix-qr-code canvas { width:130px !important; height:130px !important; }.wise-qr-code { width:122px; height:122px; }.support-option > p:not(.support-option-label) { margin:8px 0 12px; }.support-option-action { margin-top:0; } }

/* A compact two-row public header keeps every mobile control tappable. */
.header-icon-link,.footer-icon-link { min-width:34px; min-height:34px; flex:0 0 34px; }
@media(max-width:780px) {
  .topbar nav { display:grid; grid-template-areas:"language email x" "support support version"; grid-template-columns:minmax(0,1fr) 29px 29px; align-items:center; justify-content:normal; gap:5px; }
  .language-switcher { grid-area:language; order:initial; justify-self:start; margin-right:0; }
  .header-icon-link { width:29px; height:29px; min-width:29px; min-height:29px; padding:0; border-radius:50%; }
  .header-icon-link:not(.x-link) { grid-area:email; }.header-icon-link.x-link { grid-area:x; }
  .support-button { grid-area:support; width:112px; min-height:34px; padding:4px 6px; gap:4px; font-size:8px; line-height:1.08; }
  .support-button span:first-child { flex:0 0 auto; font-size:14px; }.support-button span:last-child { max-width:76px; color:#fff2e7; font-size:8px; line-height:1.08; text-align:center; white-space:normal; }
  .mobile-version-button { grid-area:version; margin-left:0; padding:6px 6px; font-size:7px; line-height:1.05; }
  .hero-season { display:inline-block; margin:0 0 0 .18em; font-size:.20em; letter-spacing:.03em; vertical-align:baseline; }
  .last-updated,.legend,.player-interaction-hint { font-size:10px; }
  .legend-dot { width:6px; height:6px; margin:0 5px 1px 10px; }.legend-dot:first-child { margin-left:0; }
  .all-star-legend { width:13px; height:13px; margin-left:5px; vertical-align:-2px; }
}
body.mobile-version .last-updated,body.mobile-version .legend,body.mobile-version .player-interaction-hint { font-size:11px; }

/* Bottom-of-page inventory: a stable, non-intrusive ad location is ready for
   a future ad provider without adding any third-party script today. */
.bottom-ad-slot { display:grid; min-height:112px; place-items:center; align-content:center; gap:7px; margin:28px 0 0; border:1px dashed rgba(66,96,114,.72); border-radius:12px; color:#68808d; background:linear-gradient(135deg,rgba(16,35,46,.44),rgba(7,17,23,.68)); text-align:center; }
.bottom-ad-slot span { color:#8ca1ab; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:8px; font-weight:800; letter-spacing:.18em; }
.bottom-ad-slot div { font-size:11px; }
body.admin-release .project-footer { display:none; }

/* Footer links remain useful without turning the final row into a second header. */
.project-footer { align-items:flex-start; }
.footer-details { display:flex; flex-direction:column; gap:7px; line-height:1.4; }
.footer-about-link,.footer-details a:not(.footer-about-link) { color:#c5d0d5; text-decoration:none; }
.footer-about-link { color:var(--orange); font-size:11px; }
.footer-details a:hover { color:var(--orange); }
.footer-actions { display:flex; align-items:center; gap:8px; }
.about-credit { margin:0; color:#b8c8d0; font-size:14px; line-height:1.55; }.about-credit a { color:var(--orange); }

/* Manual X workflow: no API key, account token, or automatic publishing. */
.social-post-dialog { width:min(700px,calc(100vw - 32px)); }
.social-post-fields { display:grid; grid-template-columns:minmax(180px,.65fr) minmax(0,1.35fr); gap:12px; margin:19px 0 13px; }
.social-post-fields label,.social-caption-label { display:grid; gap:7px; color:#dce6ea; font-size:12px; font-weight:750; }
.social-post-fields small { color:#91a6b1; font-size:10px; font-weight:500; }
.social-post-fields select,.social-post-fields input,.social-caption-label textarea { width:100%; border:1px solid #426072; border-radius:8px; padding:10px; color:#edf3f5; background:#09141a; font:500 13px/1.4 "IBM Plex Sans",sans-serif; }
.social-caption-label textarea { min-height:122px; resize:vertical; color:#c6d5db; }
.social-post-actions { display:flex; flex-wrap:wrap; gap:9px; margin-top:15px; }.social-post-actions button { min-height:37px; }
.social-post-status { min-height:20px; margin:13px 0 0; }
@media(max-width:780px) { .bottom-ad-slot { min-height:92px; margin-top:19px; }.project-footer { width:100%; }.footer-details { font-size:9px; }.footer-actions { flex-wrap:wrap; }.social-post-dialog { width:calc(100vw - 20px); padding:20px 15px; }.social-post-fields { grid-template-columns:1fr; gap:10px; }.social-post-actions { display:grid; grid-template-columns:1fr; }.social-post-actions button { width:100%; } }

/* Standalone About page. The basketball remains decorative and never competes
   with the readable copy. */
.about-page { min-height:100vh; color:#eaf0f2; background:#050708; }
.about-shell { width:min(1040px,calc(100% - 48px)); margin:0 auto; padding:30px 0 76px; }
.about-header { display:flex; align-items:center; justify-content:space-between; gap:18px; padding-bottom:22px; border-bottom:1px solid rgba(66,96,114,.68); }
.about-header .brand { color:#eef2f3; text-decoration:none; }.about-header .brand-mark { width:38px; height:38px; }
.about-back-link { border:1px solid #426072; border-radius:8px; padding:9px 12px; color:#bdcbd1; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:10px; font-weight:800; letter-spacing:.04em; text-decoration:none; }.about-back-link:hover { border-color:var(--orange); color:var(--orange); }
.about-content { position:relative; isolation:isolate; max-width:760px; padding:74px 0 0; overflow:hidden; }
.about-watermark { position:absolute; z-index:-1; width:min(570px,85vw); right:-230px; top:55px; opacity:.075; filter:grayscale(1) contrast(.9); pointer-events:none; }
.about-content h1 { max-width:690px; margin:10px 0 34px; font-family:Montserrat,"IBM Plex Sans",sans-serif; font-size:clamp(39px,6vw,72px); line-height:.98; letter-spacing:-.065em; }.about-content h1 em { color:var(--orange); font-family:"IBM Plex Sans",sans-serif; font-weight:500; }
.about-copy { display:grid; gap:18px; max-width:680px; }.about-copy p { margin:0; color:#c6d2d7; font-size:17px; line-height:1.65; }.about-copy strong { color:#fff1e5; }.about-copy a,.about-sources a { color:var(--orange); }
.about-sources { max-width:680px; margin:36px 0 0; padding-top:18px; border-top:1px solid rgba(66,96,114,.68); color:#91a6b1; font-size:13px; line-height:1.5; }
.privacy-notice { position:fixed; z-index:50; right:18px; bottom:18px; display:grid; gap:11px; width:min(460px,calc(100vw - 32px)); padding:13px 14px; border:1px solid #426072; border-radius:10px; box-shadow:0 14px 42px rgba(0,0,0,.35); color:#c6d2d7; background:#09141a; font-size:12px; line-height:1.45; }.privacy-notice[hidden] { display:none; }.privacy-notice p { margin:0; }.privacy-notice strong,.privacy-notice a { color:#fff1e5; }.privacy-notice a:hover { color:var(--orange); }.privacy-notice-actions { display:flex; flex-wrap:wrap; gap:8px; }.privacy-notice button { flex:0 0 auto; border:1px solid var(--orange); border-radius:7px; padding:7px 10px; color:var(--orange); background:transparent; font:800 10px/1 Montserrat,"IBM Plex Sans",sans-serif; cursor:pointer; }.privacy-notice button:hover { color:#09141a; background:var(--orange); }.privacy-notice #keep-private { border-color:#426072; color:#c6d2d7; }.privacy-notice #keep-private:hover { color:#09141a; background:#c6d2d7; }
body.admin-release .privacy-notice { display:none; }
.adblock-notice { position:fixed; z-index:49; top:16px; right:18px; display:flex; align-items:center; gap:12px; width:min(370px,calc(100vw - 32px)); padding:11px 13px; border:1px solid #426072; border-radius:10px; box-shadow:0 14px 42px rgba(0,0,0,.35); color:#c6d2d7; background:#09141a; font-size:12px; line-height:1.4; }.adblock-notice[hidden] { display:none; }.adblock-notice p { margin:0; }.adblock-notice button { flex:0 0 auto; border:1px solid #426072; border-radius:7px; padding:7px 10px; color:#c6d2d7; background:transparent; font:800 10px/1 Montserrat,"IBM Plex Sans",sans-serif; cursor:pointer; }.adblock-notice button:hover { color:#09141a; background:#c6d2d7; }body.admin-release .adblock-notice { display:none; }
@media(max-width:780px) { .about-shell { width:calc(100% - 32px); padding-top:19px; }.about-header .brand { font-size:17px; }.about-header .brand-mark { width:32px; height:32px; }.about-back-link { padding:8px 9px; font-size:8px; }.about-content { padding-top:48px; }.about-watermark { right:-190px; top:38px; opacity:.06; }.about-content h1 { margin-bottom:27px; font-size:42px; }.about-copy { gap:15px; }.about-copy p { font-size:15px; line-height:1.58; }.privacy-notice { right:12px; bottom:12px; gap:10px; width:calc(100vw - 24px); padding:11px 12px; font-size:11px; }.adblock-notice { top:10px; right:12px; width:calc(100vw - 24px); font-size:11px; } }

/* Mobile public header: two deliberate rows instead of wrapping controls opportunistically. */
@media(max-width:780px) {
  .topbar {
    display:grid;
    grid-template-areas:
      "brand support"
      "language email x version";
    grid-template-columns:minmax(0,1fr) 34px 34px auto;
    align-items:center;
    min-height:94px !important;
    padding:9px 0 10px;
    column-gap:6px;
    row-gap:8px;
  }
  .topbar .brand { grid-area:brand; min-width:0; gap:7px; font-size:15px; line-height:1; white-space:nowrap; }
  .topbar .brand-mark { width:29px; height:29px; flex:0 0 29px; }
  .topbar nav { display:contents; width:auto; margin:0; }
  .topbar .restricted-link { display:none; }
  .language-switcher { grid-area:language; justify-self:start; gap:2px; padding:3px; }
  .language-button { width:20px; height:20px; }
  .language-button img { width:16px; height:11px; }
  .header-icon-link { width:34px; height:34px; min-width:34px; min-height:34px; font-size:18px; }
  .header-icon-link:not(.x-link) { grid-area:email; }
  .header-icon-link.x-link { grid-area:x; font-size:18px; }
  .support-button {
    grid-area:support;
    justify-self:end;
    width:auto;
    min-height:35px;
    padding:0 9px;
    gap:5px;
    font-size:9px;
    line-height:1;
    white-space:nowrap;
  }
  .support-button span:first-child { font-size:16px; }
  .support-button span:last-child { max-width:none; color:#fff2e7; font-size:8px; line-height:1; white-space:nowrap; }
  .mobile-version-button { grid-area:version; align-self:stretch; margin:0; padding:0 9px; font-size:8px; line-height:1; white-space:nowrap; }
  #roster-title { font-size:24px; letter-spacing:-.045em; line-height:1; white-space:nowrap; }
  .hero-season { margin-left:.24em; font-size:.31em; letter-spacing:.045em; }
}

/* Keep the phone header structurally simple: header row, then navigation row. */
.mobile-support-button { display:none; }
.header-icon-link,.footer-icon-link { border-radius:14px; }
.header-icon-link svg,.footer-icon-link svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.header-icon-link.x-link svg,.footer-icon-link.x-link svg { fill:currentColor; stroke:none; }
.roster-title-text { display:inline; }
@media(min-width:781px) {
  #roster-title { display:flex; align-items:baseline; }
  .topbar .brand { font-size:22px; }
  #roster-title .roster-title-text { order:1; }
  #roster-title .hero-season { order:2; }
}
@media(max-width:780px) {
  .topbar {
    display:grid;
    grid-template-areas:
      "brand support"
      "nav nav";
    grid-template-columns:minmax(0,1fr) auto;
    min-height:100px !important;
    padding:9px 0 10px;
    column-gap:8px;
    row-gap:8px;
  }
  .topbar .brand { grid-area:brand; min-width:0; font-size:18px; }
  .topbar .brand-mark { box-sizing:border-box; padding:2px; }
  .topbar .brand-mark img { object-fit:contain; border-radius:50%; }
  .mobile-support-button { display:inline-flex; grid-area:support; justify-self:end; min-height:30px; border-width:1px; padding:0 8px; font-size:8px; box-shadow:0 0 8px rgba(254,127,45,.1); }
  .mobile-support-button span:first-child { font-size:14px; }
  .mobile-support-button span:last-child { font-size:7px; }
  .desktop-support-button { display:none; }
  .topbar nav {
    display:flex;
    grid-area:nav;
    width:100%;
    margin:0;
    align-items:center;
    justify-content:flex-start;
    gap:6px;
  }
  .language-switcher { order:0; height:30px; box-sizing:border-box; margin:0; padding:3px; }
  .language-button { width:20px; height:22px; }
  .header-icon-link,.header-icon-link:not(.x-link),.header-icon-link.x-link { width:30px; height:30px; min-width:30px; min-height:30px; padding:0; font-size:16px; }
  .mobile-version-button { margin-left:auto; min-height:30px; padding:0 9px; font-size:7px; }
  #roster-title {
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    width:100%;
    min-width:0;
    max-width:100%;
    font-size:16px !important;
    letter-spacing:-.055em;
    overflow:visible;
    white-space:normal;
  }
  .hero-season { order:0; margin:0 0 4px; font-size:10px; letter-spacing:.05em; line-height:1; }
  .roster-title-text { order:1; display:block; max-width:100%; white-space:nowrap; }
}

/* The native phone layout carries .mobile-version, so these overrides must match it. */
.support-ball { width:18px; height:18px; flex:0 0 18px; fill:none; stroke:var(--orange); stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.mobile-version-button,.mobile-version-button[aria-pressed="true"] { border-color:#426072; color:#b8c5cc; background:#000; }
@media(max-width:780px) {
  body.mobile-version .topbar .brand { gap:8px; font-size:18px; letter-spacing:.02em; }
  body.mobile-version .topbar .brand-mark { width:32px; height:32px; flex-basis:32px; padding:3px; overflow:hidden; }
  body.mobile-version .topbar .brand-mark img { width:100%; height:100%; object-fit:contain !important; border-radius:50%; }
  body.mobile-version .mobile-support-button { min-height:29px; height:29px; padding:0 8px; border-width:1px; color:var(--orange); box-shadow:0 0 7px rgba(254,127,45,.08); }
  body.mobile-version .mobile-support-button span:last-child { color:var(--orange); font-size:7px; }
  body.mobile-version .mobile-support-button .support-ball { width:14px; height:14px; flex-basis:14px; }
  body.mobile-version .mobile-version-button { width:82px; min-width:82px; height:30px; min-height:30px; padding:0 8px; border:1px solid #426072; border-radius:7px; color:#b8c5cc; background:#000; font-size:7px; letter-spacing:.08em; }
  body.mobile-version #roster-title { display:flex; width:100%; min-width:0; max-width:100%; margin-bottom:5px; font-size:clamp(20px,8vw,30px) !important; line-height:1; letter-spacing:-.055em; overflow:visible; white-space:normal; }
  body.mobile-version #roster-title .hero-season { margin:0 0 4px; font-size:10px; line-height:1; letter-spacing:.05em; }
  body.mobile-version #roster-title .roster-title-text { max-width:100%; white-space:nowrap; }
}

/* Card data is always clipped by its own content column. Ribbons are absolute
   siblings and may bleed by design, but names and metadata must never cross a
   card edge at any viewport width. */
.player-card .player-data { width:auto; min-width:0; max-width:100%; overflow:hidden; }
.player-card .name-line { min-width:0; max-width:100%; }
.player-card .name-line h3 { min-width:0; flex:0 1 auto; }
.player-card .metadata { min-width:0; max-width:100%; overflow:hidden; }

/* On the desktop public view, the masthead and controls share the exact
   content width of a fixed five-card team block. Smaller windows still keep
   the roster block intact and expose its own horizontal scrollbar. */
@media (min-width:781px) {
  body:not(.admin-release):not(.mobile-version) .shell { width:min(100%,1459px); max-width:1459px; }
  body:not(.admin-release):not(.mobile-version) .roster-list { max-width:1423px; }
}
