/* ===== 主题变量 ===== */
:root{
  --bg:#0b0f1a; --bg2:#121829; --panel:#161d31; --panel2:#1d2742;
  --line:#27314f; --text:#e8edf7; --muted:#8a96b3; --accent:#6366f1; --accent2:#22c55e;
  --radius:16px; --shadow:0 10px 30px rgba(0,0,0,.35);
  --maxw:1180px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:radial-gradient(1200px 600px at 70% -10%, #1b2540 0%, var(--bg) 55%) fixed, var(--bg);
  color:var(--text); font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  min-height:100vh; display:flex; flex-direction:column;
}
a{color:inherit;text-decoration:none}
.muted{color:var(--muted);font-weight:400;font-size:.85em}
.accent{color:var(--accent2)}

/* ===== 顶栏 ===== */
.topbar{
  position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:18px;
  padding:12px 22px;background:rgba(11,15,26,.82);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;white-space:nowrap}
.brand-mark{font-size:22px}
.brand-text b{color:var(--accent2)}
.search-wrap{flex:1;max-width:560px;margin:0 auto}
.search{
  width:100%;padding:11px 16px;border-radius:999px;border:1px solid var(--line);
  background:var(--panel);color:var(--text);font-size:14px;outline:none;transition:.2s;
}
.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(99,102,241,.2)}
.topnav{display:flex;gap:6px;align-items:center}
.topnav>a{padding:8px 14px;border-radius:10px;color:var(--muted);font-weight:600}
.topnav>a:hover{background:var(--panel);color:var(--text)}
.lang-menu{position:relative}
.lang-trigger{
  min-height:44px;display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:12px;
  border:1px solid color-mix(in srgb,var(--line) 72%,var(--accent));background:linear-gradient(135deg,rgba(29,39,66,.92),rgba(18,24,41,.92));
  color:var(--text);font:700 13px/1.2 inherit;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
  transition:border-color .18s,background .18s,box-shadow .18s,transform .18s;touch-action:manipulation;
}
.lang-trigger:hover,.lang-menu.open .lang-trigger{border-color:var(--accent);background:linear-gradient(135deg,rgba(99,102,241,.22),rgba(29,39,66,.96));box-shadow:0 8px 22px rgba(0,0,0,.22),0 0 0 1px rgba(99,102,241,.16) inset}
.lang-trigger:focus-visible{outline:none;border-color:var(--accent2);box-shadow:0 0 0 3px rgba(34,197,94,.24),0 8px 22px rgba(0,0,0,.24)}
.lang-icon,.lang-chevron{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;color:#a78bfa;flex-shrink:0}
.lang-chevron{width:15px;height:15px;color:var(--muted);transition:transform .18s}
.lang-menu.open .lang-chevron{transform:rotate(180deg)}
.lang-current{max-width:108px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lang-code{
  min-width:30px;height:24px;display:inline-grid;place-items:center;border-radius:8px;
  background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.28);color:#86efac;font-size:11px;font-weight:800;
}
.lang-options{
  position:absolute;right:0;top:calc(100% + 10px);width:240px;padding:8px;border:1px solid color-mix(in srgb,var(--line) 70%,var(--accent));
  border-radius:14px;background:rgba(18,24,41,.98);box-shadow:0 18px 46px rgba(0,0,0,.42);backdrop-filter:blur(14px);
  opacity:0;visibility:hidden;transform:translateY(8px) scale(.98);transform-origin:top right;transition:opacity .18s,transform .18s,visibility .18s;z-index:60;
}
.lang-menu.open .lang-options{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.lang-option{
  width:100%;min-height:44px;display:grid;grid-template-columns:42px 1fr 22px;align-items:center;gap:8px;
  padding:8px 10px;border:0;border-radius:10px;background:transparent;color:var(--text);font:600 13px/1.2 inherit;text-align:left;cursor:pointer;
  transition:background .16s,color .16s;
}
.lang-option:hover,.lang-option:focus-visible{outline:none;background:rgba(99,102,241,.16)}
.lang-option.active{background:rgba(34,197,94,.12);color:#f8fafc}
.lang-option-code{
  height:28px;display:grid;place-items:center;border-radius:8px;background:var(--panel2);color:#a78bfa;font-size:11px;font-weight:800;
}
.lang-option.active .lang-option-code{background:rgba(34,197,94,.16);color:#86efac}
.lang-option-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lang-option-check{opacity:0;color:#86efac;font-size:16px;font-weight:900;text-align:center}
.lang-option.active .lang-option-check{opacity:1}

/* 导航分类下拉 */
.nav-drop{position:relative}
.nav-drop-btn{padding:8px 14px;border-radius:10px;color:var(--muted);font-weight:600;background:transparent;border:0;cursor:pointer;font-size:15px;font-family:inherit}
.nav-drop-btn:hover{background:var(--panel);color:var(--text)}
.nav-drop-menu{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(6px);
  background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow);
  display:grid;grid-template-columns:1fr 1fr;gap:4px;min-width:380px;opacity:0;visibility:hidden;transition:.16s;z-index:40}
.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.nav-drop-item{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:10px;border-left:3px solid var(--cat)}
.nav-drop-item:hover{background:var(--panel2)}
.nav-drop-ico{font-size:18px}
.nav-drop-label{font-weight:600;font-size:13.5px;flex:1;white-space:nowrap}
.nav-drop-n{font-size:11px;color:var(--cat);font-weight:700}

/* 首页精简头部 + 过滤胶囊 */
.home-head{padding:6px 0 10px}
.home-h1{font-size:26px;font-weight:800;margin:0 0 6px}
.home-sub{color:var(--muted);font-size:14px;margin:0;max-width:760px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 24px;position:sticky;top:62px;z-index:20;
  padding:10px 0;background:linear-gradient(var(--bg),var(--bg) 70%,transparent)}
.chip{padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:.15s;white-space:nowrap}
.chip:hover{color:var(--text);border-color:var(--cat,var(--accent))}
.chip.active{background:color-mix(in srgb,var(--cat,var(--accent)) 22%,var(--panel));color:var(--text);border-color:var(--cat,var(--accent))}
.sec-link{display:inline-flex;align-items:center;gap:8px}
.sec-link:hover{color:var(--cat)}
.sec-ico{font-size:20px}
.section-title[style*="--cat"] .muted{font-weight:400}

main{flex:1;width:100%}
.page{max-width:var(--maxw);margin:0 auto;padding:26px 22px 60px}

/* ===== Hero ===== */
.hero{
  display:flex;gap:30px;align-items:center;justify-content:space-between;
  background:linear-gradient(135deg,var(--panel),var(--panel2));
  border:1px solid var(--line);border-radius:24px;padding:40px;margin-bottom:34px;overflow:hidden;
}
.hero-title{font-size:38px;line-height:1.15;margin:0 0 12px;font-weight:800}
.hero-title .accent{display:inline-block}
.hero-sub{color:var(--muted);font-size:16px;max-width:520px;margin:0 0 22px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}
.hero-art{width:380px;max-width:42%;flex-shrink:0}

/* ===== 按钮 ===== */
.btn{display:inline-flex;align-items:center;gap:6px;padding:11px 20px;border-radius:12px;border:1px solid var(--line);
  background:var(--panel);color:var(--text);font-weight:700;cursor:pointer;font-size:14px;transition:.18s;white-space:nowrap}
.btn:hover{transform:translateY(-1px);border-color:var(--accent)}
.btn.primary{background:linear-gradient(135deg,var(--accent),#818cf8);border-color:transparent;color:#fff}
.btn.primary:hover{box-shadow:0 8px 22px rgba(99,102,241,.4)}
.btn.ghost{background:transparent}
.btn.danger{color:#fca5a5;border-color:#5b2330}
.btn.danger:hover{background:#3a1620;border-color:#ef4444}
.btn.tiny{padding:6px 12px;font-size:12.5px;border-radius:9px}

/* ===== 分区 ===== */
.section{margin-bottom:38px}
.section-title{font-size:22px;font-weight:800;margin:0 0 18px;display:flex;align-items:baseline;gap:10px}

/* ===== 分类网格 ===== */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.cat-card{display:flex;align-items:center;gap:14px;padding:18px;border-radius:var(--radius);
  background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--cat);transition:.18s}
.cat-card:hover{transform:translateY(-2px);background:var(--panel2);box-shadow:var(--shadow)}
.cat-card h3{margin:0 0 3px;font-size:16px}
.cat-card p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.4}
.cat-icon{font-size:30px;width:54px;height:54px;display:grid;place-items:center;border-radius:14px;
  background:color-mix(in srgb,var(--cat) 20%,transparent);flex-shrink:0}
.cat-icon.big{font-size:40px;width:72px;height:72px}
.cat-count{margin-left:auto;font-size:12px;color:var(--cat);font-weight:700;white-space:nowrap}
.cat-head{display:flex;align-items:center;gap:18px;padding:24px;border-radius:20px;margin-bottom:24px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--cat) 14%,var(--panel)),var(--panel));border:1px solid var(--line)}
.cat-head h1{margin:0 0 6px}
.cat-head p{margin:0 0 4px;color:var(--muted)}

/* ===== 卡片网格 ===== */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;transition:.18s}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--accent)}
.card-thumb{position:relative;height:120px;background:var(--bg2);overflow:hidden}
.thumb-svg{width:100%;height:100%;display:block}
.card-img{width:100%;height:100%;display:block;object-fit:cover}
img.pro-avatar{border-radius:50%;object-fit:cover;background:var(--panel2)}
.badge{position:absolute;top:8px;font-size:11px;font-weight:700;padding:3px 8px;border-radius:7px;backdrop-filter:blur(4px)}
.badge.play{right:8px;background:rgba(34,197,94,.22);color:#86efac;border:1px solid rgba(34,197,94,.4)}
.badge.soon{right:8px;background:rgba(148,163,184,.2);color:#cbd5e1}
.badge.custom{left:8px;background:rgba(99,102,241,.25);color:#c7d2fe}
.card-body{padding:13px 15px;display:flex;flex-direction:column;gap:6px;flex:1}
.card-cat{font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.card-title{margin:0;font-size:15.5px;font-weight:700}
.card-desc{margin:0;font-size:12.5px;color:var(--muted);line-height:1.45;flex:1}
.card-best{margin-top:4px;font-size:12px;color:#fbbf24;border-top:1px dashed var(--line);padding-top:7px}

.crumb{font-size:13px;color:var(--muted);margin-bottom:16px}
.crumb a:hover{color:var(--text)}
.empty{color:var(--muted);padding:40px;text-align:center;background:var(--panel);border-radius:var(--radius);border:1px dashed var(--line)}

/* ===== 测试播放页 ===== */
.test-head{margin-bottom:18px}
.test-title{margin:0 0 8px;font-size:28px}
.test-desc{margin:0 0 10px;color:var(--muted);font-size:15px}
.aliases{display:flex;flex-wrap:wrap;gap:6px}
.alias{font-size:11.5px;color:var(--muted);background:var(--panel);border:1px solid var(--line);padding:3px 9px;border-radius:999px}
.play-area{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:20px;min-height:420px;display:flex}
.soon-box{text-align:center;margin:auto;max-width:560px}
.soon-icon{font-size:54px}
.soon-box h3{margin:8px 0}
.soon-box p{color:var(--muted)}
.soon-box .grid{margin-top:20px;text-align:left}

/* ===== 游戏舞台通用 ===== */
.game-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;width:100%;min-height:380px;-webkit-user-select:none;user-select:none}
.react-info{color:var(--muted);font-size:14px;text-align:center}
.react-box{width:100%;max-width:640px;min-height:240px;border-radius:18px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:8px;cursor:pointer;font-size:26px;text-align:center;transition:background .05s;border:2px solid transparent}
.react-box span{font-size:15px;opacity:.85;font-weight:400}
.react-box.wait{background:#3b2f6b;color:#c7c2ff}
.react-box.go{background:var(--accent2);color:#04210f}
.react-box.nogo{background:#ef4444;color:#fff}
.react-box.early{background:#ef4444;color:#fff}
.react-box.result{background:var(--panel2);color:var(--text);border-color:var(--line)}
.react-box.flanker b{letter-spacing:.25em;font-size:40px}
.react-box.stim{background:var(--panel2);color:var(--text)}

/* 红绿灯 (三色竖排信号灯) */
.traffic{display:flex;flex-direction:column;gap:12px;padding:14px;background:#15171c;border:3px solid #2a2d36;border-radius:18px}
.tl-bulb{width:54px;height:54px;border-radius:50%;background:#23262e;box-shadow:inset 0 0 12px #000}
.tl-bulb.red.on{background:radial-gradient(circle at 40% 35%,#fca5a5,#dc2626);box-shadow:0 0 22px rgba(239,68,68,.75),inset 0 0 8px #7f1d1d}
.tl-bulb.yellow.on{background:radial-gradient(circle at 40% 35%,#fde68a,#eab308);box-shadow:0 0 22px rgba(234,179,8,.75),inset 0 0 8px #854d0e}
.tl-bulb.green.on{background:radial-gradient(circle at 40% 35%,#86efac,#22c55e);box-shadow:0 0 22px rgba(34,197,94,.75),inset 0 0 8px #166534}

/* CPS */
.cps-stage .cps-pad{width:100%;max-width:640px;height:300px;border-radius:18px;background:linear-gradient(135deg,#1e293b,#334155);
  display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;border:2px solid var(--line)}
.cps-pad:active{background:linear-gradient(135deg,#334155,#475569)}
.cps-big{font-size:64px;font-weight:800}
.cps-sub{font-size:18px;color:var(--muted);margin-top:8px}
.cps-bar{width:100%;max-width:640px;height:10px;background:var(--bg2);border-radius:999px;overflow:hidden}
.cps-bar-fill{height:100%;width:100%;background:linear-gradient(90deg,var(--accent2),#16a34a);transition:width .05s linear}

/* Aim */
.aim-stage{gap:10px}
.aim-hud{font-size:15px;font-weight:700;color:var(--muted)}
.aim-field{position:relative;width:100%;height:420px;max-width:760px;background:radial-gradient(circle at 50% 50%,#16203a,#0d1424);
  border-radius:16px;border:1px solid var(--line);overflow:hidden;cursor:crosshair}
.aim-target{position:absolute;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fca5a5,#ef4444 60%,#991b1b);
  box-shadow:0 0 0 4px rgba(239,68,68,.25);cursor:pointer;animation:pop .12s ease-out}
@keyframes pop{from{transform:scale(.3);opacity:.3}to{transform:scale(1);opacity:1}}
.track-ball{position:absolute;width:60px;height:60px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#93c5fd,#3b82f6 60%,#1e40af);transition:background .1s}
.track-ball.on{background:radial-gradient(circle at 35% 30%,#bbf7d0,#22c55e 60%,#15803d);box-shadow:0 0 24px rgba(34,197,94,.6)}

/* F1 */
.f1-lights{display:flex;gap:14px}
.f1-bulb{width:54px;height:54px;border-radius:50%;background:#1c1c22;border:3px solid #333;box-shadow:inset 0 0 12px #000}
.f1-bulb.on{background:radial-gradient(circle at 40% 35%,#fca5a5,#dc2626);border-color:#ef4444;box-shadow:0 0 22px rgba(239,68,68,.7),inset 0 0 8px #7f1d1d}
.f1-bulb.jump{animation:jump .3s}
@keyframes jump{50%{transform:translateY(-8px)}}

/* Safe zone */
.safe-wrap{position:relative;width:100%;max-width:640px;height:70px;background:var(--bg2);border-radius:14px;border:1px solid var(--line);cursor:pointer;overflow:hidden}
.safe-zone{position:absolute;top:0;bottom:0;background:rgba(34,197,94,.25);border-left:2px solid #22c55e;border-right:2px solid #22c55e}
.safe-zone.good{background:rgba(34,197,94,.55)}
.safe-zone.bad{background:rgba(239,68,68,.4);border-color:#ef4444}
.safe-ptr{position:absolute;top:-4px;bottom:-4px;width:5px;background:#fff;box-shadow:0 0 10px #fff;border-radius:3px}

/* Rhythm */
.rhythm-lane{position:relative;width:160px;height:400px;background:var(--bg2);border-radius:14px;border:1px solid var(--line);overflow:hidden;cursor:pointer}
.rhythm-line{position:absolute;left:0;right:0;bottom:60px;height:4px;background:var(--accent2);box-shadow:0 0 12px var(--accent2)}
.rhythm-note{position:absolute;left:50%;transform:translateX(-50%);width:120px;height:26px;border-radius:8px;background:linear-gradient(#818cf8,#6366f1)}
.rhythm-note.perfect{background:linear-gradient(#86efac,#22c55e)}
.rhythm-note.good{background:linear-gradient(#fcd34d,#f59e0b)}

/* Stroop */
.stroop-stage{gap:22px}
.stroop-word{font-size:80px;font-weight:900;cursor:pointer}
.stroop-btns{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.stroop-btn{padding:14px 28px;font-size:20px;font-weight:800;border-radius:14px;cursor:pointer;border:2px solid var(--c);background:transparent;color:var(--c)}
.stroop-btn:hover{background:var(--c);color:#04210f}

/* Odd one out / seq */
.odd-grid{display:grid;gap:6px;width:100%;max-width:440px}
.odd-cell{aspect-ratio:1;border-radius:8px;cursor:pointer;display:grid;place-items:center;font-size:22px;font-weight:800;background:var(--panel2);transition:transform .05s}
.odd-cell:hover{transform:scale(1.05)}
.seq-field{position:relative;width:100%;max-width:680px;height:420px;background:var(--bg2);border-radius:16px;border:1px solid var(--line)}
.seq-cell{position:absolute;width:42px;height:42px;border-radius:10px;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800;cursor:pointer}
.seq-cell.done{background:#1e293b;color:#475569}
.seq-cell.wrong{background:#ef4444}

/* Chimp */
.chimp-grid{display:grid;gap:8px;width:100%;max-width:680px}
.chimp-cell{aspect-ratio:1;border-radius:10px;background:#fff;color:#0b0f1a;display:grid;place-items:center;font-size:24px;font-weight:800;cursor:pointer}
.chimp-cell.empty{background:transparent;cursor:default}
.chimp-cell.hidden{background:var(--accent);color:transparent}
.chimp-cell.done{background:#1e293b}
.chimp-cell.wrong{background:#ef4444}

/* Visual memory */
.vm-grid{display:grid;gap:8px;width:100%;max-width:440px}
.vm-cell{aspect-ratio:1;border-radius:10px;background:var(--panel2);cursor:pointer;transition:.1s}
.vm-cell.flash{background:#fff}
.vm-cell.correct{background:var(--accent2)}
.vm-cell.wrong{background:#ef4444}

/* Number memory */
.num-display{font-size:64px;font-weight:900;letter-spacing:.12em;min-height:80px;display:grid;place-items:center}
.num-input-wrap{display:flex;gap:10px}
.num-input{font-size:28px;padding:10px 16px;border-radius:12px;border:2px solid var(--line);background:var(--bg2);color:var(--text);text-align:center;width:280px;letter-spacing:.1em}
.num-input:focus{outline:none;border-color:var(--accent)}

/* Sequence memory (simon) */
.seq-mem-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:300px}
.seq-pad{aspect-ratio:1;border-radius:14px;background:var(--panel2);cursor:pointer;transition:.08s;border:2px solid var(--line)}
.seq-pad.lit{background:var(--accent2);box-shadow:0 0 22px rgba(34,197,94,.6);transform:scale(.96)}

/* Typing */
.typing-prompt{font-size:20px;background:var(--bg2);padding:16px;border-radius:12px;max-width:640px;font-family:ui-monospace,monospace}
.typing-input{width:100%;max-width:640px;font-size:18px;padding:14px;border-radius:12px;border:2px solid var(--line);background:var(--bg2);color:var(--text);font-family:ui-monospace,monospace}
.typing-input:focus{outline:none;border-color:var(--accent)}

/* ===== 结果 ===== */
.result-box{margin-top:18px}
.result-inner{background:linear-gradient(135deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:20px;padding:30px;text-align:center}
.result-flag{font-size:18px;color:#fbbf24;font-weight:800;margin-bottom:6px;animation:jump .5s}
.result-big{font-size:52px;font-weight:900}
.result-rank{display:inline-block;margin-top:10px;padding:6px 18px;border-radius:999px;font-weight:800;background:color-mix(in srgb,var(--c) 22%,transparent);color:var(--c);border:1px solid var(--c)}
.result-summary{color:var(--muted);margin-top:12px}
.result-stats{margin-top:8px;font-size:14px}
.result-stats b{color:#fbbf24}
.result-actions{display:flex;gap:10px;justify-content:center;margin-top:20px;flex-wrap:wrap}

/* ===== 排行表 ===== */
.lb-table,.admin-table{width:100%;border-collapse:collapse;background:var(--panel);border-radius:14px;overflow:hidden;margin-bottom:18px}
.lb-table th,.lb-table td,.admin-table th,.admin-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:14px}
.lb-table th,.admin-table th{background:var(--panel2);color:var(--muted);font-size:12.5px;text-transform:uppercase;letter-spacing:.05em}
.lb-table tr:hover td,.admin-table tbody tr:hover td{background:var(--panel2)}
.lb-table a:hover{color:var(--accent2)}

/* ===== 管理面板 ===== */
.admin-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}
.admin-search,.admin-select{padding:9px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:14px}
.admin-stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.stat-chip{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 18px;text-align:center}
.stat-chip b{display:block;font-size:22px;color:var(--accent2)}
.stat-chip span{font-size:12px;color:var(--muted)}
.admin-alias{font-size:11px;color:var(--muted);margin-top:3px}
.admin-actions{display:flex;gap:5px;flex-wrap:wrap}
.tag-star{color:#fbbf24;margin-left:6px}
.tag-custom{font-size:10px;background:rgba(99,102,241,.25);color:#c7d2fe;padding:2px 7px;border-radius:6px;margin-left:6px}
.hidden-row{opacity:.45}
.pill{font-size:11px;padding:3px 9px;border-radius:7px;background:var(--bg2);color:var(--muted)}
.pill.ok{background:rgba(34,197,94,.2);color:#86efac}

/* ===== 弹窗 ===== */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;z-index:100;padding:20px}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:26px;width:100%;max-width:460px;box-shadow:var(--shadow);max-height:90vh;overflow:auto}
.modal h2{margin:0 0 18px}
.field{display:block;margin-bottom:14px}
.field-label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:6px;font-weight:600}
.inp{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg2);color:var(--text);font-size:14px;font-family:inherit}
.inp:focus{outline:none;border-color:var(--accent)}
.check{display:flex;align-items:center;gap:8px;margin-bottom:16px;cursor:pointer}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}

/* ===== 能力区间梯队 ===== */
.bench{margin-top:26px}
.bench-head .section-title{margin-bottom:4px}
.bench-note{color:var(--muted);font-size:12.5px;margin:0 0 14px}
.ladder{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.tier-card{position:relative;background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--c);
  border-radius:14px;padding:12px;min-height:96px;transition:.18s}
.tier-card.current{background:color-mix(in srgb,var(--c) 14%,var(--panel));border-color:var(--c);box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 40%,transparent)}
.tier-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;gap:6px}
.tier-name{font-weight:800;font-size:14px;color:var(--c)}
.tier-range{font-size:11px;color:var(--muted)}
.tier-you{font-size:12px;font-weight:700;color:var(--text);background:color-mix(in srgb,var(--c) 28%,transparent);
  border:1px solid var(--c);border-radius:8px;padding:4px 8px;margin-bottom:8px;display:inline-block}
.tier-you b{color:var(--c)}
.tier-pros{display:flex;flex-wrap:wrap;gap:6px}
.tier-empty{color:var(--line);font-size:12px}
.pro-chip{display:flex;align-items:center;gap:5px;background:var(--bg2);border:1px solid var(--line);
  border-radius:999px;padding:2px 9px 2px 2px;cursor:default}
.pro-avatar{border-radius:50%;flex-shrink:0}
.pro-flag{font-size:12px}
.pro-name{font-size:11.5px;font-weight:600;white-space:nowrap}

/* ===== 选手名册页 ===== */
.pro-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.pro-card{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:var(--radius);padding:16px;transition:.18s}
.pro-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.pro-card-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.pro-card-name{font-size:17px;font-weight:800}
.pro-card-meta{font-size:12px;color:var(--muted)}
.pro-card-tags{display:flex;flex-wrap:wrap;gap:6px}
.pro-tag{font-size:11px;font-weight:600;padding:4px 9px;border-radius:8px;background:color-mix(in srgb,var(--c) 16%,transparent);color:var(--c);border:1px solid color-mix(in srgb,var(--c) 40%,transparent)}

/* ===== 页脚 ===== */
.footer{border-top:1px solid var(--line);padding:24px;text-align:center;color:var(--muted);font-size:13px}
.footer p{margin:4px 0}

/* ===== 响应式 ===== */
@media(max-width:820px){
  .hero{flex-direction:column;padding:28px;text-align:center}
  .hero-art{width:100%;max-width:320px}
  .hero-sub{margin-left:auto;margin-right:auto}
  .hero-actions{justify-content:center}
  .search-wrap{display:none}
  .hero-title{font-size:30px}
  .cat-grid{grid-template-columns:1fr}
  .lang-current{display:none}
  .lang-options{right:-4px;width:220px}
}
@media(max-width:560px){
  .topnav a{padding:8px 10px}
  .brand-text{display:none}
  .lang-trigger{padding:8px;gap:6px}
  .lang-code{min-width:28px}
  .lang-options{position:fixed;left:12px;right:12px;top:62px;width:auto;transform:translateY(-6px) scale(.98)}
  .lang-menu.open .lang-options{transform:translateY(0) scale(1)}
  .grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
  .stroop-word{font-size:60px}
  .num-input{width:200px}
}
@media(prefers-reduced-motion:reduce){
  .lang-trigger,.lang-chevron,.lang-options,.lang-option{transition:none}
}
