
@import url("public-player-forms.css?v=20260905-fields");

  /* ===== ZAP design tokens（与线上 tokens.css 同源，本地预览内联） ===== */
  :root {
    --zap-black: #07060B;
    --zap-pink: #FF2E9F;
    --zap-bright: #FF8AD8;
    --zap-magenta: #B0006D;
    --zap-white: #F5EEF7;
    --zap-pink-35: rgba(255,46,159,.35);
    --zap-pink-14: rgba(255,46,159,.14);
    --zap-pink-06: rgba(255,46,159,.06);
    --zap-bright-55: rgba(255,79,216,.55);
    --zap-bright-22: rgba(255,79,216,.22);
    --zap-bright-08: rgba(255,79,216,.08);
    --zap-white-10: rgba(245,238,247,.10);
    --zap-white-04: rgba(245,238,247,.04);
    --zap-cyan: #78F0FF;
    --txt-1: #F5EEF7;
    --txt-2: rgba(245,238,247,.72);
    --txt-3: rgba(245,238,247,.46);
    --ease: cubic-bezier(.22,1,.36,1);
    --maxw: 1420px;
    --pad: clamp(20px, 4.4vw, 72px);
    --radius: 16px;
    --font-display: "ZAP Serif", "Songti SC", "SimSun", Georgia, serif;
    --font-ui: "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;
    --font-mono: "SFMono-Regular", Consolas, Menlo, monospace;
  }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  [hidden] { display: none !important; }
  html { scroll-behavior: smooth; }
  body {
    background: var(--zap-black);
    color: var(--txt-2);
    font-family: var(--font-ui);
    font-size: 15px; line-height: 1.65;
    -webkit-font-smoothing: antialiased;
  }
  body::before {
    content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none;
    background:
      radial-gradient(46% 32% at 18% 0%, rgba(255,46,159,.10), transparent 70%),
      radial-gradient(40% 30% at 88% 8%, rgba(120,240,255,.05), transparent 70%),
      linear-gradient(180deg, rgba(7,6,11,.38) 0%, rgba(7,6,11,.55) 34%, rgba(7,6,11,.78) 68%, rgba(7,6,11,.92) 100%),
      url('bg-zap-map.webp') center top / cover no-repeat;
  }
  .wrap { position: relative; z-index: 1; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad) 80px; }

  /* ===== 入场动画 ===== */
  @keyframes fadeUp { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: translateY(0); } }
  @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
  @keyframes glowPulse { 0%, 100% { text-shadow: 0 0 24px rgba(255,79,216,.35), 0 0 60px rgba(255,79,216,.18); } 50% { text-shadow: 0 0 34px rgba(255,79,216,.6), 0 0 90px rgba(255,79,216,.3); } }
  @keyframes goldPulse { 0%, 100% { filter: drop-shadow(0 0 14px rgba(255,215,0,.35)); } 50% { filter: drop-shadow(0 0 26px rgba(255,215,0,.6)); } }
  @keyframes lineGrow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  @keyframes floatY { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
  .anim { opacity: 0; animation: fadeUp .8s var(--ease) forwards; }
  .anim.d1 { animation-delay: .12s; } .anim.d2 { animation-delay: .26s; } .anim.d3 { animation-delay: .4s; }
  .anim.d4 { animation-delay: .55s; } .anim.d5 { animation-delay: .7s; }
  @media (prefers-reduced-motion: reduce) { .anim { animation: none; opacity: 1; } * { animation-duration: .001s !important; } }

  /* ===== HERO 大页头 ===== */
  .hero { position: relative; text-align: center; padding: 58px 0 30px; overflow: hidden; }
  .hero-inner { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 18px; }
  .hero .crumb {
    font-family: var(--font-mono); font-size: 14px; letter-spacing: .3em; color: var(--txt-2);
    text-transform: uppercase; display: inline-flex; align-items: center; gap: 12px;
  }
  .hero .crumb::before, .hero .crumb::after { content: ""; width: 44px; height: 1px; background: linear-gradient(90deg, transparent, var(--zap-pink-35)); }
  .hero .crumb::after { background: linear-gradient(90deg, var(--zap-pink-35), transparent); }
  @keyframes shine { from { background-position: 0% 0; } to { background-position: 220% 0; } }
  .shimmer-text {
    background: linear-gradient(110deg, #FF2E9F 0%, #FF4FD8 25%, #FF2E9F 50%, #FF4FD8 75%, #FF2E9F 100%);
    background-size: 260% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
    animation: sweep 3.4s linear infinite;
    text-shadow: 0 0 2px rgba(255,46,159,.95), 0 0 6px rgba(255,46,159,.7), 0 0 12px rgba(255,46,159,.35);
  }
  @keyframes sweep { to { background-position: 260% center; } }
  .shimmer-soft {
    color: #fff;
    text-shadow: 0 0 10px rgba(255,46,159,.75), 0 0 24px rgba(255,46,159,.5), 0 0 44px rgba(255,46,159,.25);
  }
  .hero h1 {
    animation: fadeUp .9s var(--ease) .1s both;
    font-family: var(--font-display); font-weight: 900;
    font-size: clamp(32px, 6vw, 84px); line-height: 1.08; color: #fff; letter-spacing: .01em;
    display: flex; align-items: baseline; justify-content: center; gap: .14em;
    flex-wrap: nowrap; white-space: nowrap;
    text-shadow:
      0 1px 0 rgba(176,0,109,.7),
      0 2px 0 rgba(0,0,0,.35),
      0 0 4px rgba(255,46,159,1),
      0 0 10px rgba(255,46,159,.8),
      0 0 18px rgba(255,46,159,.5);
  }
  .hero h1 .num {
    font-family: var(--font-mono); font-weight: 700; letter-spacing: .02em;
    font-size: .82em;
  }
  /* 冠军队名：金色流光 */
  .hero .champ-line b.shimmer-text {
    background: linear-gradient(105deg, #B8860B 0%, #FFCC70 18%, #FFF5D8 34%, #FFE9A8 44%, #FFFDF0 50%, #FFD700 58%, #FFAA00 70%, #FFCC70 84%, #B8860B 100%);
    background-size: 260% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
    animation: goldSweep 3s linear infinite;
    filter: drop-shadow(0 1px 1px rgba(0,0,0,.6)) drop-shadow(0 0 6px rgba(255,200,60,.55)) drop-shadow(0 0 16px rgba(255,180,30,.3));
    font-size: 1em;
  }
  /* 冠军行：整体金色流光 */
  @keyframes goldSweep {
    0% { background-position: 260% center; }
    100% { background-position: -60% center; }
  }
  .hero .champ-line .gold-text {
    background: linear-gradient(105deg, #B8860B 0%, #FFCC70 18%, #FFF5D8 34%, #FFE9A8 44%, #FFFDF0 50%, #FFD700 58%, #FFAA00 70%, #FFCC70 84%, #B8860B 100%);
    background-size: 260% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
    animation: goldSweep 3s linear infinite;
    filter: drop-shadow(0 1px 1px rgba(0,0,0,.6)) drop-shadow(0 0 6px rgba(255,200,60,.55)) drop-shadow(0 0 16px rgba(255,180,30,.3));
  }
  .hero .champ-line .crown-emoji { font-size: .9em; margin-right: 2px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)) drop-shadow(0 0 8px rgba(255,215,0,.5)); }
  .hero .champ-line {
    display: inline-flex; align-items: baseline; gap: 12px; flex-wrap: nowrap; justify-content: center;
    font-family: var(--font-display); font-weight: 900; font-size: clamp(22px, 3.4vw, 38px); letter-spacing: .08em; color: #FFD700;
    white-space: nowrap;
  }
  .hero .champ-line b {
    font-family: var(--font-display); font-weight: 900; font-size: 1em; letter-spacing: .02em; line-height: 1.15;
  }
  .hero .hero-rule { width: min(520px, 80%); height: 1px; background: linear-gradient(90deg, transparent, var(--zap-pink), transparent); transform-origin: center; animation: lineGrow 1s var(--ease) .5s both; margin-top: 24px; }
  .hero-roster {
    margin-top: 6px; display: flex; flex-direction: column; align-items: center; gap: 6px;
    width: min(100%, 920px); animation: fadeUp .8s var(--ease) .35s both;
  }
  .hero-roster .r-main {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
    gap: 4px 10px;
    font-size: clamp(10px, 1.5vw, 15px); font-weight: 600; color: #fff;
    text-shadow: 0 0 8px rgba(255,46,159,.55), 0 0 18px rgba(255,46,159,.28);
    animation: rosterGlow 2s ease-in-out infinite;
  }
  .hero-roster .r-main span { display: inline-flex; align-items: center; }
  .hero-roster .r-main span:not(:last-child)::after {
    content: "·"; margin-left: 8px; color: var(--zap-pink-35); font-weight: 700;
  }
  .hero-roster .r-subs {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
    gap: 4px 12px;
    font-size: clamp(9px, 1.2vw, 12px); color: var(--txt-3);
  }
  .hero-roster .r-subs span { display: inline-flex; align-items: center; gap: 3px; }
  .hero-roster .r-subs span:not(:last-child)::after {
    content: "·"; margin-left: 8px; color: var(--zap-pink-35);
  }
  @keyframes rosterGlow {
    0%, 100% { text-shadow: 0 0 6px rgba(255,46,159,.35), 0 0 14px rgba(255,46,159,.15); opacity: .82; }
    50% { text-shadow: 0 0 12px rgba(255,46,159,.85), 0 0 28px rgba(255,46,159,.45); opacity: 1; }
  }
  .hero-bo3 {
    margin-top: 22px; width: min(100%, 920px);
    border-radius: 16px; overflow: hidden; position: relative;
    border: 1px solid rgba(255,215,0,.35); border-bottom-color: rgba(255,215,0,.18);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 24px 60px -24px rgba(255,46,159,.55), 0 10px 30px rgba(0,0,0,.7);
  }
  .hero-bo3 img { display: block; width: 100%; height: auto; visibility: hidden; }
  .hero-bo3 .fx-layer { position: absolute; inset: 0; pointer-events: none; }
  .hero-bo3 .fx-shard {
    position: absolute; will-change: transform, opacity; background-repeat: no-repeat;
  }
  .hero-bo3 .fx-flash {
    position: absolute; inset: 0; opacity: 0; pointer-events: none; z-index: 3;
    background: radial-gradient(55% 55% at 50% 50%, rgba(255,255,255,.98), rgba(255,215,0,.55) 45%, transparent 72%);
  }
  .hero-bo3 .fx-wave {
    position: absolute; left: 50%; top: 50%; width: 40px; height: 40px; margin: -20px 0 0 -20px;
    border-radius: 50%; border: 3px solid rgba(255,215,0,.92); opacity: 0; pointer-events: none; z-index: 4;
    box-shadow: 0 0 28px rgba(255,46,159,.9), inset 0 0 22px rgba(255,255,255,.55);
  }
  .hero-bo3 .fx-spark {
    position: absolute; left: 50%; top: 50%; width: 5px; height: 5px; border-radius: 50%;
    pointer-events: none; z-index: 4; opacity: 0;
  }
  .hero-bo3 .fx-fire {
    position: absolute; inset: 0; opacity: 0; pointer-events: none; z-index: 3; mix-blend-mode: screen;
    background: radial-gradient(closest-side at 50% 50%, rgba(255,100,0,.95) 0%, rgba(255,30,90,.65) 38%, transparent 75%);
  }
  .hero-bo3 .fx-glow {
    position: absolute; left: -20%; top: -20%; right: -20%; bottom: -20%; border-radius: 50%;
    opacity: 0; pointer-events: none; z-index: 2;
    background: radial-gradient(circle at 50% 50%, rgba(255,215,0,.55) 0%, rgba(255,46,159,.2) 35%, transparent 65%);
    filter: blur(28px);
  }
  .hero-bo3 .fx-arc {
    position: absolute; left: 50%; top: 50%; width: 320px; height: 2px; transform-origin: 0 50%;
    background: linear-gradient(90deg, transparent, #67E8F9 15%, #FFFFFF 50%, #FF4FD8 85%, transparent);
    opacity: 0; pointer-events: none; z-index: 6;
    box-shadow: 0 0 10px #67E8F9, 0 0 18px #FF4FD8;
  }
  body.fx-quake { animation: fxQuake .42s linear; }
  @keyframes fxQuake {
    0%, 100% { transform: translate(0, 0); }
    10% { transform: translate(-11px, 7px); }
    22% { transform: translate(9px, -10px); }
    36% { transform: translate(-8px, -6px); }
    50% { transform: translate(10px, 8px); }
    64% { transform: translate(-6px, 9px); }
    78% { transform: translate(7px, -7px); }
    92% { transform: translate(-4px, 3px); }
  }
  .hero-bo3.fx-running { overflow: visible; }
  .hero-bo3.fx-done img { visibility: visible; }
  .hero-bo3.fx-done .fx-layer { display: none; }
  @media (prefers-reduced-motion: reduce) {
    .hero-bo3 img { visibility: visible; }
    .hero-bo3 .fx-layer { display: none; }
  }

  /* ===== 3D 质感基础 ===== */
  .tilt { transform-style: preserve-3d; perspective: 900px; }
  .card3d {
    position: relative;
    background:
      linear-gradient(160deg, rgba(255,79,216,.07), rgba(7,3,10,.55) 38%, rgba(7,3,10,.65)),
      linear-gradient(180deg, rgba(245,238,247,.045), transparent 30%);
    box-shadow:
      inset 0 1px 0 rgba(245,238,247,.14),
      inset 0 -1px 0 rgba(255,46,159,.12),
      0 18px 40px -22px rgba(0,0,0,.85),
      0 2px 8px rgba(0,0,0,.5);
    backdrop-filter: blur(6px);
    transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
  }
  .card3d:hover {
    transform: translateY(-5px) rotateX(2.2deg) scale(1.012);
    box-shadow:
      inset 0 1px 0 rgba(245,238,247,.2),
      inset 0 -1px 0 rgba(255,46,159,.2),
      0 30px 60px -24px rgba(255,46,159,.4),
      0 4px 14px rgba(0,0,0,.6);
    border-color: var(--zap-pink-35);
  }
  .tag3d {
    display: inline-flex; align-items: center;
    background: linear-gradient(180deg, rgba(120,240,255,.18), rgba(120,240,255,.05));
    border: 1px solid rgba(120,240,255,.5);
    border-bottom-color: rgba(120,240,255,.25);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 3px 8px -2px rgba(0,0,0,.7), 0 1px 2px rgba(120,240,255,.15);
    border-radius: 999px;
  }
  .tag3d.pink {
    background: linear-gradient(180deg, rgba(255,79,216,.28), rgba(255,46,159,.1));
    border-color: rgba(255,79,216,.55); border-bottom-color: rgba(176,0,109,.7);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.28), 0 3px 10px -2px rgba(255,46,159,.45);
    color: #fff;
  }
  .chip3d {
    background: linear-gradient(180deg, rgba(255,79,216,.22), rgba(176,0,109,.14));
    border: 1px solid rgba(255,79,216,.4);
    border-bottom-color: rgba(176,0,109,.6);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 2px 6px -1px rgba(255,46,159,.4);
    border-radius: 999px;
  }

  /* ===== 顶栏（固定导航，滚动始终可见） ===== */
  .topbar {
    position: sticky; top: 0; z-index: 1000;
    display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
    padding: 12px 0;
    background: rgba(7,3,10,.82);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--zap-white-10);
    box-shadow: 0 10px 30px -12px rgba(0,0,0,.8);
  }
  .topbar.scrolled { background: rgba(7,3,10,.95); box-shadow: 0 12px 34px -10px rgba(0,0,0,.9); }
  .brand { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
  .brand h1 { font-family: var(--font-display); font-weight: 900; font-size: clamp(26px, 4vw, 38px); color: var(--txt-1); letter-spacing: .02em; }
  .brand h1 em { font-style: normal; color: var(--zap-bright); }
  .brand .crumb { font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; color: var(--txt-3); text-transform: uppercase; }
  .topbar-right { display: flex; align-items: center; gap: 10px; }
  .badge-updated { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; color: var(--txt-3); }
  .badge-updated b { color: var(--zap-cyan); font-weight: 400; }
  .badge-demo { font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; color: #FFCC70; border: 1px dashed rgba(255,204,112,.5); padding: 4px 12px; border-radius: 999px; }

  /* ===== 顶部导航栏 ===== */
  .navbar { display: flex; align-items: center; gap: 8px; padding: 7px 8px; border: 1px solid var(--zap-white-10); border-radius: 999px; background: rgba(7,3,10,.65); backdrop-filter: blur(6px); box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 10px 26px -16px rgba(0,0,0,.8); }
  .navbar a, .navbar button {
    appearance: none; border: 0; cursor: pointer; border-radius: 999px; text-decoration: none;
    font-family: var(--font-ui); font-size: 14px; font-weight: 700; letter-spacing: .05em;
    color: var(--txt-2); background: transparent; padding: 9px 20px; transition: all .25s var(--ease);
    display: inline-flex; align-items: center; white-space: nowrap;
  }
  .navbar a:hover, .navbar button:hover { color: #fff; background: var(--zap-pink-14); }
  .navbar a.active, .navbar button.active { color: #fff; background: linear-gradient(135deg, var(--zap-pink-35), var(--zap-magenta)); box-shadow: inset 0 0 0 1px var(--zap-pink-35), 0 6px 18px -8px rgba(255,46,159,.5); }
  .navbar button.soon { color: var(--txt-3); }
  .navbar button.soon::after { content: "·建设中"; font-size: 9px; font-family: var(--font-mono); letter-spacing: .08em; opacity: .7; margin-left: 3px; }
  .nav-sep { width: 1px; height: 18px; background: var(--zap-white-10); margin: 0 4px; }
  .nav-cta { display: inline-flex; align-items: center; justify-content: center; gap: 8px; margin-top: 14px; padding: 12px 24px; border-radius: 999px;    background: linear-gradient(135deg, var(--zap-pink), var(--zap-magenta)); color: #fff; font-weight: 700; font-size: 15px;
    box-shadow: 0 10px 26px -10px rgba(255,46,159,.55); transition: transform .2s, box-shadow .2s; }
  .nav-cta:hover { transform: translateY(-2px); box-shadow: 0 14px 34px -10px rgba(255,46,159,.7); color: #fff; }

  /* ===== 左下角登录挂件 ===== */
  .corner-auth { position: fixed; left: 18px; bottom: 18px; z-index: 990; font-family: var(--font-ui); }
  .ca-login-btn {
    display: inline-flex; align-items: center; gap: 9px; cursor: pointer;
    padding: 10px 20px; border-radius: 999px; border: 1px solid var(--zap-pink-35);
    background: rgba(7,3,10,.88); backdrop-filter: blur(10px); color: var(--txt-1);
    font-size: 13px; font-weight: 700; letter-spacing: .05em;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,.85), inset 0 1px 0 rgba(245,238,247,.08);
    transition: all .25s var(--ease);
  }
  .ca-login-btn:hover { border-color: var(--zap-pink); box-shadow: 0 12px 34px -10px rgba(255,46,159,.5); transform: translateY(-1px); }
  .ca-login-btn .ca-ico { font-size: 16px; filter: drop-shadow(0 0 6px rgba(255,46,159,.5)); }
  .ca-card {
    width: 232px; border-radius: 16px; border: 1px solid var(--zap-white-10);
    background: rgba(7,3,10,.92); backdrop-filter: blur(12px);
    box-shadow: 0 18px 44px -14px rgba(0,0,0,.9), inset 0 1px 0 rgba(245,238,247,.06);
    overflow: hidden; animation: fadeUp .3s var(--ease);
  }
  .ca-head { display: flex; align-items: center; gap: 11px; padding: 13px 14px 11px; border-bottom: 1px solid var(--zap-white-10); }
  .ca-avatar {
    flex: none; width: 40px; height: 40px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; font-weight: 900; color: #fff;
    background: linear-gradient(135deg, var(--zap-pink), var(--zap-magenta));
    box-shadow: 0 0 0 2px rgba(7,3,10,.9), 0 0 14px rgba(255,46,159,.45);
  }
  .ca-avatar.ca-avatar--admin { background: linear-gradient(135deg, #FFC94D, #B8860B); box-shadow: 0 0 0 2px rgba(7,3,10,.9), 0 0 14px rgba(255,201,77,.45); }
  .ca-nick { font-size: 14px; font-weight: 800; color: var(--txt-1); line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ca-sub { font-size: 11px; color: var(--txt-3); font-family: var(--font-mono); letter-spacing: .04em; margin-top: 2px; }
  .ca-badge { flex: none; font-size: 10px; font-weight: 800; letter-spacing: .08em; padding: 3px 9px; border-radius: 999px;
    color: #FFC94D; border: 1px solid rgba(255,201,77,.4); background: rgba(255,201,77,.08); }
  .ca-body { padding: 10px 14px 12px; display: flex; flex-direction: column; gap: 7px; }
  .ca-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 12px; }
  .ca-row .k { color: var(--txt-3); flex: none; }
  .ca-row .v { color: var(--txt-2); text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ca-row .v.hl { color: var(--zap-bright); font-weight: 700; }
  .ca-actions { display: flex; gap: 8px; padding: 0 14px 14px; }
  .ca-actions button, .ca-actions a {
    flex: 1; appearance: none; cursor: pointer; text-align: center; text-decoration: none;
    border-radius: 10px; padding: 8px 0; font-size: 12px; font-weight: 700; font-family: var(--font-ui);
    border: 1px solid var(--zap-white-10); background: rgba(255,255,255,.04); color: var(--txt-2);
    transition: all .2s;
  }
  .ca-actions button:hover, .ca-actions a:hover { color: #fff; border-color: var(--zap-pink-35); background: var(--zap-pink-14); }
  .ca-actions .ca-logout:hover { color: #ff7a8a; border-color: rgba(255,122,138,.4); background: rgba(255,122,138,.08); }
  @media (max-width: 760px) { .corner-auth { left: 10px; bottom: 10px; } .ca-card { width: 200px; } }

  /* ===== 登录 / 注册弹窗 ===== */
  .auth-tabs { display: flex; gap: 8px; margin-bottom: 18px; }
  .auth-tab { flex: 1; padding: 10px; border-radius: 12px; border: 1px solid var(--zap-white-10); background: transparent; color: var(--txt-3);
    font-size: 14px; font-weight: 700; cursor: pointer; transition: all .2s; font-family: var(--font-ui); }
  .auth-tab.active { color: var(--txt-1); border-color: var(--zap-pink-35); background: var(--zap-pink-14); }
  .auth-field { margin-bottom: 14px; }
  .auth-field label { display: block; font-size: 13px; color: var(--txt-3); margin-bottom: 6px; }
  .auth-field input { width: 100%; background: rgba(0,0,0,.3); border: 1px solid var(--zap-white-10); border-radius: 12px; padding: 11px 14px;
    color: var(--txt-1); font-size: 15px; outline: none; transition: border-color .2s; }
  .auth-field input:focus { border-color: var(--zap-pink); }
  .auth-field small { display: block; color: var(--txt-3); font-size: 11px; margin-top: 4px; }
  .auth-err { color: #FF8A8A; font-size: 13px; margin-bottom: 10px; min-height: 1em; }
  .mine-card { display: flex; flex-direction: column; gap: 14px; }
  .mine-row { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); }
  .mine-row .k { font-size: 13px; color: var(--txt-3); }
  .mine-row .v { font-size: 15px; color: var(--txt-1); font-weight: 700; text-align: right; }

  /* ===== 导航弹窗内容 ===== */
  .nav-intro { font-family: var(--font-display); font-weight: 900; font-size: 17px; color: var(--zap-bright); margin-bottom: 16px; letter-spacing: .02em; }
  .nav-sec { margin-bottom: 18px; }
  .nav-sec:last-child { margin-bottom: 0; }
  .nav-sec h4 { font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em; color: var(--zap-cyan); text-transform: uppercase; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--zap-white-10); }
  .nav-sec ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
  .nav-sec li { position: relative; padding-left: 18px; font-size: 14px; color: var(--txt-1); line-height: 1.6; }
  .nav-sec li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 6px; height: 6px; border-radius: 2px; background: linear-gradient(135deg, var(--zap-pink), var(--zap-bright)); }
  .nav-reward { padding: 14px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); margin-bottom: 12px; }
  .nav-reward:last-child { margin-bottom: 0; }
  .nav-reward.gold { border-color: rgba(255,215,0,.35); background: linear-gradient(160deg, rgba(255,204,112,.1), rgba(7,3,10,.5)); }
  .nav-reward .r-title { font-family: var(--font-display); font-weight: 900; font-size: 16px; color: var(--txt-1); margin-bottom: 8px; display: flex; align-items: center; gap: 8px; }
  .nav-reward.gold .r-title { background: linear-gradient(135deg, #FFD700 0%, #FFCC70 55%, #FFAA00 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
  .nav-reward ul { list-style: none; display: flex; flex-direction: column; gap: 6px; }
  .nav-reward li { position: relative; padding-left: 18px; font-size: 13px; color: var(--txt-2); }
  .nav-reward li::before { content: "◆"; position: absolute; left: 0; top: 0; font-size: 10px; color: var(--zap-bright); }
  .nav-reward.gold li::before { color: #FFCC70; }
  .nav-contact-row { display: grid; grid-template-columns: 110px 1fr; gap: 10px 16px; padding: 14px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); font-size: 14px; }
  .nav-contact-row .k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; color: var(--txt-3); align-self: center; }
  .nav-contact-row .v { color: var(--txt-1); font-weight: 600; }
  .nav-contact-note { margin-top: 12px; font-size: 13px; color: var(--txt-2); line-height: 1.7; padding: 12px 16px; border-left: 3px solid var(--zap-pink); background: var(--zap-pink-06); border-radius: 0 10px 10px 0; }
  .nav-soon { text-align: center; padding: 46px 0; }
  .nav-soon .icon { font-size: 40px; margin-bottom: 14px; filter: drop-shadow(0 4px 14px rgba(255,46,159,.35)); }
  .nav-soon .t { font-family: var(--font-display); font-weight: 900; font-size: 19px; color: var(--txt-1); margin-bottom: 8px; }
  .nav-soon .d { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; color: var(--txt-3); }

  /* ===== 周期切换 ===== */
  .period-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 18px 0 26px; flex-wrap: wrap; }
  .tabs { display: inline-flex; gap: 6px; padding: 5px; border: 1px solid var(--zap-white-10); border-radius: 999px; background: rgba(7,3,10,.5); }
  .tabs button {
    appearance: none; border: 0; cursor: pointer; border-radius: 999px;
    font-family: var(--font-mono); font-size: 12px; letter-spacing: .12em;
    color: var(--txt-3); background: transparent; padding: 8px 20px; transition: all .25s var(--ease);
  }
  .tabs button:hover { color: var(--txt-1); }
  .tabs button.on { color: #fff; background: linear-gradient(135deg, var(--zap-pink), var(--zap-bright)); box-shadow: 0 0 18px rgba(255,46,159,.35); }
  .season-note { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; color: var(--txt-3); }
  .season-note b { color: var(--zap-bright); font-weight: 400; }
  .champ-tabs { display: inline-flex; gap: 4px; padding: 4px; border: 1px solid var(--zap-white-10); border-radius: 999px; background: rgba(7,3,10,.5); }
  .champ-tabs button {
    appearance: none; border: 0; cursor: pointer; border-radius: 999px;
    font-family: var(--font-ui); font-size: 12px; letter-spacing: .08em;
    color: var(--txt-3); background: transparent; padding: 6px 14px; transition: all .25s var(--ease);
  }
  .champ-tabs button:hover { color: var(--txt-1); }
  .champ-tabs button.on { color: #fff; background: linear-gradient(135deg, var(--zap-pink), var(--zap-bright)); box-shadow: 0 0 14px rgba(255,46,159,.35); }

  /* ===== 分区标题 ===== */
  .sec-head { display: flex; align-items: baseline; gap: 14px; margin: 52px 0 18px; scroll-margin-top: 86px; }
  .sec-head .no { font-family: var(--font-mono); font-size: 12px; color: var(--zap-pink); letter-spacing: .1em; }
  .sec-head h2 { font-family: var(--font-display); font-weight: 900; font-size: clamp(20px, 3vw, 26px); color: var(--txt-1); }
  .sec-head .sub { font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; color: var(--txt-3); text-transform: uppercase; }
  .sec-head .rule { flex: 1; height: 1px; background: linear-gradient(90deg, var(--zap-pink-35), transparent); align-self: center; }
  .sec-head.center { justify-content: center; }
  .sec-head.center .no, .sec-head.center .rule { display: none; }
  .datahub-header, .duo-champ-standings, #kpiGrid { scroll-margin-top: 86px; }

  /* ===== KPI 概览卡片 ===== */
  .kpi-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; perspective: 1100px; }
  @media (max-width: 1100px) { .kpi-grid { grid-template-columns: repeat(3, 1fr); } }
  @media (max-width: 620px)  { .kpi-grid { grid-template-columns: repeat(2, 1fr); } }
  .kpi {
    border: 1px solid var(--zap-white-10); border-radius: var(--radius);
    padding: 20px 18px 17px; position: relative; overflow: hidden;
    transform-style: preserve-3d;
    background:
      linear-gradient(160deg, rgba(255,79,216,.08), rgba(7,3,10,.62) 45%, rgba(7,3,10,.72)),
      linear-gradient(180deg, rgba(245,238,247,.06), transparent 35%);
    box-shadow: inset 0 1px 0 rgba(245,238,247,.12), 0 16px 38px -22px rgba(0,0,0,.85);
  }
  .kpi::after { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 2px; background: linear-gradient(90deg, var(--zap-pink), transparent 70%); opacity: .75; }
  .kpi .k-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; color: rgba(245,238,247,.78); text-transform: uppercase; margin-bottom: 11px; text-shadow: 0 1px 2px rgba(0,0,0,.55); }
  .kpi .k-value { font-family: var(--font-display); font-weight: 900; font-size: clamp(24px, 2.8vw, 34px); color: #fff; line-height: 1.05; letter-spacing: .01em; text-shadow: 0 2px 10px rgba(0,0,0,.55), 0 0 22px rgba(255,46,159,.25); }
  .kpi .k-value small { font-size: 13px; color: rgba(245,238,247,.62); font-weight: 500; margin-left: 5px; text-shadow: 0 1px 2px rgba(0,0,0,.5); }
  .kpi .k-value.k-value--text { font-size: clamp(19px, 2.2vw, 26px); letter-spacing: .04em; color: var(--zap-cyan); text-shadow: 0 0 20px rgba(120,240,255,.45), 0 2px 8px rgba(0,0,0,.5); }
  .kpi .k-foot { margin-top: 10px; font-size: 12px; color: rgba(245,238,247,.62); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-shadow: 0 1px 2px rgba(0,0,0,.5); }
  .kpi .k-foot b { color: var(--zap-bright); font-weight: 700; }
  .kpi.hl { border-color: rgba(255,79,216,.45); }
  .kpi.hl .k-value { color: var(--zap-bright); text-shadow: 0 0 24px rgba(255,79,216,.45), 0 2px 10px rgba(0,0,0,.55); }
  .kpi.hl { border-color: var(--zap-pink-35); }
  .kpi.hl .k-value { color: var(--zap-bright); }
  .kpi.kpi-gold { border-color: rgba(255,215,0,.35); }
  .kpi.kpi-gold .k-value {
    background: linear-gradient(105deg, #B8860B 0%, #FFCC70 18%, #FFF5D8 34%, #FFE9A8 44%, #FFFDF0 50%, #FFD700 58%, #FFAA00 70%, #FFCC70 84%, #B8860B 100%);
    background-size: 260% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
    filter: drop-shadow(0 1px 6px rgba(255,215,0,.35));
  }
  .kpi.kpi-gold .k-label { color: #FFD700; }
  .kpi.kpi-gold .k-foot b { color: #FFD700; }

  /* ===== 通用面板卡 ===== */
  .panel {
    border: 1px solid var(--zap-white-10); border-radius: var(--radius);
    overflow: hidden;
  }
  .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 22px; border-bottom: 1px solid var(--zap-white-04); background: linear-gradient(180deg, rgba(255,79,216,.06), transparent); }
  .panel-head h3 { font-family: var(--font-display); font-weight: 900; font-size: 19px; color: var(--txt-1); text-shadow: 0 1px 0 rgba(0,0,0,.6); }
  .panel-head .tag { font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; padding: 4px 12px; }

  /* ===== 数据表 ===== */
  table { width: 100%; border-collapse: collapse; }
  th {
    font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: var(--txt-3);
    text-transform: uppercase; font-weight: 400; text-align: left;
    padding: 12px 14px; border-bottom: 1px solid var(--zap-white-10); white-space: nowrap;
    user-select: none;
  }
  th.sortable { cursor: pointer; transition: color .2s; }
  th.sortable:hover { color: var(--txt-1); }
  th.sorted-asc, th.sorted-desc { color: var(--zap-bright); }
  th .arrow { font-size: 9px; margin-left: 3px; }
  td { padding: 12px 14px; color: var(--txt-1); border-bottom: 1px solid var(--zap-white-04); font-variant-numeric: tabular-nums; white-space: nowrap; }
  tr:last-child td { border-bottom: 0; }
  tbody tr { transition: background .2s; }
  tbody tr:hover { background: var(--zap-pink-06); }
  .num { font-family: var(--font-mono); font-size: 13px; }
  .rank { font-family: var(--font-display); font-weight: 900; font-size: 17px; color: var(--txt-3); width: 46px; }
  .rank-1 { color: var(--zap-bright); text-shadow: 0 0 18px rgba(255,79,216,.5); }
  .rank-2 { color: var(--zap-cyan); }
  .rank-3 { color: #FFCC70; }
  .team-cell { display: flex; align-items: center; gap: 10px; min-width: 150px; }
  .team-dot { width: 8px; height: 8px; border-radius: 3px; flex: none; }
  .team-avatar { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; flex: none; box-shadow: 0 0 10px rgba(0,0,0,.45), inset 0 0 0 1px rgba(255,255,255,.1); }
  .team-cell .team-avatar + .team-dot { margin-left: -22px; }
  .team-cell b { font-weight: 600; font-size: 14px; }
  .player-cell { display: flex; align-items: center; gap: 10px; min-width: 130px; }
  .player-cell .pava {
    width: 28px; height: 28px; border-radius: 8px; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 800; color: var(--txt-1);
    background: linear-gradient(135deg, var(--zap-pink-14), rgba(120,240,255,.12));
    border: 1px solid var(--zap-white-10);
  }
  .player-cell b { font-weight: 600; font-size: 14px; }
  .rating-v { font-family: var(--font-display); font-weight: 900; font-size: 16px; }
  .rating-hi { color: var(--zap-bright); text-shadow: 0 0 16px rgba(255,79,216,.4); }
  .rating-good { color: var(--zap-cyan); }
  .rating-mid { color: var(--txt-1); }
  .rating-low { color: var(--txt-3); }
  .mvp-chip { display: inline-block; font-family: var(--font-mono); font-size: 10px; color: #FFCC70; border: 1px solid rgba(255,204,112,.4); border-radius: 999px; padding: 1px 8px; margin-left: 8px; }


  /* ===== 每周冠军时间轴 ===== */
  .week-showcase .panel-head { background: linear-gradient(180deg, rgba(255,204,112,.08), transparent); justify-content: center; }
  .week-timeline { display: flex; flex-direction: column; gap: 10px; padding: 16px 18px; }
  /* 需求⑥：周冠军卡片内容居中 */
  .week-timeline .week-crown { justify-content: center; }
  .week-timeline .week-main { justify-content: center; text-align: center; }
  .week-timeline .week-no { min-width: 0; }
  .week-timeline .week-info { flex: 0 1 auto; }
  .week-card {
    position: relative; border-radius: 12px; padding: 11px 16px 11px 19px;
    border: 1px solid var(--zap-white-10);
    background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.55) 50%, rgba(7,3,10,.6));
    box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 14px 34px -18px rgba(0,0,0,.8);
    overflow: hidden; transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
  }
  .week-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--zap-pink); opacity: .5; }
  .week-card[data-team] { cursor: pointer; }
  .week-card:hover { transform: translateY(-4px); border-color: var(--zap-pink-35); box-shadow: inset 0 1px 0 rgba(245,238,247,.16), 0 26px 52px -22px rgba(255,46,159,.45); }
  .week-card.current {
    border-color: rgba(255,215,0,.45);
    background: linear-gradient(160deg, rgba(255,204,112,.12), rgba(7,3,10,.65) 45%, rgba(7,3,10,.75));
    box-shadow: inset 0 1px 0 rgba(255,215,0,.22), 0 26px 70px -28px rgba(255,46,159,.5), 0 8px 26px rgba(0,0,0,.75);
  }
  .week-card.current::before { background: linear-gradient(180deg, #FFD700, #FFAA00); opacity: 1; }
  .week-card.empty { opacity: .5; border-style: dashed; }
  .week-card.empty:hover { transform: none; border-color: var(--zap-white-10); box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 14px 34px -18px rgba(0,0,0,.8); }
  .week-card.current::after {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(110deg, transparent 30%, rgba(255,215,0,.09) 48%, transparent 66%);
    background-size: 240% 100%; animation: sweepGold 3.2s linear infinite;
  }
  @keyframes sweepGold { to { background-position: 240% 0; } }
  .week-crown { position: relative; z-index: 2; font-family: var(--font-mono); font-size: 9px; letter-spacing: .16em; color: #FFCC70; display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }
  .week-main { position: relative; z-index: 2; display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
  .week-no { font-family: var(--font-display); font-weight: 900; font-size: clamp(18px, 2.2vw, 23px); color: var(--txt-3); line-height: 1; min-width: 44px; letter-spacing: -.02em; }
  .week-card.current .week-no { color: #FFD700; text-shadow: 0 0 22px rgba(255,215,0,.4); }
  .week-info { flex: 1; min-width: 150px; }
  .week-team { font-family: var(--font-display); font-weight: 900; font-size: clamp(15px, 1.9vw, 18px); letter-spacing: -.01em; margin-bottom: 2px; }
  .shimmer-gold {
    background: linear-gradient(110deg, #FFD700 0%, #FFCC70 18%, #FFF5D8 34%, #FFD700 50%, #FFAA00 66%, #FFD700 82%, #FFCC70 100%);
    background-size: 240% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
    animation: sweepGoldText 3s linear infinite;
  }
  @keyframes sweepGoldText { to { background-position: 240% center; } }
  .week-result { font-family: var(--font-mono); font-size: 11px; color: var(--txt-2); letter-spacing: .04em; }
  .week-result b { color: var(--zap-bright); font-weight: 600; }
  /* 周冠军战绩图 */
  .week-card .week-img {
    position: relative; z-index: 2; margin-top: 16px; border-radius: 14px; overflow: hidden;
    border: 1px solid rgba(255,215,0,.3); border-bottom-color: rgba(255,215,0,.15);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.16), 0 18px 44px -18px rgba(255,46,159,.45), 0 6px 18px rgba(0,0,0,.6);
    transition: transform .4s var(--ease), box-shadow .4s var(--ease);
  }
  .week-card .week-img:hover { transform: translateY(-3px) scale(1.006); box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 28px 60px -20px rgba(255,46,159,.55), 0 8px 22px rgba(0,0,0,.65); }
  .week-card .week-img img { display: block; width: 100%; height: auto; }
  .week-card .week-img .week-img-cap {
    position: absolute; left: 12px; bottom: 12px;
    font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: #fff;
    background: rgba(4,2,8,.78); border: 1px solid rgba(255,215,0,.35);
    padding: 5px 12px; border-radius: 999px;
    box-shadow: 0 3px 10px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.12);
    backdrop-filter: blur(4px);
  }
  .week-card .roster { position: relative; z-index: 2; margin-top: 16px; }
  /* 冠军队 roster 表 */
  .roster {
    border: 1px solid var(--zap-white-10); border-radius: 14px; overflow: hidden;
    background: linear-gradient(180deg, rgba(7,3,10,.55), rgba(7,3,10,.45));
    box-shadow: inset 0 1px 0 rgba(245,238,247,.08), 0 12px 34px -14px rgba(0,0,0,.7);
  }
  .roster-head {
    display: grid; grid-template-columns: 28px 1fr 1fr 1fr; gap: 10px;
    padding: 10px 14px; background: rgba(255,215,0,.12); border-bottom: 1px solid rgba(255,215,0,.22);
    font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: #FFCC70; text-transform: uppercase;
  }
  .roster-row {
    display: grid; grid-template-columns: 28px 1fr 1fr 1fr; gap: 10px; align-items: center;
    padding: 10px 14px; border-bottom: 1px solid var(--zap-white-04);
    font-size: 13px; color: var(--txt-1);
  }
  .roster-row:last-child { border-bottom: 0; }
  .roster-row:hover { background: rgba(255,215,0,.05); }
  .roster-row .num { font-family: var(--font-display); font-weight: 900; color: #FFCC70; }
  .roster-row .role { font-family: var(--font-mono); font-size: 11px; color: var(--zap-bright); }
  .roster-row .dull { color: var(--txt-3); font-family: var(--font-mono); font-size: 12px; }
  .roster-sub {
    padding: 10px 14px;
    border-top: 1px dashed rgba(255,204,112,.35); background: rgba(255,204,112,.06);
    font-size: 12px; color: var(--txt-2); line-height: 1.6;
  }
  .roster-sub b { color: #FFCC70; font-weight: 600; margin-right: 6px; }
  @media (max-width: 980px) { .week-main { gap: 10px; } .week-no { min-width: 38px; } }

  /* 积分榜冠军行 */
  tr.champion-row td { background: linear-gradient(90deg, rgba(255,215,0,.06), transparent); }
  tr.champion-row td:first-child { border-left: 3px solid #FFD700; }
  .crown-mini { color: #FFD700; text-shadow: 0 0 10px rgba(255,215,0,.45); margin-right: 6px; font-size: 13px; }
  .team-name-gold b { background: linear-gradient(135deg, #FFD700 0%, #FFCC70 55%, #FFAA00 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-weight: 900; }

  /* ===== 双栏布局 ===== */
  .duo { display: grid; grid-template-columns: 1.55fr 1fr; gap: 18px; align-items: start; perspective: 1300px; }
  @media (max-width: 980px) { .duo { grid-template-columns: 1fr; } }

  /* ===== 主双栏：每周冠军 / 月度积分 各自独立居中 ===== */
  .duo-champ-standings { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: stretch; perspective: 1300px; }
  @media (max-width: 1020px) { .duo-champ-standings { grid-template-columns: 1fr; } }
  .duo-champ-standings .panel { display: flex; flex-direction: column; min-width: 0; }
  .duo-champ-standings .panel > .panel-head { flex-shrink: 0; justify-content: center; flex-direction: column; gap: 8px; text-align: center; }
  .duo-champ-standings .panel > div:last-child { flex: 1; min-height: 0; }
  .duo-champ-standings .panel .scroll-y { max-height: 100%; overflow-y: auto; }
  .week-showcase .panel-head { background: linear-gradient(180deg, rgba(255,204,112,.08), transparent); }
  .week-showcase .panel-head h3, .standings-panel .panel-head h3 { font-size: 20px; }
  /* 每周冠军内容居中 */
  .week-timeline { display: flex; flex-direction: column; gap: 12px; padding: 18px 20px; }
  .week-timeline .week-card { align-items: center; text-align: center; }
  .week-timeline .week-main { justify-content: center; text-align: center; }
  .week-timeline .week-no { min-width: 0; }
  .week-timeline .week-info { flex: 0 1 auto; }
  /* 月度积分榜内容居中 */
  .standings-panel .panel-head .tag { text-align: center; }
  .standings-panel table { margin: 0 auto; }
  .standings-panel tbody td { text-align: center; }
  .standings-panel thead th { text-align: center; }

  /* ===== 数据中心 HERO：直播间独占 ===== */
  .datahub-header {
    display: block; margin-bottom: 22px;
  }
  .datahub-header.live-only .dh-center {
    position: relative;
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    aspect-ratio: 16 / 9;
  }
  @media (max-width: 1100px) { .datahub-header.live-only .dh-center { max-width: 100%; } }
  .dh-side {
    border: 1px solid var(--zap-white-10); border-radius: var(--radius); padding: 16px 18px;
    background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.55) 50%, rgba(7,3,10,.65));
    box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 14px 34px -18px rgba(0,0,0,.8);
    display: flex; flex-direction: column; min-height: 0;
  }
  .dh-side h4 {
    font-family: var(--font-display); font-weight: 900; font-size: 14px; letter-spacing: .04em;
    color: var(--txt-1); margin-bottom: 12px; display: flex; align-items: center; gap: 8px;
  }
  .dh-side h4 .dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
  .dh-live h4 .dot { background: #FF4A4A; box-shadow: 0 0 10px #FF4A4A; animation: livePulse 1.4s ease-in-out infinite; }
  @keyframes livePulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.55;transform:scale(1.35)} }
  .dh-done h4 .dot { background: #FFD700; box-shadow: 0 0 10px rgba(255,215,0,.8); }
  .dh-list { display: flex; flex-direction: column; gap: 8px; flex: 1; overflow-y: auto; }
  /* 月度积分迷你榜（数据中心右侧） */
  .dh-stand-row {
    display: flex; align-items: center; gap: 10px; flex: none;
    border: 1px solid var(--zap-white-10); border-radius: 10px; padding: 9px 12px;
    background: rgba(7,3,10,.45); transition: all .2s;
  }
  .dh-stand-row:hover { border-color: rgba(255,215,0,.35); background: rgba(255,215,0,.05); }
  .dh-stand-row .ds-rank { font-family: var(--font-mono); font-size: 12px; font-weight: 800; color: var(--txt-3); width: 24px; text-align: center; flex: none; }
  .dh-stand-row.ds-top .ds-rank { color: #FFD700; text-shadow: 0 0 8px rgba(255,215,0,.6); }
  .dh-stand-row .ds-team { font-size: 13px; font-weight: 700; color: var(--txt-1); flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; overflow: hidden; }
  .dh-stand-row .ds-team .team-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
  .dh-stand-row .ds-team b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .dh-stand-row .ds-pts { font-family: var(--font-display); font-weight: 900; font-size: 16px; color: #FFD700; flex: none; }
  .dh-stand-foot { margin-top: auto; padding-top: 10px; text-align: center; font-family: var(--font-mono); font-size: 10px; letter-spacing: .12em; color: var(--txt-3); opacity: .75; }
  .dh-match {
    border: 1px solid var(--zap-white-10); border-radius: 10px; padding: 10px 12px;
    background: rgba(7,3,10,.45); transition: all .2s;
  }
  .dh-match:hover { border-color: var(--zap-pink-35); background: rgba(255,46,159,.08); }
  .dh-match .dh-meta { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; color: var(--txt-3); margin-bottom: 4px; }
  .dh-match .dh-teams { font-size: 13px; font-weight: 700; color: var(--txt-1); }
  .dh-match .dh-teams .vs { font-family: var(--font-mono); font-size: 10px; color: var(--txt-3); margin: 0 6px; }
  .dh-match .dh-status { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; margin-top: 5px; }
  .dh-match.live .dh-status { color: #FF8A8A; }
  .dh-match.open .dh-status { color: var(--zap-bright); }
  .dh-match.done .dh-status { color: var(--zap-cyan); }
  .dh-empty { margin-top: auto; margin-bottom: auto; text-align: center; font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); letter-spacing: .1em; opacity: .7; }
  .dh-center { position: relative; border: 1px solid rgba(255,46,159,.35); border-radius: var(--radius); overflow: hidden;
    background: #050308;
    box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 24px 60px -24px rgba(255,46,159,.45), 0 10px 30px rgba(0,0,0,.7);
  }
  .livestream-box { position: relative; width: 100%; height: 100%; min-height: 280px; }
  .livestream-box iframe { display: block; width: 100%; height: 100%; border: 0; background: #000; }
  .livestream-box video {
    display: none; width: 100%; height: 100%; object-fit: contain; background: #000;
  }
  .livestream-box .live-status {
    position: absolute; left: 12px; top: 12px; z-index: 4;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 7px 12px; border-radius: 999px;
    background: rgba(5,2,10,.68); backdrop-filter: blur(6px);
    border: 1px solid rgba(255,46,159,.4);
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; color: #fff;
    transition: border-color .3s, background .3s;
  }
  .livestream-box .live-status.is-hidden { display: none; }
  .livestream-box.is-live .live-status { border-color: rgba(61,255,139,.55); background: rgba(0,30,10,.72); }
  .livestream-box.is-rerun .live-status { border-color: rgba(255,193,69,.55); background: rgba(40,25,0,.72); }
  .livestream-box.is-offline .live-status { display: none; }
  .live-status .ls-pulse {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--zap-pink);
    animation: lsPulse 1.4s ease-out infinite;
  }
  .livestream-box.is-live .ls-pulse { background: #3dff8b; box-shadow: 0 0 0 0 rgba(61,255,139,.55); }
  .livestream-box.is-rerun .ls-pulse { background: #ffc145; box-shadow: 0 0 0 0 rgba(255,193,69,.55); }
  @keyframes lsPulse {
    0% { box-shadow: 0 0 0 0 rgba(255,46,159,.55); }
    70% { box-shadow: 0 0 0 10px rgba(255,46,159,0); }
    100% { box-shadow: 0 0 0 0 rgba(255,46,159,0); }
  }
  .livestream-box.is-live .ls-pulse { box-shadow: 0 0 0 0 rgba(61,255,139,.55); }
  .livestream-box.is-rerun .ls-pulse { box-shadow: 0 0 0 0 rgba(255,193,69,.55); }
  .live-status .ls-sound {
    appearance: none; border: 0; cursor: pointer; background: none; color: #fff;
    font-size: 13px; line-height: 1; padding: 2px 2px 2px 6px; margin-left: 4px;
    border-left: 1px solid rgba(255,255,255,.22); opacity: .85; transition: opacity .2s;
  }
  .live-status .ls-sound:hover { opacity: 1; }
  .livestream-box.is-live .live-overlay {
    opacity: 0; transform: translateX(-50%) translateY(6px); pointer-events: none; transition: all .25s var(--ease);
  }
  .livestream-box.is-live:hover .live-overlay {
    opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto;
  }
  .livestream-box.is-offline .live-overlay, .livestream-box.is-error .live-overlay { display: none; }
  .livestream-box .live-fallback {
    position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
    background: linear-gradient(160deg, rgba(255,79,216,.12), rgba(7,3,10,.85)), url('bg-zap-map.webp') center/cover;
    text-align: center; padding: 24px; pointer-events: auto; transition: opacity .35s var(--ease);
  }
  .livestream-box .live-fallback.is-hidden { opacity: 0; pointer-events: none; }
  .livestream-box iframe[src] { opacity: 1; }
  .live-fallback .live-logo { font-family: var(--font-display); font-weight: 900; font-size: 28px; color: #fff; text-shadow: 0 0 24px rgba(255,46,159,.6); }
  .live-fallback .live-room { font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; color: var(--zap-bright); }
  .live-fallback .live-room-sub { font-family: var(--font-ui); font-size: 12px; color: var(--txt-3); letter-spacing: .04em; margin-top: -8px; }
  .live-play {
    appearance: none; border: 0; cursor: pointer;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 11px 22px; border-radius: 999px;
    background: linear-gradient(135deg, var(--zap-pink), var(--zap-magenta)); color: #fff;
    font-size: 13px; font-weight: 800; letter-spacing: .05em;
    box-shadow: 0 10px 26px -10px rgba(255,46,159,.65), inset 0 1px 0 rgba(255,255,255,.2);
    transition: all .25s var(--ease);
  }
  .live-play:hover { transform: translateY(-2px); box-shadow: 0 14px 34px -10px rgba(255,46,159,.85); }
  .live-overlay {
    position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%);
    display: inline-flex; align-items: center; gap: 8px; z-index: 3; pointer-events: auto;
    padding: 10px 20px; border-radius: 999px; text-decoration: none;
    background: linear-gradient(135deg, var(--zap-pink), var(--zap-magenta)); color: #fff;
    font-size: 13px; font-weight: 800; letter-spacing: .05em;
    box-shadow: 0 10px 26px -10px rgba(255,46,159,.65), inset 0 1px 0 rgba(255,255,255,.2);
    transition: all .25s var(--ease);
  }
  .live-overlay:hover { transform: translateX(-50%) translateY(-2px); box-shadow: 0 14px 34px -10px rgba(255,46,159,.85); }
  .datahub-body .sec-head { margin-top: 42px; }
  .datahub-body .sec-head:first-child { margin-top: 0; }
  .datahub-body .duo { grid-template-columns: 1fr 1fr; }

  /* 每周冠军陈列列表 */
  .champ-history-list { display: flex; flex-direction: column; }
  .h-row {
    display: grid; grid-template-columns: 58px 1fr auto; gap: 12px; align-items: center;
    padding: 12px 18px; border-bottom: 1px solid var(--zap-white-04);
    transition: background .2s;
  }
  .h-row:last-child { border-bottom: 0; }
  .h-row:hover { background: var(--zap-pink-06); }
  .h-row .h-week { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; color: var(--txt-3); }
  .h-row.cur .h-week { color: #FFCC70; }
  .h-row .h-team { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; color: var(--txt-1); min-width: 0; }
  .h-row .h-team .crown-emoji { font-size: 14px; }
  .h-row.cur .h-team { background: linear-gradient(135deg, #FFD700 0%, #FFCC70 55%, #FFAA00 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-weight: 900; }
  .h-row .h-sub { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); text-align: right; line-height: 1.7; }
  .h-row .h-sub b { color: var(--zap-bright); font-weight: 400; }
  .h-row .h-badge { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; color: #FFCC70; border: 1px solid rgba(255,204,112,.4); border-radius: 999px; padding: 1px 8px; margin-left: 6px; }

  /* 可点击行/卡 */
  .match-row { cursor: pointer; }
  .match-row:hover .mr-score b { text-shadow: 0 0 18px rgba(255,79,216,.6); }
  .map-card { cursor: pointer; }
  .player-row { cursor: pointer; transition: background .15s; }
  .player-row:hover { background: rgba(255,46,159,.08); }
  .more-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 22px; border-top: 1px solid var(--zap-white-04); background: linear-gradient(0deg, rgba(255,79,216,.05), transparent); }
  .more-foot .more-note { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; color: var(--txt-3); }
  .more-foot .more-note b { color: var(--zap-bright); font-weight: 400; }
  .more-foot .more-btn { cursor: pointer; appearance: none; font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; color: #fff; padding: 8px 18px; transition: all .25s var(--ease); }
  .more-foot .more-btn:hover { box-shadow: inset 0 1px 0 rgba(255,255,255,.28), 0 4px 14px -2px rgba(255,46,159,.6); transform: translateY(-1px); }

  /* ===== 赛事详情弹窗 ===== */
  .modal-mask {
    position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center;
    background: rgba(4,2,8,.72); backdrop-filter: blur(8px);
    animation: fadeIn .25s ease both; padding: 20px;
  }
  .modal {
    width: min(640px, 94vw); max-height: 86vh; overflow-y: auto;
    border: 1px solid var(--zap-pink-35); border-radius: var(--radius);
    background: linear-gradient(170deg, rgba(255,79,216,.09), rgba(7,3,10,.92) 40%), #0A070F;
    box-shadow: inset 0 1px 0 rgba(245,238,247,.16), 0 40px 90px -30px rgba(255,46,159,.5), 0 20px 60px rgba(0,0,0,.8);
    animation: fadeUp .35s var(--ease) both; position: relative;
  }
  .modal-head { padding: 22px 26px 16px; border-bottom: 1px solid var(--zap-white-06); }
  .modal-head .m-tag { font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em; color: #78F0FF; border: 1px solid rgba(120,240,255,.55); background: rgba(120,240,255,.08); border-radius: 999px; padding: 4px 12px; display: inline-block; margin-bottom: 12px; }
  .modal-head h3 { font-family: var(--font-display); font-weight: 900; font-size: clamp(22px, 3.2vw, 30px); color: #fff; letter-spacing: .02em; }
  .modal-head h3 b { color: var(--zap-bright); }
  .modal-close {
    position: absolute; top: 12px; right: 12px; appearance: none; cursor: pointer;
    width: 38px; height: 38px; border-radius: 12px; border: 1px solid rgba(245,238,247,.25);
    background: rgba(255,46,159,.12); color: #fff; font-size: 22px; line-height: 1;
    transition: all .2s; display: flex; align-items: center; justify-content: center;
    box-shadow: 0 4px 14px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.12);
  }
  .modal-close:hover { color: #fff; border-color: var(--zap-bright); background: var(--zap-bright); box-shadow: 0 6px 20px rgba(255,46,159,.45); }
  .modal-body { padding: 20px 26px 26px; }
  .dm-score-line {
    display: flex; align-items: center; justify-content: center; gap: 18px;
    font-family: var(--font-display); font-weight: 900; margin: 6px 0 18px;
  }
  .dm-score-line .t { font-size: clamp(16px, 2.4vw, 22px); color: var(--txt-2); max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .dm-score-line .t.win { color: var(--zap-bright); text-shadow: 0 0 20px rgba(255,79,216,.4); }
  .dm-score-line .s { font-size: clamp(30px, 5vw, 44px); color: var(--txt-1); letter-spacing: .04em; }
  .dm-score-line .s b { color: var(--zap-bright); }
  .dm-maps { display: flex; flex-direction: column; gap: 10px; }
  .dm-map {
    display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; align-items: center;
    padding: 12px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px;
    background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5));
  }
  .dm-map .dm-name { font-family: var(--font-display); font-weight: 900; font-size: 15px; color: var(--txt-1); }
  .dm-map .dm-score { font-family: var(--font-display); font-weight: 900; font-size: 20px; color: var(--txt-3); letter-spacing: .06em; }
  .dm-map .dm-score b { color: var(--zap-bright); }
  .dm-map .dm-note { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); text-align: right; }
  .dm-map .dm-note b { color: var(--txt-2); font-weight: 400; }
  .dm-list { display: flex; flex-direction: column; }
  .dm-list .h-row { cursor: default; }
  .dm-empty { text-align: center; color: var(--txt-3); font-family: var(--font-mono); font-size: 12px; letter-spacing: .1em; padding: 26px 0; }
  .pstat-table { width: 100%; border-collapse: collapse; }
  .pstat-table th {
    font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: var(--txt-3);
    text-align: center; padding: 8px 14px; border-bottom: 1px solid var(--zap-white-10);
    text-transform: uppercase; white-space: nowrap;
  }
  .pstat-table th:first-child { text-align: left; padding-left: 18px; }
  .pstat-table td {
    padding: 12px 14px; text-align: center; border-bottom: 1px solid var(--zap-white-04);
    font-family: var(--font-display); font-weight: 900; font-size: 18px; color: var(--txt-1);
    font-variant-numeric: tabular-nums; white-space: nowrap;
  }
  .pstat-table td:first-child { text-align: left; padding-left: 18px; font-family: var(--font-ui); font-weight: 500; font-size: 13px; color: var(--txt-2); }
  .pstat-table td b { color: var(--zap-bright); }
  .pstat-table tr:last-child td { border-bottom: 0; }
  .pstat-table tr:hover td { background: rgba(255,46,159,.05); }

  /* ===== 比赛详情弹窗：逐图选手数据 ===== */
  .match-maps-wrap { display: flex; flex-direction: column; gap: 22px; }
  .match-map-block { border: 1px solid var(--zap-white-10); border-radius: 14px; background: linear-gradient(160deg, rgba(255,79,216,.05), rgba(7,3,10,.45)); overflow: hidden; }
  .mmb-title { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--zap-white-10); background: rgba(0,0,0,.22); }
  .mmb-map { font-family: var(--font-display); font-weight: 900; font-size: 16px; color: var(--txt-1); cursor: pointer; display: inline-flex; align-items: center; gap: 8px; }
  .mmb-map::before { content: '▾'; font-size: 12px; color: var(--zap-bright); transition: transform .2s ease; }
  .match-map-block.collapsed .mmb-map::before { transform: rotate(-90deg); }
  .match-map-block.collapsed .mmb-teams { display: none; }
  .match-map-block.collapsed .mmb-title { border-bottom: 0; }
  .mmb-title { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--zap-white-10); background: rgba(0,0,0,.22); }
  .mmb-score { font-family: var(--font-display); font-weight: 900; font-size: 24px; color: var(--txt-3); letter-spacing: .06em; }
  .mmb-score b { color: var(--zap-bright); }
  .mmb-winner { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); text-align: right; }
  .mmb-teams { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
  @media (max-width: 760px) { .mmb-teams { grid-template-columns: 1fr; } }
  .match-team-table { border-right: 1px solid var(--zap-white-08); }
  .match-team-table:last-child { border-right: 0; }
  @media (max-width: 760px) { .match-team-table { border-right: 0; border-bottom: 1px solid var(--zap-white-08); } .match-team-table:last-child { border-bottom: 0; } }
  .mtt-head { display: flex; align-items: center; gap: 8px; padding: 12px 16px; font-family: var(--font-display); font-weight: 900; font-size: 13px; color: var(--txt-2); background: rgba(0,0,0,.18); }
  .mtt-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--team-color, #888); box-shadow: 0 0 8px var(--team-color, #888); }
  .mtt-count { margin-left: auto; font-family: var(--font-mono); font-size: 10px; color: var(--txt-3); font-weight: 400; }
  .pstat-table--match td { padding: 9px 10px; font-size: 14px; }
  .pstat-table--match th { padding: 8px 10px; font-size: 9px; }
  .pstat-table--match td:first-child { padding-left: 14px; font-size: 12px; }

  /* ===== 地图池 ===== */
  .map-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; perspective: 1100px; }
  @media (max-width: 1200px) { .map-grid { grid-template-columns: repeat(4, 1fr); gap: 12px; } }
  @media (max-width: 760px) { .map-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; } }
  .map-card { position: relative; overflow: hidden; display: flex; flex-direction: column; aspect-ratio: 1 / 1; border: 1px solid var(--zap-white-10); border-radius: var(--radius); padding: 0; background: rgba(7,3,10,.55); box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 14px 32px -18px rgba(0,0,0,.8); transition: transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease); }
  .map-card:hover { transform: translateY(-4px) rotateX(2deg); border-color: var(--zap-pink-35); box-shadow: inset 0 1px 0 rgba(245,238,247,.18), 0 26px 48px -20px rgba(255,46,159,.4); }
  .map-card.hot { border-color: var(--zap-pink-35); }
  .map-card .m-logo { width: 100%; height: 100%; flex: 1; min-height: 0; object-fit: contain; object-position: center; padding: 6px 6px 0; display: block; filter: drop-shadow(0 4px 10px rgba(0,0,0,.45)) saturate(1.05); transition: transform .35s var(--ease), filter .35s var(--ease); }
  .map-card:hover .m-logo { transform: scale(1.05); filter: drop-shadow(0 6px 16px rgba(255,46,159,.35)) saturate(1.15); }
  .map-card.unplayed .m-logo { opacity: .35; filter: grayscale(1) drop-shadow(0 2px 6px rgba(0,0,0,.35)); }
  .map-card.unplayed:hover .m-logo { opacity: .55; filter: grayscale(.6) drop-shadow(0 4px 10px rgba(0,0,0,.45)); }
  .map-card .m-info { display: flex; align-items: center; justify-content: space-between; gap: 4px; padding: 4px 8px; background: linear-gradient(180deg, rgba(7,3,10,.35), rgba(7,3,10,.94)); border-top: 1px solid var(--zap-white-10); }
  .map-card .m-info .m-name { font-family: var(--font-display); font-weight: 900; font-size: 11px; color: var(--txt-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .map-card .m-info .m-count { font-family: var(--font-mono); font-size: 9px; color: var(--txt-3); white-space: nowrap; }
  .map-card .m-info .m-count b { font-family: var(--font-display); font-weight: 900; font-size: 12px; color: var(--zap-bright); font-variant-numeric: tabular-nums; }
  .map-card .hot-tag { position: absolute; top: 6px; right: 6px; z-index: 2; font-family: var(--font-mono); font-size: 8px; letter-spacing: .1em; padding: 1px 6px; }
  .map-team-row { cursor: pointer; transition: background .15s, transform .15s; }
  .map-team-row:hover { background: rgba(255,46,159,.08); transform: translateX(4px); }
  .map-team-row.active { background: rgba(255,46,159,.14); border-color: var(--zap-pink-35); }

  /* ===== 赛果列表 ===== */
  .match-list { display: flex; flex-direction: column; }

  /* ===== 赛程安排 ===== */
  .duo-sched { grid-template-columns: 1fr 1fr; align-items: stretch; }
  @media (max-width: 980px) { .duo-sched { grid-template-columns: 1fr; } }
  .duo-sched > .panel { display: flex; flex-direction: column; }
  .duo-sched .sched-list, .duo-sched .match-list { flex: 1; }
  .sched-list { display: flex; flex-direction: column; }
  .sched-row {
    display: grid; grid-template-columns: 88px 1fr auto; gap: 14px; align-items: center;
    padding: 13px 20px; border-bottom: 1px solid var(--zap-white-04);
  }
  .sched-row:last-child { border-bottom: 0; }
  .sched-row:hover { background: var(--zap-pink-06); }
  .sched-row .sr-time { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); letter-spacing: .06em; line-height: 1.8; }
  .sched-row .sr-time .type { display: block; color: var(--zap-cyan); }
  .sched-row .sr-time .mine-count { display: block; margin-top: 2px; padding: 1px 8px; width: fit-content; border-radius: 999px; border: 1px solid rgba(61,255,139,.35); background: rgba(0,30,10,.5); color: #3dfe8b; font-size: 10px; letter-spacing: .08em; }
  .sched-row .sr-teams { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 14px; font-weight: 600; color: var(--txt-1); }
  .sched-row .sr-teams .vs { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); font-weight: 400; }
  .sched-row .sr-teams .tbd { color: var(--txt-3); font-weight: 400; font-size: 13px; }
  .sched-row .sr-note { margin-top: 4px; font-family: var(--font-mono); font-size: 10px; color: var(--txt-3); letter-spacing: .04em; }
  .sched-row .sr-status {
    font-family: var(--font-mono); font-size: 10px; letter-spacing: .12em; white-space: nowrap;
    padding: 4px 12px; border-radius: 999px; border: 1px solid;
  }
  .sched-row .sr-status.wait { color: #FFCC70; border-color: rgba(255,204,112,.45); background: rgba(255,204,112,.08); box-shadow: 0 0 12px rgba(255,204,112,.15); }
  .sched-row .sr-status.open { color: var(--zap-bright); border-color: rgba(255,79,216,.45); background: rgba(255,79,216,.08); box-shadow: 0 0 12px rgba(255,79,216,.18); }
  .sched-empty { padding: 26px 20px; text-align: center; font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); letter-spacing: .1em; }
  .match-row { display: grid; grid-template-columns: 92px 1fr auto; gap: 14px; align-items: center; padding: 14px 22px; border-bottom: 1px solid var(--zap-white-04); }
  .match-row:last-child { border-bottom: 0; }
  .match-row:hover { background: var(--zap-pink-06); }
  .mr-time { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); letter-spacing: .06em; line-height: 1.8; }
  .mr-time .type { color: var(--zap-cyan); }
  .mr-main { min-width: 0; }
  .mr-teams { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .mr-teams .t { font-size: 14px; font-weight: 600; color: var(--txt-1); }
  .mr-teams .t.win { color: var(--zap-bright); }
  .mr-teams .vs { font-family: var(--font-mono); font-size: 11px; color: var(--txt-3); }
  .mr-maps { margin-top: 4px; display: flex; gap: 8px; flex-wrap: wrap; }
  .mr-map { font-family: var(--font-mono); font-size: 10px; color: var(--txt-3); letter-spacing: .04em; }
  .mr-map b { color: var(--txt-2); font-weight: 400; }
  .mr-score { font-family: var(--font-display); font-weight: 900; font-size: 24px; color: var(--txt-1); letter-spacing: .04em; }
  .mr-score b { color: var(--zap-bright); }

  /* ===== 报名参赛页：三大报名方式卡片 ===== */
  .signup-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 16px; }
  .su-card {
    display: flex; flex-direction: column; gap: 6px;
    padding: 22px 22px 20px; border-radius: 14px;
    border: 1px solid var(--zap-white-10); background: var(--zap-white-03);
    transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
  }
  .su-card:hover { transform: translateY(-4px); border-color: rgba(255,79,216,.4); box-shadow: 0 14px 34px rgba(0,0,0,.35), 0 0 22px rgba(255,79,216,.08); }
  .su-challenge { border-color: rgba(255,204,112,.35); background: linear-gradient(160deg, rgba(255,204,112,.07), rgba(255,255,255,.02) 55%); }
  .su-challenge:hover { border-color: rgba(255,204,112,.6); box-shadow: 0 14px 34px rgba(0,0,0,.35), 0 0 22px rgba(255,204,112,.12); }
  .su-icon { font-size: 30px; line-height: 1; filter: drop-shadow(0 4px 12px rgba(0,0,0,.4)); }
  .su-card h4 { margin: 6px 0 0; font-size: 19px; font-weight: 800; color: var(--txt-1); letter-spacing: .02em; }
  .su-sub { font-family: var(--font-mono); font-size: 9px; color: var(--txt-3); letter-spacing: .22em; margin-bottom: 8px; }
  .su-card ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; flex: 1; }
  .su-card li { position: relative; padding-left: 16px; font-size: 12.5px; line-height: 1.65; color: var(--txt-2); }
  .su-card li::before { content: ''; position: absolute; left: 0; top: 8px; width: 6px; height: 6px; border-radius: 2px; background: var(--zap-pink); transform: rotate(45deg); }
  .su-challenge li::before { background: #FFCC70; }
  .su-card li b { color: var(--txt-1); font-weight: 700; }
  .su-cta {
    margin-top: 14px; text-align: center; display: block; padding: 10px 14px; border-radius: 10px;
    font-size: 13px; font-weight: 700; letter-spacing: .06em; text-decoration: none;
    color: var(--txt-1); border: 1px solid rgba(255,79,216,.45); background: rgba(255,79,216,.1);
    transition: background .2s ease, box-shadow .2s ease;
  }
  .su-cta:hover { background: rgba(255,79,216,.2); box-shadow: 0 0 18px rgba(255,79,216,.25); }
  .su-challenge .su-cta { border-color: rgba(255,204,112,.5); background: rgba(255,204,112,.1); }
  .su-challenge .su-cta:hover { background: rgba(255,204,112,.18); box-shadow: 0 0 18px rgba(255,204,112,.25); }
  @media (max-width: 980px) { .signup-grid { grid-template-columns: 1fr; } }

  /* ===== 页脚 ===== */
  .foot { margin-top: 60px; padding-top: 20px; border-top: 1px solid var(--zap-white-10); display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; color: var(--txt-3); }
  .foot a { color: var(--txt-2); text-decoration: none; }
  .foot a:hover { color: var(--zap-bright); }

  /* ===== 子页面（规则/奖品/报名/个人中心/我的比赛） ===== */
  .back-link {
    font-family: var(--font-mono); font-size: 12px; letter-spacing: .12em; color: var(--txt-2);
    text-decoration: none; border: 1px solid var(--zap-white-10); border-radius: 999px; padding: 8px 18px;
    transition: all .25s var(--ease);
  }
  .back-link:hover { color: #fff; border-color: var(--zap-pink-35); box-shadow: 0 0 18px rgba(255,46,159,.25); }
  .page-hero { text-align: center; padding: 34px 0 12px; }
  .page-hero .crumb {
    font-family: var(--font-mono); font-size: 13px; letter-spacing: .3em; color: var(--txt-2);
    text-transform: uppercase; display: inline-flex; align-items: center; gap: 12px;
  }
  .page-hero .crumb::before, .page-hero .crumb::after { content: ""; width: 44px; height: 1px; background: linear-gradient(90deg, transparent, var(--zap-pink-35)); }
  .page-hero .crumb::after { background: linear-gradient(90deg, var(--zap-pink-35), transparent); }
  .page-hero h1 { font-family: var(--font-display); font-weight: 900; font-size: clamp(26px, 4.4vw, 40px); margin-top: 14px; letter-spacing: .02em; }
  .page-hero .sub { margin-top: 8px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; color: var(--txt-3); text-transform: uppercase; }
  .page-card {
    border: 1px solid var(--zap-white-10); border-radius: var(--radius);
    background: rgba(7,3,10,.55); backdrop-filter: blur(8px);
    box-shadow: inset 0 1px 0 rgba(245,238,247,.1), 0 14px 32px -18px rgba(0,0,0,.8);
    padding: 26px 30px; margin-top: 20px;
  }
  .page-card.hero-cta {
    display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 18px;
    border-color: var(--zap-pink-35); background:
      radial-gradient(70% 120% at 50% 0%, rgba(255,46,159,.16), transparent 60%),
      rgba(7,3,10,.65);
  }
  .page-card.hero-cta .cta-text { text-align: center; }
  .page-card.hero-cta .cta-text h3 { font-family: var(--font-display); font-weight: 900; font-size: 22px; color: var(--txt-1); }
  .page-card.hero-cta .cta-text p { margin-top: 6px; font-size: 13px; color: var(--txt-2); }
  .page-card.hero-cta .nav-cta { margin-top: 0; }
  .page-card .page-intro { font-family: var(--font-display); font-weight: 900; font-size: 17px; color: var(--zap-bright); margin-bottom: 16px; letter-spacing: .02em; }
  .page-card .nav-sec h4 { font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em; color: var(--zap-cyan); text-transform: uppercase; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--zap-white-10); }
  .page-card .nav-sec ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
  .page-card .nav-sec li { position: relative; padding-left: 18px; font-size: 14px; color: var(--txt-1); line-height: 1.6; }
  .page-card .nav-sec li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 6px; height: 6px; border-radius: 2px; background: linear-gradient(135deg, var(--zap-pink), var(--zap-bright)); }
  .page-card .nav-reward { padding: 14px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); margin-bottom: 12px; }
  .page-card .nav-reward:last-child { margin-bottom: 0; }
  .page-card .nav-reward.gold { border-color: rgba(255,215,0,.35); background: linear-gradient(160deg, rgba(255,204,112,.1), rgba(7,3,10,.5)); }
  .page-card .nav-reward .r-title { font-family: var(--font-display); font-weight: 900; font-size: 16px; color: var(--txt-1); margin-bottom: 8px; display: flex; align-items: center; gap: 8px; }
  .page-card .nav-reward.gold .r-title { background: linear-gradient(135deg, #FFD700 0%, #FFCC70 55%, #FFAA00 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
  .page-card .nav-reward ul { list-style: none; display: flex; flex-direction: column; gap: 6px; }
  .page-card .nav-reward li { position: relative; padding-left: 18px; font-size: 13px; color: var(--txt-2); }
  .page-card .nav-reward li::before { content: "◆"; position: absolute; left: 0; top: 0; font-size: 10px; color: var(--zap-bright); }
  .page-card .nav-reward.gold li::before { color: #FFCC70; }
  .page-card .nav-contact-row { display: grid; grid-template-columns: 110px 1fr; gap: 10px 16px; padding: 14px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); font-size: 14px; }
  .page-card .nav-contact-row .k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; color: var(--txt-3); align-self: center; }
  .page-card .nav-contact-row .v { color: var(--txt-1); font-weight: 600; }
  .page-card .nav-contact-note { margin-top: 12px; font-size: 13px; color: var(--txt-2); line-height: 1.7; padding: 12px 16px; border-left: 3px solid var(--zap-pink); background: var(--zap-pink-06); border-radius: 0 10px 10px 0; }
  .reward-gallery { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--zap-white-10); }
  .reward-gallery > h4 { font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em; color: var(--zap-cyan); text-transform: uppercase; margin-bottom: 14px; }
  .rg-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
  @media (max-width: 1100px) { .rg-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 600px) { .rg-grid { grid-template-columns: 1fr; } }
  .rg-card { position: relative; margin:0; min-width:0; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); overflow: hidden; display: grid; grid-template-rows: 1fr auto; }
  .rg-card img { display:block; width:100%; aspect-ratio:4 / 3; object-fit:contain; padding:10px; background:rgba(0,0,0,.24); }
  .rg-card figcaption { min-height:48px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 10px; border-top:1px solid var(--zap-white-10); color:var(--txt-1); font-size:13px; }
  .rg-card figcaption b { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .rg-card figcaption .rg-tag { position:static; flex:0 0 auto; padding:3px 7px; font-size:9px; }
  .rg-card.gold { border-color: rgba(255,215,0,.35); background: linear-gradient(160deg, rgba(255,204,112,.08), rgba(7,3,10,.5)); }
  .rg-tag { position: absolute; left: 10px; top: 10px; padding: 4px 10px; border-radius: 999px; background: rgba(0,0,0,.45); border: 1px solid var(--zap-white-10); font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; color: #fff; }
  .rg-placeholder { font-family: var(--font-mono); font-size: 12px; color: var(--txt-3); letter-spacing: .1em; text-align: center; padding: 0 20px; }
  .rg-note { margin-top: 16px; font-size: 12px; color: var(--txt-3); line-height: 1.6; text-align: center; }
  .mine-card { display: flex; flex-direction: column; gap: 14px; }
  .mine-row { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--zap-white-10); border-radius: 12px; background: linear-gradient(160deg, rgba(255,79,216,.06), rgba(7,3,10,.5)); }
  .mine-row .k { font-size: 13px; color: var(--txt-3); }
  .mine-row .v { font-size: 15px; color: var(--txt-1); font-weight: 700; text-align: right; }
  .mine-empty { text-align: center; padding: 34px 0; color: var(--txt-3); font-family: var(--font-mono); font-size: 12px; letter-spacing: .1em; }
  .mine-empty .icon { font-size: 40px; margin-bottom: 12px; filter: drop-shadow(0 4px 14px rgba(255,46,159,.35)); }

  /* ===== 个人中心表单 ===== */
  .profile-form { display: flex; flex-direction: column; gap: 18px; }
  .pf-card { padding: 18px; border: 1px solid var(--zap-white-10); border-radius: 14px; background: linear-gradient(160deg, rgba(255,79,216,.05), rgba(7,3,10,.45)); }
  .pf-title { font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em; color: var(--zap-cyan); text-transform: uppercase; margin-bottom: 14px; padding-bottom: 8px; border-bottom: 1px solid var(--zap-white-10); }
  .pf-row { display: grid; grid-template-columns: 140px 1fr; gap: 12px; align-items: start; margin-bottom: 12px; }
  .pf-row:last-child { margin-bottom: 0; }
  @media (max-width: 760px) { .pf-row { grid-template-columns: 1fr; } }
  .pf-label { font-size: 13px; color: var(--txt-2); padding-top: 9px; }
  .pf-required { color: var(--zap-bright); margin-left: 3px; }
  .pf-input { width: 100%; padding: 9px 12px; border-radius: 10px; border: 1px solid var(--zap-white-10); background: rgba(0,0,0,.35); color: var(--txt-1); font-size: 14px; outline: none; transition: border-color .2s, box-shadow .2s; }
  .pf-input:focus { border-color: var(--zap-pink); box-shadow: 0 0 0 3px rgba(255,46,159,.12); }
  .pf-input:disabled { opacity: .55; cursor: not-allowed; }
  .pf-input--identity:disabled { color: var(--txt-3); background: rgba(255,255,255,.035); border-color: var(--zap-white-08); font-weight: 700; }
  .pf-textarea { min-height: 64px; resize: vertical; }
  .pf-hint { font-size: 12px; color: var(--txt-3); margin-top: 6px; line-height: 1.5; grid-column: 2; }
  @media (max-width: 760px) { .pf-hint { grid-column: 1; } }
  .pf-check { display: inline-flex; align-items: center; gap: 10px; color: var(--txt-1); font-size: 14px; cursor: pointer; margin-bottom: 10px; }
  .pf-check input { width: 18px; height: 18px; accent-color: var(--zap-pink); }
  .pf-status { color: var(--zap-bright); }
  .pf-status.verified { color: #ffd700; }
  .pf-status.pending { color: var(--zap-bright); }
  .pf-status.rejected { color: #ff6b6b; }
  .pf-status.none { color: var(--txt-3); }
  .pf-reason { color: var(--txt-3); font-size: 12px; margin-left: 6px; }
  .pf-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
  .pf-diamond { border-color: rgba(255,215,0,.25); background: linear-gradient(160deg, rgba(255,204,112,.06), rgba(7,3,10,.45)); }
  .pf-diamond-review { margin-top: 4px; padding-top: 10px; border-top: 1px dashed rgba(255,215,0,.2); }
  .pf-review-status { font-size: 13px; color: var(--txt-2); margin-top: 6px; }
  .pf-upload { display: inline-flex; align-items: center; gap: 8px; margin-top: 8px; padding: 8px 14px; border-radius: 10px; border: 1px dashed var(--zap-pink-35); background: rgba(255,46,159,.08); color: var(--zap-bright); font-size: 13px; cursor: pointer; transition: all .15s ease; }
  .pf-upload:hover { background: rgba(255,46,159,.14); border-color: var(--zap-pink); }
  .pf-upload input { display: none; }
  .pf-screenshot-thumb { margin: 6px 0 10px; }
  .pf-screenshot-thumb img { max-width: 160px; border-radius: 8px; border: 1px solid var(--zap-white-10); }
  .nav-cta.small { padding: 8px 16px; font-size: 13px; }
  .nav-cta:disabled { opacity: .55; cursor: not-allowed; transform: none !important; }

  /* 滚动条 */
  ::-webkit-scrollbar { height: 8px; width: 8px; }
  ::-webkit-scrollbar-thumb { background: var(--zap-pink-35); border-radius: 99px; }
  ::-webkit-scrollbar-track { background: transparent; }
