@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,600;1,8..60,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

  :root{
    --hull-950:#0b1a2b;
    --hull-900:#0f2038;
    --hull-800:#16304d;
    --hull-700:#1e3d5f;
    --steel-400:#7fa1c9;
    --steel-300:#a9c2e0;
    --paper-50:#f2efe6;
    --paper-100:#e9e4d5;
    --ink-900:#141b22;
    --ink-700:#3a4652;
    --amber-500:#c98a2c;
    --amber-400:#e0a94a;
    --signal-600:#b23a2e;
    --signal-500:#d1503f;
    --line:rgba(20,27,34,0.14);
    --surface:var(--paper-50);
    --surface-raised:#ffffff;
    --text:var(--ink-900);
    --text-muted:var(--ink-700);
    --accent:var(--hull-800);
    --accent-ink:#ffffff;
    --shadow: 0 1px 2px rgba(11,26,43,0.06), 0 8px 24px rgba(11,26,43,0.08);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --surface:var(--hull-950);
      --surface-raised:var(--hull-900);
      --text:#eef2f6;
      --text-muted:#a9bacb;
      --accent:var(--steel-400);
      --accent-ink:#0b1a2b;
      --line:rgba(238,242,246,0.12);
      --shadow: 0 1px 2px rgba(0,0,0,0.4), 0 8px 28px rgba(0,0,0,0.5);
    }
  }
  :root[data-theme="dark"]{
    --surface:var(--hull-950);
    --surface-raised:var(--hull-900);
    --text:#eef2f6;
    --text-muted:#a9bacb;
    --accent:var(--steel-400);
    --accent-ink:#0b1a2b;
    --line:rgba(238,242,246,0.12);
    --shadow: 0 1px 2px rgba(0,0,0,0.4), 0 8px 28px rgba(0,0,0,0.5);
  }

  *{box-sizing:border-box;}
  body{
    margin:0;
    background:var(--surface);
    color:var(--text);
    font-family:'Source Serif 4', Georgia, 'Times New Roman', serif;
    line-height:1.55;
  }
  h1,h2,h3,h4,.display{
    font-family:'Oswald', 'Arial Narrow', sans-serif;
    text-transform:uppercase;
    letter-spacing:0.02em;
    text-wrap:balance;
    font-weight:600;
    margin:0;
  }
  .mono{ font-family:'IBM Plex Mono', ui-monospace, monospace; }
  a{ color:var(--accent); }
  img{ display:block; }

  /* ---------- top nav ---------- */
  .topbar{
    position:sticky; top:0; z-index:50;
    display:flex; align-items:center; gap:1.5rem;
    padding:0.7rem 1.5rem;
    background:var(--hull-950);
    color:#e7edf3;
    border-bottom:3px solid var(--amber-500);
    overflow-x:auto;
  }
  .topbar .crest{
    width:30px; height:30px; flex:none;
    border-radius:50%;
    border:2px solid var(--amber-400);
    display:flex; align-items:center; justify-content:center;
    font-family:'Oswald',sans-serif; font-weight:700; font-size:0.65rem;
    color:var(--amber-400);
  }
  .topbar .brand{ font-family:'Oswald',sans-serif; font-weight:600; letter-spacing:0.06em; font-size:0.95rem; white-space:nowrap;}
  .topbar nav{ display:flex; gap:1.1rem; margin-left:auto; white-space:nowrap;}
  .topbar nav a{
    color:#c7d4e0; text-decoration:none; font-family:'Oswald',sans-serif;
    font-size:0.8rem; letter-spacing:0.08em; text-transform:uppercase;
    padding:0.3rem 0.1rem; border-bottom:2px solid transparent;
  }
  .topbar nav a:hover{ border-color:var(--amber-500); color:#fff; }

  @media (max-width:640px){
    .topbar{
      flex-wrap:wrap;
      overflow-x:visible;
      padding:0.6rem 1rem;
      gap:0.5rem 0.7rem;
    }
    .topbar .brand{ font-size:0.8rem; }
    .topbar nav{
      margin-left:0;
      width:100%;
      gap:0.85rem;
      overflow-x:auto;
      padding-bottom:2px;
    }
    .topbar nav a{ font-size:0.72rem; padding:0.25rem 0.05rem; }
  }

  /* ---------- hero ---------- */
  .hero{
    padding:4.5rem 1.5rem 3.5rem;
    background:
      radial-gradient(ellipse 900px 500px at 15% -10%, rgba(127,161,201,0.20), transparent 60%),
      linear-gradient(180deg, var(--hull-950), var(--hull-900) 70%, var(--surface));
    color:#eef2f6;
    text-align:left;
  }
  .hero-inner{ max-width:920px; margin:0 auto; }
  .hero .eyebrow{
    font-family:'IBM Plex Mono',monospace; font-size:0.78rem; letter-spacing:0.12em;
    color:var(--amber-400); text-transform:uppercase; margin-bottom:0.9rem;
  }
  .hero h1{ font-size:clamp(2.3rem, 6vw, 4.1rem); color:#fff; line-height:1.03; }
  .hero h1 em{ font-style:normal; color:var(--amber-400); }
  .hero p.lede{
    font-family:'Source Serif 4',serif; font-size:1.15rem; color:#cfdaE6;
    max-width:60ch; margin-top:1.1rem;
  }
  .hero-stats{
    display:flex; flex-wrap:wrap; gap:0; margin-top:2.2rem;
    border-top:1px solid rgba(255,255,255,0.18);
  }
  .hero-stats .stat{
    padding:1rem 1.6rem 0 0; margin-right:1.6rem; min-width:100px;
    border-right:1px solid rgba(255,255,255,0.14);
  }
  .hero-stats .stat:last-child{ border-right:none; }
  .hero-stats .num{ font-family:'Oswald',sans-serif; font-size:2rem; font-weight:700; color:#fff; font-variant-numeric:tabular-nums;}
  .hero-stats .label{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--steel-300); }

  /* ---------- section shells ---------- */
  .section{ max-width:1040px; margin:0 auto; padding:3.5rem 1.5rem; }
  .section-head{ margin-bottom:2rem; max-width:70ch; }
  .section-head .kicker{
    font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.14em;
    text-transform:uppercase; color:var(--accent); margin-bottom:0.5rem; display:block;
  }
  .section-head h2{ font-size:clamp(1.6rem,3.4vw,2.3rem); }
  .section-head p{ color:var(--text-muted); margin-top:0.6rem; }

  /* ---------- season timeline ---------- */
  .season-block{
    border-top:1px dashed var(--line);
    padding:3rem 0;
    display:grid; grid-template-columns: 110px 1fr; gap:2rem;
  }
  .season-block:first-of-type{ border-top:none; padding-top:0; }
  .season-rail{ position:relative; }
  .season-rail .yr{
    font-family:'Oswald',sans-serif; font-weight:700; font-size:1.6rem;
    writing-mode:vertical-rl; text-orientation:mixed; color:var(--accent);
    position:sticky; top:5rem;
  }
  .season-body{ min-width:0; }
  .season-tag-row{ display:flex; flex-wrap:wrap; gap:0.5rem; margin-bottom:0.9rem; }
  .tag{
    font-family:'IBM Plex Mono',monospace; font-size:0.68rem; letter-spacing:0.04em;
    padding:0.22rem 0.55rem; border-radius:3px; text-transform:uppercase;
    background:var(--surface-raised); border:1px solid var(--line); color:var(--text-muted);
  }
  .tag.win{ color:#1c7c4a; border-color:#1c7c4a44; }
  .tag.loss{ color:var(--signal-600); border-color:var(--signal-600)44; }
  .tag.trophy{ color:var(--amber-500); border-color:var(--amber-500)55; background:color-mix(in srgb, var(--amber-500) 10%, var(--surface-raised)); }
  .season-body h3{ font-size:clamp(1.3rem,2.6vw,1.75rem); margin-bottom:0.7rem; }
  .season-body .division{ font-family:'IBM Plex Mono',monospace; font-size:0.85rem; color:var(--text-muted); margin-bottom:1rem;}
  .season-body .narrative{ max-width:66ch; }
  .season-body .narrative p{ margin:0 0 0.9rem; }
  .season-media{
    margin:1.4rem 0; display:grid; gap:0.9rem;
    grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  }
  figure.shot{ margin:0; background:var(--surface-raised); border:1px solid var(--line); border-radius:8px; overflow:hidden; box-shadow:var(--shadow); }
  figure.shot img{ width:100%; height:auto; display:block; }
  figure.shot figcaption{
    padding:0.6rem 0.75rem; font-family:'IBM Plex Mono',monospace; font-size:0.68rem;
    color:var(--text-muted); line-height:1.4; border-top:1px solid var(--line);
  }
  figure.shot figcaption .src{ color:var(--accent); }

  .stat-grid{
    display:grid; grid-template-columns:repeat(auto-fit,minmax(100px,1fr));
    gap:1px; background:var(--line); border:1px solid var(--line); border-radius:8px; overflow:hidden;
    margin:1.2rem 0;
  }
  .stat-grid .cell{ background:var(--surface-raised); padding:0.8rem 0.9rem; }
  .stat-grid .cell .v{ font-family:'Oswald',sans-serif; font-weight:700; font-size:1.35rem; font-variant-numeric:tabular-nums; }
  .stat-grid .cell .k{ font-family:'IBM Plex Mono',monospace; font-size:0.62rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--text-muted); }

  details.log{
    margin-top:1rem; border:1px solid var(--line); border-radius:8px; background:var(--surface-raised);
  }
  details.log summary{
    cursor:pointer; padding:0.7rem 1rem; font-family:'IBM Plex Mono',monospace; font-size:0.78rem;
    letter-spacing:0.03em; color:var(--accent); list-style:none; display:flex; align-items:center; gap:0.5rem;
  }
  details.log summary::before{ content:'▸'; transition:transform 0.15s; }
  details.log[open] summary::before{ transform:rotate(90deg); }
  details.log .log-body{ padding:0 1rem 1rem; border-top:1px solid var(--line); }
  .logline{ padding:0.55rem 0; border-bottom:1px dotted var(--line); font-size:0.92rem; }
  .logline:last-child{ border-bottom:none; }
  .logline .meta{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; color:var(--text-muted); display:block; margin-top:0.2rem; }

  /* ---------- players directory ---------- */
  .directory-controls{
    display:flex; gap:0.8rem; flex-wrap:wrap; align-items:center; margin-bottom:1.6rem;
    position:sticky; top:52px; z-index:20; background:var(--surface); padding:0.8rem 0;
  }
  .directory-controls input[type="search"]{
    flex:1; min-width:220px; font-family:'Source Serif 4',serif; font-size:1rem;
    padding:0.65rem 0.9rem; border-radius:7px; border:1px solid var(--line);
    background:var(--surface-raised); color:var(--text);
  }
  .directory-controls select{
    font-family:'IBM Plex Mono',monospace; font-size:0.82rem; padding:0.6rem 0.7rem;
    border-radius:7px; border:1px solid var(--line); background:var(--surface-raised); color:var(--text);
  }
  .directory-count{ font-family:'IBM Plex Mono',monospace; font-size:0.75rem; color:var(--text-muted); }

  .roster-grid{
    display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:0.7rem;
  }
  .roster-chip{
    text-align:left; cursor:pointer; border:1px solid var(--line); background:var(--surface-raised);
    border-radius:8px; padding:0.6rem 0.85rem; display:flex; flex-direction:row; align-items:center;
    justify-content:space-between; gap:0.7rem;
    font-family:inherit; color:var(--text); transition:border-color .12s, transform .12s;
  }
  .roster-chip:hover{ border-color:var(--accent); transform:translateY(-1px); }
  .roster-chip.active{ border-color:var(--amber-500); box-shadow:0 0 0 2px color-mix(in srgb, var(--amber-500) 30%, transparent); }
  .roster-chip .rc-info{ display:flex; flex-direction:column; gap:0.2rem; min-width:0; }
  .roster-chip .rc-name{ font-family:'Oswald',sans-serif; font-weight:600; font-size:0.95rem; text-transform:none; letter-spacing:0;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .roster-chip .rc-meta{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; color:var(--text-muted); }

  /* FC-style big colored OVR badge -- used on roster chips and squad cards */
  .ovr-badge{
    font-family:'Oswald',sans-serif; font-weight:700; font-size:1.7rem; line-height:1;
    font-variant-numeric:tabular-nums; flex:none;
  }
  .ovr-badge.ovr-unknown{ font-size:1.3rem; }

  /* Tier colors -- standalone so they apply to the roster/squad card badges above AND the
     bigger OVR number in the player profile header below. */
  .ovr-elite{ color:#16a34a; }
  .ovr-good{ color:#65a30d; }
  .ovr-average{ color:#d97706; }
  .ovr-poor{ color:#dc2626; }
  .ovr-unknown{ color:var(--text-muted); }

  .profile-panel{
    margin-top:1.6rem; border:1px solid var(--line); border-radius:12px; background:var(--surface-raised);
    padding:1.8rem; box-shadow:var(--shadow); display:none;
  }
  .profile-panel.show{ display:block; }
  .profile-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
  .profile-head h3{ font-size:1.6rem; }
  .profile-head .pos{ font-family:'IBM Plex Mono',monospace; color:var(--text-muted); font-size:0.85rem; margin-top:0.2rem;}
  .profile-ovr{ text-align:right; }
  .profile-ovr .big{ font-family:'Oswald',sans-serif; font-weight:700; font-size:2.4rem; line-height:1; }
  .profile-ovr .small{ font-family:'IBM Plex Mono',monospace; font-size:0.65rem; color:var(--text-muted); text-transform:uppercase; }

  .attr-bars{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:0.6rem 1.2rem; margin:1.2rem 0; }
  .attr-bar .lbl{ display:flex; justify-content:space-between; font-family:'IBM Plex Mono',monospace; font-size:0.7rem; text-transform:uppercase; color:var(--text-muted); margin-bottom:0.25rem;}
  .attr-bar .lbl b{ color:var(--text); font-size:0.78rem; }
  .attr-bar .track{ height:6px; border-radius:3px; background:var(--line); overflow:hidden; }
  .attr-bar .fill{ height:100%; background:linear-gradient(90deg, var(--steel-400), var(--accent)); border-radius:3px; }

  .profile-facts{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:0.9rem; margin:1.2rem 0; padding:1rem; background:var(--surface); border-radius:8px; }
  .profile-facts .f-k{ font-family:'IBM Plex Mono',monospace; font-size:0.62rem; text-transform:uppercase; color:var(--text-muted); }
  .profile-facts .f-v{ font-family:'Oswald',sans-serif; font-size:0.98rem; margin-top:0.15rem; }

  .profile-section{ margin-top:1.4rem; }
  .profile-section h4{
    font-size:0.78rem; letter-spacing:0.1em; color:var(--accent); margin-bottom:0.6rem;
    display:flex; align-items:center; gap:0.5rem;
  }
  .profile-section h4::after{ content:''; flex:1; height:1px; background:var(--line); }
  .empty-note{ color:var(--text-muted); font-size:0.88rem; font-style:italic;}

  /* Shared by every tab that lists screenshot-sourced events (Recorded Stats, Transfer Interest
     & Deals, Squad-sheet Appearances, In the News): season shown once on the left, its rows grouped
     on the right, instead of repeating the season on every single row. */
  .grouped-season{ display:grid; grid-template-columns:90px 1fr; gap:0.8rem; padding:0.7rem 0; border-bottom:1px dotted var(--line); }
  .grouped-season:last-child{ border-bottom:none; }
  .grouped-season-label{ font-family:'IBM Plex Mono',monospace; font-size:0.7rem; color:var(--text-muted); padding-top:0.2rem; }
  .grouped-rows{ display:flex; flex-direction:column; gap:0.55rem; }
  .grouped-row{ font-size:0.9rem; padding-bottom:0.4rem; border-bottom:1px dotted var(--line); }
  .grouped-row:last-child{ border-bottom:none; padding-bottom:0; }
  .grouped-row .row-detail{ color:var(--text-muted); font-size:0.85rem; display:block; margin-top:0.2rem; }
  .grouped-row .te-src{ font-family:'IBM Plex Mono',monospace; font-size:0.64rem; color:var(--accent); display:block; margin-top:0.2rem;}
  /* Recorded Stats-specific: competition name + figures, and a set-apart TOTAL row */
  .grouped-row .comp-name{ font-family:'Oswald',sans-serif; font-weight:600; font-size:0.85rem; margin-right:0.6rem; }
  .grouped-row .comp-figures{ color:var(--text-muted); }
  .grouped-row.total{ margin-top:0.1rem; padding-top:0.5rem; border-top:1px solid var(--line); border-bottom:none; }
  .grouped-row.total .comp-name{ color:var(--accent); }

  /* trophies */
  .trophy-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1rem; }
  .trophy-card{
    border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface-raised); box-shadow:var(--shadow);
  }
  .trophy-card .tc-img{ aspect-ratio:16/10; overflow:hidden; background:var(--hull-900);}
  .trophy-card .tc-img img{ width:100%; height:100%; object-fit:cover; }
  .trophy-card .tc-body{ padding:0.9rem 1rem; }
  .trophy-card .tc-season{ font-family:'IBM Plex Mono',monospace; font-size:0.66rem; color:var(--amber-500); text-transform:uppercase; }
  .trophy-card h4{ font-size:1rem; margin-top:0.3rem; }
  .trophy-card p{ font-size:0.85rem; color:var(--text-muted); margin-top:0.4rem; }

  footer{
    padding:3rem 1.5rem 4rem; text-align:center; border-top:1px solid var(--line); margin-top:2rem;
  }
  footer p{ font-family:'IBM Plex Mono',monospace; font-size:0.75rem; color:var(--text-muted); max-width:60ch; margin:0.4rem auto; }

  @media (max-width:640px){
    .season-block{ grid-template-columns:1fr; }
    .season-rail .yr{ writing-mode:horizontal-tb; position:static; }
  }

  /* ---------- nav active state ---------- */
  .topbar nav a.active{ color:#fff; border-color:var(--amber-500); }

  /* ---------- page header (non-home pages) ---------- */
  .page-header{
    padding:3rem 1.5rem 2.5rem;
    background:
      radial-gradient(ellipse 900px 500px at 15% -10%, rgba(127,161,201,0.20), transparent 60%),
      linear-gradient(180deg, var(--hull-950), var(--hull-900) 70%, var(--surface));
    color:#eef2f6;
  }
  .page-header-inner{ max-width:1040px; margin:0 auto; }
  .page-header .eyebrow{
    font-family:'IBM Plex Mono',monospace; font-size:0.78rem; letter-spacing:0.12em;
    color:var(--amber-400); text-transform:uppercase; margin-bottom:0.7rem;
  }
  .page-header h1{ font-size:clamp(1.9rem, 4.5vw, 2.9rem); color:#fff; }
  .page-header p{ font-family:'Source Serif 4',serif; color:#cfdae6; max-width:65ch; margin-top:0.8rem; }

  /* ---------- CTA buttons ---------- */
  .cta-row{ display:flex; flex-wrap:wrap; gap:0.8rem; margin-top:2.2rem; }
  .btn{
    display:inline-flex; align-items:center; gap:0.5rem;
    font-family:'Oswald',sans-serif; font-weight:600; font-size:0.85rem;
    letter-spacing:0.05em; text-transform:uppercase; text-decoration:none;
    padding:0.8rem 1.3rem; border-radius:8px; border:1px solid transparent;
    transition:transform .12s, border-color .12s, background .12s;
    cursor:pointer;
  }
  .btn:hover{ transform:translateY(-1px); }
  .btn.primary{ background:var(--amber-500); color:#1a1204; }
  .btn.primary:hover{ background:var(--amber-400); }
  .btn.secondary{ background:rgba(255,255,255,0.06); color:#eef2f6; border-color:rgba(255,255,255,0.28); }
  .btn.secondary:hover{ border-color:var(--amber-400); color:#fff; }
  .btn.ghost{ background:var(--surface-raised); color:var(--text); border-color:var(--line); }
  .btn.ghost:hover{ border-color:var(--accent); color:var(--accent); }
  .btn .btn-sub{ font-family:'IBM Plex Mono',monospace; font-weight:400; font-size:0.68rem; opacity:0.75; text-transform:none; letter-spacing:0; }

  #back-to-roster{ margin-bottom:1.4rem; }

  /* colored hero stat highlight (wins) */
  .hero-stats .stat.highlight .num{ color:var(--amber-400); }

  /* ---------- lightbox (click-to-enlarge images) ---------- */
  .clickable-img{ cursor:zoom-in; }
  .lightbox-overlay{
    position:fixed; inset:0; z-index:200; background:rgba(11,26,43,0.92);
    display:flex; align-items:center; justify-content:center; padding:2rem;
  }
  .lightbox-overlay[hidden]{ display:none; }
  .lightbox-overlay img{
    max-width:min(92vw, 1100px); max-height:86vh; width:auto; height:auto;
    border-radius:6px; box-shadow:0 20px 60px rgba(0,0,0,0.5);
  }
  .lightbox-overlay figcaption{
    position:absolute; bottom:2rem; left:0; right:0; text-align:center;
    font-family:'IBM Plex Mono',monospace; font-size:0.8rem; color:#e7edf3;
  }
  .lightbox-close{
    position:absolute; top:1.2rem; right:1.5rem; background:none; border:none;
    color:#eef2f6; font-size:2rem; line-height:1; cursor:pointer; font-family:'Oswald',sans-serif;
  }

  /* ---------- tabs (player profile) ---------- */
  .tabs{ display:flex; flex-wrap:wrap; gap:0.4rem; border-bottom:1px solid var(--line); margin:1.4rem 0 0; }
  .tab-btn{
    font-family:'IBM Plex Mono',monospace; font-size:0.75rem; letter-spacing:0.04em; text-transform:uppercase;
    padding:0.65rem 0.9rem; background:none; border:none; border-bottom:2px solid transparent;
    color:var(--text-muted); cursor:pointer; margin-bottom:-1px;
  }
  .tab-btn:hover{ color:var(--text); }
  .tab-btn.active{ color:var(--accent); border-bottom-color:var(--accent); }
  .tab-panel{ padding-top:1.2rem; }
  .tab-panel[hidden]{ display:none; }
  .profile-bio{ font-size:1rem; max-width:70ch; margin:0.8rem 0 0.4rem; color:var(--text); }

  /* ---------- squads page ---------- */
  .squad-season-tabs{ display:flex; flex-wrap:wrap; gap:0.5rem; margin-bottom:1.8rem; }
  .squad-season-tabs button{
    font-family:'Oswald',sans-serif; font-weight:600; font-size:0.85rem;
    padding:0.6rem 1.1rem; border-radius:20px; border:1px solid var(--line);
    background:var(--surface-raised); color:var(--text-muted); cursor:pointer;
  }
  .squad-season-tabs button.active{ background:var(--accent); color:var(--accent-ink); border-color:var(--accent); }
  .squad-source{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; color:var(--text-muted); margin-bottom:1.8rem; }
  .squad-role-group{ margin-bottom:2rem; }
  .squad-role-title{
    font-family:'IBM Plex Mono',monospace; font-size:0.75rem; letter-spacing:0.1em; text-transform:uppercase;
    color:var(--accent); display:flex; align-items:center; gap:0.6rem; margin-bottom:0.8rem;
  }
  .squad-role-title::after{ content:''; flex:1; height:1px; background:var(--line); }
  .squad-player-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:0.7rem; }
  .squad-player-card{
    display:flex; flex-direction:row; align-items:center; justify-content:space-between; gap:0.7rem;
    text-align:left; text-decoration:none; cursor:pointer;
    border:1px solid var(--line); background:var(--surface-raised); border-radius:8px;
    padding:0.6rem 0.85rem; color:var(--text); font-family:inherit;
    transition:border-color .12s, transform .12s;
  }
  .squad-player-card:hover{ border-color:var(--accent); transform:translateY(-1px); }
  .squad-player-card .sp-info{ display:flex; flex-direction:column; gap:0.2rem; min-width:0; }
  .squad-player-card .sp-name{ font-family:'Oswald',sans-serif; font-weight:600; font-size:0.92rem;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .squad-player-card .sp-meta{ font-family:'IBM Plex Mono',monospace; font-size:0.66rem; color:var(--text-muted); }

  /* ---------- awards (individual/squad honours) ---------- */
  .awards-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1rem; margin-top:1rem; }
  .award-card{
    border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface-raised); box-shadow:var(--shadow);
  }
  .award-card .tc-img{ aspect-ratio:16/10; overflow:hidden; background:var(--hull-900); }
  .award-card .tc-img img{ width:100%; height:100%; object-fit:cover; }
  .award-card .tc-body{ padding:0.9rem 1rem; }
  .award-card .tc-season{ font-family:'IBM Plex Mono',monospace; font-size:0.66rem; color:var(--steel-400); text-transform:uppercase; }
  .award-card h4{ font-size:1rem; margin-top:0.3rem; }
  .award-card p{ font-size:0.85rem; color:var(--text-muted); margin-top:0.4rem; }

  .trophy-gallery{ display:flex; gap:0.5rem; padding:0.6rem 1rem 0; flex-wrap:wrap; }
  .trophy-gallery img{ width:56px; height:56px; object-fit:cover; border-radius:4px; border:1px solid var(--line); }

  /* ---------- landing page section teasers ---------- */
  .teaser-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1.2rem; }
  .teaser-card{
    display:block; text-decoration:none; color:var(--text);
    border:1px solid var(--line); border-radius:12px; background:var(--surface-raised);
    padding:1.4rem; box-shadow:var(--shadow); transition:transform .12s, border-color .12s;
  }
  .teaser-card:hover{ transform:translateY(-2px); border-color:var(--accent); }
  .teaser-card .kicker{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--accent); }
  .teaser-card h3{ font-size:1.25rem; margin-top:0.4rem; }
  .teaser-card p{ color:var(--text-muted); font-size:0.9rem; margin-top:0.5rem; }
