*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
:root {
  --bg: #080b12;
  --surface: #0e1420;
  --card: #131a28;
  --card-hover: #192030;
  --border: #1e2d42;
  --border-bright: #2a3f5c;
  --gold: #e8a020;
  --accent-rgb: 232,160,32;
  --on-accent: #080a0f;
  --gold-dim: #b07820;
  --green: #22c55e;
  --red: #ef4444;
  --muted: #3a4d6a;
  --text: #eef2f8;
  --subtext: #8a9ab8;
  --subtext2: #5e6e8a;
  --live: #ff4136;
}
[data-theme="light"] {
  --bg: #f0f2f5;
  --surface: #ffffff;
  --card: #ffffff;
  --card-hover: #f5f7fa;
  --border: #dde1ea;
  --border-bright: #c4ccda;
  --gold: #b87010;
  --gold-dim: #d4920a;
  --muted: #b0b8cc;
  --text: #1a1f2e;
  --subtext: #5a6480;
  --subtext2: #8892aa;
}
body { background:var(--bg); color:var(--text); font-family:'DM Sans',sans-serif; font-size:15px; line-height:1.5; min-height:100vh; }

/* HEADER */
.site-header { background:var(--surface); border-bottom:1px solid var(--border); padding:0 1.5rem; display:flex; align-items:center; justify-content:space-between; height:56px; position:sticky; top:0; z-index:100; }
.brand { display:flex; align-items:center; gap:.75rem; text-decoration:none; }
.brand-mark { width:32px; height:32px; background:var(--gold); border-radius:4px; display:flex; align-items:center; justify-content:center; font-family:'Bebas Neue',sans-serif; font-size:18px; color:var(--on-accent); letter-spacing:.05em; }
.brand-name { font-family:'Bebas Neue',sans-serif; font-size:20px; letter-spacing:.12em; color:var(--text); }
.brand-name span { color:var(--gold); }
.header-meta { display:flex; align-items:center; gap:1rem; }
.live-badge { display:flex; align-items:center; gap:.4rem; font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext); letter-spacing:.05em; }
.live-dot { width:7px; height:7px; border-radius:50%; background:var(--green); animation:pulse 2s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.3} }
.stale-banner { display:none; background:rgba(239,68,68,.12); border-bottom:1px solid rgba(239,68,68,.4); color:var(--text,#e6e9ef); font-size:12px; padding:.4rem 1rem; text-align:center; }
.stale-banner.show { display:block; }
.last-updated { font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext2); }
.theme-toggle { background:none; border:1px solid var(--border); border-radius:6px; width:30px; height:30px; cursor:pointer; font-size:16px; display:flex; align-items:center; justify-content:center; padding:0; transition:border-color .15s; color:inherit; }
.casd-link { background:none; border:1px solid var(--border); border-radius:6px; padding:0 10px; height:30px; font-size:12px; letter-spacing:.02em; display:flex; align-items:center; gap:5px; color:inherit; text-decoration:none; transition:border-color .15s; }
.casd-link:hover { border-color:var(--border-bright,var(--border)); }
@media (hover:hover) { .theme-toggle:hover { border-color:var(--gold-dim); } }
.theme-toggle .rocker { transition:transform .15s; }
[data-theme="light"] .theme-toggle .rocker { transform:translateY(-8px); }
.refresh-btn { background:none; border:1px solid var(--border); border-radius:6px; width:30px; height:30px; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; transition:border-color .15s; color:inherit; }
@media (hover:hover) { .refresh-btn:hover { border-color:var(--gold-dim); color:var(--gold); } }
.refresh-btn svg { transition:transform .5s ease; }
.refresh-btn.spinning svg { animation:refresh-spin .7s linear infinite; }
.refresh-btn:disabled { opacity:.5; cursor:default; }
@keyframes refresh-spin { to { transform:rotate(360deg); } }


/* ── TEAM THEMES (data-team on <html>; default = Ambiance gold) ── */
html[data-team="psu"] {
  --bg:#040b1c; --surface:#081530; --card:#0c1d42; --card-hover:#112756; --border:#1a3263; --border-bright:#2a4a8c;
  --gold:#96BEE6; --gold-dim:#5f8fc4; --accent-rgb:150,190,230; --on-accent:#041E42; --glow2:30,64,124;
  --text:#f4f8ff; --subtext:#9db4d8; --subtext2:#6a85b3; }
html[data-team="pitt"] {
  --bg:#050919; --surface:#0a1130; --card:#101a42; --card-hover:#16235a; --border:#223070; --border-bright:#34479a;
  --gold:#FFB81C; --gold-dim:#c98f10; --accent-rgb:255,184,28; --on-accent:#0a1130; --glow2:0,53,148;
  --text:#f5f7ff; --subtext:#a3b0dd; --subtext2:#6f7fb8; }
html[data-team="sru"] {
  --bg:#030d09; --surface:#06180f; --card:#0a2217; --card-hover:#0f2f20; --border:#14402d; --border-bright:#1f6a4a;
  --gold:#1fd1a0; --gold-dim:#14966f; --accent-rgb:31,209,160; --on-accent:#03140d; --glow2:0,103,79;
  --text:#f2fff9; --subtext:#93c9b4; --subtext2:#5f9a83; }
html[data-team="mu"] {
  --bg:#050505; --surface:#0d0d0d; --card:#151515; --card-hover:#1e1e1e; --border:#2e2a14; --border-bright:#4d4318;
  --gold:#FFC72C; --gold-dim:#b8901a; --accent-rgb:255,199,44; --on-accent:#080808; --glow2:255,199,44;
  --text:#fffaf0; --subtext:#b8b09a; --subtext2:#7d765f; }
/* light variants: keep the page bright, tint it and darken the accent */
html[data-theme="light"][data-team="psu"]  { --surface:#fff; --card:#fff; --card-hover:#f5f7fa; --text:#1a1f2e; --subtext:#5a6480; --subtext2:#8892aa; --muted:#b0b8cc; --bg:#e8eefa; --border:#c3d0ea; --border-bright:#9db4dd; --gold:#1E407C; --gold-dim:#2f5fb0; --accent-rgb:30,64,124; --on-accent:#fff; --glow2:150,190,230; }
html[data-theme="light"][data-team="pitt"] { --surface:#fff; --card:#fff; --card-hover:#f5f7fa; --text:#1a1f2e; --subtext:#5a6480; --subtext2:#8892aa; --muted:#b0b8cc; --bg:#eaedf8; --border:#c6cdea; --border-bright:#9aa6d6; --gold:#003594; --gold-dim:#1f55c0; --accent-rgb:0,53,148; --on-accent:#FFB81C; --glow2:255,184,28; }
html[data-theme="light"][data-team="sru"]  { --surface:#fff; --card:#fff; --card-hover:#f5f7fa; --text:#1a1f2e; --subtext:#5a6480; --subtext2:#8892aa; --muted:#b0b8cc; --bg:#e7f4ee; --border:#bfe0d2; --border-bright:#8cc9b0; --gold:#00674F; --gold-dim:#1a8c6f; --accent-rgb:0,103,79; --on-accent:#fff; --glow2:31,209,160; }
html[data-theme="light"][data-team="mu"]   { --surface:#fff; --card:#fff; --card-hover:#f5f7fa; --text:#1a1f2e; --subtext:#5a6480; --subtext2:#8892aa; --muted:#b0b8cc; --bg:#f6f1e2; --border:#e3d9b4; --border-bright:#cdbd7f; --gold:#8a6500; --gold-dim:#b8901a; --accent-rgb:138,101,0; --on-accent:#fff; --glow2:255,199,44; }
/* Penn State WHITEOUT: always white, regardless of the light switch (data-team="whiteout") */
html[data-team="whiteout"] {
  --bg:#f4f6fa; --surface:#ffffff; --card:#ffffff; --card-hover:#eef2f9; --border:#d5deee; --border-bright:#a9bbdc; --muted:#b0b8cc;
  --gold:#1E407C; --gold-dim:#2f5fb0; --accent-rgb:30,64,124; --on-accent:#ffffff; --glow2:150,190,230;
  --text:#0b1a3a; --subtext:#41557f; --subtext2:#6a7ca3; --wm:"WHITE OUT"; --pat-o:1;
  --pat:radial-gradient(circle,rgba(30,64,124,.10) 1.6px,transparent 2.1px) 0 0/20px 20px, radial-gradient(circle at 50% -10%,rgba(255,255,255,.9),transparent 45%);
  --tb-a:#ffffff; --tb-b:#96BEE6; color-scheme:light; }
html[data-team="whiteout"] body { background:
    radial-gradient(900px 500px at 8% -10%, rgba(150,190,230,.35), transparent 62%) fixed,
    radial-gradient(800px 480px at 100% 0%, rgba(30,64,124,.10), transparent 58%) fixed,
    var(--bg); }
html[data-team="whiteout"] .tb { background:linear-gradient(100deg,#1E407C,#2f5fb0 60%,rgba(150,190,230,.6)), #1E407C; }
html[data-team="whiteout"] .tb-kick { color:#fff; }
html[data-team="whiteout"] .tb-sub { color:rgba(255,255,255,.88); }
html[data-team="whiteout"] .tb-logo { box-shadow:0 0 0 3px #fff, 0 0 26px rgba(255,255,255,.7); }
html[data-team="whiteout"]::after { -webkit-text-stroke-color:rgba(30,64,124,.10); }
html[data-team="whiteout"] .score-card, html[data-team="whiteout"] .team-card { box-shadow:0 1px 3px rgba(11,26,58,.08); }
html[data-team="whiteout"] .tt-menu { box-shadow:0 14px 40px rgba(11,26,58,.2); }
html[data-team="whiteout"] .tt-sw { border-color:rgba(11,26,58,.3); }
/* the flash: only when a team theme is on */
html[data-team] body { background:
    radial-gradient(900px 500px at 8% -10%, rgba(var(--glow2),.6), transparent 62%) fixed,
    radial-gradient(800px 480px at 100% 0%, rgba(var(--accent-rgb),.28), transparent 58%) fixed,
    radial-gradient(900px 500px at 50% 115%, rgba(var(--glow2),.35), transparent 60%) fixed,
    var(--bg); }
html[data-team] .site-header { border-bottom:0; box-shadow:0 8px 30px -12px rgba(var(--accent-rgb),.35); backdrop-filter:blur(10px); }
html[data-team] .site-header::after { content:''; position:absolute; left:0; right:0; bottom:0; height:2px;
  background:linear-gradient(90deg,transparent,rgba(var(--glow2),1),var(--gold),rgba(var(--glow2),1),transparent);
  background-size:200% 100%; animation:team-sweep 5s linear infinite; }
@keyframes team-sweep { to { background-position:-200% 0; } }
html[data-team] .brand-mark { box-shadow:0 0 16px rgba(var(--accent-rgb),.55); }
html[data-team] .brand-name span { text-shadow:0 0 14px rgba(var(--accent-rgb),.7); }
html[data-team] .score-card, html[data-team] .team-card, html[data-team] .p4-row { transition:transform .18s, box-shadow .18s, border-color .18s; }
@media (hover:hover) {
  html[data-team] .score-card:hover, html[data-team] .team-card:hover { transform:translateY(-2px); border-color:var(--gold-dim);
    box-shadow:0 10px 28px -10px rgba(var(--accent-rgb),.45), 0 0 0 1px rgba(var(--accent-rgb),.25); }
}
html[data-team] .score-card, html[data-team] .team-card { background:linear-gradient(155deg, rgba(var(--accent-rgb),.12), transparent 45%), var(--card); border-color:rgba(var(--accent-rgb),.28); }
html[data-team] .team-card-header { background:linear-gradient(90deg, rgba(var(--accent-rgb),.16), transparent 70%); }
html[data-team] .highlights-panel { box-shadow:0 0 22px -8px rgba(var(--accent-rgb),.5); }
html[data-team] .week-label, html[data-team] .team-card-header { text-shadow:0 0 12px rgba(var(--accent-rgb),.35); }
@media (prefers-reduced-motion:reduce) { html[data-team] .site-header::after { animation:none; } html[data-team] .score-card, html[data-team] .team-card { transition:none; } }


/* ── Team banner + backgrounds ── */
.tb { display:none; }
html[data-team] .tb { display:block; position:relative; overflow:hidden; height:132px; --tb-h:132px;
  background:linear-gradient(100deg, rgba(var(--glow2),.9), rgba(var(--glow2),.25) 55%, transparent 90%), var(--surface);
  border-bottom:1px solid rgba(var(--accent-rgb),.35); clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 28px) 100%,0 100%); }
.tb-art { position:absolute; right:0; top:0; height:100%; width:min(62%,720px);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 35%); mask-image:linear-gradient(90deg,transparent,#000 35%); }
.tb-txt { position:relative; z-index:2; height:100%; max-width:1280px; margin:0 auto; padding:0 1.5rem; display:flex; align-items:center; gap:18px; }
.tb-col { display:flex; flex-direction:column; justify-content:center; min-width:0; }
.tb-logo { height:88px; width:88px; flex-shrink:0; display:grid; place-items:center; padding:10px; background:#fff; border-radius:50%;
  box-shadow:0 0 0 3px rgba(var(--accent-rgb),.9), 0 0 26px rgba(var(--accent-rgb),.55); }
.tb-logo img { width:100%; height:100%; object-fit:contain; display:block; }
.tb-logo.dark { background:#000; overflow:hidden; }
.tb-logo.green { background:#00674F; padding:14px; box-shadow:0 0 0 3px #fff, 0 0 26px rgba(var(--accent-rgb),.6); }
.tb-kick { font:500 11px 'DM Mono',monospace; letter-spacing:.32em; text-transform:uppercase; color:var(--gold); }
.tb-word { font-family:'Bebas Neue',sans-serif; font-size:clamp(46px,9vw,84px); line-height:.92; letter-spacing:.04em; text-transform:uppercase;
  background:linear-gradient(100deg,var(--tb-a) 20%,var(--tb-b) 45%,var(--tb-a) 70%); background-size:250% 100%;
  -webkit-background-clip:text; background-clip:text; color:transparent; animation:tb-shine 6s ease-in-out infinite;
  filter:drop-shadow(0 2px 14px rgba(var(--accent-rgb),.35)); }
@keyframes tb-shine { 0%,100% { background-position:100% 0; } 50% { background-position:0 0; } }
.tb-word.swap { cursor:pointer; user-select:none; -webkit-tap-highlight-color:transparent; }
.tb-word.swap::after { content:'⇄'; font:400 14px 'DM Mono',monospace; margin-left:12px; vertical-align:middle; color:var(--gold); -webkit-text-fill-color:var(--gold); opacity:.55; letter-spacing:0; }
.tb-sub { font:600 12px 'DM Sans',sans-serif; letter-spacing:.2em; text-transform:uppercase; color:var(--subtext); margin-top:2px; }
.tb-art .pulse { animation:tb-bar 2.4s ease-in-out infinite; transform-box:fill-box; transform-origin:bottom; }
.tb-art .drift { animation:tb-drift 5s linear infinite; }
@keyframes tb-bar { 0%,100% { transform:scaleY(1); } 50% { transform:scaleY(.55); } }
@keyframes tb-drift { to { transform:translateX(-60px); } }
@media (prefers-reduced-motion:reduce) { .tb-word, .tb-art .pulse, .tb-art .drift { animation:none; } }
@media (max-width:560px) {
  html[data-team] .tb { height:auto; min-height:112px; }
  .tb-art { width:30%; opacity:.4; -webkit-mask-image:linear-gradient(90deg,transparent,#000 60%); mask-image:linear-gradient(90deg,transparent,#000 60%); }
  .tb-txt { padding:14px 14px; }
  .tb-kick { font-size:9.5px; letter-spacing:.14em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .tb-word { font-size:clamp(34px,11vw,48px); }
  .tb-sub { font-size:10px; letter-spacing:.1em; } .tb-logo, .tb-logo.green { height:62px; width:62px; padding:7px; } .tb-txt { gap:12px; } }
html[data-team="psu"]  { --tb-a:#dfe7f3; --tb-b:#7ea6dc; --wm:"WE ARE"; }
html[data-team="pitt"] { --tb-a:#FFB81C; --tb-b:#fff1c4; --wm:"H2P"; }
html[data-team="sru"]  { --tb-a:#ffffff; --tb-b:#1fd1a0; --wm:""; }
html[data-team="mu"]   { --tb-a:#FFC72C; --tb-b:#fff2c2; --wm:"MARAUDERS"; }
html[data-theme="light"][data-team="psu"]  { --tb-a:#fff; --tb-b:#96BEE6; }
html[data-theme="light"][data-team="pitt"] { --tb-a:#FFB81C; --tb-b:#fff; }
html[data-theme="light"][data-team="sru"]  { --tb-a:#fff; --tb-b:#9af0d4; }
html[data-theme="light"][data-team="mu"]   { --tb-a:#FFC72C; --tb-b:#fff; }
html[data-team="mu"] .tb { background:linear-gradient(100deg,rgba(255,199,44,.20),rgba(255,199,44,.04) 60%,transparent), #0a0a0a; }
html[data-theme="light"][data-team] .tb { background:linear-gradient(100deg, rgba(var(--accent-rgb),1), rgba(var(--glow2),.55) 60%, rgba(var(--glow2),.1)), var(--surface); }
html[data-theme="light"][data-team="mu"] .tb { background:linear-gradient(100deg,rgba(255,199,44,.28),rgba(255,199,44,.06) 60%,transparent), #111; }
html[data-theme="light"][data-team] .tb-sub { color:rgba(255,255,255,.85); }
html[data-theme="light"][data-team] .tb-kick { color:#fff; }
html[data-theme="light"][data-team="mu"] .tb-sub { color:var(--subtext); }
html[data-theme="light"][data-team="mu"] .tb-kick { color:var(--gold-dim); }
/* patterned page backgrounds + giant outlined watermark */
html[data-team]::before { content:''; position:fixed; inset:0; z-index:-1; pointer-events:none; opacity:var(--pat-o,1); background:var(--pat); }
html[data-team]::after { content:var(--wm); position:fixed; right:-1vw; bottom:-3vw; z-index:-1; pointer-events:none; white-space:nowrap;
  font-family:'Bebas Neue',sans-serif; font-size:clamp(150px,30vw,460px); line-height:.8; letter-spacing:.02em; color:transparent;
  -webkit-text-stroke:2px rgba(var(--accent-rgb),.13); }
html[data-team="psu"]  { --pat:repeating-linear-gradient(90deg,rgba(255,255,255,.045) 0 1px,transparent 1px 44px), radial-gradient(circle at 50% -10%,rgba(255,255,255,.07),transparent 40%); }
html[data-team="pitt"] { --pat:repeating-linear-gradient(115deg,rgba(255,184,28,.07) 0 16px,transparent 16px 72px); }
html[data-team="sru"]  { --pat:url("/football/img/sru-wallpaper-tile.svg"), repeating-linear-gradient(172deg,rgba(31,209,160,.05) 0 2px,transparent 2px 38px); --pat-o:.075; }
html[data-team="mu"]   { --pat:repeating-linear-gradient(135deg,rgba(255,199,44,.06) 0 2px,transparent 2px 34px), radial-gradient(circle at 100% 100%,rgba(255,199,44,.12),transparent 45%); }
html[data-theme="light"][data-team] { --pat-o:.55; }
html[data-theme="light"][data-team="sru"] { --pat-o:.3; }
html[data-theme="light"][data-team]::after { -webkit-text-stroke-color:rgba(var(--accent-rgb),.12); }

/* theme picker */
.tt-wrap { position:relative; }
.tt-btn { background:none; border:1px solid var(--border); border-radius:6px; width:30px; height:30px; cursor:pointer; font-size:15px; display:flex; align-items:center; justify-content:center; padding:0; color:inherit; transition:border-color .15s; }
@media (hover:hover) { .tt-btn:hover { border-color:var(--gold-dim); } }
.tt-menu { display:none; position:absolute; right:0; top:38px; z-index:200; min-width:176px; padding:6px; background:var(--card); border:1px solid var(--border-bright); border-radius:10px; box-shadow:0 14px 40px rgba(0,0,0,.45); }
.tt-menu.open { display:block; }
.tt-opt { display:flex; align-items:center; gap:10px; width:100%; background:none; border:0; border-radius:7px; padding:8px 10px; cursor:pointer; color:var(--text); font:600 13px 'DM Sans',sans-serif; text-align:left; }
.tt-opt:hover { background:var(--card-hover); }
.tt-opt.active { box-shadow:inset 0 0 0 1px var(--gold); }
.tt-sw { width:22px; height:22px; border-radius:50%; flex-shrink:0; border:1px solid rgba(255,255,255,.25); }


/* ── header buttons: one shared look ── */
.theme-toggle, .refresh-btn, .tt-btn, .casd-link { height:34px; border-radius:10px; border:1px solid rgba(var(--accent-rgb),.28);
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.015)), var(--card); color:var(--text);
  transition:transform .15s, border-color .15s, box-shadow .15s, color .15s; }
.theme-toggle, .refresh-btn, .tt-btn { width:34px; }
.theme-toggle svg, .refresh-btn svg, .tt-btn svg { color:var(--gold); }
.casd-link { width:34px; padding:0; justify-content:center; }
.cl-logo { width:24px; height:24px; border-radius:50%; background:#fff; display:grid; place-items:center; overflow:hidden; box-shadow:0 0 0 1.5px rgba(var(--accent-rgb),.6); }
.cl-logo img { width:78%; height:78%; object-fit:contain; }
@media (hover:hover) {
  .theme-toggle:hover, .refresh-btn:hover, .tt-btn:hover, .casd-link:hover { transform:translateY(-1px); border-color:var(--gold); color:var(--gold);
    box-shadow:0 6px 18px -8px rgba(var(--accent-rgb),.75), 0 0 0 1px rgba(var(--accent-rgb),.22); }
}
.live-badge { padding:5px 11px; border-radius:999px; background:rgba(34,197,94,.1); border:1px solid rgba(34,197,94,.3); color:var(--green); font-weight:500; }
.header-meta { gap:.6rem; }
@media (max-width:560px) {
  .live-badge { background:none; border:0; padding:0; }
  .site-header { gap:.5rem; }
  .brand { flex:none; }
  .header-meta { gap:.4rem; min-width:0; }
  .last-updated { display:none; }
  .live-badge { margin-right:.25rem; }
}
@media (max-width:340px) { .live-badge { display:none; } }

/* ── week selector ── */
.week-bar { padding:.7rem 1.5rem; gap:.7rem; background:linear-gradient(180deg,rgba(var(--accent-rgb),.05),transparent), var(--surface); }
.week-nav { gap:0; padding:3px; border-radius:14px; border:1px solid rgba(var(--accent-rgb),.28); background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.01)), var(--card); }
.week-btn { width:38px; height:38px; display:grid; place-items:center; padding:0; border-radius:10px; color:var(--gold); font-size:0; }
.week-btn:hover:not(:disabled) { background:rgba(var(--accent-rgb),.14); color:var(--text); }
.week-mid { display:flex; align-items:center; gap:10px; padding:0 14px; min-width:176px; justify-content:center; border-left:1px solid var(--border); border-right:1px solid var(--border); height:30px; }
.week-cal { color:var(--gold); flex-shrink:0; }
.week-nav-wrap { align-items:flex-start; gap:0; }
.week-label { min-width:0; padding:0; font:600 12px 'DM Mono',monospace; letter-spacing:.04em; text-align:left; }
.week-dates { font-size:10px; }
.today-btn { display:inline-flex; align-items:center; gap:7px; height:44px; padding:0 18px; border-radius:14px; font:600 11px 'DM Mono',monospace; letter-spacing:.12em; text-transform:uppercase;
  background:linear-gradient(135deg,rgba(var(--accent-rgb),.28),rgba(var(--accent-rgb),.1)); border:1px solid var(--gold-dim); color:var(--gold); }
.today-dot { width:7px; height:7px; border-radius:50%; background:var(--gold); box-shadow:0 0 8px var(--gold); }
@media (hover:hover) { .today-btn:hover { transform:translateY(-1px); box-shadow:0 6px 18px -8px rgba(var(--accent-rgb),.75); } }
@media (max-width:560px) {
  .week-bar { padding:.55rem .75rem; gap:.5rem; }
  .week-nav { flex:1; min-width:0; }
  .week-mid { flex:1; min-width:0; padding:0 8px; gap:7px; justify-content:center; }
  .week-label { font-size:11px; } .week-cal { width:16px; height:16px; }
  .today-btn { height:44px; padding:0 13px; }
}

/* ── "lights on" screen ── */
#lightson { position:fixed; inset:0; display:none; z-index:999; overflow:hidden; cursor:pointer; color:#15181f; text-align:center;
  background:radial-gradient(ellipse 80% 70% at 50% 34%, #fffdf3 0%, #ffffff 42%, #eceff5 100%); font-family:'DM Sans',sans-serif; }
#lightson.show { display:flex; align-items:center; justify-content:center; animation:lo-on .9s steps(1,end) both; }
@keyframes lo-on { 0%{opacity:0} 8%{opacity:1} 12%{opacity:.15} 20%{opacity:1} 26%{opacity:.4} 34%,100%{opacity:1} }
.lo-rays { position:absolute; left:50%; top:34%; width:230vmax; height:230vmax; margin:-115vmax 0 0 -115vmax; pointer-events:none;
  background:repeating-conic-gradient(from 0deg, rgba(255,205,90,.22) 0 5deg, transparent 5deg 15deg);
  -webkit-mask-image:radial-gradient(circle, #000 0, transparent 38%); mask-image:radial-gradient(circle, #000 0, transparent 38%); animation:lo-spin 90s linear infinite; }
@keyframes lo-spin { to { transform:rotate(360deg); } }
.lo-card { position:relative; z-index:2; padding:0 1.5rem; max-width:900px; }
.lo-bulb { width:76px; height:auto; margin-bottom:.4rem; filter:drop-shadow(0 0 22px rgba(255,196,60,.95)) drop-shadow(0 0 60px rgba(255,196,60,.6)); animation:lo-pulse 3.2s ease-in-out infinite; }
@keyframes lo-pulse { 0%,100% { filter:drop-shadow(0 0 18px rgba(255,196,60,.8)) drop-shadow(0 0 48px rgba(255,196,60,.45)); } 50% { filter:drop-shadow(0 0 28px rgba(255,196,60,1)) drop-shadow(0 0 80px rgba(255,196,60,.75)); } }
.lo-title { margin:0; font-family:'Bebas Neue',sans-serif; font-weight:400; font-size:clamp(3.2rem,14vw,9.5rem); line-height:.95; letter-spacing:.05em; color:#14171e; white-space:nowrap; }
.lo-title span { display:inline-block; opacity:0; transform:translateY(-.35em) scale(1.08); animation:lo-drop .55s cubic-bezier(.2,.9,.3,1.3) forwards; animation-delay:calc(.35s + var(--i) * 55ms); }
.lo-title .bang { color:#e8a020; text-shadow:0 0 24px rgba(232,160,32,.55); }
@keyframes lo-drop { to { opacity:1; transform:none; } }
.lo-sub { margin:.8rem 0 0; font:600 clamp(1rem,3.4vw,1.35rem) 'DM Sans',sans-serif; letter-spacing:.02em; color:#2b303b; opacity:0; animation:lo-fade .6s 1.2s forwards; }
.lo-hint { margin:.35rem 0 0; font:500 .8rem 'DM Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#7a8294; opacity:0; animation:lo-fade .6s 1.45s forwards; }
#needy { margin-top:1.8rem; display:inline-flex; align-items:center; gap:9px; height:44px; padding:0 22px; border-radius:999px; cursor:pointer; font:600 .85rem 'DM Sans',sans-serif; color:#3a4152;
  background:rgba(255,255,255,.75); backdrop-filter:blur(6px); border:1px solid #cdd3df; box-shadow:0 8px 24px -14px rgba(20,30,60,.5); opacity:0; animation:lo-fade .6s 1.7s forwards; transition:transform .15s, border-color .15s, color .15s; }
#needy:hover { transform:translateY(-1px); border-color:#e8a020; color:#14171e; }
.lo-foot { position:absolute; left:0; right:0; bottom:1.4rem; margin:0; font:500 .7rem 'DM Mono',monospace; letter-spacing:.2em; text-transform:uppercase; color:#a2a9b8; opacity:0; animation:lo-fade .8s 2s forwards; }
@keyframes lo-fade { to { opacity:1; } }
@media (prefers-reduced-motion:reduce) { #lightson.show, .lo-rays, .lo-bulb { animation:none; } .lo-title span, .lo-sub, .lo-hint, #needy, .lo-foot { animation-duration:.01s; animation-delay:0s; } }

/* LAYOUT */
.container { max-width:1280px; margin:0 auto; padding:0 1.5rem; }

/* WEEK NAV BAR — shared, sticky below header */
.week-bar { background:var(--surface); border-bottom:1px solid var(--border); padding:.6rem 1.5rem; display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; position:sticky; top:56px; z-index:90; }
.week-bar-label { font-family:'Bebas Neue',sans-serif; font-size:14px; letter-spacing:.1em; color:var(--subtext2); margin-right:.25rem; }
.week-nav { display:flex; align-items:center; gap:.25rem; background:var(--card); border:1px solid var(--border); border-radius:6px; padding:.2rem .35rem; }
.week-btn { background:none; border:none; color:var(--subtext); cursor:pointer; padding:.15rem .45rem; font-size:18px; border-radius:4px; line-height:1; transition:color .15s,background .15s; }
.week-btn:hover:not(:disabled) { color:var(--gold); background:rgba(var(--accent-rgb),.08); }
.week-btn:disabled { opacity:.25; cursor:not-allowed; }
.week-nav-wrap { display:flex; flex-direction:column; align-items:center; gap:1px; }
.week-label { font-family:'DM Mono',monospace; font-size:12px; color:var(--text); min-width:130px; text-align:center; padding:0 .25rem; }
.week-dates { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); letter-spacing:.03em; text-align:center; }
.today-btn { background:rgba(var(--accent-rgb),.1); border:1px solid var(--gold-dim); color:var(--gold); font-family:'DM Mono',monospace; font-size:11px; letter-spacing:.06em; padding:.3rem .7rem; border-radius:4px; cursor:pointer; transition:all .15s; }
.today-btn:hover { background:rgba(var(--accent-rgb),.18); }

/* CONFERENCE FILTER PILLS — Top 25 section only */
.conf-filter-bar { display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; }
.filter-btn { background:var(--surface); border:1px solid var(--border); color:var(--subtext); font-family:'DM Mono',monospace; font-size:11px; letter-spacing:.04em; padding:.3rem .7rem; border-radius:4px; cursor:pointer; transition:all .15s; white-space:nowrap; }
@media (hover: hover) {
  .filter-btn:hover { color:var(--gold); border-color:var(--gold-dim); background:rgba(var(--accent-rgb),.07); }
  .filter-clear-btn:hover { background:rgba(239,68,68,.15); border-color:rgba(239,68,68,.5); }
}
.filter-btn:active { color:var(--gold); border-color:var(--gold-dim); background:rgba(var(--accent-rgb),.07); }
.filter-btn.active { color:var(--gold); border-color:var(--gold); background:rgba(var(--accent-rgb),.12); box-shadow:0 0 0 1px rgba(var(--accent-rgb),.2); }
.filter-btn[data-filter="live"] { color:var(--live); }
.filter-btn[data-filter="live"].active { color:#fff; border-color:var(--live); background:rgba(255,65,54,.18); box-shadow:0 0 0 1px rgba(255,65,54,.25); }
.filter-divider { width:1px; height:20px; background:var(--border); margin:0 .1rem; flex-shrink:0; }
.filter-clear-btn { display:none; background:rgba(239,68,68,.08); border:1px solid rgba(239,68,68,.3); color:#f87171; font-family:'DM Mono',monospace; font-size:11px; letter-spacing:.04em; padding:.3rem .7rem; border-radius:4px; cursor:pointer; transition:all .15s; white-space:nowrap; }
.filter-clear-btn.visible { display:inline-block; }

/* SECTION HEADERS */
.section-header { display:flex; align-items:center; justify-content:space-between; padding:1.25rem 0 .75rem; border-bottom:1px solid var(--border); margin-bottom:1rem; flex-wrap:wrap; gap:.5rem; }
.collapse-btn { display:flex; align-items:center; gap:.3rem; background:var(--surface); border:1px solid var(--border); color:var(--subtext); font-family:'DM Mono',monospace; font-size:11px; letter-spacing:.05em; padding:.3rem .65rem; border-radius:4px; cursor:pointer; transition:all .15s; }
@media (hover:hover) { .collapse-btn:hover { color:var(--gold); border-color:var(--gold-dim); } }
.collapse-chevron { transition:transform .15s; }
.collapse-btn.collapsed .collapse-chevron { transform:rotate(-90deg); }
#myTeamsBody.collapsed { display:none; }
.section-title { font-family:'Bebas Neue',sans-serif; font-size:22px; letter-spacing:.1em; }
.section-title .accent { color:var(--gold); }
.section-subtitle { font-size:12px; color:var(--subtext); font-family:'DM Mono',monospace; letter-spacing:.04em; margin-top:2px; }

/* PLANNING HIGHLIGHTS */
.highlights-panel { background:var(--card); border:1px solid var(--gold-dim); border-radius:8px; margin-bottom:1rem; overflow:hidden; }
.highlights-header { display:flex; align-items:center; justify-content:space-between; padding:.7rem 1rem; cursor:pointer; user-select:none; }
.highlights-title { font-family:'Bebas Neue',sans-serif; font-size:15px; letter-spacing:.08em; color:var(--gold); display:flex; align-items:center; gap:.5rem; }
.highlights-chevron { color:var(--gold); font-size:13px; transition:transform .2s; }
.highlights-chevron.open { transform:rotate(180deg); }
.highlights-body { padding:0 1rem .75rem; display:none; }
.highlights-body.open { display:block; }
.highlight-item { display:flex; align-items:flex-start; gap:.6rem; padding:.4rem 0; border-bottom:1px solid var(--border); font-size:13px; }
.highlight-item:last-child { border-bottom:none; }
.highlight-badge { font-family:'DM Mono',monospace; font-size:10px; padding:2px 6px; border-radius:3px; white-space:nowrap; flex-shrink:0; margin-top:1px; }
.badge-conflict { background:rgba(239,68,68,.15); color:#f87171; }
.badge-double   { background:rgba(var(--accent-rgb),.15); color:var(--gold); }
.badge-plan     { background:rgba(59,130,246,.15); color:#60a5fa; }
.highlight-text { color:var(--text); line-height:1.4; }
.highlight-date { font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext); margin-top:1px; }

/* MY TEAMS GRID */
.teams-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:1rem; margin-bottom:2rem; }
.team-card { background:var(--card); border:1px solid var(--border); border-radius:8px; overflow:hidden; transition:border-color .15s; }
.team-card:hover { border-color:var(--border-bright); }
.team-card-header { display:flex; align-items:center; gap:.75rem; padding:.85rem 1rem; border-bottom:1px solid var(--border); position:relative; }
.team-card-header::before { content:''; position:absolute; left:0; top:0; bottom:0; width:3px; }
.team-card[data-team="psu"]   .team-card-header::before { background:#4a90d9; }
.team-card[data-team="pitt"]  .team-card-header::before { background:#FFB81C; }
.team-card[data-team="srock"] .team-card-header::before { background:#2ecc8e; }
.team-card[data-team="mill"]  .team-card-header::before { background:#EEB111; }
.team-card[data-team="cashs"] .team-card-header::before { background:#7aa0e0; }
.team-logo { width:36px; height:36px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:16px; flex-shrink:0; background:#fff; border:1px solid var(--border); overflow:hidden; }
.team-logo.logo-dark { background:#1a2035; }
.team-logo.logo-green { background:#00674F; }
.team-logo.logo-green img { padding:6px; }
.team-logo.logo-wide { width:64px; border-radius:6px; }
.team-logo img { width:100%; height:100%; object-fit:contain; padding:3px; }
.team-info { flex:1; min-width:0; }
.team-name { font-family:'Bebas Neue',sans-serif; font-size:17px; letter-spacing:.08em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.team-name a { color:inherit; text-decoration:none; }
.team-name a:hover { color:var(--gold); }
@media (hover: none) { .team-name a:hover { color:inherit; } }
.team-meta { font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext); letter-spacing:.04em; text-transform:uppercase; }
.team-record { font-family:'Bebas Neue',sans-serif; font-size:20px; color:var(--subtext); flex-shrink:0; text-align:right; }
.team-record .rec-label { display:block; font-family:'DM Mono',monospace; font-size:9px; color:var(--subtext2); letter-spacing:.05em; text-align:right; margin-top:-2px; }
.sport-badge { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.08em; color:var(--subtext2); background:var(--card); border:1px solid var(--border); border-radius:4px; padding:.2rem .55rem; }

/* GAME ROWS */
.games-list { padding:.15rem 0; }
.game-row { display:grid; grid-template-columns:78px 1fr auto; align-items:center; gap:.5rem; padding:.5rem 1rem; border-bottom:1px solid rgba(30,37,53,.6); border-left:2px solid transparent; }
.game-row:last-child { border-bottom:none; }
.game-row.home { border-left-color:var(--green); }
.game-row.away { border-left-color:var(--red); }
.game-row.bye  { border-left-color:var(--muted); opacity:.45; }
.game-row.live { background:rgba(255,65,54,.04); }
.game-row.highlighted { outline:1px solid var(--gold); outline-offset:-1px; }
.game-date-col { font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext); line-height:1.4; }
.game-date-col .game-day { color:var(--subtext2); font-size:10px; }
.game-opponent { font-size:13px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.d3-rank { display:inline-block; margin-left:4px; padding:0 6px; border-radius:9px; border:1px solid var(--gold); color:var(--gold); font-size:10px; font-weight:700; font-family:'DM Mono',monospace; white-space:nowrap; }
.game-opponent .ha-label { font-size:10px; font-family:'DM Mono',monospace; color:var(--subtext); margin-right:3px; }
.game-location { font-size:11px; color:var(--subtext2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.game-time-col { text-align:right; flex-shrink:0; white-space:nowrap; }
.game-row > div:nth-child(2) { min-width:0; }
.game-time { font-family:'DM Mono',monospace; font-size:12px; color:var(--subtext); }
.game-network { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); text-align:right; margin-top:1px; }
.stream-link { display:inline-flex; align-items:center; gap:3px; font-family:'DM Mono',monospace; font-size:10px; color:var(--gold); text-decoration:none; border:1px solid var(--gold-dim); border-radius:3px; padding:1px 5px; margin-top:2px; letter-spacing:.04em; white-space:nowrap; }
@media (hover:hover) { .stream-link:hover { background:rgba(var(--accent-rgb),.12); } }
.game-score { font-family:'Bebas Neue',sans-serif; font-size:18px; letter-spacing:.04em; white-space:nowrap; }
@media (max-width:420px) { .game-row { grid-template-columns:62px 1fr auto; gap:.4rem; padding:.5rem .75rem; } .game-score { font-size:16px; letter-spacing:.02em; } }
.game-score .win  { color:var(--green); }
.game-score .loss { color:var(--red); }
.badge-live  { display:inline-block; background:var(--live); color:#fff; font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.08em; padding:2px 5px; border-radius:3px; }
.live-situation { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); text-align:right; margin-top:1px; }
.badge-final { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); letter-spacing:.04em; }
.star-badge  { color:var(--gold); font-size:10px; margin-right:2px; }
.game-note   { display:inline-block; white-space:nowrap; font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.05em; padding:1px 5px; border-radius:3px; margin-left:5px; background:rgba(var(--accent-rgb),.15); color:var(--gold); vertical-align:middle; }

.view-more { display:block; width:100%; text-align:center; padding:.55rem; font-size:12px; color:var(--subtext); cursor:pointer; background:none; border:none; border-top:1px solid var(--border); font-family:'DM Sans',sans-serif; transition:color .15s,background .15s; }
.view-more:hover { color:var(--gold); background:rgba(var(--accent-rgb),.04); }

/* EMPTY / ERROR */
.empty-state { padding:1.5rem 1rem; text-align:center; }
.empty-state .empty-icon { font-size:26px; margin-bottom:.4rem; opacity:.5; }
.empty-state .empty-title { font-family:'Bebas Neue',sans-serif; font-size:15px; letter-spacing:.08em; color:var(--subtext); margin-bottom:.2rem; }
.empty-state .empty-sub { font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext2); line-height:1.6; }
.error-state { padding:1.25rem 1rem; text-align:center; color:var(--subtext); font-family:'DM Mono',monospace; font-size:12px; }
.retry-btn { margin-top:.6rem; background:none; border:1px solid var(--border-bright); color:var(--subtext); padding:.35rem .9rem; border-radius:4px; cursor:pointer; font-family:'DM Mono',monospace; font-size:11px; transition:all .15s; display:inline-block; }
.retry-btn:hover { color:var(--gold); border-color:var(--gold-dim); }

/* SKELETONS */
.loading-shimmer { background:linear-gradient(90deg,var(--card) 25%,var(--card-hover) 50%,var(--card) 75%); background-size:200% 100%; animation:shimmer 1.5s infinite; border-radius:4px; height:14px; }
@keyframes shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }
.skeleton-card { background:var(--card); border:1px solid var(--border); border-radius:8px; padding:1rem; display:flex; flex-direction:column; gap:.75rem; }

/* SCOREBOARD */
.scoreboard-grid { display:block; }
.day-group { margin-bottom:1.5rem; }
.day-group:last-child { margin-bottom:3rem; }
.day-group-header { display:flex; align-items:baseline; gap:.6rem; padding:.55rem .9rem; margin-bottom:.85rem; background:var(--card); border:1px solid var(--border); border-left:3px solid var(--gold); border-radius:6px; }
.day-group-title { font-family:'Bebas Neue',sans-serif; font-size:18px; letter-spacing:.1em; color:var(--text); }
.day-group-count { font-size:11px; font-family:'DM Mono',monospace; color:var(--subtext2); letter-spacing:.04em; margin-left:auto; }
.day-group-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:.75rem; }
.offseason-panel { grid-column:1/-1; background:var(--card); border:1px solid var(--border); border-radius:8px; padding:3rem 2rem; text-align:center; }
.offseason-panel .os-icon  { font-size:44px; margin-bottom:.75rem; opacity:.4; }
.offseason-panel .os-title { font-family:'Bebas Neue',sans-serif; font-size:26px; letter-spacing:.12em; color:var(--subtext); margin-bottom:.4rem; }
.offseason-panel .os-sub   { font-family:'DM Mono',monospace; font-size:12px; color:var(--subtext2); line-height:1.8; max-width:420px; margin:0 auto 1rem; }
.offseason-panel .os-week  { display:inline-block; font-family:'DM Mono',monospace; font-size:11px; color:var(--gold); border:1px solid var(--gold-dim); border-radius:4px; padding:.3rem .75rem; letter-spacing:.05em; }
.score-card { background:var(--card); border:1px solid var(--border); border-radius:8px; overflow:hidden; transition:border-color .15s; }
.score-card:hover { border-color:var(--border-bright); }
.score-card.ranked-matchup { border-color:var(--gold-dim); }
.score-card.my-team-highlight { background:rgba(var(--accent-rgb),.04); }
.score-card-top { padding:.4rem .85rem; background:rgba(0,0,0,.2); border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; }
.game-meta-tag  { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); letter-spacing:.04em; }
.game-status-tag { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.04em; }
.status-scheduled { color:var(--subtext); }
.status-live      { color:var(--live); }
.status-final     { color:var(--subtext2); }
.score-card-body { padding:.5rem .85rem; }
.team-line { display:grid; grid-template-columns:26px 1fr auto; align-items:center; gap:.5rem; padding:.28rem 0; }
.team-line + .team-line { border-top:1px solid rgba(30,37,53,.7); }
.rank-badge { font-family:'DM Mono',monospace; font-size:10px; color:var(--gold); text-align:center; }
.rank-badge.unranked { color:var(--subtext2); }
.team-line-name { font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; align-items:center; gap:5px; }
.team-line-name a { color:inherit; text-decoration:none; }
@media (hover: hover) { .team-line-name a:hover { color:var(--gold); } }
.team-line-score { font-family:'Bebas Neue',sans-serif; font-size:20px; min-width:32px; text-align:right; color:var(--subtext); }
.team-line-score.leading { color:var(--text); }
.team-line-score.scheduled { color:var(--subtext2); font-size:11px; font-family:'DM Mono',monospace; }
.score-card-situation { padding:0 .85rem .4rem; font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); }
.ball-icon { vertical-align:middle; margin-bottom:2px; }
@keyframes scoreFlash { 0%{ color:var(--gold); transform:scale(1.3); } 100%{ color:inherit; transform:scale(1); } }
.score-flash { display:inline-block; animation:scoreFlash 1.4s ease-out; }
@keyframes turnoverPulse { 0%,100%{ opacity:1; } 50%{ opacity:.55; } }
.turnover-badge { display:inline-block; background:var(--live); color:#fff; font-family:'DM Mono',monospace; font-size:9px; font-weight:600; letter-spacing:.06em; padding:2px 5px; border-radius:3px; animation:turnoverPulse 1.2s ease-in-out 3; }
.score-card-footer { padding:.35rem .85rem; border-top:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; }
.venue-tag   { font-size:11px; color:var(--subtext2); font-family:'DM Mono',monospace; display:flex; flex-direction:column; gap:1px; }
.venue-name  { color:var(--subtext); }
.venue-loc   { color:var(--subtext2); }
.network-tag { font-size:11px; color:var(--subtext);  font-family:'DM Mono',monospace; }
.my-team-indicator { display:inline-block; width:5px; height:5px; border-radius:50%; background:var(--gold); flex-shrink:0; }

/* POWER 4 VIEW SWITCHER */
.p4-viewbar { display:flex; align-items:center; gap:.5rem; margin-bottom:1rem; }
.p4-seg { display:inline-flex; background:var(--card); border:1px solid var(--border); border-radius:6px; padding:.2rem; gap:.2rem; }
.p4-seg button { background:none; border:none; color:var(--subtext); font-family:'DM Mono',monospace; font-size:11px; letter-spacing:.06em; padding:.35rem .8rem; border-radius:4px; cursor:pointer; transition:color .15s,background .15s; white-space:nowrap; }
.p4-seg button:hover:not(.active) { color:var(--gold); }
.p4-seg button.active { background:rgba(var(--accent-rgb),.12); color:var(--gold); box-shadow:0 0 0 1px rgba(var(--accent-rgb),.25); }

/* POWER 4 COMPACT GROUPS — By Time / By Channel */
.p4-group { margin-bottom:1.25rem; }
.p4-group:last-child { margin-bottom:3rem; }
.p4-group-header { display:flex; align-items:baseline; gap:.6rem; padding:.5rem .9rem; margin-bottom:.35rem; background:var(--card); border:1px solid var(--border); border-left:3px solid var(--gold); border-radius:6px; }
.p4-group-title { font-family:'Bebas Neue',sans-serif; font-size:16px; letter-spacing:.1em; color:var(--text); }
.p4-group-count { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); letter-spacing:.04em; margin-left:auto; }
.p4-row { display:grid; grid-template-columns:64px 1fr auto; align-items:center; gap:.75rem; padding:.5rem .9rem; border-bottom:1px solid rgba(30,37,53,.6); border-left:2px solid transparent; }
.p4-row.no-net { grid-template-columns:1fr auto; }
.p4-row:last-child { border-bottom:none; }
.p4-row.my-team { border-left-color:var(--gold); background:rgba(var(--accent-rgb),.04); }
.p4-row.live { background:rgba(255,65,54,.05); }
.p4-net { font-family:'DM Mono',monospace; font-size:10px; color:var(--text); background:var(--surface); border:1px solid var(--border-bright); border-radius:3px; padding:2px 4px; text-align:center; letter-spacing:.02em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.p4-net.tbd { color:var(--subtext2); }
.p4-match { font-size:13px; min-width:0; display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; }
.p4-team-group { display:inline-flex; align-items:center; gap:.35rem; white-space:nowrap; }
.p4-match .rk { font-family:'DM Mono',monospace; font-size:10px; color:var(--gold); }
.tlogo { width:18px; height:18px; object-fit:contain; flex-shrink:0; vertical-align:middle; filter:drop-shadow(0 0 1px rgba(255,255,255,.45)); }
.p4-match .rec { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); }
.p4-match .at { color:var(--subtext2); font-size:11px; font-family:'DM Mono',monospace; }
.p4-match .tm { font-weight:600; white-space:nowrap; }
.p4-match .tm.win { color:var(--green); }
.p4-match .sc { font-family:'Bebas Neue',sans-serif; font-size:16px; letter-spacing:.03em; }
.p4-star { color:var(--gold); font-size:10px; }
.score-card.expandable { cursor:pointer; }
.score-card .p4-detail { padding:.5rem .85rem .6rem; }
.score-card.open .p4-chev { transform:rotate(180deg); }
.score-card-top .p4-chev { margin-left:.5rem; padding-left:0; }
.team-line-name .rec { font-family:'DM Mono',monospace; font-size:10px; font-weight:400; color:var(--subtext2); }
.p4-row.expandable { cursor:pointer; }
.p4-row.expandable:hover { background:rgba(255,255,255,.025); }
.p4-chev { color:var(--subtext2); font-size:9px; margin-left:auto; padding-left:.4rem; transition:transform .15s; }
.p4-row.open .p4-chev { transform:rotate(180deg); }
.p4-detail { grid-column:1/-1; padding:.5rem 0 .2rem; border-top:1px dashed var(--border); }
.p4-box { border-collapse:collapse; font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext); }
.p4-box th { font-weight:400; color:var(--subtext2); font-size:10px; }
.p4-box th, .p4-box td { padding:2px 10px 2px 0; text-align:right; min-width:22px; }
.p4-box th:first-child, .p4-box td:first-child { text-align:left; min-width:96px; color:var(--text); }
.p4-box td:last-child { color:var(--text); font-weight:600; }
.p4-headline { font-size:12px; color:var(--subtext); margin-top:.45rem; line-height:1.4; }
.p4-meta { text-align:right; font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext); white-space:nowrap; line-height:1.45; max-width:220px; }
.p4-meta .p4-live { color:var(--live); }
.p4-meta .p4-spread { color:var(--subtext2); display:block; }
.p4-meta .p4-situation { color:var(--subtext2); display:block; white-space:normal; }

@media (max-width:640px) {
  /* Each game becomes its own card: everything left-aligned on a
     shared edge (network label, status, description) except the
     score column, which right-aligns within its own fixed grid
     column — the one place right-alignment is expected. */
  .p4-row, .p4-row:last-child { display:flex; flex-direction:column; gap:.5rem; background:var(--card); border:1px solid var(--border); border-radius:8px; margin:0 0 .5rem; padding:.7rem .85rem; }
  .p4-row:last-child { margin-bottom:0; }
  .p4-net { align-self:flex-start; background:none; border:none; padding:0; color:var(--subtext2); text-align:left; }
  .p4-match { flex-direction:column; align-items:stretch; gap:.3rem; width:100%; }
  .p4-match .at { display:none; }
  /* Ranked-vs-ranked star: pin to the card's top-right corner (beside the
     network label) instead of stacking as its own line under the teams. */
  .p4-row { position:relative; }
  .p4-star { position:absolute; top:.7rem; right:.85rem; font-size:12px; line-height:1; }
  /* No network label to sit beside (hideNet): keep the star clear of the away score. */
  .p4-row.no-net:has(.p4-star) { padding-top:1.35rem; }
  .p4-row.no-net .p4-star { top:.45rem; }
  /* Rank / name / score in fixed columns so the away and home lines
     line up instead of drifting with rank/name length. */
  .p4-team-group { display:grid; grid-template-columns:26px 1fr auto; align-items:center; gap:.35rem; width:100%; }
  .p4-rank-cell { font-family:'DM Mono',monospace; font-size:10px; color:var(--gold); }
  .p4-name-cell { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .p4-score-cell { text-align:right; }
  .p4-meta { text-align:left; white-space:normal; width:100%; max-width:none; }
  .p4-meta .p4-situation { white-space:normal; }
}

/* DIVIDER / FOOTER */
.section-divider { height:1px; background:var(--border); margin:1.5rem 0 0; }
.site-footer { background:var(--surface); border-top:1px solid var(--border); padding:1rem 1.5rem; display:flex; align-items:center; justify-content:space-between; }
.footer-brand { font-family:'Bebas Neue',sans-serif; font-size:14px; letter-spacing:.1em; color:var(--subtext2); }
.footer-brand span { color:var(--gold); }
.footer-credits { font-family:'DM Mono',monospace; font-size:10px; color:var(--subtext2); }

/* TEAM SEARCH */
.search-row { display:flex; align-items:center; gap:.5rem; margin-bottom:.75rem; }
.team-search-wrap { position:relative; flex:1; max-width:320px; }
.team-search-wrap .search-icon { position:absolute; left:.6rem; top:50%; transform:translateY(-50%); color:var(--subtext2); font-size:13px; pointer-events:none; }
.team-search-input { width:100%; background:var(--card); border:1px solid var(--border); color:var(--text); font-family:'DM Mono',monospace; font-size:12px; padding:.4rem .7rem .4rem 2rem; border-radius:5px; outline:none; transition:border-color .15s; }
.team-search-input::placeholder { color:var(--subtext2); }
.team-search-input:focus { border-color:var(--gold-dim); }
.search-clear-btn { display:none; background:none; border:none; color:var(--subtext2); cursor:pointer; font-size:14px; padding:0 .25rem; transition:color .15s; }
.search-clear-btn:hover { color:var(--text); }
.search-clear-btn.visible { display:inline-block; }
.search-result-count { font-family:'DM Mono',monospace; font-size:11px; color:var(--subtext2); }

@media (max-width:640px) {
  .site-header { padding:0 .75rem; }
  .brand-name { display:none; }
  .header-meta { gap:.5rem; }
  .live-badge span { display:none; }
  .last-updated { font-size:10px; }
  .container { padding:0 1rem; }
  .teams-grid,.day-group-cards { grid-template-columns:1fr; }
  .week-bar { padding:.5rem .75rem; gap:.35rem; }
  .sport-badge, .week-bar-label { display:none; }
  .week-nav-wrap { min-width:0; }
  .week-label { min-width:0; font-size:11px; }
  .today-btn { padding:.3rem .55rem; }
  .conf-filter-bar { gap:.25rem; }
  .team-search-wrap { max-width:100%; }
  .section-header { padding-top:1rem; }
}


/* ── PSU WHITE OUT: crowd twinkle, history panel, schedule chip ── */
.tb-art .twk { animation:wo-twk 3.4s ease-in-out infinite; opacity:.25; }
@keyframes wo-twk { 0%,100% { opacity:.18; } 50% { opacity:.95; } }
@media (prefers-reduced-motion:reduce) { .tb-art .twk { animation:none; opacity:.55; } }
.wo-chip { display:inline-block; margin-left:6px; padding:1px 6px; border-radius:4px; background:#1E407C; color:#fff; font:600 9px 'DM Mono',monospace; letter-spacing:.08em; vertical-align:middle; box-shadow:0 0 0 1px rgba(255,255,255,.6) inset; }
.wo { display:none; }
html[data-team="whiteout"] .wo { display:block; max-width:1280px; margin:0 auto; padding:1rem 1.5rem 0; }
.wo-box { background:var(--card); border:1px solid var(--border-bright); border-radius:12px; overflow:hidden; box-shadow:0 6px 28px -14px rgba(30,64,124,.45); }
.wo-box summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem 1rem; background:linear-gradient(90deg,#1E407C,#2f5fb0); color:#fff; }
.wo-box summary::-webkit-details-marker { display:none; }
.wo-h { font:22px 'Bebas Neue',sans-serif; letter-spacing:.12em; }
.wo-h em { font-style:normal; color:#96BEE6; }
.wo-rec { font:500 12px 'DM Mono',monospace; letter-spacing:.04em; } .wo-rec b { font-size:15px; }
.wo-box > *:not(summary) { margin-left:1rem; margin-right:1rem; }
.wo-next { margin-top:1rem; padding:.8rem 1rem; border:1px solid #1E407C; border-radius:10px; background:linear-gradient(100deg,rgba(30,64,124,.10),rgba(150,190,230,.12)); display:grid; grid-template-columns:1fr auto; gap:.2rem 1rem; align-items:center; }
.wo-pill { display:inline-block; background:#1E407C; color:#fff; font:600 10px 'DM Mono',monospace; letter-spacing:.14em; padding:2px 7px; border-radius:999px; margin-right:8px; vertical-align:middle; }
.wo-next-t { font:26px 'Bebas Neue',sans-serif; letter-spacing:.06em; } .wo-next-t small { font:500 11px 'DM Sans',sans-serif; letter-spacing:.04em; color:var(--subtext); }
.wo-next-r { text-align:right; font:600 15px 'DM Mono',monospace; color:var(--gold); } .wo-next-r small { display:block; font:400 11px 'DM Mono',monospace; color:var(--subtext); }
.wo-next-n { grid-column:1/-1; font-size:12.5px; color:var(--subtext); }
.wo-lede { margin-top:.9rem; font-size:14px; line-height:1.55; color:var(--text); } .wo-lede q { font-style:italic; color:var(--gold); quotes:"“" "”"; }
.wo-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem; margin-top:.9rem; }
.wo-stats > div { border:1px solid var(--border); border-radius:8px; padding:.55rem .6rem; background:var(--surface); }
.wo-stats b { display:block; font:26px 'Bebas Neue',sans-serif; letter-spacing:.05em; color:var(--gold); line-height:1.05; }
.wo-stats span { font:400 10.5px 'DM Mono',monospace; color:var(--subtext); letter-spacing:.02em; }
.wo-stories { list-style:none; margin-top:.9rem; display:grid; gap:.4rem; padding:0; }
.wo-stories li { display:grid; grid-template-columns:54px 1fr; gap:.6rem; align-items:baseline; font-size:13px; line-height:1.45; }
.wo-sy { font:22px 'Bebas Neue',sans-serif; letter-spacing:.06em; color:var(--gold); }
.wo-st b { font-weight:600; } .wo-st { color:var(--subtext); } .wo-st b { color:var(--text); }
.wo-sub { margin-top:1.1rem; font:20px 'Bebas Neue',sans-serif; letter-spacing:.1em; } .wo-sub small { font:400 10.5px 'DM Mono',monospace; letter-spacing:.02em; color:var(--subtext2); }
.wo-grid { list-style:none; padding:0; margin-top:.5rem; display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.4rem; }
.wo-g { display:grid; grid-template-columns:1fr auto; grid-template-areas:"y s" "o o"; gap:0 .5rem; padding:.4rem .55rem; border:1px solid var(--border); border-left:3px solid var(--muted); border-radius:6px; background:var(--surface); font-size:12px; outline:none; }
.wo-g.w { border-left-color:var(--green); } .wo-g.l { border-left-color:var(--red); } .wo-g.none { opacity:.5; border-style:dashed; }
.wo-g.has-note { cursor:help; } .wo-g:focus-visible, .wo-g:hover { border-color:var(--gold); }
.wo-y { grid-area:y; font:500 10.5px 'DM Mono',monospace; color:var(--subtext2); }
.wo-o { grid-area:o; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .wo-o i { font:500 10px 'DM Mono',monospace; font-style:normal; color:var(--gold); margin-right:5px; }
.wo-s { grid-area:s; font:500 11px 'DM Mono',monospace; color:var(--subtext); } .wo-g.w .wo-s b { color:var(--green); } .wo-g.l .wo-s b { color:var(--red); }
.wo-foot { margin:.9rem 1rem 1rem; padding-top:.7rem; border-top:1px solid var(--border); font-size:11.5px; color:var(--subtext2); }
@media (max-width:560px) {
  html[data-team="whiteout"] .wo { padding:.75rem .75rem 0; }
  .wo-stats { grid-template-columns:repeat(2,1fr); } .wo-next { grid-template-columns:1fr; } .wo-next-r { text-align:left; }
  .wo-grid { grid-template-columns:repeat(2,1fr); } .wo-stories li { grid-template-columns:44px 1fr; }
}

/* ── White Out, round two: night-game banner, navy header, collapse chevron, WE ARE intro ── */
html[data-team="whiteout"] .site-header { background:#0b1d44; box-shadow:0 8px 30px -12px rgba(11,29,68,.6); }
html[data-team="whiteout"] .site-header::after { background:linear-gradient(90deg,transparent,#96BEE6,#fff,#96BEE6,transparent); background-size:200% 100%; }
html[data-team="whiteout"] .brand-name { color:#fff; } html[data-team="whiteout"] .brand-name span { color:#96BEE6; text-shadow:0 0 14px rgba(150,190,230,.8); }
html[data-team="whiteout"] .last-updated, html[data-team="whiteout"] .live-badge { color:#b9cdee; }
html[data-team="whiteout"] .tb { height:156px; --tb-h:156px;
  background:radial-gradient(520px 200px at 78% 0%, rgba(150,190,230,.35), transparent 70%), linear-gradient(180deg,#050f26,#0b2350 62%,#16438f); border-bottom:0; }
html[data-theme="light"][data-team="whiteout"] .tb { background:radial-gradient(520px 200px at 78% 0%, rgba(150,190,230,.35), transparent 70%), linear-gradient(180deg,#050f26,#0b2350 62%,#16438f); }
html[data-team="whiteout"] .tb::after { content:''; position:absolute; left:0; right:0; bottom:0; height:3px; background:repeating-linear-gradient(90deg,#fff 0 22px,#1E407C 22px 44px); opacity:.9; }
html[data-team="whiteout"] .tb-art { width:min(72%,820px); }
html[data-team="whiteout"] .tb-word { filter:drop-shadow(0 0 22px rgba(255,255,255,.55)); font-size:clamp(52px,10vw,98px); letter-spacing:.05em; }
.tb-art .glow { animation:wo-glow 4s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
@keyframes wo-glow { 0%,100% { opacity:.8; transform:scale(1); } 50% { opacity:1; transform:scale(1.12); } }
@media (prefers-reduced-motion:reduce) { .tb-art .glow { animation:none; } }
@media (max-width:560px) { html[data-team="whiteout"] .tb { min-height:128px; height:auto; } html[data-team="whiteout"] .tb-word { font-size:clamp(38px,12.5vw,56px); } }

.wo-chev { display:flex; align-items:center; gap:.35rem; font:500 10.5px 'DM Mono',monospace; letter-spacing:.08em; border:1px solid rgba(255,255,255,.45); border-radius:999px; padding:3px 10px 3px 12px; margin-left:auto; }
.wo-chev svg { transition:transform .2s; }
.wo-chev-t::before { content:'HIDE'; } .wo-box:not([open]) .wo-chev-t::before { content:'SHOW'; }
.wo-box:not([open]) .wo-chev svg { transform:rotate(-90deg); }
.wo-box summary:hover .wo-chev { background:rgba(255,255,255,.14); }
.wo-box summary:focus-visible { outline:2px solid #96BEE6; outline-offset:-2px; }
.wo-rec { margin-left:.2rem; }

#woIntro { position:fixed; inset:0; z-index:998; display:none; flex-direction:column; align-items:center; justify-content:center; gap:.05em; background:#fff; color:#1E407C; font-family:'Bebas Neue',sans-serif; text-align:center; cursor:pointer; overflow:hidden; }
#woIntro.show { display:flex; animation:wi-bg 2.7s ease-out both; }
#woIntro div { font-size:clamp(72px,22vw,260px); line-height:.86; letter-spacing:.04em; opacity:0; }
#woIntro .wi-a { animation:wi-a 2.7s cubic-bezier(.2,.9,.2,1) both; }
#woIntro .wi-b { animation:wi-b 2.7s cubic-bezier(.2,.9,.2,1) both; -webkit-text-stroke:0; color:#fff; text-shadow:0 0 0 #1E407C; background:#1E407C; padding:.02em .22em .0; }
@keyframes wi-bg { 0% { opacity:1; filter:brightness(2.2); } 12% { filter:brightness(1); } 78% { opacity:1; } 100% { opacity:0; } }
@keyframes wi-a { 0%,8% { opacity:0; transform:translateX(-12vw) scale(1.1); } 22%,100% { opacity:1; transform:none; } }
@keyframes wi-b { 0%,34% { opacity:0; transform:translateX(12vw) scale(1.1); } 48%,100% { opacity:1; transform:none; } }

/* White Out bar on phones: one tidy row — title, record, HIDE/SHOW */
.wo-h, .wo-rec { white-space:nowrap; }
@media (max-width:560px) {
  .wo-box summary { padding:.6rem .75rem; gap:.5rem; }
  .wo-h { font-size:19px; letter-spacing:.09em; }
  .wo-rec { font-size:12px; } .wo-rec .wo-at { display:none; }
  .wo-chev { padding:3px 8px 3px 10px; font-size:10px; letter-spacing:.06em; gap:.25rem; }
}

/* ── Team lore panels (Pitt / Slippery Rock / Millersville) reuse the White Out panel; each theme sets its own colors ── */
html[data-team="whiteout"] { --lore-a:#1E407C; --lore-b:#2f5fb0; --lore-fg:#fff; --lore-hi:#96BEE6; }
html[data-team="pitt"] { --lore-a:#003594; --lore-b:#1f55c0; --lore-fg:#fff; --lore-hi:#FFB81C; }
html[data-team="sru"]  { --lore-a:#00553f; --lore-b:#00674F; --lore-fg:#fff; --lore-hi:#9af0d4; }
html[data-team="mu"]   { --lore-a:#0a0a0a; --lore-b:#1b1b1b; --lore-fg:#FFC72C; --lore-hi:#FFC72C; }
html[data-team="pitt"] .wo, html[data-team="sru"] .wo, html[data-team="mu"] .wo { display:block; max-width:1280px; margin:0 auto; padding:1rem 1.5rem 0; }
@media (max-width:560px) { html[data-team="pitt"] .wo, html[data-team="sru"] .wo, html[data-team="mu"] .wo { padding:.75rem .75rem 0; } }
.wo-box summary { background:linear-gradient(90deg,var(--lore-a,#1E407C),var(--lore-b,#2f5fb0)); color:var(--lore-fg,#fff); }
.wo-h em { color:var(--lore-hi,#96BEE6); }
.wo-chev { border-color:rgba(255,255,255,.45); }
html[data-team="mu"] .wo-chev { border-color:rgba(255,199,44,.6); }
.wo-pill { background:var(--lore-a,#1E407C); color:var(--lore-fg,#fff); }
html[data-team="mu"] .wo-pill { color:#FFC72C; border:1px solid #FFC72C; }
.wo-next { border-color:var(--lore-a,#1E407C); background:linear-gradient(100deg,rgba(var(--accent-rgb),.12),rgba(var(--glow2,150,190,230),.10)); }
html[data-team="pitt"] .wo-next, html[data-team="sru"] .wo-next, html[data-team="mu"] .wo-next { border-color:rgba(var(--accent-rgb),.5); }
html[data-team="mu"] .wo-box, html[data-team="pitt"] .wo-box, html[data-team="sru"] .wo-box { border-color:rgba(var(--accent-rgb),.4); }
.wo-next-n b { color:var(--gold); letter-spacing:.08em; }

/* ═══ Pitt / Slippery Rock / Millersville: restyled header, banner, page and icons (same depth as White Out) ═══ */
html[data-team="pitt"] { --hd-a:#001a52; --hd-b:#003594; --hd-ac:#FFB81C; --hd-rule:linear-gradient(90deg,transparent,#FFB81C,#fff3c8,#FFB81C,transparent);
  --sky:radial-gradient(520px 220px at 80% 0%,rgba(255,184,28,.30),transparent 70%),linear-gradient(180deg,#020a26,#06236b 62%,#0b3aa0);
  --stripe:repeating-linear-gradient(90deg,#FFB81C 0 22px,#003594 22px 44px); --ti:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 1l1.4 4H15v3h1v4h2v4h3v6H3v-6h3v-4h2V8h1V5h1.6z'/></svg>");
  --pat:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='72'><path d='M6 72V34Q6 8 24 0Q42 8 42 34V72' fill='none' stroke='%23FFB81C' stroke-width='1'/></svg>"); --pat-o:.07; --wm:"H2P"; }
html[data-team="sru"] { --hd-a:#02150f; --hd-b:#00553f; --hd-ac:#9af0d4; --hd-rule:linear-gradient(90deg,transparent,#1fd1a0,#fff,#1fd1a0,transparent);
  --sky:radial-gradient(520px 220px at 78% 0%,rgba(154,240,212,.28),transparent 70%),linear-gradient(180deg,#01100b,#04291d 62%,#0a5a43);
  --stripe:repeating-linear-gradient(90deg,#fff 0 22px,#00674F 22px 44px); --ti:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M2 21l2.5-9L9 6l6.5-3L20 8.5 22 21z'/></svg>"); --wm:"THE ROCK"; }
html[data-team="mu"] { --hd-a:#000; --hd-b:#1a1400; --hd-ac:#FFC72C; --hd-rule:linear-gradient(90deg,transparent,#FFC72C,#fff2c2,#FFC72C,transparent);
  --sky:radial-gradient(520px 220px at 78% 0%,rgba(255,199,44,.30),transparent 70%),linear-gradient(180deg,#000,#0b0900 62%,#2a2000);
  --stripe:repeating-linear-gradient(90deg,#FFC72C 0 22px,#000 22px 44px); --ti:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M19.5 2.5l2 2-9.6 9.6-2-2zM8.8 13.2l2 2-2.4 2.4 1.3 1.3-1.5 1.5-1.3-1.3-2.2 2.2-1.6-1.6 2.2-2.2-1.3-1.3 1.5-1.5 1.3 1.3z'/></svg>"); }
html[data-team="pitt"] .site-header, html[data-team="sru"] .site-header, html[data-team="mu"] .site-header { background:linear-gradient(90deg,var(--hd-a),var(--hd-b) 60%,var(--hd-a)); }
html[data-team="pitt"] .site-header::after, html[data-team="sru"] .site-header::after, html[data-team="mu"] .site-header::after { background:var(--hd-rule); background-size:200% 100%; }
html[data-team="pitt"] .brand-name, html[data-team="sru"] .brand-name, html[data-team="mu"] .brand-name { color:#fff; }
html[data-team="pitt"] .brand-name span, html[data-team="sru"] .brand-name span, html[data-team="mu"] .brand-name span { color:var(--hd-ac); }
html[data-team="pitt"] .last-updated, html[data-team="sru"] .last-updated, html[data-team="mu"] .last-updated, html[data-team="pitt"] .live-badge, html[data-team="sru"] .live-badge, html[data-team="mu"] .live-badge { color:rgba(255,255,255,.7); }
/* banner: night sky + a team-colored stripe along the bottom */
html[data-team="pitt"] .tb, html[data-team="sru"] .tb, html[data-team="mu"] .tb,
html[data-theme="light"][data-team="pitt"] .tb, html[data-theme="light"][data-team="sru"] .tb, html[data-theme="light"][data-team="mu"] .tb { height:156px; --tb-h:156px; background:var(--sky); border-bottom:0; }
html[data-team="pitt"] .tb::after, html[data-team="sru"] .tb::after, html[data-team="mu"] .tb::after { content:''; position:absolute; left:0; right:0; bottom:0; height:3px; background:var(--stripe); opacity:.95; }
html[data-team="pitt"] .tb-word, html[data-team="sru"] .tb-word, html[data-team="mu"] .tb-word { font-size:clamp(52px,10vw,98px); }
html[data-theme="light"][data-team="pitt"] .tb-kick, html[data-theme="light"][data-team="sru"] .tb-kick { color:#fff; }
@media (max-width:560px) { html[data-team="pitt"] .tb, html[data-team="sru"] .tb, html[data-team="mu"] .tb { min-height:128px; height:auto; }
  html[data-team="pitt"] .tb-word, html[data-team="sru"] .tb-word, html[data-team="mu"] .tb-word { font-size:clamp(36px,11.5vw,54px); }
  html[data-team="pitt"] .tb-kick, html[data-team="sru"] .tb-kick, html[data-team="mu"] .tb-kick, html[data-team="psu"] .tb-kick { white-space:normal; line-height:1.35; } }
/* page: Pitt gets Gothic arches, SRU granite speckle, MU a harder gold glow */
html[data-team="sru"] body { background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .6 0 0 0 0 1 0 0 0 0 .85 0 0 0 .5 0'/></filter><rect width='160' height='160' filter='url(%23n)' opacity='.16'/></svg>") 0 0/160px 160px fixed,
    radial-gradient(900px 500px at 8% -10%, rgba(var(--glow2),.6), transparent 62%) fixed,
    radial-gradient(800px 480px at 100% 0%, rgba(var(--accent-rgb),.28), transparent 58%) fixed,
    radial-gradient(900px 500px at 50% 115%, rgba(var(--glow2),.35), transparent 60%) fixed, var(--bg); }
html[data-team="mu"] body { background:
    linear-gradient(115deg, transparent 55%, rgba(255,199,44,.07) 55% 56%, transparent 56% 62%, rgba(255,199,44,.05) 62% 63%, transparent 63%) fixed,
    radial-gradient(900px 500px at 0% 105%, rgba(255,199,44,.38), transparent 60%) fixed,
    radial-gradient(800px 480px at 100% 0%, rgba(255,199,44,.22), transparent 58%) fixed, var(--bg); }
/* cards: team-colored top edge and a big faint emblem in the corner */
html[data-team="pitt"] .team-card, html[data-team="sru"] .team-card, html[data-team="mu"] .team-card { position:relative; border-top:2px solid var(--hd-ac); }
html[data-team="pitt"] .team-card::after, html[data-team="sru"] .team-card::after, html[data-team="mu"] .team-card::after { content:''; position:absolute; right:-6px; bottom:-10px; width:110px; height:110px; pointer-events:none; background:var(--hd-ac); opacity:.07;
  -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
/* icons: section titles, panel title, empty state */
html[data-team="pitt"] .section-title::before, html[data-team="sru"] .section-title::before, html[data-team="mu"] .section-title::before,
html[data-team="pitt"] .wo-h::before, html[data-team="sru"] .wo-h::before, html[data-team="mu"] .wo-h::before { content:''; display:inline-block; width:.85em; height:.85em; margin-right:.4em; vertical-align:-.08em; background:var(--hd-ac);
  -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html[data-team="pitt"] .empty-state .empty-icon, html[data-team="sru"] .empty-state .empty-icon, html[data-team="mu"] .empty-state .empty-icon { font-size:0; width:34px; height:34px; margin:0 auto .5rem; background:var(--hd-ac); opacity:.45;
  -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html[data-team="pitt"] .today-dot, html[data-team="sru"] .today-dot, html[data-team="mu"] .today-dot { background:var(--hd-ac); box-shadow:0 0 8px var(--hd-ac); }

/* intro moments */
#tiIntro { position:fixed; inset:0; z-index:998; display:none; flex-direction:column; align-items:center; justify-content:center; gap:.1em; cursor:pointer; overflow:hidden; text-align:center; font-family:'Bebas Neue',sans-serif; }
#tiIntro.show { display:flex; animation:ti-fade 3s ease-out both; }
#tiIntro[data-k="pitt"] { background:radial-gradient(700px 500px at 50% 30%,#0a2f86,#020a26 70%); color:#FFB81C; }
#tiIntro[data-k="sru"]  { background:radial-gradient(700px 500px at 50% 40%,#0a5a43,#01100b 72%); color:#fff; }
#tiIntro[data-k="mu"]   { background:radial-gradient(700px 500px at 50% 40%,#2a2000,#000 72%); color:#FFC72C; }
@keyframes ti-fade { 0%,82% { opacity:1; } 100% { opacity:0; } }
#tiIntro .ti-art { height:min(44vh,360px); width:auto; max-width:80vw; overflow:visible; }
#tiIntro .ti-a { font-size:clamp(54px,15vw,150px); line-height:.9; letter-spacing:.05em; opacity:0; animation:ti-in .5s cubic-bezier(.2,.9,.2,1) 1.2s both; text-shadow:0 0 30px currentColor; }
#tiIntro .ti-b { font-size:clamp(26px,7vw,64px); letter-spacing:.3em; opacity:0; color:#fff; animation:ti-in .5s ease-out 1.75s both; }
#tiIntro[data-k="sru"] .ti-b { color:#9af0d4; }
@keyframes ti-in { from { opacity:0; transform:translateY(18px) scale(1.06); } to { opacity:1; transform:none; } }
/* Pitt: windows light from the bottom up, then the gold glow and the blue beam */
.ti-win { opacity:0; animation:ti-lit .22s ease-out both; }
@keyframes ti-lit { to { opacity:1; } }
.ti-glow { opacity:0; animation:ti-lit .8s ease-out 1.15s both; }
.ti-beam { opacity:0; animation:ti-lit .6s ease-out 1.25s both; }
/* SRU: the rock, then ripples from the touch */
.ti-rock { transform-origin:50% 100%; animation:ti-press .9s ease-out .15s both; }
@keyframes ti-press { 0% { transform:scale(.7); opacity:0; } 60% { transform:scale(1.04); opacity:1; } 100% { transform:none; opacity:1; } }
.ti-rip { fill:none; stroke:#9af0d4; stroke-width:2; opacity:0; transform-origin:100px 112px; animation:ti-ripple 1.8s ease-out both; }
.ti-rip.r1 { animation-delay:.6s; } .ti-rip.r2 { animation-delay:.95s; } .ti-rip.r3 { animation-delay:1.3s; }
@keyframes ti-ripple { 0% { opacity:.9; transform:scale(.6); } 100% { opacity:0; transform:scale(3.2); } }
/* MU: gold stripes sweep through and the M lands */
.ti-m { transform-origin:50% 60%; animation:ti-slam .7s cubic-bezier(.2,1.4,.3,1) .25s both; }
@keyframes ti-slam { from { transform:scale(2.4) rotate(-6deg); opacity:0; } to { transform:none; opacity:1; } }
.ti-stripe { position:absolute; top:-20%; bottom:-20%; width:9vw; background:#FFC72C; opacity:.5; transform:rotate(20deg) translateX(-140vw); animation:ti-sweep 1.1s ease-out both; }
.ti-stripe.s1 { left:30%; } .ti-stripe.s2 { left:46%; width:3.5vw; animation-delay:.12s; }
@keyframes ti-sweep { to { transform:rotate(20deg) translateX(0); opacity:.18; } }
#tiIntro[data-k="mu"] .ti-art { height:min(34vh,290px); }
@media (max-width:360px) { .wo-rec { display:none; } }
html[data-theme="light"][data-team="pitt"] { --pat-o:.13; }

/* Millersville: the real saber-M mark instead of a drawn block M */
.tb-mu { display:flex; align-items:center; justify-content:flex-end; }
.tb-mu svg { position:absolute; inset:0; width:100%; height:100%; }
.tb-mu img { position:relative; height:128%; width:auto; margin-right:1%; filter:drop-shadow(0 0 22px rgba(255,199,44,.5)); }
#tiIntro .ti-m { filter:drop-shadow(0 0 34px rgba(255,199,44,.55)); width:auto; }
@media (max-width:560px) { .tb-mu img { display:none; } }

/* ═══ Penn State (regular) and Ambiance (default): same depth as the other themes ═══ */
html[data-team="psu"] { --hd-a:#04122e; --hd-b:#1E407C; --hd-ac:#96BEE6; --hd-rule:linear-gradient(90deg,transparent,#96BEE6,#fff,#96BEE6,transparent);
  --sky:radial-gradient(520px 220px at 80% 0%,rgba(150,190,230,.30),transparent 70%),linear-gradient(180deg,#030a1d,#0a2252 62%,#1E407C);
  --stripe:repeating-linear-gradient(90deg,#fff 0 22px,#1E407C 22px 44px);
  --ti:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><ellipse cx='12' cy='16' rx='5.2' ry='4.2'/><circle cx='5.2' cy='10.6' r='2.1'/><circle cx='9.4' cy='6' r='2.3'/><circle cx='14.6' cy='6' r='2.3'/><circle cx='18.8' cy='10.6' r='2.1'/></svg>");
  --pat:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='70'><path d='M0 48Q55 8 110 40T220 36' fill='none' stroke='%2396BEE6' stroke-width='1'/><path d='M0 62Q55 30 110 56T220 54' fill='none' stroke='%2396BEE6' stroke-width='1'/></svg>"); --pat-o:.06;
  --lore-a:#1E407C; --lore-b:#2f5fb0; --lore-fg:#fff; --lore-hi:#96BEE6; }
html:not([data-team]) { --hd-a:#0b0908; --hd-b:#1f130b; --hd-ac:#e8a020; --hd-rule:linear-gradient(90deg,transparent,#ff6a1a,#ffd27a,#ff6a1a,transparent);
  --sky:radial-gradient(520px 220px at 80% 100%,rgba(255,106,26,.34),transparent 70%),linear-gradient(180deg,#070403,#140a05 62%,#2a140a);
  --stripe:repeating-linear-gradient(90deg,#e8a020 0 22px,#2a140a 22px 44px); --tb-a:#ffe2a8; --tb-b:#fff7e0;
  --ti:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2c.6 3.4 5 5.4 5 10a5 5 0 0 1-10 0c0-2.2 1-3.8 2.2-5 .1 1.8.9 3 1.8 3C11.6 7.6 11 5 12 2z'/></svg>"); }
/* the default theme had no banner; give it one */
html:not([data-team]) .tb { display:block; position:relative; overflow:hidden; height:156px; --tb-h:156px; background:var(--sky); clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 28px) 100%,0 100%); }
html:not([data-team]) .site-header { border-bottom:0; position:sticky; }
html:not([data-team]) .site-header::after { content:''; position:absolute; left:0; right:0; bottom:0; height:2px; background:var(--hd-rule); background-size:200% 100%; animation:team-sweep 5s linear infinite; }
html:not([data-team]) .brand-name { color:#fff; } html:not([data-team]) .brand-name span { color:var(--hd-ac); } html:not([data-team]) .last-updated, html:not([data-team]) .live-badge { color:rgba(255,255,255,.7); }
html:not([data-team]):not([data-theme="light"]) body { background:
    radial-gradient(900px 500px at 50% 118%, rgba(255,106,26,.22), transparent 60%) fixed,
    radial-gradient(800px 480px at 100% 0%, rgba(232,160,32,.10), transparent 58%) fixed, var(--bg); }
@media (max-width:560px) { html:not([data-team]) .tb { min-height:128px; height:auto; } html:not([data-team]) .tb-word { font-size:clamp(34px,10.5vw,52px); } html:not([data-team]) .tb-kick { white-space:normal; line-height:1.35; } }
html:not([data-team]) .tb-word { font-size:clamp(46px,9vw,92px); }
html:not([data-team]) .tb::after { content:''; position:absolute; left:0; right:0; bottom:0; height:3px; background:var(--stripe); opacity:.95; }
.tb-art .ember { animation:wo-ember 3.2s ease-out infinite; transform-box:fill-box; }
@keyframes wo-ember { 0% { opacity:0; transform:translate(0,0); } 15% { opacity:.95; } 100% { opacity:0; transform:translate(var(--dx,0),-46px); } }
@media (prefers-reduced-motion:reduce) { .tb-art .ember { animation:none; opacity:.5; } }

/* shared restyle for these two, mirroring the Pitt / SRU / MU block */
html[data-team="psu"] .site-header { background:linear-gradient(90deg,var(--hd-a),var(--hd-b) 60%,var(--hd-a)); }
html:not([data-team]) .site-header { background:linear-gradient(90deg,var(--hd-a),var(--hd-b) 60%,var(--hd-a)); }
html[data-team="psu"] .site-header::after { background:var(--hd-rule); background-size:200% 100%; }
html:not([data-team]) .site-header::after { background:var(--hd-rule); background-size:200% 100%; }
html[data-team="psu"] .brand-name { color:#fff; } html[data-team="psu"] .brand-name span { color:var(--hd-ac); } html[data-team="psu"] .last-updated, html[data-team="psu"] .live-badge { color:rgba(255,255,255,.7); }
html[data-team="psu"] .tb, html[data-theme="light"][data-team="psu"] .tb { height:156px; --tb-h:156px; background:var(--sky); border-bottom:0; }
html:not([data-team]) .tb, html[data-theme="light"]:not([data-team]) .tb { background:var(--sky); }
html[data-team="psu"] .tb::after { content:''; position:absolute; left:0; right:0; bottom:0; height:3px; background:var(--stripe); opacity:.95; }
html[data-team="psu"] .tb-word { font-size:clamp(52px,10vw,98px); }
html[data-team="psu"] .tb-kick { color:#96BEE6; }
@media (max-width:560px) { html[data-team="psu"] .tb { min-height:128px; height:auto; } html[data-team="psu"] .tb-word { font-size:clamp(36px,11.5vw,54px); } }
html[data-team="psu"] .team-card { position:relative; border-top:2px solid var(--hd-ac); }
html:not([data-team]) .team-card { position:relative; border-top:2px solid var(--hd-ac); }
html[data-team="psu"] .team-card::after { content:''; position:absolute; right:-6px; bottom:-10px; width:110px; height:110px; pointer-events:none; background:var(--hd-ac); opacity:.07; -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html:not([data-team]) .team-card::after { content:''; position:absolute; right:-6px; bottom:-10px; width:110px; height:110px; pointer-events:none; background:var(--hd-ac); opacity:.07; -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html[data-team="psu"] .section-title::before { content:''; display:inline-block; width:.85em; height:.85em; margin-right:.4em; vertical-align:-.08em; background:var(--hd-ac); -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html:not([data-team]) .section-title::before { content:''; display:inline-block; width:.85em; height:.85em; margin-right:.4em; vertical-align:-.08em; background:var(--hd-ac); -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html[data-team="psu"] .wo-h::before { content:''; display:inline-block; width:.85em; height:.85em; margin-right:.4em; vertical-align:-.08em; background:var(--hd-ac); -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html:not([data-team]) .wo-h::before { content:''; display:inline-block; width:.85em; height:.85em; margin-right:.4em; vertical-align:-.08em; background:var(--hd-ac); -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html[data-team="psu"] .empty-state .empty-icon { font-size:0; width:34px; height:34px; margin:0 auto .5rem; background:var(--hd-ac); opacity:.45; -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html:not([data-team]) .empty-state .empty-icon { font-size:0; width:34px; height:34px; margin:0 auto .5rem; background:var(--hd-ac); opacity:.45; -webkit-mask:var(--ti) center/contain no-repeat; mask:var(--ti) center/contain no-repeat; }
html[data-team="psu"] .today-dot { background:var(--hd-ac); box-shadow:0 0 8px var(--hd-ac); }
html:not([data-team]) .today-dot { background:var(--hd-ac); box-shadow:0 0 8px var(--hd-ac); }
html[data-team="psu"] .wo { display:block; max-width:1280px; margin:0 auto; padding:1rem 1.5rem 0; }
@media (max-width:560px) { html[data-team="psu"] .wo { padding:.75rem .75rem 0; } }
html[data-team="psu"] .wo-next, html[data-team="psu"] .wo-box { border-color:rgba(var(--accent-rgb),.5); }
/* intros */
#tiIntro[data-k="psu"] { background:radial-gradient(700px 500px at 50% 40%,#0a2252,#030a1d 72%); color:#96BEE6; }
#tiIntro[data-k=""]    { background:radial-gradient(700px 500px at 50% 80%,#2a140a,#070403 72%); color:#e8a020; }
#tiIntro[data-k=""] .ti-b { color:#ffb36b; font-size:clamp(18px,5vw,44px); }
.ti-star { opacity:.15; animation:wo-twk 2.4s ease-in-out infinite; }
.ti-ember { opacity:0; animation:ti-rise 2.2s ease-out infinite; transform-box:fill-box; }
@keyframes ti-rise { 0% { opacity:0; transform:translate(0,0); } 20% { opacity:1; } 100% { opacity:0; transform:translate(var(--dx,0),-150px); } }
.ti-fire { transform-origin:150px 190px; animation:ti-flick 1.1s ease-in-out infinite alternate; }
@keyframes ti-flick { from { transform:scale(1,.94); } to { transform:scale(1.04,1.04); } }
#tiIntro[data-k="psu"] .ti-glow { animation-delay:.2s; }
html[data-theme="light"][data-team="psu"] { --pat-o:.12; }
