/* ================= ESPN-style shared stylesheet ================= */
@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@500;600;700&family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  --espn-red:#e4002b;
  --espn-red-dark:#a6001e;
  --espn-red-deep:#7a0016;
  --ink:#0d0e10;
  --ink-soft:#54595f;
  --line:#e3e4e7;
  --line-soft:#edeef0;
  --panel:#ffffff;
  --page-bg:#eef0f2;
  --score-bg:#0a0a0d;
  --score-bg-soft:#1a1b1f;
  --live-green:#0a8a3f;
  --gold:#c17f00;
  --shadow-xs:0 1px 2px rgba(13,14,16,.06);
  --shadow-sm:0 1px 3px rgba(13,14,16,.08), 0 1px 2px rgba(13,14,16,.05);
  --shadow-md:0 6px 20px rgba(13,14,16,.12), 0 2px 6px rgba(13,14,16,.06);
  --shadow-dark:0 8px 24px rgba(0,0,0,.45);
  --radius:10px;
  --radius-sm:6px;
  --font-display:'Oswald',-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-body:'Inter',-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,sans-serif;

  /* Team: Logan */
  --logan-1:#0b1a2e;
  --logan-2:#0085ca;

  /* Team: Love */
  --love-1:#8a1538;
  --love-2:#ffffff;

  /* Team: Connor */
  --connor-1:#241773;
  --connor-2:#9e7c0c;

  /* Team: Micah */
  --micah-1:#004c54;
  --micah-2:#a5acaf;

  /* Team: Timmy */
  --timmy-1:#311d00;
  --timmy-2:#ff3c00;

  /* Team: Landon */
  --landon-1:#5a1414;
  --landon-2:#ffb612;

  /* Team: Adam */
  --adam-1:#002c5f;
  --adam-2:#a2aaaa;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--page-bg);
  color:var(--ink);
  font-family:var(--font-body);
  max-width:520px;
  margin:0 auto;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  padding-bottom:28px;
  box-shadow:0 0 40px rgba(0,0,0,.06);
}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
button{font-family:inherit;}

/* ---------------- Top bar ---------------- */
.topbar{
  background:linear-gradient(180deg,#eb0a34,var(--espn-red) 55%,var(--espn-red-dark));
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:10px 14px;
  position:sticky;
  top:0;
  z-index:50;
  box-shadow:0 2px 10px rgba(0,0,0,.18);
}
.topbar-left{display:flex;align-items:center;gap:12px;}
.icon-btn{
  width:20px;height:15px;
  display:flex;flex-direction:column;justify-content:space-between;
  background:none;border:none;padding:0;cursor:pointer;
}
.icon-btn span{display:block;height:2px;background:#fff;border-radius:1px;}
.espn-logo{
  background:#fff;
  color:var(--espn-red);
  font-family:var(--font-display);
  font-style:italic;
  font-weight:700;
  font-size:15px;
  letter-spacing:-0.3px;
  padding:4px 8px 3px;
  border-radius:3px;
  line-height:1;
  display:inline-block;
  cursor:pointer;
  box-shadow:var(--shadow-xs);
}
.topbar-right{display:flex;align-items:center;gap:16px;}
.topbar-right svg{width:18px;height:18px;fill:#fff;}
.plain-icon-btn{
  background:none;border:none;padding:0;margin:0;cursor:pointer;
  display:flex;align-items:center;
  opacity:.95;
}
.plain-icon-btn:active{opacity:.6;}

/* ---------------- Nav dropdown & search panel ---------------- */
.dropdown-panel{
  display:none;
  background:#fff;
  border-bottom:1px solid var(--line);
  position:relative;
  z-index:49;
  box-shadow:var(--shadow-sm);
}
.dropdown-panel.open{display:block;}
.dropdown-link{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 16px;
  font-size:13.5px;
  font-weight:700;
  color:var(--ink);
  border-bottom:1px solid var(--line-soft);
  letter-spacing:-.1px;
}
.dropdown-link:last-child{border-bottom:none;}
.dropdown-link:active{background:#f7f7f8;}
.dropdown-link .chev{color:#c2c4c8;font-weight:400;}

.search-panel{
  display:none;
  background:#fff;
  border-bottom:1px solid var(--line);
  padding:12px;
  position:relative;
  z-index:49;
  box-shadow:var(--shadow-sm);
}
.search-panel.open{display:block;}
.search-row{display:flex;align-items:center;gap:10px;}
.search-input{
  flex:1;
  border:1.5px solid var(--line);
  border-radius:20px;
  padding:9px 15px;
  font-size:13.5px;
  outline:none;
  background:#f5f5f6;
  transition:border-color .15s ease,background .15s ease;
}
.search-input:focus{border-color:var(--espn-red);background:#fff;}
.search-cancel{
  font-size:13px;font-weight:700;color:var(--espn-red);background:none;border:none;padding:4px;cursor:pointer;flex-shrink:0;
}
.search-results{margin-top:8px;}
.search-result{
  display:block;padding:11px 8px;border-bottom:1px solid var(--line-soft);border-radius:6px;
}
.search-result:hover, .search-result:active{background:#f7f7f8;}
.search-result:last-child{border-bottom:none;}
.search-result-title{font-size:13px;font-weight:700;color:var(--ink);}
.search-result-desc{font-size:11px;color:#8a8d92;margin-top:2px;}
.search-empty{padding:14px 8px;font-size:12.5px;color:#8a8d92;}

/* ---------------- Sub nav (sport tabs) ---------------- */
.subnav{
  display:flex;
  gap:22px;
  background:#fff;
  border-bottom:1px solid var(--line);
  padding:0 14px;
  overflow-x:auto;
  scrollbar-width:none;
}
.subnav::-webkit-scrollbar{display:none;}
.subnav a{
  font-family:var(--font-display);
  font-size:13px;
  font-weight:600;
  color:#8a8d92;
  padding:11px 2px;
  white-space:nowrap;
  border-bottom:3px solid transparent;
  letter-spacing:.2px;
}
.subnav a.active{color:var(--ink);border-bottom-color:var(--espn-red);}

/* ---------------- Generic section wrapper ---------------- */
.section{
  background:var(--panel);
  margin-top:8px;
  box-shadow:var(--shadow-xs);
}
.section-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:13px 14px 9px;
}
.section-title{
  font-family:var(--font-display);
  font-size:14px;
  font-weight:600;
  letter-spacing:.4px;
  color:var(--ink);
  text-transform:uppercase;
  border-left:4px solid var(--espn-red);
  padding-left:9px;
}
.section-link{
  font-size:11.5px;
  color:var(--espn-red);
  font-weight:700;
}

/* ---------------- Home: score strip card ---------------- */
.score-strip-wrap{
  background:#fff;
  padding:12px 14px 4px;
  border-bottom:8px solid var(--page-bg);
}
.score-strip-label{
  font-size:11px;
  font-weight:800;
  color:#6c6f74;
  text-transform:uppercase;
  letter-spacing:.3px;
  margin-bottom:9px;
  display:flex;
  justify-content:space-between;
}
.score-card{
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  overflow:hidden;
  display:block;
  background:#fff;
  box-shadow:var(--shadow-sm);
  transition:box-shadow .15s ease,transform .15s ease;
}
a.score-card:active{transform:scale(.985);}
.score-card-status{
  background:#f7f7f8;
  text-align:center;
  font-size:10.5px;
  font-weight:800;
  letter-spacing:.3px;
  color:var(--ink-soft);
  padding:7px 0;
  border-bottom:1px solid var(--line);
}
.score-card-status.final{color:var(--ink-soft);}
.score-card-status.pre{color:#8a8d92;}
.score-card-status.paused{color:var(--gold);}
.score-card-status.ppd{color:var(--espn-red);}
.score-strip-scroll{
  display:flex;gap:11px;overflow-x:auto;padding:2px 14px 16px;scroll-snap-type:x mandatory;
}
.score-strip-scroll::-webkit-scrollbar{display:none;}
.score-strip-scroll .score-card{min-width:188px;flex-shrink:0;scroll-snap-align:start;}
.score-card-status.live{color:var(--live-green);}
.score-card-status .dot{
  display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--live-green);margin-right:5px;
  animation:pulse 1.4s infinite;
}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.35;}}
.score-card-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:10px 13px;
}
.score-card-row + .score-card-row{border-top:1px solid var(--line-soft);}
.sc-team{display:flex;align-items:center;gap:9px;}
.sc-team-name{font-size:14px;font-weight:700;letter-spacing:-.1px;}
.sc-team-record{font-size:10.5px;color:#8a8d92;margin-left:5px;}
.sc-score{font-family:var(--font-display);font-size:19px;font-weight:600;display:flex;align-items:center;gap:6px;}
.poss-ball{width:11px;height:8px;}

/* team logo badges */
.logo{
  width:26px;height:26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08), 0 1px 2px rgba(0,0,0,.18);
}
.logo.lg{width:44px;height:44px;}
.logo.md{width:34px;height:34px;}
.logo-logan{background:linear-gradient(155deg,var(--logan-1),var(--logan-2));}
.logo-love{background:radial-gradient(circle at 35% 30%,#b3204f,var(--love-1));}
.logo-connor{background:linear-gradient(155deg,var(--connor-1),var(--connor-2));}
.logo-micah{background:linear-gradient(155deg,var(--micah-1),var(--micah-2));}
.logo-timmy{background:linear-gradient(155deg,var(--timmy-1),var(--timmy-2));}
.logo-landon{background:linear-gradient(155deg,var(--landon-1),var(--landon-2));}
.logo-adam{background:linear-gradient(155deg,var(--adam-1),var(--adam-2));}
.logo svg{width:62%;height:62%;}
.logo-letters{font-family:var(--font-display);color:#fff;font-weight:600;font-size:9px;letter-spacing:.3px;}
.logo.md .logo-letters{font-size:11px;}
.logo.lg .logo-letters{font-size:14px;}

/* ---------------- Headline / article cards ---------------- */
.headline-card{
  display:flex;
  gap:11px;
  padding:13px 14px;
  border-bottom:1px solid var(--line-soft);
  transition:background .12s ease;
}
.headline-card:active{background:#f7f7f8;}
.headline-card:last-child{border-bottom:none;}
.headline-thumb{
  width:96px;height:66px;border-radius:6px;flex-shrink:0;
  background:linear-gradient(135deg,var(--logan-1),var(--love-1));
  position:relative;overflow:hidden;
  box-shadow:var(--shadow-xs);
}
.headline-thumb .vs{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#fff;font-family:var(--font-display);font-weight:600;font-size:11px;letter-spacing:1px;opacity:.9;
  text-align:center;padding:4px;
}
.headline-eyebrow{
  font-size:10px;font-weight:800;color:var(--espn-red);text-transform:uppercase;letter-spacing:.3px;margin-bottom:3px;
}
.headline-title{font-size:13.5px;font-weight:700;line-height:1.3;color:var(--ink);letter-spacing:-.1px;}
.headline-meta{font-size:10.5px;color:#8a8d92;margin-top:4px;}

/* ---------------- Game page: score bug ---------------- */
.gp-status-bar{
  background:#eef0f2;
  text-align:center;
  font-size:11px;
  font-weight:700;
  color:var(--ink-soft);
  padding:8px 0;
  letter-spacing:.1px;
}
.scorebug{
  background:linear-gradient(180deg,#141417,var(--score-bg) 60%);
  color:#fff;
  padding:6px 16px 16px;
}
.scorebug-top{
  display:flex;justify-content:space-between;align-items:center;
  font-size:10.5px;color:#9a9ca0;font-weight:700;padding:7px 0 11px;
  text-transform:uppercase;letter-spacing:.5px;
}
.scorebug-top .live{
  color:var(--live-green);display:flex;align-items:center;gap:5px;
}
.scorebug-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 0;
}
.scorebug-row + .scorebug-row{border-top:1px solid rgba(255,255,255,.09);}
.sb-team{display:flex;align-items:center;gap:12px;}
.sb-team-text .sb-name{font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:.1px;}
.sb-team-text .sb-record{font-size:10.5px;color:#9a9ca0;font-weight:600;margin-top:1px;}
.sb-right{display:flex;align-items:center;gap:11px;}
.sb-ball{width:16px;height:11px;}
.sb-score{font-family:var(--font-display);font-size:29px;font-weight:600;min-width:38px;text-align:right;letter-spacing:-.5px;}
.scorebug-situation{
  margin-top:13px;background:rgba(255,255,255,.06);border-radius:7px;
  padding:10px 13px;display:flex;justify-content:space-between;align-items:center;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}
.sit-main{font-size:13px;font-weight:800;letter-spacing:-.1px;}
.sit-sub{font-size:10.5px;color:#9a9ca0;font-weight:600;margin-top:1px;}

/* ---------------- Tabs (Gamecast / Box Score / etc) ---------------- */
.gp-tabs{
  display:flex;background:#fff;border-bottom:1px solid var(--line);
  overflow-x:auto;scrollbar-width:none;
  box-shadow:var(--shadow-xs);
}
.gp-tabs::-webkit-scrollbar{display:none;}
.gp-tab{
  flex-shrink:0;padding:12px 15px;font-family:var(--font-display);font-size:13px;font-weight:600;color:#8a8d92;
  border-bottom:3px solid transparent;white-space:nowrap;background:none;border-left:none;border-right:none;border-top:none;cursor:pointer;
  letter-spacing:.1px;
}
.gp-tab.active{color:var(--ink);border-bottom-color:var(--espn-red);}
.tab-panel{display:none;}
.tab-panel.active{display:block;}

/* ---------------- Play by play ---------------- */
.pbp-quarters{
  display:flex;gap:8px;padding:11px 14px 3px;overflow-x:auto;
}
.pbp-qbtn{
  flex-shrink:0;font-size:11.5px;font-weight:700;color:var(--ink-soft);
  background:#eef0f2;border:none;border-radius:14px;padding:6px 14px;cursor:pointer;
}
.pbp-qbtn.active{background:var(--ink);color:#fff;}

.drive-card{
  margin:11px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.drive-head{
  display:flex;align-items:center;gap:9px;padding:10px 12px;
  background:#f7f7f8;border-bottom:1px solid var(--line);
}
.drive-head .sb-name{font-size:12.5px;}
.drive-head-text{font-size:11.5px;font-weight:700;color:var(--ink);}
.drive-head-sub{font-size:10.5px;color:#8a8d92;font-weight:600;margin-top:1px;}

.play{
  display:flex;gap:10px;padding:12px 13px;border-bottom:1px solid var(--line-soft);
}
.play:last-child{border-bottom:none;}
.play-down{
  flex-shrink:0;width:44px;font-size:10.5px;font-weight:800;color:#8a8d92;padding-top:1px;
}
.play-body{flex:1;}
.play-desc{font-size:12.8px;line-height:1.45;color:var(--ink);}
.play-desc b{font-weight:800;}
.play-clock{font-size:10.5px;color:#9a9ca0;margin-top:3px;font-weight:600;}
.play.big .play-desc{font-weight:700;}
.play.score{background:#fff5f2;}
.play.score .play-down{color:var(--espn-red);}
.tag{
  display:inline-block;font-size:9.5px;font-weight:800;color:#fff;background:var(--espn-red);
  border-radius:3px;padding:2px 6px;margin-left:6px;vertical-align:1px;letter-spacing:.3px;
}
.tag.neg{background:#5a5d63;}
.tag.first{background:var(--live-green);}

/* ---------------- Game leaders ---------------- */
.leaders-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:0;
}
.leaders-col{padding:11px 13px;}
.leaders-col:first-child{border-right:1px solid var(--line);}
.leader-cat{margin-bottom:15px;}
.leader-cat-label{font-size:10px;font-weight:800;color:#8a8d92;text-transform:uppercase;letter-spacing:.3px;margin-bottom:7px;}
.leader-person{display:flex;align-items:center;gap:8px;}
.leader-initials{
  width:30px;height:30px;border-radius:50%;background:#e9eaec;color:#666;
  display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;flex-shrink:0;
}
.leader-photo{
  width:30px;height:30px;border-radius:50%;object-fit:cover;flex-shrink:0;
  box-shadow:0 0 0 1px rgba(0,0,0,.06);
}
.leader-name{font-size:12px;font-weight:700;letter-spacing:-.1px;}
.leader-sub{font-size:10.5px;color:#8a8d92;}
.leader-stat{font-size:11px;color:var(--ink-soft);margin-top:2px;}

/* ---------------- Team stats bars ---------------- */
.stat-row{padding:11px 13px;}
.stat-row-labels{font-family:var(--font-display);display:flex;justify-content:space-between;font-size:13px;font-weight:600;margin-bottom:6px;}
.stat-row-name{font-size:10.5px;font-weight:700;color:#8a8d92;text-align:center;text-transform:uppercase;letter-spacing:.3px;margin-bottom:10px;}
.bar-track{display:flex;height:7px;border-radius:4px;overflow:hidden;background:#e9eaec;}
.bar-a{background:var(--love-1);height:100%;}
.bar-b{background:var(--logan-2);height:100%;}

/* ---------------- Probability chart ---------------- */
.prob-legend{display:flex;gap:16px;padding:2px 13px 8px;font-size:11px;font-weight:700;}
.prob-legend span{display:inline-flex;align-items:center;gap:5px;}
.prob-legend i{width:10px;height:10px;border-radius:50%;display:inline-block;}
.prob-chart{padding:0 13px 15px;}

/* ---------------- Article page ---------------- */
.article-hero{
  background:linear-gradient(135deg,var(--logan-1) 0%, var(--logan-1) 46%, var(--love-1) 54%, var(--love-1) 100%);
  padding:28px 16px;color:#fff;
}
.article-eyebrow{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;opacity:.92;}
.article-title{font-family:var(--font-display);font-size:22px;font-weight:600;line-height:1.26;margin-top:9px;letter-spacing:.1px;}
.article-meta-bar{
  padding:11px 16px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:10px;
}
.article-byline-name{font-size:12.5px;font-weight:800;}
.article-byline-role{font-size:10.5px;color:#8a8d92;}
.article-body{padding:17px 16px;font-size:15.5px;line-height:1.68;color:#1a1a1a;}
.article-body p{margin:0 0 17px;}
.article-body .dropcap:first-letter{
  font-family:var(--font-display);font-size:46px;font-weight:600;float:left;line-height:.8;margin:6px 7px 0 0;color:var(--espn-red);
}
.pullquote{
  border-left:4px solid var(--espn-red);
  margin:22px 0;padding:4px 0 4px 15px;
  font-size:17px;font-weight:700;font-style:italic;color:#222;
}
.debate-box{
  display:flex;gap:10px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px;margin:20px 0;
  box-shadow:var(--shadow-xs);
}
.debate-side{flex:1;}
.debate-side h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.3px;}
.debate-side.adam h4{color:var(--logan-2);}
.debate-side.logan h4{color:var(--love-1);}
.debate-side p{font-size:12.8px;line-height:1.5;margin:0;color:#333;}
.divider-v{width:1px;background:var(--line);}

/* ---------------- Game info / footer bits ---------------- */
.gameinfo-row{display:flex;justify-content:space-between;padding:10px 13px;font-size:12.5px;border-bottom:1px solid var(--line-soft);}
.gameinfo-row:last-child{border-bottom:none;}
.gameinfo-label{color:#8a8d92;}
.gameinfo-val{font-weight:700;}

.footer-note{
  text-align:center;font-size:10.5px;color:#9a9ca0;padding:18px 16px 4px;line-height:1.5;
}

/* ---------------- Standings ---------------- */
.love-banner{
  background:linear-gradient(135deg,var(--love-1),#3f0913);
  color:#fff;border-radius:var(--radius);margin:13px;padding:18px;
  box-shadow:var(--shadow-md);
}
.love-banner-title{font-size:11px;font-weight:800;text-transform:uppercase;opacity:.85;letter-spacing:.5px;}
.love-banner-record{font-family:var(--font-display);font-size:32px;font-weight:600;margin-top:5px;}
.love-banner-sub{font-size:11px;opacity:.85;margin-top:9px;line-height:1.65;}

.standings-table{width:100%;border-collapse:collapse;}
.standings-table th{
  text-align:right;font-size:10px;color:#8a8d92;font-weight:800;text-transform:uppercase;letter-spacing:.3px;
  padding:9px 10px;border-bottom:1px solid var(--line);background:#f7f7f8;
}
.standings-table th:first-child{text-align:left;}
.standings-table tr:nth-child(even) td{background:#fafafb;}
.standings-table td{
  padding:12px 10px;border-bottom:1px solid var(--line-soft);font-weight:700;font-size:13px;text-align:right;
}
.standings-table td:first-child{text-align:left;}
.standings-team-cell{display:flex;align-items:center;gap:9px;}
.standings-rank{width:16px;color:#b5b7bb;font-family:var(--font-display);font-weight:600;font-size:12px;flex-shrink:0;}
.standings-team-name{font-size:13px;font-weight:800;color:var(--ink);letter-spacing:-.1px;}
.standings-strk{font-size:10.5px;font-weight:700;}
.standings-strk.w{color:var(--live-green);}
.standings-strk.l{color:var(--espn-red);}
.standings-strk.none{color:#c2c4c8;}
.standings-note{font-size:10.5px;color:#8a8d92;font-weight:500;padding:11px 13px 4px;line-height:1.55;}

/* ---------------- Pregame ---------------- */
.pregame-status{color:#8a8d92;}
.pregame-vs{
  display:flex;align-items:center;justify-content:center;gap:24px;padding:28px 16px 20px;
  background:linear-gradient(180deg,#141417,var(--score-bg) 60%);
}
.pregame-team{display:flex;flex-direction:column;align-items:center;gap:9px;color:#fff;}
.pregame-team-name{font-family:var(--font-display);font-size:15px;font-weight:600;}
.pregame-team-record{font-size:10.5px;color:#9a9ca0;}
.pregame-at{color:#6f7176;font-size:12px;font-weight:800;padding-bottom:26px;}
.pregame-info{background:var(--score-bg);padding:0 16px 20px;text-align:center;}
.pregame-time{font-family:var(--font-display);color:#fff;font-size:16px;font-weight:600;letter-spacing:.2px;}
.pregame-sub{color:#9a9ca0;font-size:11px;margin-top:4px;}

/* ---------------- Team page ---------------- */
.team-hero{
  padding:30px 16px 24px;color:#fff;text-align:center;
}
.team-hero .logo{margin:0 auto 11px;}
.team-hero-name{font-family:var(--font-display);font-size:24px;font-weight:600;letter-spacing:.2px;}
.team-hero-record{font-size:13px;opacity:.92;margin-top:5px;font-weight:700;}
.team-hero-rank{font-size:11px;opacity:.78;margin-top:3px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;}

.roster-row{
  display:flex;align-items:center;gap:10px;padding:11px 13px;border-bottom:1px solid var(--line-soft);
}
.roster-row:last-child{border-bottom:none;}
.roster-pos{font-size:10px;font-weight:800;color:#8a8d92;width:30px;flex-shrink:0;}
.roster-name{font-weight:700;font-size:13px;flex:1;letter-spacing:-.1px;}
.roster-num{font-family:var(--font-display);font-size:12px;color:#8a8d92;font-weight:600;}

/* clickable team links reused inside score bugs / cards */
[data-team]{cursor:pointer;}
[data-team]:active{opacity:.6;}

/* ---------------- Spotlight popup ---------------- */
.modal-overlay{
  display:none;
  position:fixed;inset:0;
  background:rgba(6,6,8,.68);
  z-index:200;
  align-items:center;justify-content:center;
  padding:20px;
}
.modal-overlay.open{display:flex;}
.modal-card{
  background:#fff;border-radius:var(--radius);overflow:hidden;max-width:360px;width:100%;
  position:relative;box-shadow:var(--shadow-dark);
  animation:modalIn .25s ease;
}
@keyframes modalIn{from{transform:translateY(12px);opacity:0;}to{transform:translateY(0);opacity:1;}}
.modal-close{
  position:absolute;top:9px;right:9px;width:28px;height:28px;border-radius:50%;
  background:rgba(0,0,0,.55);color:#fff;border:none;font-size:18px;line-height:1;
  cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center;
}
.modal-img{width:100%;height:220px;object-fit:cover;object-position:top center;display:block;}
.modal-body{padding:17px;}
.modal-eyebrow{font-size:10.5px;font-weight:800;color:var(--espn-red);text-transform:uppercase;letter-spacing:.4px;}
.modal-title{font-family:var(--font-display);font-size:17px;font-weight:600;line-height:1.32;margin-top:7px;color:var(--ink);}
.modal-cta{
  display:inline-block;margin-top:13px;font-size:12.5px;font-weight:800;color:#fff;
  background:var(--espn-red);padding:10px 18px;border-radius:22px;
  box-shadow:0 4px 12px rgba(228,0,43,.3);
}
